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 1v4JJz-00Cmv0-Eh for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Oct 2025 13:26:13 +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 1v4JJx-007sLG-EG for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Oct 2025 13:26:10 +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 1v4JJw-007sL7-Hj for pgsql-hackers@lists.postgresql.org; Thu, 02 Oct 2025 13:26:09 +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 1v4JJr-0001oc-1V for pgsql-hackers@lists.postgresql.org; Thu, 02 Oct 2025 13:26:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1759411561; bh=rGXFEEuFHLMAh67J7MVw/ajS5E2gXgq/yGoMBtRkReo=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=s80WJJiteRlWVR1B6rdADqA7Sc5M/qEhG50K4b8JXKsXWrFqrhSiDcwiRKiZ8L0K8 ow9x+1G2ahZmtYiB6YudojF+/qFLp0/Xl1Azw1PWQy1LII31rqXTfiSP5qS9RqZ0og DvuU6Dgii3D9i2hEw5GCy+oun+5d8DkZDdyXel0MgBd7IkHTotFpAkcSKKfn7w04BA gXGykeWgwoXOxNPgHwcPBgfVfVRiHu7xcskhrZZrPOqh750KUL2ApoaHdvk2SJY3sS uQrrSHBgo8VGA61vwiC4VsNSwR4DzgaNx+ytB3Xw9ACpOLlWlbpAh7p/7nUGb+ZqSF CP/vzmET4HkLA== Received: from [10.4.13.229] (unknown [93.174.131.141]) (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 342D860B9A; Thu, 2 Oct 2025 16:26:01 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------gMwOW8dEiJ0sV4Li0sRjBJNz" Message-ID: Date: Thu, 2 Oct 2025 16:26:00 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: jian he Cc: PostgreSQL Hackers References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> <54414932-9E82-47AA-902B-2DED18F07F64@gmail.com> <3280c458-a886-4c58-8e2b-4d220b73161d@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/10/02 12:42: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/10/02 10:11:00 #27873924 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. --------------gMwOW8dEiJ0sV4Li0sRjBJNz Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, Jiah He! Thanks! 1. >I am confused by the above comments "we compare upper bound only". Replaced: upper -> lower. 2. >some of the function partition_rbound_cmp can be replaced by marco >compare_range_bounds, >for example in check_two_partitions_bounds_range we can use >compare_range_bounds instead of partition_rbound_cmp >not sure if it's worth it or not. I think would be better keep partition_rbound_cmp in this function because we should use "false" instead of "second_lower->kind". 3. > >should come after > >I’ve refactored the SPLIT PARTITION docs quite a bit—let me know if >they make sense. >Also tweaked the regression tests a little again. Applied. Unfortunately, I don't know English well enough to spot the inaccuracies in doc. It looks good in translation. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------gMwOW8dEiJ0sV4Li0sRjBJNz Content-Type: text/plain; charset=UTF-8; name="v62-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v62-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2NzdhMzdkMDc4M2U1NDhmZjQxOGFjN2IzZmQ4MzZjODg5MjI5MTliIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NjIgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF 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 cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEyNCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgODkwICsrKysrKysrKysrKy0K IHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAgMjIg Ky0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAx NDYgKysrCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jICAgICAgICAg fCAgMTk2ICsrKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAg ICAgIHwgICAxMCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAg ICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAg ICAgICAgICB8ICAgIDggKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuaCAgICAgICAgIHwgICAgNiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlv bi1tZXJnZS5vdXQgICAgfCAgMjQzICsrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgICA2MiArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgfCAgICA1ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNl L3NxbC9hbHRlcl90YWJsZS5zcWwgICAgICB8ICAgIDMgKwogLi4uL3Rlc3RfZGRsX2RlcGFy c2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAxMDk3ICsrKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAy ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsICAgICAgfCAg NzkxICsrKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgMzY1NyBpbnNlcnRpb25zKCsp LCAyNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9t ZXJnZS5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvZGRsLnNnbWwKaW5kZXggNjViYzA3MGQyZS4uZGRiMTM3NmE2ZSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApA QCAtNDQ1MCw2ICs0NDUwLDI1IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA2bTAy IEFERCBVTklRVUUgKGNpdHlfaWQsIGxvZ2RhdGUpOwogQUxURVIgSU5ERVggbWVhc3VyZW1l bnRfY2l0eV9pZF9sb2dkYXRlX2tleQogICAgIEFUVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1l bnRfeTIwMDZtMDJfY2l0eV9pZF9sb2dkYXRlX2tleTsKIC4uLgorPC9wcm9ncmFtbGlzdGlu Zz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlcmUgaXMgYWxzbyBhbiBv cHRpb24gZm9yIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucyBpbnRvCisgICAg IGEgc2luZ2xlIHBhcnRpdGlvbiB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0ic3Fs LWFsdGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlM8L2NvbW1hbmQ+PC9saW5rPi4KKyAgICAgVGhpcyBmZWF0dXJl IHNpbXBsaWZpZXMgdGhlIG1hbmFnZW1lbnQgb2YgcGFydGl0aW9uZWQgdGFibGVzIGJ5IGFs bG93aW5nCisgICAgIHVzZXJzIHRvIGNvbWJpbmUgcGFydGl0aW9ucyB0aGF0IGFyZSBubyBs b25nZXIgbmVlZGVkIGFzCisgICAgIHNlcGFyYXRlIGVudGl0aWVzLiAgSXQncyBpbXBvcnRh bnQgdG8gbm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIG5vdAorICAgICBzdXBwb3J0ZWQg Zm9yIGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcyBhbgorICAgICA8bGl0 ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBh Y3QgaGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3Rp dmUgbmF0dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbgorICAgICBtZXJnZSB0aHJlZSBtb250 aGx5IHBhcnRpdGlvbnMgaW50byBvbmUgcXVhcnRlciBwYXJ0aXRpb246Cis8cHJvZ3JhbWxp c3Rpbmc+CitBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAorICAgIE1FUkdFIFBBUlRJVElPTlMg KG1lYXN1cmVtZW50X3kyMDA2bTAxLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVt ZW50X3kyMDA2bTAyLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2 bTAzKSBJTlRPIG1lYXN1cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAg IDwvcGFyYT4KICAgIDwvc2VjdDM+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5k ZXggODg2N2RhNmM2OS4uNWFjMWY1YzQyMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUu c2dtbApAQCAtMzcsNiArMzcsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRB Q0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fQogQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBb IENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAg IE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4K IAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWN0aW9u PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMTU5LDE4ICsxMTYx LDExNCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFi bGUtbWVyZ2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0UgUEFSVElU SU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rl cm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1l cmdlcyBzZXZlcmFsIHBhcnRpdGlvbnMgb2YgdGhlIHRhcmdldCB0YWJsZSBpbnRvIGEgbmV3 IHBhcnRpdGlvbi4KKyAgICAgIEhhc2gtcGFydGl0aW9uZWQgdGFyZ2V0IHRhYmxlIGlzIG5v dCBzdXBwb3J0ZWQuCisgICAgICBJZiB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4g cGFydGl0aW9uIGlzIG5vdCBpbiB0aGUKKyAgICAgIGxpc3Qgb2YgcGFydGl0aW9ucyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJs ZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXToKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEZvciByYW5nZS1wYXJ0 aXRpb25lZCB0YWJsZXMsIHRoZSByYW5nZXMgb2YgdGhlIHBhcnRpdGlvbnMKKyAgICAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxh Y2VhYmxlPiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIG11c3QgYmUgYWRq YWNlbnQgaW4gb3JkZXIgdG8gYmUgbWVyZ2VkLiBPdGhlcndpc2UsIGFuIGVycm9yIHdpbGwg YmUKKyAgICAgICAgIHJhaXNlZC4gVGhlIHJlc3VsdGluZyBjb21iaW5lZCByYW5nZSB3aWxs IGJlIHRoZSBuZXcgcGFydGl0aW9uIGJvdW5kCisgICAgICAgICBmb3IgdGhlIHBhcnRpdGlv biA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxh Y2VhYmxlPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEZvciBsaXN0LXBhcnRpdGlv bmVkIHRhYmxlcywgdGhlIHBhcnRpdGlvbiBib3VuZHMgb2YKKyAgICAgICAgIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwK KyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIGFyZSBjb21iaW5lZCB0byBmb3Jt IHRoZSBuZXcgcGFydGl0aW9uIGJvdW5kIGZvcgorICAgICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAg IDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+Cisg ICAgICBJZiB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIGlzIGlu IHRoZSBsaXN0IG9mIHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl06 CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBUaGUgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICB3aWxsIGJlIHRo ZSBuZXcgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIG9mIHRoZSB0YXJn ZXQgdGFibGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgcGFydGl0aW9uIGJv dW5kIHNwZWNpZmljYXRpb25zIGZvciBhbGwgcGFydGl0aW9ucy0KKyAgICAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxl PiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIGNhbiBiZSBhcmJpdHJhcnku CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXpl ZGxpc3Q+CisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgY2FuIGhhdmUg dGhlIHNhbWUgbmFtZSBhcyBvbmUgb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLiBPbmx5IHNp bXBsZSwKKyAgICAgIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb25zIGNhbiBiZSBtZXJnZWQu CisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJZiBtZXJnZWQgcGFydGl0aW9u cyBoYXZlIGRpZmZlcmVudCBvd25lcnMsIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkLgor ICAgICAgVGhlIG93bmVyIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucyB3aWxsIGJlIHRoZSBv d25lciBvZiB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEl0IGlzIHRoZSB1c2VyJ3MgcmVz cG9uc2liaWxpdHkgdG8gc2V0dXAgPGFjcm9ueW0+QUNMPC9hY3JvbnltPiBvbiB0aGUKKyAg ICAgIG5ldyBwYXJ0aXRpb24uCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgaW5kZXhlcyBhbmQgaWRlbnRpdHkgYXJlIGNyZWF0ZWQgbGF0ZXIsIGFmdGVyIG1vdmlu ZyB0aGUgZGF0YQorICAgICAgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEV4dGVu ZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBmcm9tIHRoZSBwYXJlbnQgdGFibGUsIGZv ciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29tbWFuZD5DUkVBVEUgVEFCTEUgUEFSVElU SU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIFRoZSBuZXcgcGFydGl0aW9uIHdpbGwgaW5oZXJp dCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0ZW5jZQorICAgICAgdHlw ZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0YWJsZS4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9ucyBhcmUgbWVyZ2VkLCBhbnkgaW5k aXZpZHVhbCBvYmplY3RzIGJlbG9uZ2luZyB0byB0aG9zZQorICAgICAgcGFydGl0aW9ucywg c3VjaCBhcyBjb25zdHJhaW50cyBvciBzdGF0aXN0aWNzLCB3aWxsIGJlIGRyb3BwZWQuIFRo aXMgb2NjdXJzCisgICAgICBiZWNhdXNlIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBB UlRJVElPTlM8L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZiBh cyB0aGUKKyAgICAgIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3RzLgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBz b21lIG9iamVjdHMgZGVwZW5kZW50IG9uIHRoZW0sIHRoZSBjb21tYW5kIGNhbgorICAgICAg bm90IGJlIGRvbmUgKDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlzIG5vdCB1c2VkLCBh bmQgYW4gZXJyb3Igd2lsbAorICAgICAgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+Cisg ICAgIDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgTWVyZ2luZyBwYXJ0aXRpb25zIGFj cXVpcmVzIGFuIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24K KyAgICAgICB0aGUgcGFyZW50IHRhYmxlLCBpbiBhZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+ QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4KKyAgICAgICBsb2NrcyBvbiB0aGUgdGFibGVz IGJlaW5nIG1lcmdlZCBhbmQgb24gdGhlIGRlZmF1bHQgcGFydGl0aW9uIChpZiBhbnkpLgor ICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgIDxub3RlPgorICAgICAgPHBhcmE+ CisgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUzwvY29tbWFu ZD4gY3JlYXRlcyBhIG5ldyBwYXJ0aXRpb24gYW5kCisgICAgICAgbW92ZXMgZGF0YSBmcm9t IGFsbCBtZXJnaW5nIHBhcnRpdGlvbnMgaW50byBpdCwgd2hpY2ggY2FuIHRha2UgYSBsb25n IHRpbWUuCisgICAgICAgU28gaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgY29t bWFuZCB0byBtZXJnZSB2ZXJ5IGJpZyBwYXJ0aXRpb25zCisgICAgICAgd2l0aCBzbWFsbCBv bmVzLgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgIDwvdmFyaWFibGVsaXN0PgogICA8L3BhcmE+CiAKICAg PHBhcmE+CiAgICBBbGwgdGhlIGZvcm1zIG9mIDxjb21tYW5kPkFMVEVSIFRBQkxFPC9jb21t YW5kPiB0aGF0IGFjdCBvbiBhIHNpbmdsZSB0YWJsZSwKICAgIGV4Y2VwdCA8bGl0ZXJhbD5S RU5BTUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPiwKLSAgIDxs aXRlcmFsPkFUVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LCBhbmQKLSAgIDxsaXRlcmFsPkRF VEFDSCBQQVJUSVRJT048L2xpdGVyYWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0 ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJ VElPTjwvbGl0ZXJhbD4sCisgICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0 ZXJhbD4sIGNhbiBiZSBjb21iaW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0 ZXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAg aXMgcG9zc2libGUgdG8gYWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5 cGUgb2Ygc2V2ZXJhbAogICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBp cyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdpdGggbGFyZ2UKLSAgIHRhYmxlcywgc2luY2Ugb25s eSBvbmUgcGFzcyBvdmVyIHRoZSB0YWJsZSBuZWVkIGJlIG1hZGUuCisgICB0YWJsZXMsIHNp bmNlIG9ubHkgb25lIHBhc3Mgb3ZlciB0aGUgdGFibGUgbmVlZHMgdG8gYmUgbWFkZS4KICAg PC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtMTQwOSw3ICsxNTA3LDE4IEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3Jl cGxhY2VhYmxlPiwgUkVNCiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0 aXRlbT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRv IGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJs ZS4KKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBw YXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKKyAgICAgICAgb3IgdGhl IG5hbWUgb2YgdGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLXBhcm1zLXBhcnRpdGlvbi1uYW1lMSI+CisgICAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUx PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUg dGFibGVzIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uLgogICAgICAgIDwv cGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTg0 Miw2ICsxOTUxLDEzIEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50CiAgICAgREVUQUNIIFBB UlRJVElPTiBtZWFzdXJlbWVudF95MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJh PgogCisgIDxwYXJhPgorICAgVG8gbWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25l IHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxl c19lYXN0LCBzYWxlc19jZW50cmFsKQorICAgIElOVE8gc2FsZXNfYWxsOworPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CisKICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA3ZGRlZDYzNGViLi42YmVhNzViYjY4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtMzE5LDYgKzMxOSw1NiBAQCBwZXJmb3Jt RGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCXRhYmxlX2Nsb3NlKGRl cFJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKKy8qCisgKiBwZXJmb3JtRGVsZXRpb25D aGVjazogQ2hlY2sgd2hldGhlciBhIHNwZWNpZmljIG9iamVjdCBjYW4gYmUgc2FmZWx5IGRl bGV0ZWQuCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlbGV0aW9u OyBpbnN0ZWFkLCBpdCByYWlzZXMgYW4gZXJyb3IKKyAqIGlmIHRoZSBvYmplY3QgY2Fubm90 IGJlIGRlbGV0ZWQgZHVlIHRvIGV4aXN0aW5nIGRlcGVuZGVuY2llcy4KKyAqCisgKiBJdCBj YW4gYmUgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gZGVsZXRlIHNvbWUgb2JqZWN0cyBsYXRl ci4gIFNlZSBjb21tZW50cworICogaW4gcGVyZm9ybURlbGV0aW9uIHRvby4KKyAqIFRoZSBi ZWhhdmlvciBtdXN0IGJlIHNwZWNpZmllZCBhcyBEUk9QX1JFU1RSSUNULgorICovCit2b2lk CitwZXJmb3JtRGVsZXRpb25DaGVjayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCisJ CQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncykKK3sKKwlSZWxhdGlvbglk ZXBSZWw7CisJT2JqZWN0QWRkcmVzc2VzICp0YXJnZXRPYmplY3RzOworCisJQXNzZXJ0KGJl aGF2aW9yID09IERST1BfUkVTVFJJQ1QpOworCisJZGVwUmVsID0gdGFibGVfb3BlbihEZXBl bmRSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCUFjcXVpcmVEZWxldGlvbkxv Y2sob2JqZWN0LCAwKTsKKworCS8qCisJICogQ29uc3RydWN0IGEgbGlzdCBvZiBvYmplY3Rz IHdlIHdhbnQgdG8gZGVsZXRlIGxhdGVyIChpZSwgdGhlIGdpdmVuCisJICogb2JqZWN0IHBs dXMgZXZlcnl0aGluZyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGRlcGVuZGVudCBvbiBpdCku CisJICovCisJdGFyZ2V0T2JqZWN0cyA9IG5ld19vYmplY3RfYWRkcmVzc2VzKCk7CisKKwlm aW5kRGVwZW5kZW50T2JqZWN0cyhvYmplY3QsCisJCQkJCQkgREVQRkxBR19PUklHSU5BTCwK KwkJCQkJCSBmbGFncywKKwkJCQkJCSBOVUxMLAkvKiBlbXB0eSBzdGFjayAqLworCQkJCQkJ IHRhcmdldE9iamVjdHMsCisJCQkJCQkgTlVMTCwJLyogbm8gcGVuZGluZ09iamVjdHMgKi8K KwkJCQkJCSAmZGVwUmVsKTsKKworCS8qCisJICogQ2hlY2sgaWYgZGVsZXRpb24gaXMgYWxs b3dlZC4KKwkgKi8KKwlyZXBvcnREZXBlbmRlbnRPYmplY3RzKHRhcmdldE9iamVjdHMsCisJ CQkJCQkgICBiZWhhdmlvciwKKwkJCQkJCSAgIGZsYWdzLAorCQkJCQkJICAgb2JqZWN0KTsK KworCS8qIEFuZCBjbGVhbiB1cCAqLworCWZyZWVfb2JqZWN0X2FkZHJlc3Nlcyh0YXJnZXRP YmplY3RzKTsKKworCXRhYmxlX2Nsb3NlKGRlcFJlbCwgUm93RXhjbHVzaXZlTG9jayk7Cit9 CisKIC8qCiAgKiBwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnM6IFNpbWlsYXIgdG8gcGVyZm9y bURlbGV0aW9uLCBidXQgYWN0IG9uIG11bHRpcGxlCiAgKiBvYmplY3RzIGF0IG9uY2UuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IDYwMDJmZDAwMDIuLmVmODg4 MmNiY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC04NzUsNyAr ODc1LDcgQEAgUmVsYXRpb25HZXROb3ROdWxsQ29uc3RyYWludHMoT2lkIHJlbGlkLCBib29s IGNvb2tlZCwgYm9vbCBpbmNsdWRlX25vaW5oKQogCQkJCQkJCQkJCQkJCQkJIGZhbHNlKSkp OwogCQkJY29uc3RyLT5pc19lbmZvcmNlZCA9IHRydWU7CiAJCQljb25zdHItPnNraXBfdmFs aWRhdGlvbiA9ICFjb25Gb3JtLT5jb252YWxpZGF0ZWQ7Ci0JCQljb25zdHItPmluaXRpYWxs eV92YWxpZCA9IHRydWU7CisJCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IGNvbkZvcm0t PmNvbnZhbGlkYXRlZDsKIAkJCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9IGNvbkZvcm0tPmNv bm5vaW5oZXJpdDsKIAkJCW5vdG51bGxzID0gbGFwcGVuZChub3RudWxscywgY29uc3RyKTsK IAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmYzg5MzUyYjY2Li43MDUz Mzg3YjJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNzQxLDYgKzc0MSw4 IEBAIHN0YXRpYyB2b2lkIEFURGV0YWNoQ2hlY2tOb0ZvcmVpZ25LZXlSZWZzKFJlbGF0aW9u IHBhcnRpdGlvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVDb21wcmVzc2lvbihPaWQg YXR0dHlwaWQsIGNvbnN0IGNoYXIgKmNvbXByZXNzaW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0 dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7 CiAKK3N0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRp b25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICoJCURlZmluZVJlbGF0aW9uCkBAIC00ODM3LDYgKzQ4MzksMTAgQEAg QWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9 IFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9N ZXJnZVBhcnRpdGlvbnM6CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9j azsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoJCQkvKiBvb3BzICovCiAJCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50 KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTI3Miw2ICs1Mjc4LDExIEBAIEFUUHJlcENtZChMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIE5v IGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX01J U0M7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBs ZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFSVElUSU9ORURfVEFCTEUp OworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9 IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJ CQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJ CQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTU2NjgsNiArNTY3OSwxNCBAQCBBVEV4ZWND bWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Rl dGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJYWRkcmVzcyA9IEFURXhlY0RldGFjaFBhcnRp dGlvbkZpbmFsaXplKHJlbCwgKChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYpLT5uYW1lKTsK IAkJCWJyZWFrOworCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCWNtZCA9IEFUUGFy c2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUs CisJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVM TCk7CisJCQlBc3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRSk7CisJCQlBVEV4ZWNNZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJl bCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJCQkJICBjb250ZXh0KTsKKwkJ CWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0 eXBlKTsKQEAgLTY3MDgsNiArNjcyNyw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5n KEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04i OwogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJcmV0dXJuICJERVRB Q0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25z OgorCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0 eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNl IEFUX1NldElkZW50aXR5OgpAQCAtMjAxOTcsNiArMjAyMTgsMzcgQEAgUXVldWVQYXJ0aXRp b25Db25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVs LAogCX0KIH0KIAorLyoKKyAqIGF0dGFjaFBhcnRpdGlvblRhYmxlOiBhdHRhY2ggYSBuZXcg cGFydGl0aW9uIHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZQorICoKKyAqIHdxdWV1ZTogdGhl IEFMVEVSIFRBQkxFIHdvcmsgcXVldWU7IGNhbiBiZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcg YXMgcGFydAorICogICBvZiBhbiBBTFRFUiBUQUJMRSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFy dGl0aW9uZWQgcmVsYXRpb247CisgKiBhdHRhY2hyZWw6IHJlbGF0aW9uIG9mIGF0dGFjaGVk IHBhcnRpdGlvbjsKKyAqIGJvdW5kOiBib3VuZHMgb2YgYXR0YWNoZWQgcmVsYXRpb24uCisg Ki8KK3N0YXRpYyB2b2lkCithdHRhY2hQYXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGF0dGFjaHJlbCwgUGFydGl0aW9uQm91bmRTcGVjICpi b3VuZCkKK3sKKwkvKiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBj aGVja3MgcGVyZm9ybWVkIHRoZXJlICovCisJQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVs LCByZWwsIHRydWUpOworCisJLyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlT dG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBib3VuZCk7CisKKwkvKiBFbnN1 cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0 aW9uLiAqLworCUF0dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0 dGFjaHJlbCk7CisKKwkvKiBhbmQgdHJpZ2dlcnMgKi8KKwlDbG9uZVJvd1RyaWdnZXJzVG9Q YXJ0aXRpb24ocmVsLCBhdHRhY2hyZWwpOworCisJLyoKKwkgKiBDbG9uZSBmb3JlaWduIGtl eSBjb25zdHJhaW50cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAor CSAqIGZvciBwaGFzZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgorCSAqLworCUNsb25l Rm9yZWlnbktleUNvbnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworfQorCiAv KgogICogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRpdGlvbi1u YW1lPiBGT1IgVkFMVUVTCiAgKgpAQCAtMjAzOTgsMjMgKzIwNDUwLDcgQEAgQVRFeGVjQXR0 YWNoUGFydGl0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21k ICpjbWQsCiAJY2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShhdHRhY2hyZWwpLCByZWwsCiAJCQkJCQkJICBjbWQtPmJvdW5kLCBwc3RhdGUpOwog Ci0JLyogT0sgdG8gY3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBl cmZvcm1lZCB0aGVyZSAqLwotCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0 cnVlKTsKLQotCS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCi0JU3RvcmVQYXJ0 aXRpb25Cb3VuZChhdHRhY2hyZWwsIHJlbCwgY21kLT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUg dGhlcmUgZXhpc3RzIGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9u LiAqLwotCUF0dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFj aHJlbCk7Ci0KLQkvKiBhbmQgdHJpZ2dlcnMgKi8KLQlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0 aXRpb24ocmVsLCBhdHRhY2hyZWwpOwotCi0JLyoKLQkgKiBDbG9uZSBmb3JlaWduIGtleSBj b25zdHJhaW50cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAotCSAq IGZvciBwaGFzZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgotCSAqLwotCUNsb25lRm9y ZWlnbktleUNvbnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCWF0dGFjaFBh cnRpdGlvblRhYmxlKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJ LyoKIAkgKiBHZW5lcmF0ZSBwYXJ0aXRpb24gY29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRp b24gYm91bmQgc3BlY2lmaWNhdGlvbi4KQEAgLTIyMDYyLDMgKzIyMDk4LDgyMyBAQCBHZXRB dHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUp CiAKIAlyZXR1cm4gY3N0b3JhZ2U7CiB9CisKKy8qCisgKiBidWlsZEV4cHJlc3Npb25FeGVj dXRpb25TdGF0ZXM6IGJ1aWxkIHRoZSBuZWVkZWQgZXhwcmVzc2lvbiBleGVjdXRpb24gc3Rh dGVzCisgKiBmb3IgbmV3IHBhcnRpdGlvbiAobmV3UGFydFJlbCkgY2hlY2tzIGFuZCBpbml0 aWFsaXplIGV4cHJlc3Npb25zIGZvcgorICogZ2VuZXJhdGVkIGNvbHVtbnMuIEFsbCBleHBy ZXNzaW9ucyBzaG91bGQgYmUgY3JlYXRlZCBpbiAidGFiIgorICogKEFsdGVyZWRUYWJsZUlu Zm8gc3RydWN0dXJlKS4KKyAqLworc3RhdGljIHZvaWQKK2J1aWxkRXhwcmVzc2lvbkV4ZWN1 dGlvblN0YXRlcyhBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIG5ld1BhcnRSZWws IEVTdGF0ZSAqZXN0YXRlKQoreworCS8qCisJICogQnVpbGQgdGhlIG5lZWRlZCBleHByZXNz aW9uIGV4ZWN1dGlvbiBzdGF0ZXMuIEhlcmUsIHdlIGV4cGVjdCBvbmx5IE5PVAorCSAqIE5V TEwgYW5kIENIRUNLIGNvbnN0cmFpbnQuCisJICovCisJZm9yZWFjaF9wdHIoTmV3Q29uc3Ry YWludCwgY29uLCB0YWItPmNvbnN0cmFpbnRzKQorCXsKKwkJc3dpdGNoIChjb24tPmNvbnR5 cGUpCisJCXsKKwkJCWNhc2UgQ09OU1RSX0NIRUNLOgorCisJCQkJLyoKKwkJCQkgKiBXZSBh bHJlYWR5IGV4cGFuZGVkIHZpcnR1YWwgZXhwcmVzc2lvbiBpbgorCQkJCSAqIGNyZWF0ZVRh YmxlQ29uc3RyYWludHMuCisJCQkJICovCisJCQkJY29uLT5xdWFsc3RhdGUgPSBFeGVjUHJl cGFyZUV4cHIoKEV4cHIgKikgY29uLT5xdWFsLCBlc3RhdGUpOworCQkJCWJyZWFrOworCQkJ Y2FzZSBDT05TVFJfTk9UTlVMTDoKKwkJCQkvKiBOb3RoaW5nIHRvIGRvIGhlcmUuICovCisJ CQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg Y29uc3RyYWludCB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBjb24tPmNvbnR5cGUpOworCQl9 CisJfQorCisJLyogRXhwcmVzc2lvbiBhbHJlYWR5IHBsYW5uZWQgaW4gY3JlYXRlVGFibGVD b25zdHJhaW50cyAqLworCWZvcmVhY2hfcHRyKE5ld0NvbHVtblZhbHVlLCBleCwgdGFiLT5u ZXd2YWxzKQorCQlleC0+ZXhwcnN0YXRlID0gRXhlY0luaXRFeHByKChFeHByICopIGV4LT5l eHByLCBOVUxMKTsKK30KKworLyoKKyAqIGV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNB bmRDaGVja0NvbnN0cmFpbnRzOiBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkCisgKiBleHByZXNz aW9ucyBmb3IgInRhYiIgKEFsdGVyZWRUYWJsZUluZm8gc3RydWN0dXJlKSB3aG9zZSBpbnB1 dHMgY29tZSBmcm9tCisgKiB0aGUgbmV3IHR1cGxlIChpbnNlcnRzbG90KSBvZiBuZXcgcGFy dGl0aW9uIChuZXdQYXJ0UmVsKS4KKyAqLworc3RhdGljIHZvaWQKK2V2YWx1YXRlR2VuZXJh dGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzKEFsdGVyZWRUYWJsZUluZm8gKnRh YiwKKwkJCQkJCQkJCQkJCVJlbGF0aW9uIG5ld1BhcnRSZWwsCisJCQkJCQkJCQkJCQlUdXBs ZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdCwKKwkJCQkJCQkJCQkJCUV4cHJDb250ZXh0ICplY29u dGV4dCkKK3sKKwllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBpbnNlcnRzbG90OworCisJ Zm9yZWFjaF9wdHIoTmV3Q29sdW1uVmFsdWUsIGV4LCB0YWItPm5ld3ZhbHMpCisJeworCQlp ZiAoIWV4LT5pc19nZW5lcmF0ZWQpCisJCQljb250aW51ZTsKKworCQlpbnNlcnRzbG90LT50 dHNfdmFsdWVzW2V4LT5hdHRudW0gLSAxXQorCQkJPSBFeGVjRXZhbEV4cHIoZXgtPmV4cHJz dGF0ZSwKKwkJCQkJCSAgIGVjb250ZXh0LAorCQkJCQkJICAgJmluc2VydHNsb3QtPnR0c19p c251bGxbZXgtPmF0dG51bSAtIDFdKTsKKwl9CisKKwlmb3JlYWNoX3B0cihOZXdDb25zdHJh aW50LCBjb24sIHRhYi0+Y29uc3RyYWludHMpCisJeworCQlzd2l0Y2ggKGNvbi0+Y29udHlw ZSkKKwkJeworCQkJY2FzZSBDT05TVFJfQ0hFQ0s6CisJCQkJaWYgKCFFeGVjQ2hlY2soY29u LT5xdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQll cnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCQllcnJtc2coImNoZWNr IGNvbnN0cmFpbnQgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBpcyB2aW9sYXRlZCBieSBz b21lIHJvdyIsCisJCQkJCQkJCSAgIGNvbi0+bmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUobmV3UGFydFJlbCkpLAorCQkJCQkJCWVycnRhYmxlY29uc3RyYWludChuZXdQYXJ0UmVs LCBjb24tPm5hbWUpKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSX05PVE5VTEw6CisJ CQljYXNlIENPTlNUUl9GT1JFSUdOOgorCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLwor CQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IGNvbnN0cmFpbnQgdHlwZTogJWQiLAorCQkJCQkgKGludCkgY29uLT5jb250eXBlKTsKKwkJ fQorCX0KK30KKworLyoKKyAqIGdldEF0dHJpYnV0ZXNMaXN0OiBidWlsZCBhIGxpc3Qgb2Yg Y29sdW1ucyAoQ29sdW1uRGVmKSBiYXNlZCBvbiBwYXJlbnRfcmVsCisgKi8KK3N0YXRpYyBM aXN0ICoKK2dldEF0dHJpYnV0ZXNMaXN0KFJlbGF0aW9uIHBhcmVudF9yZWwpCit7CisJQXR0 ck51bWJlcglwYXJlbnRfYXR0bm87CisJVHVwbGVEZXNjCW1vZGVsRGVzYzsKKwlMaXN0CSAg ICpjb2xMaXN0ID0gTklMOworCisJbW9kZWxEZXNjID0gUmVsYXRpb25HZXREZXNjcihwYXJl bnRfcmVsKTsKKworCWZvciAocGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IG1v ZGVsRGVzYy0+bmF0dHM7CisJCSBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0 cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIobW9kZWxEZXNjLAorCQkJCQkJCQkJ CQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlDb2x1bW5EZWYgICpkZWY7CisKKwkJLyogSWdu b3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0cmlidXRl LT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlkZWYgPSBtYWtlQ29sdW1uRGVm KE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwgYXR0cmlidXRlLT5hdHR0eXBpZCwKKwkJ CQkJCQlhdHRyaWJ1dGUtPmF0dHR5cG1vZCwgYXR0cmlidXRlLT5hdHRjb2xsYXRpb24pOwor CisJCWRlZi0+aXNfbm90X251bGwgPSBhdHRyaWJ1dGUtPmF0dG5vdG51bGw7CisKKwkJLyog Q29weSBpZGVudGl0eS4gKi8KKwkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0aWRl bnRpdHk7CisKKwkJLyogQ29weSBhdHRnZW5lcmF0ZWQuICovCisJCWRlZi0+Z2VuZXJhdGVk ID0gYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7CisKKwkJZGVmLT5zdG9yYWdlID0gYXR0cmli dXRlLT5hdHRzdG9yYWdlOworCisJCS8qIExpa2V3aXNlLCBjb3B5IGNvbXByZXNzaW9uLiAq LworCQlpZiAoQ29tcHJlc3Npb25NZXRob2RJc1ZhbGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJl c3Npb24pKQorCQkJZGVmLT5jb21wcmVzc2lvbiA9CisJCQkJcHN0cmR1cChHZXRDb21wcmVz c2lvbk1ldGhvZE5hbWUoYXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpOworCQllbHNlCisJ CQlkZWYtPmNvbXByZXNzaW9uID0gTlVMTDsKKworCQkvKiBBZGQgdG8gY29sdW1uIGxpc3Qu ICovCisJCWNvbExpc3QgPSBsYXBwZW5kKGNvbExpc3QsIGRlZik7CisJfQorCisJcmV0dXJu IGNvbExpc3Q7Cit9CisKKy8qCisgKiBjcmVhdGVUYWJsZUNvbnN0cmFpbnRzOgorICogY3Jl YXRlIGNoZWNrIGNvbnN0cmFpbnRzLCBkZWZhdWx0IHZhbHVlcyBhbmQgZ2VuZXJhdGVkIHZh bHVlcyBmb3IgbmV3UmVsCisgKiBiYXNlZCBvbiBwYXJlbnRfcmVsLiAgdGFiIGlzIHBlbmRp bmctd29yayBxdWV1ZSBmb3IgbmV3UmVsLCB3ZSBtYXkgbmVlZCBpdCBpbgorICogTWVyZ2VQ YXJ0aXRpb25zTW92ZVJvd3MuCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVUYWJsZUNvbnN0 cmFpbnRzKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJICAg UmVsYXRpb24gcGFyZW50X3JlbCwgUmVsYXRpb24gbmV3UmVsKQoreworCVR1cGxlRGVzYwl0 dXBsZURlc2M7CisJVHVwbGVDb25zdHIgKmNvbnN0cjsKKwlBdHRyTWFwICAgICphdHRtYXA7 CisJQXR0ck51bWJlcglwYXJlbnRfYXR0bm87CisJaW50CQkJY2NudW07CisJTGlzdAkgICAq Y29uc3RyYWludHMgPSBOSUw7CisJTGlzdAkgICAqY29va2VkQ29uc3RyYWludHMgPSBOSUw7 CisKKwl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2NyKHBhcmVudF9yZWwpOworCWNvbnN0 ciA9IHR1cGxlRGVzYy0+Y29uc3RyOworCisJaWYgKCFjb25zdHIpCisJCXJldHVybjsKKwor CS8qCisJICogQ29uc3RydWN0IGEgbWFwIGZyb20gdGhlIHBhcmVudCByZWxhdGlvbidzIGF0 dG5vcyB0byB0aGUgY2hpbGQgcmVsJ3MuCisJICogVGhpcyByZS1jaGVja3MgdHlwZSBtYXRj aCBldGMsIGFsdGhvdWdoIGl0IHNob3VsZG4ndCBiZSBwb3NzaWJsZSB0bworCSAqIGhhdmUg YSBmYWlsdXJlIHNpbmNlIGJvdGggdGFibGVzIGFyZSBsb2NrZWQuCisJICovCisJYXR0bWFw ID0gYnVpbGRfYXR0cm1hcF9ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobmV3UmVsKSwKKwkJ CQkJCQkJICAgdHVwbGVEZXNjLAorCQkJCQkJCQkgICBmYWxzZSk7CisKKwkvKiBDeWNsZSBm b3IgZGVmYXVsdCB2YWx1ZXMuICovCisJZm9yIChwYXJlbnRfYXR0bm8gPSAxOyBwYXJlbnRf YXR0bm8gPD0gdHVwbGVEZXNjLT5uYXR0czsgcGFyZW50X2F0dG5vKyspCisJeworCQlGb3Jt X3BnX2F0dHJpYnV0ZSBhdHRyaWJ1dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywKKwkJ CQkJCQkJCQkJCQlwYXJlbnRfYXR0bm8gLSAxKTsKKworCQkvKiBJZ25vcmUgZHJvcHBlZCBj b2x1bW5zIGluIHRoZSBwYXJlbnQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0dGlzZHJvcHBl ZCkKKwkJCWNvbnRpbnVlOworCisJCS8qIENvcHkgZGVmYXVsdCwgaWYgcHJlc2VudCBhbmQg aXQgc2hvdWxkIGJlIGNvcGllZC4gKi8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0aGFzZGVmKQor CQl7CisJCQlOb2RlCSAgICp0aGlzX2RlZmF1bHQgPSBOVUxMOworCQkJYm9vbAkJZm91bmRf d2hvbGVfcm93OworCQkJQXR0ck51bWJlcgludW07CisJCQlOb2RlCSAgICpkZWY7CisJCQlO ZXdDb2x1bW5WYWx1ZSAqbmV3dmFsOworCisJCQlpZiAoYXR0cmlidXRlLT5hdHRnZW5lcmF0 ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJCXRoaXNfZGVmYXVsdCA9 IGJ1aWxkX2dlbmVyYXRpb25fZXhwcmVzc2lvbihwYXJlbnRfcmVsLCBhdHRyaWJ1dGUtPmF0 dG51bSk7CisJCQllbHNlCisJCQl7CisJCQkJdGhpc19kZWZhdWx0ID0gVHVwbGVEZXNjR2V0 RGVmYXVsdCh0dXBsZURlc2MsIGF0dHJpYnV0ZS0+YXR0bnVtKTsKKwkJCQlpZiAodGhpc19k ZWZhdWx0ID09IE5VTEwpCisJCQkJCWVsb2coRVJST1IsICJkZWZhdWx0IGV4cHJlc3Npb24g bm90IGZvdW5kIGZvciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJ CSBhdHRyaWJ1dGUtPmF0dG51bSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50X3Jl bCkpOworCQkJfQorCisJCQludW0gPSBhdHRtYXAtPmF0dG51bXNbcGFyZW50X2F0dG5vIC0g MV07CisJCQlkZWYgPSBtYXBfdmFyaWFibGVfYXR0bm9zKHRoaXNfZGVmYXVsdCwgMSwgMCwg YXR0bWFwLCBJbnZhbGlkT2lkLCAmZm91bmRfd2hvbGVfcm93KTsKKworCQkJaWYgKGZvdW5k X3dob2xlX3JvdyAmJiBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCAhPSAnXDAnKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJCWVycm1zZygiY2Fubm90IGNvbnZlcnQgd2hvbGUtcm93IHRhYmxlIHJl ZmVyZW5jZSIpLAorCQkJCQkJZXJyZGV0YWlsKCJHZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9y IGNvbHVtbiBcIiVzXCIgY29udGFpbnMgYSB3aG9sZS1yb3cgcmVmZXJlbmNlIHRvIHRhYmxl IFwiJXNcIi4iLAorCQkJCQkJCQkgIE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwKKwkJ CQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSkpOworCisJCQkv KiBBZGQgYSBwcmUtY29va2VkIGRlZmF1bHQgZXhwcmVzc2lvbi4gKi8KKwkJCVN0b3JlQXR0 ckRlZmF1bHQobmV3UmVsLCBudW0sIGRlZiwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBTdG9y ZWQgZ2VuZXJhdGVkIGNvbHVtbiBleHByZXNzaW9ucyBpbiBwYXJlbnRfcmVsIG1pZ2h0CisJ CQkgKiByZWZlcmVuY2UgdGFibGVvaWQuICBuZXdSZWwsIHBhcmVudF9yZWwgdGFibGVvaWQg Y2xlYXIgaXMgbm90CisJCQkgKiB0aGUgc2FtZS4gSWYgc28sIHRoZXNlIHN0b3JlZCBnZW5l cmF0ZWQgY29sdW1ucyByZXF1aXJlCisJCQkgKiByZWNvbXB1dGF0aW9uIGZvciBuZXdSZWwg d2l0aGluIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLgorCQkJICovCisJCQlpZiAoYXR0cmli dXRlLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpCisJCQl7 CisJCQkJbmV3dmFsID0gKE5ld0NvbHVtblZhbHVlICopIHBhbGxvYzAoc2l6ZW9mKE5ld0Nv bHVtblZhbHVlKSk7CisJCQkJbmV3dmFsLT5hdHRudW0gPSBudW07CisJCQkJbmV3dmFsLT5l eHByID0gZXhwcmVzc2lvbl9wbGFubmVyKChFeHByICopIGRlZik7CisJCQkJbmV3dmFsLT5p c19nZW5lcmF0ZWQgPSAoYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQgIT0gJ1wwJyk7CisJCQkJ dGFiLT5uZXd2YWxzID0gbGFwcGVuZCh0YWItPm5ld3ZhbHMsIG5ld3ZhbCk7CisJCQl9CisJ CX0KKwl9CisKKwkvKiBDeWNsZSBmb3IgQ0hFQ0sgY29uc3RyYWludHMuICovCisJZm9yIChj Y251bSA9IDA7IGNjbnVtIDwgY29uc3RyLT5udW1fY2hlY2s7IGNjbnVtKyspCisJeworCQlj aGFyCSAgICpjY25hbWUgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY25hbWU7CisJCWNoYXIJ ICAgKmNjYmluID0gY29uc3RyLT5jaGVja1tjY251bV0uY2NiaW47CisJCWJvb2wJCWNjZW5m b3JjZWQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY2VuZm9yY2VkOworCQlib29sCQljY25v aW5oZXJpdCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjbm9pbmhlcml0OworCQlib29sCQlj Y3ZhbGlkID0gY29uc3RyLT5jaGVja1tjY251bV0uY2N2YWxpZDsKKwkJTm9kZQkgICAqY2Ni aW5fbm9kZTsKKwkJYm9vbAkJZm91bmRfd2hvbGVfcm93OworCQlDb25zdHJhaW50ICpjb25z dHI7CisKKwkJLyoKKwkJICogUGFydGl0aW9uZWQgdGFibGUgY2FuIG5vdCBoYXZlIE5PIElO SEVSSVQgY2hlY2sgY29uc3RyYWludCAoc2VlCisJCSAqIFN0b3JlUmVsQ2hlY2sgZnVuY3Rp b24pLgorCQkgKi8KKwkJQXNzZXJ0KCFjY25vaW5oZXJpdCk7CisKKwkJY2NiaW5fbm9kZSA9 IG1hcF92YXJpYWJsZV9hdHRub3Moc3RyaW5nVG9Ob2RlKGNjYmluKSwKKwkJCQkJCQkJCQkg MSwgMCwKKwkJCQkJCQkJCQkgYXR0bWFwLAorCQkJCQkJCQkJCSBJbnZhbGlkT2lkLCAmZm91 bmRfd2hvbGVfcm93KTsKKworCQkvKgorCQkgKiBGb3IgdGhlIG1vbWVudCB3ZSBoYXZlIHRv IHJlamVjdCB3aG9sZS1yb3cgdmFyaWFibGVzIChhcyBmb3IgTElLRQorCQkgKiBhbmQgaW5o ZXJpdGFuY2VzKS4KKwkJICovCisJCWlmIChmb3VuZF93aG9sZV9yb3cpCisJCQllbG9nKEVS Uk9SLCAiQ29uc3RyYWludCBcIiVzXCIgY29udGFpbnMgYSB3aG9sZS1yb3cgcmVmZXJlbmNl IHRvIHRhYmxlIFwiJXNcIi4iLAorCQkJCSBjY25hbWUsCisJCQkJIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHBhcmVudF9yZWwpKTsKKworCQljb25zdHIgPSBtYWtlTm9kZShDb25zdHJh aW50KTsKKwkJY29uc3RyLT5jb250eXBlID0gQ09OU1RSX0NIRUNLOworCQljb25zdHItPmNv bm5hbWUgPSBwc3RyZHVwKGNjbmFtZSk7CisJCWNvbnN0ci0+ZGVmZXJyYWJsZSA9IGZhbHNl OworCQljb25zdHItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQljb25zdHItPmlzX2VuZm9y Y2VkID0gY2NlbmZvcmNlZDsKKwkJY29uc3RyLT5za2lwX3ZhbGlkYXRpb24gPSAhY2N2YWxp ZDsKKwkJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSBjY3ZhbGlkOworCQljb25zdHItPmlz X25vX2luaGVyaXQgPSBjY25vaW5oZXJpdDsKKwkJY29uc3RyLT5yYXdfZXhwciA9IE5VTEw7 CisJCWNvbnN0ci0+Y29va2VkX2V4cHIgPSBub2RlVG9TdHJpbmcoY2NiaW5fbm9kZSk7CisJ CWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwkJY29uc3RyYWludHMgPSBsYXBwZW5kKGNvbnN0 cmFpbnRzLCBjb25zdHIpOworCX0KKworCS8qIGluc3RhbGwgYWxsIENIRUNLIGNvbnN0cmFp bnRzLiAqLworCWNvb2tlZENvbnN0cmFpbnRzID0gQWRkUmVsYXRpb25OZXdDb25zdHJhaW50 cyhuZXdSZWwsIE5JTCwgY29uc3RyYWludHMsCisJCQkJCQkJCQkJCQkgIGZhbHNlLCB0cnVl LCB0cnVlLCBOVUxMKTsKKworCS8qIE1ha2UgdGhlIGFkZGl0aW9uYWwgY2F0YWxvZyBjaGFu Z2VzIHZpc2libGUgKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJLyoKKwkg KiBwYXJlbnRfcmVsIGNoZWNrIGNvbnN0cmFpbnQgZXhwcmVzc3Npb24gbWF5IHJlZmVyZW5j ZSB0YWJsZW9pZCwgc28KKwkgKiBsYXRlciBpbiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cywg d2UgbmVlZCBldnVsYXRlIHRoZSBjaGVjayBjb25zdHJhaW50CisJICogYWdhaW4gZm9yIHRo ZSBuZXdSZWwuIFdlIGNhbiBjaGVjayB3ZWF0aGVyIGNoZWNrIGNvbnN0cmFpbnQgY29udGFp bgorCSAqIHRhYmxlb2lkIHJlZmVyZW5jZSBvciBub3QgdmlhIHB1bGxfdmFyYXR0bm9zLgor CSAqLworCWZvcmVhY2hfcHRyKENvb2tlZENvbnN0cmFpbnQsIGNjb24sIGNvb2tlZENvbnN0 cmFpbnRzKQorCXsKKwkJaWYgKCFjY29uLT5za2lwX3ZhbGlkYXRpb24pCisJCXsKKwkJCU5v ZGUJICAgKnF1YWw7CisJCQlCaXRtYXBzZXQgICphdHRudW1zID0gTlVMTDsKKworCQkJQXNz ZXJ0KGNjb24tPmNvbnR5cGUgPT0gQ09OU1RSX0NIRUNLKTsKKwkJCXF1YWwgPSBleHBhbmRf Z2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcihjY29uLT5leHByLCBuZXdSZWwsIDEpOworCQkJ cHVsbF92YXJhdHRub3MocXVhbCwgMSwgJmF0dG51bXMpOworCisJCQkvKgorCQkJICogQWRk IGNoZWNrIG9ubHkgaWYgaXQgY29udGFpbnMgdGFibGVvaWQKKwkJCSAqIChUYWJsZU9pZEF0 dHJpYnV0ZU51bWJlcikuCisJCQkgKi8KKwkJCWlmIChibXNfaXNfbWVtYmVyKFRhYmxlT2lk QXR0cmlidXRlTnVtYmVyIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwK KwkJCQkJCQkgIGF0dG51bXMpKQorCQkJeworCQkJCU5ld0NvbnN0cmFpbnQgKm5ld2NvbjsK KworCQkJCW5ld2NvbiA9IChOZXdDb25zdHJhaW50ICopIHBhbGxvYzAoc2l6ZW9mKE5ld0Nv bnN0cmFpbnQpKTsKKwkJCQluZXdjb24tPm5hbWUgPSBjY29uLT5uYW1lOworCQkJCW5ld2Nv bi0+Y29udHlwZSA9IENPTlNUUl9DSEVDSzsKKwkJCQluZXdjb24tPnF1YWwgPSBxdWFsOwor CisJCQkJdGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQodGFiLT5jb25zdHJhaW50cywgbmV3 Y29uKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIERvbid0IG5lZWQgdGhlIGNvb2tlZENvbnN0 cmFpbnRzIGFueSBtb3JlLiAqLworCWxpc3RfZnJlZV9kZWVwKGNvb2tlZENvbnN0cmFpbnRz KTsKKworCS8qIFJlcHJvZHVjZSBub3QtbnVsbCBjb25zdHJhaW50cy4gKi8KKwlpZiAoY29u c3RyLT5oYXNfbm90X251bGwpCisJeworCQlMaXN0CSAgICpubmNvbnN0cmFpbnRzOworCisJ CS8qCisJCSAqIFRoZSAiaW5jbHVkZV9ub2luaCIgYXJndW1lbnQgaXMgZmFsc2UgYmVjYXVz ZSBhIHBhcnRpdGlvbmVkIHRhYmxlCisJCSAqIGNhbm5vdCBoYXZlIE5PIElOSEVSSVQgY29u c3RyYWludC4KKwkJICovCisJCW5uY29uc3RyYWludHMgPSBSZWxhdGlvbkdldE5vdE51bGxD b25zdHJhaW50cyhSZWxhdGlvbkdldFJlbGlkKHBhcmVudF9yZWwpLAorCQkJCQkJCQkJCQkJ CSAgZmFsc2UsIGZhbHNlKTsKKworCQlBc3NlcnQobGlzdF9sZW5ndGgobm5jb25zdHJhaW50 cykgPiAwKTsKKworCQkvKgorCQkgKiBXZSBhbHJlYWR5IHNldCBwZ19hdHRyaWJ1dGUuYXR0 bm90bnVsbCBpbiBjcmVhdGVQYXJ0aXRpb25UYWJsZS4gTm8KKwkJICogbmVlZCBjYWxsIHNl dF9hdHRub3RudWxsIGFnYWluLgorCQkgKi8KKwkJQWRkUmVsYXRpb25OZXdDb25zdHJhaW50 cyhuZXdSZWwsIE5JTCwgbm5jb25zdHJhaW50cywgZmFsc2UsIHRydWUsIHRydWUsIE5VTEwp OworCX0KK30KKworLyoKKyAqIGNyZWF0ZVBhcnRpdGlvblRhYmxlOgorICoKKyAqIENyZWF0 ZSBhIG5ldyBwYXJ0aXRpb24gKG5ld1BhcnROYW1lKSBmb3IgcGFydGl0aW9uZWQgdGFibGUg KHBhcmVudF9yZWwpLgorICogb3duZXJJZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJ0aXRp b24gb24gd2hpY2ggdGhlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQsCisgKiBzbyBpdCBpcyBw YXNzZWQgc2VwYXJhdGVseS4gIFRoZSBuZXcgcGFydGl0aW9uIHdpbGwgaW5oZXJpdCB0aGUg YWNjZXNzIG1ldGhvZAorICogYW5kIHBlcnNpc3RlbmNlIHR5cGUgZnJvbSB0aGUgcGFyZW50 IHRhYmxlLgorICoKKyAqIHJldHVybnMgdGhlIGNyZWF0ZWQgcmVsYXRpb24gKGxvY2tlZCBp biBBY2Nlc3NFeGNsdXNpdmVMb2NrIG1vZGUpLgorICovCitzdGF0aWMgUmVsYXRpb24KK2Ny ZWF0ZVBhcnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdlVmFyICpuZXdQYXJ0TmFt ZSwKKwkJCQkJIFJlbGF0aW9uIHBhcmVudF9yZWwsIE9pZCBvd25lcklkKQoreworCVJlbGF0 aW9uCW5ld1JlbDsKKwlPaWQJCQluZXdSZWxJZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOwor CVR1cGxlRGVzYwlkZXNjcmlwdG9yOworCUxpc3QJICAgKmNvbExpc3QgPSBOSUw7CisJT2lk CQkJcmVsYW1JZDsKKwlPaWQJCQluYW1lc3BhY2VJZDsKKwlBbHRlcmVkVGFibGVJbmZvICpu ZXdfcGFydHJlbF90YWI7CisJRm9ybV9wZ19jbGFzcyBwYXJlbnRfcmVsZm9ybSA9IHBhcmVu dF9yZWwtPnJkX3JlbDsKKworCS8qIElmIGV4aXN0aW5nIHJlbCBpcyB0ZW1wLCBpdCBtdXN0 IGJlbG9uZyB0byB0aGlzIHNlc3Npb24gKi8KKwlpZiAoUkVMQVRJT05fSVNfT1RIRVJfVEVN UChwYXJlbnRfcmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVf V1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiY2Fubm90IGNyZWF0ZSBhcyBwYXJ0 aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uIG9mIGFub3RoZXIgc2Vzc2lvbiIpKTsKKwor CS8qIExvb2sgdXAgaW5oZXJpdGFuY2UgYW5jZXN0b3JzIGFuZCBnZW5lcmF0ZSByZWxhdGlv biBzY2hlbWEuICovCisJY29sTGlzdCA9IGdldEF0dHJpYnV0ZXNMaXN0KHBhcmVudF9yZWwp OworCisJLyogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciBmcm9tIHRoZSByZWxhdGlvbiBz Y2hlbWEuICovCisJZGVzY3JpcHRvciA9IEJ1aWxkRGVzY0ZvclJlbGF0aW9uKGNvbExpc3Qp OworCisJLyogTG9vayB1cCB0aGUgYWNjZXNzIG1ldGhvZCBmb3IgbmV3IHJlbGF0aW9uLiAq LworCXJlbGFtSWQgPSAocGFyZW50X3JlbGZvcm0tPnJlbGFtICE9IEludmFsaWRPaWQpID8g cGFyZW50X3JlbGZvcm0tPnJlbGFtIDogSEVBUF9UQUJMRV9BTV9PSUQ7CisKKwkvKiBMb29r IHVwIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggd2UgYXJlIHN1cHBvc2VkIHRvIGNyZWF0ZSB0 aGUgcmVsYXRpb24uICovCisJbmFtZXNwYWNlSWQgPQorCQlSYW5nZVZhckdldEFuZENoZWNr Q3JlYXRpb25OYW1lc3BhY2UobmV3UGFydE5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQp OworCWlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVsaWQpKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCWVycm1zZygicmVs YXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgbmV3UGFydE5hbWUtPnJlbG5hbWUpKTsK KworCS8qCisJICogV2UgaW50ZW5kZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRpb24gd2l0aCB0 aGUgc2FtZSBwZXJzaXN0ZW5jZSBhcyB0aGUKKwkgKiBwYXJlbnQgdGFibGUsIGJ1dCB3ZSBz dGlsbCBuZWVkIHRvIHJlY2hlY2sgYmVjYXVzZSB0aGF0IG1pZ2h0IGJlCisJICogYWZmZWN0 ZWQgYnkgdGhlIHNlYXJjaF9wYXRoLiAgSWYgdGhlIHBhcmVudCBpcyBwZXJtYW5lbnQsIHNv IG11c3QgYmUKKwkgKiBhbGwgb2YgaXRzIHBhcnRpdGlvbnMuCisJICovCisJaWYgKHBhcmVu dF9yZWxmb3JtLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QICYmCisJ CW5ld1BhcnROYW1lLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIGFz IHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJICAgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50X3JlbCkpKTsKKworCS8qIFBlcm1hbmVudCBy ZWxzIGNhbm5vdCBiZSBwYXJ0aXRpb25zIGJlbG9uZ2luZyB0byB0ZW1wb3JhcnkgcGFyZW50 ICovCisJaWYgKG5ld1BhcnROYW1lLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5D RV9URU1QICYmCisJCXBhcmVudF9yZWxmb3JtLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJT SVNURU5DRV9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9X Uk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgcGVybWFu ZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gXCIlc1wi IiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50X3JlbCkpKTsKKwor CS8qIENyZWF0ZSB0aGUgcmVsYXRpb24uICovCisJbmV3UmVsSWQgPSBoZWFwX2NyZWF0ZV93 aXRoX2NhdGFsb2cobmV3UGFydE5hbWUtPnJlbG5hbWUsCisJCQkJCQkJCQkJbmFtZXNwYWNl SWQsCisJCQkJCQkJCQkJcGFyZW50X3JlbGZvcm0tPnJlbHRhYmxlc3BhY2UsCisJCQkJCQkJ CQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCUludmFs aWRPaWQsCisJCQkJCQkJCQkJb3duZXJJZCwKKwkJCQkJCQkJCQlyZWxhbUlkLAorCQkJCQkJ CQkJCWRlc2NyaXB0b3IsCisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCVJFTEtJTkRfUkVM QVRJT04sCisJCQkJCQkJCQkJbmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlLAorCQkJCQkJ CQkJCWZhbHNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCU9OQ09NTUlUX05PT1As CisJCQkJCQkJCQkJKERhdHVtKSAwLAorCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJYWxs b3dTeXN0ZW1UYWJsZU1vZHMsCisJCQkJCQkJCQkJdHJ1ZSwKKwkJCQkJCQkJCQlJbnZhbGlk T2lkLAorCQkJCQkJCQkJCU5VTEwpOworCisJLyoKKwkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNv bW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXdseS1jcmVhdGVkIHJlbGF0aW9uCisJICog dHVwbGUgdmlzaWJsZSBmb3Igb3BlbmluZy4KKwkgKi8KKwlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOworCisJLyoKKwkgKiBPcGVuIHRoZSBuZXcgcGFydGl0aW9uIHdpdGggbm8gbG9j aywgYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUKKwkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIHBs YWNlZCB0aGVyZSBhZnRlciBjcmVhdGlvbi4KKwkgKi8KKwluZXdSZWwgPSB0YWJsZV9vcGVu KG5ld1JlbElkLCBOb0xvY2spOworCisJLyogRmluZCBvciBjcmVhdGUgd29yayBxdWV1ZSBl bnRyeSBmb3IgbmV3bHkgY3JlYXRlZCB0YWJsZS4gKi8KKwluZXdfcGFydHJlbF90YWIgPSBB VEdldFF1ZXVlRW50cnkod3F1ZXVlLCBuZXdSZWwpOworCisJLyogQ3JlYXRlIGNvbnN0cmFp bnRzLCBkZWZhdWx0IHZhbHVlcyBhbmQgZ2VuZXJhdGVkIHZhbHVlcyAqLworCWNyZWF0ZVRh YmxlQ29uc3RyYWludHMod3F1ZXVlLCBuZXdfcGFydHJlbF90YWIsIHBhcmVudF9yZWwsIG5l d1JlbCk7CisKKwkvKgorCSAqIE5lZWQgdG8gY2FsbCBDb21tYW5kQ291bnRlckluY3JlbWVu dCwgc28gZnJlc2ggcmVsY2FjaGUgZW50cnkgaGF2ZQorCSAqIG5ld2x5IGluc3RhbGxlZCBj b25zdHJhaW50IGluZm8uCisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwor CXJldHVybiBuZXdSZWw7Cit9CisKKy8qCisgKiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93czog c2NhbiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCAobWVyZ2luZ1BhcnRpdGlvbnMpCisgKiBv ZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgYW5kIG1vdmUgcm93cyBpbnRvIHRoZSBuZXcgcGFy dGl0aW9uCisgKiAobmV3UGFydFJlbCkuIFdlIGFsc28gdmVydGlmeSBjaGVjayBjb25zdHJh aW50cyBhZ2FpbnN0IHRoZXNlIHJvd3MuCisgKi8KK3N0YXRpYyB2b2lkCitNZXJnZVBhcnRp dGlvbnNNb3ZlUm93cyhMaXN0ICoqd3F1ZXVlLCBMaXN0ICptZXJnaW5nUGFydGl0aW9ucywg UmVsYXRpb24gbmV3UGFydFJlbCkKK3sKKwlDb21tYW5kSWQJbXljaWQ7CisJRVN0YXRlCSAg ICplc3RhdGU7CisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiOworCUxpc3RDZWxsICAgKmx0YWI7 CisKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICov CisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlCdWxrSW5z ZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRp b24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKworCS8qIEZpbmQgdGhlIHdvcmsg cXVldWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFibGU6IG5ld1BhcnRSZWwuICovCisJ dGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UGFydFJlbCk7CisKKwkvKiBHZW5l cmF0ZSB0aGUgY29uc3RyYWludCBhbmQgZGVmYXVsdCBleGVjdXRpb24gc3RhdGVzLiAqLwor CWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWJ1aWxkRXhwcmVzc2lvbkV4 ZWN1dGlvblN0YXRlcyh0YWIsIG5ld1BhcnRSZWwsIGVzdGF0ZSk7CisKKwlteWNpZCA9IEdl dEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisKKwkvKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0 YXRlIGZvciB0YWJsZV90dXBsZV9pbnNlcnQuICovCisJYmlzdGF0ZSA9IEdldEJ1bGtJbnNl cnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIG5lY2Vzc2FyeSB0dXBsZSBzbG90LiAqLworCWRz dHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShuZXdQYXJ0UmVsLCBOVUxMKTsKKworCWZvcmVh Y2hfb2lkKG1lcmdpbmdfb2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJCUV4cHJDb250 ZXh0ICplY29udGV4dDsKKwkJVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJCVR1cGxlQ29u dmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCQlUYWJsZVNjYW5EZXNjIHNjYW47CisJCU1lbW9y eUNvbnRleHQgb2xkQ3h0OworCQlTbmFwc2hvdAlzbmFwc2hvdDsKKwkJUmVsYXRpb24JbWVy Z2luZ1BhcnRpdGlvbjsKKworCQllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQo ZXN0YXRlKTsKKworCQkvKgorCQkgKiBQYXJ0aXRpb24gaXMgYWxyZWFkeSBsb2NrZWQgaW4g dGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCisJCSAqIGZ1bmN0aW9uLgorCQkg Ki8KKwkJbWVyZ2luZ1BhcnRpdGlvbiA9IHRhYmxlX29wZW4obWVyZ2luZ19vaWQsIE5vTG9j ayk7CisKKwkJLyogQ3JlYXRlIGEgc291cmNlIHR1cGxlIHNsb3QgZm9yIHRoZSBwYXJ0aXRp b24gYmVpbmcgbWVyZ2VkLiAqLworCQlzcmNzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUobWVy Z2luZ1BhcnRpdGlvbiwgTlVMTCk7CisKKwkJLyoKKwkJICogTWFwIGNvbXB1dGluZyBmb3Ig bW92aW5nIGF0dHJpYnV0ZXMgb2YgbWVyZ2VkIHBhcnRpdGlvbiB0byBuZXcKKwkJICogcGFy dGl0aW9uLgorCQkgKi8KKwkJdHVwbGVfbWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShS ZWxhdGlvbkdldERlc2NyKG1lcmdpbmdQYXJ0aXRpb24pLAorCQkJCQkJCQkJCSAgIFJlbGF0 aW9uR2V0RGVzY3IobmV3UGFydFJlbCkpOworCisJCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93 cy4gKi8KKwkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90 KCkpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBz aG90LCAwLCBOVUxMKTsKKworCQkvKgorCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9y eSBjb250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQorCQkgKiBwcm9kdWNlZCwg c28gd2UgZG9uJ3QgbGVhayBtZW1vcnkuCisJCSAqLworCQlvbGRDeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOworCisJCXdo aWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9u LCBzcmNzbG90KSkKKwkJeworCQkJVHVwbGVUYWJsZVNsb3QgKmluc2VydHNsb3Q7CisKKwkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCWlmICh0dXBsZV9tYXApCisJCQl7CisJ CQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlpbnNl cnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jj c2xvdCwgZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc2xvdF9nZXRhbGxh dHRycyhzcmNzbG90KTsKKworCQkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8K KwkJCQlpbnNlcnRzbG90ID0gZHN0c2xvdDsKKworCQkJCUV4ZWNDbGVhclR1cGxlKGluc2Vy dHNsb3QpOworCisJCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3Qt PnR0c192YWx1ZXMsCisJCQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZh bGlkKTsKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRz X2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9mKGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7 CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCQl9CisKKwkJ CS8qCisJCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0 IHJlZmVyZW5jZSB0aGUKKwkJCSAqIHRhYmxlb2lkIGNvbHVtbiwgc28gZmlsbCB0dHNfdGFi bGVPaWQgd2l0aCB0aGUgZGVzaXJlZCB2YWx1ZS4KKwkJCSAqIChXZSBtdXN0IGRvIHRoaXMg ZWFjaCB0aW1lLCBiZWNhdXNlIGl0IGdldHMgb3ZlcndyaXR0ZW4gd2l0aAorCQkJICogbmV3 cmVsJ3MgT0lEIGR1cmluZyBzdG9yaW5nLikKKwkJCSAqLworCQkJaW5zZXJ0c2xvdC0+dHRz X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKTsKKworCQkJLyoKKwkJ CSAqIE5vdywgZXZhbHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3aG9zZSBpbnB1 dHMgY29tZSBmcm9tCisJCQkgKiB0aGUgbmV3IHR1cGxlLiAgV2UgYXNzdW1lIHRoZXNlIGNv bHVtbnMgd29uJ3QgcmVmZXJlbmNlIGVhY2gKKwkJCSAqIG90aGVyLCBzbyB0aGF0IHRoZXJl J3Mgbm8gb3JkZXJpbmcgZGVwZW5kZW5jeS4KKwkJCSAqLworCQkJZXZhbHVhdGVHZW5lcmF0 ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHModGFiLCBuZXdQYXJ0UmVsLAorCQkJ CQkJCQkJCQkJCQkJaW5zZXJ0c2xvdCwgZWNvbnRleHQpOworCisJCQkvKiBXcml0ZSB0aGUg dHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCQl0YWJsZV90dXBsZV9pbnNl cnQobmV3UGFydFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsCisJCQkJCQkJICAgdGlfb3B0aW9u cywgYmlzdGF0ZSk7CisKKwkJCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCQl9CisK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN4dCk7CisJCXRhYmxlX2VuZHNjYW4oc2Nh bik7CisJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwkJaWYgKHR1cGxlX21h cCkKKwkJCWZyZWVfY29udmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCQlFeGVjRHJvcFNp bmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFy dGl0aW9uLCBOb0xvY2spOworCX0KKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChkc3RzbG90KTsKKwlGcmVlQnVsa0luc2Vy dFN0YXRlKGJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG5ld1BhcnRS ZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHRvIHByb2Nlc3Mg dGhpcyBuZXdQYXJ0UmVsIHNpbmNlIHdlIGFscmVhZHkgcHJvY2Vzc2VkIGluCisJICogaGVy ZSwgc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZSBvZiBpdC4KKwkgKi8KKwlmb3Jl YWNoKGx0YWIsICp3cXVldWUpCisJeworCQl0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAqKSBs Zmlyc3QobHRhYik7CisJCWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVsaWQobmV3 UGFydFJlbCkpCisJCXsKKwkJCSp3cXVldWUgPSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUs IGx0YWIpOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKKy8qCisgKiBkZXRhY2hQYXJ0aXRp b25UYWJsZTogZGV0YWNoIHBhcnRpdGlvbiAiY2hpbGRfcmVsIiBmcm9tIHBhcnRpdGlvbmVk IHRhYmxlCisgKiAicGFyZW50X3JlbCIgd2l0aCBkZWZhdWx0IHBhcnRpdGlvbiBpZGVudGlm aWVyICJkZWZhdWx0UGFydE9pZCIKKyAqLworc3RhdGljIHZvaWQKK2RldGFjaFBhcnRpdGlv blRhYmxlKFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIGNoaWxkX3JlbCwgT2lkIGRl ZmF1bHRQYXJ0T2lkKQoreworCS8qIFJlbW92ZSB0aGUgcGdfaW5oZXJpdHMgcm93IGZpcnN0 LiAqLworCVJlbW92ZUluaGVyaXRhbmNlKGNoaWxkX3JlbCwgcGFyZW50X3JlbCwgZmFsc2Up OworCisJLyoKKwkgKiBEZXRhY2hpbmcgdGhlIHBhcnRpdGlvbiBtaWdodCBpbnZvbHZlIFRP QVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBz aG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCisJLyogRG8gdGhlIGZpbmFsIHBhcnQgb2YgZGV0YWNoaW5nLiAqLworCURldGFj aFBhcnRpdGlvbkZpbmFsaXplKHBhcmVudF9yZWwsIGNoaWxkX3JlbCwgZmFsc2UsIGRlZmF1 bHRQYXJ0T2lkKTsKKworCVBvcEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKKy8qCisgKiBBTFRF UiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyA8cGFydGl0aW9uLWxpc3Q+IElOVE8g PHBhcnRpdGlvbi1uYW1lPgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjTWVyZ2VQYXJ0aXRp b25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAorCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQg KmNvbnRleHQpCit7CisJUmVsYXRpb24JbmV3UGFydFJlbDsKKwlMaXN0CSAgICptZXJnaW5n UGFydGl0aW9ucyA9IE5JTDsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlleGlz dGluZ1JlbGlkOworCU9pZAkJCW93bmVySWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCXNhdmVf dXNlcmlkOworCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CisJaW50CQkJc2F2ZV9uZXN0bGV2 ZWw7CisKKwkvKgorCSAqIENoZWNrIG93bmVyc2hpcCBvZiBtZXJnZWQgcGFydGl0aW9ucyAt IHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgb3duZXJzCisJICogY2Fubm90IGJlIG1lcmdl ZC4gQWxzbywgY29sbGVjdCB0aGUgT0lEcyBvZiB0aGVzZSBwYXJ0aXRpb25zIGR1cmluZyB0 aGUKKwkgKiBjaGVjay4KKwkgKi8KKwlmb3JlYWNoX25vZGUoUmFuZ2VWYXIsIG5hbWUsIGNt ZC0+cGFydGxpc3QpCisJeworCQlSZWxhdGlvbgltZXJnaW5nUGFydGl0aW9uOworCisJCS8q CisJCSAqIFdlIGFyZSBnb2luZyB0byBkZXRhY2ggYW5kIHJlbW92ZSB0aGlzIHBhcnRpdGlv bi4gIFdlIGFscmVhZHkgdG9vaworCQkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIGxvY2sgb24g dHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UsIHNvIGhlcmUsCisJCSAqIE5vTG9jayBp cyBmaW5lLgorCQkgKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbiA9IHRhYmxlX29wZW5ydl9leHRl bmRlZChuYW1lLCBOb0xvY2ssIGZhbHNlKTsKKwkJQXNzZXJ0KENoZWNrUmVsYXRpb25Mb2Nr ZWRCeU1lKG1lcmdpbmdQYXJ0aXRpb24sIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIGZhbHNlKSk7 CisKKwkJaWYgKE9pZElzVmFsaWQob3duZXJJZCkpCisJCXsKKwkJCS8qIERvIHRoZSBwYXJ0 aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnM/ICovCisJCQlpZiAo b3duZXJJZCAhPSBtZXJnaW5nUGFydGl0aW9uLT5yZF9yZWwtPnJlbG93bmVyKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZm ZXJlbnQgb3duZXJzIikpOworCQl9CisJCWVsc2UKKwkJCW93bmVySWQgPSBtZXJnaW5nUGFy dGl0aW9uLT5yZF9yZWwtPnJlbG93bmVyOworCisJCS8qIFN0b3JlIGEgbmV4dCBtZXJnaW5n IHBhcnRpdGlvbiBpbnRvIHRoZSBsaXN0LiAqLworCQltZXJnaW5nUGFydGl0aW9ucyA9IGxh cHBlbmRfb2lkKG1lcmdpbmdQYXJ0aXRpb25zLAorCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVs aWQobWVyZ2luZ1BhcnRpdGlvbikpOworCisJCXRhYmxlX2Nsb3NlKG1lcmdpbmdQYXJ0aXRp b24sIE5vTG9jayk7CisJfQorCisJLyogTG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBu ZXcgcGFydGl0aW9uIG5hbWUuICovCisJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFt ZXNwYWNlKGNtZC0+bmFtZSwgTm9Mb2NrLCAmZXhpc3RpbmdSZWxpZCk7CisKKwkvKgorCSAq IENoZWNrIGlmIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHRha2VuLiAgVGhpcyBoZWxwcyB1cyB0 byBkZXRlY3QgdGhlCisJICogc2l0dWF0aW9uIHdoZW4gb25lIG9mIHRoZSBtZXJnaW5nIHBh cnRpdGlvbnMgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlCisJICogbmV3IHBhcnRpdGlvbi4g IE90aGVyd2lzZSwgdGhpcyB3b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSBidXQgY2F0Y2hp bmcKKwkgKiB0aGlzIGhlcmUgYWxsb3dzIHVzIHRvIGVtaXQgYSBuaWNlciBlcnJvciBtZXNz YWdlLgorCSAqLworCWlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVsaWQpKQorCXsKKwkJaWYg KGxpc3RfbWVtYmVyX29pZChtZXJnaW5nUGFydGl0aW9ucywgZXhpc3RpbmdSZWxpZCkpCisJ CXsKKwkJCS8qCisJCQkgKiBUaGUgbmV3IHBhcnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBh cyBvbmUgb2YgbWVyZ2luZworCQkJICogcGFydGl0aW9ucy4KKwkJCSAqLworCQkJY2hhcgkJ dG1wUmVsTmFtZVtOQU1FREFUQUxFTl07CisKKwkJCS8qIEdlbmVyYXRlIHRlbXBvcmFyeSBu YW1lLiAqLworCQkJc3ByaW50Zih0bXBSZWxOYW1lLCAibWVyZ2UtJXUtJVgtdG1wIiwgUmVs YXRpb25HZXRSZWxpZChyZWwpLCBNeVByb2NQaWQpOworCisJCQkvKgorCQkJICogUmVuYW1l IHRoZSBleGlzdGluZyBwYXJ0aXRpb24gd2l0aCBhIHRlbXBvcmFyeSBuYW1lLCBsZWF2aW5n IGl0CisJCQkgKiBmcmVlIGZvciB0aGUgbmV3IHBhcnRpdGlvbi4gIFdlIGRvbid0IG5lZWQg dG8gY2FyZSBhYm91dCB0aGlzCisJCQkgKiBpbiB0aGUgZnV0dXJlIGJlY2F1c2Ugd2UncmUg Z29pbmcgdG8gZXZlbnR1YWxseSBkcm9wIHRoZQorCQkJICogZXhpc3RpbmcgcGFydGl0aW9u IGFueXdheS4KKwkJCSAqLworCQkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChleGlzdGluZ1Jl bGlkLCB0bXBSZWxOYW1lLCB0cnVlLCBmYWxzZSk7CisKKwkJCS8qCisJCQkgKiBXZSBtdXN0 IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXcgcGFydGl0aW9uCisJ CQkgKiB0dXBsZSB2aXNpYmxlIGZvciByZW5hbWUuCisJCQkgKi8KKwkJCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJy ZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBjbWQtPm5hbWUtPnJlbG5hbWUpKTsK KwkJfQorCX0KKworCWRlZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21f cGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyog RGV0YWNoIGFsbCBtZXJnaW5nIHBhcnRpdGlvbnMuICovCisJZm9yZWFjaF9vaWQobWVyZ2lu Z1BhcnRpdGlvbk9pZCwgbWVyZ2luZ1BhcnRpdGlvbnMpCisJeworCQlSZWxhdGlvbgljaGls ZF9yZWw7CisKKwkJY2hpbGRfcmVsID0gdGFibGVfb3BlbihtZXJnaW5nUGFydGl0aW9uT2lk LCBOb0xvY2spOworCisJCWRldGFjaFBhcnRpdGlvblRhYmxlKHJlbCwgY2hpbGRfcmVsLCBk ZWZhdWx0UGFydE9pZCk7CisKKwkJdGFibGVfY2xvc2UoY2hpbGRfcmVsLCBOb0xvY2spOwor CX0KKworCS8qCisJICogUGVyZm9ybSBhIHByZWxpbWluYXJ5IGNoZWNrIHRvIGRldGVybWlu ZSB3aGV0aGVyIGl0J3Mgc2FmZSB0byBkcm9wIGFsbAorCSAqIG1lcmdpbmcgcGFydGl0aW9u cyBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28gbGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cwor CSAqIGludG8gdGhlIG5ldyBwYXJ0aXRpb25zIHZpYSBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93 cywgYWxsIG9sZCBwYXJ0aXRpb25zCisJICogbmVlZCBiZSBkcm9wcGVkLiBIb3dldmVyLCBz aW5jZSB0aGUgZHJvcCBiZWhhdmlvciBpcyBEUk9QX1JFU1RSSUNUIGFuZAorCSAqIHRoZSBt ZXJnZSBwcm9jZXNzIChNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cykgY2FuIGJlIHRpbWUtY29u c3VtaW5nLAorCSAqIHBlcmZvcm1pbmcgYW4gZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxp Z2liaWxpdHkgb2Ygb2xkIHBhcnRpdGlvbnMgaXMKKwkgKiBwcmVmZXJhYmxlLgorCSAqLwor CWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQor CXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJLyogR2V0IG9pZCBvZiB0aGUgbGF0 ZXIgdG8gYmUgZHJvcHBlZCByZWxhdGlvbiAqLworCQlvYmplY3Qub2JqZWN0SWQgPSBtZXJn aW5nUGFydGl0aW9uT2lkOworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25J ZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKworCQlwZXJmb3JtRGVsZXRpb25DaGVj aygmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsK Kwl9CisKKwkvKiBDcmVhdGUgdGFibGUgZm9yIG5ldyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRp b25lZCB0YWJsZSBhcyBtb2RlbC4gKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChvd25lcklkKSk7 CisJbmV3UGFydFJlbCA9IGNyZWF0ZVBhcnRpdGlvblRhYmxlKHdxdWV1ZSwgY21kLT5uYW1l LCByZWwsIG93bmVySWQpOworCisJLyoKKwkgKiBTd2l0Y2ggdG8gdGhlIHRhYmxlIG93bmVy J3MgdXNlcmlkLCBzbyB0aGF0IGFueSBpbmRleCBmdW5jdGlvbnMgYXJlIHJ1bgorCSAqIGFz IHRoYXQgdXNlci4gIEFsc28gbG9jayBkb3duIHNlY3VyaXR5LXJlc3RyaWN0ZWQgb3BlcmF0 aW9ucyBhbmQKKwkgKiBhcnJhbmdlIHRvIG1ha2UgR1VDIHZhcmlhYmxlIGNoYW5nZXMgbG9j YWwgdG8gdGhpcyBjb21tYW5kLgorCSAqCisJICogTmVlZCB0byBkbyBpdCBhZnRlciBkZXRl cm1pbmUgbmFtZXNwYWNlIGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlIGNhbGwuCisJICovCisJ R2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0 KTsKKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KG93bmVySWQsCisJCQkJCQkgICBzYXZlX3Nl Y19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVz dGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisK KwkvKiBDb3B5IGRhdGEgZnJvbSBtZXJnZWQgcGFydGl0aW9ucyB0byBuZXcgcGFydGl0aW9u LiAqLworCU1lcmdlUGFydGl0aW9uc01vdmVSb3dzKHdxdWV1ZSwgbWVyZ2luZ1BhcnRpdGlv bnMsIG5ld1BhcnRSZWwpOworCisJLyogRHJvcCB0aGUgY3VycmVudCBwYXJ0aXRpb25zIGJl Zm9yZSBhdHRhY2hpbmcgdGhlIG5ldyBvbmUuICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1Bh cnRpdGlvbk9pZCwgbWVyZ2luZ1BhcnRpdGlvbnMpCisJeworCQlPYmplY3RBZGRyZXNzIG9i amVjdDsKKworCQlvYmplY3Qub2JqZWN0SWQgPSBtZXJnaW5nUGFydGl0aW9uT2lkOworCQlv YmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdFN1 YklkID0gMDsKKworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwg MCk7CisJfQorCisJbGlzdF9mcmVlKG1lcmdpbmdQYXJ0aXRpb25zKTsKKworCS8qCisJICog QXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUuIHdxdWV1 ZSA9IE5VTEw6CisJICogdmVyaWZpY2F0aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50 IGlzIG5vdCBuZWVkZWQuCisJICovCisJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVs LCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5kKTsKKworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwg Y29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9jayk7CisKKwkvKiBS b2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucy4g Ki8KKwlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKKworCS8qIFJlc3Rv cmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250ZXh0LiAqLworCVNldFVzZXJJZEFuZFNlY0Nv bnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK aW5kZXggZjFkZWY2N2FjNy4uMjNlZDlhZjZlNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC03NTYs NyArNzU2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFM SVRZIE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJS SURJTkcgT1dORUQgT1dORVIKIAotCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElB TCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQQVRICisJUEFSQUxMRUwgUEFSQU1FVEVS IFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVJUSVRJT05TIFBBU1NJTkcgUEFTU1dPUkQg UEFUSAogCVBFUklPRCBQTEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJF Q0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQ UklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JB TSBQVUJMSUNBVElPTgpAQCAtMjM2OCw2ICsyMzY4LDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJ CQkJbi0+c3VidHlwZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0g JDM7CiAJCQkJCWNtZC0+Ym91bmQgPSAkNDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsK IAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICop IGNtZDsKIApAQCAtMjM4Miw2ICsyMzgzLDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+ c3VidHlwZSA9IEFUX0RldGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJ CQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJ CQljbWQtPmNvbmN1cnJlbnQgPSAkNDsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwog CkBAIC0yMzk1LDYgKzIzOTcsMjEgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlw ZSA9IEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOwogCQkJCQljbWQtPm5hbWUgPSAkMzsK IAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CisJ CQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBj bWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8 bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJ CXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBx dWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2Rl KEFsdGVyVGFibGVDbWQpOworCQkJCQlQYXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBh cnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+c3VidHlwZSA9IEFUX01lcmdlUGFydGl0aW9uczsK KwkJCQkJY21kLT5uYW1lID0gJDc7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQlj bWQtPnBhcnRsaXN0ID0gJDQ7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJ CQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTI0 MTEsNiArMjQyOCw3IEBAIGluZGV4X3BhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUg PSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQt PmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5j b25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAt MTc5NDQsNiArMTc5NjIsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgog CQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBB U1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUEFUSApAQCAtMTg1NzEsNiArMTg1OTAsNyBA QCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8 IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dP UkQKIAkJCXwgUEFUSApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggZTk2 YjM4YTU5ZC4uNTY0YmE1NWI2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5j CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Ft LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCIKQEAgLTU4LDYgKzU5LDggQEAKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0 Ym91bmRzLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRkZXNjLmgiCiAjaW5jbHVk ZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMzUwOSw2ICszNTEyLDEzNSBAQCB0cmFu c2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs CiB9CiAKIAorLyoKKyAqIGNoZWNrUGFydGl0aW9uCisgKiBDaGVjayB3aGV0aGVyIHBhcnRS ZWxPaWQgaXMgYSBsZWFmIHBhcnRpdGlvbiBvZiB0aGUgcGFyZW50IHRhYmxlIChyZWwpLgor ICovCitzdGF0aWMgdm9pZAorY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFy dFJlbE9pZCkKK3sKKwlSZWxhdGlvbglwYXJ0UmVsOworCisJcGFydFJlbCA9IHRhYmxlX29w ZW4ocGFydFJlbE9pZCwgTm9Mb2NrKTsKKworCWlmIChwYXJ0UmVsLT5yZF9yZWwtPnJlbGtp bmQgIT0gUkVMS0lORF9SRUxBVElPTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5v dCBhIHRhYmxlIiwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCkpLAorCQkJCWVy cmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdl IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKworCWlmICghcGFy dFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQll cnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wi IGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJ CQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBB UlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0 aXRpb25zIikpOworCisJaWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZh bHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJZXJybXNnKCJyZWxhdGlv biBcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFS VElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRp dGlvbnMiKSk7CisKKwl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOworfQorCisvKgor ICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRF UiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCisgKgorICogRG9lcyBzaW1w bGUgY2hlY2tzIGZvciBtZXJnZWQgcGFydGl0aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiBy ZXN1bHRpbmcKKyAqIHBhcnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBh cnRpdGlvbkNtZEZvck1lcmdlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNt ZCAqcGFydGNtZCkKK3sKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lk OworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJ Y2hhcgkJc3RyYXRlZ3k7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRy MjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0ID0gZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMg PSBOSUw7CisKKwlrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0 cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJhdGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5 ID09IFBBUlRJVElPTl9TVFJBVEVHWV9IQVNIKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygicGFy dGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKTsK KworCS8qIERvZXMgcGFydGl0aW9uZWQgdGFibGUgKHBhcmVudCkgaGF2ZSBhIGRlZmF1bHQg cGFydGl0aW9uPyAqLworCWRlZmF1bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21f cGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgdHJ1ZSkpOworCisJ Zm9yZWFjaChsaXN0cHRyLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7CisJCVJhbmdlVmFyICAg Km5hbWUgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCS8qIFBhcnRpdGlv bnMgaW4gdGhlIGxpc3Qgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5hbWVzLiAqLworCQlmb3Jf ZWFjaF9jZWxsKGxpc3RwdHIyLCBwYXJ0Y21kLT5wYXJ0bGlzdCwgbG5leHQocGFydGNtZC0+ cGFydGxpc3QsIGxpc3RwdHIpKQorCQl7CisJCQlSYW5nZVZhciAgICpuYW1lMiA9IChSYW5n ZVZhciAqKSBsZmlyc3QobGlzdHB0cjIpOworCisJCQlpZiAoZXF1YWwobmFtZSwgbmFtZTIp KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRF X1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMg YWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRp b24oY3h0LT5wc3RhdGUsIG5hbWUyLT5sb2NhdGlvbikpOworCQl9CisKKwkJLyoKKwkJICog U2VhcmNoIERFRkFVTFQgcGFydGl0aW9uIGluIHRoZSBsaXN0LiBPcGVuIGFuZCBsb2NrIHBh cnRpdGlvbnMKKwkJICogYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBib3VuZGFyeSBmb3IgcmVz dWx0aW5nIHBhcnRpdGlvbiwgd2UgYWxzbworCQkgKiBjaGVjayBmb3Igb3duZXJzaGlwIGFs b25nIHRoZSB3YXkuICBXZSBuZWVkIHRvIHVzZQorCQkgKiBBY2Nlc3NFeGNsdXNpdmVMb2Nr IGhlcmUsIGJlY2F1c2UgdGhlc2UgbWVyZ2VkIHBhcnRpdGlvbnMgd2lsbCBiZQorCQkgKiBk ZXRhY2hlZCB0aGVuIGRyb3BwZWQgaW4gQVRFeGVjTWVyZ2VQYXJ0aXRpb25zLgorCQkgKi8K KwkJcGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChuYW1lLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCAwLAorCQkJCQkJCQkJCSAgIFJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRp b24sCisJCQkJCQkJCQkJICAgTlVMTCk7CisJCS8qIElzIGN1cnJlbnQgcGFydGl0aW9uIGEg REVGQVVMVCBwYXJ0aXRpb24/ICovCisJCWlmIChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lk KQorCQkJaXNEZWZhdWx0UGFydCA9IHRydWU7CisKKwkJLyoKKwkJICogRXh0ZW5kZWQgY2hl Y2sgYmVjYXVzZSB0aGUgc2FtZSBwYXJ0aXRpb24gY2FuIGhhdmUgZGlmZmVyZW50IG5hbWVz CisJCSAqIChmb3IgZXhhbXBsZSwgInBhcnRfbmFtZSIgYW5kICJwdWJsaWMucGFydF9uYW1l IikuCisJCSAqLworCQlmb3JlYWNoKGxpc3RwdHIyLCBwYXJ0T2lkcykKKwkJeworCQkJT2lk CQkJY3VyT2lkID0gbGZpcnN0X29pZChsaXN0cHRyMik7CisKKwkJCWlmIChjdXJPaWQgPT0g cGFydE9pZCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RV UExJQ0FURV9UQUJMRSksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIl c1wiIGlzIGFscmVhZHkgdXNlZCIsIG5hbWUtPnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1lLT5sb2NhdGlvbikpOworCQl9CisKKwkJY2hl Y2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lkKTsKKworCQlwYXJ0T2lkcyA9IGxhcHBlbmRf b2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBib3VuZCBvZiBy ZXN1bHRpbmcgcGFydGl0aW9uLiAqLworCUFzc2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxM KTsKKwlwYXJ0Y21kLT5ib3VuZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisK KwkvKiBGaWxsIHBhcnRpdGlvbiBib3VuZC4gKi8KKwlwYXJ0Y21kLT5ib3VuZC0+c3RyYXRl Z3kgPSBzdHJhdGVneTsKKwlwYXJ0Y21kLT5ib3VuZC0+bG9jYXRpb24gPSAtMTsKKwlwYXJ0 Y21kLT5ib3VuZC0+aXNfZGVmYXVsdCA9IGlzRGVmYXVsdFBhcnQ7CisJaWYgKCFpc0RlZmF1 bHRQYXJ0KQorCQljYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShwYXJlbnQs IHBhcnRjbWQtPnBhcnRsaXN0LAorCQkJCQkJCQkJCQlwYXJ0T2lkcywgcGFydGNtZC0+Ym91 bmQsCisJCQkJCQkJCQkJCWN4dC0+cHN0YXRlKTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUFs dGVyVGFibGVTdG10IC0KICAqCQlwYXJzZSBhbmFseXNpcyBmb3IgQUxURVIgVEFCTEUKQEAg LTM3ODYsNiArMzkxOCwyMCBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQs IEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMs IGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJ CXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQt PmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikK KwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJZXJybXNnKCJsaXN0IG9mIHBhcnRpdGlv bnMgdG8gYmUgbWVyZ2VkIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25z IikpOworCisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRj bWQpOworCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVh azsKKwkJCQl9CisKIAkJCWRlZmF1bHQ6CiAKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggODIyY2Y0ZWM0NS4uNjBjMTAzNmNlOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC00OTc4LDMgKzQ5NzgsMTk5 IEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdTKQogCiAJUEdf UkVUVVJOX0JPT0wocm93SGFzaCAlIG1vZHVsdXMgPT0gcmVtYWluZGVyKTsKIH0KKworLyoK KyAqIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZQorICoKKyAqIChmdW5jdGlv biBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5nKQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIg ZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisg KiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFu ZCBsb3dlciBib3VuZCBvZgorICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxk IGJlIGVxdWFsLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogZmly c3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCisgKiBmaXJzdF9ib3VuZDoJCWJv dW5kIG9mIGZpcnN0IHBhcnRpdGlvbgorICogc2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29u ZCBwYXJ0aXRpb24KKyAqIHNlY29uZF9ib3VuZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlv bgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVy bWluaW5nIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja190d29fcGFy dGl0aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFJhbmdl VmFyICpmaXJzdF9uYW1lLAorCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqZmlyc3Rf Ym91bmQsCisJCQkJCQkJCSAgUmFuZ2VWYXIgKnNlY29uZF9uYW1lLAorCQkJCQkJCQkgIFBh cnRpdGlvbkJvdW5kU3BlYyAqc2Vjb25kX2JvdW5kLAorCQkJCQkJCQkgIFBhcnNlU3RhdGUg KnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25L ZXkocGFyZW50KTsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpmaXJzdF91cHBlcjsKKwlQYXJ0 aXRpb25SYW5nZUJvdW5kICpzZWNvbmRfbG93ZXI7CisJaW50CQkJY21wdmFsOworCisJQXNz ZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWZp cnN0X3VwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBmaXJzdF9i b3VuZC0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKwlzZWNvbmRfbG93ZXIgPSBtYWtlX29uZV9w YXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMsIHRy dWUpOworCisJLyoKKwkgKiBsb3dlcjE9ZmFsc2UgKHRoZSBzZWNvbmQgdG8gbGFzdCBhcmd1 bWVudCkgZm9yIGNvcnJlY3QgY29tcGFyaXNvbiBvZgorCSAqIGxvd2VyIGFuZCB1cHBlciBi b3VuZHMuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0 bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBh cnRjb2xsYXRpb24sCisJCQkJCQkJCSAgc2Vjb25kX2xvd2VyLT5kYXR1bXMsIHNlY29uZF9s b3dlci0+a2luZCwKKwkJCQkJCQkJICBmYWxzZSwgZmlyc3RfdXBwZXIpOworCWlmIChjbXB2 YWwpCisJeworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpbml0aWFsKHNlY29u ZF9ib3VuZC0+bG93ZXJkYXR1bXMpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1zZygiY2Fu IG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uIFwi JXNcIiIsCisJCQkJCSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxu YW1lKSwKKwkJCQllcnJkZXRhaWwoImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIg aXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwK KwkJCQkJCSAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAor CQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVz IHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LiIpLAorCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCX0KK30KKworLyoKKyAq IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYworICoKKyAqIFJldHVybnMgdGhlIFBhcnRpdGlv bkJvdW5kU3BlYyBmb3IgdGhlIHBhcnRpdGlvbiB3aXRoIHRoZSBnaXZlbiBPSUQgcGFydE9p ZC4KKyAqLworc3RhdGljIFBhcnRpdGlvbkJvdW5kU3BlYyAqCitnZXRfcGFydGl0aW9uX2Jv dW5kX3NwZWMoT2lkIHBhcnRPaWQpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlk YXR1bTsKKwlib29sCQlpc251bGw7CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZHNwZWMg PSBOVUxMOworCisJLyogVHJ5IGZldGNoaW5nIHRoZSB0dXBsZSBmcm9tIHRoZSBjYXRjYWNo ZSwgZm9yIHNwZWVkLiAqLworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcGFy dE9pZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwgcGFydE9pZCk7CisKKwlk YXR1bSA9IFN5c0NhY2hlR2V0QXR0cihSRUxPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdf Y2xhc3NfcmVscGFydGJvdW5kLAorCQkJCQkJCSZpc251bGwpOworCWlmIChpc251bGwpCisJ CWVsb2coRVJST1IsICJwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICV1IGlzIG51bGwi LAorCQkJIHBhcnRPaWQpOworCisJYm91bmRzcGVjID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1 bUdldENTdHJpbmcoZGF0dW0pKTsKKworCWlmICghSXNBKGJvdW5kc3BlYywgUGFydGl0aW9u Qm91bmRTcGVjKSkKKwkJZWxvZyhFUlJPUiwgImV4cGVjdGVkIFBhcnRpdGlvbkJvdW5kU3Bl YyBmb3IgcmVsYXRpb24gJXUiLAorCQkJIHBhcnRPaWQpOworCisJUmVsZWFzZVN5c0NhY2hl KHR1cGxlKTsKKwlyZXR1cm4gYm91bmRzcGVjOworfQorCisvKgorICogY2FsY3VsYXRlX3Bh cnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UKKyAqCisgKiBDYWxjdWxhdGVzIHRoZSBib3VuZCBv ZiBtZXJnZWQgcGFydGl0aW9uICJzcGVjIiBieSB1c2luZyB0aGUgYm91bmRzIG9mCisgKiBw YXJ0aXRpb25zIHRvIGJlIG1lcmdlZC4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQg dGFibGUKKyAqIHBhcnROYW1lczoJCW5hbWVzIG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2Vk CisgKiBwYXJ0T2lkczoJCU9pZHMgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQKKyAqIHNw ZWMgKG91dCk6CQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlv bgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVy bWluZSBlcnJvciBwb3NpdGlvbgorICovCit2b2lkCitjYWxjdWxhdGVfcGFydGl0aW9uX2Jv dW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQlMaXN0ICpwYXJ0TmFt ZXMsCisJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJCQkJCVBhcnRpdGlvbkJvdW5k U3BlYyAqc3BlYywKKwkJCQkJCQkJCVBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRp b25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRp b25Cb3VuZFNwZWMgKmJvdW5kOworCisJQXNzZXJ0KCFzcGVjLT5pc19kZWZhdWx0KTsKKwor CXN3aXRjaCAoa2V5LT5zdHJhdGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZ X1JBTkdFOgorCQkJeworCQkJCWludAkJCWk7CisJCQkJUGFydGl0aW9uUmFuZ2VCb3VuZCAq Kmxvd2VyX2JvdW5kczsKKwkJCQlpbnQJCQlucGFydHMgPSBsaXN0X2xlbmd0aChwYXJ0T2lk cyk7CisJCQkJTGlzdAkgICAqYm91bmRzID0gTklMOworCisJCQkJbG93ZXJfYm91bmRzID0g KFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9m KFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCQkJLyoKKwkJCQkgKiBDcmVhdGUgYXJy YXkgb2YgbG93ZXIgYm91bmRzIGFuZCBsaXN0IG9mCisJCQkJICogUGFydGl0aW9uQm91bmRT cGVjLgorCQkJCSAqLworCQkJCWZvcmVhY2hfb2lkKHBhcnRvaWQsIHBhcnRPaWRzKQorCQkJ CXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMocGFydG9pZCk7CisJ CQkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgocGFydG9pZCk7CisKKwkJCQkJbG93ZXJf Ym91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIGksIGJvdW5kLT5s b3dlcmRhdHVtcywgdHJ1ZSk7CisJCQkJCWJvdW5kcyA9IGxhcHBlbmQoYm91bmRzLCBib3Vu ZCk7CisJCQkJfQorCisJCQkJLyogU29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJ CQkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFu Z2VCb3VuZCAqKSwKKwkJCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAsIGtleSk7 CisKKwkJCQkvKiBSYW5nZXMgb2YgcGFydGl0aW9ucyBzaG91bGQgYmUgYWRqYWNlbnQuICov CisJCQkJZm9yIChpID0gMTsgaSA8IG5wYXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJaW50CQkJ aW5kZXggPSBsb3dlcl9ib3VuZHNbaV0tPmluZGV4OworCQkJCQlpbnQJCQlwcmV2X2luZGV4 ID0gbG93ZXJfYm91bmRzW2kgLSAxXS0+aW5kZXg7CisKKwkJCQkJY2hlY2tfdHdvX3BhcnRp dGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwKKwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAq KSBsaXN0X250aChwYXJ0TmFtZXMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBh cnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAorCQkJ CQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAor CQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMs IGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJ CQkgKiBMb3dlciBib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24gaXMgdGhlIGxvd2VyIGJvdW5k IG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT5sb3dl cmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5k cywgbG93ZXJfYm91bmRzWzBdLT5pbmRleCkpLT5sb3dlcmRhdHVtczsKKworCQkJCS8qCisJ CQkJICogVXBwZXIgYm91bmQgb2YgbGFzdCBwYXJ0aXRpb24gaXMgdGhlIHVwcGVyIGJvdW5k IG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT51cHBl cmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5k cywgbG93ZXJfYm91bmRzW25wYXJ0cyAtIDFdLT5pbmRleCkpLT51cHBlcmRhdHVtczsKKwor CQkJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJCQkJbGlzdF9mcmVlKGJvdW5kcyk7CisJCQkJ YnJlYWs7CisJCQl9CisKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJCXsK KwkJCQkvKiBDb25zb2xpZGF0ZSBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBs aXN0LiAqLworCQkJCWZvcmVhY2hfb2lkKHBhcnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJ CQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMocGFydG9pZCk7CisJCQkJCXNw ZWMtPmxpc3RkYXR1bXMgPSBsaXN0X2NvbmNhdChzcGVjLT5saXN0ZGF0dW1zLCBib3VuZC0+ bGlzdGRhdHVtcyk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJ CQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJ CQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CmluZGV4IDYxNzY3NDFkMjAuLmVjOWIyYjFmY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKQEAgLTI3NjAsNiArMjc2MCw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0 ZXJuX2lkLAogCQkJCQkgICJPV05FUiBUTyIsICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlO VCIsCiAJCQkJCSAgIlJFUExJQ0EgSURFTlRJVFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJ CQkJCSAgIkRFVEFDSCBQQVJUSVRJT04iLCAiRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwK KwkJCQkJICAiTUVSR0UgUEFSVElUSU9OUyAoIiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7 CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQiKSkKQEAgLTMwMzMsNiArMzAzNCwxNSBAQCBt YXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIIiwgIlBBUlRJVElPTiIsIE1h dGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgiQ09OQ1VSUkVOVExZIiwgIkZJTkFMSVpFIik7 CiAKKwkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCisJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBB UlRJVElPTlMiLCAiKCIpKQorCXsKKwkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXY0 X3dkKTsKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlv bl9vZl90YWJsZSk7CisJfQorCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwg TWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigqKSIpKQorCQlDT01QTEVURV9X SVRIKCJJTlRPIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gT0YgKi8KIAllbHNlIGlm IChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiT0YiKSkKIAkJQ09NUExF VEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfY29tcG9zaXRlX2RhdGF0 eXBlcyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IDBlYTdjY2Y1MjQuLmY1 NDIzMzQ5OWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0xMDcsNiArMTA3 LDggQEAgZXh0ZXJuIHZvaWQgUmVsZWFzZURlbGV0aW9uTG9jayhjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QpOwogZXh0ZXJuIHZvaWQgcGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVj dEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCQlEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBm bGFncyk7CiAKK2V4dGVybiB2b2lkIHBlcmZvcm1EZWxldGlvbkNoZWNrKGNvbnN0IE9iamVj dEFkZHJlc3MgKm9iamVjdCwKKwkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50 IGZsYWdzKTsKIGV4dGVybiB2b2lkIHBlcmZvcm1NdWx0aXBsZURlbGV0aW9ucyhjb25zdCBP YmplY3RBZGRyZXNzZXMgKm9iamVjdHMsCiAJCQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2 aW9yLCBpbnQgZmxhZ3MpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYWMwZTAy YTFkYi4uYzJjZDMwNDNlMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtOTY1LDEz ICs5NjUsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogfSBQYXJ0 aXRpb25SYW5nZURhdHVtOwogCiAvKgotICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxU RVIgVEFCTEUvSU5ERVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZHMKKyAqIFBh cnRpdGlvbkNtZCAtIGluZm8gZm9yIEFMVEVSIFRBQkxFL0lOREVYIEFUVEFDSC9ERVRBQ0gg UEFSVElUSU9OIGFuZCBmb3IKKyAqCSAgQUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUyBj b21tYW5kcwogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFn CQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8g YXR0YWNoL2RldGFjaCAqLworCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0 aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJnZSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAq Ym91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworCUxpc3QJICAgKnBhcnRs aXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCwgdXNlZCBpbgorCQkJ CQkJCQkgKiBBTFRFUiBUQUJMRSBNRVJHRSBQQVJUSVRJT05TICovCiAJYm9vbAkJY29uY3Vy cmVudDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDc1LDYgKzI0NzgsNyBAQCB0eXBlZGVm IGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNI IFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElU SU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJ T04gRklOQUxJWkUgKi8KKwlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElU SU9OUyAqLwogCUFUX0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9T ZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCiAJQVRf RHJvcElkZW50aXR5LAkJCS8qIERST1AgSURFTlRJVFkgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApp bmRleCBhNGFmM2Y3MTdhLi45MGU4Y2RkZjhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0z MzcsNiArMzM3LDcgQEAgUEdfS0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJT RVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRp YWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKK1BHX0tFWVdPUkQoInBhcnRpdGlvbnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQi LCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCmluZGV4IDA4M2I2ZTNhODguLmY2ZmMx MGQzNDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQz LDQgKzE0MywxMCBAQCBleHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNo KEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNl YXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9k dWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRp b25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3Qg KnBhcnROYW1lcywKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJ UGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0 YXRlKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMv dGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41ZjY0NzI2NzFiCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQK QEAgLTAsMCArMSwyNDMgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUg czFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElU SU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFt b2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7Citz dGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6 IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJs ZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBp fHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8y MCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFy dF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAg Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJj IHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZB TFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJF R0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxU RVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEw XzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQ REFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0t Ky0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8w MF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0 cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAg ICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBz MWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVw IHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpB QkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMg KHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYn IHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz MnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwg MXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBf MjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBh cnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczJicnIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK K3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRB QkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkg SU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUg dHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSst LS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwgMXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAg IHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRf MjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAor KDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWJy ciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFy dCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJy OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6 IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFy dF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1 OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2Fp dGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVk Pgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAgICAgIAorLS0tLS0tLS0t LS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwgMXx0ZXh0MDFtb2RpZgordHBh cnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUgICAg IAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBhcnRfZGVmYXVsdHwzNXx0ZXh0 MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJp IHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0 ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFt ZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwg dHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVw IHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0rLS0rLS0tLS0tLS0tLS0KK3RwYXJ0XzAwXzIwICB8IDF8dGV4dDAxbW9kaWYK K3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1ICAgICAKK3RwYXJ0XzAwXzIwICB8MTV8dGV4dDE1 ICAgICAKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1ICAgICAKK3RwYXJ0X2RlZmF1bHR8MzV8 dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMg czJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVH SU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFS VElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOwor c3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0 MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7 CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAg fCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8w MF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0 cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAg ICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFj IHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsK K3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwg UkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdF IFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8y MDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAn dGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0 ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIg QlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQg ICAgIHwgaXx0ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBh cnRfMDBfMjAgIHwgMXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAg IAordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0 MjUgICAgIAordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitz dGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUg czFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTEla QUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZF TCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0Ug UEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIw Oworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0 ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAg ICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFy dF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAg Cit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQy NSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUyIHMx YyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6 IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElP TlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAg czJiOiBCRUdJTjsKK3N0ZXAgczJ1MjogVVBEQVRFIHRwYXJ0IFNFVCBpID0gMjEgd2hlcmUg aSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTI6IDwu Li4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2Ns YXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0t LS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNQordHBhcnRf MDBfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjF8dGV4dDAxCit0cGFydF8yMF8z MCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydTMg czFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElU SU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMnUzOiBVUERBVEUgdHBhcnQgU0VUIGkgPSAxMSB3aGVy ZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1Mzog PC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVn Y2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAor LS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1Cit0cGFy dF8wMF8yMCAgfDExfHRleHQwMQordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIw XzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykKKwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggNWFmYWUzM2QzNy4u ODU0MTU0NjY3OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9z Y2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBA IC0xMTAsNiArMTEwLDcgQEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMQogdGVzdDog cGFydGl0aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMwog dGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtNAordGVzdDogcGFydGl0aW9uLW1lcmdlCiB0 ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVz dGVyLWNvbmZsaWN0LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9u L3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L3BhcnRpdGlvbi1tZXJnZS5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLmYzYzVjZTJmYmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKQEAgLTAsMCArMSw2MiBAQAorIyBWZXJp ZnkgdGhhdCBNRVJHRSBvcGVyYXRpb24gbG9ja3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBwYXJ0 aXRpb25lZCB0YWJsZQorCitzZXR1cAoreworICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cGFy dDsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRleHQpIHBhcnRpdGlvbiBieSBy YW5nZShpKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0cGFy dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8x MF8yMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsK KyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFM VUVTIEZST00gKDIwKSBUTyAoMzApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQ QVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICg1LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0ZXh0 MTUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwgJ3RleHQyNScpOworICBJ TlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJkb3du Cit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsg QkVHSU47IH0KK3N0ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEOyB9CitzdGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpB QkxFOyB9CitzdGVwIHMxbWVyZwl7IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElP TlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsgfQorc3Rl cCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVwIHMyYgl7IEJFR0lOOyB9 CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsg fQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQor c3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgfQor c3RlcCBzMnUJeyBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkg PSAxOyB9CitzdGVwIHMydTIJeyBVUERBVEUgdHBhcnQgU0VUIGkgPSAyMSB3aGVyZSBpID0g MTsgfQorc3RlcCBzMnUzCXsgVVBEQVRFIHRwYXJ0IFNFVCBpID0gMTEgd2hlcmUgaSA9IDE7 IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRl eHQgQ09MTEFURSAiQyIsIGk7IH0KKworCisjIHMyIGluc2VydHMgcm93IGludG8gdGFibGUu IHMxIHN0YXJ0cyBNRVJHRSBQQVJUSVRJT05TIHRoZW4KKyMgczIgaXMgdHJ5aW5nIHRvIHVw ZGF0ZSBpbnNlcnRlZCByb3cgYW5kIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVzCisjIE1FUkdF IG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIg czJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcg czJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFicyBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMx YiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMy YyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIg czJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9u IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0 aW9uIHMyYnMgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVy bXV0YXRpb24gczJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK KworIyBUdXBsZSByb3V0aW5nIGJldHdlZW4gcGFydGl0aW9ucy4KK3Blcm11dGF0aW9uIHMy YiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydTIgczFjIHMyYyBzMnMKKworIyBUdXBsZSBy b3V0aW5nIGJldHdlZW4gbWVyZ2luZyBwYXJ0aXRpb25zLgorcGVybXV0YXRpb24gczJiIHMy aSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1MyBzMWMgczJjIHMycwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91 dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90 YWJsZS5vdXQKaW5kZXggNTBkMDM1NGEzNC4uYzQwM2MyZjU2OSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91 dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0 ZXJfdGFibGUub3V0CkBAIC01Niw2ICs1NiwxMSBAQCBBTFRFUiBUQUJMRSBwYXJ0IERFVEFD SCBQQVJUSVRJT04gcGFydDI7CiBOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJs ZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgREVUQUNI IFBBUlRJVElPTiBkZXNjIHRhYmxlIHBhcnQyCiBEUk9QIFRBQkxFIHBhcnQyOworQ1JFQVRF IFRBQkxFIHBhcnQyIFBBUlRJVElPTiBPRiBwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0 byAoMjAwKTsKK05PVElDRTogIERETCB0ZXN0OiB0eXBlIHNpbXBsZSwgdGFnIENSRUFURSBU QUJMRQorQUxURVIgVEFCTEUgcGFydCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIp IElOVE8gcGFydDE7CitOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFn IEFMVEVSIFRBQkxFCitOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgTUVSR0UgUEFSVElU SU9OUyBkZXNjIDxOVUxMPgogQUxURVIgVEFCTEUgcGFydCBBREQgUFJJTUFSWSBLRVkgKGEp OwogTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJM RQogTk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIEFERCBDT05TVFJBSU5UIChhbmQgcmVj dXJzZSkgZGVzYyBjb25zdHJhaW50IHBhcnRfYV9ub3RfbnVsbCBvbiB0YWJsZSBwYXJ0CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVy X3RhYmxlLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0 ZXJfdGFibGUuc3FsCmluZGV4IDlhZDFjZjkwOGQuLjMxZTY5MTAwYTMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3Fs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFi bGUuc3FsCkBAIC0zNSw2ICszNSw5IEBAIEFMVEVSIFRBQkxFIHBhcnQgQVRUQUNIIFBBUlRJ VElPTiBwYXJ0MiBGT1IgVkFMVUVTIEZST00gKDEwMSkgdG8gKDIwMCk7CiBBTFRFUiBUQUJM RSBwYXJ0IERFVEFDSCBQQVJUSVRJT04gcGFydDI7CiBEUk9QIFRBQkxFIHBhcnQyOwogCitD UkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9GIHBhcnQgRk9SIFZBTFVFUyBGUk9NICgx MDApIHRvICgyMDApOworQUxURVIgVEFCTEUgcGFydCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0 MSwgcGFydDIpIElOVE8gcGFydDE7CisKIEFMVEVSIFRBQkxFIHBhcnQgQUREIFBSSU1BUlkg S0VZIChhKTsKIAogQUxURVIgVEFCTEUgcGFyZW50IEFMVEVSIENPTFVNTiBhIFNFVCBOT1Qg TlVMTDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90 ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uv dGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDE5MzY2OWYyYmMuLjdkZTVkZGI4NzggMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBh cnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5Niw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGlu Zm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxp emU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJ CQkJYnJlYWs7CisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQlzdHJ0eXBlID0g Ik1FUkdFIFBBUlRJVElPTlMiOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9BZGRJZGVudGl0 eToKIAkJCQlzdHJ0eXBlID0gIkFERCBJREVOVElUWSI7CiAJCQkJYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uM2U0MGFiZjM4YQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApA QCAtMCwwICsxLDEwOTcgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBm b3IgIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0K K0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1B IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5n CistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8g KCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAy Mi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRp b24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVz X21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOwor RVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5 IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBz YWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2Fs ZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2Fw cjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICAic2FsZXNfYXBy MjAyMiIgaXMgbm90IGEgdGFibGUKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFS VElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRp dGlvbnMKKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNhbGVzX21hcjIw MjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorLS0gREVUQUlM OiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1 YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0t IChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIw MjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19q YW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworRVJST1I6 ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0 aCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LgorLS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNf amFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSBE RVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5v dCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIx IgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNf amFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNf ZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2Fs ZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitE RVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5v dCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIx IgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRo ZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBwYXJ0aXRp b24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVz X21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8g c2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJz YWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVz X21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXByXzI7CitFUlJPUjogIHJl bGF0aW9uICJzYWxlc19hcHJfMiIgYWxyZWFkeSBleGlzdHMKK0NSRUFURSBWSUVXIGphbjIw MjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIp IElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBjYW5ub3QgZHJvcCB0YWJs ZSBzYWxlc19qYW4yMDIyIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RF VEFJTDogIHZpZXcgamFuMjAyMnYgZGVwZW5kcyBvbiB0YWJsZSBzYWxlc19qYW4yMDIyCitI SU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVj dHMgdG9vLgorRFJPUCBWSUVXIGphbjIwMjJ2OworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1 c3RvbSBwYXJ0aXRpb25zIG9yZGVyLCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4gdGhlIHNl YXJjaF9wYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIs IHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMgKAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxl c19mZWIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19tYXIyMDIyLAor ICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2ph bl9mZWJfbWFyMjAyMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLCBwdWJsaWM7CitQUkVQQVJFIGdldF9wYXJ0aXRpb25faW5mbyhyZWdjbGFzc1tdKSBB UworU0VMRUNUICBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywKKyAgICAgICAgYy5yZWxw ZXJzaXN0ZW5jZSwKKyAgICAgICAgYy5yZWxraW5kLAorICAgICAgICBpLmluaGRldGFjaHBl bmRpbmcsCisgICAgICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKQorRlJPTSAgICBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdf aW5oZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50 ID0gQU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRi b3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLAorICAgICAgICAgYy5vaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiOworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19y YW5nZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAgICAgICAg ICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAg ICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBU TyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicp Cisgc2FsZXNfZGVjMjAyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAg ICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVT IEZST00gKCcxMi0wMS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxlc19vdGhlcnMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg0IHJvd3MpCisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0 YWJsZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jh bmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAg ICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAor ICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1w JywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyks CisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCBwZ19j YXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzKTsKKyBw Z19nZXRfcGFydGtleWRlZiAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJBTkdFIChzYWxl c19kYXRlKQorKDEgcm93KQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25z OgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAgICAg IG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGlu ZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1 LTAxLTIwMjInKQorIHNhbGVzX2ZlYjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRP ICgnMDMtMDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIy JykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIyIHwgcCAgICAgICAgICAgICAg fCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAx LTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAg ICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykK KworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIy MDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBzaG93IHBhcnRpdGlvbnMg d2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19y YW5nZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAgICAgICAg ICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAg ICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBU TyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicp Cisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAg ICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCiso MyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0g J3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyJzsKKyAgICAgICAgc2NoZW1hbmFtZSAgICAgICAgfCAgICAgICB0YWJs ZW5hbWUgICAgICAgfCAgICAgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICAgICAgfCB0 YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYTIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19mZWJf bWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVY IHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKQorKDEgcm93KQorCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVvaWQgICAgICAg ICAgICAgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAg IDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAg ICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy CisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAg ICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4 LTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIy IHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwg MDItMjMtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2Fw cjIwMjIgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwMy0xMS0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9t YXJfYXByMjAyMiB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNf ZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAg ICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAg ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5k aSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVy cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8 IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93 cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxl X3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxl c19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19mZWJf bWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggb24gc2FsZXNfZmViX21hcl9hcHIyMDIyCisg ICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2Zl Yl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAg ICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwg RXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAg ICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIy CisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2 ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0z MC0yMDIyCisoMTAgcm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFV TFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVY IHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwg ICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywg NTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0w NC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIy LTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAg KDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXIn LCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIw MjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAor ICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRo JywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1 ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0t IG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNh bGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNh bGVzX290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290 aGVycyBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEt MzEtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0y MDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDcgcm93cykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29u ZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7 CisgICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFj aHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykg VE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIw MjInKSBUTyAoJzAzLTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21w b3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAq IGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2Rh dGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxl c19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkg R0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcw JykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8 IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFy dG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1Ig VkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZS T00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19m ZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwg MiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJ VElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1B WFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShz YWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIw MjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIx JywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5h Z2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgn TWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGU7CisgICB0YWJs ZW9pZCAgICB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGgg fCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2Rl YzIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwg ICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMy MDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAg ICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAy MiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIg fCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAg ICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1h bmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEg fCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5h Z2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwg MjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIw MjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIy LjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworQUxURVIgVEFCTEUgc2Fs ZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIy KSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxl c3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxV RVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIs IDIsIDEwKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRl OworICAgICB0YWJsZW9pZCAgICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIg fCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRt ZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHNhbGVzX2RlYzIwMjIgICAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAg IDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBk ZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMiAgICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAg ICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVz IGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEu MTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMiAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4w Mi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIx ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIy LjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIw MjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5h Z2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwg MjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRp b25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl KHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAg UEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDMw KSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJv dCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmln Z2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JF R0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwg d2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19M RVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VS IHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVS IElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisg ICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Bl b3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1Ig RUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJv dyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAn TWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9 IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihz YWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2 ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitO T1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwg d2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2Fs ZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworLS0gMiB0cmlnZ2VycyBz aG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVz cGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9 IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJ TlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBz aG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBW QUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2Fs bGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVD VCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9w bGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEwIHwgTWF5Cisg ICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisg ICAgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCist LSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04g T0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRl IHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJ TUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJ TlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWlybm9mZicpOwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1BvcG92 Jyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1OIGQxOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Bl b3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQw IEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0Zv cmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz cGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8g c2FsZXNwZW9wbGUxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorICAgICAgICAgICAgIDE5 IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAyMCB8IFNt aXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAgICAgICAgIDMwIHwgRm9y ZAorKDYgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworc2Vs ZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAgICAg ICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAgICAg ICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworLS0K Ky0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jh bmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAg ICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAor ICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1w JywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyks CisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJs ZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICB0 YWJsZW9pZCAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgc2FsZXNfYXByMjAyMl8wMV8xMCB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzAx XzEwIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgw IHwgMDQtMDYtMjAyMgorIHNhbGVzX2FwcjIwMjJfMTBfMjAgfCAgICAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNf YXByMjAyMl8yMF8zMCB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAg ICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVz X2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNf YXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxs OworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNv bl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0y MDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHJfYWxsIHwgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNU IHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZ IExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxl c3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNh bGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1Qg KHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hl bHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworQ1JFQVRFIFRBQkxFIHNh bGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19z dGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtp Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dDIgREVGQVVMVDsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19s aXN0KTsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsK Ky0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFy dGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFs KSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBw YXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitISU5UOiAgQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9u cyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCistLSBFUlJPUjogICJzYWxlc19leHRlcm5h bDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlz dCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2Vz dCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9S OiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVk IHRhYmxlICJzYWxlc19saXN0IgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJU SVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0 aW9ucworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRp dGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3Qp IElOVE8gc2FsZXNfYWxsOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5v dCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBU QUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRv bid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyOwor RFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDI7CitE Uk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25p bmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElU WSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNI QVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElU SU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3Nh bGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVy c29uX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9O IHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xv JywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf d2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBE RUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAn LCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJu b2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3Jk JywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZh bm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0Rl ZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQ b2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgn TWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAo J0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAg KCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisg ICgnSGFsZGVyJywgICAnT3NsbycsICAgICAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAor ICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwK KyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyks CisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcp LAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUn KTsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9w YXJ0aXRpb25faW5mbygne3NhbGVzX2xpc3R9Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBl cnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBz YWxlc19jZW50cmFsIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKQorIHNh bGVzX2Vhc3QgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycp Cisgc2FsZXNfbm9yZCAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdI ZWxzaW5raScpCisgc2FsZXNfd2VzdCAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcpCisgc2FsZXNfb3RoZXJzICB8IHAgICAgICAgICAgICAgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3Qs IHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworLS0gc2hvdyBwYXJ0aXRpb25zIHdp dGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlz dH0nKTsKKyAgICAgb2lkICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhk ZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYWxsICAgIHwgcCAgICAgICAg ICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycsICdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKQorIHNhbGVzX25vcmQgICB8 IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpCisgc2FsZXNf b3RoZXJzIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IERFRkFVTFQKKygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJP TSBzYWxlc19saXN0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgc2FsZXNwZXJzb25faWQ7CisgIHRhYmxlb2lkICB8IHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNh bGVzX2FsbCAgfCAgICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcg ICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19hbGwgIHwgICAg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlvcmsgICAgICAgfCAgICAg ICAgICA1MDAgfCAwMy0wMy0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMt MDQtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyBzYWxl c19hbGwgIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgQmVybGluICAg ICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAg ICAgICAgICA4IHwgTGkgICAgICAgICAgICAgICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAg ICAxMTUwIHwgMDMtMDktMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAxMSB8IE11 bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1 LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAg IHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgc2FsZXNf YWxsICB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAg ICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAg IDk1MCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0y MDIyCisgc2FsZXNfbm9yZCB8ICAgICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8 IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorIHNhbGVzX25v cmQgfCAgICAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5raSAgICAg ICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAg ICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgICA4 MDAgfCAwMy0wMi0yMDIyCisoMTQgcm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVz dGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFz Y2FuID0gT0ZGOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fs bCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2Fu IHVzaW5nIHNhbGVzX2FsbF9zYWxlc19zdGF0ZV9pZHggb24gc2FsZXNfYWxsCisgICBJbmRl eCBDb25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fy c2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0 ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwg ICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAg ICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIg cm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Qg V0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYWxsX3NhbGVzX3N0YXRlX2lkeCBv biBzYWxlc19hbGwgc2FsZXNfbGlzdAorICAgSW5kZXggQ29uZDogKChzYWxlc19zdGF0ZSk6 OnRleHQgPSAnV2Fyc2F3Jzo6dGV4dCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0y MDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAg fCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1l ID0gJ0l2YW5vdic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2Fs ZXNfYWxsX3NhbGVzcGVyc29uX25hbWVfaWR4IG9uIHNhbGVzX2FsbCBzYWxlc19saXN0XzEK KyAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZh bm92Jzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHNhbGVzX25vcmQgc2Fs ZXNfbGlzdF8yCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6 OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBzYWxlc19ub3JkX3NhbGVzcGVyc29uX25hbWVfaWR4CisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQp CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBzYWxlc19vdGhlcnMgc2FsZXNfbGlzdF8z CisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAn SXZhbm92Jzo6dGV4dCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBzYWxl c19vdGhlcnNfc2FsZXNwZXJzb25fbmFtZV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKygxMSBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFt ZSA9ICdJdmFub3YnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3 ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisoMSByb3cpCisKK1JFU0VUIGVu YWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRyeSB0byBN RVJHRSBwYXJ0aXRpb25zIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQx IChpIGludCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBi KTsKK0NSRUFURSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00g KDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFS VElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0 MiBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkg aW50LCB0IHRleHQpOworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFy dGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElP TlMgKHQxcDEsIHQycGEpIElOVE8gdDJwOworRVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAu Li4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhh dmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgInQzIiBpcyBub3QgYSBwYXJ0aXRpb24g b2YgcGFydGl0aW9uZWQgdGFibGUgInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElU SU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOworRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRp dGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAidDIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZl IHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1Ag VEFCTEUgdDE7CistLQorLS0gQ2hlY2sgdGhlIHBhcnRpdGlvbiBpbmRleCBuYW1lIGlmIHRo ZSBwYXJ0aXRpb24gbmFtZSBpcyB0aGUgc2FtZSBhcyBvbmUKKy0tIG9mIHRoZSBtZXJnZWQg cGFydGl0aW9ucy4KKy0tCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIFBSSU1BUlkgS0VZKGkp KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8x XzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDUkVBVEUg SU5ERVggdGlkeCBPTiB0KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cF8xXzIsIHRwXzBfMSkgSU5UTyB0cF8xXzI7CistLSBJbmRleG5hbWUgdmFsdWVzIHNob3Vs ZCBiZSAndHBfMV8yX3BrZXknIGFuZCAndHBfMV8yX2lfaWR4Jy4KK1xkKyB0cF8xXzIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LnRwXzFfMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorUGFydGl0 aW9uIGNvbnN0cmFpbnQ6ICgoaSBJUyBOT1QgTlVMTCkgQU5EIChpID49IDApIEFORCAoaSA8 IDIpKQorSW5kZXhlczoKKyAgICAidHBfMV8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAo aSkKKyAgICAidHBfMV8yX2lfaWR4IiBidHJlZSAoaSkKK05vdC1udWxsIGNvbnN0cmFpbnRz OgorICAgICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorCitEUk9Q IFRBQkxFIHQ7CistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5 IHRhYmxlLgorLS0KK0JFR0lOOworU0hPVyBzZWFyY2hfcGF0aDsKKyAgICAgICAgICAgc2Vh cmNoX3BhdGggICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYworKDEgcm93KQorCitDUkVBVEUg VEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBPTiBDT01NSVQg RFJPUDsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBURU1QIFRBQkxF IHRwXzJfMyBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKTsKK0NS RUFURSBURU1QIFRBQkxFIHRwXzNfNCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDMpIFRPICg0KTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwXzBfMiwgdHBfMl8zKSBJTlRPIHBnX3RlbXAudHBfMF8zOworLS0gUGFydGl0 aW9uIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygn e3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNo cGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0cF8wXzMgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMykKKyB0cF8zXzQg fCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgzKSBUTyAoNCkKKygyIHJvd3MpCisKKy0tIEVSUk9SOiAgY2Fubm90IGNy ZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJl bGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzMsIHRw XzNfNCkgSU5UTyB0cF8wXzQ7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQg cmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiAidCIKK1JPTExC QUNLOworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0 aW9ucy4KKy0tCitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6 cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVy c2lzdGVuY2UgCistLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdCAgIHwgcAorKDEgcm93KQor CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVy c2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRf ZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSkKKyB0cF8xXzIgfCBwICAgICAgICAgICAgICB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygy IHJvd3MpCisKK1NBVkVQT0lOVCBzOworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3Rl bnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJP UjogIGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9m IHBlcm1hbmVudCByZWxhdGlvbiAidCIKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzOworU0VU IHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENh bid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRp dGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikg SU5UTyBwZ190ZW1wLnRwXzBfMjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFy eSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorUk9M TEJBQ0s7CitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVyc2lz dGVuY2UgCistLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdCAgIHwgdAorKDEgcm93KQorCitF WEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lz dGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhw ciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCB0 ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSkKKyB0cF8xXzIgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJv d3MpCisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190 ZW1wLCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRv IGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3JlYXRl IGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRp b24gInQiCitST0xMQkFDSzsKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlvbl9pbmZvOworLS0g Q2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVzcGFjZQor U0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NS RUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVD VCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVu YW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21l cmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNw YWNlIENPTExBVEUgIkMiOworIHRhYmxlbmFtZSB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNw YWNlCisgdHBfMF8yICAgIHwgcmVncmVzc190YmxzcGFjZQorKDIgcm93cykKKworU0VMRUNU IHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBX SEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFURSAi QyIsIGluZGV4bmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xMQVRFICJDIjsKKyB0 YWJsZW5hbWUgfCAgaW5kZXhuYW1lICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtl eSAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMiAgICB8IHRwXzBfMl9wa2V5IHwg cmVncmVzc190YmxzcGFjZQorKDIgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sg dGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhv ZAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsK K0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxF IEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9uc19tZXJnZV9oZWFwOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1l CitGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hF UkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8wXzInOjpyZWdjbGFzcykKK09SREVS IEJZIGMucmVsbmFtZSBDT0xMQVRFICJDIjsKKyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAg ICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICB8 IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorIHRwXzBfMiAgfCBwYXJ0aXRpb25zX21lcmdlX2hl YXAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0 aXRpb25zX21lcmdlX2hlYXA7CistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVz ZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdp bmcgcGFydGl0aW9ucyB0byBkbyB0aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEg VE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1B IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf YWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7 CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRh YmxlIHQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHQKK1JFU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2Yg dGFibGUgdHBfMF8xCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0 cF8wXzEKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzBf MSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIEVSUk9SOiAg bXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8xXzIKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJl IG93bmVyIG9mIHRhYmxlIHRwXzFfMgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwor QUxURVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf Ym9iOworLS0gT2s6CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0RS T1AgVEFCTEUgdDsKKy0tIFRlc3Q6IHdlIGNhbid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBk aWZmZXJlbnQgb3duZXJzCitDUkVBVEUgVEFCTEUgdHBfMF8xKGkgaW50KTsKK0FMVEVSIFRB QkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NS RUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOworQUxURVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRP IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElP TiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFU VEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0g T3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlJzoKK1xkdCB0cF8wXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAg ICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVy ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYSB8IHRwXzBfMSB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxp Y2UKKygxIHJvdykKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv Yic6CitcZHQgdHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg dGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAg ICAgICAgICAgT3duZXIgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2IKKygxIHJvdykKKworLS0gRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1l cmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBwYXJ0aXRpb25z IGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0RST1AgVEFCTEUgdDsKK1JF Vk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0RS T1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVk IHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOwor Q1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVM VVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworLS0gRVJST1I6ICBw YXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkCitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSwgdHAyKSBJTlRPIHRwMzsKK0VS Uk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1l cmdlZAorLS0gRVJST1I6ICBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIHNob3Vs ZCBpbmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSB0IE1FUkdF IFBBUlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7CitFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9u cyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMK K0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGll czoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5Cist LSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQg dGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRp b25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2Ft ZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQor LS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVk IHRhYmxlCitcc2V0IEhJREVfVE9BU1RfQ09NUFJFU1NJT04gZmFsc2UKK0NSRUFURSBUQUJM RSB0CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJF U1NJT04gcGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBH RU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZ IFJBTkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKK0NS RUFURSBUQUJMRSB0cF8wXzEKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBN QUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMF8xJywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VO RVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDItMDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUg dCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsK K0NPTU1FTlQgT04gQ09MVU1OIHRwXzBfMS5pIElTICd0cF8wXzEuaSc7CitDUkVBVEUgVEFC TEUgdHBfMV8yCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZB VUxUICdkZWZhdWx0X3RwXzFfMicsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBB TFdBWVMgYXMgKCcyMDIyLTAzLTAzJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNI IFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDT01NRU5U IE9OIENPTFVNTiB0cF8xXzIuaSBJUyAndHBfMV8yLmknOworQ1JFQVRFIFNUQVRJU1RJQ1Mg dF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJ Q1MgdHBfMF8xX3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzBfMTsKK0NS RUFURSBTVEFUSVNUSUNTIHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJv bSB0cF8xXzI7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVD SyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENI RUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlO VCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBB REQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CitJTlNFUlQgSU5U TyB0cF8wXzEoaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8g dHBfMV8yKGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VB R0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dl ciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdW WzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7Cisk Qk9EWSQ7CitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVG T1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmln Z2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF8wXzFfYmVmb3JlX2luc2Vy dF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJyk7CitDUkVBVEUg VFJJR0dFUiB0cF8xXzJfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJU IE9OIHRwXzFfMiBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9m dW5jdGlvbigndHBfMV8yJyk7CitcZCsgdHBfMF8xCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdl X3NjaGVtYS50cF8wXzEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAg fCBTdG9yYWdlIHwgQ29tcHJlc3Npb24gfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIHwgdHBfMF8xLmkKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAnZGVmYXVsdF90cF8wXzEnOjp0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAg ICB8IG1haW4gICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8 IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQg fCBwbGFpbiAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBv ZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6 ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8 IDEpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAw KQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0 X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorU3RhdGlzdGljcyBvYmplY3Rz OgorICAgICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzFfc3RhdCIgKGRlcGVuZGVu Y2llcykgT04gaSwgYiBGUk9NIHRwXzBfMQorTm90LW51bGwgY29uc3RyYWludHM6CisgICAg InRwXzBfMV9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9i X25uIiBOT1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAg ICB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBP TiBUQUJMRSB0CisgICAgdHBfMF8xX2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JF IElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jdGlvbigndHBfMF8xJykKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzE7CitcZCsgdHBfMF8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxh dGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAg ICAgICAgICAgICAgfCBTdG9yYWdlICB8IENvbXByZXNzaW9uIHwgU3RhdHMgdGFyZ2V0IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisg aSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICAgIHwgCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBleHRlbmRlZCB8IHBnbHogICAgICAgIHwgICAgICAgICAgICAgIHwgCisg YiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAxLTAxLTIwMjInOjpkYXRl KSBzdG9yZWQgfCBwbGFpbiAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCitQ YXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBj b25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5E IChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENI RUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JD RUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK05vdC1udWxs IGNvbnN0cmFpbnRzOgorICAgICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJp dGVkKQorICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQK K1RyaWdnZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5T RVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1 bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxV RVMoMSwgREVGQVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9u ID0gSU5TRVJULCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKKyB0YWJsZW9pZCB8IGkgfCAgICAg ICB0ICAgICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tCisgdHBfMF8xICAgfCAwIHwgZGVmYXVsdF90cF8w XzEgfCAxIHwgMDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRfdHBfMV8yIHwg MiB8IDAxLTAxLTIwMjIKKyB0cF8wXzEgICB8IDEgfCBkZWZhdWx0X3QgICAgICB8IDMgfCAw MS0wMS0yMDIyCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRy aWdnZXJfZnVuY3Rpb24oKTsKK1xzZXQgSElERV9UT0FTVF9DT01QUkVTU0lPTiB0cnVlCist LSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29u c3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04g QlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVF UyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0 X2ZrIFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQg dF9ma19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRw XzBfMjsKKy0tIFNob3VsZCBiZSBOT1QgVkFMSUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgor ICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMiIKKyBDb2x1bW4g fCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK0luZGV4ZXM6CisgICAgInRwXzBfMl9wa2V5IiBQ UklNQVJZIEtFWSwgYnRyZWUgKGkpCitSZWZlcmVuY2VkIGJ5OgorICAgIFRBQkxFICJ0X2Zr IiBDT05TVFJBSU5UICJ0X2ZrX2lfZmtleSIgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMg dChpKSBOT1QgVkFMSUQKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIK K0FMVEVSIFRBQkxFIHRfZmsgVkFMSURBVEUgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleTsKK0VS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitERVRBSUw6ICBLZXkgKGkpPSgyKSBp cyBub3QgcHJlc2VudCBpbiB0YWJsZSAidCIuCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRB QkxFIHQ7CistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgZW5mb3JjZWQgZm9y ZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZ KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8x XzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQg SU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJ TlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQURE IENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBO T1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNob3VsZCBiZSBOT1QgRU5GT1JDRUQgRk9SRUlH TiBLRVkKK1xkIHRwXzBfMgorICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LnRwXzBfMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitQ YXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK0luZGV4ZXM6Cisg ICAgInRwXzBfMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGkpCitSZWZlcmVuY2VkIGJ5 OgorICAgIFRBQkxFICJ0X2ZrIiBDT05TVFJBSU5UICJ0X2ZrX2lfZmtleSIgRk9SRUlHTiBL RVkgKGkpIFJFRkVSRU5DRVMgdChpKSBOT1QgRU5GT1JDRUQKKworLS0gRVJST1I6ICBpbnNl cnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlO VCB0X2ZrX2lfZmtleSBFTkZPUkNFRDsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0 YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2Zr ZXkiCitERVRBSUw6ICBLZXkgKGkpPSgyKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidCIu CitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZvciByZWNvbXB1 dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChp IGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVk KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8x XzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBU QUJMRSB0IEFERCBDT05TVFJBSU5UIGNjIENIRUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7 CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1 c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQg ZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVD VCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRh Yl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCiso MSByb3cpCisKKy0tICJ0YWJfaWQiIGNvbHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4p IHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUgcmVxdWlyZXMKKy0tIHJlY29tcHV0YXRpb24g aGVyZS4KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRp ZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRl bnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVS RSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0g MSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB0 OworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRlciBvZiBj b2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9ucykuCitDUkVB VEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJs ZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8x IChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50 KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsg dGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElP TiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSB0IEFU VEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxU RVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNL IChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoNSksICgxNSk7CitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzEsIHRwXzIpIElOVE8gdHBfMTI7CitJTlNFUlQg SU5UTyB0IFZBTFVFUyAoMTYpOworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAi dHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRfaV9jaGVjayIKK0lOU0VSVCBJ TlRPIHQgVkFMVUVTICgwKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEy IiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hlY2siCitERVRBSUw6ICBGYWls aW5nIHJvdyBjb250YWlucyAoMCwgdmlydHVhbCkuCistLSBTaG91bGQgYmUgMyByb3dzOiAo NSksICgxNSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKyBpICAKKy0t LS0KKyAgNQorIDE1CisgMTYKKygzIHJvd3MpCisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2Ug Zm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxlb2lkKSA9ICg1ICsgdGFibGVvaWQp ICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAo U0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOworIGNvdW50IAorLS0tLS0tLQor ICAgICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOwor LS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworRFJPUCBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKaW5kZXggZmJmZmM2N2FlNi4uMmQzZjUwYTQzYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCkBAIC0xMjMsNyArMTIzLDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0 IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNp b24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2Ug bmVlZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0t LS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25z IGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZv IHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXpl IHN0YXRzIHByZWRpY2F0ZSBudW1hCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9u X2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBh cnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29t cHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEK IAogIyBldmVudF90cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVu IGNvbmN1cnJlbnRseSB3aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLmZmYjQ5ODYxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCkBAIC0wLDAgKzEsNzkxIEBA CistLQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAu Li4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCist LSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0z MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUg VEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy XzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBB UlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdp dGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIy MDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVS Uk9SOiAgInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIy LCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9S OiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdp dGggcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorLS0gREVUQUlMOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVu IHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19t YXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworLS0gRVJST1I6ICBjYW4gbm90IG1l cmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjEiCistLSBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2Fs ZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVz X2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworLS0gRVJST1I6ICBwYXJ0 aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNh bGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElO VE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFk eSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNf YXByXzI7CisKK0NSRUFURSBWSUVXIGphbjIwMjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNf amFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIy OworRFJPUCBWSUVXIGphbjIwMjJ2OworCistLSBOTyBFUlJPUjogdGVzdCBmb3IgY3VzdG9t IHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0aXRpb25zIG5vdCBpbiB0aGUgc2VhcmNo X3BhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMiwgcHVi bGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfcmFuZ2Ug TUVSR0UgUEFSVElUSU9OUyAoCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2Zl YjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21hcjIwMjIsCisgIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfamFuX2Zl Yl9tYXIyMDIyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEs IHB1YmxpYzsKKworUFJFUEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3NbXSkgQVMK K1NFTEVDVCAgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAgIGMucmVscGVy c2lzdGVuY2UsCisgICAgICAgIGMucmVsa2luZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5k aW5nLAorICAgICAgICBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBj Lm9pZCkKK0ZST00gICAgcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2lu aGVyaXRzIGkKK1dIRVJFICAgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9 IEFOWSgkMSkKK09SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSA9ICdERUZBVUxUJywKKyAgICAgICAgIGMub2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIjsKKworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19y YW5nZX0nKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEFkZCByb3dz IGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19k YXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAs ICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAn KSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJ dmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUw LCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0x MScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAg J0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAy NTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAx LTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEy LCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAg IDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjIt MDUtMDQnKTsKKworU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVz X3JhbmdlJzo6cmVnY2xhc3MpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRp b25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKwor LS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIy LCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3 aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3Jh bmdlfScpOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0g J3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyJzsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJD Iiwgc2FsZXNwZXJzb25faWQ7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5k ZXhlcworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJf YXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJP TSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJl IHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRp b25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFu Z2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAo MiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAg ICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAy Mi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisg ICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAg ICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcy MDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwK KyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVt cCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAg JzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp LAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKKy0tIE1lcmdl IHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9u IHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdF IFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CisKK1NF TEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIE9SREVSIEJZIHNhbGVzcGVyc29uX2lkOworCist LSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0 aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK KworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5Owor LS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2 YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5 IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisg ICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxl c19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQs IDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZB VUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2Rl YzIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAx MiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAo MjAyMiwgMiwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAx KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBG T1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1B WFZBTFVFKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2Vy MScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdN YW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisg ICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEp LAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAz LCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0 ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRP IHNhbGVzX2phbl9mZWIyMDIyOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVy c29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUwor ICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwg MTApOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsK K0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlv bnMgb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25f aWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2Fs ZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1Ig VkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBW QUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFm dGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxw Z3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBj YWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBU R19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9E WSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1l bnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAg Rk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Bl b3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBP TiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJF IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworLS0gMiB0cmln Z2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBm aXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAo MTksICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUz MF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBm aXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBW QUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAnRm9y ZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7CitTRUxFQ1QgKiBGUk9N IHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CitEUk9QIEZV TkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0gVGVzdDogbWVy Z2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQp OworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNw ZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlv bnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMw XzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAg VkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3YnKTsKKwor QUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9y ZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxl c3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRP IHNhbGVzcGVvcGxlMTBfNDA7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7CitzZWxl Y3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxl MTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CisKKy0tCistLSBUZXN0OiBtZXJn ZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIy MDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0NSRUFU RSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JERVIgQlkgdGFibGVvaWQ6OnJl Z2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFC TEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEw LCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVz X2Fwcl9hbGw7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19h cHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwg c2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBC WSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9y cyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlz dAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAor IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigy MCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04g QlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1 cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKworQ1JF QVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBM SVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJn JywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJu YWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2 Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3Qg YSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vh c3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgInNhbGVz X2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJz YWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChz YWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxs OworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlv biBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElO VE8gc2FsZXNfYWxsOworCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsMjsKK0RST1AgVEFC TEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3QyOworRFJPUCBUQUJM RSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1F UkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QK KyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjAp LAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZ IExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNw ZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25f bmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2Fs ZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2Fs ZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3Nsbycs ICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dl c3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdO ZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxh ZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVG QVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAn LCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJu b2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3Jk JywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZh bm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0Rl ZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQ b2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgn TWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAo J0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAg KCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisg ICgnSGFsZGVyJywgICAnT3NsbycsICAgICAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAor ICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwK KyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyks CisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcp LAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUn KTsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0 X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKworQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19j ZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29u ZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsK KworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIg QlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9p ZDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdp bmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitFWFBMQUlOIChD T1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0g J1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9 ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xp c3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNf bGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJ dmFub3YnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25h bWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUg c2FsZXNfbGlzdDsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3Ro ZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBj IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBB UlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFU RSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NS RUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykg VE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworCistLSBFUlJP UjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQy IgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0 MnA7CistLSBFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVk IHRhYmxlICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQycGEsIHQz KSBJTlRPIHQycDsKKworRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRB QkxFIHQxOworCisKKy0tCistLSBDaGVjayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYg dGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdl ZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFSWSBLRVko aSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitD UkVBVEUgSU5ERVggdGlkeCBPTiB0KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8xXzIsIHRwXzBfMSkgSU5UTyB0cF8xXzI7CisKKy0tIEluZGV4bmFtZSB2YWx1 ZXMgc2hvdWxkIGJlICd0cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorXGQrIHRw XzFfMgorCitEUk9QIFRBQkxFIHQ7CisKKy0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9u cyBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQkVHSU47CitTSE9XIHNlYXJjaF9wYXRoOwor Q1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgT04g Q09NTUlUIERST1A7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDUkVBVEUgVEVN UCBUQUJMRSB0cF8yXzMgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAo Myk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8zXzQgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgzKSBUTyAoNCk7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMiwgdHBfMl8zKSBJTlRPIHBnX3RlbXAudHBfMF8zOwor CistLSBQYXJ0aXRpb24gc2hvdWxkIGJlIHRlbXBvcmFyeS4KK0VYRUNVVEUgZ2V0X3BhcnRp dGlvbl9pbmZvKCd7dH0nKTsKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVu dCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzMsIHRwXzNfNCkgSU5UTyB0cF8w XzQ7CitST0xMQkFDSzsKKworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1w b3JhcnkgcGFydGl0aW9ucy4KKy0tCitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAo aSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxF IHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKwor U0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKK1NBVkVQT0lOVCBzOworCitT RVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVi bGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1w b3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHM7CitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0g Q2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8y KSBJTlRPIHBnX3RlbXAudHBfMF8yOworUk9MTEJBQ0s7CisKK0JFR0lOOworU0VUIHNlYXJj aF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NS RUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBU QUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7 CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVs cGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAn dCc6OnJlZ2NsYXNzOworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworCitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVi bGljOworCistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVy c2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBf MF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CisKK0RFQUxMT0NBVEUgZ2V0 X3BhcnRpdGlvbl9pbmZvOworCistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0 cyBwYXJlbnQncyB0YWJsZXNwYWNlCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZ IFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9O IEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFC TEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBn X3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hl bWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5h bWUgQ09MTEFURSAiQyIsIHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CitTRUxFQ1QgdGFibGVu YW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRh YmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9u c19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgaW5k ZXhuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNwYWNlIENPTExBVEUgIkMiOworRFJPUCBUQUJM RSB0OworCistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0 YWJsZSBhY2Nlc3MgbWV0aG9kCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYSwgcHVibGljOworQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJn ZV9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFU RSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRp b25zX21lcmdlX2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIGMu cmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5y ZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMic6 OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lIENPTExBVEUgIkMiOworRFJPUCBUQUJM RSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKKworLS0g VGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFy ZW50IHRhYmxlIGFuZCBhbGwKKy0tIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMgdG8gZG8gdGhl IG1lcmdlLgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitD UkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitHUkFOVCBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CisKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRB QkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK KworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIg b2YgdGFibGUgdHBfMF8xCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsK KworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdl X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYm9iOworLS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzFfMgorQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzFf MiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIE9rOgorQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0RST1AgVEFCTEUgdDsKKwor LS0gVGVzdDogd2UgY2FuJ3QgbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudCBvd25l cnMKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBpbnQpOworQUxURVIgVEFCTEUgdHBfMF8xIE9X TkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHRw XzFfMihpIGludCk7CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYm9iOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSk7CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJU SVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCistLSBPd25lciBp cyAncmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2UnOgorXGR0IHRwXzBfMQorLS0gT3du ZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisKKy0t IEVSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJz CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsK K1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsK KworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOwor Q1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVM VVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBh cnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworCistLSBFUlJPUjogIGxpc3Qgb2Yg cGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBh cnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRw MzsKKworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24g cHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlz IGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFy ZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25l ZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBh cnRpdGlvbmVkIHRhYmxlCitcc2V0IEhJREVfVE9BU1RfQ09NUFJFU1NJT04gZmFsc2UKKwor 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 dGlvbigpOworXHNldCBISURFX1RPQVNUX0NPTVBSRVNTSU9OIHRydWUKKworCistLSBUZXN0 IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29uc3RyYWlu dAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCks ICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZB TFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19p X2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK KworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCistLSBF UlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJ REFURSBDT05TVFJBSU5UIHRfZmtfaV9ma2V5OworCitEUk9QIFRBQkxFIHRfZms7CitEUk9Q IFRBQkxFIHQ7CisKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBlbmZvcmNl ZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFS WSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxF IHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lO U0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5U KTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworCitBTFRFUiBUQUJMRSB0 X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVO Q0VTIHQgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBOT1QgRU5GT1JD RUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRl IG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2Zr X2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtl eSBFTkZPUkNFRDsKKworRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworCisKKy0t IFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgor Q1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMg KHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFC TEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVv aWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCist LSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0 aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciBy b3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0 YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRh Yl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQi IGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisK Ky0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3 aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJv dyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRh Yl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCitEUk9QIFRB QkxFIHQ7CisKKworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBv cmRlciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9u cykuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMg KGkgKyB0YWJsZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBU QUJMRSB0cF8xIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6Omlu dCksIGkgaW50KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNI IFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBU QUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQg QUREIENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoNSksICgxNSk7CisK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0cF8x MjsKKworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVSUk9SOiAgbmV3IHJvdyBm b3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hl Y2siCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CistLSBTaG91bGQgYmUgMyByb3dzOiAo NSksICgxNSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKy0tIFNob3Vs ZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxlb2lkKSA9 ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkg PSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOworCitE Uk9QIFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVN QSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMjsKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------gMwOW8dEiJ0sV4Li0sRjBJNz Content-Type: text/plain; charset=UTF-8; name="v62-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v62-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2Y2JkNDAwNzRjOTI3NWM4OGY1MDI1ZDczY2VmYjkzNTk0MjQ5MzNhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NjIgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcywgSmlhbiBIZQoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBB bGV4YW5kZXIgS29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJ bG1hcmkgTWFubnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4 YW5kZXIgS29yb3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jp c292ClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRl ciBMYWtoaW4sIEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5 OiBEYW5pZWwgR3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3Jj L3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAxMTUgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MzAgKysr KysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAg MzggKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8 ICAxOTQgKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAg ICB8ICA3MzMgKysrKysrKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAg ICAgICAgICAgICB8ICAgMTAgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgICAgICB8ICAgMzMgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAg ICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuaCAgICAgICAgIHwgICAgNCArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3Bh cnRpdGlvbi1zcGxpdC5vdXQgICAgfCAgMjMwICsrKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lz b2xhdGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24v c3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMgfCAgIDYyICsKIC4uLi90ZXN0X2RkbF9kZXBh cnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dCB8ICAgIDUgKwogLi4uL3Rlc3RfZGRsX2Rl cGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbCAgICAgIHwgICAgNCArCiAuLi4vdGVzdF9kZGxf ZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8IDE1OTIgKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8 ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgICAg ICB8IDExMzQgKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCAgICAgICAgICAgICAgfCAgICAyICsKIDIwIGZpbGVzIGNoYW5nZWQsIDQ1NzQgaW5zZXJ0 aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9z cGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0 aXRpb25fc3BsaXQuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIv ZG9jL3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGRkYjEzNzZhNmUuLmMyMjBhMWNiYzAgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRs LnNnbWwKQEAgLTQ0NzEsNiArNDQ3MSwyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAog ICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAzKSBJTlRPIG1lYXN1 cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBTaW1pbGFybHkgdG8gbWVyZ2luZyBtdWx0aXBsZSB0YWJsZSBwYXJ0 aXRpb25zLCB0aGVyZSBpcyBhbiBvcHRpb24gZm9yCisgICAgIHNwbGl0dGluZyBhIHNpbmds ZSBwYXJ0aXRpb24gaW50byBtdWx0aXBsZSB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlua2Vu ZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj48Y29tbWFuZD5BTFRFUiBUQUJM RSAuLi4gU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMgZmVh dHVyZSBjb3VsZCBjb21lIGluIGhhbmR5IHdoZW4gb25lIHBhcnRpdGlvbiBncm93cyB0b28g YmlnCisgICAgIGFuZCBuZWVkcyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlLiAgSXQncyBp bXBvcnRhbnQgdG8gbm90ZSB0aGF0CisgICAgIHRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBw b3J0ZWQgZm9yIGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcworICAgICBh biA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3Vs ZCBpbXBhY3QgaGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVz dHJpY3RpdmUgbmF0dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbiBzcGxpdAorICAgICB0aGUg cXVhcnRlciBwYXJ0aXRpb24gYmFjayB0byBtb250aGx5IHBhcnRpdGlvbnM6Cis8cHJvZ3Jh bWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBtZWFzdXJlbWVudCBTUExJVCBQQVJUSVRJT04gbWVh c3VyZW1lbnRfeTIwMDZxMSBJTlRPCisgICAoUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2 bTAxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDEtMDEnKSBUTyAoJzIwMDYtMDItMDEnKSwK KyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDIgRk9SIFZBTFVFUyBGUk9NICgn MjAwNi0wMi0wMScpIFRPICgnMjAwNi0wMy0wMScpLAorICAgIFBBUlRJVElPTiBtZWFzdXJl bWVudF95MjAwNm0wMyBGT1IgVkFMVUVTIEZST00gKCcyMDA2LTAzLTAxJykgVE8gKCcyMDA2 LTA0LTAxJykpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisKICAgIDwvc2Vj dDM+CiAKICAgIDxzZWN0MyBpZD0iZGRsLXBhcnRpdGlvbmluZy1kZWNsYXJhdGl2ZS1saW1p dGF0aW9ucyI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggNWFjMWY1YzQy My4uMDVmYmMyNzMwOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtMzks NiArMzksMTAgQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxh Y2VhYmxlPiBbIENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KIEFMVEVSIFRBQkxFIFsgSUYg RVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgogICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElO VE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBs YWNlYWJsZT4KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAgIFNQTElUIFBBUlRJVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2Vh YmxlPiBJTlRPCisgICAgICAgIChQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxh Y2VhYmxlPiB8IERFRkFVTFQgfSwKKyAgICAgICAgIFBBUlRJVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4geyBGT1Ig VkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRf c3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0pCiAKIDxwaHJhc2U+d2hl cmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFibGU+ IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTI1Nyw2ICsxMjYxLDkxIEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0aXRp b24iPgorICAgIDx0ZXJtPgorICAgIDxsaXRlcmFsPlNQTElUIFBBUlRJVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJ TlRPICgKKyAgICAgIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+ IHwgREVGQVVMVCB9LAorICAgICAgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBs YWNlYWJsZT4gfCBERUZBVUxUIH0KKyAgICAgIFssIC4uLl0pPC9saXRlcmFsPgorICAgIDwv dGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0g c3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlIGludG8gbmV3 CisgICAgICBwYXJ0aXRpb25zLiBIYXNoLXBhcnRpdGlvbmVkIHRhcmdldCB0YWJsZSBpcyBu b3Qgc3VwcG9ydGVkLgorICAgICAgT25seSBhIHNpbXBsZSwgbm9uLXBhcnRpdGlvbmVkIHBh cnRpdGlvbiBjYW4gYmUgc3BsaXQuCisgICAgICBJZiB0aGUgc3BsaXQgcGFydGl0aW9uIGlz IHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24sIG9uZSBvZgorICAg ICAgdGhlIG5ldyBwYXJ0aXRpb25zIG11c3QgYmUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJh bD4uCisgICAgICBJZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSA8bGl0 ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24sCisgICAgICA8bGl0ZXJhbD5ERUZB VUxUPC9saXRlcmFsPiBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25lIG9mIHRoZSBu ZXcgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgQm91 bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQg ZXhpc3RpbmcgcGFydGl0aW9ucworICAgICAgKGV4Y2VwdCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPikuCisgICAgICBUaGUg Y29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIDxsaXRlcmFsPgorICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFi bGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMjwvcmVwbGFjZWFibGU+WywgLi4uXQorICAgICAgPC9saXRlcmFsPiBzaG91bGQgYmUg ZXF1YWwgdG8gdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KKyAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+ LgorICAgICAgT25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBjYW4gaGF2ZSB0aGUgc2FtZSBu YW1lIGFzIHRoZSBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICh0aGlzIGlzIHN1aXRh YmxlIGluIGNhc2Ugb2Ygc3BsaXR0aW5nIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFs PgorICAgICAgcGFydGl0aW9uOiBhZnRlciB0aGUgc3BsaXQsIHRoZSA8bGl0ZXJhbD5ERUZB VUxUPC9saXRlcmFsPiBwYXJ0aXRpb24gcmVtYWlucyB3aXRoIHRoZSBzYW1lCisgICAgICBu YW1lLCBidXQgaXRzIHBhcnRpdGlvbiBib3VuZCBjaGFuZ2VzKS4KKyAgICAgPC9wYXJhPgor CisgICAgIDxwYXJhPgorICAgICAgTmV3IHBhcnRpdGlvbnMgd2lsbCBoYXZlIHRoZSBzYW1l IG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgorICAgICAgSXQgaXMgdGhlIHVzZXIn cyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255bT5BQ0w8L2Fjcm9ueW0+IG9uIG5l dworICAgICAgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAg ICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTjwvY29tbWFuZD4gdXNl cyB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmCisgICAgICAgYXMgdGhlIHRlbXBsYXRl IHRvIGNvbnN0cnVjdCBuZXcgcGFydGl0aW9ucy4KKyAgICAgICBOZXcgcGFydGl0aW9ucyB3 aWxsIGluaGVyaXQgdGhlIHNhbWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVuY2UK KyAgICAgICB0eXBlLCBhbmQgdGFibGVzcGFjZSBhcyB0aGUgcGFydGl0aW9uZWQgdGFibGUu CisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgICBDb25zdHJhaW50cywgY29s dW1uIGRlZmF1bHRzLCBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9ucywgaWRlbnRpdHkg Y29sdW1ucywKKyAgICAgICBpbmRleGVzLCB0cmlnZ2VycyBhcmUgY29waWVkIGZyb20gdGhl IHBhcnRpdGlvbmVkIHRhYmxlIHRvIHRoZSBuZXcKKyAgICAgICBwYXJ0aXRpb25zLiAgQnV0 IGV4dGVuZGVkIHN0YXRpc3RpY3MsIHNlY3VyaXR5IHBvbGljaWVzIGV0YyB3b24ndCBjb3Bp ZWQgZnJvbQorICAgICAgIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4KKyAgICAgICBJbmRleGVz IGFuZCBpZGVudGl0eSBjb2x1bW5zIGNvcGllZCBmcm9tIHRoZSBwYXJ0aXRpb25lZCB0YWJs ZSB3aWxsIGJlCisgICAgICAgY3JlYXRlZCBhZnRlcndhcmQsIG9uY2UgdGhlIGRhdGEgaGFz IGJlZW4gbW92ZWQgaW50byB0aGUgbmV3IHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKwor ICAgICA8cGFyYT4KKyAgICAgIFdoZW4gYSBwYXJ0aXRpb24gaXMgc3BsaXQsIGFueSBvYmpl Y3RzIGRlcGVuZCBvbiB0aGlzIHBhcnRpdGlvbiwgc3VjaCBhcworICAgICAgY29uc3RyYWlu dHMsIHRyaWdnZXJzLCBleHRlbmRlZCBzdGF0aXN0aWNzIGV0YyB3aWxsIGJlIGRyb3BwZWQu IFRoaXMgb2NjdXJzCisgICAgICBiZWNhdXNlIDxjb21tYW5kPkFMVEVSIFRBQkxFIFNQTElU IFBBUlRJVElPTjwvY29tbWFuZD4gdXNlcyB0aGUgcGFydGl0aW9uZWQKKyAgICAgIHRhYmxl IGl0c2VsZiBhcyB0aGUgdGVtcGxhdGUgdG8gcmVjb25zdHJ1Y3QgdGhlc2Ugb2JqZWN0cyBs YXRlci4KKyAgICAgIEV2ZW50dWFsbHkgd2Ugd2lsbCBkcm9wIHRoZSBzcGxpdCBwYXJ0aXRp b24gKHVzaW5nIDxsaXRlcmFsPlJFU1RSSUNUPC9saXRlcmFsPiBtb2RlKSB0b28sCisgICAg ICB0aGVyZWZvcmUgaWYgYW55IG9iamVjdHMgc3RpbGwgZGVwZW5kZW50IG9uIGl0LAorICAg ICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB3b3Vs ZCBmYWlsLgorICAgICAgKHNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtZGVwZW5kIi8+KS4KKyAg ICAgPC9wYXJhPgorCisgICAgIDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgU3BsaXQg cGFydGl0aW9uIGFjcXVpcmVzIGFuIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVy YWw+IGxvY2sgb24KKyAgICAgICB0aGUgcGFyZW50IHRhYmxlLCBpbiBhZGRpdGlvbiB0byB0 aGUgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4KKyAgICAgICBsb2NrIG9u IHRoZSB0YWJsZSBiZWluZyBzcGxpdC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgor ICAgICA8bm90ZT4KKworICAgICAgPHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFC TEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiBjcmVhdGVzIG5ldyBwYXJ0aXRpb25zIGFu ZAorICAgICAgIG1vdmVzIGRhdGEgZnJvbSB0aGUgc3BsaXQgcGFydGl0aW9uIGludG8gdGhl bSwgd2hpY2ggY2FuIHRha2UgYSBsb25nCisgICAgICAgdGltZS4gIFNvIGl0IGlzIG5vdCBy ZWNvbW1lbmRlZCB0byB1c2UgdGhlIGNvbW1hbmQgZm9yIHNwbGl0dGluZyBhCisgICAgICAg c21hbGwgZnJhY3Rpb24gb2Ygcm93cyBvdXQgb2YgYSB2ZXJ5IGJpZyBwYXJ0aXRpb24uCisg ICAgICA8L3BhcmE+CisgICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvcGFyYT4KIApAQCAtMTI2NCw3 ICsxMzUzLDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIEFsbCB0aGUgZm9y bXMgb2YgPGNvbW1hbmQ+QUxURVIgVEFCTEU8L2NvbW1hbmQ+IHRoYXQgYWN0IG9uIGEgc2lu Z2xlIHRhYmxlLAogICAgZXhjZXB0IDxsaXRlcmFsPlJFTkFNRTwvbGl0ZXJhbD4sIDxsaXRl cmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+LAogICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJVElP TjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LAotICAg YW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+LCBjYW4gYmUgY29tYmlu ZWQgaW50bworICAgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4sIGFuZCA8 bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xpdGVyYWw+CisgICBjYW4gYmUgY29tYmluZWQg aW50bwogICAgYSBsaXN0IG9mIG11bHRpcGxlIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxpZWQg dG9nZXRoZXIuICBGb3IgZXhhbXBsZSwgaXQKICAgIGlzIHBvc3NpYmxlIHRvIGFkZCBzZXZl cmFsIGNvbHVtbnMgYW5kL29yIGFsdGVyIHRoZSB0eXBlIG9mIHNldmVyYWwKICAgIGNvbHVt bnMgaW4gYSBzaW5nbGUgY29tbWFuZC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3 aXRoIGxhcmdlCkBAIC0xNTA4LDcgKzE1OTgsNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4s IFJFTQogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgbmFt ZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFzIGEgbmV3IHBhcnRpdGlvbiBvciB0byBkZXRh Y2ggZnJvbSB0aGlzIHRhYmxlLAotICAgICAgICBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1l cmdlZCBwYXJ0aXRpb24uCisgICAgICAgIG9yIHRoZSBuYW1lIG9mIHNwbGl0IHBhcnRpdGlv biwgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgogICAgICAgIDwv cGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTUx OCw3ICsxNjA4LDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxh Y2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KLSAgICAg ICAgVGhlIG5hbWVzIG9mIHRoZSB0YWJsZXMgYmVpbmcgbWVyZ2VkIGludG8gdGhlIG5ldyBw YXJ0aXRpb24uCisgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFibGVzIGJlaW5nIG1lcmdl ZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uIG9yIHNwbGl0IGludG8KKyAgICAgICAgbmV3IHBh cnRpdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92 YXJsaXN0ZW50cnk+CkBAIC0xOTUxLDYgKzIwNDIsMjQgQEAgQUxURVIgVEFCTEUgbWVhc3Vy ZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDE1bTEyOwogPC9w cm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmds ZSBwYXJ0aXRpb24gb2YgdGhlIHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlOgorPHByb2dyYW1s aXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMyBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjMgRk9S IFZBTFVFUyBGUk9NICgnMjAyMy0wMi0wMScpIFRPICgnMjAyMy0wMy0wMScpLAorICAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDMtMDEnKSBU TyAoJzIwMjMtMDQtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMyBGT1IgVkFM VUVTIEZST00gKCcyMDIzLTA0LTAxJykgVE8gKCcyMDIzLTA1LTAxJykpOworPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0 aXRpb24gb2YgdGhlIGxpc3QtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+ CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5U TworICAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRv IG1lcmdlIHNldmVyYWwgcGFydGl0aW9ucyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRh cmdldCB0YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKaW5kZXggNzA1MzM4N2IyZS4uMjQ1NWY2ODBmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTc0Myw2ICs3NDMsOSBAQCBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVT dG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwogCiBzdGF0 aWMgdm9pZCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgUGFydGl0aW9uQ21kICpj bWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CitzdGF0aWMgdm9pZCBB VEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsCisJCQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJ CQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICoJCURlZmluZVJlbGF0aW9uCkBAIC00ODQwLDYgKzQ4NDMsNyBAQCBBbHRlclRhYmxl R2V0TG9ja0xldmVsKExpc3QgKmNtZHMpCiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgQVRfTWVy Z2VQYXJ0aXRpb25zOgorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKIAkJCQljbWRfbG9j a21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFrOwogCkBAIC01Mjc5LDYg KzUyODMsNyBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRl clRhYmxlQ21kICpjbWQsCiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CiAJ CWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgog CQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1BBUlRJVElP TkVEX1RBQkxFKTsKIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8K IAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CkBAIC01Njg3LDYgKzU2OTIsMTQgQEAgQVRFeGVj Q21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCUFURXhlY01l cmdlUGFydGl0aW9ucyh3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ ZGVmLAogCQkJCQkJCQkgIGNvbnRleHQpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQ YXJ0aXRpb246CisJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCBy ZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4 dCk7CisJCQlBc3NlcnQoY21kICE9IE5VTEwpOworCQkJQXNzZXJ0KHJlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJQVRFeGVjU3BsaXRQ YXJ0aXRpb24od3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwK KwkJCQkJCQkJIGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMg Ki8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQi LAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjcyOSw2ICs2NzQyLDggQEAgYWx0 ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJCXJl dHVybiAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQljYXNlIEFUX01lcmdl UGFydGl0aW9uczoKIAkJCXJldHVybiAiTUVSR0UgUEFSVElUSU9OUyI7CisJCWNhc2UgQVRf U3BsaXRQYXJ0aXRpb246CisJCQlyZXR1cm4gIlNQTElUIFBBUlRJVElPTiI7CiAJCWNhc2Ug QVRfQWRkSWRlbnRpdHk6CiAJCQlyZXR1cm4gIkFMVEVSIENPTFVNTiAuLi4gQUREIElERU5U SVRZIjsKIAkJY2FzZSBBVF9TZXRJZGVudGl0eToKQEAgLTIyOTE4LDMgKzIyOTMzLDQxOCBA QCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBSZWxhdGlvbiByZWwsCiAJLyogUmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5 IGNvbnRleHQuICovCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2 ZV9zZWNfY29udGV4dCk7CiB9CisKKy8qCisgKiBTdHJ1Y3Qgd2l0aCBjb250ZXh0IG9mIG5l dyBwYXJ0aXRpb24gZm9yIGluc2VydGluZyByb3dzIGZyb20gc3BsaXQgcGFydGl0aW9uCisg Ki8KK3R5cGVkZWYgc3RydWN0IFNwbGl0UGFydGl0aW9uQ29udGV4dAoreworCUV4cHJTdGF0 ZSAgKnBhcnRxdWFsc3RhdGU7CS8qIGV4cHJlc3Npb24gZm9yIGNoZWNraW5nIHNsb3QgZm9y IHBhcnRpdGlvbgorCQkJCQkJCQkgKiAoTlVMTCBmb3IgREVGQVVMVCBwYXJ0aXRpb24pICov CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0YXRlIG9mIGJ1bGsgaW5zZXJ0cyBm b3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7CS8qIHNsb3QgZm9y IGluc2VydGluZyByb3cgaW50byBwYXJ0aXRpb24gKi8KKwlBbHRlcmVkVGFibGVJbmZvICp0 YWI7CQkvKiBzdHJ1Y3RvcmUgd2l0aCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zCisJ CQkJCQkJCSAqIGFuZCBjaGVjayBjb25zdHJhaW50IGV4cHJlc3NzaW9ucy4gKi8KKwlSZWxh dGlvbglwYXJ0UmVsOwkJLyogcmVsYXRpb24gZm9yIHBhcnRpdGlvbiAqLworfSBTcGxpdFBh cnRpdGlvbkNvbnRleHQ7CisKKy8qCisgKiBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6 IGNyZWF0ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24gYW5kIGZpbGwgaXQKKyAqLworc3RhdGlj IFNwbGl0UGFydGl0aW9uQ29udGV4dCAqCitjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQo UmVsYXRpb24gcGFydFJlbCkKK3sKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjOworCisJ cGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIHBhbGxvYzAoc2l6ZW9mKFNwbGl0UGFy dGl0aW9uQ29udGV4dCkpOworCXBjLT5wYXJ0UmVsID0gcGFydFJlbDsKKworCS8qCisJICog UHJlcGFyZSBhIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0LiBUaGUg RlNNIGlzIGVtcHR5LCBzbworCSAqIGRvbid0IGJvdGhlciB1c2luZyBpdC4KKwkgKi8KKwlw Yy0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIGEgZGVz dGluYXRpb24gdHVwbGUgc2xvdCBmb3IgdGhlIG5ldyBwYXJ0aXRpb24uICovCisJcGMtPmRz dHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYy0+cGFydFJlbCwgTlVMTCk7CisKKwlyZXR1 cm4gcGM7Cit9CisKKy8qCisgKiBkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGRlbGV0 ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24KKyAqLworc3RhdGljIHZvaWQKK2RlbGV0ZVNwbGl0 UGFydGl0aW9uQ29udGV4dChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjLCBMaXN0ICoqd3F1 ZXVlLCBpbnQgdGlfb3B0aW9ucykKK3sKKwlMaXN0Q2VsbCAgICpsdGFiOworCisJRXhlY0Ry b3BTaW5nbGVUdXBsZVRhYmxlU2xvdChwYy0+ZHN0c2xvdCk7CisJRnJlZUJ1bGtJbnNlcnRT dGF0ZShwYy0+YmlzdGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQocGMtPnBh cnRSZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHRvIHByb2Nl c3MgdGhpcyBwYy0+cGFydFJlbCBzbyBkZWxldGUgdGhlIEFMVEVSIFRBQkxFCisJICogcXVl dWUgb2YgaXQuCisJICovCisJZm9yZWFjaChsdGFiLCAqd3F1ZXVlKQorCXsKKwkJQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiID0gKEFsdGVyZWRUYWJsZUluZm8gKikgbGZpcnN0KGx0YWIpOwor CisJCWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRSZWwpKQor CQl7CisJCQkqd3F1ZXVlID0gbGlzdF9kZWxldGVfY2VsbCgqd3F1ZXVlLCBsdGFiKTsKKwkJ CWJyZWFrOworCQl9CisJfQorCisJcGZyZWUocGMpOworfQorCisvKgorICogU3BsaXRQYXJ0 aXRpb25Nb3ZlUm93czogc2NhbiBzcGxpdCBwYXJ0aXRpb24gKHNwbGl0UmVsKSBvZiBwYXJ0 aXRpb25lZCB0YWJsZQorICogKHJlbCkgYW5kIG1vdmUgcm93cyBpbnRvIG5ldyBwYXJ0aXRp b25zLgorICoKKyAqIE5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9uOgorICogcGFydGxpc3Q6 IGxpc3Qgb2YgcG9pbnRlcnMgdG8gU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3R1cmVzLiAg SXQgY29udGFpbnMKKyAqIHRoZSBwYXJ0aXRpb24gc3BlY2lmaWNhdGlvbiBkZXRhaWxzIGZv ciBhbGwgbmV3IHBhcnRpdGlvbnMuCisgKiBuZXdQYXJ0UmVsczogbGlzdCBvZiBSZWxhdGlv bnMsIG5ldyBwYXJ0aXRpb25zIGNyZWF0ZWQgaW4KKyAqIEFURXhlY1NwbGl0UGFydGl0aW9u LgorICovCitzdGF0aWMgdm9pZAorU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cyhMaXN0ICoqd3F1 ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLAorCQkJCQkgICBMaXN0ICpw YXJ0bGlzdCwgTGlzdCAqbmV3UGFydFJlbHMpCit7CisJLyogVGhlIEZTTSBpcyBlbXB0eSwg c28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRpX29wdGlvbnMgPSBUQUJM RV9JTlNFUlRfU0tJUF9GU007CisJQ29tbWFuZElkCW15Y2lkOworCUVTdGF0ZQkgICAqZXN0 YXRlOworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJVHVwbGVU YWJsZVNsb3QgKnNyY3Nsb3Q7CisJRXhwckNvbnRleHQgKmVjb250ZXh0OworCVRhYmxlU2Nh bkRlc2Mgc2NhbjsKKwlTbmFwc2hvdAlzbmFwc2hvdDsKKwlNZW1vcnlDb250ZXh0IG9sZEN4 dDsKKwlMaXN0CSAgICpwYXJ0Q29udGV4dHMgPSBOSUw7CisJVHVwbGVDb252ZXJzaW9uTWFw ICp0dXBsZV9tYXA7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpkZWZhdWx0UGFydEN0eCA9 IE5VTEwsCisJCQkgICAqcGM7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1 ZSk7CisKKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwlmb3Jib3RoKGxp c3RwdHIsIHBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5nbGVQ YXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlz dHB0cik7CisKKwkJcGMgPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoKFJlbGF0aW9u KSBsZmlyc3QobGlzdHB0cjIpKTsKKworCQkvKiBGaW5kIHRoZSB3b3JrIHF1ZXVlIGVudHJ5 IGZvciBuZXcgcGFydGl0aW9uIHRhYmxlOiBuZXdQYXJ0UmVsLiAqLworCQlwYy0+dGFiID0g QVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgcGMtPnBhcnRSZWwpOworCisJCWJ1aWxkRXhwcmVz c2lvbkV4ZWN1dGlvblN0YXRlcyhwYy0+dGFiLCBwYy0+cGFydFJlbCwgZXN0YXRlKTsKKwor CQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAqIFdlIHNo b3VsZCBub3QgY3JlYXRlIHN0cnVjdHVyZSBmb3IgY2hlY2sgcGFydGl0aW9uIGNvbnN0cmFp bnQKKwkJCSAqIGZvciBuZXcgREVGQVVMVCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWRlZmF1 bHRQYXJ0Q3R4ID0gcGM7CisJCX0KKwkJZWxzZQorCQl7CisJCQlMaXN0CSAgICpwYXJ0Q29u c3RyYWludDsKKworCQkJLyogQnVpbGQgZXhwcmVzc2lvbiBleGVjdXRpb24gc3RhdGVzIGZv ciBwYXJ0aXRpb24gY2hlY2sgcXVhbHMuICovCisJCQlwYXJ0Q29uc3RyYWludCA9IGdldF9x dWFsX2Zyb21fcGFydGJvdW5kKHJlbCwgc3BzLT5ib3VuZCk7CisJCQlwYXJ0Q29uc3RyYWlu dCA9CisJCQkJKExpc3QgKikgZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLAorCQkJCQkJ CQkJCQkJKE5vZGUgKikgcGFydENvbnN0cmFpbnQpOworCQkJLyogTWFrZSBib29sZWFuIGV4 cHJlc3Npb24gZm9yIEV4ZWNDaGVjaygpLiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBsaXN0 X21ha2UxKG1ha2VfYW5kc19leHBsaWNpdChwYXJ0Q29uc3RyYWludCkpOworCisJCQkvKgor CQkJICogTWFwIHRoZSB2YXJzIGluIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gZnJvbSBy ZWwncyBhdHRub3MgdG8KKwkJCSAqIHNwbGl0UmVsJ3MuCisJCQkgKi8KKwkJCXBhcnRDb25z dHJhaW50ID0gbWFwX3BhcnRpdGlvbl92YXJhdHRub3MocGFydENvbnN0cmFpbnQsCisJCQkJ CQkJCQkJCQkJIDEsIHNwbGl0UmVsLCByZWwpOworCisJCQlwYy0+cGFydHF1YWxzdGF0ZSA9 CisJCQkJRXhlY1ByZXBhcmVFeHByKChFeHByICopIGxpbml0aWFsKHBhcnRDb25zdHJhaW50 KSwgZXN0YXRlKTsKKwkJCUFzc2VydChwYy0+cGFydHF1YWxzdGF0ZSAhPSBOVUxMKTsKKwkJ fQorCisJCS8qIFN0b3JlIHBhcnRpdGlvbiBjb250ZXh0IGludG8gbGlzdC4gKi8KKwkJcGFy dENvbnRleHRzID0gbGFwcGVuZChwYXJ0Q29udGV4dHMsIHBjKTsKKwl9CisKKwllY29udGV4 dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCS8qIENyZWF0ZSBuZWNl c3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlzcmNzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUoc3Bs aXRSZWwsIE5VTEwpOworCisJLyoKKwkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3ZpbmcgYXR0 cmlidXRlcyBvZiBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlvbgorCSAqIChmb3Ig Zmlyc3QgbmV3IHBhcnRpdGlvbiwgYnV0IG90aGVyIG5ldyBwYXJ0aXRpb25zIGNhbiB1c2Ug dGhlIHNhbWUKKwkgKiBtYXApLgorCSAqLworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4 dCAqKSBsZmlyc3QobGlzdF9oZWFkKHBhcnRDb250ZXh0cykpOworCXR1cGxlX21hcCA9IGNv bnZlcnRfdHVwbGVzX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihzcGxpdFJlbCksCisJCQkJ CQkJCQkgICBSZWxhdGlvbkdldERlc2NyKHBjLT5wYXJ0UmVsKSk7CisKKwkvKiBTY2FuIHRo cm91Z2ggdGhlIHJvd3MuICovCisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExh dGVzdFNuYXBzaG90KCkpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRSZWwsIHNu YXBzaG90LCAwLCBOVUxMKTsKKworCS8qCisJICogU3dpdGNoIHRvIHBlci10dXBsZSBtZW1v cnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUKKwkgKiBwcm9kdWNlZCwg c28gd2UgZG9uJ3QgbGVhayBtZW1vcnkuCisJICovCisJb2xkQ3h0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKKworCXdoaWxl ICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBz cmNzbG90KSkKKwl7CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCVR1cGxlVGFibGVTbG90 ICppbnNlcnRzbG90OworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJZWNvbnRl eHQtPmVjeHRfc2NhbnR1cGxlID0gc3Jjc2xvdDsKKworCQkvKiBTZWFyY2ggcGFydGl0aW9u IGZvciBjdXJyZW50IHNsb3Qgc3Jjc2xvdC4gKi8KKwkJZm9yZWFjaChsaXN0cHRyLCBwYXJ0 Q29udGV4dHMpCisJCXsKKwkJCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmly c3QobGlzdHB0cik7CisKKwkJCS8qIHNraXAgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwkJCWlm IChwYy0+cGFydHF1YWxzdGF0ZSAmJiBFeGVjQ2hlY2socGMtPnBhcnRxdWFsc3RhdGUsIGVj b250ZXh0KSkKKwkJCXsKKwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJ CX0KKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJLyogVXNlIERFRkFVTFQgcGFydGl0aW9uIGlm IGl0IGV4aXN0cy4gKi8KKwkJCWlmIChkZWZhdWx0UGFydEN0eCkKKwkJCQlwYyA9IGRlZmF1 bHRQYXJ0Q3R4OworCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2Rl KEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCWVycm1zZygiY2FuIG5vdCBmaW5k IHBhcnRpdGlvbiBmb3Igc3BsaXQgcGFydGl0aW9uIHJvdyIpLAorCQkJCQkJZXJydGFibGUo c3BsaXRSZWwpKTsKKwkJfQorCisJCWlmICh0dXBsZV9tYXApCisJCXsKKwkJCS8qIE5lZWQg dG8gdXNlIG1hcCB0byBjb3B5IGF0dHJpYnV0ZXMuICovCisJCQlpbnNlcnRzbG90ID0gZXhl Y3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwgcGMtPmRz dHNsb3QpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogRXh0cmFjdCBkYXRhIGZyb20gb2xk IHR1cGxlLiAqLworCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNzbG90KTsKKworCQkJLyogQ29w eSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAqLworCQkJaW5zZXJ0c2xvdCA9IHBjLT5kc3RzbG90 OworCisJCQlFeGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90KTsKKworCQkJbWVtY3B5KGluc2Vy dHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1ZXMsCisJCQkJICAgc2l6ZW9m KERhdHVtKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCQkJbWVtY3B5KGluc2VydHNsb3Qt PnR0c19pc251bGwsIHNyY3Nsb3QtPnR0c19pc251bGwsCisJCQkJICAgc2l6ZW9mKGJvb2wp ICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisKKwkJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShp bnNlcnRzbG90KTsKKwkJfQorCisJCS8qCisJCSAqIENvbnN0cmFpbnRzIGFuZCBHRU5FUkFU RUQgZXhwcmVzc2lvbnMgbWlnaHQgcmVmZXJlbmNlIHRoZSB0YWJsZW9pZAorCQkgKiBjb2x1 bW4sIHNvIGZpbGwgdHRzX3RhYmxlT2lkIHdpdGggdGhlIGRlc2lyZWQgdmFsdWUuIChXZSBt dXN0IGRvCisJCSAqIHRoaXMgZWFjaCB0aW1lLCBiZWNhdXNlIGl0IGdldHMgb3ZlcndyaXR0 ZW4gd2l0aCBuZXdyZWwncyBPSUQKKwkJICogZHVyaW5nIHN0b3JpbmcuKQorCQkgKi8KKwkJ aW5zZXJ0c2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChwYy0+cGFydFJl bCk7CisKKwkJLyoKKwkJICogTm93LCBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkIGV4cHJlc3Np b25zIHdob3NlIGlucHV0cyBjb21lIGZyb20gdGhlCisJCSAqIG5ldyB0dXBsZS4gIFdlIGFz c3VtZSB0aGVzZSBjb2x1bW5zIHdvbid0IHJlZmVyZW5jZSBlYWNoIG90aGVyLCBzbworCQkg KiB0aGF0IHRoZXJlJ3Mgbm8gb3JkZXJpbmcgZGVwZW5kZW5jeS4KKwkJICovCisJCWV2YWx1 YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzKHBjLT50YWIsIHBj LT5wYXJ0UmVsLAorCQkJCQkJCQkJCQkJCQlpbnNlcnRzbG90LCBlY29udGV4dCk7CisKKwkJ LyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAqLworCQl0YWJs ZV90dXBsZV9pbnNlcnQocGMtPnBhcnRSZWwsIGluc2VydHNsb3QsIG15Y2lkLAorCQkJCQkJ ICAgdGlfb3B0aW9ucywgcGMtPmJpc3RhdGUpOworCisJCVJlc2V0RXhwckNvbnRleHQoZWNv bnRleHQpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDeHQpOworCisJdGFi bGVfZW5kc2NhbihzY2FuKTsKKwlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCisJ aWYgKHR1cGxlX21hcCkKKwkJZnJlZV9jb252ZXJzaW9uX21hcCh0dXBsZV9tYXApOworCisJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzcmNzbG90KTsKKworCUZyZWVFeGVjdXRv clN0YXRlKGVzdGF0ZSk7CisKKwlmb3JlYWNoX3B0cihTcGxpdFBhcnRpdGlvbkNvbnRleHQs IHNwYywgcGFydENvbnRleHRzKQorCQlkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoc3Bj LCB3cXVldWUsIHRpX29wdGlvbnMpOworfQorCisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+ IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IElOVE8gPHBhcnRpdGlvbi1saXN0 PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1 ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSBQYXJ0aXRp b25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJl bGF0aW9uCXNwbGl0UmVsOworCU9pZAkJCXNwbGl0UmVsT2lkOworCUxpc3RDZWxsICAgKmxp c3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9vbAkJaXNTYW1lTmFtZSA9IGZhbHNlOwor CWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCUxpc3QJICAgKm5ld1BhcnRSZWxz ID0gTklMOworCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lk OworCU9pZAkJCXNhdmVfdXNlcmlkOworCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CisJaW50 CQkJc2F2ZV9uZXN0bGV2ZWw7CisKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29p ZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsK KworCS8qCisJICogUGFydGl0aW9uIGlzIGFscmVhZHkgbG9ja2VkIGluIHRoZSB0cmFuc2Zv cm1QYXJ0aXRpb25DbWRGb3JTcGxpdAorCSAqIGZ1bmN0aW9uLgorCSAqLworCXNwbGl0UmVs ID0gdGFibGVfb3BlbnJ2KGNtZC0+bmFtZSwgTm9Mb2NrKTsKKworCXNwbGl0UmVsT2lkID0g UmVsYXRpb25HZXRSZWxpZChzcGxpdFJlbCk7CisKKwkvKiBDaGVjayBkZXNjcmlwdGlvbnMg b2YgbmV3IHBhcnRpdGlvbnMuICovCisJZm9yZWFjaF9ub2RlKFNpbmdsZVBhcnRpdGlvblNw ZWMsIHNwcywgY21kLT5wYXJ0bGlzdCkKKwl7CisJCU9pZAkJCWV4aXN0aW5nUmVsaWQ7CisK KwkJLyogTG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcgcGFydGl0aW9uIG5hbWUu ICovCisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzcHMtPm5hbWUs IE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRoaXMgd291bGQgZmFp bCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3RzLiBCdXQK KwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVycm9yIG1l c3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9PSBzcGxpdFJlbE9pZCAmJiAh aXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRoZSBzYW1l IG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisJ CWVsc2UgaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNn KCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBzcHMtPm5hbWUtPnJlbG5hbWUp KTsKKwl9CisKKwkvKiBEZXRhY2ggc3BsaXQgcGFydGl0aW9uLiAqLworCWRldGFjaFBhcnRp dGlvblRhYmxlKHJlbCwgc3BsaXRSZWwsIGRlZmF1bHRQYXJ0T2lkKTsKKworCS8qCisJICog UGVyZm9ybSBhIHByZWxpbWluYXJ5IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mg c2FmZSB0byBkcm9wCisJICogc3BsaXQgcGFydGl0aW9uIGJlZm9yZSB3ZSBhY3R1YWxseSBk byBzbyBsYXRlci4gQWZ0ZXIgbWVyZ2luZyByb3dzIGludG8KKwkgKiB0aGUgbmV3IHBhcnRp dGlvbnMgdmlhIFNwbGl0UGFydGl0aW9uTW92ZVJvd3MsIGFsbCBvbGQgcGFydGl0aW9ucyBu ZWVkCisJICogYmUgZHJvcHBlZC4gSG93ZXZlciwgc2luY2UgdGhlIGRyb3AgYmVoYXZpb3Ig aXMgRFJPUF9SRVNUUklDVCBhbmQgdGhlCisJICogbWVyZ2UgcHJvY2VzcyAoU3BsaXRQYXJ0 aXRpb25Nb3ZlUm93cykgY2FuIGJlIHRpbWUtY29uc3VtaW5nLAorCSAqIHBlcmZvcm1pbmcg YW4gZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxpZ2liaWxpdHkgb2Ygb2xkIHBhcnRpdGlv bnMgaXMKKwkgKiBwcmVmZXJhYmxlLgorCSAqLworCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0 UmVsT2lkOworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CisJcGVyZm9ybURlbGV0aW9uQ2hlY2soJm9iamVjdCwgRFJP UF9SRVNUUklDVCwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CisKKwkvKgorCSAqIElm IG5ldyBwYXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uIHRo ZW4gd2Ugc2hvdWxkCisJICogcmVuYW1lIHNwbGl0IHBhcnRpdGlvbiBmb3IgcmV1c2luZyBu YW1lLgorCSAqLworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJLyoKKwkJICogV2UgbXVzdCBi dW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1 cGxlCisJCSAqIHZpc2libGUgZm9yIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50 ZXJJbmNyZW1lbnQoKTsKKwkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8KKwkJc3ByaW50Zih0 bXBSZWxOYW1lLCAic3BsaXQtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBN eVByb2NQaWQpOworCQlSZW5hbWVSZWxhdGlvbkludGVybmFsKHNwbGl0UmVsT2lkLCB0bXBS ZWxOYW1lLCB0cnVlLCBmYWxzZSk7CisKKwkJLyoKKwkJICogV2UgbXVzdCBidW1wIHRoZSBj b21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxlCisJCSAq IHZpc2libGUgYWZ0ZXIgcmVuYW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOworCX0KKworCS8qIENyZWF0ZSBuZXcgcGFydGl0aW9ucyAobGlrZSBzcGxpdCBw YXJ0aXRpb24pLCB3aXRob3V0IGluZGV4ZXMuICovCisJZm9yZWFjaF9ub2RlKFNpbmdsZVBh cnRpdGlvblNwZWMsIHNwcywgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVJlbGF0aW9uCW5ld1Bh cnRSZWw7CisKKwkJbmV3UGFydFJlbCA9IGNyZWF0ZVBhcnRpdGlvblRhYmxlKHdxdWV1ZSwg c3BzLT5uYW1lLCByZWwsCisJCQkJCQkJCQkJICBzcGxpdFJlbC0+cmRfcmVsLT5yZWxvd25l cik7CisJCW5ld1BhcnRSZWxzID0gbGFwcGVuZChuZXdQYXJ0UmVscywgbmV3UGFydFJlbCk7 CisJfQorCisJLyoKKwkgKiBTd2l0Y2ggdG8gdGhlIHRhYmxlIG93bmVyJ3MgdXNlcmlkLCBz byB0aGF0IGFueSBpbmRleCBmdW5jdGlvbnMgYXJlIHJ1bgorCSAqIGFzIHRoYXQgdXNlci4g IEFsc28gbG9jayBkb3duIHNlY3VyaXR5LXJlc3RyaWN0ZWQgb3BlcmF0aW9ucyBhbmQKKwkg KiBhcnJhbmdlIHRvIG1ha2UgR1VDIHZhcmlhYmxlIGNoYW5nZXMgbG9jYWwgdG8gdGhpcyBj b21tYW5kLgorCSAqCisJICogTmVlZCB0byBkbyBpdCBhZnRlciBkZXRlcm1pbmUgbmFtZXNw YWNlIGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlIGNhbGwuCisJICovCisJR2V0VXNlcklkQW5k U2VjQ29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwlTZXRVc2Vy SWRBbmRTZWNDb250ZXh0KHNwbGl0UmVsLT5yZF9yZWwtPnJlbG93bmVyLAorCQkJCQkJICAg c2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFUSU9OKTsKKwlz YXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCVJlc3RyaWN0U2VhcmNoUGF0 aCgpOworCisJLyogQ29weSBkYXRhIGZyb20gc3BsaXQgcGFydGl0aW9uIHRvIG5ldyBwYXJ0 aXRpb25zLiAqLworCVNwbGl0UGFydGl0aW9uTW92ZVJvd3Mod3F1ZXVlLCByZWwsIHNwbGl0 UmVsLCBjbWQtPnBhcnRsaXN0LCBuZXdQYXJ0UmVscyk7CisJLyogS2VlcCB0aGUgbG9jayB1 bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2Uoc3BsaXRSZWwsIE5vTG9jayk7CisKKwkv KiBBdHRhY2ggbmV3IHBhcnRpdGlvbnMgdG8gcGFydGl0aW9uZWQgdGFibGUuICovCisJZm9y Ym90aChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJ eworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAq KSBsZmlyc3QobGlzdHB0cik7CisJCVJlbGF0aW9uCW5ld1BhcnRSZWwgPSAoUmVsYXRpb24p IGxmaXJzdChsaXN0cHRyMik7CisKKwkJLyoKKwkJICogd3F1ZXVlID0gTlVMTDogdmVyaWZp Y2F0aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdAorCQkgKiBuZWVkZWQu CisJCSAqLworCQlhdHRhY2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWws IHNwcy0+Ym91bmQpOworCQkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwkJ dGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKiBEcm9wIHNwbGl0 IHBhcnRpdGlvbi4gKi8KKwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsK KwlvYmplY3Qub2JqZWN0SWQgPSBzcGxpdFJlbE9pZDsKKwlvYmplY3Qub2JqZWN0U3ViSWQg PSAwOworCS8qIFByb2JhYmx5IERST1BfQ0FTQ0FERSBpcyBub3QgbmVlZGVkLiAqLworCXBl cmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKKworCS8qIFJvbGwg YmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zLiAqLwor CUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOworCisJLyogUmVzdG9yZSB1 c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQuICovCisJU2V0VXNlcklkQW5kU2VjQ29udGV4 dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRl eCAyM2VkOWFmNmU3Li5jYTg3MTlmZWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI1OCw2ICsy NTgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVBhcnRpdGlvbkVsZW0gKnBh cnRlbGVtOwogCVBhcnRpdGlvblNwZWMgKnBhcnRzcGVjOwogCVBhcnRpdGlvbkJvdW5kU3Bl YyAqcGFydGJvdW5kc3BlYzsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzaW5nbGVwYXJ0c3Bl YzsKIAlSb2xlU3BlYyAgICpyb2xlc3BlYzsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1Ymxp Y2F0aW9ub2JqZWN0c3BlYzsKIAlzdHJ1Y3QgU2VsZWN0TGltaXQgKnNlbGVjdGxpbWl0OwpA QCAtNjQxLDYgKzY0Miw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8 cGFydGVsZW0+CXBhcnRfZWxlbQogJXR5cGUgPGxpc3Q+CQlwYXJ0X3BhcmFtcwogJXR5cGUg PHBhcnRib3VuZHNwZWM+IFBhcnRpdGlvbkJvdW5kU3BlYworJXR5cGUgPHNpbmdsZXBhcnRz cGVjPglTaW5nbGVQYXJ0aXRpb25TcGVjCisldHlwZSA8bGlzdD4JCXBhcnRpdGlvbnNfbGlz dAogJXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hf cGFydGJvdW5kX2VsZW0KIApAQCAtNzcxLDcgKzc3NCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJU0FWRVBPSU5UIFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwgU0VB UkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNFTEVDVAogCVNFUVVFTkNFIFNFUVVFTkNFUwogCVNF UklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0Yg U0hBUkUgU0hPVwotCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09N RSBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAorCVNJTUlMQVIgU0lNUExFIFNL SVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUExJVCBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNU QU5EQUxPTkVfUAogCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElOIFNURE9VVCBT VE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJTkdfUCBTVFJJUF9QCiAJU1VCU0NSSVBUSU9O IFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNURU1fVVNF UgogCkBAIC0yMzU4LDYgKzIzNjEsMjMgQEAgYWx0ZXJfdGFibGVfY21kczoKIAkJCXwgYWx0 ZXJfdGFibGVfY21kcyAnLCcgYWx0ZXJfdGFibGVfY21kCXsgJCQgPSBsYXBwZW5kKCQxLCAk Myk7IH0KIAkJOwogCitwYXJ0aXRpb25zX2xpc3Q6CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVj CQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXJ0aXRpb25zX2xpc3Qg JywnIFNpbmdsZVBhcnRpdGlvblNwZWMJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7 CisKK1NpbmdsZVBhcnRpdGlvblNwZWM6CisJCQlQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUg UGFydGl0aW9uQm91bmRTcGVjCisJCQkJeworCQkJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpu ID0gbWFrZU5vZGUoU2luZ2xlUGFydGl0aW9uU3BlYyk7CisKKwkJCQkJbi0+bmFtZSA9ICQy OworCQkJCQluLT5ib3VuZCA9ICQzOworCisJCQkJCSQkID0gbjsKKwkJCQl9CisJCTsKKwog cGFydGl0aW9uX2NtZDoKIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElU SU9OIDx0YWJsZV9uYW1lPiBGT1IgVkFMVUVTICovCiAJCQlBVFRBQ0ggUEFSVElUSU9OIHF1 YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAtMjQwMiw2ICsyNDIyLDIwIEBA IHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQg PSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQ QVJUSVRJT04gPHBhcnRpdGlvbl9uYW1lPiBJTlRPICgpICovCisJCQl8IFNQTElUIFBBUlRJ VElPTiBxdWFsaWZpZWRfbmFtZSBJTlRPICcoJyBwYXJ0aXRpb25zX2xpc3QgJyknCisJCQkJ eworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJ CQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsKKworCQkJ CQluLT5zdWJ0eXBlID0gQVRfU3BsaXRQYXJ0aXRpb247CisJCQkJCWNtZC0+bmFtZSA9ICQz OworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9ICQ2Owor CQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikg Y21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUg PG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICovCiAJ CQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8g cXVhbGlmaWVkX25hbWUKIAkJCQl7CkBAIC0xODAzMSw2ICsxODA2NSw3IEBAIHVucmVzZXJ2 ZWRfa2V5d29yZDoKIAkJCXwgU0tJUAogCQkJfCBTTkFQU0hPVAogCQkJfCBTT1VSQ0UKKwkJ CXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApA QCAtMTg2NzEsNiArMTg3MDYsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNOQVBT SE9UCiAJCQl8IFNPTUUKIAkJCXwgU09VUkNFCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJ CQl8IFNUQUJMRQogCQkJfCBTVEFOREFMT05FX1AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRp bGNtZC5jCmluZGV4IDU2NGJhNTViNmQuLmQwOWNlMTI3NDkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYwpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHRyYW5z Zm9ybUNvbnN0cmFpbnRBdHRycyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJ IExpc3QgKmNvbnN0cmFpbnRMaXN0KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtblR5 cGUoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pOwogc3RhdGlj IHZvaWQgc2V0U2NoZW1hTmFtZShjb25zdCBjaGFyICpjb250ZXh0X3NjaGVtYSwgY2hhciAq KnN0bXRfc2NoZW1hX25hbWUpOwotc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21k KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKTsKK3N0YXRpYyB2 b2lkIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0 aXRpb25Cb3VuZFNwZWMgKmJvdW5kKTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1QYXJ0aXRp b25SYW5nZUJvdW5kcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0LAogCQkJCQkJ CQkJCSAgIFJlbGF0aW9uIHBhcmVudCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUluZmluaXRl Qm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QpOwpAQCAtMzUxNSw5ICsz NTE1LDExIEBAIHRyYW5zZm9ybVJ1bGVTdG10KFJ1bGVTdG10ICpzdG10LCBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywKIC8qCiAgKiBjaGVja1BhcnRpdGlvbgogICogQ2hlY2sgd2hldGhl ciBwYXJ0UmVsT2lkIGlzIGEgbGVhZiBwYXJ0aXRpb24gb2YgdGhlIHBhcmVudCB0YWJsZSAo cmVsKS4KKyAqIGlzX21lcmdlOiB0cnVlIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlzICJB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyI7CisgKiBmYWxzZSBpbmRpY2F0ZXMg dGhlIG9wZXJhdGlvbiBpcyAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiIuCiAg Ki8KIHN0YXRpYyB2b2lkCi1jaGVja1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0 UmVsT2lkKQorY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCwg Ym9vbCBpc19tZXJnZSkKIHsKIAlSZWxhdGlvbglwYXJ0UmVsOwogCkBAIC0zNTI3LDI1ICsz NTI5LDE3NSBAQCBjaGVja1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lk KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1Rf VFlQRSksCiAJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUiLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShwYXJ0UmVsKSksCi0JCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZl IHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzX21lcmdlCisJCQkJPyBlcnJoaW50KCJBTFRF UiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25z IGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKQorCQkJCTogZXJyaGludCgiQUxURVIgVEFC TEUgLi4uIFNQTElUIFBBUlRJVElPTiBjYW4gb25seSBzcGxpdCBwYXJ0aXRpb25zIGRvbid0 IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CiAKIAlpZiAoIXBhcnRSZWwtPnJkX3JlbC0+cmVs aXNwYXJ0aXRpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1dS T05HX09CSkVDVF9UWVBFKSwKIAkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRp b24gb2YgcGFydGl0aW9uZWQgdGFibGUgXCIlc1wiIiwKIAkJCQkJICAgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocGFydFJlbCksIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAot CQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5 IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKwkJCQlp c19tZXJnZQorCQkJCT8gZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25z IikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gY2Fu IG9ubHkgc3BsaXQgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwog CiAJaWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxh dGlvbkdldFJlbGlkKHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9UQUJMRSksCiAJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSwKLQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4g b25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJ CQkJaXNfbWVyZ2UKKwkJCQk/IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJU SVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0 aW9ucyIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9O IGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIp KTsKIAogCXRhYmxlX2Nsb3NlKHBhcnRSZWwsIE5vTG9jayk7CiB9CiAKKy8qCisgKiB0cmFu c2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdAorICoJCUFuYWx5emUgdGhlIEFMVEVSIFRBQkxF IC4uLiBTUExJVCBQQVJUSVRJT04gY29tbWFuZAorICoKKyAqIEZvciBlYWNoIG5ldyBwYXJ0 aXRpb24gc3BzLT5ib3VuZCBpcyBzZXQgdG8gdGhlIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGJv dW5kLgorICogRG9lcyBjaGVja3MgZm9yIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucy4KKyAq Lworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0KENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlSZWxhdGlvbglw YXJlbnQgPSBjeHQtPnJlbDsKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5 OworCU9pZAkJCXNwbGl0UGFydE9pZDsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlpbnQJ CQlkZWZhdWx0X2luZGV4ID0gLTE7CisJYm9vbAkJaXNTcGxpdFBhcnREZWZhdWx0OworCUxp c3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJTGlzdAkgICAqc3BsaXRs aXN0OworCisJc3BsaXRsaXN0ID0gcGFydGNtZC0+cGFydGxpc3Q7CisJa2V5ID0gUmVsYXRp b25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25f c3RyYXRlZ3koa2V5KTsKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9t X3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKwor CS8qIFRyYW5zZm9ybSBwYXJ0aXRpb24gYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0 aGUgbGlzdDogKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBz cGxpdGxpc3QpCisJeworCQljeHQtPnBhcnRib3VuZCA9IE5VTEw7CisJCXRyYW5zZm9ybVBh cnRpdGlvbkNtZChjeHQsIHNwcy0+Ym91bmQpOworCQkvKiBBc3NpZ24gdHJhbnNmb3JtZWQg dmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZC4gKi8KKwkJc3BzLT5ib3VuZCA9IGN4dC0+ cGFydGJvdW5kOworCX0KKworCS8qCisJICogT3BlbiBhbmQgbG9jayBwYXJ0aXRpb24sIGNo ZWNrIG93bmVyc2hpcCBhbG9uZyB0aGUgd2F5LiBXZSBuZWVkIHRvIHVzZQorCSAqIEFjY2Vz c0V4Y2x1c2l2ZUxvY2sgaGVyZSwgYmVjYXVzZSB0aGlzIHNwbGl0IHBhcnRpdGlvbiB3aWxs IGJlIGRldGFjaGVkCisJICogdGhlbiBkcm9wcGVkIGluIEFURXhlY1NwbGl0UGFydGl0aW9u LgorCSAqLworCXNwbGl0UGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChwYXJ0 Y21kLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLAorCQkJCQkJCQkJCQkwLCBSYW5nZVZh ckNhbGxiYWNrT3duc1JlbGF0aW9uLAorCQkJCQkJCQkJCQlOVUxMKTsKKworCWNoZWNrUGFy dGl0aW9uKHBhcmVudCwgc3BsaXRQYXJ0T2lkLCBmYWxzZSk7CisKKwlzd2l0Y2ggKHN0cmF0 ZWd5KQorCXsKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJY2FzZSBQQVJU SVRJT05fU1RSQVRFR1lfUkFOR0U6CisJCQl7CisJCQkJZm9yZWFjaF9ub2RlKFNpbmdsZVBh cnRpdGlvblNwZWMsIHNwcywgc3BsaXRsaXN0KQorCQkJCXsKKwkJCQkJaWYgKHNwcy0+Ym91 bmQtPmlzX2RlZmF1bHQpCisJCQkJCXsKKwkJCQkJCWlmIChkZWZhdWx0X2luZGV4ICE9IC0x KQorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCQllcnJtc2coIkRFRkFVTFQgcGFy dGl0aW9uIHNob3VsZCBiZSBvbmUiKSwKKwkJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihj eHQtPnBzdGF0ZSwgc3BzLT5uYW1lLT5sb2NhdGlvbikpOworCisJCQkJCQlkZWZhdWx0X2lu ZGV4ID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KHNwcyk7CisJCQkJCX0KKwkJCQl9CisJCQl9 CisJCQlicmVhazsKKworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9IQVNIOgorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUg Y2Fubm90IGJlIHNwbGl0IikpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2co RVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQiLAorCQkJCSAoaW50 KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJyZWFrOworCX0KKworCS8qIGlzU3BsaXRQYXJ0RGVm YXVsdDogaXMgdGhlIGJlaW5nIHNwbGl0IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9u PyAqLworCWlzU3BsaXRQYXJ0RGVmYXVsdCA9IChkZWZhdWx0UGFydE9pZCA9PSBzcGxpdFBh cnRPaWQpOworCisJaWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCAmJiBkZWZhdWx0X2luZGV4ID09 IC0xKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImNhbiBub3Qgc3BsaXQgREVGQVVMVCBw YXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkp LAorCQkJCWVycmhpbnQoIlRvIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIG9uZSBvZiB0aGUg bmV3IHBhcnRpdGlvbiBtc3V0IGJlIERFRkFVTFQiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRp b24oY3h0LT5wc3RhdGUsICgoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaW5pdGlhbChzcGxp dGxpc3QpKS0+bmFtZS0+bG9jYXRpb24pKTsKKworCS8qCisJICogSWYgdGhlIHBhcnRpdGlv biBiZWluZyBzcGxpdCBpcyBub3QgREVGQVVMVCBhbmQgREVGQVVMVCBwYXJ0aXRpb24KKwkg KiBleGlzdHMsIHRoZW4gdGhlIHJlc3VsdGluZyBzcGxpdCBwYXJ0aXRpb25zIGNhbm5vdCBi ZSBERUZBVUxULgorCSAqLworCWlmICghaXNTcGxpdFBhcnREZWZhdWx0ICYmIChkZWZhdWx0 X2luZGV4ICE9IC0xKSAmJiBPaWRJc1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSkKKwl7CisJCVNp bmdsZVBhcnRpdGlvblNwZWMgKnNwc0RlZiA9CisJCQkoU2luZ2xlUGFydGl0aW9uU3BlYyAq KSBsaXN0X250aChzcGxpdGxpc3QsIGRlZmF1bHRfaW5kZXgpOworCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAor CQkJCWVycm1zZygiY2FuIG5vdCBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gXCIlc1wi IiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAorCQkJCWVycm1zZygi bmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0 aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCSAgIGdldF9yZWxfbmFtZShkZWZh dWx0UGFydE9pZCkpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgc3Bz RGVmLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKworCWZvcmVhY2gobGlzdHB0ciwgc3BsaXRs aXN0KQorCXsKKwkJT2lkCQkJbnNwaWQ7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9 IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmFuZ2VWYXIg ICAqbmFtZSA9IHNwcy0+bmFtZTsKKworCQluc3BpZCA9IFJhbmdlVmFyR2V0Q3JlYXRpb25O YW1lc3BhY2Uoc3BzLT5uYW1lKTsKKworCQkvKiBQYXJ0aXRpb25zIGluIHRoZSBsaXN0IHNo b3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yX2VhY2hfY2VsbChsaXN0cHRy Miwgc3BsaXRsaXN0LCBsbmV4dChzcGxpdGxpc3QsIGxpc3RwdHIpKQorCQl7CisJCQlPaWQJ CQluc3BpZDI7CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMyID0gKFNpbmdsZVBhcnRp dGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIyKTsKKwkJCVJhbmdlVmFyICAgKm5hbWUyID0g c3BzMi0+bmFtZTsKKworCQkJaWYgKGVxdWFsKG5hbWUsIG5hbWUyKSkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJ CQllcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFscmVhZHkgdXNlZCIs IG5hbWUtPnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRl LCBuYW1lMi0+bG9jYXRpb24pKTsKKworCQkJbnNwaWQyID0gUmFuZ2VWYXJHZXRDcmVhdGlv bk5hbWVzcGFjZShzcHMyLT5uYW1lKTsKKworCQkJaWYgKG5zcGlkMiA9PSBuc3BpZCAmJiBz dHJjbXAobmFtZS0+cmVsbmFtZSwgbmFtZTItPnJlbG5hbWUpID09IDApCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJ CQkJZXJybXNnKCJwYXJ0aXRpb24gd2l0aCBuYW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQi LCBuYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0 ZSwgbmFtZTItPmxvY2F0aW9uKSk7CisJCX0KKwl9CisKKwkvKiBUaGVuIHdlIHNob3VsZCBj aGVjayBwYXJ0aXRpb25zIHdpdGggdHJhbnNmb3JtZWQgYm91bmRzLiAqLworCWNoZWNrX3Bh cnRpdGlvbnNfZm9yX3NwbGl0KHBhcmVudCwgc3BsaXRQYXJ0T2lkLCBzcGxpdGxpc3QsIGN4 dC0+cHN0YXRlKTsKK30KKworCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVy Z2UKICAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBj b21tYW5kCkBAIC0zNjIyLDcgKzM3NzQsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JN ZXJnZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCiAJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7 CiAJCX0KIAotCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCQljaGVja1Bh cnRpdGlvbihwYXJlbnQsIHBhcnRPaWQsIHRydWUpOwogCiAJCXBhcnRPaWRzID0gbGFwcGVu ZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOwogCX0KQEAgLTM5MTAsNyArNDA2Miw3IEBAIHRy YW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQs CiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICop IGNtZC0+ZGVmOwogCi0JCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21k KTsKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQtPmJvdW5kKTsK IAkJCQkJLyogYXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91 bmQgKi8KIAkJCQkJcGFydGNtZC0+Ym91bmQgPSBjeHQucGFydGJvdW5kOwogCQkJCX0KQEAg LTM5MzIsNiArNDA4NCwyMCBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQs IEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQlicmVhazsKIAkJCQl9CiAKKwkJCWNhc2Ug QVRfU3BsaXRQYXJ0aXRpb246CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQg PSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChw YXJ0Y21kLT5wYXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQll cnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3Qg dHdvIHBhcnRpdGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3Bs aXQoJmN4dCwgcGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNt ZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCkBAIC00 MzYyLDEzICs0NTI4LDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9z Y2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJhbnNmb3JtUGFy dGl0aW9uQ21kCi0gKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29t bWFuZAorICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFSVElUSU9OIGNv bW1hbmQKICAqCi0gKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9OIGNvbW1hbmQs IGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKLSAqIHRyYW5zZm9ybWVkIHZhbHVlIG9m IGNtZC0+Ym91bmQuCisgKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQgUEFSVElUSU9O IGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKKyAqIHRyYW5zZm9ybWVk IHZhbHVlIG9mIGJvdW5kLgogICovCiBzdGF0aWMgdm9pZAotdHJhbnNmb3JtUGFydGl0aW9u Q21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQordHJhbnNm b3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5k U3BlYyAqYm91bmQpCiB7CiAJUmVsYXRpb24JcGFyZW50UmVsID0gY3h0LT5yZWw7CiAKQEAg LTQzNzcsOSArNDU0Myw5IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29u dGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFOgogCQkJLyogdHJhbnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91bmQsIGlmIGFu eSAqLwogCQkJQXNzZXJ0KFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudFJlbCkgIT0g TlVMTCk7Ci0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5V TEwpCiAJCQkJY3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25Cb3VuZChjeHQt PnBzdGF0ZSwgcGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21kLT5ib3VuZCk7CisJCQkJ CQkJCQkJCQkJCSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElP TkVEX0lOREVYOgogCkBAIC00Mzg3LDcgKzQ1NTMsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25D bWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCQkgKiBB IHBhcnRpdGlvbmVkIGluZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJvdW5kIHNldC4g IEFMVEVSCiAJCQkgKiBJTkRFWCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdyYW1tYXIsIGJ1 dCBub3QgQUxURVIgVEFCTEUuCiAJCQkgKi8KLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwp CisJCQlpZiAoYm91bmQgIT0gTlVMTCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJt c2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA2MGMxMDM2Y2U4Li5mMWRlN2NlZDc2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTE3LDYgKzE3LDcg QEAKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFi bGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cv bmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CkBAIC00OTg0LDE1ICs0OTg1LDIzIEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19G VU5DVElPTl9BUkdTKQogICoKICAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9u aW5nKQogICoKLSAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9w YXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0 aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICogY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KICAqIFRoaXMgZnVuY3Rpb24gY29tcGFy ZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCi0gKiBz ZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKiBzZWNvbmRf Ym91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdoZW4KKyAqICJk ZWZhdWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBwYXJ0 aXRpb25zIGlzIERFRkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9mIGZp cnN0X2JvdW5kIGNhbiBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9i b3VuZCBiZWNhdXNlIHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIERFRkFVTFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVudDoJCQlwYXJ0aXRp b25lZCB0YWJsZQogICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCiAg KiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgogICogc2Vjb25kX25h bWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KICAqIHNlY29uZF9ib3VuZDoJYm91bmQg b2Ygc2Vjb25kIHBhcnRpdGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBvZiBu ZXcgcGFydGl0aW9ucyBpcyBERUZBVUxUCisgKiBpc19tZXJnZTogICAgICAgIHRydWUgaW5k aWNhdGVzIHRoZSBvcGVyYXRpb24gaXMgTUVSR0UgUEFSVElUSU9OUzsKKyAqIAkJCQkJZmFs c2UgaW5kaWNhdGVzIHRoZSBvcGVyYXRpb24gaXMgU1BMSVQgUEFSVElUSU9OLgogICogcHN0 YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVy cm9yIHBvc2l0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC01MDAxLDYgKzUwMTAsOCBAQCBj aGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJ CQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqZmlyc3RfYm91bmQsCiAJCQkJCQkJCSAgUmFu Z2VWYXIgKnNlY29uZF9uYW1lLAogCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc2Vj b25kX2JvdW5kLAorCQkJCQkJCQkgIGJvb2wgZGVmYXVsdFBhcnQsCisJCQkJCQkJCSAgYm9v bCBpc19tZXJnZSwKIAkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCiB7CiAJUGFydGl0 aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CkBAIC01MDIy LDE4ICs1MDMzLDI4IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxh dGlvbiBwYXJlbnQsCiAJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJCQkJCQkg IHNlY29uZF9sb3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCiAJCQkJCQkJCSAg ZmFsc2UsIGZpcnN0X3VwcGVyKTsKLQlpZiAoY21wdmFsKQorCWlmICgoIWRlZmF1bHRQYXJ0 ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQogCXsKIAkJUGFy dGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxvd2Vy ZGF0dW1zKTsKIAotCQllcmVwb3J0KEVSUk9SLAotCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKLQkJCQllcnJtc2coImNhbiBub3QgbWVyZ2UgcGFy dGl0aW9uIFwiJXNcIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAotCQkJCQkg ICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCi0JCQkJZXJy ZGV0YWlsKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0 byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCi0JCQkJCQkgIHNlY29u ZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKLQkJCQllcnJoaW50KCJB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9u IGJvdW5kcyB0byBiZSBhZGphY2VudC4iKSwKLQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJaWYgKGlzX21lcmdlKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04p LAorCQkJCQllcnJtc2coImNhbiBub3QgbWVyZ2UgcGFydGl0aW9uIFwiJXNcIiB0b2dldGhl ciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJICAgc2Vjb25kX25hbWUtPnJlbG5h bWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCQllcnJkZXRhaWwoImxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBv ZiBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCQkgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBm aXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1F UkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRq YWNlbnQuIiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2Nh dGlvbikpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCWVycm1zZygiY2FuIG5vdCBz cGxpdCB0byBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uIFwiJXNc IiIsCisJCQkJCQkgICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFt ZSksCisJCQkJCWVycmRldGFpbCgibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBp cyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIiLAor CQkJCQkJCSAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAor CQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmVz IHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LiIpLAorCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKIAl9CiB9CiAKQEAgLTUx MzYsNiArNTE1Nyw4IEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJl bGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikg bGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKIAkJCQkJCQkJCQkJCQkgIChSYW5nZVZh ciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKIAkJCQkJCQkJCQkJCQkgIChQYXJ0 aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCksCisJCQkJCQkJCQkJ CQkJICBmYWxzZSwKKwkJCQkJCQkJCQkJCQkgIHRydWUsCiAJCQkJCQkJCQkJCQkJICBwc3Rh dGUpOwogCQkJCX0KIApAQCAtNTE3NCwzICs1MTk3LDY5MSBAQCBjYWxjdWxhdGVfcGFydGl0 aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJIChpbnQpIGtleS0+ c3RyYXRlZ3kpOwogCX0KIH0KKworLyoKKyAqIHBhcnRpdGlvbnNfbGlzdGRhdHVtX2ludGVy c2VjdGlvbgorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisg KgorICogRnVuY3Rpb24gY29tcGFyZXMgbGlzdHMgb2YgdmFsdWVzIGZvciBkaWZmZXJlbnQg cGFydGl0aW9ucy4KKyAqIFJldHVybiBhIGxpc3QgdGhhdCBjb250YWlucyAqb25lKiBjZWxs IHRoYXQgYXJlIGluIGJvdGggbGlzdDEgYW5kCisgKiBsaXN0Mi4gIFRoZSByZXR1cm5lZCBs aXN0IGlzIGZyZXNobHkgYWxsb2NhdGVkIHZpYSBwYWxsb2MoKSwgYnV0IHRoZQorICogY2Vs bHMgdGhlbXNlbHZlcyBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzIGFzIHRoZSBjZWxscyBv ZiB0aGUKKyAqIGlucHV0IGxpc3RzLgorICoKKyAqIEN1cnJlbnRseSwgdGhlcmUgaXMgbm8g bmVlZCB0byBjb2xsZWN0IGFsbCBjb21tb24gcGFydGl0aW9uIGRhdHVtcyBmcm9tIHRoZQor ICogdHdvIGxpc3RzLgorICovCitzdGF0aWMgTGlzdCAqCitwYXJ0aXRpb25zX2xpc3RkYXR1 bV9pbnRlcnNlY3Rpb24oRm1nckluZm8gKnBhcnRzdXBmdW5jLCBPaWQgKnBhcnRjb2xsYXRp b24sCisJCQkJCQkJCSAgY29uc3QgTGlzdCAqbGlzdDEsIGNvbnN0IExpc3QgKmxpc3QyKQor eworCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKwlib29sCQlpc251bGwxID0gZmFsc2U7CisJ Ym9vbAkJaXNudWxsMiA9IGZhbHNlOworCisJaWYgKGxpc3QxID09IE5JTCB8fCBsaXN0MiA9 PSBOSUwpCisJCXJldHVybiByZXN1bHQ7CisKKwlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbDEs IGxpc3QxKQorCXsKKwkJaWYgKHZhbDEtPmNvbnN0aXNudWxsKQorCQl7CisJCQlpZiAoaXNu dWxsMikKKwkJCXsKKwkJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgdmFsMSk7CisJCQkJ cmV0dXJuIHJlc3VsdDsKKwkJCX0KKwkJCWlzbnVsbDEgPSB0cnVlOworCQkJY29udGludWU7 CisJCX0KKworCQlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbDIsIGxpc3QyKQorCQl7CisJCQlp ZiAodmFsMi0+Y29uc3Rpc251bGwpCisJCQl7CisJCQkJaWYgKGlzbnVsbDEpCisJCQkJewor CQkJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgdmFsMSk7CisJCQkJCXJldHVybiByZXN1 bHQ7CisJCQkJfQorCQkJCWlzbnVsbDIgPSB0cnVlOworCQkJCWNvbnRpbnVlOworCQkJfQor CisJCQkvKiBDb21wYXJlIHR3byBkYXR1bXMgdmFsdWVzLiAqLworCQkJaWYgKERhdHVtR2V0 SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJ cGFydGNvbGxhdGlvblswXSwKKwkJCQkJCQkJCQkJCXZhbDEtPmNvbnN0dmFsdWUsCisJCQkJ CQkJCQkJCQl2YWwyLT5jb25zdHZhbHVlKSkgPT0gMCkKKwkJCXsKKwkJCQlyZXN1bHQgPSBs YXBwZW5kKHJlc3VsdCwgdmFsMSk7CisJCQkJcmV0dXJuIHJlc3VsdDsKKwkJCX0KKwkJfQor CX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25zX25v dF9vdmVybGFwX2xpc3QKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9u aW5nKQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNrX3BhcnRp dGlvbnNfZm9yX3NwbGl0KCkuCisgKiBDaGVja3MgdGhhdCB0aGUgdmFsdWVzIG9mIHRoZSBu ZXcgcGFydGl0aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAqCisgKiBwYXJlbnQ6CXBhcnRpdGlv bmVkIHRhYmxlCisgKiBwYXJ0czoJYXJyYXkgb2YgU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1 Y3RzIHdpdGggaW5mbyBhYm91dCBzcGxpdCBwYXJ0aXRpb25zCisgKiBucGFydHM6CXNpemUg b2YgYXJyYXkgInBhcnRzIgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uc19u b3Rfb3ZlcmxhcF9saXN0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0 aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBQ YXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSBQR19VU0VEX0ZPUl9B U1NFUlRTX09OTFkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCWludAkJ CWksCisJCQkJajsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMxLAorCQkJICAgKnNwczI7 CisJTGlzdAkgICAqb3ZlcmxhcDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJ VElPTl9TVFJBVEVHWV9MSVNUKTsKKworCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykK Kwl7CisJCXNwczEgPSBwYXJ0c1tpXTsKKworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0 czsgaisrKQorCQl7CisJCQlzcHMyID0gcGFydHNbal07CisKKwkJCW92ZXJsYXAgPSBwYXJ0 aXRpb25zX2xpc3RkYXR1bV9pbnRlcnNlY3Rpb24oJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJ CQkJCQkJCQkJCQkJCWtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJCQkJc3BzMS0+ Ym91bmQtPmxpc3RkYXR1bXMsCisJCQkJCQkJCQkJCQkJCXNwczItPmJvdW5kLT5saXN0ZGF0 dW1zKTsKKwkJCWlmIChsaXN0X2xlbmd0aChvdmVybGFwKSA+IDApCisJCQl7CisJCQkJQ29u c3QJICAgKnZhbCA9IChDb25zdCAqKSBsaW5pdGlhbF9ub2RlKENvbnN0LCBvdmVybGFwKTsK KworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wi IHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJ CQkJCQkgICBzcHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJ CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSB2 YWwpKSk7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25fYm91 bmRzX2Zvcl9zcGxpdF9yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFy dGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9u ICJzcGVjIiBhcmUgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdAorICogcGFydGl0aW9uICh3aXRo IE9pZCBzcGxpdFBhcnRPaWQpLiBJZiBmaXJzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNw ZWMiIGlzCisgKiB0aGUgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMpIHRoZW4gbG93ZXIgYm91 bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IKKyAqIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0 CisgKiBwYXJ0aXRpb24uIElmIGxhc3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVjIiBp cyB0aGUgbGFzdCBvZiBuZXcKKyAqIHBhcnRpdGlvbnMpIHRoZW4gdXBwZXIgYm91bmQgb2Yg InNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yCisgKiBlcXVhbCBpbiBj YXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv bi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJ bmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNh dGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0 aXRpb24gT2lkCisgKiBmaXJzdDoJCQl0cnVlIGluIGNhc2UgbmV3IHBhcnRpdGlvbiAic3Bl YyIgaXMgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGxhc3Q6CQkJdHJ1ZSBpbiBjYXNl IG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIGxhc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGRl ZmF1bHRQYXJ0OgkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW4gREVGQVVM VCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0 IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNr X3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJ CQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNw ZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAg Ym9vbCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wg ZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFy dGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFs OworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KTsKKworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVj LT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJv dW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZp cnN0IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBz cGVjaWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3Vu ZF9jbXAgY2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJv dW5kIGZsYWdzIGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Ji b3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywK KwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVt cywgbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2 YWwgIT0gMCk7CisJaWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVt YXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5n ZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAx KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNp ZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5hbWUpLAorCQkJCWVy cmRldGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5k X3N0cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91 bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIGRhdHVtKSkpOworCX0KKworCS8qIE5l ZWQgdG8gY2hlY2sgZmlyc3QgYW5kIGxhc3QgcGFydGl0aW9ucyAoZnJvbSBzZXQgb2YgbmV3 IHBhcnRpdGlvbnMpICovCisJaWYgKGZpcnN0IHx8IGxhc3QpCisJeworCQlQYXJ0aXRpb25C b3VuZFNwZWMgKnNwbGl0X3NwZWMgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoc3BsaXRQ YXJ0T2lkKTsKKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW07CisKKwkJaWYgKGZpcnN0 KQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICpzcGxpdF9sb3dlcjsKKworCQkJc3Bs aXRfbG93ZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwbGl0X3Nw ZWMtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKworCQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3Vu ZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAor CQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAgbG93ZXItPmRh dHVtcywgbG93ZXItPmtpbmQsCisJCQkJCQkJCQkJICB0cnVlLCBzcGxpdF9sb3dlcik7CisJ CQlpZiAoY21wdmFsICE9IDApCisJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRh dHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKworCQkJLyoKKwkJCSAqIFRoZSBsb3dlciBib3Vu ZCBvZiAic3BlYyIgbXVzdCBlcXVhbCB0byB0aGUgbG93ZXIgYm91bmQgb2YgdGhlCisJCQkg KiBzcGxpdCBwYXJ0aXRpb24uICBIb3dldmVyLCBpZiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRp b25zIGlzCisJCQkgKiBERUZBVUxULCB0aGVuIGl0IGlzIG9rIGZvciB0aGUgbmV3IHBhcnRp dGlvbidzIGxvd2VyIGJvdW5kIHRvCisJCQkgKiBiZSBncmVhdGVyIHRoYW4gdGhhdCBvZiB0 aGUgc3BsaXQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAoIWRlZmF1bHRQYXJ0KQorCQkJ eworCQkJCWlmIChjbXB2YWwgIT0gMCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJy bXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byBs b3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCQkJICAgcmVs bmFtZSwKKwkJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAorCQkJCQkJ CWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25z IG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbiIs CisJCQkJCQkJCQkiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiIpLAorCQkJCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBkYXR1 bSkpKTsKKwkJCX0KKwkJCWVsc2UgaWYgKGNtcHZhbCA8IDApCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkJCWVycm1zZygibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBsZXNz IHRoYW4gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkJ ICAgcmVsbmFtZSwKKwkJCQkJCQkgICBnZXRfcmVsX25hbWUoc3BsaXRQYXJ0T2lkKSksCisJ CQkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRp b24iLAorCQkJCQkJCQkiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiIpLAorCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIGRh dHVtKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqc3Bs aXRfdXBwZXI7CisKKwkJCXNwbGl0X3VwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3Vu ZChrZXksIC0xLCBzcGxpdF9zcGVjLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJCQljbXB2 YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJCQkg IGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJ CQkJCQkJCQkJICB1cHBlci0+ZGF0dW1zLCB1cHBlci0+a2luZCwKKwkJCQkJCQkJCQkgIGZh bHNlLCBzcGxpdF91cHBlcik7CisJCQlpZiAoY21wdmFsICE9IDApCisJCQkJZGF0dW0gPSBs aXN0X250aChzcGVjLT51cHBlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKworCQkJLyoK KwkJCSAqIFRoZSB1cHBlciBib3VuZCBvZiAic3BlYyIgbXVzdCBlcXVhbCB0byB0aGUgdXBw ZXIgYm91bmQgb2YgdGhlCisJCQkgKiBzcGxpdCBwYXJ0aXRpb24uICBIb3dldmVyLCBpZiBv bmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIGlzCisJCQkgKiBERUZBVUxULCB0aGVuIGl0IGlz IG9rIGZvciB0aGUgbmV3IHBhcnRpdGlvbidzIHVwcGVyIGJvdW5kIHRvCisJCQkgKiBiZSBs ZXNzIHRoYW4gdGhhdCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAo IWRlZmF1bHRQYXJ0KQorCQkJeworCQkJCWlmIChjbXB2YWwgIT0gMCkKKwkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCisJCQkJCQkJZXJybXNnKCJ1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wi IGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gXCIlc1wi IiwKKwkJCQkJCQkJICAgcmVsbmFtZSwKKwkJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0 UGFydE9pZCkpLAorCQkJCQkJCWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmluZWQgYm91bmRz IG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhl IHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCQkiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBB UlRJVElPTiIpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2Nh dGlvbigoTm9kZSAqKSBkYXR1bSkpKTsKKwkJCX0KKwkJCWVsc2UgaWYgKGNtcHZhbCA+IDAp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygidXBwZXIgYm91bmQgb2YgcGFydGl0 aW9uIFwiJXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0 aW9uIFwiJXNcIiIsCisJCQkJCQkJICAgcmVsbmFtZSwKKwkJCQkJCQkgICBnZXRfcmVsX25h bWUoc3BsaXRQYXJ0T2lkKSksCisJCQkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVk IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5k IG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkiQUxURVIgVEFCTEUgLi4uIFNQ TElUIFBBUlRJVElPTiIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhw ckxvY2F0aW9uKChOb2RlICopIGRhdHVtKSkpOworCQl9CisJfQorfQorCisvKgorICogY2hl Y2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdAorICoKKyAqIChmdW5jdGlvbiBm b3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9m IG5ldyBwYXJ0aXRpb24gYXJlIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCisg KiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9u ZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICog c3BlYzoJCQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICog c3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBwc3RhdGU6CQkJcG9pbnRl ciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisg Ki8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0 KFJlbGF0aW9uIHBhcmVudCwgY2hhciAqcmVsbmFtZSwKKwkJCQkJCQkJCSAgUGFydGl0aW9u Qm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJ CQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0 aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25C b3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQl3aXRo ID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNlOworCWludAkJCW92ZXJsYXBfbG9jYXRp b24gPSAtMTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVH WV9MSVNUKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZ X0xJU1QpOworCUFzc2VydChib3VuZGluZm8gJiYgYm91bmRpbmZvLT5zdHJhdGVneSA9PSBQ QVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNlYXJjaCBlYWNoIHZhbHVl IG9mIG5ldyBwYXJ0aXRpb24gInNwZWMiIGluIGV4aXN0aW5nIHBhcnRpdGlvbnMuIEFsbAor CSAqIG9mIHRoZW0gc2hvdWxkIGJlIGluIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBPaWQgc3Bs aXRQYXJ0T2lkKS4KKwkgKi8KKwlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbCwgc3BlYy0+bGlz dGRhdHVtcykKKwl7CisJCW92ZXJsYXBfbG9jYXRpb24gPSBleHByTG9jYXRpb24oKE5vZGUg KikgdmFsKTsKKwkJaWYgKCF2YWwtPmNvbnN0aXNudWxsKQorCQl7CisJCQlpbnQJCQlvZmZz ZXQ7CisJCQlib29sCQllcXVhbDsKKworCQkJb2Zmc2V0ID0gcGFydGl0aW9uX2xpc3RfYnNl YXJjaCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJa2V5LT5wYXJ0Y29sbGF0 aW9uLAorCQkJCQkJCQkJCQlib3VuZGluZm8sCisJCQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1 ZSwKKwkJCQkJCQkJCQkJJmVxdWFsKTsKKwkJCWlmIChvZmZzZXQgPj0gMCAmJiBlcXVhbCkK KwkJCXsKKwkJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRleGVzW29mZnNldF07CisJCQkJaWYg KHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCQl7CisJCQkJCW92 ZXJsYXAgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9E RUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgY2Fubm90 IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIgZG9lcyBu b3QgaGF2ZSIsCisJCQkJCQkJICAgcmVsbmFtZSwKKwkJCQkJCQkgICBnZXRfcmVsX25hbWUo c3BsaXRQYXJ0T2lkKSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVy bGFwX2xvY2F0aW9uKSk7CisJCX0KKwkJZWxzZSBpZiAocGFydGl0aW9uX2JvdW5kX2FjY2Vw dHNfbnVsbHMoYm91bmRpbmZvKSkKKwkJeworCQkJd2l0aCA9IGJvdW5kaW5mby0+bnVsbF9p bmRleDsKKwkJCWlmIChwYXJ0ZGVzYy0+b2lkc1t3aXRoXSAhPSBzcGxpdFBhcnRPaWQpCisJ CQl7CisJCQkJb3ZlcmxhcCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJZWxz ZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JK RUNUX0RFRklOSVRJT04pLAorCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIGNh bm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gXCIlc1wiIGRv ZXMgbm90IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSwKKwkJCQkJCSAgIGdldF9yZWxfbmFt ZShzcGxpdFBhcnRPaWQpKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3Zl cmxhcF9sb2NhdGlvbikpOworCX0KKworCWlmIChvdmVybGFwKQorCXsKKwkJQXNzZXJ0KHdp dGggPj0gMCk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVz XCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uIFwi JXNcIiIsCisJCQkJCSAgIHJlbG5hbWUsIGdldF9yZWxfbmFtZShwYXJ0ZGVzYy0+b2lkc1t3 aXRoXSkpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRp b24pKTsKKwl9Cit9CisKKy8qCisgKiBmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xp c3QKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAq IEZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpbiBjYXNlIGFueSBvZiBuZXcgcGFydGl0aW9ucyBj b250YWlucyB2YWx1ZSAidmFsdWUiLgorICoKKyAqIHBhcnRzdXBmdW5jOgkJaW5mb3JtYXRp b24gYWJvdXQgY29tcGFyaXNvbiBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhcnRp dGlvbiBrZXkKKyAqIHBhcnRjb2xsYXRpb246CXBhcnRpdGlvbmluZyBjb2xsYXRpb24KKyAq IHBhcnRzOgkJCXBvaW50ZXIgdG8gYXJyYXkgd2l0aCBuZXcgcGFydGl0aW9ucyBkZXNjcmlw dGlvbnMKKyAqIG5wYXJ0czoJCQludW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHZhbHVl OgkJCXRoZSB2YWx1ZSB0aGF0IHdlIGFyZSBsb29raW5nIGZvcgorICogaXNudWxsOgkJCXRy dWUgaWYgdGhlIHZhbHVlIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yIGlzIE5VTEwKKyAqLwor c3RhdGljIGJvb2wKK2ZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdChGbWdySW5m byAqcGFydHN1cGZ1bmMsCisJCQkJCQkJCSAgT2lkICpwYXJ0Y29sbGF0aW9uLAorCQkJCQkJ CQkgIFNpbmdsZVBhcnRpdGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRz LAorCQkJCQkJCQkgIERhdHVtIHZhbHVlLAorCQkJCQkJCQkgIGJvb2wgaXNudWxsKQorewor CWZvciAoaW50IGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHMgPSBwYXJ0c1tpXTsKKworCQlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbCwg c3BzLT5ib3VuZC0+bGlzdGRhdHVtcykKKwkJeworCQkJaWYgKGlzbnVsbCAmJiB2YWwtPmNv bnN0aXNudWxsKQorCQkJCXJldHVybiB0cnVlOworCisJCQlpZiAoIWlzbnVsbCAmJiAhdmFs LT5jb25zdGlzbnVsbCkKKwkJCXsKKwkJCQlpZiAoRGF0dW1HZXRJbnQzMihGdW5jdGlvbkNh bGwyQ29sbCgmcGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkJcGFydGNvbGxhdGlvblsw XSwKKwkJCQkJCQkJCQkJCQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCQkJdmFsdWUp KSA9PSAwKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4gZmFs c2U7Cit9CisKKy8qCisgKiBjaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25z CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBD aGVja3MgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBPaWQgcGFy dE9pZCkgYXJlIGNvbnRhaW5lZAorICogaW4gbmV3IHBhcnRpdGlvbnMuCisgKgorICogcGFy ZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9p ZAorICogcGFydHM6CXBvaW50ZXIgdG8gYXJyYXkgd2l0aCBuZXcgcGFydGl0aW9ucyBkZXNj cmlwdGlvbnMKKyAqIG5wYXJ0czoJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiBwc3Rh dGU6CXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBw b3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdf cGFydGl0aW9ucyhSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBwYXJ0T2lkLAor CQkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCQkgIGlu dCBucGFydHMsCisJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRp b25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRp b25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFs c2UpOworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRp bmZvOworCWludAkJCWk7CisJYm9vbAkJZm91bmQgPSB0cnVlOworCURhdHVtCQlkYXR1bSA9 IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBB UlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCS8qCisJICogU3BlY2lhbCBwcm9jZXNzaW5n IGZvciBOVUxMIHZhbHVlLiBTZWFyY2ggTlVMTCB2YWx1ZSBpZiB0aGUgc3BsaXQKKwkgKiBw YXJ0aXRpb24gKHBhcnRPaWQpIGNvbnRhaW5zIGl0LgorCSAqLworCWlmIChwYXJ0aXRpb25f Ym91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pICYmCisJCXBhcnRkZXNjLT5vaWRzW2Jv dW5kaW5mby0+bnVsbF9pbmRleF0gPT0gcGFydE9pZCkKKwl7CisJCWlmICghZmluZF92YWx1 ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJ CQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCB0cnVl KSkKKwkJCWZvdW5kID0gZmFsc2U7CisJfQorCisJaWYgKCFmb3VuZCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiks CisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9ucyBjb21iaW5lZCBwYXJ0aXRpb24gYm91bmRz IGRvIG5vdCBjb250YWluIHZhbHVlICglcykgYnV0IHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIg ZG9lcyIsCisJCQkJCSAgICJOVUxMIiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKHBhcnRPaWQp KSwKKwkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFy dGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0 aXRpb24iLAorCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04iKSk7CisK KwkvKgorCSAqIFNlYXJjaCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiB3aXRoIHBh cnRPaWQgaW4gUGFydGl0aW9uRGVzYyBvZgorCSAqIHBhcnRpdGlvbmVkIHRhYmxlLgorCSAq LworCWZvciAoaSA9IDA7IGkgPCBib3VuZGluZm8tPm5kYXR1bXM7IGkrKykKKwl7CisJCWlm IChwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPmluZGV4ZXNbaV1dID09IHBhcnRPaWQpCisJ CXsKKwkJCS8qIFdlIGZvdW5kIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5z LiAqLworCQkJZGF0dW0gPSBib3VuZGluZm8tPmRhdHVtc1tpXVswXTsKKwkJCWlmICghZmlu ZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAor CQkJCQkJCQkJCQkJICAga2V5LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBkYXR1 bSwgZmFsc2UpKQorCQkJeworCQkJCWZvdW5kID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9 CisJCX0KKwl9CisKKwlpZiAoIWZvdW5kKQorCXsKKwkJQ29uc3QJICAgKm5vdEZvdW5kVmFs OworCisJCS8qCisJCSAqIE1ha2UgQ29uc3QgZm9yIGdldHRpbmcgc3RyaW5nIHJlcHJlc2Vu dGF0aW9uIG9mIG5vdCBmb3VuZCB2YWx1ZS4KKwkJICovCisJCW5vdEZvdW5kVmFsID0gbWFr ZUNvbnN0KGtleS0+cGFydHR5cGlkWzBdLAorCQkJCQkJCQlrZXktPnBhcnR0eXBtb2RbMF0s CisJCQkJCQkJCWtleS0+cGFydHR5cGNvbGxbMF0sCisJCQkJCQkJCWtleS0+cGFydHR5cGxl blswXSwKKwkJCQkJCQkJZGF0dW0sCisJCQkJCQkJCWZhbHNlLAkvKiBpc251bGwgKi8KKwkJ CQkJCQkJa2V5LT5wYXJ0dHlwYnl2YWxbMF0pOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1z ZygibmV3IHBhcnRpdGlvbnMgY29tYmluZWQgcGFydGl0aW9uIGJvdW5kcyBkbyBub3QgY29u dGFpbiB2YWx1ZSAoJXMpIGJ1dCBzcGxpdCBwYXJ0aXRpb24gXCIlc1wiIGRvZXMiLAorCQkJ CQkgICBkZXBhcnNlX2V4cHJlc3Npb24oKE5vZGUgKikgbm90Rm91bmRWYWwsIE5JTCwgZmFs c2UsIGZhbHNlKSwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKHBhcnRPaWQpKSwKKwkJCQllcnJo aW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0 IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24iLAorCQkJ CQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04iKSk7CisJfQorfQorCisvKgor ICogY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQKKyAqCisgKiBDaGVja3MgbmV3IHBhcnRp dGlvbnMgZm9yIFNQTElUIFBBUlRJVElPTiBjb21tYW5kOgorICogMS4gQm91bmRzIG9mIG5l dyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQgZXhpc3RpbmcK KyAqICAgIHBhcnRpdGlvbnMuCisgKiAyLiBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIG9yIGV4 aXN0aW5nIHBhcnRpdGlvbnMgY29udGFpbnMgREVGQVVMVAorICogICAgcGFydGl0aW9uLCBu ZXcgcGFydGl0aW9ucyBjYW4gaGF2ZSBhbnkgYm91bmRzIGluc2lkZSBzcGxpdAorICogICAg cGFydGl0aW9uIGJvdW5kIChjYW4gYmUgc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucyBib3Vu ZHMpLgorICogMy4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBub3QgY29udGFpbnMgREVGQVVM VCBwYXJ0aXRpb24gYW5kCisgKiAgICBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZl IERFRkFVTFQgcGFydGl0aW9uIHRoZSBmb2xsb3dpbmcKKyAqICAgIHNob3VsZCBiZSB0cnVl OiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBlcXVhbAorICogICAg dG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRp b25lZCB0YWJsZQorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBw YXJ0bGlzdDoJCWxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgYWZ0ZXIgcGFydGl0aW9uIHNwbGl0 CisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJt aW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NoZWNrX3BhcnRpdGlvbnNfZm9yX3Nw bGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJ CQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sK KwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5OworCU9pZAkJCWRlZmF1bHRQ YXJ0T2lkOworCWJvb2wJCWlzU3BsaXRQYXJ0RGVmYXVsdDsKKwlib29sCQljcmVhdGVEZWZh dWx0UGFydCA9IGZhbHNlOworCWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlp OworCVNpbmdsZVBhcnRpdGlvblNwZWMgKipuZXdfcGFydHM7CisJU2luZ2xlUGFydGl0aW9u U3BlYyAqc3BzUHJldiA9IE5VTEw7CisKKwkvKgorCSAqIG5wYXJ0cyBjb3VudCBudW1iZXIg b2Ygc3BsaXQgcGFydGl0aW9ucywgYnV0IGl0IGV4Y2x1ZGUgdGhlIGRlZmF1bHQKKwkgKiBw YXJ0aXRpb24uCisJICovCisJaW50CQkJbnBhcnRzID0gMDsKKworCWtleSA9IFJlbGF0aW9u R2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0 cmF0ZWd5KGtleSk7CisKKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9m cm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsK KworCUFzc2VydChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UgfHwKKwkJ ICAgc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBN YWtlIGFycmF5IG5ld19wYXJ0cyB3aXRoIG5ldyBwYXJ0aXRpb25zIGV4Y2VwdCBERUZBVUxU IHBhcnRpdGlvbi4KKwkgKi8KKwluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAq KikKKwkJcGFsbG9jMChsaXN0X2xlbmd0aChwYXJ0bGlzdCkgKiBzaXplb2YoU2luZ2xlUGFy dGl0aW9uU3BlYyAqKSk7CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQgZmxhZzogaXMgc3Bs aXQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJaXNTcGxpdFBhcnREZWZh dWx0ID0gKGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7CisKKwlmb3JlYWNoX25v ZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0bGlzdCkKKwl7CisJCWlmIChzcHMt PmJvdW5kLT5pc19kZWZhdWx0KQorCQkJZGVmYXVsdF9pbmRleCA9IGZvcmVhY2hfY3VycmVu dF9pbmRleChzcHMpOworCQllbHNlCisJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOwor CX0KKworCS8qIEluZGljYXRvciB0aGF0IHRoZSBERUZBVUxUIHBhcnRpdGlvbiB3aWxsIGJl IGNyZWF0ZWQuICovCisJaWYgKGRlZmF1bHRfaW5kZXggIT0gLTEpCisJeworCQljcmVhdGVE ZWZhdWx0UGFydCA9IHRydWU7CisJCUFzc2VydChucGFydHMgPT0gbGlzdF9sZW5ndGgocGFy dGxpc3QpIC0gMSk7CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVH WV9SQU5HRSkKKwl7CisJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJ CVNpbmdsZVBhcnRpdGlvblNwZWMgKip0bXBfbmV3X3BhcnRzOworCisJCS8qCisJCSAqIEZv ciBzaW1wbGlmeSBjaGVjayBmb3IgcmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIG5lZWQgdG8g c29ydCBhbGwKKwkJICogcGFydGl0aW9ucyBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlbSBi b3VuZHMgKHdlIGNvbXBhcmUgbG93ZXIKKwkJICogYm91bmQgb25seSkuCisJCSAqLworCQls b3dlcl9ib3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCXBhbGxvYzAobnBh cnRzICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCS8qIENyZWF0ZSBh cnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkr KykKKwkJeworCQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3Vu ZChrZXksIGksCisJCQkJCQkJCQkJCQkJCW5ld19wYXJ0c1tpXS0+Ym91bmQtPmxvd2VyZGF0 dW1zLCB0cnVlKTsKKwkJfQorCisJCS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAq LworCQlxc29ydF9hcmcobG93ZXJfYm91bmRzLCBucGFydHMsIHNpemVvZihQYXJ0aXRpb25S YW5nZUJvdW5kICopLAorCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAsICh2b2lk ICopIGtleSk7CisKKwkJLyogUmVvcmRlciBhcnJheSBvZiBwYXJ0aXRpb25zLiAqLworCQl0 bXBfbmV3X3BhcnRzID0gbmV3X3BhcnRzOworCQluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0 aW9uU3BlYyAqKikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlv blNwZWMgKikpOworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCQluZXdfcGFy dHNbaV0gPSB0bXBfbmV3X3BhcnRzW2xvd2VyX2JvdW5kc1tpXS0+aW5kZXhdOworCisJCXBm cmVlKHRtcF9uZXdfcGFydHMpOworCQlwZnJlZShsb3dlcl9ib3VuZHMpOworCX0KKworCWZv ciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMg KnNwcyA9IG5ld19wYXJ0c1tpXTsKKworCQlpZiAoaXNTcGxpdFBhcnREZWZhdWx0KQorCQl7 CisJCQkvKgorCQkJICogSW4gY2FzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCBwYXJ0 aXRpb24gd2UgY2FuIHVzZSBhbnkKKwkJCSAqIGZyZWUgcmFuZ2VzIC0gYXMgd2hlbiBjcmVh dGluZyBhIG5ldyBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWNoZWNrX25ld19wYXJ0aXRpb25f Ym91bmQoc3BzLT5uYW1lLT5yZWxuYW1lLCBwYXJlbnQsIHNwcy0+Ym91bmQsCisJCQkJCQkJ CQkgIHBzdGF0ZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogQ2hlY2tzIHRo YXQgYm91bmQgb2YgY3VycmVudCBwYXJ0aXRpb24gaXMgaW5zaWRlIGJvdW5kIG9mIHNwbGl0 CisJCQkgKiBwYXJ0aXRpb24uIEZvciByYW5nZSBwYXJ0aXRpb25pbmc6IGNoZWNrcyB0aGF0 IHVwcGVyIGJvdW5kIG9mCisJCQkgKiBwcmV2aW91cyBwYXJ0aXRpb24gaXMgZXF1YWwgdG8g bG93ZXIgYm91bmQgb2YgY3VycmVudAorCQkJICogcGFydGl0aW9uLiBGb3IgbGlzdCBwYXJ0 aXRpb25pbmc6IGNoZWNrcyB0aGF0IHNwbGl0IHBhcnRpdGlvbgorCQkJICogY29udGFpbnMg YWxsIHZhbHVlcyBvZiBjdXJyZW50IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKHN0cmF0 ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSkKKwkJCXsKKwkJCQlib29sCQlmaXJz dCA9IChpID09IDApOworCQkJCWJvb2wJCWxhc3QgPSAoaSA9PSAobnBhcnRzIC0gMSkpOwor CisJCQkJY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UocGFyZW50LCBz cHMtPm5hbWUtPnJlbG5hbWUsIHNwcy0+Ym91bmQsCisJCQkJCQkJCQkJCQkJICAgc3BsaXRQ YXJ0T2lkLCBmaXJzdCwgbGFzdCwKKwkJCQkJCQkJCQkJCQkgICBjcmVhdGVEZWZhdWx0UGFy dCwgcHN0YXRlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRz X2Zvcl9zcGxpdF9saXN0KHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLAorCQkJCQkJCQkJ CQkJCSAgc3BzLT5ib3VuZCwgc3BsaXRQYXJ0T2lkLCBwc3RhdGUpOworCQl9CisKKwkJLyog UmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJaWYg KHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSAmJiBzcHNQcmV2KQorCQkJ Y2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwgc3BzUHJldi0+bmFt ZSwgc3BzUHJldi0+Ym91bmQsCisJCQkJCQkJCQkJCSAgc3BzLT5uYW1lLCBzcHMtPmJvdW5k LAorCQkJCQkJCQkJCQkgIGNyZWF0ZURlZmF1bHRQYXJ0LAorCQkJCQkJCQkJCQkgIGZhbHNl LAorCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CisKKwkJc3BzUHJldiA9IHNwczsKKwl9CisKKwlp ZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpCisJeworCQkvKiBWYWx1 ZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQljaGVja19w YXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QocGFyZW50LCBuZXdfcGFydHMsIG5wYXJ0cywK KwkJCQkJCQkJCQkgIHBzdGF0ZSk7CisKKwkJLyoKKwkJICogTmVlZCB0byBjaGVjayB0aGF0 IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zIGluIG5ldworCQkgKiBw YXJ0aXRpb25zLiBTa2lwIHRoaXMgY2hlY2sgaWYgREVGQVVMVCBwYXJ0aXRpb24gZXhpc3Rz LgorCQkgKi8KKwkJaWYgKCFjcmVhdGVEZWZhdWx0UGFydCkKKwkJCWNoZWNrX3BhcmVudF92 YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJ CQkJCQkgIG5ld19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5ld19w YXJ0cyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggZWM5YjJiMWZjYS4uZmNj YmIwNGEwYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisr KyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjc2MCw3ICsyNzYwLDcg QEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCQkJCSAgIk9XTkVS IFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05TVFJBSU5UIiwKIAkJCQkJICAiUkVQTElDQSBJ REVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJICAiREVUQUNIIFBBUlRJVElP TiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiLAotCQkJCQkgICJNRVJHRSBQQVJUSVRJ T05TICgiLAorCQkJCQkgICJTUExJVCBQQVJUSVRJT04iLCAiTUVSR0UgUEFSVElUSU9OUyAo IiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAq LwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQi KSkKQEAgLTMwMjMsMTAgKzMwMjMsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBh dHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIkZST00gKCIsICJJTiAoIiwgIldJVEggKCIp OwogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxmb28+IERFVEFDSCBQQVJU SVRJT04sIHByb3ZpZGUgYSBsaXN0IG9mCisJICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8 Zm9vPiBERVRBQ0h8U1BMSVQgUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBvZgogCSAqIHBh cnRpdGlvbnMgb2YgPGZvbz4uCiAJICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi VEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iKSkKKwllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIfFNQTElUIiwgIlBB UlRJVElPTiIpKQogCXsKIAkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXYzX3dkKTsK IAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90 YWJsZSk7CkBAIC0zMDM0LDYgKzMwMzQsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50 IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRj aEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJ VEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5h bWU+IFNQTElUIFBBUlRJVElPTiA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJUQUJMRSIsIE1hdGNoQW55LCAiU1BMSVQiLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkp KQorCQlDT01QTEVURV9XSVRIKCJJTlRPICggUEFSVElUSU9OIik7CisKIAkvKiBBTFRFUiBU QUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygi QUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIp KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBjMmNkMzA0M2UxLi4wM2FmYTY1 ZWQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05NjQsMTcgKzk2NCwzOSBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5nZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247 CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25S YW5nZURhdHVtOwogCisvKgorICogUGFydGl0aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xl IHBhcnRpdGlvbiBmb3IgQUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAq LwordHlwZWRlZiBzdHJ1Y3QgU2luZ2xlUGFydGl0aW9uU3BlYworeworCU5vZGVUYWcJCXR5 cGU7CisKKwlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uICovCisJ UGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5n ICovCit9IFNpbmdsZVBhcnRpdGlvblNwZWM7CisKIC8qCiAgKiBQYXJ0aXRpb25DbWQgLSBp bmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBhbmQg Zm9yCi0gKgkgIEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZHMKKyAqCSAg QUxURVIgVEFCTEUgU1BMSVQvTUVSR0UgUEFSVElUSU9OKFMpIGNvbW1hbmRzCiAgKi8KIHR5 cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAogewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VW YXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoL21l cmdlICovCi0JUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYg YXR0YWNoaW5nICovCi0JTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBhcnRpdGlv bnMgdG8gYmUgbWVyZ2VkLCB1c2VkIGluCi0JCQkJCQkJCSAqIEFMVEVSIFRBQkxFIE1FUkdF IFBBUlRJVElPTlMgKi8KKworCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRh Y2gvbWVyZ2Uvc3BsaXQgKi8KKwlSYW5nZVZhciAgICpuYW1lOworCisJLyogRk9SIFZBTFVF UywgaWYgYXR0YWNoaW5nICovCisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsKKworCS8q CisJICogbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIHNwbGl0L21lcmdlZCwgdXNlZCBpbgor CSAqIEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVE9JTlMgYW5kIEFMVEVSIFRBQkxFIFNQTElU IFBBUlRJVE9JTlMuCisJICogRm9yIG1lcmdlIHBhcnRpdGlvbnMsIHBhcnRsaXN0IGlzIGEg bGlzdCBvZiBSYW5nZVZhcjsgRm9yIHNwbGl0CisJICogcGFydGl0aW9uLCBpdCBpcyBhIGxp c3Qgb2YgU2luZ2xlUGFydGl0aW9uU3BlYy4KKwkgKi8KKwlMaXN0CSAgICpwYXJ0bGlzdDsK KwogCWJvb2wJCWNvbmN1cnJlbnQ7CiB9IFBhcnRpdGlvbkNtZDsKIApAQCAtMjQ3OCw2ICsy NTAwLDcgQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0 aW9uLAkJCS8qIEFUVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJ LyogREVUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplLCAv KiBERVRBQ0ggUEFSVElUSU9OIEZJTkFMSVpFICovCisJQVRfU3BsaXRQYXJ0aXRpb24sCQkJ LyogU1BMSVQgUEFSVElUSU9OICovCiAJQVRfTWVyZ2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdF IFBBUlRJVElPTlMgKi8KIAlBVF9BZGRJZGVudGl0eSwJCQkJLyogQUREIElERU5USVRZICov CiAJQVRfU2V0SWRlbnRpdHksCQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDkwZThjZGRmOGIuLjY2Yzg4NzY2NTcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmgKQEAgLTQyMSw2ICs0MjEsNyBAQCBQR19LRVlXT1JEKCJzbWFsbGlu dCIsIFNNQUxMSU5ULCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgic25hcHNob3QiLCBTTkFQU0hPVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgic29tZSIsIFNPTUUsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJzb3VyY2UiLCBTT1VSQ0UsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInNwbGl0IiwgU1BMSVQsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNxbCIsIFNRTF9QLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdGFibGUiLCBTVEFCTEUsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YW5kYWxvbmUi LCBTVEFOREFMT05FX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCmluZGV4IGY2ZmMxMGQzNDMuLjhiNTBl ZGJlZTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQz LDYgKzE0MywxMCBAQCBleHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNo KEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNl YXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9k dWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2b2lkIGNoZWNrX3BhcnRpdGlvbnNf Zm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgIE9pZCBzcGxpdFBhcnRP aWQsCisJCQkJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCQkJCSAgIFBhcnNlU3Rh dGUgKnBzdGF0ZSk7CiBleHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zv cl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMs CiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0IGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uMDJhNWJiNGYxZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CkBAIC0wLDAgKzEs MjMwIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYjog QkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9O IHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAg Rk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVw IHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSst LS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQw NQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0 cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczFiIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJ TjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBh cnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1Ig VkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7 CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAg fCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8 dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0 MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQor KDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJzIHMy aSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRB QkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFS VElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkg ICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkp Oworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3Rl cCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGlu ZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgor c3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExB VEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0r LS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0 MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQor dHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBC RUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFM VEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkg ICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSks CisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRP ICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAg IHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAx fHRleHQwMQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4 dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUK Kyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmJy ciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQg UEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBf MTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBh cnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJyOiBC RUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VS VCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBh cnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwor dGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFy dF8wMF8xMCAgfCAxfHRleHQwMQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzE1 XzIwICB8MTV8dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVs dHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJy IHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0 cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElP TiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBB UlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0 ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJp OiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4u Pgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAg czJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJD IiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0t LQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0 cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0 X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBzMWJzIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUg dHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJ T04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQ QVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7Citz dGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy aTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAg IAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0 cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0 XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJicnIgczJpIHMxYyBz MmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7 CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0 XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZB TFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04g TEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZB TFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOwor c3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJz OiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwg aXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRl eHQwMQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1 Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnMgczJp IHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJ WkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9O IHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAg Rk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xB VElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7 CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAg fCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8 dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0 MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQor KDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmIgczJ1 IHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFC TEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJU SVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAg ICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7 CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCBpID0gMTYg d2hlcmUgaSA9IDU7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy dTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAg IAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0 cGFydF8xNV8yMCAgfDE2fHRleHQwNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0 X2RlZmF1bHR8MzV8dGV4dDM1CisoNCByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBzMWIgczFzcGx0IHMyYiBzMnUyIHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47Citz dGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEw XzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVF UyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTI6IFVQ REFURSB0cGFydCBTRVQgaSA9IDExIHdoZXJlIGkgPSAxNTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1MjogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0 cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7 Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3Rw YXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0cGFydF8xMF8xNSAgfDExfHRleHQxNQordHBhcnRf MjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNCByb3dzKQor CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIv c3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCA4NTQxNTQ2Njc4 Li44NTAzZGQ4MDFhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUK QEAgLTExMSw2ICsxMTEsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0 OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00 CiB0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKK3Rlc3Q6IHBhcnRpdGlvbi1zcGxpdAogdGVzdDog cGxwZ3NxbC10b2FzdAogdGVzdDogY2x1c3Rlci1jb25mbGljdAogdGVzdDogY2x1c3Rlci1j b25mbGljdC1wYXJ0aXRpb24KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVj cy9wYXJ0aXRpb24tc3BsaXQuc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0 aXRpb24tc3BsaXQuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5hZjk1NGJlNWRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCkBAIC0wLDAgKzEsNjIgQEAKKyMgVmVyaWZ5IHRo YXQgU1BMSVQgb3BlcmF0aW9uIGxvY2tzIERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9u ZWQgdGFibGUKKworc2V0dXAKK3sKKyAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7Cisg IENSRUFURSBUQUJMRSB0cGFydChpIGludCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2Uo aSk7CisgIENSRUFURSBUQUJMRSB0cGFydF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAg UEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CisgIENS RUFURSBUQUJMRSB0cGFydF8yMF8zMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBG Uk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0X2RlZmF1bHQgUEFSVElU SU9OIE9GIHRwYXJ0IERFRkFVTFQ7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoNSwg J3RleHQwNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDE1LCAndGV4dDE1Jyk7 CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMjUsICd0ZXh0MjUnKTsKKyAgSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQzNScpOworfQorCit0ZWFyZG93bgorewor ICBEUk9QIFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxYgl7IEJFR0lO OyB9CitzdGVwIHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVB RDsgfQorc3RlcCBzMWJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsg fQorc3RlcCBzMXNwbHQJeyBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBh cnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1Ig VkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKwor CitzZXNzaW9uIHMyCitzdGVwIHMyYgl7IEJFR0lOOyB9CitzdGVwIHMyYnJyCXsgQkVHSU4g SVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMmJzCXsgQkVHSU4g SVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMmkJeyBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7IH0K K3N0ZXAgczJzCXsgU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9S REVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsgfQorc3Rl cCBzMnUJeyBVUERBVEUgdHBhcnQgU0VUIGkgPSAxNiB3aGVyZSBpID0gNTsgfQorc3RlcCBz MnUyCXsgVVBEQVRFIHRwYXJ0IFNFVCBpID0gMTEgd2hlcmUgaSA9IDE1OyB9CisKKworIyBz MSBzdGFydHMgU1BMSVQgUEFSVElUSU9OIHRoZW4gczIgdHJ5aW5nIHRvIGluc2VydCByb3cg YW5kCisjIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVkIFNQTElUIG9wZXJhdGlvbi4KKworcGVy bXV0YXRpb24gczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBz MWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFiIHMxc3Bs dCBzMmJzIHMyaSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJi IHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnJyIHMyaSBz MWMgczJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMg czJzCisKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Bl cm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRp b24gczFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworIyBUdXBsZSByb3V0aW5n IGJldHdlZW4gcGFydGl0aW9ucy4KK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJiIHMydSBz MWMgczJjIHMycworCisjIFR1cGxlIHJvdXRpbmcgaW5zaWRlIHNwbGl0dGluZyBwYXJ0aXRp b24uCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYiBzMnUyIHMxYyBzMmMgczJzCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0 ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVj dGVkL2FsdGVyX3RhYmxlLm91dAppbmRleCBjNDAzYzJmNTY5Li4xM2NjZmI3NGY1IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0 ZXJfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTYxLDYgKzYxLDExIEBAIE5PVElDRTogIERE TCB0ZXN0OiB0eXBlIHNpbXBsZSwgdGFnIENSRUFURSBUQUJMRQogQUxURVIgVEFCTEUgcGFy dCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7CiBOT1RJQ0U6 ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6 ICAgIHN1YmNvbW1hbmQ6IHR5cGUgTUVSR0UgUEFSVElUSU9OUyBkZXNjIDxOVUxMPgorQUxU RVIgVEFCTEUgcGFydCBTUExJVCBQQVJUSVRJT04gcGFydDEgSU5UTworCShQQVJUSVRJT04g cGFydDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0byAoMTAwKSwKKwkgUEFSVElUSU9OIHBhcnQy IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKSk7CitOT1RJQ0U6ICBEREwgdGVzdDog dHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCitOT1RJQ0U6ICAgIHN1YmNvbW1h bmQ6IHR5cGUgU1BMSVQgUEFSVElUSU9OIGRlc2MgPE5VTEw+CiBBTFRFUiBUQUJMRSBwYXJ0 IEFERCBQUklNQVJZIEtFWSAoYSk7CiBOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0 YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgQURE IENPTlNUUkFJTlQgKGFuZCByZWN1cnNlKSBkZXNjIGNvbnN0cmFpbnQgcGFydF9hX25vdF9u dWxsIG9uIHRhYmxlIHBhcnQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKaW5kZXggMzFlNjkxMDBhMy4uMWU3 NWZlYWE0NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNl L3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9k ZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTM4LDYgKzM4LDEwIEBAIERST1AgVEFC TEUgcGFydDI7CiBDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9GIHBhcnQgRk9SIFZB TFVFUyBGUk9NICgxMDApIHRvICgyMDApOwogQUxURVIgVEFCTEUgcGFydCBNRVJHRSBQQVJU SVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7CiAKK0FMVEVSIFRBQkxFIHBhcnQg U1BMSVQgUEFSVElUSU9OIHBhcnQxIElOVE8KKwkoUEFSVElUSU9OIHBhcnQxIEZPUiBWQUxV RVMgRlJPTSAoMSkgdG8gKDEwMCksCisJIFBBUlRJVElPTiBwYXJ0MiBGT1IgVkFMVUVTIEZS T00gKDEwMCkgdG8gKDIwMCkpOworCiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtF WSAoYSk7CiAKIEFMVEVSIFRBQkxFIHBhcmVudCBBTFRFUiBDT0xVTU4gYSBTRVQgTk9UIE5V TEw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYwppbmRleCA3ZGU1ZGRiODc4Li4xN2Q3MmU0MTJmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJz ZS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9k ZXBhcnNlLmMKQEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZv KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXpl OgogCQkJCXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQkJ CWJyZWFrOworCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCQlzdHJ0eXBlID0gIlNQ TElUIFBBUlRJVElPTiI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEFUX01lcmdlUGFydGl0aW9u czoKIAkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOwogCQkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU2OGJhZjcxZGEKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5v dXQKQEAgLTAsMCArMSwxNTkyIEBACistLQorLS0gUEFSVElUSU9OX1NQTElUCistLSBUZXN0 cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gLi4uIiBjb21tYW5kCist LQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworQ1JFQVRFIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcK Ky0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHJlbGF0aW9uICJz YWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjog IHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CistLSBFUlJPUjogIHJlbGF0 aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIgYWxyZWFk eSBleGlzdHMKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBh IHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFu MjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBp bnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitMSU5F IDI6ICAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1 LTAxJywgJzIwMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CitFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9u ICJzYWxlc19tYXIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBTcGVjaWZp ZWQgbG93ZXIgYm91bmQgKCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFs IHRvIHVwcGVyIGJvdW5kICgnMDItMDEtMjAyMicpLgorLS1FUlJPUjogIGxpc3Qgb2Ygc3Bs aXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0xMC0wMScpKTsKK0VSUk9SOiAgbGlzdCBvZiBuZXcg cGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworLS0g RVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5v dCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9t YXJfYXByMjAyMiIKKy0tIEhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9O IHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3Rs eSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0xJTkUgMjogICAoUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor SElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5l ZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3Vu ZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5h bWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCistLSAoV2UgY2Fu IGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlv biwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUp CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJS T1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFs cmVhZHkgdXNlZAorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMuLi4KKyAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxy ZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHBh cnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorTElO RSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgcGFy dGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIy MDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1 c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJS T1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElUSU9OIGNhbm5vdCBiZSBwZXJmb3JtZWQg b24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIERFVEFJTDogIFRoaXMg b3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KK0FMVEVSIFRBQkxFIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIy MDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIEFMVEVSIGFjdGlvbiBTUExJ VCBQQVJUSVRJT04gY2Fubm90IGJlIHBlcmZvcm1lZCBvbiByZWxhdGlvbiAic2FsZXNfZmVi X21hcl9hcHIyMDIyIgorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRl ZCBmb3IgdGFibGVzLgorLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIEhJTlQ6ICBBTFRFUiBUQUJMRSAu Li4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0 aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRp dGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworRVJST1I6ICB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBl ciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0xJ TkUgNDogLi4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBT UExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlv bnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9u CistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19tYXIyMDIy IiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRp b24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19mZWIy MDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBT UExJVCBQQVJUSVRJT04gcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRq YWNlbnQuCistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBz aG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CistLSBFUlJP UjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVx dWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9h cHIyMDIyIgorLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVx dWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1h dGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDIn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRp dGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorTElORSAyOiAgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8uLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5U OiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJv dW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9m IHRoZSBzcGxpdCBwYXJ0aXRpb24KKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5v dCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h LnNhbGVzX3JhbmdlCitTUExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5z YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19y YW5nZQorICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRp b25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlIgorICAgICBDb2x1bW4gICAgIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0 YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIHNhbGVz X2RhdGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8 IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChzYWxl c19kYXRlKQorUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJyks CisgICAgICAgICAgICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKSwKKyAgICAg ICAgICAgIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpLAorICAgICAgICAgICAg c2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0w MS0yMDIyJykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNf b3RoZXJzOworLS0gQWRkaXRpb25hbCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMsIG5vIGRl ZmF1bHQgcGFydGl0aW9uCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzX2RhdGUg ZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CistLSBFUlJPUjogIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVw cGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgor LS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21i aW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBi b3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYt MDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAy MiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2Fs ZXNfZmViX21hcl9hcHIyMDIyIgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitI SU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVk IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5k IG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQor LS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlv bgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVn Y2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQg ICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIw MjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAg fCAwNC0zMC0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIy IHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmViMjAyMiB8 ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAy LTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAg ICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0y My0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAg ICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgt MjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAg ICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIw MjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy Cisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8 ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gQWRkIHNwbGl0IHBhcnRpdGlvbiwgdGhlbiBh ZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1 LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworLS0gU3BsaXQgcGFydGl0aW9u LCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5ldyBwYXJ0aXRpb25zCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5nZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4gICAgICB8ICAgICAgICAgVHlwZSAg ICAgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwg U3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQg ICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAg ICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8 IGNoYXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAg ICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfYW1vdW50ICAgICB8IGlu dGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8 IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0ZSAgICAgICB8IGRhdGUg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBs YWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoc2FsZXNf ZGF0ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpLAor ICAgICAgICAgICAgc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIy JykgVE8gKCcwNS0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKSwKKyAgICAgICAg ICAgIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgn MDItMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfb3RoZXJzIERFRkFVTFQKKworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRh Ymxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7Cisg ICAgICAgICAgICAgICB0YWJsZW9pZCAgICAgICAgICAgICAgICB8IHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgICA3IHwgTGkg ICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfYXByMjAyMiAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHIyMDIyICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwg ICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMiAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAg IDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19mZWIyMDIyICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAw IHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0xMS0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIz LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAy MgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg c2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDEz IHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxl c19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTQgfCBT bWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0IGZvcjoK Ky0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29s dW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3ll YXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUg VkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6 OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcw JykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisg IHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVu dCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2Fs ZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2Rh dGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwg MTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywg MjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2Vy MicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFu YWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAo J01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gc2FsZXNfZGF0ZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09M TEFURSAiQyIsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisgICAgIHRh Ymxlb2lkICAgICAgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21v bnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg c2FsZXNfZGVjMjAyMSAgICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQK KyBzYWxlc19kZWMyMDIxICAgICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwg ICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVu dAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRt ZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFy dG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVw YXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBk ZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVz IGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIyICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwg MiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNw ZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVT CisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAy LCAxMCk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBP UkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxl c19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjEgfCBNYW5hZ2VyMSAg ICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4x Mi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIxIHwgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIu MDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIzICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVz IGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBk ZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVw YXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisoMTEgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19kYXRlIENBU0NBREU7CistLQor LS0gVGVzdDogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb247IHVzZSBhbiBpbmRleCBvbiBwYXJ0 aXRpb24ga2V5OyBjaGVjayBpbmRleCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxl c19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEw JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAn SXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1 MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwg ICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgx MiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAg ICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIy LTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAg NTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8 ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDUg fCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIw MjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUg fCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAg ICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRy dW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAg ICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgor ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1 LTA0LTIwMjIKKygxMSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUg dGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9u X3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOworICAgICAg IHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUg ICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2FsZXNfb3RoZXJzX3Nh bGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19vdGhlcnNf c2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19vdGhlcnMg VVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKy0tIFVzZSBpbmRl eHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOwor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJ bmRleCBTY2FuIHVzaW5nIHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9pZHggb24gc2FsZXNf ZmViMjAyMgorICAgSW5kZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6OmRh dGUpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2Fs ZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAy MgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8 IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAg ICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjIt MDEtMDEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2Fs ZXNfbWFyMjAyMl9zYWxlc19kYXRlX2lkeCBvbiBzYWxlc19tYXIyMDIyCisgICBJbmRleCBD b25kOiAoc2FsZXNfZGF0ZSA+ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEt MDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNyB8IExpICAgICAg ICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkg fCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAg ICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxl c19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19hcHIyMDIyX3NhbGVzX2Rh dGVfaWR4IG9uIHNhbGVzX2FwcjIwMjIKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4g JzAxLTAxLTIwMjInOjpkYXRlKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19h cHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAg IDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJv d3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIG9uIHNh bGVzX290aGVycworICAgSW5kZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6 OmRhdGUpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyB3aGVyZSBz YWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0y MDIyCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSBw Z19pbmRleGVzCitXSEVSRSB0YWJsZW5hbWUgaW4gKCdzYWxlc19mZWIyMDIyJywgJ3NhbGVz X21hcjIwMjInLCAnc2FsZXNfYXByMjAyMicsICdzYWxlc19vdGhlcnMnKQorQU5EIHNjaGVt YW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKK09SREVSIEJZIGluZGV4bmFtZSBD T0xMQVRFICJDIjsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8 ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2Fs ZXNfYXByMjAyMiB8IHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAg IHwgQ1JFQVRFIElOREVYIHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0 aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19mZWIyMDIyIHwgc2FsZXNfZmVi MjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNf ZmViMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X2ZlYjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYSB8IHNhbGVzX21hcjIwMjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IHwg ICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4 IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSkKKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzICB8 IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgfCAgICAgICAgICAgIHwgQ1JFQVRFIElO REVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgT04gcGFydGl0aW9uX3NwbGl0X3Nj aGVtYS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoNCByb3dzKQor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVzdDogc29tZSBj YXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRz KQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGxvd2Vy IGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAx JykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgnMjAyMS0xMi0zMCcpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhl ciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9O IHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMzAnKSBUTyAoLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBl cXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgor SElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZXMgdGhlIHBh cnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRlcnNl Y3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIgYm91bmQpCistLSBFUlJPUjogIGNhbiBu b3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiB0b2dldGhlciB3aXRoIHBh cnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAyJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBh cnRpdGlvbiAic2FsZXNfZmViMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVz X2Vycm9yIgorTElORSA0OiAgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4g U1BMSVQgUEFSVElUSU9OIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFk amFjZW50LgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEg KGluc2lkZSBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24g InNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAy MS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9y IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMTAnKSBUTyAoJzIwMjEtMTItMjAnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CitFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIg dG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5FIDM6ICAgIFBB UlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTEwJykgVE8g KC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBp cyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMSIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmVz IHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gc2FsZXNfZXJyb3Ig aW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGV4YWN0bHkgdGhlIHNhbWUgYm91bmRz KQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii IHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8g KCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAg Y2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRo IHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0 byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDog IEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZXMgdGhlIHBhcnRpdGlv biBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgREVG QVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIKKy0tIEhJTlQ6ICBUbyBzcGxpdCBERUZB VUxUIHBhcnRpdGlvbiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb24gbXN1dCBiZSBERUZBVUxU CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4y MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSk7CitFUlJPUjogIGNhbiBub3Qgc3BsaXQgREVGQVVM VCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVz X2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPLi4uCisgICAgICAg ICAgICAgICAgICAgICBeCitISU5UOiAgVG8gc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gb25l IG9mIHRoZSBuZXcgcGFydGl0aW9uIG1zdXQgYmUgREVGQVVMVAorLS0gbm8gZXJyb3I6IGJv dW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBiZXR3ZWVuIHNhbGVzX2RlYzIwMjEgYW5kIHNh bGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVF UyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0xMCcpIFRPICgnMjAy Mi0wMS0yMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitDUkVBVEUgVEFC TEUgc2FsZXNfcmFuZ2UgKHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJy b3IgYXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAy MSBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBG T1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0t CistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkg Q09OU1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwg ICdQb2lyb3QnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc3BlcnNvbl9p ZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19h bW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21h cl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworU0VMRUNUIHBnX2dldF9j b25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVnY2xhc3M6Om9p ZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUgIkMiOworICAgICAgICAgICAgICAgICAgICAg ICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgo c2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlH TiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVy c29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJv d3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKy0tIFdlIHNob3VsZCBz ZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBh cnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNv bmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViMjAy Mic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZSBDT0xMQVRFICJDIjsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNr ICB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9m a2V5IHwgezF9CisoMiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9 ICdzYWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExB VEUgIkMiOworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAg ICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxl c19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBS RUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3Nh bGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfY29u c3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdI RVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZ IGNvbm5hbWUgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf Y29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNv bm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91 bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNh bGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2Fs ZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwg c2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworLS0g RVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMg Y2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworRVJS T1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hl Y2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorREVUQUlM OiAgRmFpbGluZyByb3cgY29udGFpbnMgKDEsIDAsIDAzLTExLTIwMjIpLgorLS0gRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5 IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTEx Jyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzcGVy c29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVyc29uX2lkKT0oLTEpIGlzIG5v dCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCistLSBvaworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEnKTsKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsK Ky0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4g Y2FzZSBvZiBleGlzdGluZyBGT1JFSUdOIEtFWSByZWZlcmVuY2UgZnJvbSBhbm90aGVyIHRh YmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQ UklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVzcGVy c29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5Jyks CisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAoMzAsICdGb3Jk Jyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMKKyAgKDEsICAxMDAsICcyMDIyLTAzLTAx JyksCisgICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpLAorICAoMTAsIDE1MCwgJzIwMjItMDMt MDEnKSwKKyAgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyksCisgICgxOSwgMjAwLCAnMjAyMi0w My0wNCcpLAorICAoMjAsIDUwLCAgJzIwMjItMDMtMTInKSwKKyAgKDIwLCAxNzAsICcyMDIy LTAzLTAyJyksCisgICgzMCwgMzAsICAnMjAyMi0wMy0wNCcpOworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRhYmxlb2lk ICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVv cGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMTBfNDAg fCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfNDAgfCAgICAgICAgICAg ICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMTBfNDAgfCAgICAgICAgICAgICAyMCB8IFNt aXJub2ZmCisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9yZAorKDUg cm93cykKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVz cGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMw IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9w bGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVn Y2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9p ZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl b3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIw IHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAg ICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBT bWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1 IHJvd3MpCisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lk X2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0 Jyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5Igor REVUQUlMOiAgS2V5IChzYWxlc3BlcnNvbl9pZCk9KDQwKSBpcyBub3QgcHJlc2VudCBpbiB0 YWJsZSAic2FsZXNwZW9wbGUiLgorLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAo MzAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0RST1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RS T1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0 aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJz b25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNh bGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAg J1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jv d190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9E WSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9u ID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVO LCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBU UklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAg IEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVN RU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdz YWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAg ICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93 X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhl cmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMg KDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFj dGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJp Z2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRF UiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChy b3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92 Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElO U0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNwZW9w bGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9O IHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBB UlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCks CisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBU TyAoNDApKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVt ZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicp OworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNF UlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNw ZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0g U1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK05PVElDRTog IHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0g QUZURVIsIGxldmVsID0gUk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00g c2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUg IkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAg ICAgICAxIHwgUG9pcm90Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDEwIHwg TWF5Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2Fs ZXNwZW9wbGUyMF8zMCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3Bs ZTMwXzQwIHwgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcigpOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRjaCBpZGVudGl0 eSBjb2x1bW4KKy0tIElmIHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRlbnRpdHkgY29s dW1uLCBjb2x1bW5zIG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0eSBjb2x1bW5zIHRv by4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIEdF TkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOwor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMV8yIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdp dGggaWRlbnRpdHkgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMl81KHNhbGVz cGVyc29uX2lkIElOVCBOT1QgTlVMTCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxl Ml81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUpOworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5vdicpOwor QUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81 IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfMyBGT1IgVkFMVUVTIEZST00gKDIp IFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTNfNCBGT1IgVkFMVUVTIEZST00g KDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTRfNSBGT1IgVkFMVUVTIEZS T00gKDQpIFRPICg1KSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25f bmFtZSkgVkFMVUVTICgnTWF5JyksICgnRm9yZCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgdGFibGVvaWQgICAgfCBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUxXzIgfCAg ICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMl8zIHwgICAgICAgICAgICAg IDIgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTNfNCB8ICAgICAgICAgICAgICAzIHwgTWF5Cisg c2FsZXNwZW9wbGU0XzUgfCAgICAgICAgICAgICAgNCB8IEZvcmQKKyg0IHJvd3MpCisKKy0t IGNoZWNrIG5ldyBwYXJ0aXRpb25zIGhhdmUgaWRlbnRpdHkgb3Igbm90IGFmdGVyIHNwbGl0 IHBhcnRpdGlvbgorU0VMRUNUIGF0dHJlbGlkOjpyZWdjbGFzcywgYXR0bmFtZSwgYXR0aWRl bnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZQorV0hFUkUgYXR0bnVtID4g MAorQU5EIGF0dHJlbGlkOjpyZWdjbGFzcyBJTiAoCisgICdzYWxlc3Blb3BsZTJfMyc6OnJl Z2NsYXNzLCAnc2FsZXNwZW9wbGUnLCAnc2FsZXNwZW9wbGUyXzMnLAorICAnc2FsZXNwZW9w bGUxXzInLCAnc2FsZXNwZW9wbGUzXzQnLCAnc2FsZXNwZW9wbGU0XzUnKQorT1JERVIgQlkg YXR0cmVsaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBhdHRudW07CisgICAgYXR0 cmVsaWQgICAgfCAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0 ZWQgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUgICAgfCBzYWxlc3BlcnNvbl9pZCAgIHwg YSAgICAgICAgICAgfCAKKyBzYWxlc3Blb3BsZSAgICB8IHNhbGVzcGVyc29uX25hbWUgfCAg ICAgICAgICAgICB8IAorIHNhbGVzcGVvcGxlMV8yIHwgc2FsZXNwZXJzb25faWQgICB8IGEg ICAgICAgICAgIHwgCisgc2FsZXNwZW9wbGUxXzIgfCBzYWxlc3BlcnNvbl9uYW1lIHwgICAg ICAgICAgICAgfCAKKyBzYWxlc3Blb3BsZTJfMyB8IHNhbGVzcGVyc29uX2lkICAgfCBhICAg ICAgICAgICB8IAorIHNhbGVzcGVvcGxlMl8zIHwgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAg ICAgICAgIHwgCisgc2FsZXNwZW9wbGUzXzQgfCBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAg ICAgICAgfCAKKyBzYWxlc3Blb3BsZTNfNCB8IHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAg ICAgICB8IAorIHNhbGVzcGVvcGxlNF81IHwgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAg ICAgIHwgCisgc2FsZXNwZW9wbGU0XzUgfCBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAg ICAgfCAKKygxMCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7Cist LQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtF WSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3Jl YXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJ TlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUworICAoJ2R1 bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpLAorICAoJ2R1bW15IHZh bHVlIDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUx MF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJP UCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9O IHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdN YXknKSwKKyAgKDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQg UEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJU SVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lk OworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBz YWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEw XzIwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAg ICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAg ICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FE RTsKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JF QVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xh c3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAg fCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2Fwcl9hbGwg fCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAw NC0zMC0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAg ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHJfYWxsIHwg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQt MDctMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAg ICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEw LTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAg ICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAg ICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAy MgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAg fCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAg ICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisg c2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAg ICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxl c19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEwXzIw IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgIHRhYmxlb2lkICAgICAgIHwg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIy MDIyXzAxXzEwIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAg ICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg c2FsZXNfYXByMjAyMl8xMF8yMCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyXzIwXzMwIHwg ICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQt MzAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgfCAgICAgICAgICAgICAgMiB8IFNtaXJu b2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmViMjAy MiAgICAgICB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyICAgICAgIHwgICAgICAgICAgICAg IDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNh bGVzX2phbjIwMjIgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAg ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4 LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX21hcjIwMjIg ICAgICAgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAx NzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfbWFyMjAyMiAgICAgICB8ICAgICAgICAgICAgICA5 IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxl c19tYXIyMDIyICAgICAgIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgfCAgICAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0y MDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBM SVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9y IEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QgKHNh bGVzX3N0YXRlIFZBUkNIQVIoMjApKSBQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0Jlamlu ZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOwor LS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdp dGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnSGVsc2lua2knKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92 ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIK K0xJTkUgMzogLi4uIEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snLCAnSGVsc2lua2knLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0 aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0 aW9uICJzYWxlc19jZW50cmFsIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxV RVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04g c2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9z dG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0JlcmxpbicsICdMaXNib24nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRp dGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRp dGlvbiAic2FsZXNfY2VudHJhbCIKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX3dlc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBh cnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNw bGl0IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19j ZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitF UlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFs dWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcyBub3QgaGF2ZQor TElORSAyOiAuLi5zX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnLCBOVUxMKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0 aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQg cGFydGl0aW9uICJzYWxlc19hbGwiIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcs ICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4g KCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxl c19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7 CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMg dmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcyBub3QgaGF2 ZQorTElORSAyOiAuLi5zdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcsICdNZWxib3VybmUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0 aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiAic2Fs ZXNfb3RoZXJzIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJ VCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZP UiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJu ZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycs ICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwg Rk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gY2Fu bm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiAic2FsZXNfb3RoZXJz IiBhbHJlYWR5IGV4aXN0cworTElORSA1OiAgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBE RUZBVUxUKTsKKyAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfbGlz dDsKKy0tIFRlc3QgZm9yIG5vbi1zeW1ib2xpYyBjb21wYXJpc29uIG9mIHZhbHVlcyAobnVt ZXJpYyB2YWx1ZXMgJzAnIGFuZCAnMC4wJyBhcmUgZXF1YWwpLgorQ1JFQVRFIFRBQkxFIHQg KGEgbnVtZXJpYykgUEFSVElUSU9OIEJZIExJU1QgKGEpOworQ1JFQVRFIFRBQkxFIHQxIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgaW4gICgnMCcsICcxJyk7CistLSBFUlJPUjogIG5l dyBwYXJ0aXRpb24gIngiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRp b24gIngxIgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdDEgSU5UTworICAoUEFS VElUSU9OIHggRk9SIFZBTFVFUyBJTiAoJzAnKSwKKyAgIFBBUlRJVElPTiB4MSBGT1IgVkFM VUVTIElOICgnMC4wJywgJzEnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gIngiIHdvdWxk IG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gIngxIgorTElORSAyOiAgIChQ QVJUSVRJT04geCBGT1IgVkFMVUVTIElOICgnMCcpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHQ7CistLQorLS0gVGVzdDogdHdvIHNw ZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBh cnRpdGlvbnMgZG8gbm90IGhhdmUgTlVMTCB2YWx1ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9u IGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBhIHZhbHVlIHRoYXQg c3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdChzYWxl c19zdGF0ZSBWQVJDSEFSKDIwKSkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcn LCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKy0t IEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgY29tYmluZWQgcGFydGl0aW9uIGJvdW5kcyBkbyBu b3QgY29udGFpbiB2YWx1ZSAoTlVMTCkgYnV0IHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxs IiBkb2VzCistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1 aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0 Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdE ZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3 IHBhcnRpdGlvbnMgY29tYmluZWQgcGFydGl0aW9uIGJvdW5kcyBkbyBub3QgY29udGFpbiB2 YWx1ZSAoTlVMTCkgYnV0IHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBkb2VzCitISU5U OiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJv dW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9m IHRoZSBzcGxpdCBwYXJ0aXRpb24KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgY29tYmlu ZWQgcGFydGl0aW9uIGJvdW5kcyBkbyBub3QgY29udGFpbiB2YWx1ZSAoJ0t5aXYnOjpjaGFy YWN0ZXIgdmFyeWluZygyMCkpIGJ1dCBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9l cworLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBj b21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRo ZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19saXN0 IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dl c3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGkn LCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxV RVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworRVJST1I6ICBuZXcgcGFydGl0 aW9ucyBjb21iaW5lZCBwYXJ0aXRpb24gYm91bmRzIGRvIG5vdCBjb250YWluIHZhbHVlICgn S3lpdic6OmNoYXJhY3RlciB2YXJ5aW5nKDIwKSkgYnV0IHNwbGl0IHBhcnRpdGlvbiAic2Fs ZXNfYWxsIiBkb2VzCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiBy ZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkg bWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KKy0tIEVSUk9SICBERUZB VUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAn VmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOwor RVJST1I6ICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitMSU5FIDY6ICAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAgICAgICAg XgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0 aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBTRVJJQUwsCisgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQg SU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0 ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBz YWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRF WCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVl IChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcn LCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9z dG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdU cnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgn U21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAo J0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAg KCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisg ICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAor ICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwK KyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2Jyks CisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScp LAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEn KSwKKyAgKCdIYWxkZXInLCAgICdIZWxzaW5raScsICAgICAgICA4MDAsICcyMDIyLTAzLTAy JyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0w NScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMt MTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAz LTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0w My0wNScpOworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNf YWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBG T1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQ QVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxp bicsICdLeWl2JykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVz X2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2Fs ZXNfY2VudHJhbCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNh dyAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorIHNhbGVzX2NlbnRyYWwg fCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAg ICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xMC0yMDIyCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgt MjAyMgorIHNhbGVzX2Vhc3QgICAgfCAgICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAg ICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxl c19lYXN0ICAgIHwgICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2 b3N0b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgc2FsZXNfbm9yZCAgICB8 ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwg ICAgICAgICAyMDAwIHwgMDMtMDUtMjAyMgorIHNhbGVzX25vcmQgICAgfCAgICAgICAgICAg ICAgNyB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIw MCB8IDAzLTA2LTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAgIDkgfCBNYXkg ICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0y MDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAg ICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAyMgorIHNhbGVz X3dlc3QgICAgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9y ayAgICAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyBzYWxlc193ZXN0ICAgIHwg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAg IDExIHwgTXVsbGVyICAgICAgICAgICB8IE1hZHJpZCAgICAgICAgIHwgICAgICAgICAgNjUw IHwgMDMtMDUtMjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAgICAxNCB8IFBsYXRv ICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIw MjIKKygxNCByb3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMg YWZ0ZXIgc3BsaXR0aW5nIHBhcnRpdGlvbgorU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOwor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUg c2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIElu ZGV4IFNjYW4gdXNpbmcgc2FsZXNfY2VudHJhbF9zYWxlc19zdGF0ZV9pZHggb24gc2FsZXNf Y2VudHJhbAorICAgSW5kZXggQ29uZDogKChzYWxlc19zdGF0ZSk6OnRleHQgPSAnV2Fyc2F3 Jzo6dGV4dCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVS RSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg ICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAg ICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAx NTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNj YW4gdXNpbmcgc2FsZXNfY2VudHJhbF9zYWxlc19zdGF0ZV9pZHggb24gc2FsZXNfY2VudHJh bCBzYWxlc19saXN0CisgICBJbmRleCBDb25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdX YXJzYXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdI RVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAg IDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92 JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIEluZGV4IFNjYW4gdXNp bmcgc2FsZXNfZWFzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBvbiBzYWxlc19lYXN0IHNhbGVz X2xpc3RfMQorICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4 dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfY2Vu dHJhbF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBvbiBzYWxlc19jZW50cmFsIHNhbGVzX2xpc3Rf MgorICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJ dmFub3YnOjp0ZXh0KQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gc2FsZXNfbm9yZCBz YWxlc19saXN0XzMKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzYWxlc3BlcnNvbl9uYW1l KTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHNhbGVzX25vcmRfc2FsZXNwZXJzb25fbmFtZV9pZHgKKyAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4 dCkKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX3dlc3Rfc2FsZXNwZXJzb25fbmFt ZV9pZHggb24gc2FsZXNfd2VzdCBzYWxlc19saXN0XzQKKyAgICAgICAgIEluZGV4IENvbmQ6 ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIHNhbGVzX290aGVycyBzYWxlc19saXN0XzUKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0 ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHNhbGVzX290aGVyc19z YWxlc3BlcnNvbl9uYW1lX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKChzYWxl c3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorKDE1IHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5v dic7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNj YW47CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdCBmb3I6CistLSAgICog c3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3 ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJ VCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwg ICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywg NTAwLCAgJzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0w NC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIy LTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAg KDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXIn LCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIw MjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAor ICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRo JywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290 aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJU SVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFk ZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFz czo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgdGFibGVvaWQg ICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNh ZGUgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAg fCAwNC0wNi0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIg fCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVz X2ZlYjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8 ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0w OS0yMDIyCisgc2FsZXNfbWFyMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAg ICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVy cyAgICAgICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAg ICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIy Cisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX290aGVycyAgICAg ICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAg OSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2Fs ZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8 ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAz LTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNt aXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykK KworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBz cGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBi ZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBT UExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIy LTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAg KDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIw MjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAor ICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIw MjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAz LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgdGFibGVvaWQgICAg ICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNh bGVzX2FwcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUg fCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBT bWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2Zl YjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0y MDIyCisgc2FsZXNfbWFyMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAg ICAgICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisg c2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg ICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAg ICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8 IDAyLTIzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgOSB8 IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNf b3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAg ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5 LTIwMjIKKygxMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRl c3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBERUZBVUxUIHBhcnRpdGlv biArIHBhcnRpdGlvbnMKKy0tIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzLgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisg ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwK KyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp LAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJl Z2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lk ICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIy MDIyIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAw IHwgMDQtMzAtMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAy MiB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAg ICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIwMjIg fCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAw Mi0xMC0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwg ICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAg ICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAg ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4 LTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAg ICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAg ICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAg ICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAy MgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIg dGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBC WSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFM VUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJ T04gQlkgUkFOR0UgKHQpOworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEg cGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBBUlRJ VElPTiB0MXBhIElOVE8KKyAgIChQQVJUSVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAoJ0En KSBUTyAoJ0InKSwKKyAgICBQQVJUSVRJT04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0InKSBU TyAoJ0MnKSk7CitFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24g b2YgcmVsYXRpb24gInQyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJ T04gY2FuIG9ubHkgc3BsaXQgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25z CitEUk9QIFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKy0tCistLSBUcnkgdG8gU1BMSVQg cGFydGl0aW9uIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRw XzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK1NFTEVD VCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5v aWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 IENPTExBVEUgIkMiOworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwg cmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzIgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KSB8IHQKKygxIHJvdykKKworLS0gRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50 IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRw XzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEg cGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24g InQiCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFS VElUSU9OIHBnX3RlbXAudHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHBnX3RlbXAudHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsK Ky0tIFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJl bGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0IENPTExBVEUgIkMi OworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVu Y2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8IHQKKyB0cF8x XzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHQKKygyIHJvd3MpCisKK0RST1Ag VEFCTEUgdDsKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0IHBhcmVudCdz IHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJ TkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5H RSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8x IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNl IEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywg J3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisg IE9SREVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xMQVRFICJD IjsKKyB0YWJsZW5hbWUgfCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMSAg ICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8xXzIgICAgfCByZWdyZXNzX3RibHNwYWNlCiso MyByb3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJP TSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3Rw XzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9S REVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgaW5kZXhuYW1lIENPTExBVEUgIkMiLCB0 YWJsZXNwYWNlIENPTExBVEUgIkMiOworIHRhYmxlbmFtZSB8ICBpbmRleG5hbWUgIHwgICAg dGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgdCAgICAgICAgIHwgdF9wa2V5ICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisg dHBfMF8xICAgIHwgdHBfMF8xX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMV8yICAg IHwgdHBfMV8yX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCisoMyByb3dzKQorCitEUk9QIFRB QkxFIHQ7CistLSBDaGVjayBuZXcgcGFydGl0aW9ucyBpbmhlcml0cyBwYXJlbnQncyB0YWJs ZSBhY2Nlc3MgbWV0aG9kCitDUkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRf aGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUg VEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9u X3NwbGl0X2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp KTsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9JTiBw Z19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xh c3MsICd0cF8wXzEnOjpyZWdjbGFzcywgJ3RwXzFfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkg Yy5yZWxuYW1lIENPTExBVEUgIkMiOworIHJlbG5hbWUgfCAgICAgICAgYW1uYW1lICAgICAg ICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICB8IHBhcnRp dGlvbl9zcGxpdF9oZWFwCisgdHBfMF8xICB8IHBhcnRpdGlvbl9zcGxpdF9oZWFwCisgdHBf MV8yICB8IHBhcnRpdGlvbl9zcGxpdF9oZWFwCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7 CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXA7CistLSBTcGxpdCBw YXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUgd2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlv bnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBwYXJ0aXRpb24g YmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxFIHQgKGEgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMCBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwXzAgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAudHBfMCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiBwZ190ZW1wLnRwXzEgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgZGVmYXVsdHMgYW5kIGNv bnN0cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9iaWdpbnQgKAor ICBiIGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysxMCksCisgIGogaW50IERFRkFVTFQg MTAxLAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiKzEwKSBTVE9SRUQKKykKK1BB UlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9iaWdpbnRfZGVmYXVsdCBQ QVJUSVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3Ry YWludHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9z cGxpdF9zY2hlbWEudF9iaWdpbnQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0 b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIg ICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisg aSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAK KyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRl ZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYikKK1BhcnRpdGlvbnM6IHRfYmlnaW50X2Rl ZmF1bHQgREVGQVVMVAorCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9i aWdpbnRfZGVmYXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8 IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwg YmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5 cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1Bh cnRpdGlvbiBvZjogdF9iaWdpbnQgREVGQVVMVAorTm8gcGFydGl0aW9uIGNvbnN0cmFpbnQK KworQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1 bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IERFRkFVTFQpOwor LS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBTUExJVCBQQVJUSVRJT04KK1xk KyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAg IERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAg IHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3Rv cmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2lu dCBERUZBVUxUCitQYXJ0aXRpb24gY29uc3RyYWludDogKE5PVCAoKGIgSVMgTk9UIE5VTEwp IEFORCAoKGIgPj0gJzAnOjpiaWdpbnQpIEFORCAoYiA8ICcxMCc6OmJpZ2ludCkpKSkKKwor XGQrIHRfYmlnaW50XzAxXzEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnRfMDFfMTAiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAg RGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAg fCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9y ZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50 IEZPUiBWQUxVRVMgRlJPTSAoJzAnKSBUTyAoJzEwJykKK1BhcnRpdGlvbiBjb25zdHJhaW50 OiAoKGIgSVMgTk9UIE5VTEwpIEFORCAoYiA+PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEw Jzo6YmlnaW50KSkKKworRFJPUCBUQUJMRSB0X2JpZ2ludDsKKy0tIFRlc3QgcGVybWlzc2lv biBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQg dGhlCistLSB0aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFU RSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JB TlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w YXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMikpOyAtLWVycm9yCitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7IC0tZXJyb3IKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzIK K1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzBfMiBPV05F UiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7IC0tb2sKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0RS T1AgVEFCTEUgdDsKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBi ZSB0aGUgc2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBf MF8yKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxF IHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7 CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRw XzBfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAg ICAgICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93 bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgfCB0cF8wXzIgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlCisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJ TlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAor ICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CistLSBP d25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0 cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAg ICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBP d25lciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZQorKDEgcm93KQorCitcZHQgdHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBOYW1lICB8 IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzFfMiB8IHRhYmxlIHwgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygxIHJvdykKKworRFJPUCBUQUJMRSB0Owor LS0gVGVzdDogaW5kZXggb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0 aCBzYW1lIG93bmVyIGFzIHNwbGl0CistLSBwYXJ0aXRpb24KK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMTBf MjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0lOU0VS VCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTICQkCitCRUdJTgorICBSQUlT RSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBtZSBhcyAlJywgQ1VSUkVOVF9VU0VSOworICBS RVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdFIFBMUEdTUUwgSU1NVVRBQkxFOworLS0gT3du ZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NSRUFURSBJTkRFWCBP TiB0IChydW5fbWUoaSkpOworTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUg YXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMTBfMjAgSU5UTwor ICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisg ICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitO T1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2UKK05PVElDRTogIHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZQorRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBydW5fbWUoaW50 ZWdlcik7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZS T00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitSRVZPS0UgQUxMIE9OIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf Ym9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBS T0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKKy0tIFRlc3QgZm9yIGhhc2ggcGFy dGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhB U0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lU SCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CistLSBF UlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBz cGxpdAorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBBUlRJ VElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDApLAor ICAgUEFSVElUSU9OIHRwMV8yIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5E RVIgMikpOworRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBj YW5ub3QgYmUgc3BsaXQKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91 bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJ VEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDApKTsKK0VSUk9SOiAgbGlzdCBvZiBuZXcgcGFy dGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworRFJPUCBU QUJMRSB0OworLS0gVGVzdCBmb3Igc3BsaXQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAq IFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZB VUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCist LSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFi bGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VO RVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJ R0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQor Q1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBFWFRF TkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdpbnQs CisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVEKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENPTFVNTiB0LmkgSVMg J3QxLmknOworQ1JFQVRFIFRBQkxFIHRwX3gKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQg U1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfeCcsCisgYiBiaWdpbnQsCisgZCBk YXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FMVEVS IFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfeC5pIElTICd0cF94LmknOworQ1JFQVRFIFNU QVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRF IFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF94 OworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAw KTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+ IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2No ZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNU UkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOworSU5TRVJUIElOVE8gdHBfeChp LCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJTlNFUlQgSU5UTyB0cF94KGksIHQs IGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwn IEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6 IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwg VEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CitDUkVB VEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBP TiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9u KCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF94X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIg QkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVS RSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94Jyk7CitcZCsgdHBfeAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0 X3NjaGVtYS50cF94IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgIHwg U3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4g ICB8ICAgICAgICAgICAgICB8IHRwX3guaQorIHQgICAgICB8IHRleHQgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3RwX3gnOjp0ZXh0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgbWFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2lu dCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGQg ICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdh eXMgYXMgKCcwMi0wMi0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitQ YXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkp ID49IDApIEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9i X2NoZWNrIiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkg Tk9UIEVORk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElE CitTdGF0aXN0aWNzIG9iamVjdHM6CisgICAgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudHBf eF9zdGF0IiAoZGVwZW5kZW5jaWVzKSBPTiBpLCBiIEZST00gdHBfeAorTm90LW51bGwgY29u c3RyYWludHM6CisgICAgInRwX3hfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0 ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAor VHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNF UlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0 aW9uKCd0JyksIE9OIFRBQkxFIHQKKyAgICB0cF94X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdn ZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9O IHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cF94IElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KSk7CitcZCsgdHBfeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudHBfeCIKKyBDb2x1bW4g fCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAgICAg IERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0 IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAK KyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90 Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwgICAg ICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxs IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBw bGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKCcwMS0wMS0yMDIyJzo6ZGF0 ZSkgc3RvcmVkIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjog dCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgo YWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAxKSBBTkQgKGFicyhpKSA8IDIp KQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQor ICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2Jf Y2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorTm90LW51bGwgY29uc3RyYWludHM6 CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRf Yl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6Cisg ICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBG T1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9O IFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwg Myk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVu ID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBi OworIHRhYmxlb2lkIHwgaSB8ICAgICAgdCAgICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0t LS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tLQorIHRwXzBfMSAg IHwgMCB8IGRlZmF1bHRfdHBfeCB8IDEgfCAwMS0wMS0yMDIyCisgdHBfeCAgICAgfCAxIHwg ZGVmYXVsdF90cF94IHwgMiB8IDAxLTAxLTIwMjIKKyB0cF94ICAgICB8IDEgfCBkZWZhdWx0 X3QgICAgfCAzIHwgMDEtMDEtMjAyMgorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJP UCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7CistLSBUZXN0IGZvciByZWNvbXB1dGF0 aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGlu dCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENP TlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRP IHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24g aWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRp b24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00g dCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVS RSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworLS0gInRh Yl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQi IGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0g cGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgq KSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9N IHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisK K0RST1AgVEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1BIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDJkM2Y1MGE0M2Iu LjBmYjUzZDQ4NmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTIz LDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAg ZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0 ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNz IGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRp b25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFz aF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVw bGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3Rh dHMgcHJlZGljYXRlIG51bWEKK3Rlc3Q6IHBhcnRpdGlvbl9tZXJnZSBwYXJ0aXRpb25fc3Bs aXQgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0 IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0 IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJl ZGljYXRlIG51bWEKIAogIyBldmVudF90cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFu ZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBE REwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBlNzljMDM2ZWEKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0w LDAgKzEsMTEzNCBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJB TFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFuZAorLS0KKworQ1JF QVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0K KworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJPUjogIHJlbGF0aW9uICJz YWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVS Uk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBz cGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcy MDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3Ig cGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250 YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEw LTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv biAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBT UExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlv bnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgcGFydGl0 aW9uIHdpdGggbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQK Ky0tIChXZSBjYW4gY3JlYXRlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3Bs aXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhl IHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAy MiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisK Ky0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxy ZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElUSU9O IGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAy MiIKKy0tIERFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRh Ymxlcy4KK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBTUExJVCBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4y MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0t IEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJf bWFyX2FwcjIwMjIiCistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElP TiByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0 bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNi0wMScpKTsKKworLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBh cnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVz X2ZlYjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIFRlc3Rz IGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBleGVjdXRl ZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBE RVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKworLS0gRVJST1I6ICBsb3dlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIEhJ TlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQg Ym91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQg b2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworCistLSBDaGVjayB0aGUgc291cmNlIHBhcnRpdGlvbiBub3QgaW4gdGhlIHNlYXJjaCBw YXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMiwgcHVibGlj OworQUxURVIgVEFCTEUgcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZQorU1BM SVQgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViX21hcl9hcHIy MDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CitcZCsgc2FsZXNfcmFuZ2UKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworCistLSBBZGRpdGlv bmFsIHRlc3RzIGZvciBlcnJvciBtZXNzYWdlcywgbm8gZGVmYXVsdCBwYXJ0aXRpb24KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDUtMDEnKTsKKworLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxp dCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIEhJTlQ6ICBBTFRFUiBU QUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5l dyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0 IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0 YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisg ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwK KyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp LAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IHNhbGVzcGVyc29uX2lkOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCist LQorLS0gQWRkIHNwbGl0IHBhcnRpdGlvbiwgdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlv bmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAg ICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIy LTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIw MjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAor ICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxl cicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAn MjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyks CisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CisKKy0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hl bWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBD T0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2Ug Q0FTQ0FERTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRp b24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGgg REVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwg c2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxX QVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwg TFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19k YXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFS KDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxF IHNhbGVzX2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9N ICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bl9mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAy MiwgMSwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBB UlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8g KE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19k YXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19k YXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIy JywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFu YWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAo J01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwK KyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwg MSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9S REVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfamFuX2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwg MSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIs IDIsIDEpIFRPICgyMDIyLCAzLCAxKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2Fs ZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFM VUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIy LCAyLCAxMCk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19k YXRlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2Fs ZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKworRFJPUCBUQUJMRSBzYWxlc19k YXRlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbjsg dXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVyIHNwbGl0 CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElO REVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisg ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwK KyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp LAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz X290aGVyczsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAn c2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1h JyBPUkRFUiBCWSBpbmRleG5hbWUgQ09MTEFURSAiQyI7CisKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gVXNlIGlu ZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7 CisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdo ZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Zl YjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAn MjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNf ZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJP TSBzYWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAx JzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hl cmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3Ro ZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMKK1dIRVJFIHRhYmxlbmFtZSBp biAoJ3NhbGVzX2ZlYjIwMjInLCAnc2FsZXNfbWFyMjAyMicsICdzYWxlc19hcHIyMDIyJywg J3NhbGVzX290aGVycycpCitBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2No ZW1hJworT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOworCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxp dHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzX2RhdGUgZGF0 ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChsb3dlciBib3VuZCkKKy0t IEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dl dGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAy Mi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjEtMTItMzAnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vy cm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkKKy0tIEVS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHRvZ2V0 aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0w MS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDInKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9y IGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChpbnNpZGUgYm91bmQpCistLSBFUlJP UjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIg d2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIx LTEyLTEwJykgVE8gKCcyMDIxLTEyLTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBp bnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUgc2FtZSBib3VuZHMp CistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIg dG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAo JzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZS T00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBFUlJP UjogIGNhbiBub3Qgc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIKKy0t IEhJTlQ6ICBUbyBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiBvbmUgb2YgdGhlIG5ldyBwYXJ0 aXRpb24gbXN1dCBiZSBERUZBVUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSk7CisKKy0tIG5v IGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgYmV0d2VlbiBzYWxlc19kZWMy MDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMTAn KSBUTyAoJzIwMjItMDEtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CisKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gbm8gZXJyb3I6IGJvdW5k cyBvZiBzYWxlc19ub2Vycm9yIGFyZSBlcXVhbCB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRz IG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAy Mi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENI RUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQor LS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKAorc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4g MSksCitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOworCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwg Y29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJf bWFyX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUgQ09MTEFURSAi QyI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gV2Ugc2hvdWxk IHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg cGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwg Y29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIy MDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUgIkMiOworU0VM RUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBn X2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNz OjpvaWQgT1JERVIgQlkgY29ubmFtZSBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19nZXRfY29u c3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdI RVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZ IGNvbm5hbWUgQ09MTEFURSAiQyI7CisKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRp b24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3Jh bmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMSwgMCwgJzIwMjItMDMtMTEnKTsKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOworLS0gb2sKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMTAsICcyMDIyLTAzLTExJyk7CisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FT Q0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRpb25lZCB0 YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFu b3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25f aWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlcyAo c2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25f aWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworCitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFS VElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAg KDEwLCAnTWF5JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9mZicpLAor ICAoMzAsICdGb3JkJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUworICAoMSwgIDEw MCwgJzIwMjItMDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAzLTAyJyksCisgICgxMCwg MTUwLCAnMjAyMi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKSwKKyAgKDE5 LCAyMDAsICcyMDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAyMi0wMy0xMicpLAorICAo MjAsIDE3MCwgJzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CisK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lk OworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9w bGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9S IFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMw XzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2Ns YXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gRVJST1I6ICBp bnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNh bGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKy0tIG9rCitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CisKK0RST1AgVEFCTEUg c2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0K Ky0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRy aWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElO VCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2Fs ZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgT1IgUkVQTEFD RSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIg TEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0Ug J3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywg VEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxM OworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9p bnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxl c3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJF IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworQ1JFQVRFIFRS SUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIg SU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVD VVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7 CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKKy0tIDEgdHJp Z2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUx MF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxl IFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJU SVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAor ICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8g KDQwKSk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVt ZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicp OworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVn Y2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcigpOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50 aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBj b2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMg dG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQg R0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlv biB3aXRoIGlkZW50aXR5IGNvbHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShz YWxlc3BlcnNvbl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTJfNSBGT1IgVkFMVUVTIEZST00gKDIpIFRPICg1KTsKKworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5v dicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNw ZW9wbGUyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMl8zIEZPUiBWQUxVRVMg RlJPTSAoMikgVE8gKDMpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlM180IEZPUiBWQUxV RVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlNF81IEZPUiBW QUxVRVMgRlJPTSAoNCkgVE8gKDUpKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNh bGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKKworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKKy0tIGNo ZWNrIG5ldyBwYXJ0aXRpb25zIGhhdmUgaWRlbnRpdHkgb3Igbm90IGFmdGVyIHNwbGl0IHBh cnRpdGlvbgorU0VMRUNUIGF0dHJlbGlkOjpyZWdjbGFzcywgYXR0bmFtZSwgYXR0aWRlbnRp dHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZQorV0hFUkUgYXR0bnVtID4gMAor QU5EIGF0dHJlbGlkOjpyZWdjbGFzcyBJTiAoCisgICdzYWxlc3Blb3BsZTJfMyc6OnJlZ2Ns YXNzLCAnc2FsZXNwZW9wbGUnLCAnc2FsZXNwZW9wbGUyXzMnLAorICAnc2FsZXNwZW9wbGUx XzInLCAnc2FsZXNwZW9wbGUzXzQnLCAnc2FsZXNwZW9wbGU0XzUnKQorT1JERVIgQlkgYXR0 cmVsaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBhdHRudW07CisKK0RST1AgVEFC TEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlv biB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShz YWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBz b21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwKGQx IFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwg ZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAs IG5vdygpLCAnSXZhbm92JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAxMDEsIG5vdygp LCAnU21pcm5vZmYnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENP TFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDI7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdG b3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxl c3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8z MCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVv cGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCB0YWJs ZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRB QkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFy dGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVz X2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElU SU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3Nh bGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsK KworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIy LTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAg KDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIw MjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAor ICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQ QVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAy Ml8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEw JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIy LTA1LTAxJykpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNf cmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEJZ IExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3Jz IGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0 IChzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0 YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2kn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywg J0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZB VUxUOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92 ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05l dyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVF UyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193 ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19j ZW50cmFsIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNf YWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBG T1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQ QVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxp bicsICdMaXNib24nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJz YWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0 aW9uICJzYWxlc19hbGwiIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdE ZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6 ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJl Y2F1c2Ugc3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRvZXMgbm90IGhhdmUKK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZP UiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBB UlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGlu JywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVG QVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uICJzYWxlc19vdGhlcnMiIGFscmVhZHkg ZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04g c2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9z dG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBE RUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLSBUZXN0IGZvciBub24t c3ltYm9saWMgY29tcGFyaXNvbiBvZiB2YWx1ZXMgKG51bWVyaWMgdmFsdWVzICcwJyBhbmQg JzAuMCcgYXJlIGVxdWFsKS4KK0NSRUFURSBUQUJMRSB0IChhIG51bWVyaWMpIFBBUlRJVElP TiBCWSBMSVNUIChhKTsKK0NSRUFURSBUQUJMRSB0MSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIGluICAoJzAnLCAnMScpOworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJ4IiB3b3Vs ZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJ4MSIKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHQxIElOVE8KKyAgKFBBUlRJVElPTiB4IEZPUiBWQUxVRVMg SU4gKCcwJyksCisgICBQQVJUSVRJT04geDEgRk9SIFZBTFVFUyBJTiAoJzAuMCcsICcxJykp OworRFJPUCBUQUJMRSB0OworCistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBm b3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90 IGhhdmUgTlVMTCB2YWx1ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBu ZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9u IGhhcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdChzYWxlc19zdGF0ZSBWQVJDSEFS KDIwKSkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxF IHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hl bHNpbmtpJywgJ1N0LiBQZXRlcnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycs ICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAn RGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycsIE5VTEwpOworCistLSBFUlJPUjogIG5l dyBwYXJ0aXRpb25zIGNvbWJpbmVkIHBhcnRpdGlvbiBib3VuZHMgZG8gbm90IGNvbnRhaW4g dmFsdWUgKE5VTEwpIGJ1dCBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcworLS0g SElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5l ZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3Vu ZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElU IFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9S IFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxh ZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRp dGlvbnMgY29tYmluZWQgcGFydGl0aW9uIGJvdW5kcyBkbyBub3QgY29udGFpbiB2YWx1ZSAo J0t5aXYnOjpjaGFyYWN0ZXIgdmFyeWluZygyMCkpIGJ1dCBzcGxpdCBwYXJ0aXRpb24gInNh bGVzX2FsbCIgZG9lcworLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJ T04gcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFj dGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworCistLSBF UlJPUiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQorQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBG T1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBE RUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkg TElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNh bGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1Qg KHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25f bmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7 CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlz dCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9y ZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAn U3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdL eWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3Qg KHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2Rh dGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIw MjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcy MDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAn MjAyMi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwg JzIwMjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAs ICcyMDIyLTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAw LCAnMjAyMi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIw MCwgJzIwMjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDEx NTAsICcyMDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAx MjAwLCAnMjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAg IDgwMCwgJzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAg ICA2NTAsICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAg ICAgMzUwLCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAg ICAgIDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAg ICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNz Ojp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4c2Nh biBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIHNwbGl0dGluZyBwYXJ0aXRpb24KK1NFVCBl bmFibGVfc2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVD VCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOwor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2Fs ZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBz YWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworU0VM RUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92 JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsK KworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIHRv IHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9t IG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAor ICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFk ZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDQtMTAnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0g VGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRp dGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVy IG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1 LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKKworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4y MDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w MS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRF UiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29u X2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3Igc3Bs aXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsgcGFydGl0 aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0z MCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAx NTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAz LTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAg IDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjIt MDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAo MTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CisKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2U7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3Ro ZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElP TiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1Ig VkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJU SVRJT04gQlkgUkFOR0UgKHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBu b3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQg UEFSVElUSU9OIHQxcGEgSU5UTworICAgKFBBUlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9N ICgnQScpIFRPICgnQicpLAorICAgIFBBUlRJVElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgn QicpIFRPICgnQycpKTsKKworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKy0t CistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitD UkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NS RUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lz dGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5o ZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0g J3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzOjpwZ19jYXRhbG9nLnRleHQgQ09MTEFURSAiQyI7CisKKy0tIEVSUk9SOiAgY2Fubm90 IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5 IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElO VE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisg ICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworQUxU RVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiBw Z190ZW1wLnRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElP TiBwZ190ZW1wLnRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0tIFBh cnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBw Z19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFO RCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5w Z19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6 cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0IENPTExBVEUgIkMiOworCitE Uk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0IHBh cmVudCdzIHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBV U0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBC WSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxF IHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FM VEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04g dHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFf MiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJs ZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBf MF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hl bWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xM QVRFICJDIjsKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9N IHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBf MV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JE RVIgQlkgdGFibGVuYW1lIENPTExBVEUgIkMiLCBpbmRleG5hbWUgQ09MTEFURSAiQyIsIHRh Ymxlc3BhY2UgQ09MTEFURSAiQyI7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIG5ldyBw YXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK0NSRUFU RSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUgSEFORExF UiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NSRUFURSBU QUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7 CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElU SU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0 cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwg YS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEu b2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNz LCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWUgQ09MTEFURSAiQyI7 CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hl YXA7CisKKy0tIFNwbGl0IHBhcnRpdGlvbiBvZiBhIHRlbXBvcmFyeSB0YWJsZSB3aGVuIG9u ZSBvZiB0aGUgcGFydGl0aW9ucyBhZnRlcgorLS0gc3BsaXQgaGFzIHRoZSBzYW1lIG5hbWUg YXMgdGhlIHBhcnRpdGlvbiBiZWluZyBzcGxpdAorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoYSBp bnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUg dCBTUExJVCBQQVJUSVRJT04gdHBfMCBJTlRPCisgIChQQVJUSVRJT04gcGdfdGVtcC50cF8w IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBnX3RlbXAudHBf MSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENo ZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBvZiBuZXcgcGFydGl0aW9ucworQ1JFQVRF IFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQsCisgIGkgaW50IERFRkFVTFQgKDMrMTAp LAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAo YisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkgUkFOR0UgKGIpOworQ1JFQVRFIFRBQkxF IHRfYmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRfYmlnaW50IERFRkFVTFQ7CistLSBT aG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9yZSBTUExJVCBQQVJUSVRJT04KK1xkKyB0 X2JpZ2ludAorXGQrIHRfYmlnaW50X2RlZmF1bHQKK0FMVEVSIFRBQkxFIHRfYmlnaW50IFNQ TElUIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IElOVE8KKyAgKFBBUlRJVElPTiB0X2Jp Z2ludF8wMV8xMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCksCisgICBQQVJUSVRJT04g dF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUKTsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWlu dHMgYWZ0ZXIgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorXGQrIHRf YmlnaW50XzAxXzEwCitEUk9QIFRBQkxFIHRfYmlnaW50OworCistLSBUZXN0IHBlcm1pc3Np b24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5k IHRoZQorLS0gdGhlIHBhcnRpdGlvbiB0byBzcGxpdCB0byBkbyB0aGUgc3BsaXQuCitDUkVB VEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBST0xFIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dS QU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9ib2I7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKSk7IC0tZXJyb3IKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKwor QUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJ T04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7IC0tZXJyb3IKK1JFU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpKTsgLS1vaworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitEUk9QIFRBQkxF IHQ7CisKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0aGUg c2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIo aSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0 IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8yIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOwor CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRw XzBfMgorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJ VElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBPd25lciBz aG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzEK K1xkdCB0cF8xXzIKKworRFJPUCBUQUJMRSB0OworCistLSBUZXN0OiBpbmRleCBvZiBuZXcg cGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3BsaXQK Ky0tIHBhcnRpdGlvbgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xMF8yMCBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDExKSwg KDE2KTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2VyKSBSRVRV Uk5TIGludGVnZXIgQVMgJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAneW91IGFyZSBydW5u aW5nIG1lIGFzICUnLCBDVVJSRU5UX1VTRVI7CisgIFJFVFVSTiAkMTsKK0VORAorJCQgTEFO R1VBR0UgUExQR1NRTCBJTU1VVEFCTEU7CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkpKTsKK1JF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cF8xMF8yMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMTBfMTUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KSwKKyAgIFBBUlRJVElPTiB0cF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBydW5f bWUoaW50ZWdlcik7CisKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworCistLSBUZXN0IGZv ciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRw MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVS IDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxl IGNhbm5vdCBiZSBzcGxpdAorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAxIElO VE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVN QUlOREVSIDApLAorICAgUEFSVElUSU9OIHRwMV8yIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxV UyA0LCBSRU1BSU5ERVIgMikpOworCistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlv bnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZB TFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSk7CisKK0RST1AgVEFCTEUgdDsK KworCistLSBUZXN0IGZvciBzcGxpdCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RB VElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRT IGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICog U1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQor LS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFU RUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VS UyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCisKK0NS RUFURSBUQUJMRSB0CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5E RUQgQ09NUFJFU1NJT04gcGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAor IGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFS VElUSU9OIEJZIFJBTkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0 MS5pJzsKKworQ1JFQVRFIFRBQkxFIHRwX3gKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQg U1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfeCcsCisgYiBiaWdpbnQsCisgZCBk YXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FMVEVS IFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfeC5pIElTICd0cF94LmknOworCitDUkVBVEUg U1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVB VEUgU1RBVElTVElDUyB0cF94X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRw X3g7CisKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChi ID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sg KGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRf Yl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBD T05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKKworSU5TRVJUIElOVE8g dHBfeChpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJTlNFUlQgSU5UTyB0cF94 KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKKworQ1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAn cGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUp IGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0s IFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZ JDsKKworQ1JFQVRFIFRSSUdHRVIgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9S RSBJTlNFUlQgT04gdCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dl cl9mdW5jdGlvbigndCcpOworQ1JFQVRFIFRSSUdHRVIgdHBfeF9iZWZvcmVfaW5zZXJ0X3Jv d190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VU RSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfeCcpOworCitcZCsgdHBfeAorQUxU RVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfeCBJTlRPCisgIChQQVJUSVRJT04gdHBf MF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwX3ggRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworXGQrIHRwX3gKKworSU5TRVJUIElOVE8gdChp LCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gdCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIGI7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rp b24oKTsKKworCistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0 ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0 ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFi bGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOwor CistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cg d2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciBy b3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0 YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRh Yl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQi IGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0 aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCist LSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50 KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZS T00gdCBXSEVSRSBpID0gMSk7CisKK0RST1AgVEFCTEUgdDsKKworCitSRVNFVCBzZWFyY2hf cGF0aDsKKworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9Q IFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggMzdmMjZmNmM2Yi4uOTEyYWFhODhiNSAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKQEAgLTI3ODAsNiArMjc4MCw3IEBAIFNpbXBsZVN0YXRzCiBTaW1wbGVT dHJpbmdMaXN0CiBTaW1wbGVTdHJpbmdMaXN0Q2VsbAogU2luZ2xlQm91bmRTb3J0SXRlbQor U2luZ2xlUGFydGl0aW9uU3BlYwogU2l6ZQogU2tpcFBhZ2VzCiBTa2lwU3VwcG9ydApAQCAt Mjg0Niw2ICsyODQ3LDcgQEAgU3BlY2lhbEpvaW5JbmZvCiBTcGluRGVsYXlTdGF0dXMKIFNw bGl0SW50ZXJ2YWwKIFNwbGl0TFIKK1NwbGl0UGFydGl0aW9uQ29udGV4dAogU3BsaXRQYWdl TGF5b3V0CiBTcGxpdFBvaW50CiBTcGxpdFRleHRPdXRwdXREYXRhCi0tIAoyLjQwLjEud2lu ZG93cy4xCgo= --------------gMwOW8dEiJ0sV4Li0sRjBJNz--