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 1riKMi-00GbGy-3W for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Mar 2024 20:29:21 +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 1riKMg-008Pxd-Az for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Mar 2024 20:29:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1riKMf-008PxU-Ai for pgsql-hackers@lists.postgresql.org; Thu, 07 Mar 2024 20:29:18 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1riKMR-003MnM-IK for pgsql-hackers@postgresql.org; Thu, 07 Mar 2024 20:29:16 +0000 Received: from [172.30.8.234] (unknown [172.30.8.234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 51A97E21016; Thu, 7 Mar 2024 23:29:00 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1709843341; bh=2kiG/ePuyqSglZN3/XXuV1cZf2nch3ikjrnPsi0lUYo=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=JS4O6vQltH/384J/PTAK2qtOHl0WHD6wGxbI2mmcYuQIQNIj4fzNT2NUJ1dze7R8F Po2K+JvkfYDXCMryzPBnqf4GGuY8JXAP/geM8Lq6H/dZYIEOcz0JgCq4DIQvFnWqX6 yKrlPvviGm8U34STYO+v63Q1/xAsH2gA5U9ycAtZOV+8nYv5JnEkL+I7UxfNqItfGm b7SPaazcXLK4GAXbHUlXCv0pd68wbI2PLrw+AyffepnLe6h4T3xEMlEfKsMOiN/Ztn RVQUuP4u+6umoBhOiWYIeNurQPu00L0ga70BMnTKdMLzKerZgLIkod1djV3e8AaXVx FunweyPo+rXdw== Content-Type: multipart/mixed; boundary="------------MUM50ReAJht5A2gAd7uJicWK" Message-ID: <90b67871-0263-484f-9fc0-606bdcdd84c5@postgrespro.ru> Date: Thu, 7 Mar 2024 23:28:59 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes Content-Language: en-US To: Alexander Korotkov Cc: Andrei Lepikhov , jian he , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela References: <567ED6CA.2040504@sigaev.ru> <21088129-7cd3-424a-bcce-6a3427ba3276@postgrespro.ru> <11ee9c04-281f-43c8-a0ff-d481c1e01c09@postgrespro.ru> <54009ba5-4aea-4344-a30d-e3558a59e2a9@postgrespro.ru> <380e5683-cdfd-4220-ab9b-7cccb9d3e480@postgrespro.ru> From: Alena Rybakina In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------MUM50ReAJht5A2gAd7uJicWK Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi! On 07.03.2024 17:51, Alexander Korotkov wrote: > Hi! > > On Tue, Mar 5, 2024 at 9:59 AM Andrei Lepikhov > wrote: > > On 5/3/2024 12:30, Andrei Lepikhov wrote: > > > On 4/3/2024 09:26, jian he wrote: > > ... and the new version of the patchset is attached. > > I made some revisions for the patchset. > 1) Use hash_combine() to combine hash values. > 2) Upper limit the number of array elements by MAX_SAOP_ARRAY_SIZE. > 3) Better save the original order of clauses by putting hash entries > and untransformable clauses to the same list.  A lot of differences in > regression tests output have gone. Thank you for your changes. I agree with them. > > One important issue I found. > > # create table t as (select i::int%100 i from generate_series(1,10000) i); > # analyze t; > # explain select * from t where i = 1 or i = 1; >                      QUERY PLAN > ----------------------------------------------------- >  Seq Scan on t  (cost=0.00..189.00 rows=200 width=4) >    Filter: (i = ANY ('{1,1}'::integer[])) > (2 rows) > > # set enable_or_transformation = false; > SET > # explain select * from t where i = 1 or i = 1; >                      QUERY PLAN > ----------------------------------------------------- >  Seq Scan on t  (cost=0.00..189.00 rows=100 width=4) >    Filter: (i = 1) > (2 rows) > > We don't make array values unique.  That might make query execution > performance somewhat worse, and also makes selectivity estimation > worse.  I suggest Andrei and/or Alena should implement making array > values unique. > > I have corrected this and some spelling mistakes. The unique_any_elements_change.no-cfbot file contains changes. While I was correcting the test results caused by such changes, I noticed that the same behavior was when converting the IN expression, and this can be seen in the result of the regression test:  EXPLAIN (COSTS OFF)  SELECT unique2 FROM onek2  WHERE stringu1 IN ('A', 'A') AND (stringu1 = 'A' OR stringu1 = 'A');                                 QUERY PLAN ---------------------------------------------------------------------------   Bitmap Heap Scan on onek2     Recheck Cond: (stringu1 < 'B'::name)    Filter: ((stringu1 = ANY ('{A,A}'::name[])) AND (stringu1 = 'A'::name))     ->  Bitmap Index Scan on onek2_u2_prtl  (4 rows) -- Regards, Alena Rybakina Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------MUM50ReAJht5A2gAd7uJicWK Content-Type: text/plain; charset=UTF-8; name="unique_any_elements_change.no-cfbot" Content-Disposition: attachment; filename="unique_any_elements_change.no-cfbot" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGJhZWI4M2U1OGIuLmU5ODEzZWY2YWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMzEyLDggKzMxMiw4IEBAIFRyYW5z Zm9ybU9yRXhwclRvQU5ZKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYXJncywgaW50IGxv Y2F0aW9uKQogCiAJCWlmICh1bmxpa2VseShmb3VuZCkpCiAJCXsKLQkJCWVudHJ5LT5jb25z dHMgPSBsYXBwZW5kKGVudHJ5LT5jb25zdHMsIGNvbnN0X2V4cHIpOwotCQkJZW50cnktPmV4 cHJzID0gbGFwcGVuZChlbnRyeS0+ZXhwcnMsIG9ycXVhbCk7CisJCQllbnRyeS0+Y29uc3Rz ID0gbGlzdF9hcHBlbmRfdW5pcXVlKGVudHJ5LT5jb25zdHMsIGNvbnN0X2V4cHIpOworCQkJ ZW50cnktPmV4cHJzID0gbGlzdF9hcHBlbmRfdW5pcXVlKGVudHJ5LT5leHBycywgb3JxdWFs KTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTM1Miw3ICszNTIsNiBAQCBUcmFuc2Zvcm1PckV4 cHJUb0FOWShQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmFyZ3MsIGludCBsb2NhdGlvbikK IAkJZW50cnkgPSAoT3JDbGF1c2VHcm91cEVudHJ5ICopIGxmaXJzdChsYyk7CiAKIAkJQXNz ZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25zdHMpID4gMCk7Ci0JCUFzc2VydChsaXN0X2xl bmd0aChlbnRyeS0+ZXhwcnMpID09IGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25zdHMpKTsKIAog CQlpZiAobGlzdF9sZW5ndGgoZW50cnktPmNvbnN0cykgPT0gMSB8fAogCQkJbGlzdF9sZW5n dGgoZW50cnktPmNvbnN0cykgPiBNQVhfU0FPUF9BUlJBWV9TSVpFKQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IDdiNzIxYmFjNzEuLjYw NmE0Mzk5ZjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQKQEAgLTE5MTUsMTYgKzE5MTUsMTYgQEAgU0VMRUNUIGNvdW50KCopIEZST00gdGVu azEKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAg IFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhvdXNhbmQgPCA5 OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAgICAtPiAgQml0bWFwIEhlYXAg U2NhbiBvbiB0ZW5rMQotICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0Mikg QU5EICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0Myw0Mn0nOjppbnRlZ2VyW10pKSkKKyAg ICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPCBB TlkgKCd7NDIsOTksNDN9Jzo6aW50ZWdlcltdKSkpCiAgICAgICAgICAtPiAgQml0bWFwQW5k CiAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJl ZAogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKICAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50 aG91cwotICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kIDwgQU5Z ICgnezQyLDk5LDQzLDQyfSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAodGhvdXNhbmQgPCBBTlkgKCd7NDIsOTksNDN9Jzo6aW50ZWdlcltdKSkK ICg4IHJvd3MpCiAKIEVYUExBSU4gKENPU1RTIE9GRikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc2VsZWN0Lm91dAppbmRleCAwZWJhZjAwMmU4Li5mNGY1NDkzYzQzIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0CkBAIC0xMDQ3LDExICsxMDQ3LDExIEBAIFNF TEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScsICdKJywg J0MnKTsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB1bmlxdWUyIEZST00gb25lazIK IFdIRVJFIHN0cmluZ3UxIElOICgnQScsICdBJykgQU5EIChzdHJpbmd1MSA9ICdBJyBPUiBz dHJpbmd1MSA9ICdBJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCiAg ICBSZWNoZWNrIENvbmQ6IChzdHJpbmd1MSA8ICdCJzo6bmFtZSkKLSAgIEZpbHRlcjogKChz dHJpbmd1MSA9IEFOWSAoJ3tBLEF9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA9IEFOWSAo J3tBLEF9Jzo6bmFtZVtdKSkpCisgICBGaWx0ZXI6ICgoc3RyaW5ndTEgPSBBTlkgKCd7QSxB fSc6Om5hbWVbXSkpIEFORCAoc3RyaW5ndTEgPSAnQSc6Om5hbWUpKQogICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKICg0IHJvd3MpCiAKQEAgLTExMTQsNyAr MTExNCw3IEBAIFdIRVJFIHVuaXF1ZTEgSU4gKChyYW5kb20oKSoyKTo6aW50ZWdlciwgKHJh bmRvbSgpKjMpOjppbnRlZ2VyKTsKICAgIEZpbHRlcjogKHVuaXF1ZTEgPSBBTlkgKEFSUkFZ WygocmFuZG9tKCkgKiAnMic6OmRvdWJsZSBwcmVjaXNpb24pKTo6aW50ZWdlciwgKChyYW5k b20oKSAqICczJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyXSkpCiAoMiByb3dzKQog Ci0tLSBDb21iaW5lIGRpZmZlcmVudCBzYW9wcy4gU29lIG9mIHRoZW0gZG9lc250JyBmaXQg YSBzZXQgb2YgcGFydGlhbCBpbmRleGVzLAorLS0gQ29tYmluZSBkaWZmZXJlbnQgc2FvcHMu IFNvbWUgb2YgdGhlbSBkb2VzbnQnIGZpdCBhIHNldCBvZiBwYXJ0aWFsIGluZGV4ZXMsCiAt LSBidXQgb3RoZXIgZml0cy4KIC0tIFVuZm9ydHVuYXRlbHksIHdlIGRvbid0IGNvbWJpbmUg c2FvcCBhbmQgT1IgY2xhdXNlcyBzbyBmYXIuCiBFWFBMQUlOIChDT1NUUyBPRkYpCkBAIC0x MTcwLDcgKzExNzAsNyBAQCBXSEVSRSAodW5pcXVlMSA8IDEgT1Igc3RyaW5ndTEgSU4gKCdB JywnSicpKTsKICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9w cnRsCiAoOSByb3dzKQogCi0tLSBBbHRob3VnaCBTQU9QIGRvZXNuJ3QgZml0IHBhcnRpYWwg aW5kZXhlcyBmdWxseSwgd2UgY2FuIHVzZSBhbmRlZCBPUiBjbGF1c2UKKy0tIEFsdGhvdWdo IFNBT1AgZG9lc24ndCBmaXQgcGFydGlhbCBpbmRleGVzIGZ1bGx5LCB3ZSBjYW4gdXNlIGFk ZGVkIE9SIGNsYXVzZQogLS0gdG8gc2NhbiBhbm90aGVyIGNvdXBsZSBvZiBwYXJ0aWFsIGlu ZGV4ZXMuCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVr MgpAQCAtMTE4OCw2ICsxMTg4LDE3IEBAIFdIRVJFIHN0cmluZ3UxIElOICgnQicsJ0onKSBB TkQgKHN0cmluZ3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAxKTsKICg4IHJvd3MpCiAKIFJFU0VU IGVuYWJsZV9pbmRleHNjYW47CistLUNoZWNrIHRoZSBjYXNlIHdoZW4gd2UgY29uc3RydWN0 IEFOWSBsaXN0IHdpdGggdW5pcXVlIGVsZW1lbnRzCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IDEgT1IgdW5pcXVl MSA9IDE7CisgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIG9uZWsy X3UxX3BydGwgb24gb25lazIKKyAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkK KygzIHJvd3MpCisKIFJFU0VUIGVuYWJsZV9zZXFzY2FuOwogLS0KIC0tIFRlc3Qgc29tZSBj b3JuZXIgY2FzZXMgdGhhdCBoYXZlIGJlZW4ga25vd24gdG8gY29uZnVzZSB0aGUgcGxhbm5l cgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0LnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5zcWwKaW5kZXggMjIzZjU1YWY0ZS4uYjhjZWU0MTY1 OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0LnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3Quc3FsCkBAIC0yOTEsNyArMjkxLDcgQEAgRVhQ TEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgog V0hFUkUgdW5pcXVlMSBJTiAoKHJhbmRvbSgpKjIpOjppbnRlZ2VyLCAocmFuZG9tKCkqMyk6 OmludGVnZXIpOwogCi0tLSBDb21iaW5lIGRpZmZlcmVudCBzYW9wcy4gU29lIG9mIHRoZW0g ZG9lc250JyBmaXQgYSBzZXQgb2YgcGFydGlhbCBpbmRleGVzLAorLS0gQ29tYmluZSBkaWZm ZXJlbnQgc2FvcHMuIFNvbWUgb2YgdGhlbSBkb2VzbnQnIGZpdCBhIHNldCBvZiBwYXJ0aWFs IGluZGV4ZXMsCiAtLSBidXQgb3RoZXIgZml0cy4KIC0tIFVuZm9ydHVuYXRlbHksIHdlIGRv bid0IGNvbWJpbmUgc2FvcCBhbmQgT1IgY2xhdXNlcyBzbyBmYXIuCiBFWFBMQUlOIChDT1NU UyBPRkYpCkBAIC0zMDcsMTMgKzMwNywxOCBAQCBXSEVSRSB1bmlxdWUxIDwgMSBPUiAoc3Ry aW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSicpOwogRVhQTEFJTiAoQ09TVFMgT0ZGKQog U0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKIFdIRVJFICh1bmlxdWUxIDwg MSBPUiBzdHJpbmd1MSBJTiAoJ0EnLCdKJykpOwotLS0gQWx0aG91Z2ggU0FPUCBkb2Vzbid0 IGZpdCBwYXJ0aWFsIGluZGV4ZXMgZnVsbHksIHdlIGNhbiB1c2UgYW5kZWQgT1IgY2xhdXNl CistLSBBbHRob3VnaCBTQU9QIGRvZXNuJ3QgZml0IHBhcnRpYWwgaW5kZXhlcyBmdWxseSwg d2UgY2FuIHVzZSBhZGRlZCBPUiBjbGF1c2UKIC0tIHRvIHNjYW4gYW5vdGhlciBjb3VwbGUg b2YgcGFydGlhbCBpbmRleGVzLgogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50 KCopIEZST00gb25lazIKIFdIRVJFIHN0cmluZ3UxIElOICgnQicsJ0onKSBBTkQgKHN0cmlu Z3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAxKTsKIAogUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsK Ky0tQ2hlY2sgdGhlIGNhc2Ugd2hlbiB3ZSBjb25zdHJ1Y3QgQU5ZIGxpc3Qgd2l0aCB1bmlx dWUgZWxlbWVudHMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IG9uZWsyCitXSEVSRSB1bmlxdWUxID0gMSBPUiB1bmlxdWUxID0gMTsKKwogUkVTRVQgZW5h YmxlX3NlcXNjYW47CiAKIC0tCg== --------------MUM50ReAJht5A2gAd7uJicWK Content-Type: text/x-patch; charset=UTF-8; name="v21-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pat.patch" Content-Disposition: attachment; filename*0="v21-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pa"; filename*1="t.patch" Content-Transfer-Encoding: base64 RnJvbSA5NzIxZjNlOGVjZGE5NzIyNDFkOWJlZGJmYjkxNWZkMTUxNGNiOWQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCA1IE1hciAyMDI0IDEzOjI5OjQ2ICswNzAw ClN1YmplY3Q6IFtQQVRDSCAyLzJdIFRlYWNoIGdlbmVyYXRlX2JpdG1hcF9vcl9wYXRocyB0 byBidWlsZCBCaXRtYXBPciBwYXRocwogb3ZlciBTQU9QIGNsYXVzZXMuCgpMaWtld2lzZSBP UiBjbGF1c2VzLCBkaXNjb3ZlciBTQU9QIGFycmF5IGFuZCB0cnkgdG8gc3BsaXQgaXRzIGVs ZW1lbnRzCmJldHdlZW4gc21hbGxlciBzaXplZCBhcnJheXMgdG8gZml0IGEgc2V0IG9mIHBh cnRpYWwgaW5kZXhlcy4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAg ICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5j ICAgICB8IDMxNSArKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wcmVkdGVzdC5jICAgICB8ICA0NiArKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9yZXN0cmljdGluZm8uYyB8ICAxMyArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIv b3B0aW1pemVyLmggICAgICAgICB8ICAxNiArKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jl c3RyaWN0aW5mby5oICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z ZWxlY3Qub3V0ICAgICAgfCAyOTMgKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3NlbGVjdC5zcWwgICAgICAgICAgIHwgIDg3ICsrKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgIDEgKwogOSBmaWxlcyBjaGFu Z2VkLCA3MjIgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmlu ZGV4IDFmZGZmZmQ3OWIuLjgwMDhiMDUzMjcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTU0NDYsNiAr NTQ0Niw5IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8 L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICAgIFRoZSBncm91 cGluZyB0ZWNobmlxdWUgb2YgdGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBiYXNlZCBvbiB0aGUg ZXF1aXZhbGVuY2Ugb2YgdmFyaWFibGUgc2lkZXMuCiAgICAgICAgIE9uZSBzaWRlIG9mIHN1 Y2ggYW4gZXhwcmVzc2lvbiBtdXN0IGJlIGEgY29uc3RhbnQgY2xhdXNlLCBhbmQgdGhlIG90 aGVyIG11c3QgY29udGFpbiBhIHZhcmlhYmxlIGNsYXVzZS4KICAgICAgICAgVGhlIGRlZmF1 bHQgaXMgPGxpdGVyYWw+b248L2xpdGVyYWw+LgorICAgICAgICBBbHNvLCBkdXJpbmcgQml0 bWFwU2NhbiBwYXRocyBnZW5lcmF0aW9uIGl0IGVuYWJsZXMgYW5hbHlzaXMgb2YgZWxlbWVu dHMKKyAgICAgICAgb2YgSU4gb3IgQU5ZIGNvbnN0YW50IGFycmF5cyB0byBjb3ZlciBzdWNo IGNsYXVzZSB3aXRoIEJpdG1hcE9yIHNldCBvZgorICAgICAgICBwYXJ0aWFsIGluZGV4IHNj YW5zLgogICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhw YXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDMy YzZhOGJiZGMuLmY5MmE0N2MzZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5k eHBhdGguYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5o IgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jl c3RyaWN0aW5mby5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIApAQCAtMTIy MCwxMSArMTIyMSwxODggQEAgYnVpbGRfcGF0aHNfZm9yX09SKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEJ1aWxk aW5nIGluZGV4IHBhdGhzIG92ZXIgU0FPUCBjbGF1c2UgZGlmZmVycyBmcm9tIHRoZSBsb2dp YyBvZiBPUiBjbGF1c2VzLgorICogSGVyZSB3ZSBpdGVyYXRlIGFjcm9zcyBhbGwgdGhlIGFy cmF5IGVsZW1lbnRzIGFuZCBzcGxpdCB0aGVtIHRvIFNBT1BzLAorICogY29ycmVzcG9uZGlu ZyB0byBkaWZmZXJlbnQgaW5kZXhlcy4gV2UgbXVzdCBtYXRjaCBlYWNoIGVsZW1lbnQgdG8g YW4gaW5kZXguCisgKi8KK3N0YXRpYyBMaXN0ICoKK2J1aWxkX3BhdGhzX2Zvcl9TQU9QKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIFJlc3RyaWN0SW5mbyAqcmluZm8s CisJCQkJCSBMaXN0ICpvdGhlcl9jbGF1c2VzKQoreworCUxpc3QJCQkgICAqcmVzdWx0ID0g TklMOworCUxpc3QJCQkgICAqcHJlZGljYXRlX2xpc3RzID0gTklMOworCUxpc3RDZWxsCQkg ICAqbGM7CisJUHJlZGljYXRlc0RhdGEJICAgKnBkOworCVNjYWxhckFycmF5T3BFeHByICAq c2FvcCA9IChTY2FsYXJBcnJheU9wRXhwciAqKSByaW5mby0+Y2xhdXNlOworCisJQXNzZXJ0 KElzQShzYW9wLCBTY2FsYXJBcnJheU9wRXhwcikgJiYgc2FvcC0+dXNlT3IpOworCisJaWYg KCFJc0EobHNlY29uZChzYW9wLT5hcmdzKSwgQ29uc3QpKQorCQkvKgorCQkgKiBIYXMgaXQg cHJhY3RpY2FsIG91dGNvbWUgdG8gbWVyZ2UgYXJyYXlzIHdoaWNoIGNvdWxkbid0IGNvbnN0 YW50aWZpZWQKKwkJICogYmVmb3JlIHRoYXQgc3RlcD8KKwkJICovCisJCXJldHVybiBOSUw7 CisKKwkvKiBDb2xsZWN0IHByZWRpY2F0ZXMgKi8KKwlmb3JlYWNoKGxjLCByZWwtPmluZGV4 bGlzdCkKKwl7CisJCUluZGV4T3B0SW5mbyAqaW5kZXggPSAoSW5kZXhPcHRJbmZvICopIGxm aXJzdChsYyk7CisKKwkJLyogVGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gcGFydGlhbCBpbmRl eGVzIHN1cHBvcnRpbmcgYml0bWFwIHNjYW5zICovCisJCWlmICghaW5kZXgtPmFtaGFzZ2V0 Yml0bWFwIHx8IGluZGV4LT5pbmRwcmVkID09IE5JTCB8fCBpbmRleC0+cHJlZE9LKQorCQkJ Y29udGludWU7CisKKwkJcGQgPSBwYWxsb2MwKHNpemVvZihQcmVkaWNhdGVzRGF0YSkpOwor CQlwZC0+aWQgPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgobGMpOworCQkvKiBUaGUgdHJpY2sg d2l0aCByZWR1Y2luZyByZWN1cnNpb24gaXMgc3RvbGVuIGZyb20gcHJlZGljYXRlX2ltcGxp ZWRfYnkgKi8KKwkJcGQtPnByZWRpY2F0ZSA9IGxpc3RfbGVuZ3RoKGluZGV4LT5pbmRwcmVk KSA9PSAxID8KKwkJCQkJCQkJCQkoTm9kZSAqKSBsaW5pdGlhbChpbmRleC0+aW5kcHJlZCkg OgorCQkJCQkJCQkJCShOb2RlICopIGluZGV4LT5pbmRwcmVkOworCQlwcmVkaWNhdGVfbGlz dHMgPSBsYXBwZW5kKHByZWRpY2F0ZV9saXN0cywgKHZvaWQgKikgcGQpOworCX0KKworCS8q IFNwbGl0IHRoZSBhcnJheSBkYXRhIGFjY29yZGluZyB0byBpbmRleCBwcmVkaWNhdGVzLiAq LworCWlmIChwcmVkaWNhdGVfbGlzdHMgPT0gTklMIHx8CisJCSFzYW9wX2NvdmVyZWRfYnlf cHJlZGljYXRlcyhzYW9wLCBwcmVkaWNhdGVfbGlzdHMpKQorCQlyZXR1cm4gTklMOworCisJ b3RoZXJfY2xhdXNlcyA9IGxpc3RfZGVsZXRlX3B0cihvdGhlcl9jbGF1c2VzLCByaW5mbyk7 CisKKwkvKgorCSAqIEhhdmluZyBpbmNvbWluZyBTQU9QIHNwbGl0IHRvIHNldCBvZiBzbWFs bGVyIFNBT1BzIHdoaWNoIGNhbiBiZSBhcHBsaWVkCisJICogdG8gcGFydGlhbCBpbmRleGVz LCBnZW5lcmF0ZSBwYXRocyBmb3IgZWFjaCBvbmUuCisJICovCisJZm9yZWFjaChsYywgcHJl ZGljYXRlX2xpc3RzKQorCXsKKwkJSW5kZXhPcHRJbmZvCSAgICppbmRleDsKKwkJSW5kZXhD bGF1c2VTZXQJCWNsYXVzZXNldDsKKwkJTGlzdAkJCSAgICppbmRleHBhdGhzOworCQlSZXN0 cmljdEluZm8JICAgKnJpbmZvMSA9IE5VTEw7CisJCUV4cHIJCQkgICAqY2xhdXNlOworCQlB cnJheVR5cGUJCSAgICphcnJheXZhbCA9IE5VTEw7CisJCUFycmF5RXhwcgkJICAgKmFyciA9 IE5VTEw7CisJCUNvbnN0CQkJICAgKmFycmF5Y29uc3Q7CisJCVNjYWxhckFycmF5T3BFeHBy ICAqZGVzdDsKKworCQlwZCA9IChQcmVkaWNhdGVzRGF0YSAqKSBsZmlyc3QobGMpOworCQlp ZiAocGQtPmVsZW1zID09IE5JTCkKKwkJCS8qIFRoZSBpbmRleCBkb2Vzbid0IHBhcnRpY2lw YXRlIGluIHRoaXMgb3BlcmF0aW9uICovCisJCQljb250aW51ZTsKKworCQkvKiBNYWtlIHVw IG5ldyBhcnJheSAqLworCQlhcnJheWNvbnN0ID0gbHNlY29uZF9ub2RlKENvbnN0LCBzYW9w LT5hcmdzKTsKKwkJYXJyYXl2YWwgPSBEYXR1bUdldEFycmF5VHlwZVAoYXJyYXljb25zdC0+ Y29uc3R2YWx1ZSk7CisJCWFyciA9IG1ha2VOb2RlKEFycmF5RXhwcik7CisJCWFyci0+YXJy YXlfY29sbGlkID0gYXJyYXljb25zdC0+Y29uc3Rjb2xsaWQ7CisJCWFyci0+YXJyYXlfdHlw ZWlkID0gYXJyYXljb25zdC0+Y29uc3R0eXBlOworCQlhcnItPmVsZW1lbnRfdHlwZWlkID0g YXJyYXl2YWwtPmVsZW10eXBlOworCQlhcnItPmVsZW1lbnRzID0gcGQtPmVsZW1zOworCQlh cnItPmxvY2F0aW9uID0gLTE7CisJCWFyci0+bXVsdGlkaW1zID0gZmFsc2U7CisKKwkJLyog Q29tcG9zZSBuZXcgU0FPUCwgcGFydGlhbGx5IGNvdmVyaW5nIHRoZSBzb3VyY2Ugb25lICov CisJCWRlc3QgPSBtYWtlTm9kZShTY2FsYXJBcnJheU9wRXhwcik7CisJCW1lbWNweShkZXN0 LCBzYW9wLCBzaXplb2YoU2NhbGFyQXJyYXlPcEV4cHIpKTsKKwkJZGVzdC0+YXJncyA9IGxp c3RfbWFrZTIobGluaXRpYWwoc2FvcC0+YXJncyksIGFycik7CisJCWNsYXVzZSA9IChFeHBy ICopIGVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUocm9vdCwgKE5vZGUgKikgZGVzdCk7CisK KwkJLyoKKwkJICogQ3JlYXRlIG5ldyBSZXN0cmljdEluZm8uIEl0IG1heWJlIG1vcmUgaGVh dnkgdGhhbiBqdXN0IGNvcHkgbm9kZSwKKwkJICogYnV0IHJlbWVtYmVyIHNvbWUgaW50ZXJu YWxzOiB0aGUgc2VyaWFsIG51bWJlciwgc2VsZWN0aXZpdHkKKwkJICogY2FjaGUgZXRjLgor CQkgKi8KKwkJcmluZm8xID0gbWFrZV9yZXN0cmljdGluZm8ocm9vdCwgY2xhdXNlLAorCQkJ CQkJCQkgICByaW5mby0+aXNfcHVzaGVkX2Rvd24sCisJCQkJCQkJCSAgIHJpbmZvLT5oYXNf Y2xvbmUsCisJCQkJCQkJCSAgIHJpbmZvLT5pc19jbG9uZSwKKwkJCQkJCQkJICAgcmluZm8t PnBzZXVkb2NvbnN0YW50LAorCQkJCQkJCQkgICByaW5mby0+c2VjdXJpdHlfbGV2ZWwsCisJ CQkJCQkJCSAgIHJpbmZvLT5yZXF1aXJlZF9yZWxpZHMsCisJCQkJCQkJCSAgIHJpbmZvLT5p bmNvbXBhdGlibGVfcmVsaWRzLAorCQkJCQkJCQkgICByaW5mby0+b3V0ZXJfcmVsaWRzKTsK KworCQlpbmRleCA9IGxpc3RfbnRoKHJlbC0+aW5kZXhsaXN0LCBwZC0+aWQpOworCQlBc3Nl cnQocHJlZGljYXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHByZWQsIGxpc3RfbWFrZTEocmlu Zm8xKSwgdHJ1ZSkpOworCisJCS8qIEV4Y2x1ZGluZyBwYXJ0aWFsIGluZGV4ZXMgd2l0aCBw cmVkT0sgd2UgbWFrZSB0aGlzIHN0YXRlbWVudCBmYWxzZSAqLworCQlBc3NlcnQoIXByZWRp Y2F0ZV9pbXBsaWVkX2J5KGluZGV4LT5pbmRwcmVkLCBvdGhlcl9jbGF1c2VzLCBmYWxzZSkp OworCisJCS8qIFRpbWUgdG8gZ2VuZXJhdGUgaW5kZXggcGF0aHMgKi8KKworCQlNZW1TZXQo JmNsYXVzZXNldCwgMCwgc2l6ZW9mKGNsYXVzZXNldCkpOworCQltYXRjaF9jbGF1c2VzX3Rv X2luZGV4KHJvb3QsIGxpc3RfbWFrZTEocmluZm8xKSwgaW5kZXgsICZjbGF1c2VzZXQpOwor CQltYXRjaF9jbGF1c2VzX3RvX2luZGV4KHJvb3QsIG90aGVyX2NsYXVzZXMsIGluZGV4LCAm Y2xhdXNlc2V0KTsKKworCQkvKiBQcmVkaWNhdGUgaGFzIGZvdW5kIGFscmVhZHkuIFNvLCBp dCBpcyBvayBmb3IgdGhlIGVtcHR5IG1hdGNoICovCisKKwkJaW5kZXhwYXRocyA9IGJ1aWxk X2luZGV4X3BhdGhzKHJvb3QsIHJlbCwKKwkJCQkJCQkJCSAgIGluZGV4LCAmY2xhdXNlc2V0 LAorCQkJCQkJCQkJICAgdHJ1ZSwKKwkJCQkJCQkJCSAgIFNUX0JJVE1BUFNDQU4sCisJCQkJ CQkJCQkgICBOVUxMLAorCQkJCQkJCQkJICAgTlVMTCk7CisJCUFzc2VydChpbmRleHBhdGhz ICE9IE5JTCk7CisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBpbmRleHBhdGhzKTsKKwl9 CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEFuYWx5c2UgaW5jb21pbmcgU0FPUCBu b2RlIHRvIGNvdmVyIGl0IGJ5IHBhcnRpYWwgaW5kZXhlcy4KKyAqCisgKiBUaGUgcmV0dXJu aW5nIHBhdGhsaXN0IG11c3QgYmUgQU5EZWQgdG8gdGhlIGZpbmFsIEJpdG1hcFNjYW4gcGF0 aC4KKyAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIE5VTEwgd2hlbiBhbiBhcnJheSBlbGVtZW50 IGNhbm5vdCBiZSBmaXR0ZWQgd2l0aCBzb21lCisgKiBwYXJ0aWFsIGluZGV4LiBUaGUgUmF0 aW9uYWxlIGZvciBzdWNoIGFuIG9wZXJhdGlvbiBpcyB0aGF0IHdoZW4gc2NoZW1hCisgKiBj b250YWlucyBtYW55IHBhcnRpYWwgaW5kZXhlcywgdGhlIFNBT1AgY2xhdXNlIG1heSBiZSBl ZmZlY3RpdmVseSBmdWxmaWxsZWQKKyAqIGJ5IGFwcGVuZGluZyByZXN1bHRzIG9mIHNjYW5u aW5nIHNvbWUgbWluaW1hbCBzZXQgb2YgdGlueSBwYXJ0aWFsIGluZGV4ZXMuCisgKgorICog V29ya2luZyBqb2ludGx5IHdpdGggdGhlIFRyYW5zZm9ybU9yRXhwclRvQU5ZIHJvdXRpbmUs IGl0IHByb3ZpZGVzIGEgdXNlcgorICogd2l0aCBzb21lIHNvcnQgb2YgaW5kZXBlbmRlbmNl IG9mIHRoZSBxdWVyeSBwbGFuIGZyb20gdGhlIGFwcHJvYWNoIHRvIHdyaXRpbmcKKyAqIGFs dGVybmF0aXZlcyBmb3IgdGhlIHNhbWUgZW50aXR5IGluIHRoZSBXSEVSRSBzZWN0aW9uLgor ICovCitzdGF0aWMgTGlzdCAqCitnZW5lcmF0ZV9zYW9wX3BhdGhsaXN0KFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCSAgIFJlc3RyaWN0SW5mbyAqcmluZm8s IExpc3QgKmFsbF9jbGF1c2VzKQoreworCUxpc3QJICAgKnBhdGhsaXN0ID0gTklMOworCVBh dGgJICAgKmJpdG1hcHF1YWw7CisJTGlzdAkgICAqaW5kbGlzdDsKKwlMaXN0Q2VsbCAgICps YzsKKworCWlmICghZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uKQorCQlyZXR1cm4gTklMOwor CisJLyoKKwkgKiBXZSBtdXN0IGJlIGFibGUgdG8gbWF0Y2ggYXQgbGVhc3Qgb25lIGluZGV4 IHRvIGVhY2ggZWxlbWVudCBvZgorCSAqIHRoZSBhcnJheSwgZWxzZSB3ZSBjYW4ndCB1c2Ug aXQuCisJICovCisJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zvcl9TQU9QKHJvb3QsIHJlbCwg cmluZm8sIGFsbF9jbGF1c2VzKTsKKwlpZiAoaW5kbGlzdCA9PSBOSUwpCisJCXJldHVybiBO SUw7CisKKwkvKgorCSAqIE9LLCBwaWNrIHRoZSBtb3N0IHByb21pc2luZyBBTkQgY29tYmlu YXRpb24sIGFuZCBhZGQgaXQgdG8KKwkgKiBwYXRobGlzdC4KKwkgKi8KKwlmb3JlYWNoIChs YywgaW5kbGlzdCkKKwl7CisJCUxpc3QgKnBsaXN0ID0gbGZpcnN0X25vZGUoTGlzdCwgbGMp OworCisJCWJpdG1hcHF1YWwgPSBjaG9vc2VfYml0bWFwX2FuZChyb290LCByZWwsIHBsaXN0 KTsKKwkJcGF0aGxpc3QgPSBsYXBwZW5kKHBhdGhsaXN0LCBiaXRtYXBxdWFsKTsKKwl9CisK KwlyZXR1cm4gcGF0aGxpc3Q7Cit9CisKIC8qCiAgKiBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0 aHMKLSAqCQlMb29rIHRocm91Z2ggdGhlIGxpc3Qgb2YgY2xhdXNlcyB0byBmaW5kIE9SIGNs YXVzZXMsIGFuZCBnZW5lcmF0ZQotICoJCWEgQml0bWFwT3JQYXRoIGZvciBlYWNoIG9uZSB3 ZSBjYW4gaGFuZGxlIHRoYXQgd2F5LiAgUmV0dXJuIGEgbGlzdAotICoJCW9mIHRoZSBnZW5l cmF0ZWQgQml0bWFwT3JQYXRocy4KKyAqCQlMb29rIHRocm91Z2ggdGhlIGxpc3Qgb2YgY2xh dXNlcyB0byBmaW5kIE9SIGFuZCBTQU9QIGNsYXVzZXMsIGFuZAorICoJCUVhY2ggc2FvcCBj bGF1c2UgYXJlIHNwbGl0dGVkIHRvIGJlIGNvdmVyZWQgYnkgcGFydGlhbCBpbmRleGVzLgor ICoJCWdlbmVyYXRlIGEgQml0bWFwT3JQYXRoIGZvciBlYWNoIG9uZSB3ZSBjYW4gaGFuZGxl IHRoYXQgd2F5LgorICoJCVJldHVybiBhIGxpc3Qgb2YgdGhlIGdlbmVyYXRlZCBCaXRtYXBP clBhdGhzLgogICoKICAqIG90aGVyX2NsYXVzZXMgaXMgYSBsaXN0IG9mIGFkZGl0aW9uYWwg Y2xhdXNlcyB0aGF0IGNhbiBiZSBhc3N1bWVkIHRydWUKICAqIGZvciB0aGUgcHVycG9zZSBv ZiBnZW5lcmF0aW5nIGluZGV4cXVhbHMsIGJ1dCBhcmUgbm90IHRvIGJlIHNlYXJjaGVkIGZv cgpAQCAtMTI0Nyw2OCArMTQyNSw5OSBAQCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlmb3JlYWNoKGxjLCBjbGF1c2Vz KQogCXsKIAkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IGxmaXJzdF9ub2RlKFJlc3RyaWN0SW5m bywgbGMpOwotCQlMaXN0CSAgICpwYXRobGlzdDsKKwkJTGlzdAkgICAqcGF0aGxpc3QgPSBO SUw7CiAJCVBhdGgJICAgKmJpdG1hcHF1YWw7CiAJCUxpc3RDZWxsICAgKmo7CiAKLQkJLyog SWdub3JlIFJlc3RyaWN0SW5mb3MgdGhhdCBhcmVuJ3QgT1JzICovCi0JCWlmICghcmVzdHJp Y3Rpb25faXNfb3JfY2xhdXNlKHJpbmZvKSkKKwkJaWYgKHJlc3RyaWN0aW9uX2lzX3Nhb3Bf Y2xhdXNlKHJpbmZvKSkKKwkJeworCQkJcGF0aGxpc3QgPSBnZW5lcmF0ZV9zYW9wX3BhdGhs aXN0KHJvb3QsIHJlbCwgcmluZm8sCisJCQkJCQkJCQkJCSAgYWxsX2NsYXVzZXMpOworCQl9 CisJCWVsc2UgaWYgKCFyZXN0cmljdGlvbl9pc19vcl9jbGF1c2UocmluZm8pKQorCQkJLyog SWdub3JlIFJlc3RyaWN0SW5mb3MgdGhhdCBhcmVuJ3QgT1JzICovCiAJCQljb250aW51ZTsK LQotCQkvKgotCQkgKiBXZSBtdXN0IGJlIGFibGUgdG8gbWF0Y2ggYXQgbGVhc3Qgb25lIGlu ZGV4IHRvIGVhY2ggb2YgdGhlIGFybXMgb2YKLQkJICogdGhlIE9SLCBlbHNlIHdlIGNhbid0 IHVzZSBpdC4KLQkJICovCi0JCXBhdGhsaXN0ID0gTklMOwotCQlmb3JlYWNoKGosICgoQm9v bEV4cHIgKikgcmluZm8tPm9yY2xhdXNlKS0+YXJncykKKwkJZWxzZQogCQl7Ci0JCQlOb2Rl CSAgICpvcmFyZyA9IChOb2RlICopIGxmaXJzdChqKTsKLQkJCUxpc3QJICAgKmluZGxpc3Q7 Ci0KLQkJCS8qIE9SIGFyZ3VtZW50cyBzaG91bGQgYmUgQU5EcyBvciBzdWItUmVzdHJpY3RJ bmZvcyAqLwotCQkJaWYgKGlzX2FuZGNsYXVzZShvcmFyZykpCisJCQkvKgorCQkJICogV2Ug bXVzdCBiZSBhYmxlIHRvIG1hdGNoIGF0IGxlYXN0IG9uZSBpbmRleCB0byBlYWNoIG9mIHRo ZSBhcm1zIG9mCisJCQkgKiB0aGUgT1IsIGVsc2Ugd2UgY2FuJ3QgdXNlIGl0LgorCQkJICov CisJCQlmb3JlYWNoKGosICgoQm9vbEV4cHIgKikgcmluZm8tPm9yY2xhdXNlKS0+YXJncykK IAkJCXsKLQkJCQlMaXN0CSAgICphbmRhcmdzID0gKChCb29sRXhwciAqKSBvcmFyZyktPmFy Z3M7CisJCQkJTm9kZQkgICAqb3JhcmcgPSAoTm9kZSAqKSBsZmlyc3Qoaik7CisJCQkJTGlz dAkgICAqaW5kbGlzdDsKIAotCQkJCWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9v dCwgcmVsLAotCQkJCQkJCQkJCQkgYW5kYXJncywKLQkJCQkJCQkJCQkJIGFsbF9jbGF1c2Vz KTsKKwkJCQkvKiBPUiBhcmd1bWVudHMgc2hvdWxkIGJlIEFORHMgb3Igc3ViLVJlc3RyaWN0 SW5mb3MgKi8KKwkJCQlpZiAoaXNfYW5kY2xhdXNlKG9yYXJnKSkKKwkJCQl7CisJCQkJCUxp c3QJICAgKmFuZGFyZ3MgPSAoKEJvb2xFeHByICopIG9yYXJnKS0+YXJnczsKIAotCQkJCS8q IFJlY3Vyc2UgaW4gY2FzZSB0aGVyZSBhcmUgc3ViLU9ScyAqLwotCQkJCWluZGxpc3QgPSBs aXN0X2NvbmNhdChpbmRsaXN0LAotCQkJCQkJCQkJICBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0 aHMocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCQkJICAgYW5kYXJncywKLQkJCQkJCQkJCQkJ CQkJCSAgIGFsbF9jbGF1c2VzKSk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJUmVzdHJp Y3RJbmZvICpyaSA9IGNhc3ROb2RlKFJlc3RyaWN0SW5mbywgb3JhcmcpOwotCQkJCUxpc3QJ ICAgKm9yYXJnczsKKwkJCQkJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zvcl9PUihyb290LCBy ZWwsCisJCQkJCQkJCQkJCQkgYW5kYXJncywKKwkJCQkJCQkJCQkJCSBhbGxfY2xhdXNlcyk7 CiAKLQkJCQlBc3NlcnQoIXJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaSkpOwotCQkJCW9y YXJncyA9IGxpc3RfbWFrZTEocmkpOworCQkJCQkvKiBSZWN1cnNlIGluIGNhc2UgdGhlcmUg YXJlIHN1Yi1PUnMgKi8KKwkJCQkJaW5kbGlzdCA9IGxpc3RfY29uY2F0KGluZGxpc3QsCisJ CQkJCQkJCQkJICBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMocm9vdCwgcmVsLAorCQkJCQkJ CQkJCQkJCQkJCSAgIGFuZGFyZ3MsCisJCQkJCQkJCQkJCQkJCQkJICAgYWxsX2NsYXVzZXMp KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJUmVzdHJpY3RJbmZvICpyaSA9IGNh c3ROb2RlKFJlc3RyaWN0SW5mbywgb3JhcmcpOworCQkJCQlMaXN0CSAgICpvcmFyZ3M7CiAK LQkJCQlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09SKHJvb3QsIHJlbCwKLQkJCQkJCQkJ CQkJIG9yYXJncywKLQkJCQkJCQkJCQkJIGFsbF9jbGF1c2VzKTsKLQkJCX0KKwkJCQkJQXNz ZXJ0KCFyZXN0cmljdGlvbl9pc19vcl9jbGF1c2UocmkpKTsKIAotCQkJLyoKLQkJCSAqIElm IG5vdGhpbmcgbWF0Y2hlZCB0aGlzIGFybSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0 aGlzIE9SCi0JCQkgKiBjbGF1c2UuCi0JCQkgKi8KLQkJCWlmIChpbmRsaXN0ID09IE5JTCkK LQkJCXsKLQkJCQlwYXRobGlzdCA9IE5JTDsKLQkJCQlicmVhazsKLQkJCX0KKwkJCQkJb3Jh cmdzID0gbGlzdF9tYWtlMShyaSk7CiAKLQkJCS8qCi0JCQkgKiBPSywgcGljayB0aGUgbW9z dCBwcm9taXNpbmcgQU5EIGNvbWJpbmF0aW9uLCBhbmQgYWRkIGl0IHRvCi0JCQkgKiBwYXRo bGlzdC4KLQkJCSAqLwotCQkJYml0bWFwcXVhbCA9IGNob29zZV9iaXRtYXBfYW5kKHJvb3Qs IHJlbCwgaW5kbGlzdCk7Ci0JCQlwYXRobGlzdCA9IGxhcHBlbmQocGF0aGxpc3QsIGJpdG1h cHF1YWwpOworCQkJCQlpZiAocmVzdHJpY3Rpb25faXNfc2FvcF9jbGF1c2UocmkpKQorCQkJ CQl7CisJCQkJCQlMaXN0ICpwYXRoczsKKworCQkJCQkJcGF0aHMgPSBnZW5lcmF0ZV9zYW9w X3BhdGhsaXN0KHJvb3QsIHJlbCwgcmksCisJCQkJCQkJCQkJCQkJCSBhbGxfY2xhdXNlcyk7 CisKKwkJCQkJCWlmIChwYXRocyAhPSBOSUwpCisJCQkJCQl7CisJCQkJCQkJLyoKKwkJCQkJ CQkgKiBBZGQgcGF0aHMgdG8gcGF0aGxpc3QgYW5kIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhl CisJCQkJCQkJICogbmV4dCBlbGVtZW50IG9mIHRoZSBPUiBjbGF1c2UuCisJCQkJCQkJICov CisJCQkJCQkJcGF0aGxpc3QgPSBsaXN0X2NvbmNhdChwYXRobGlzdCwgcGF0aHMpOworCQkJ CQkJCWNvbnRpbnVlOworCQkJCQkJfQorCisJCQkJCQkvKgorCQkJCQkJICogUGFzcyBkb3du IG91dCBvZiB0aGlzIGlmIGNvbnN0cnVjdGlvbjoKKwkJCQkJCSAqIElmIHNhb3AgaXNuJ3Qg Y292ZXJlZCBieSBwYXJ0aWFsIGluZGV4ZXMsIHRyeSB0bworCQkJCQkJICogYnVpbGQgc2Nh biBwYXRoIGZvciB0aGUgc2FvcCBhcyBhIHdob2xlLgorCQkJCQkJICovCisJCQkJCX0KKwor CQkJCQlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09SKHJvb3QsIHJlbCwKKwkJCQkJCQkJ CQkJCSBvcmFyZ3MsCisJCQkJCQkJCQkJCQkgYWxsX2NsYXVzZXMpOworCQkJCX0KKworCQkJ CS8qCisJCQkJICogSWYgbm90aGluZyBtYXRjaGVkIHRoaXMgYXJtLCB3ZSBjYW4ndCBkbyBh bnl0aGluZyB3aXRoIHRoaXMgT1IKKwkJCQkgKiBjbGF1c2UuCisJCQkJICovCisJCQkJaWYg KGluZGxpc3QgPT0gTklMKQorCQkJCXsKKwkJCQkJcGF0aGxpc3QgPSBOSUw7CisJCQkJCWJy ZWFrOworCQkJCX0KKworCQkJCS8qCisJCQkJICogT0ssIHBpY2sgdGhlIG1vc3QgcHJvbWlz aW5nIEFORCBjb21iaW5hdGlvbiwgYW5kIGFkZCBpdCB0bworCQkJCSAqIHBhdGhsaXN0Lgor CQkJCSAqLworCQkJCWJpdG1hcHF1YWwgPSBjaG9vc2VfYml0bWFwX2FuZChyb290LCByZWws IGluZGxpc3QpOworCQkJCXBhdGhsaXN0ID0gbGFwcGVuZChwYXRobGlzdCwgYml0bWFwcXVh bCk7CisJCQl9CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcHJlZHRlc3QuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0 ZXN0LmMKaW5kZXggYjc2ODk2ZGZiZi4uYTNhNmQwMDI0YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9wcmVkdGVzdC5jCkBAIC0xMDMsNiArMTAzLDUyIEBAIHN0YXRpYyBPaWQJ Z2V0X2J0cmVlX3Rlc3Rfb3AoT2lkIHByZWRfb3AsIE9pZCBjbGF1c2Vfb3AsIGJvb2wgcmVm dXRlX2l0KTsKIHN0YXRpYyB2b2lkIEludmFsaWRhdGVPcHJQcm9vZkNhY2hlQ2FsbEJhY2so RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CiAKIAorLyoKKyAq IENvdWxkIHRoaXMgQU5ZICgpIGV4cHJlc3Npb24gY2FuIGJlIHNwbGl0IGludG8gYSBzZXQg b2YgQU5ZcyBvdmVyIHBhcnRpYWwKKyAqIGluZGV4ZXM/IElmIHllcywgcmV0dXJuIHRoZXNl IHNhb3BzIGluIHRoZSBQcmVkaWNhdGVzRGF0YSBzdHJ1Y3R1cmUuCisgKi8KK2Jvb2wKK3Nh b3BfY292ZXJlZF9ieV9wcmVkaWNhdGVzKFNjYWxhckFycmF5T3BFeHByICpzYW9wLCBMaXN0 ICpwcmVkaWNhdGVfbGlzdHMpCit7CisJTGlzdENlbGwJCSAgICpsYzsKKwlQcmVkSXRlcklu Zm9EYXRhCWNsYXVzZV9pbmZvOworCWJvb2wJCQkJcmVzdWx0ID0gZmFsc2U7CisKKwlpZiAo cHJlZGljYXRlX2NsYXNzaWZ5KChOb2RlICopIHNhb3AsICZjbGF1c2VfaW5mbykgIT0gQ0xB U1NfT1IpCisJCXJldHVybiBmYWxzZTsKKworCWl0ZXJhdGVfYmVnaW4ocGl0ZW0sIChOb2Rl ICopIHNhb3AsIGNsYXVzZV9pbmZvKQorCXsKKwkJcmVzdWx0ID0gZmFsc2U7CisKKwkJZm9y ZWFjaChsYywgcHJlZGljYXRlX2xpc3RzKQorCQl7CisJCQlQcmVkaWNhdGVzRGF0YSAqcGQg PSAoUHJlZGljYXRlc0RhdGEgKikgbGZpcnN0KGxjKTsKKworCQkJaWYgKCFwcmVkaWNhdGVf aW1wbGllZF9ieV9yZWN1cnNlKHBpdGVtLCBwZC0+cHJlZGljYXRlLCBmYWxzZSkpCisJCQkJ Y29udGludWU7CisKKwkJCS8qIFByZWRpY2F0ZSBpcyBmb3VuZC4gQWRkIHRoZSBlbGVtIHRv IHRoZSBzYW9wIGNsYXVzZSAqLworCQkJQXNzZXJ0KElzQShwaXRlbSwgT3BFeHByKSk7CisK KwkJCS8qIEV4dHJhY3QgY29uc3RhbnQgZnJvbSB0aGUgZXhwcmVzc2lvbiAqLworCQkJcGQt PmVsZW1zID0gbGFwcGVuZChwZC0+ZWxlbXMsCisJCQkJCWNvcHlPYmplY3QobHNlY29uZF9u b2RlKENvbnN0LCAoKE9wRXhwciAqKSBwaXRlbSktPmFyZ3MpKSk7CisJCQlyZXN1bHQgPSB0 cnVlOworCQkJYnJlYWs7CisJCX0KKworCQlpZiAoIXJlc3VsdCkKKwkJCS8qCisJCQkgKiBU aGUgZWxlbWVudCBkb2Vzbid0IGZpdCBhbnkgaW5kZXguIEludGVycnVwdCB0aGUgcHJvY2Vz cyBpbW1lZGlhdGVseQorCQkJICovCisJCQlicmVhazsKKwl9CisJaXRlcmF0ZV9lbmQoY2xh dXNlX2luZm8pOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIHByZWRpY2F0ZV9p bXBsaWVkX2J5CiAgKgkgIFJlY3Vyc2l2ZWx5IGNoZWNrcyB3aGV0aGVyIHRoZSBjbGF1c2Vz IGluIGNsYXVzZV9saXN0IGltcGx5IHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9yZXN0cmljdGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3Jlc3RyaWN0aW5mby5jCmluZGV4IDBiNDA2ZTkzMzQuLjFkYWQxZGM2NTQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCkBAIC00MjEs NiArNDIxLDE5IEBAIHJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShSZXN0cmljdEluZm8gKnJl c3RyaWN0aW5mbykKIAkJcmV0dXJuIGZhbHNlOwogfQogCitib29sCityZXN0cmljdGlvbl9p c19zYW9wX2NsYXVzZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbykKK3sKKwlpZiAocmVz dHJpY3RpbmZvLT5jbGF1c2UgJiYgSXNBKHJlc3RyaWN0aW5mby0+Y2xhdXNlLCBTY2FsYXJB cnJheU9wRXhwcikpCisJeworCQlTY2FsYXJBcnJheU9wRXhwciAqc2FvcCA9IChTY2FsYXJB cnJheU9wRXhwciAqKSByZXN0cmljdGluZm8tPmNsYXVzZTsKKworCQlpZiAoc2FvcC0+dXNl T3IpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICog cmVzdHJpY3Rpb25faXNfc2VjdXJlbHlfcHJvbW90YWJsZQogICoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCBiL3NyYy9pbmNsdWRlL29wdGltaXpl ci9vcHRpbWl6ZXIuaAppbmRleCAwZWU3MTU0ZTA4Li40MDI5Y2YwN2JlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL29wdGltaXplci5oCkBAIC0xNjAsNiArMTYwLDIwIEBAIGV4dGVybiBMaXN0 ICpleHBhbmRfZnVuY3Rpb25fYXJndW1lbnRzKExpc3QgKmFyZ3MsIGJvb2wgaW5jbHVkZV9v dXRfYXJndW1lbnRzLAogCiAvKiBpbiB1dGlsL3ByZWR0ZXN0LmM6ICovCiAKKy8qCisgKiBD b250YWlucyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZXh0cmFjdCBmcm9tIHNhb3AgYSBzZXQg b2YgZWxlbWVudHMgd2hpY2ggY2FuCisgKiBiZSBjb3ZlcmVkIGJ5IHRoZSBwYXJ0aWFsIGlu ZGV4OgorICogaWQgLSBjYWxsZXIncyBpZGVudGlmaWNhdGlvbiBvZiB0aGUgaW5kZXguCisg KiBwcmVkaWNhdGUgLSBwcmVkaWNhdGUgZXhwcmVzc2lvbiBvZiB0aGUgaW5kZXgKKyAqIGVs ZW1zIC0gcmV0dXJuaW5nIGxpc3Qgb2YgYXJyYXkgZWxlbWVudHMgd2hpY2ggY29ycmVzcG9u ZHMgdG8gdGhpcyBwcmVkaWNhdGUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgUHJlZGljYXRlc0Rh dGEKK3sKKwlpbnQJCWlkOworCU5vZGUgICAqcHJlZGljYXRlOworCUxpc3QgICAqZWxlbXM7 Cit9IFByZWRpY2F0ZXNEYXRhOworCiAvKgogICogUHJvb2YgYXR0ZW1wdHMgaW52b2x2aW5n IGxhcmdlIGFycmF5cyBpbiBTY2FsYXJBcnJheU9wRXhwciBub2RlcyBhcmUKICAqIGxpa2Vs eSB0byByZXF1aXJlIE8oTl4yKSB0aW1lLCBhbmQgbW9yZSBvZnRlbiB0aGFuIG5vdCBmYWls IGFueXdheS4KQEAgLTE2OSw2ICsxODMsOCBAQCBleHRlcm4gTGlzdCAqZXhwYW5kX2Z1bmN0 aW9uX2FyZ3VtZW50cyhMaXN0ICphcmdzLCBib29sIGluY2x1ZGVfb3V0X2FyZ3VtZW50cywK ICAqLwogI2RlZmluZSBNQVhfU0FPUF9BUlJBWV9TSVpFCQkxMDAKIAorZXh0ZXJuIGJvb2wg c2FvcF9jb3ZlcmVkX2J5X3ByZWRpY2F0ZXMoU2NhbGFyQXJyYXlPcEV4cHIgKnNhb3AsCisJ CQkJCQkJCQkgIExpc3QgKnByZWRpY2F0ZV9saXN0cyk7CiBleHRlcm4gYm9vbCBwcmVkaWNh dGVfaW1wbGllZF9ieShMaXN0ICpwcmVkaWNhdGVfbGlzdCwgTGlzdCAqY2xhdXNlX2xpc3Qs CiAJCQkJCQkJCSBib29sIHdlYWspOwogZXh0ZXJuIGJvb2wgcHJlZGljYXRlX3JlZnV0ZWRf YnkoTGlzdCAqcHJlZGljYXRlX2xpc3QsIExpc3QgKmNsYXVzZV9saXN0LApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oCmluZGV4IDFiNDJjODMyYzUuLjJjZDVmYmY5NDMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9yZXN0cmljdGluZm8uaAorKysg Yi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgKQEAgLTM0LDYgKzM0LDcg QEAgZXh0ZXJuIFJlc3RyaWN0SW5mbyAqbWFrZV9yZXN0cmljdGluZm8oUGxhbm5lckluZm8g KnJvb3QsCiAJCQkJCQkJCQkgICBSZWxpZHMgb3V0ZXJfcmVsaWRzKTsKIGV4dGVybiBSZXN0 cmljdEluZm8gKmNvbW11dGVfcmVzdHJpY3RpbmZvKFJlc3RyaWN0SW5mbyAqcmluZm8sIE9p ZCBjb21tX29wKTsKIGV4dGVybiBib29sIHJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShSZXN0 cmljdEluZm8gKnJlc3RyaWN0aW5mbyk7CitleHRlcm4gYm9vbCByZXN0cmljdGlvbl9pc19z YW9wX2NsYXVzZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbyk7CiBleHRlcm4gYm9vbCBy ZXN0cmljdGlvbl9pc19zZWN1cmVseV9wcm9tb3RhYmxlKFJlc3RyaWN0SW5mbyAqcmVzdHJp Y3RpbmZvLAogCQkJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyZWwpOwogZXh0ZXJuIExpc3Qg KmdldF9hY3R1YWxfY2xhdXNlcyhMaXN0ICpyZXN0cmljdGluZm9fbGlzdCk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQKaW5kZXggMzNhNmRjZWIwZS4uZjRmNTQ5M2M0 MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dApAQCAtOTA3LDYgKzkw NywyOTkgQEAgc2VsZWN0IHVuaXF1ZTEsIHVuaXF1ZTIgZnJvbSBvbmVrMgogICAgICAgIDAg fCAgICAgOTk4CiAoMiByb3dzKQogCitTRVQgZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworU0VU IGVuYWJsZV9pbmRleHNjYW4gVE8gb2ZmOyAtLSBPbmx5IEJpdG1hcFNjYW4gaXMgYSBzdWJq ZWN0IG1hdHRlciBoZXJlCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gJ29mZic7 CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVS RSBzdHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdKJzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBI ZWFwIFNjYW4gb24gb25lazIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA8 ICdCJzo6bmFtZSkgT1IgKHN0cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgICAgICAgIEZpbHRl cjogKChzdHJpbmd1MSA9ICdBJzo6bmFtZSkgT1IgKHN0cmluZ3UxID0gJ0onOjpuYW1lKSkK KyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChzdHJpbmd1MSA9ICdKJzo6bmFtZSkKKyg4IHJvd3MpCisKKy0tIFdpdGhvdXQg dGhlIHRyYW5zZm9ybWF0aW9uIG9ubHkgc2Vxc2NhbiBwb3NzaWJsZSBoZXJlCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hF UkUgdW5pcXVlMiA8IDEgQU5EIHN0cmluZ3UxIElOICgnQScsJ0onKSBBTkQgc3RyaW5ndTEg PCAnWic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG9uZWsy CisgICBGaWx0ZXI6ICgodW5pcXVlMiA8IDEpIEFORCAoc3RyaW5ndTEgPSBBTlkgKCd7QSxK fSc6Om5hbWVbXSkpIEFORCAoc3RyaW5ndTEgPCAnWic6Om5hbWUpKQorKDIgcm93cykKKwor LS0gVXNlIHBhcnRpYWwgaW5kZXhlcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gb25lazIKK1dIRVJFIHN0cmluZ3UxIElOICgnQicsJ0onKSBBTkQgKHN0 cmluZ3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIG9uZWsyCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPCAnQic6Om5h bWUpIE9SICh1bmlxdWUxID0gMSkpCisgICAgICAgICBGaWx0ZXI6ICgoc3RyaW5ndTEgPSBB TlkgKCd7QixKfSc6Om5hbWVbXSkpIEFORCAoKHN0cmluZ3UxID0gJ0EnOjpuYW1lKSBPUiAo dW5pcXVlMSA9IDEpKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCisoOCByb3dzKQorCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hF UkUgdW5pcXVlMSA8IDEgT1IgKHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENv bmQ6ICgodW5pcXVlMSA8IDEpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKHN0cmlu Z3UxID0gJ0onOjpuYW1lKSkKKyAgIEZpbHRlcjogKCh1bmlxdWUxIDwgMSkgT1IgKHN0cmlu Z3UxID0gJ0EnOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgLT4gIEJp dG1hcE9yCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0 bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPCAxKQorICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChzdHJpbmd1MSA9ICdKJzo6bmFtZSkKKyg5IHJvd3MpCisKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVS RSB1bmlxdWUxID0gMSBPUiB1bmlxdWUyID0gUEkoKTo6aW50ZWdlcjsKKyAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG9uZWsyCisgICBGaWx0 ZXI6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gMykpCisoMiByb3dzKQorCitSRVNF VCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CistLSBPUiA8LT4gQU5ZIHRyYW5zZm9ybWF0 aW9uIG11c3QgZmluZCBhIHBhdGggd2l0aCBwYXJ0aWFsIGluZGV4ZXMgc2NhbgorLS0gcmVn YXJkbGVzcyB0aGUgY2xhdXNlIHJlcHJlc2VudGF0aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgPSAnQScgT1Ig c3RyaW5ndTEgPSAnSic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBI ZWFwIFNjYW4gb24gb25lazIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9 IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpCisgICAg ICAgICBGaWx0ZXI6IChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkKKyAgICAg ICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisoOCByb3dzKQorCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1 MSBJTiAoJ0EnLCdKJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBI ZWFwIFNjYW4gb24gb25lazIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9 IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpCisgICAg ICAgICBGaWx0ZXI6IChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkKKyAgICAg ICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisoOCByb3dzKQorCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1 MSA9IEFOWSAoJ3tBLEp9Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gb25lazIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1 MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpCisg ICAgICAgICBGaWx0ZXI6IChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkKKyAg ICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisoOCByb3dzKQorCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJp bmd1MSBJTiAoJ0EnKSBPUiBzdHJpbmd1MSBJTiAoJ0onKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVn YXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVj ayBDb25kOiAoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3Ux IDwgJ0InOjpuYW1lKSkKKyAgICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0Es Sn0nOjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwK Kyg4IHJvd3MpCisKKy0tIERvbid0IHNjYW4gcGFydGlhbCBpbmRleGVzIGJlY2F1c2Ugb2Yg ZXh0cmEgdmFsdWUuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJP TSBvbmVrMiBXSEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCAnSicsICdDJyk7CisgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIFNlcSBTY2FuIG9uIG9uZWsyCisgICAgICAgICBGaWx0ZXI6IChzdHJp bmd1MSA9IEFOWSAoJ3tBLEosQ30nOjpuYW1lW10pKQorKDMgcm93cykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEg SU4gKCdBJywgJ0EnKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0EnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFw IEhlYXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoc3RyaW5ndTEgPCAnQic6 Om5hbWUpCisgICBGaWx0ZXI6ICgoc3RyaW5ndTEgPSBBTlkgKCd7QSxBfSc6Om5hbWVbXSkp IEFORCAoc3RyaW5ndTEgPSAnQSc6Om5hbWUpKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIG9uZWsyX3UyX3BydGwKKyg0IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUyIDwgMSBB TkQgc3RyaW5ndTEgSU4gKCdBJywnSicpIEFORCBzdHJpbmd1MSA8ICdaJzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9u IG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICgoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFt ZVtdKSkgQU5EIChzdHJpbmd1MSA8ICdaJzo6bmFtZSkpIE9SICgodW5pcXVlMiA8IDEpIEFO RCAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKSkKKyAgIEZpbHRlcjogKCh1bmlxdWUyIDwgMSkg QU5EIChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkpCisgICAtPiAgQml0bWFw T3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwK KyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpu YW1lW10pKSBBTkQgKHN0cmluZ3UxIDwgJ1onOjpuYW1lKSkKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodW5pcXVlMiA8IDEpCisoOCByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IDEg T1IgdW5pcXVlMSA9IFBJKCk6OmludGVnZXI7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisg ICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUxID0gMykpCisgICAt PiAgQml0bWFwT3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91 MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCisgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAzKQorKDcgcm93cykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJF IHVuaXF1ZTEgSU4gKDEsIFBJKCk6OmludGVnZXIpOyAtLSBUT0RPOiB3aHkgaXQgaXMgZGlm ZmVycyBmcm9tIHByZXZpb3VzIGV4YW1wbGU/CisgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAg U2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAodW5pcXVlMSA9IEFOWSAoJ3sxLDN9 Jzo6aW50ZWdlcltdKSkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9w cnRsCisgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IEFOWSAoJ3sxLDN9Jzo6aW50 ZWdlcltdKSkKKyg0IHJvd3MpCisKKy0tIERvbid0IGFwcGx5IHRoZSBvcHRpbWl6YXRpb24g dG8gY2xhdXNlcywgY29udGFpbmluZyB2b2xhdGlsZSBmdW5jdGlvbnMKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVu aXF1ZTEgPSAocmFuZG9tKCkqMik6OmludGVnZXIgT1IgdW5pcXVlMSA9IChyYW5kb20oKSoz KTo6aW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjogKCh1bmlxdWUxID0g KChyYW5kb20oKSAqICcyJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyKSBPUiAodW5p cXVlMSA9ICgocmFuZG9tKCkgKiAnMyc6OmRvdWJsZSBwcmVjaXNpb24pKTo6aW50ZWdlcikp CisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMixzdHJp bmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIElOICgocmFuZG9tKCkqMik6OmludGVn ZXIsIChyYW5kb20oKSozKTo6aW50ZWdlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG9uZWsyCisgICBGaWx0ZXI6ICh1 bmlxdWUxID0gQU5ZIChBUlJBWVsoKHJhbmRvbSgpICogJzInOjpkb3VibGUgcHJlY2lzaW9u KSk6OmludGVnZXIsICgocmFuZG9tKCkgKiAnMyc6OmRvdWJsZSBwcmVjaXNpb24pKTo6aW50 ZWdlcl0pKQorKDIgcm93cykKKworLS0gQ29tYmluZSBkaWZmZXJlbnQgc2FvcHMuIFNvbWUg b2YgdGhlbSBkb2VzbnQnIGZpdCBhIHNldCBvZiBwYXJ0aWFsIGluZGV4ZXMsCistLSBidXQg b3RoZXIgZml0cy4KKy0tIFVuZm9ydHVuYXRlbHksIHdlIGRvbid0IGNvbWJpbmUgc2FvcCBh bmQgT1IgY2xhdXNlcyBzbyBmYXIuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5p cXVlMixzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRQorICB1bmlxdWUxIElOICgxLDIsMjEp IEFORAorICAoc3RyaW5ndTEgSU4gKCdBJywnSicpIE9SIHVuaXF1ZTEgSU4gKDMsNCkgT1Ig c3RyaW5ndTEgPSAnSicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAg IFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIE9SIChz dHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKCh1bmlxdWUxID0gQU5ZICgnezMsNH0nOjppbnRl Z2VyW10pKSBBTkQgKHVuaXF1ZTEgPSBBTlkgKCd7MSwyLDIxfSc6OmludGVnZXJbXSkpKSBP UiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSBBTlkg KCd7MSwyLDIxfSc6OmludGVnZXJbXSkpIEFORCAoKHN0cmluZ3UxID0gQU5ZICgne0EsSn0n OjpuYW1lW10pKSBPUiAodW5pcXVlMSA9IEFOWSAoJ3szLDR9Jzo6aW50ZWdlcltdKSkgT1Ig KHN0cmluZ3UxID0gJ0onOjpuYW1lKSkpCisgICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpCisgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICgodW5pcXVlMSA9IEFOWSAoJ3szLDR9Jzo6aW50ZWdlcltdKSkgQU5EICh1 bmlxdWUxID0gQU5ZICgnezEsMiwyMX0nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChzdHJpbmd1MSA9ICdKJzo6bmFtZSkKKygxMSByb3dzKQorCistLSBDaGVj ayByZWN1cnNpdmUgY29tYmluYXRpb24gb2YgT1IgYW5kIFNBT1AgZXhwcmVzc2lvbnMKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsy CitXSEVSRSB1bmlxdWUxIDwgMSBPUiAoc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAn SicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2Nh biBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPCAxKSBPUiAoc3RyaW5n dTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKQor ICAgRmlsdGVyOiAoKHVuaXF1ZTEgPCAxKSBPUiAoc3RyaW5ndTEgPSBBTlkgKCd7QSxKfSc6 Om5hbWVbXSkpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPCAxKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0 dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gQU5ZICgn e0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVr Ml91Ml9wcnRsCisoOSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5p cXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgKHVuaXF1ZTEgPCAxIE9SIHN0cmlu Z3UxIElOICgnQScsJ0onKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBC aXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA8 IDEpIE9SIChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIE9SIChzdHJpbmd1MSA8 ICdCJzo6bmFtZSkpCisgICBGaWx0ZXI6ICgodW5pcXVlMSA8IDEpIE9SIChzdHJpbmd1MSA9 IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkpCisgICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAodW5pcXVlMSA8IDEpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3Ry aW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg5IHJvd3MpCisKKy0tIEFsdGhvdWdoIFNBT1Ag ZG9lc24ndCBmaXQgcGFydGlhbCBpbmRleGVzIGZ1bGx5LCB3ZSBjYW4gdXNlIGFkZGVkIE9S IGNsYXVzZQorLS0gdG8gc2NhbiBhbm90aGVyIGNvdXBsZSBvZiBwYXJ0aWFsIGluZGV4ZXMu CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hF UkUgc3RyaW5ndTEgSU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVl MSA9IDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgICAgICAgIFJl Y2hlY2sgQ29uZDogKChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKHVuaXF1ZTEgPSAxKSkK KyAgICAgICAgIEZpbHRlcjogKChzdHJpbmd1MSA9IEFOWSAoJ3tCLEp9Jzo6bmFtZVtdKSkg QU5EICgoc3RyaW5ndTEgPSAnQSc6Om5hbWUpIE9SICh1bmlxdWUxID0gMSkpKQorICAgICAg ICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfdTJfcHJ0bAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUxID0gMSkKKyg4IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CistLUNo ZWNrIHRoZSBjYXNlIHdoZW4gd2UgY29uc3RydWN0IEFOWSBsaXN0IHdpdGggdW5pcXVlIGVs ZW1lbnRzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVr MgorV0hFUkUgdW5pcXVlMSA9IDEgT1IgdW5pcXVlMSA9IDE7CisgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgSW5kZXggT25seSBTY2FuIHVzaW5nIG9uZWsyX3UxX3BydGwgb24gb25lazIKKyAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKKygzIHJvd3MpCisKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOwogLS0KIC0tIFRlc3Qgc29tZSBjb3JuZXIgY2FzZXMgdGhhdCBoYXZlIGJl ZW4ga25vd24gdG8gY29uZnVzZSB0aGUgcGxhbm5lcgogLS0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxl Y3Quc3FsCmluZGV4IDAxOWYxZTc2NzMuLmI4Y2VlNDE2NTggMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c2VsZWN0LnNxbApAQCAtMjM0LDYgKzIzNCw5MyBAQCBzZWxlY3QgdW5pcXVlMSwgdW5pcXVl MiBmcm9tIG9uZWsyCiBzZWxlY3QgdW5pcXVlMSwgdW5pcXVlMiBmcm9tIG9uZWsyCiAgIHdo ZXJlICh1bmlxdWUyID0gMTEgYW5kIHN0cmluZ3UxIDwgJ0InKSBvciB1bmlxdWUxID0gMDsK IAorU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKK1NFVCBlbmFibGVfaW5kZXhzY2FuIFRP IG9mZjsgLS0gT25seSBCaXRtYXBTY2FuIGlzIGEgc3ViamVjdCBtYXR0ZXIgaGVyZQorU0VU IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9ICdvZmYnOworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgPSAnQScgT1Ig c3RyaW5ndTEgPSAnSic7CistLSBXaXRob3V0IHRoZSB0cmFuc2Zvcm1hdGlvbiBvbmx5IHNl cXNjYW4gcG9zc2libGUgaGVyZQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1 ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTIgPCAxIEFORCBzdHJpbmd1 MSBJTiAoJ0EnLCdKJykgQU5EIHN0cmluZ3UxIDwgJ1onOworLS0gVXNlIHBhcnRpYWwgaW5k ZXhlcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIK K1dIRVJFIHN0cmluZ3UxIElOICgnQicsJ0onKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHVu aXF1ZTEgPSAxKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJp bmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIDwgMSBPUiAoc3RyaW5ndTEgPSAnQScg T1Igc3RyaW5ndTEgPSAnSicpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1 ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPSAxIE9SIHVuaXF1ZTIg PSBQSSgpOjppbnRlZ2VyOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOworCist LSBPUiA8LT4gQU5ZIHRyYW5zZm9ybWF0aW9uIG11c3QgZmluZCBhIHBhdGggd2l0aCBwYXJ0 aWFsIGluZGV4ZXMgc2NhbgorLS0gcmVnYXJkbGVzcyB0aGUgY2xhdXNlIHJlcHJlc2VudGF0 aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIg V0hFUkUgc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSic7CitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSBJTiAo J0EnLCdKJyk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBv bmVrMiBXSEVSRSBzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jyk7CitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSBJTiAoJ0En KSBPUiBzdHJpbmd1MSBJTiAoJ0onKTsKKworLS0gRG9uJ3Qgc2NhbiBwYXJ0aWFsIGluZGV4 ZXMgYmVjYXVzZSBvZiBleHRyYSB2YWx1ZS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScsICdKJywgJ0Mn KTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyIEZST00gb25lazIKK1dI RVJFIHN0cmluZ3UxIElOICgnQScsICdBJykgQU5EIChzdHJpbmd1MSA9ICdBJyBPUiBzdHJp bmd1MSA9ICdBJyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBz dHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUyIDwgMSBBTkQgc3RyaW5ndTEgSU4g KCdBJywnSicpIEFORCBzdHJpbmd1MSA8ICdaJzsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0gMSBP UiB1bmlxdWUxID0gUEkoKTo6aW50ZWdlcjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIElOICgxLCBQ SSgpOjppbnRlZ2VyKTsgLS0gVE9ETzogd2h5IGl0IGlzIGRpZmZlcnMgZnJvbSBwcmV2aW91 cyBleGFtcGxlPworCistLSBEb24ndCBhcHBseSB0aGUgb3B0aW1pemF0aW9uIHRvIGNsYXVz ZXMsIGNvbnRhaW5pbmcgdm9sYXRpbGUgZnVuY3Rpb25zCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgdW5pcXVlMixzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0g KHJhbmRvbSgpKjIpOjppbnRlZ2VyIE9SIHVuaXF1ZTEgPSAocmFuZG9tKCkqMyk6OmludGVn ZXI7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMixzdHJpbmd1MSBGUk9N IG9uZWsyCitXSEVSRSB1bmlxdWUxIElOICgocmFuZG9tKCkqMik6OmludGVnZXIsIChyYW5k b20oKSozKTo6aW50ZWdlcik7CisKKy0tIENvbWJpbmUgZGlmZmVyZW50IHNhb3BzLiBTb21l IG9mIHRoZW0gZG9lc250JyBmaXQgYSBzZXQgb2YgcGFydGlhbCBpbmRleGVzLAorLS0gYnV0 IG90aGVyIGZpdHMuCistLSBVbmZvcnR1bmF0ZWx5LCB3ZSBkb24ndCBjb21iaW5lIHNhb3Ag YW5kIE9SIGNsYXVzZXMgc28gZmFyLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVu aXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUKKyAgdW5pcXVlMSBJTiAoMSwyLDIx KSBBTkQKKyAgKHN0cmluZ3UxIElOICgnQScsJ0onKSBPUiB1bmlxdWUxIElOICgzLDQpIE9S IHN0cmluZ3UxID0gJ0onKTsKKworLS0gQ2hlY2sgcmVjdXJzaXZlIGNvbWJpbmF0aW9uIG9m IE9SIGFuZCBTQU9QIGV4cHJlc3Npb25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg dW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8IDEgT1IgKHN0 cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onKTsKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSAodW5pcXVlMSA8 IDEgT1Igc3RyaW5ndTEgSU4gKCdBJywnSicpKTsKKy0tIEFsdGhvdWdoIFNBT1AgZG9lc24n dCBmaXQgcGFydGlhbCBpbmRleGVzIGZ1bGx5LCB3ZSBjYW4gdXNlIGFkZGVkIE9SIGNsYXVz ZQorLS0gdG8gc2NhbiBhbm90aGVyIGNvdXBsZSBvZiBwYXJ0aWFsIGluZGV4ZXMuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgc3Ry aW5ndTEgSU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9IDEp OworCitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworLS1DaGVjayB0aGUgY2FzZSB3aGVuIHdl IGNvbnN0cnVjdCBBTlkgbGlzdCB3aXRoIHVuaXF1ZSBlbGVtZW50cworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPSAx IE9SIHVuaXF1ZTEgPSAxOworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKwogLS0KIC0tIFRl c3Qgc29tZSBjb3JuZXIgY2FzZXMgdGhhdCBoYXZlIGJlZW4ga25vd24gdG8gY29uZnVzZSB0 aGUgcGxhbm5lcgogLS0KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZjRiNmZl ZTg5My4uNzkzMGExN2U4MSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIx NDEsNiArMjE0MSw3IEBAIFByZWRJdGVySW5mb0RhdGEKIFByZWRYYWN0TGlzdAogUHJlZGlj YXRlTG9ja0RhdGEKIFByZWRpY2F0ZUxvY2tUYXJnZXRUeXBlCitQcmVkaWNhdGVzRGF0YQog UHJlZmV0Y2hCdWZmZXJSZXN1bHQKIFByZXBQYXJhbGxlbFJlc3RvcmVQdHJUeXBlCiBQcmVw YXJlU3RtdAotLSAKMi4zNC4xCgo= --------------MUM50ReAJht5A2gAd7uJicWK Content-Type: text/x-patch; charset=UTF-8; name="v21-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Disposition: attachment; filename="v21-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Transfer-Encoding: base64 RnJvbSBhZjQ1OTIxMTFmY2QxZjVmYjg1MjE2YzdkNTZmMTllZDBmZmRlMzhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogRnJpLCAyIEZlYiAyMDI0IDIyOjAxOjA5ICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIFRyYW5zZm9ybSBPUiBjbGF1c2VzIHRvIEFOWSBleHByZXNzaW9u LgoKUmVwbGFjZSAoZXhwciBvcCBDMSkgT1IgKGV4cHIgb3AgQzIpIC4uLiB3aXRoIGV4cHIg b3AgQU5ZKEFSUkFZW0MxLCBDMiwgLi4uXSkgb24gdGhlCnByZWxpbWluYXJ5IHN0YWdlIG9m IG9wdGltaXphdGlvbiB3aGVuIHdlIGFyZSBzdGlsbCB3b3JraW5nIHdpdGggdGhlCmV4cHJl c3Npb24gdHJlZS4KSGVyZSBDPFg+IGlzIGEgY29uc3RhbnQgZXhwcmVzc2lvbiwgJ2V4cHIn IGlzIG5vbi1jb25zdGFudCBleHByZXNzaW9uLCAnb3AnIGlzCmFuIG9wZXJhdG9yIHdoaWNo IHJldHVybnMgYm9vbGVhbiByZXN1bHQgYW5kIGhhcyBhIGNvbW11dGVyIChmb3IgdGhlIGNh c2Ugb2YKcmV2ZXJzZSBvcmRlciBvZiBjb25zdGFudCBhbmQgbm9uLWNvbnN0YW50IHBhcnRz IG9mIHRoZSBleHByZXNzaW9uLApsaWtlICdDWCBvcCBleHByJykuClNvbWV0aW1lcyBpdCBj YW4gbGVhZCB0byBub3Qgb3B0aW1hbCBwbGFuLiBCdXQgd2UgdGhpbmsgaXQgaXMgYmV0dGVy IHRvIGhhdmUKYXJyYXkgb2YgZWxlbWVudHMgaW5zdGVhZCBvZiBhIGxvdCBvZiBPUiBjbGF1 c2VzLiBIZXJlIGlzIGEgcm9vbSBmb3IgZnVydGhlcgpvcHRpbWl6YXRpb25zIG9uIGRlY29t cG9zaW5nIHRoYXQgYXJyYXkgaW50byBtb3JlIG9wdGltYWwgcGFydHMuCkF1dGhvcnM6IEFs ZW5hIFJ5YmFraW5hIDxsZW5hLnJpYmFja2luYUB5YW5kZXgucnU+LCBBbmRyZXkgTGVwaWto b3YgPGEubGVwaWtob3ZAcG9zdGdyZXNwcm8ucnU+ClJldmlld2VkLWJ5OiBQZXRlciBHZW9n aGVnYW4gPHBnQGJvd3QuaWU+LCBSYW5pZXIgVmlsZWxhIDxyYW5pZXIudmZAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNv bT4sIFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBq aWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+Ci0tLQogLi4uL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICA4ICstCiBkb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2JhY2tl bmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jICAgICAgICAgIHwgIDI3ICsrCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgIDkgLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgMzU2ICsrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAg ICAgIHwgIDExICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZSB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAg ICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggICAg ICAgICAgICAgfCAgMTAgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5k ZXgub3V0ICAgIHwgMTU2ICsrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pv aW4ub3V0ICAgICAgICAgICAgfCAgNjIgKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9wcnVuZS5vdXQgfCAyMTUgKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCAgICAgICB8ICAxMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0ICAgICAgICAgfCAgMjMgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICAgICB8ICAzNSArKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvam9pbi5zcWwgICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgICAgICB8ICAyMiArKwogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwgICAgICAgICAgICAgIHwgICA2ICsKIHNy Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMiArCiAy MSBmaWxlcyBjaGFuZ2VkLCA5MjMgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3 Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQK aW5kZXggYzM1NWU4ZjNmNy4uNDg2ODViZjZmZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0 Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC04Nzk3LDE4ICs4Nzk3LDE4 IEBAIGluc2VydCBpbnRvIHV0cnRlc3QgdmFsdWVzICgyLCAncXV4Jyk7CiAtLSBDaGVjayBj YXNlIHdoZXJlIHRoZSBmb3JlaWduIHBhcnRpdGlvbiBpcyBhIHN1YnBsYW4gdGFyZ2V0IHJl bAogZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQogdXBkYXRlIHV0cnRlc3Qgc2V0IGEg PSAxIHdoZXJlIGEgPSAxIG9yIGEgPSAyIHJldHVybmluZyAqOwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgVXBkYXRlIG9uIHB1YmxpYy51 dHJ0ZXN0CiAgICBPdXRwdXQ6IHV0cnRlc3RfMS5hLCB1dHJ0ZXN0XzEuYgogICAgRm9yZWln biBVcGRhdGUgb24gcHVibGljLnJlbXAgdXRydGVzdF8xCiAgICBVcGRhdGUgb24gcHVibGlj LmxvY3AgdXRydGVzdF8yCiAgICAtPiAgQXBwZW5kCiAgICAgICAgICAtPiAgRm9yZWlnbiBV cGRhdGUgb24gcHVibGljLnJlbXAgdXRydGVzdF8xCi0gICAgICAgICAgICAgICBSZW1vdGUg U1FMOiBVUERBVEUgcHVibGljLmxvY3QgU0VUIGEgPSAxIFdIRVJFICgoKGEgPSAxKSBPUiAo YSA9IDIpKSkgUkVUVVJOSU5HIGEsIGIKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFVQ REFURSBwdWJsaWMubG9jdCBTRVQgYSA9IDEgV0hFUkUgKChhID0gQU5ZICgnezEsMn0nOjpp bnRlZ2VyW10pKSkgUkVUVVJOSU5HIGEsIGIKICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMubG9jcCB1dHJ0ZXN0XzIKICAgICAgICAgICAgICAgIE91dHB1dDogMSwgdXRydGVz dF8yLnRhYmxlb2lkLCB1dHJ0ZXN0XzIuY3RpZCwgTlVMTDo6cmVjb3JkCi0gICAgICAgICAg ICAgICBGaWx0ZXI6ICgodXRydGVzdF8yLmEgPSAxKSBPUiAodXRydGVzdF8yLmEgPSAyKSkK KyAgICAgICAgICAgICAgIEZpbHRlcjogKHV0cnRlc3RfMi5hID0gQU5ZICgnezEsMn0nOjpp bnRlZ2VyW10pKQogKDEwIHJvd3MpCiAKIC0tIFRoZSBuZXcgdmFsdWVzIGFyZSBjb25jYXRl bmF0ZWQgd2l0aCAnIHRyaWdnZXJlZCAhJwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGIzOGNiZDcxNGEu LjFmZGZmZmQ3OWIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTU0MzMsNiArNTQzMywyMyBAQCBBTlkg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4g KCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1vci10cmFu c2Zvcm1hdGlvbiIgeHJlZmxhYmVsPSJlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24iPgorICAg ICAgPHRlcm0+PHZhcm5hbWU+ZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uPC92YXJuYW1lPiAo PHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgPHBy aW1hcnk+PHZhcm5hbWU+ZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uPC92YXJuYW1lPiBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgICA8L2luZGV4dGVybT4KKyAg ICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg RW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgcXVlcnkgcGxhbm5lcidzIGFiaWxpdHkgdG8gbG9v a3VwIGFuZCBncm91cCBtdWx0aXBsZQorICAgICAgICBzaW1pbGFyIE9SIGV4cHJlc3Npb25z IHRvIEFOWSAoPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWNvbXBhcmlzb25zLWFueS1zb21l Ii8+KSBleHByZXNzaW9ucy4KKyAgICAgICAgVGhlIGdyb3VwaW5nIHRlY2huaXF1ZSBvZiB0 aGlzIHRyYW5zZm9ybWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBlcXVpdmFsZW5jZSBvZiB2YXJp YWJsZSBzaWRlcy4KKyAgICAgICAgT25lIHNpZGUgb2Ygc3VjaCBhbiBleHByZXNzaW9uIG11 c3QgYmUgYSBjb25zdGFudCBjbGF1c2UsIGFuZCB0aGUgb3RoZXIgbXVzdCBjb250YWluIGEg dmFyaWFibGUgY2xhdXNlLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5vbjwv bGl0ZXJhbD4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwv dmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1lbmFibGUtcGFy YWxsZWwtYXBwZW5kIiB4cmVmbGFiZWw9ImVuYWJsZV9wYXJhbGxlbF9hcHBlbmQiPgogICAg ICAgPHRlcm0+PHZhcm5hbWU+ZW5hYmxlX3BhcmFsbGVsX2FwcGVuZDwvdmFybmFtZT4gKDx0 eXBlPmJvb2xlYW48L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L3F1ZXJ5anVtYmxlZnVuY3MuYwppbmRleCAyYzExNmM4NzI4Li4wYzViNGEwMTFiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jCkBAIC0xNDEsNiArMTQxLDMzIEBA IEp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSkKIAlyZXR1cm4ganN0YXRlOwogfQogCitKdW1i bGVTdGF0ZSAqCitKdW1ibGVFeHByKEV4cHIgKmV4cHIsIHVpbnQ2NCAqcXVlcnlJZCkKK3sK KwlKdW1ibGVTdGF0ZSAqanN0YXRlID0gTlVMTDsKKworCUFzc2VydChxdWVyeUlkICE9IE5V TEwpOworCisJanN0YXRlID0gKEp1bWJsZVN0YXRlICopIHBhbGxvYyhzaXplb2YoSnVtYmxl U3RhdGUpKTsKKworCS8qIFNldCB1cCB3b3Jrc3BhY2UgZm9yIHF1ZXJ5IGp1bWJsaW5nICov CisJanN0YXRlLT5qdW1ibGUgPSAodW5zaWduZWQgY2hhciAqKSBwYWxsb2MoSlVNQkxFX1NJ WkUpOworCWpzdGF0ZS0+anVtYmxlX2xlbiA9IDA7CisJanN0YXRlLT5jbG9jYXRpb25zX2J1 Zl9zaXplID0gMzI7CisJanN0YXRlLT5jbG9jYXRpb25zID0gKExvY2F0aW9uTGVuICopCisJ CXBhbGxvYyhqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUgKiBzaXplb2YoTG9jYXRpb25M ZW4pKTsKKwlqc3RhdGUtPmNsb2NhdGlvbnNfY291bnQgPSAwOworCWpzdGF0ZS0+aGlnaGVz dF9leHRlcm5fcGFyYW1faWQgPSAwOworCisJLyogQ29tcHV0ZSBxdWVyeSBJRCAqLworCV9q dW1ibGVOb2RlKGpzdGF0ZSwgKE5vZGUgKikgZXhwcik7CisJKnF1ZXJ5SWQgPSBEYXR1bUdl dFVJbnQ2NChoYXNoX2FueV9leHRlbmRlZChqc3RhdGUtPmp1bWJsZSwKKwkJCQkJCQkJCQkJ CWpzdGF0ZS0+anVtYmxlX2xlbiwKKwkJCQkJCQkJCQkJCTApKTsKKworCXJldHVybiBqc3Rh dGU7Cit9CisKIC8qCiAgKiBFbmFibGVzIHF1ZXJ5IGlkZW50aWZpZXIgY29tcHV0YXRpb24u CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3Qu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKaW5kZXggYzM3YjQx NmUyNC4uYjc2ODk2ZGZiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVz dC5jCkBAIC0zMCwxNSArMzAsNiBAQAogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAK IAotLyoKLSAqIFByb29mIGF0dGVtcHRzIGludm9sdmluZyBsYXJnZSBhcnJheXMgaW4gU2Nh bGFyQXJyYXlPcEV4cHIgbm9kZXMgYXJlCi0gKiBsaWtlbHkgdG8gcmVxdWlyZSBPKE5eMikg dGltZSwgYW5kIG1vcmUgb2Z0ZW4gdGhhbiBub3QgZmFpbCBhbnl3YXkuCi0gKiBTbyB3ZSBz ZXQgYW4gYXJiaXRyYXJ5IGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYXJyYXkgZWxlbWVudHMg dGhhdAotICogd2Ugd2lsbCBhbGxvdyB0byBiZSB0cmVhdGVkIGFzIGFuIEFORCBvciBPUiBj bGF1c2UuCi0gKiBYWFggaXMgaXQgd29ydGggZXhwb3NpbmcgdGhpcyBhcyBhIEdVQyBrbm9i PwotICovCi0jZGVmaW5lIE1BWF9TQU9QX0FSUkFZX1NJWkUJCTEwMAotCiAvKgogICogVG8g YXZvaWQgcmVkdW5kYW50IGNvZGluZyBpbiBwcmVkaWNhdGVfaW1wbGllZF9ieV9yZWN1cnNl IGFuZAogICogcHJlZGljYXRlX3JlZnV0ZWRfYnlfcmVjdXJzZSwgd2UgbmVlZCB0byBhYnN0 cmFjdCBvdXQgdGhlIG5vdGlvbiBvZgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXgg OTMwMGM3YjlhYi4uZTk4MTNlZjZhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBA IC0xNiwxMiArMTYsMTUgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9y LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgorI2luY2x1ZGUg ImNvbW1vbi9oYXNoZm4uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNs dWRlICJub2Rlcy9xdWVyeWp1bWJsZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6 ZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvYW5hbHl6ZS5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV9hZ2cuaCIKQEAgLTM4LDExICs0MSwxMyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdGUu aCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMv dGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCiAKIC8qIEdVQyBwYXJhbWV0 ZXJzICovCiBib29sCQlUcmFuc2Zvcm1fbnVsbF9lcXVhbHMgPSBmYWxzZTsKK2Jvb2wJCWVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IHRydWU7CiAKIAogc3RhdGljIE5vZGUgKnRyYW5z Zm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CkBAIC05 OSw2ICsxMDQsMzUyIEBAIHN0YXRpYyBFeHByICptYWtlX2Rpc3RpbmN0X29wKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLAogc3RhdGljIE5vZGUgKm1ha2VfbnVsbHRlc3Rf ZnJvbV9kaXN0aW5jdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJIEFfRXhwciAq ZGlzdGluY3RhLCBOb2RlICphcmcpOwogCit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3Vw S2V5Cit7CisJTm9kZVRhZwl0eXBlOworCisJRXhwciAgICpleHByOyAvKiBQb2ludGVyIHRv IHRoZSBleHByZXNzaW9uIHRyZWUgd2hpY2ggaGFzIGJlZW4gYSBzb3VyY2UgZm9yCisJCQkJ CXRoZSBoYXNoa2V5IHZhbHVlICovCisJT2lkCQlvcG5vOworCU9pZAkJZXhwcnR5cGU7Cit9 IE9yQ2xhdXNlR3JvdXBLZXk7CisKK3R5cGVkZWYgc3RydWN0IE9yQ2xhdXNlR3JvdXBFbnRy eQoreworCU9yQ2xhdXNlR3JvdXBLZXkga2V5OworCisJTGlzdAkJICAgKmNvbnN0czsKKwlM aXN0IAkJICAgKmV4cHJzOworfSBPckNsYXVzZUdyb3VwRW50cnk7CisKKy8qCisgKiBIYXNo IGZ1bmN0aW9uIHRvIGZpbmQgY2FuZGlkYXRlIGNsYXVzZXMuCisgKi8KK3N0YXRpYyB1aW50 MzIKK29yY2xhdXNlX2hhc2goY29uc3Qgdm9pZCAqZGF0YSwgU2l6ZSBrZXlzaXplKQorewor CU9yQ2xhdXNlR3JvdXBLZXkgICAqa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgZGF0YTsK Kwl1aW50NjQJCQkJZXhwckhhc2g7CisKKwlBc3NlcnQoa2V5c2l6ZSA9PSBzaXplb2YoT3JD bGF1c2VHcm91cEtleSkpOworCUFzc2VydChJc0EoZGF0YSwgSW52YWxpZCkpOworCisJKHZv aWQpIEp1bWJsZUV4cHIoa2V5LT5leHByLCAmZXhwckhhc2gpOworCisJcmV0dXJuIGhhc2hf Y29tYmluZSgodWludDMyKSBleHBySGFzaCwKKwkJCQkJCWhhc2hfY29tYmluZSgodWludDMy KSBrZXktPm9wbm8sCisJCQkJCQkJCQkgKHVpbnQzMikga2V5LT5leHBydHlwZSkpOworfQor CitzdGF0aWMgdm9pZCAqCitvcmNsYXVzZV9rZXljb3B5KHZvaWQgKmRlc3QsIGNvbnN0IHZv aWQgKnNyYywgU2l6ZSBrZXlzaXplKQoreworCU9yQ2xhdXNlR3JvdXBLZXkgKnNyY19rZXkg PSAoT3JDbGF1c2VHcm91cEtleSAqKSBzcmM7CisJT3JDbGF1c2VHcm91cEtleSAqZHN0X2tl eSA9IChPckNsYXVzZUdyb3VwS2V5ICopIGRlc3Q7CisKKwlBc3NlcnQoc2l6ZW9mKE9yQ2xh dXNlR3JvdXBLZXkpID09IGtleXNpemUpOworCUFzc2VydChJc0Eoc3JjLCBJbnZhbGlkKSk7 CisKKwlkc3Rfa2V5LT50eXBlID0gVF9JbnZhbGlkOworCWRzdF9rZXktPmV4cHIgPSBzcmNf a2V5LT5leHByOworCWRzdF9rZXktPm9wbm8gPSBzcmNfa2V5LT5vcG5vOworCWRzdF9rZXkt PmV4cHJ0eXBlID0gc3JjX2tleS0+ZXhwcnR5cGU7CisJcmV0dXJuIGRzdF9rZXk7Cit9CisK Ky8qCisgKiBEeW5haGFzaCBtYXRjaCBmdW5jdGlvbiB0byB1c2UgaW4gb3JfZ3JvdXBfaHRh YgorICovCitzdGF0aWMgaW50CitvcmNsYXVzZV9tYXRjaChjb25zdCB2b2lkICpkYXRhMSwg Y29uc3Qgdm9pZCAqZGF0YTIsIFNpemUga2V5c2l6ZSkKK3sKKwlPckNsYXVzZUdyb3VwS2V5 ICAgKmtleTEgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhMTsKKwlPckNsYXVzZUdyb3Vw S2V5ICAgKmtleTIgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhMjsKKworCUFzc2VydChz aXplb2YoT3JDbGF1c2VHcm91cEtleSkgPT0ga2V5c2l6ZSk7CisJQXNzZXJ0KElzQShrZXkx LCBJbnZhbGlkKSk7CisJQXNzZXJ0KElzQShrZXkyLCBJbnZhbGlkKSk7CisKKwlpZiAoa2V5 MS0+b3BubyA9PSBrZXkyLT5vcG5vICYmCisJCWtleTEtPmV4cHJ0eXBlID09IGtleTItPmV4 cHJ0eXBlICYmCisJCWVxdWFsKGtleTEtPmV4cHIsIGtleTItPmV4cHIpKQorCQlyZXR1cm4g MDsKKworCXJldHVybiAxOworfQorCisvKgorICogVHJhbnNmb3JtT3JFeHByVG9BTlkgLQor ICoJICBEaXNjb3ZlciB0aGUgYXJncyBvZiBhbiBPUiBleHByZXNzaW9uIGFuZCB0cnkgdG8g Z3JvdXAgc2ltaWxhciBPUgorICoJICBleHByZXNzaW9ucyB0byBhbiBBTlkgb3BlcmF0aW9u LgorICoJICBUcmFuc2Zvcm1hdGlvbiBtdXN0IGJlIGFscmVhZHkgZG9uZSBvbiBpbnB1dCBh cmdzIGxpc3QgYmVmb3JlIHRoZSBjYWxsLgorICoJICBUcmFuc2Zvcm1hdGlvbiBncm91cHMg dHdvLXNpZGVkIGVxdWFsaXR5IG9wZXJhdGlvbnMuIE9uZSBzaWRlIG9mIHN1Y2ggYW4KKyAq CSAgb3BlcmF0aW9uIG11c3QgYmUgcGxhaW4gY29uc3RhbnQgb3IgY29uc3RhbnQgZXhwcmVz c2lvbi4gVGhlIG90aGVyIHNpZGUgb2YKKyAqCSAgdGhlIGNsYXVzZSBtdXN0IGJlIGEgdmFy aWFibGUgZXhwcmVzc2lvbiB3aXRob3V0IHZvbGF0aWxlIGZ1bmN0aW9ucy4KKyAqCSAgVGhl IGdyb3VwaW5nIHRlY2huaXF1ZSBpcyBiYXNlZCBvbiBhbiBlcXVpdmFsZW5jZSBvZiB2YXJp YWJsZSBzaWRlcyBvZiB0aGUKKyAqCSAgZXhwcmVzc2lvbjogdXNpbmcgcXVlcnlJZCBhbmQg ZXF1YWwoKSByb3V0aW5lLCBpdCBncm91cHMgY29uc3RhbnQgc2lkZXMgb2YKKyAqCSAgc2lt aWxhciBjbGF1c2VzIGludG8gYW4gYXJyYXkuIEFmdGVyIHRoZSBncm91cGluZyBwcm9jZWR1 cmUsIGVhY2ggY291cGxlCisgKgkgICgndmFyaWFibGUgZXhwcmVzc2lvbicgYW5kICdjb25z dGFudCBhcnJheScpIGZvcm0gYSBuZXcgU0FPUCBvcGVyYXRpb24sCisgKgkgIHdoaWNoIGlz IGFkZGVkIHRvIHRoZSBhcmdzIGxpc3Qgb2YgdGhlIHJldHVybmluZyBleHByZXNzaW9uLgor ICoKKyAqCSAgTk9URTogZnVuY3Rpb24gcmV0dXJucyBPUiBCb29sRXhwciBpZiBtb3JlIHRo YW4gb25lIGNsYXVzZSBhcmUgZGV0ZWN0ZWQgaW4KKyAqCSAgdGhlIGZpbmFsIGFyZ3MgbGlz dCwgb3IgU2NhbGFyQXJyYXlPcEV4cHIgaWYgYWxsIGFyZ3Mgd2VyZSBncm91cGVkIGludG8K KyAqCSAgdGhlIHNpbmdsZSBTQU9QIGV4cHJlc3Npb24uCisgKi8KK3N0YXRpYyBOb2RlICoK K1RyYW5zZm9ybU9yRXhwclRvQU5ZKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYXJncywg aW50IGxvY2F0aW9uKQoreworCUxpc3QJCQkJICAgKm9yX2xpc3QgPSBOSUw7CisJTGlzdAkJ CQkgICAqZW50cmllcyA9IE5JTDsKKwlMaXN0Q2VsbAkJCSAgICpsYzsKKwlIQVNIQ1RMCQkJ CQlpbmZvOworCUhUQUIgCQkJCSAgICpvcl9ncm91cF9odGFiID0gTlVMTDsKKwlpbnQgCQkJ CQlsZW5fb3JzID0gbGlzdF9sZW5ndGgoYXJncyk7CisJT3JDbGF1c2VHcm91cEVudHJ5CSAg ICplbnRyeSA9IE5VTEw7CisKKwlBc3NlcnQoZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uICYm IGxlbl9vcnMgPiAxKTsKKworCU1lbVNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKKwlp bmZvLmtleXNpemUgPSBzaXplb2YoT3JDbGF1c2VHcm91cEtleSk7CisJaW5mby5lbnRyeXNp emUgPSBzaXplb2YoT3JDbGF1c2VHcm91cEVudHJ5KTsKKwlpbmZvLmhhc2ggPSBvcmNsYXVz ZV9oYXNoOworCWluZm8ua2V5Y29weSA9IG9yY2xhdXNlX2tleWNvcHk7CisJaW5mby5tYXRj aCA9IG9yY2xhdXNlX21hdGNoOworCW9yX2dyb3VwX2h0YWIgPSBoYXNoX2NyZWF0ZSgiT1Ig R3JvdXBzIiwKKwkJCQkJCQkJbGVuX29ycywKKwkJCQkJCQkJJmluZm8sCisJCQkJCQkJCUhB U0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0tFWUNPUFkp OworCisJZm9yZWFjaChsYywgYXJncykKKwl7CisJCU5vZGUJCQkJICAgKm9ycXVhbCA9IGxm aXJzdChsYyk7CisJCU5vZGUJCQkJICAgKmNvbnN0X2V4cHI7CisJCU5vZGUJCQkJICAgKm5j b25zdF9leHByOworCQlPckNsYXVzZUdyb3VwS2V5CQloYXNoa2V5OworCQlib29sCQkJCQlm b3VuZDsKKwkJT2lkCQkJCQkJb3BubzsKKwkJT2lkCQkJCQkJZXhwcnR5cGU7CisJCU5vZGUJ CQkJICAgKmxlZnRvcCwgKnJpZ2h0b3A7CisKKwkJaWYgKCFJc0Eob3JxdWFsLCBPcEV4cHIp KQorCQl7CisJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBvcnF1YWwpOworCQkJY29u dGludWU7CisJCX0KKworCQlvcG5vID0gKChPcEV4cHIgKikgb3JxdWFsKS0+b3BubzsKKwkJ aWYgKGdldF9vcF9yZXR0eXBlKG9wbm8pICE9IEJPT0xPSUQpCisJCXsKKwkJCS8qIE9ubHkg b3BlcmF0b3IgcmV0dXJuaW5nIGJvb2xlYW4gc3VpdHMgT1IgLT4gQU5ZIHRyYW5zZm9ybWF0 aW9uICovCisJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBvcnF1YWwpOworCQkJY29u dGludWU7CisJCX0KKworCQkvKgorCQkgKiBEZXRlY3QgdGhlIGNvbnN0YW50IHNpZGUgb2Yg dGhlIGNsYXVzZS4gUmVjYWxsIG5vbi1jb25zdGFudAorCQkgKiBleHByZXNzaW9uIGNhbiBi ZSBtYWRlIG5vdCBvbmx5IHdpdGggVmFycywgYnV0IGFsc28gd2l0aCBQYXJhbXMsCisJCSAq IHdoaWNoIGlzIG5vdCBib25kZWQgd2l0aCBhbnkgcmVsYXRpb24uIFRodXMsIHdlIGRldGVj dCB0aGUgY29uc3QKKwkJICogc2lkZSAtIGlmIGFub3RoZXIgc2lkZSBpcyBjb25zdGFudCB0 b28sIHRoZSBvcnF1YWwgY291bGRuJ3QgYmUKKwkJICogYW4gT3BFeHByLgorCQkgKiBHZXQg cG9pbnRlcnMgdG8gY29uc3RhbnQgYW5kIGV4cHJlc3Npb24gc2lkZXMgb2YgdGhlIHF1YWwu CisJCSAqLworCQlsZWZ0b3AgPSBnZXRfbGVmdG9wKG9ycXVhbCk7CisJCWlmIChJc0EobGVm dG9wLCBSZWxhYmVsVHlwZSkpCisJCQlsZWZ0b3AgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBl ICopIGxlZnRvcCktPmFyZzsKKwkJcmlnaHRvcCA9IGdldF9yaWdodG9wKG9ycXVhbCk7CisJ CWlmIChJc0EocmlnaHRvcCwgUmVsYWJlbFR5cGUpKQorCQkJcmlnaHRvcCA9IChOb2RlICop ICgoUmVsYWJlbFR5cGUgKikgcmlnaHRvcCktPmFyZzsKKworCQlpZiAoSXNBKGxlZnRvcCwg Q29uc3QpKQorCQl7CisJCQlvcG5vID0gZ2V0X2NvbW11dGF0b3Iob3Bubyk7CisKKwkJCWlm ICghT2lkSXNWYWxpZChvcG5vKSkKKwkJCXsKKwkJCQkvKiBjb21tdXRhdG9yIGRvZXNuJ3Qg ZXhpc3QsIHdlIGNhbid0IHJldmVyc2UgdGhlIG9yZGVyICovCisJCQkJZW50cmllcyA9IGxh cHBlbmQoZW50cmllcywgb3JxdWFsKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJbmNv bnN0X2V4cHIgPSBnZXRfcmlnaHRvcChvcnF1YWwpOworCQkJY29uc3RfZXhwciA9IGdldF9s ZWZ0b3Aob3JxdWFsKTsKKwkJfQorCQllbHNlIGlmIChJc0EocmlnaHRvcCwgQ29uc3QpKQor CQl7CisJCQljb25zdF9leHByID0gZ2V0X3JpZ2h0b3Aob3JxdWFsKTsKKwkJCW5jb25zdF9l eHByID0gZ2V0X2xlZnRvcChvcnF1YWwpOworCQl9CisJCWVsc2UKKwkJeworCQkJZW50cmll cyA9IGxhcHBlbmQoZW50cmllcywgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJ LyoKKwkJICogVHJhbnNmb3JtYXRpb24gb25seSB3b3JrcyB3aXRoIGJvdGggc2lkZSB0eXBl IGlzIG5vdAorCQkgKiB7IGFycmF5IHwgY29tcG9zaXRlIHwgZG9tYWluIHwgcmVjb3JkIH0u CisJCSAqIEFsc28sIGZvcmJpZCBpdCBmb3Igdm9sYXRpbGUgZXhwcmVzc2lvbnMuCisJCSAq LworCQlleHBydHlwZSA9IGV4cHJUeXBlKG5jb25zdF9leHByKTsKKwkJaWYgKHR5cGVfaXNf cm93dHlwZShleHByVHlwZShjb25zdF9leHByKSkgfHwKKwkJCXR5cGVfaXNfcm93dHlwZShl eHBydHlwZSkgfHwKKwkJCWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIG5j b25zdF9leHByKSkKKwkJeworCQkJZW50cmllcyA9IGxhcHBlbmQoZW50cmllcywgb3JxdWFs KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJKiBBdCB0aGlzIHBvaW50IHdlIGRl ZmluaXRlbHkgaGF2ZSBhIHRyYW5zZm9ybWFibGUgY2xhdXNlLgorCQkqIENsYXNzaWZ5IGl0 IGFuZCBhZGQgaW50byBzcGVjaWZpYyBncm91cCBvZiBjbGF1c2VzLCBvciBjcmVhdGUgbmV3 CisJCSogZ3JvdXAuCisJCSovCisJCWhhc2hrZXkudHlwZSA9IFRfSW52YWxpZDsKKwkJaGFz aGtleS5leHByID0gKEV4cHIgKikgbmNvbnN0X2V4cHI7CisJCWhhc2hrZXkub3BubyA9IG9w bm87CisJCWhhc2hrZXkuZXhwcnR5cGUgPSBleHBydHlwZTsKKwkJZW50cnkgPSBoYXNoX3Nl YXJjaChvcl9ncm91cF9odGFiLCAmaGFzaGtleSwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwor CQlpZiAodW5saWtlbHkoZm91bmQpKQorCQl7CisJCQllbnRyeS0+Y29uc3RzID0gbGlzdF9h cHBlbmRfdW5pcXVlKGVudHJ5LT5jb25zdHMsIGNvbnN0X2V4cHIpOworCQkJZW50cnktPmV4 cHJzID0gbGlzdF9hcHBlbmRfdW5pcXVlKGVudHJ5LT5leHBycywgb3JxdWFsKTsKKwkJfQor CQllbHNlCisJCXsKKwkJCWVudHJ5LT5jb25zdHMgPSBsaXN0X21ha2UxKGNvbnN0X2V4cHIp OworCQkJZW50cnktPmV4cHJzID0gbGlzdF9tYWtlMShvcnF1YWwpOworCisJCQkvKgorCQkJ ICogQWRkIHRoZSBlbnRyeSB0byB0aGUgbGlzdC4gSXQgaXMgbmVlZGVkIGV4Y2x1c2l2ZWx5 IHRvIG1hbmFnZSB0aGUKKwkJCSAqIHByb2JsZW0gd2l0aCB0aGUgb3JkZXIgb2YgdHJhbnNm b3JtZWQgY2xhdXNlcyBpbiBleHBsYWluLgorCQkJICogSGFzaCB2YWx1ZSBjYW4gZGVwZW5k IG9uIHRoZSBwbGF0Zm9ybSBhbmQgdmVyc2lvbi4gSGVuY2UsCisJCQkgKiBzZXF1ZW50YWwg c2NhbiBvZiB0aGUgaGFzaCB0YWJsZSB3b3VsZCBwcm9uZSB0byBjaGFuZ2UgdGhlIG9yZGVy CisJCQkgKiBvZiBjbGF1c2VzIGluIGxpc3RzIGFuZCwgYXMgYSByZXN1bHQsIGJyZWFrIHJl Z3Jlc3Npb24gdGVzdHMKKwkJCSAqIGFjY2lkZW50aWFsbHkuCisJCQkgKi8KKwkJCWVudHJp ZXMgPSBsYXBwZW5kKGVudHJpZXMsIGVudHJ5KTsKKwkJfQorCX0KKworCS8qIExldCdzIGNv bnZlcnQgZWFjaCBncm91cCBvZiBjbGF1c2VzIHRvIGFuIElOIG9wZXJhdGlvbi4gKi8KKwor CS8qCisJICogR28gdGhyb3VnaCB0aGUgbGlzdCBvZiBncm91cHMgYW5kIGNvbnZlcnQgZWFj aCwgd2hlcmUgbnVtYmVyIG9mCisJICogY29uc3RzIG1vcmUgdGhhbiAxLiB0cml2aWFsIGdy b3VwcyBtb3ZlIHRvIE9SLWxpc3QgYWdhaW4KKwkgKi8KKwlmb3JlYWNoIChsYywgZW50cmll cykKKwl7CisJCU9pZAkJCQkgICAgc2NhbGFyX3R5cGU7CisJCU9pZAkJCQkJYXJyYXlfdHlw ZTsKKworCQlpZiAoIUlzQShsZmlyc3QobGMpLCBJbnZhbGlkKSkKKwkJeworCQkJb3JfbGlz dCA9IGxhcHBlbmQob3JfbGlzdCwgbGZpcnN0KGxjKSk7CisJCQljb250aW51ZTsKKwkJfQor CisJCWVudHJ5ID0gKE9yQ2xhdXNlR3JvdXBFbnRyeSAqKSBsZmlyc3QobGMpOworCisJCUFz c2VydChsaXN0X2xlbmd0aChlbnRyeS0+Y29uc3RzKSA+IDApOworCisJCWlmIChsaXN0X2xl bmd0aChlbnRyeS0+Y29uc3RzKSA9PSAxIHx8CisJCQlsaXN0X2xlbmd0aChlbnRyeS0+Y29u c3RzKSA+IE1BWF9TQU9QX0FSUkFZX1NJWkUpCisJCXsKKwkJCS8qCisJCQkgKiBPbmx5IG9u ZSBlbGVtZW50IG9yIG1vcmUgdGhhbiBNQVhfU0FPUF9BUlJBWV9TSVpFIGVsZW1lbnRzIGlu CisJCQkgKiB0aGUgY2xhc3MgUmV0dXJuIG9yaWdpbiBleHByZXNzaW9uIGludG8uCisJCQkg KiB0aGUgQm9vbEV4cHIgYXJncyBsaXN0IHVuY2hhbmdlZC4KKwkJCSAqLworCQkJbGlzdF9m cmVlKGVudHJ5LT5jb25zdHMpOworCQkJb3JfbGlzdCA9IGxpc3RfY29uY2F0KG9yX2xpc3Qs IGVudHJ5LT5leHBycyk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIERvIHRo ZSB0cmFuc2Zvcm1hdGlvbi4KKwkJICovCisKKwkJc2NhbGFyX3R5cGUgPSBlbnRyeS0+a2V5 LmV4cHJ0eXBlOworCQlhcnJheV90eXBlID0gT2lkSXNWYWxpZChzY2FsYXJfdHlwZSkgPyBn ZXRfYXJyYXlfdHlwZShzY2FsYXJfdHlwZSkgOgorCQkJCQkJCQkJCQkgICBJbnZhbGlkT2lk OworCisJCWlmIChPaWRJc1ZhbGlkKGFycmF5X3R5cGUpKQorCQl7CisJCQkvKgorCQkJICog T0s6IGNvZXJjZSBhbGwgdGhlIHJpZ2h0LWhhbmQgbm9uLVZhciBpbnB1dHMgdG8gdGhlIGNv bW1vbgorCQkJICogdHlwZSBhbmQgYnVpbGQgYW4gQXJyYXlFeHByIGZvciB0aGVtLgorCQkJ ICovCisJCQlMaXN0CQkJICAgKmFleHBycyA9IE5JTDsKKwkJCUFycmF5RXhwcgkJICAgKm5l d2EgPSBOVUxMOworCQkJU2NhbGFyQXJyYXlPcEV4cHIgICpzYW9wZXhwciA9IE5VTEw7CisJ CQlIZWFwVHVwbGUJCQlvcGVydHVwOworCQkJRm9ybV9wZ19vcGVyYXRvcglvcGVyZm9ybTsK KwkJCUxpc3QJCQkgICAqbmFtZWxpc3QgPSBOSUw7CisJCQlMaXN0Q2VsbAkJICAgKmxjMTsK KworCQkJZm9yZWFjaChsYzEsIGVudHJ5LT5jb25zdHMpCisJCQl7CisJCQkJTm9kZSAgICpy ZXhwciA9IChOb2RlICopIGxmaXJzdChsYzEpOworCisJCQkJcmV4cHIgPSBjb2VyY2VfdG9f Y29tbW9uX3R5cGUocHN0YXRlLCByZXhwciwKKwkJCQkJCQkJCQkJICBzY2FsYXJfdHlwZSwK KwkJCQkJCQkJCQkJICAiSU4iKTsKKwkJCQlhZXhwcnMgPSBsYXBwZW5kKGFleHBycywgcmV4 cHIpOworCQkJfQorCisJCQluZXdhID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwkJCS8qIGFy cmF5X2NvbGxpZCB3aWxsIGJlIHNldCBieSBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJCW5ld2Et PmVsZW1lbnRfdHlwZWlkID0gc2NhbGFyX3R5cGU7CisJCQluZXdhLT5hcnJheV90eXBlaWQg PSBhcnJheV90eXBlOworCQkJbmV3YS0+bXVsdGlkaW1zID0gZmFsc2U7CisJCQluZXdhLT5l bGVtZW50cyA9IGFleHByczsKKwkJCW5ld2EtPmxvY2F0aW9uID0gLTE7CisKKwkJCW9wZXJ0 dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BFUk9JRCwKKwkJCQkJCQkJCSAgT2JqZWN0SWRHZXRE YXR1bShlbnRyeS0+a2V5Lm9wbm8pKTsKKwkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChvcGVy dHVwKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0 b3IgJXUiLAorCQkJCQkgZW50cnktPmtleS5vcG5vKTsKKworCQkJb3BlcmZvcm0gPSAoRm9y bV9wZ19vcGVyYXRvcikgR0VUU1RSVUNUKG9wZXJ0dXApOworCQkJaWYgKCFPcGVyYXRvcklz VmlzaWJsZShlbnRyeS0+a2V5Lm9wbm8pKQorCQkJCW5hbWVsaXN0ID0gbGFwcGVuZChuYW1l bGlzdCwgbWFrZVN0cmluZyhnZXRfbmFtZXNwYWNlX25hbWUob3BlcmZvcm0tPm9wcm5hbWVz cGFjZSkpKTsKKworCQkJbmFtZWxpc3QgPSBsYXBwZW5kKG5hbWVsaXN0LCBtYWtlU3RyaW5n KHBzdHJkdXAoTmFtZVN0cihvcGVyZm9ybS0+b3BybmFtZSkpKSk7CisJCQlSZWxlYXNlU3lz Q2FjaGUob3BlcnR1cCk7CisKKwkJCXNhb3BleHByID0KKwkJCQkoU2NhbGFyQXJyYXlPcEV4 cHIgKikKKwkJCQkJbWFrZV9zY2FsYXJfYXJyYXlfb3AocHN0YXRlLAorCQkJCQkJCQkJCSBu YW1lbGlzdCwKKwkJCQkJCQkJCQkgdHJ1ZSwKKwkJCQkJCQkJCQkgKE5vZGUgKikgZW50cnkt PmtleS5leHByLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBuZXdhLAorCQkJCQkJCQkJCSAtMSk7 CisKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsICh2b2lkICopIHNhb3BleHByKTsK KwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGUgY29uc3Qgbm9kZSAocmln aHQgc2lkZSBvZiBvcGVyYXRvciBleHByZXNzaW9uKSAncyB0eXBlCisJCQkgKiAgZG9uJ3Qg aGF2ZSDigJx0cnVl4oCdIGFycmF5IHR5cGUsIHRoZW4gd2UgY2Fubm5vdCBkbyB0aGUgdHJh bnNmb3JtYXRpb24uCisJCQkgKiBXZSBzaW1wbHkgY29uY2F0ZW5hdGUgdGhlIGV4cHJlc3Np b24gbm9kZS4KKwkJCSAqCisJCQkgKi8KKwkJCWxpc3RfZnJlZShlbnRyeS0+Y29uc3RzKTsK KwkJCW9yX2xpc3QgPSBsaXN0X2NvbmNhdChvcl9saXN0LCBlbnRyeS0+ZXhwcnMpOworCQl9 CisJfQorCWhhc2hfZGVzdHJveShvcl9ncm91cF9odGFiKTsKKwlsaXN0X2ZyZWUoZW50cmll cyk7CisKKwkvKiBPbmUgbW9yZSB0cmljazogYXNzZW1ibGUgY29ycmVjdCBjbGF1c2UgKi8K KwlyZXR1cm4gKE5vZGUgKikgKChsaXN0X2xlbmd0aChvcl9saXN0KSA+IDEpID8KKwkJCQkJ IG1ha2VCb29sRXhwcihPUl9FWFBSLCBvcl9saXN0LCBsb2NhdGlvbikgOgorCQkJCQkgbGlu aXRpYWwob3JfbGlzdCkpOworfQogCiAvKgogICogdHJhbnNmb3JtRXhwciAtCkBAIC0xMzg2 LDYgKzE3MzcsMTEgQEAgdHJhbnNmb3JtQm9vbEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBC b29sRXhwciAqYSkKIAkJYXJncyA9IGxhcHBlbmQoYXJncywgYXJnKTsKIAl9CiAKKwkvKiBN YWtlIGFuIGF0dGVtcHQgdG8gZ3JvdXAgc2ltaWxhciBPUiBjbGF1c2VzIGludG8gQU5ZIG9w ZXJhdGlvbiAqLworCWlmIChlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gJiYgYS0+Ym9vbG9w ID09IE9SX0VYUFIgJiYKKwkJbGlzdF9sZW5ndGgoYXJncykgPiAxKQorCQlyZXR1cm4gVHJh bnNmb3JtT3JFeHByVG9BTlkocHN0YXRlLCBhcmdzLCBhLT5sb2NhdGlvbik7CisKIAlyZXR1 cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKGEtPmJvb2xvcCwgYXJncywgYS0+bG9jYXRpb24p OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDQ1MDEzNTgy YTcuLmMwZWE1MzQ5NWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBA IC0xMDI2LDYgKzEwMjYsMTcgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVz Qm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7ImVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbiIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfT1RI RVIsCisJCQlnZXR0ZXh0X25vb3AoIlRyYW5zZm9ybSBhIHNlcXVlbmNlIG9mIE9SIGNsYXVz ZXMgdG8gYW4gYXJyYXkgZXhwcmVzc2lvbi4iKSwKKwkJCWdldHRleHRfbm9vcCgiVGhlIHBs YW5uZXIgd2lsbCByZXBsYWNlIGV4cHJlc3Npb24gbGlrZSAneD1jMSBPUiB4PWMyIC4uJyIK KwkJCQkJCSAidG8gdGhlIGV4cHJlc3Npb24gJ3ggPSBBTlkoQVJSQVlbYzEsYzIsLi5dKSci KSwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24s CisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJLyoKIAkJICogTm90 IGZvciBnZW5lcmFsIHVzZSAtLS0gdXNlZCBieSBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IGFuZCBTRVQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZQppbmRleCBlZGNjMDI4MmIyLi5kMzBkYzZkNTFjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zODksNiArMzg5 LDcgQEAKICMgLSBQbGFubmVyIE1ldGhvZCBDb25maWd1cmF0aW9uIC0KIAogI2VuYWJsZV9h c3luY19hcHBlbmQgPSBvbgorI2VuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uCiAjZW5h YmxlX2JpdG1hcHNjYW4gPSBvbgogI2VuYWJsZV9nYXRoZXJtZXJnZSA9IG9uCiAjZW5hYmxl X2hhc2hhZ2cgPSBvbgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1 bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAwMGI1MDky NzEzLi5kMjhiZjYxN2RiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjA5 NSw5ICsyMDk1LDkgQEAgbXkgJXRlc3RzID0gKAogCQlyZWdleHAgPT4gcXIvXgogCQkJXFFD UkVBVEUgRE9NQUlOIGR1bXBfdGVzdC51c19wb3N0YWxfY29kZSBBUyB0ZXh0IENPTExBVEUg cGdfY2F0YWxvZy4iQyIgREVGQVVMVCAnMTAwMTQnOjp0ZXh0XEVcblxzKwogCQkJXFFDT05T VFJBSU5UIHVzX3Bvc3RhbF9jb2RlX2NoZWNrIENIRUNLIFxFCi0JCQlcUSgoKFZBTFVFIH4g J15cZHs1fVxFCi0JCQlcJFxRJzo6dGV4dCkgT1IgKFZBTFVFIH4gJ15cZHs1fS1cZHs0fVxF XCQKLQkJCVxRJzo6dGV4dCkpKTtcRSgufFxuKSoKKwkJCVxRKChWQUxVRSB+IEFOWSAoQVJS QVlbJ15cZHs1fVxFCisJCQlcJFxRJzo6dGV4dCwgJ15cZHs1fS1cZHs0fVxFXCQKKwkJCVxR Jzo6dGV4dF0pKSk7XEUoLnxcbikqCiAJCQlcUUNPTU1FTlQgT04gQ09OU1RSQUlOVCB1c19w b3N0YWxfY29kZV9jaGVjayBPTiBET01BSU4gZHVtcF90ZXN0LnVzX3Bvc3RhbF9jb2RlIElT ICdjaGVjayBpdCc7XEUKIAkJCS94bSwKIAkJbGlrZSA9PgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVt YmxlLmgKaW5kZXggZjFjNTVjODA2Ny4uYTlhZTA0OGFmNSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9xdWVy eWp1bWJsZS5oCkBAIC02NSw2ICs2NSw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29t cHV0ZV9xdWVyeV9pZDsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKkNsZWFuUXVlcnl0ZXh0KGNv bnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxvY2F0aW9uLCBpbnQgKmxlbik7CiBleHRlcm4gSnVt YmxlU3RhdGUgKkp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSk7CitleHRlcm4gSnVtYmxlU3Rh dGUgKkp1bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0ICpxdWVyeUlkKTsKIGV4dGVybiB2 b2lkIEVuYWJsZVF1ZXJ5SWQodm9pZCk7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHF1 ZXJ5X2lkX2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0 aW1pemVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKaW5kZXggN2I2 M2M1Y2Y3MS4uMGVlNzE1NGUwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L29wdGltaXplci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaApA QCAtNTAsNiArNTAsNyBAQCBzdHJ1Y3QgUGxhbm5lZFN0bXQ7CiBzdHJ1Y3QgUGFyYW1MaXN0 SW5mb0RhdGE7CiBzdHJ1Y3QgSGVhcFR1cGxlRGF0YTsKIAorZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogCiAvKiBpbiBwYXRoL2NsYXVzZXNl bC5jOiAqLwogCkBAIC0xNTksNiArMTYwLDE1IEBAIGV4dGVybiBMaXN0ICpleHBhbmRfZnVu Y3Rpb25fYXJndW1lbnRzKExpc3QgKmFyZ3MsIGJvb2wgaW5jbHVkZV9vdXRfYXJndW1lbnRz LAogCiAvKiBpbiB1dGlsL3ByZWR0ZXN0LmM6ICovCiAKKy8qCisgKiBQcm9vZiBhdHRlbXB0 cyBpbnZvbHZpbmcgbGFyZ2UgYXJyYXlzIGluIFNjYWxhckFycmF5T3BFeHByIG5vZGVzIGFy ZQorICogbGlrZWx5IHRvIHJlcXVpcmUgTyhOXjIpIHRpbWUsIGFuZCBtb3JlIG9mdGVuIHRo YW4gbm90IGZhaWwgYW55d2F5LgorICogU28gd2Ugc2V0IGFuIGFyYml0cmFyeSBsaW1pdCBv biB0aGUgbnVtYmVyIG9mIGFycmF5IGVsZW1lbnRzIHRoYXQKKyAqIHdlIHdpbGwgYWxsb3cg dG8gYmUgdHJlYXRlZCBhcyBhbiBBTkQgb3IgT1IgY2xhdXNlLgorICogWFhYIGlzIGl0IHdv cnRoIGV4cG9zaW5nIHRoaXMgYXMgYSBHVUMga25vYj8KKyAqLworI2RlZmluZSBNQVhfU0FP UF9BUlJBWV9TSVpFCQkxMDAKKwogZXh0ZXJuIGJvb2wgcHJlZGljYXRlX2ltcGxpZWRfYnko TGlzdCAqcHJlZGljYXRlX2xpc3QsIExpc3QgKmNsYXVzZV9saXN0LAogCQkJCQkJCQkgYm9v bCB3ZWFrKTsKIGV4dGVybiBib29sIHByZWRpY2F0ZV9yZWZ1dGVkX2J5KExpc3QgKnByZWRp Y2F0ZV9saXN0LCBMaXN0ICpjbGF1c2VfbGlzdCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCA3OWZhMTE3Y2I1Li42MDZhNDM5OWY5IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0x ODM4LDE4ICsxODM4LDUwIEBAIERST1AgVEFCTEUgb25la193aXRoX251bGw7CiBFWFBMQUlO IChDT1NUUyBPRkYpCiBTRUxFQ1QgKiBGUk9NIHRlbmsxCiAgIFdIRVJFIHRob3VzYW5kID0g NDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIp OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgUmVjaGVjayBDb25k OiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMSkpIE9SICgodGhvdXNhbmQg PSA0MikgQU5EICh0ZW50aG91cyA9IDMpKSBPUiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVu dGhvdXMgPSA0MikpKQotICAgLT4gIEJpdG1hcE9yCi0gICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDEpKQotICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAz KSkKLSAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50 aG91cwotICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQg KHRlbnRob3VzID0gNDIpKQotKDkgcm93cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV90aG91 c190ZW50aG91cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBB TkQgKHRlbnRob3VzID0gQU5ZICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRl bnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisgdW5pcXVl MSB8IHVuaXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRo b3VzYW5kIHwgdHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2 ZW4gfCBzdHJpbmd1MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorICAgICAgNDIgfCAgICA1NTMwIHwgICAwIHwg ICAgMiB8ICAgMiB8ICAgICAgMiB8ICAgICAgNDIgfCAgICAgICA0MiB8ICAgICAgICAgIDQy IHwgICAgICAgIDQyIHwgICAgICAgNDIgfCAgODQgfCAgIDg1IHwgUUJBQUFBICAgfCBTRUlB QUEgICB8IE9PT094eAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2Fu ZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo aHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJb XSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQor KDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0 aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisg IFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAz IE9SIHRlbnRob3VzID0gNDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRo b3VzIG9uIHRlbmsxCisgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVu dGhvdXMgPSBBTlkgKCd7MSwzLDQyfSc6OmludGVnZXJbXSkpKQorKDIgcm93cykKIAogU0VM RUNUICogRlJPTSB0ZW5rMQogICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMg PSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKQEAgLTE4NjEsMjggKzE4 OTMsMTE2IEBAIFNFTEVDVCAqIEZST00gdGVuazEKIEVYUExBSU4gKENPU1RTIE9GRikKIFNF TEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRo b3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdh dGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNr IENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6 OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRl Z2VyW10pKQorKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsK KyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkgT1IgNDMgPiB0aG91c2FuZCBP UiA0MiA+IHRob3VzYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1 bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0M30nOjppbnRlZ2Vy W10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodGhvdXNhbmQgPCBBTlkgKCd7NDIsOTksNDN9Jzo6aW50ZWdlcltd KSkKKyg4IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1Ig dGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKCh0aG91c2Fu ZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEsM30nOjppbnRlZ2VyW10pKSkgT1Ig KHRob3VzYW5kID0gNDEpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50 aG91cyA9IEFOWSAoJ3sxLDN9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQxKQorKDggcm93cykKKworU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRl bnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQg CistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhv dXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNh bmQgPSA0MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hl Y2sgQ29uZDogKCgoaHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5 OX0nOjppbnRlZ2VyW10pKSBPUiAodGVudGhvdXMgPCAyKSkpIE9SICh0aG91c2FuZCA9IDQx KSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcEFu ZAorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5k cmVkID0gNDIpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91 c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNf dGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh0ZW50aG91cyA8IDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh0aG91c2FuZCA9IDQxKQorKDE0IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhv dXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQg CistLS0tLS0tCisgICAgMjAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhv dXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRo b3VzID0gMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFn Z3JlZ2F0ZQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJl Y2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0 aG91c2FuZCA9IDk5KSkpCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQy KSBBTkQgKCh0aG91c2FuZCA9IEFOWSAoJ3s0Miw0MX0nOjppbnRlZ2VyW10pKSBPUiAoKHRo b3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkpKQogICAgICAgICAgLT4gIEJpdG1h cEFuZAogICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1 bmRyZWQKICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIp CiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIs NDF9Jzo6aW50ZWdlcltdKSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gOTkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAy KSkKICgxMSByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQotICBXSEVSRSBo dW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworICBX SEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEg T1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKICBjb3VudCAKIC0tLS0tLS0K ICAgICAxMAogKDEgcm93KQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAt LQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1uIGNvbnRl bnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKaW5kZXggOTYwNTQwMDAy MS4uZDgwMThiZWY0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CkBAIC00 MjEwLDEwICs0MjEwLDEwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCAqIGZyb20g dGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVl MSA9IDIpIG9yCiAgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5o dW5kcmVkID0gNCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIE5lc3RlZCBMb29wCi0gICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUx ID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUyID0gMykgT1IgKGEu dW5pcXVlMiA9IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIEpvaW4gRmlsdGVyOiAo KChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEudW5pcXVlMiA9 IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0KSkpCiAgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBiCiAgICAgICAgICBSZWNoZWNrIENvbmQ6 ICgodW5pcXVlMSA9IDIpIE9SIChodW5kcmVkID0gNCkpCiAgICAgICAgICAtPiAgQml0bWFw T3IKQEAgLTQyMjMsMTYgKzQyMjMsNjQgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4g dGVuazEgYiBvbgogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQg PSA0KQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9 IDEpIE9SICh1bmlxdWUyID0gMykgT1IgKHVuaXF1ZTIgPSA3KSkKKyAgICAgICAgICAgICAg IFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBBTlkgKCd7Myw3 fSc6OmludGVnZXJbXSkpKQogICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQog ICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Vu aXF1ZTIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUy ID0gMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUy ID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE3IHJvd3MpCisKK1NFVCBlbmFibGVf b3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAq IGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA9IDEgYW5kIGIu dW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBh bmQgYi5odW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3Rl ZCBMb29wCisgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1 ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpIEFO RCAoYi5odW5kcmVkID0gNCkpKQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEg YgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAyKSBPUiAoaHVuZHJlZCA9 IDQpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTEgPSAyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6IChodW5kcmVkID0gNCkKKyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25k OiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltd KSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSA3KQotKDE5IHJv d3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9 IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKKygxNyByb3dzKQorCitleHBsYWluIChjb3N0 cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVu aXF1ZTEgPCAyMCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEgYW5kIGIudW5p cXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQg Yi5odW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjogKChhLnVuaXF1 ZTEgPCAyMCkgT1IgKGEudW5pcXVlMSA9IDMpIE9SICgoYS51bmlxdWUxID0gMSkgQU5EIChi LnVuaXF1ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJb XSkpIEFORCAoYi5odW5kcmVkID0gNCkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxIGIK KyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g dGVuazEgYQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPCAyMCkg T1IgKHVuaXF1ZTEgPSAzKSBPUiAodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgn ezMsN30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1 ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxIDwg MjApCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPSAzKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh1bmlxdWUxID0gMSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKKygxNSBy b3dzKQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLQogLS0gdGVzdCBw bGFjZW1lbnQgb2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVl CiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25f cHJ1bmUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUu b3V0CmluZGV4IGJmMDY1N2I5ZjIuLjFlMTUzYzNiYjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKQEAgLTgyLDI1ICs4Miw0NyBA QCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBudWxs OwogKDIgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdo ZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2FuIG9u IGxwX2FkIGxwXzEKLSAgICAgICAgIEZpbHRlcjogKChhID0gJ2EnOjpicGNoYXIpIE9SIChh ID0gJ2MnOjpicGNoYXIpKQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6 YnBjaGFyW10pKQogICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIKLSAgICAgICAgIEZp bHRlcjogKChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKQorICAgICAg ICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKQogKDUgcm93cykKIAog ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51 bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEKLSAg ICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0gJ2EnOjpicGNoYXIp IE9SIChhID0gJ2MnOjpicGNoYXIpKSkKKyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBO VUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCiAgICAtPiAgU2VxIFNj YW4gb24gbHBfYmMgbHBfMgotICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFO RCAoKGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpKQorICAgICAgICAg RmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFy W10pKSkKICg1IHJvd3MpCiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsK K2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9y IGEgPSAnYyc7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCisgICAgICAgICBGaWx0 ZXI6IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpCisgICAtPiAgU2VxIFNjYW4gb24g bHBfYmMgbHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFy W10pKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxw IHdoZXJlIGEgaXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBv biBscF9hZCBscF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChh ID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2Jj IGxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKGEgPSBBTlkg KCd7YSxjfSc6OmJwY2hhcltdKSkpCisoNSByb3dzKQorCitSRVNFVCBlbmFibGVfb3JfdHJh bnNmb3JtYXRpb247CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hl cmUgYSA8PiAnZyc7CiAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTE1LDEwICs1MzcsMTAg QEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDw9IDMx OwogKDI3IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAg d2hlcmUgYSA9IDEgb3IgYSA9IDc7Ci0gICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcmxwMiBybHAKLSAgIEZpbHRlcjogKChh ID0gMSkgT1IgKGEgPSA3KSkKKyAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MSw3fSc6OmludGVn ZXJbXSkpCiAoMiByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOwpAQCAtNTk2LDEzICs2MTgsMTMgQEAgZXhw bGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwgMSBvciAoYSA+ IDIwIGFuZCBhIDwgMjUpOwogCiAtLSB3aGVyZSBjbGF1c2UgY29udHJhZGljdHMgc3ViLXBh cnRpdGlvbidzIGNvbnN0cmFpbnQKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKLSAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMQotICAgICAgICAg RmlsdGVyOiAoKGEgPSAyMCkgT1IgKGEgPSA0MCkpCisgICAgICAgICBGaWx0ZXI6IChhID0g QU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCiAgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9k ZWZhdWx0IHJscF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSA9IDIwKSBPUiAoYSA9IDQwKSkK KyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9Jzo6aW50ZWdlcltdKSkKICg1 IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAzIHdoZXJl IGEgPSAyMDsgICAvKiBlbXB0eSAqLwpAQCAtNjcxLDYgKzY5MywxNjMgQEAgZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAoYSA9IDEgYW5kIGEgPSAzKSBv ciAoYSA+IDEgYW5kIGEgPQogICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0g MykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCiAoMTEgcm93cykKIAorU0VUIGVuYWJs ZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBhID0gNzsKKyAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcmxwMiBybHAKKyAgIEZpbHRlcjogKGEgPSBB TlkgKCd7MSw3fSc6OmludGVnZXJbXSkpCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOworICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDEgcmxwXzEKKyAgICAgICAgIEZpbHRl cjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDIgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6 dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNhYmNkIHJscF8z CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0 KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzQKKyAgICAgICAgIEZpbHRlcjog KChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscDRfMiBybHBfNQorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0 ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJs cF82CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0 ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEgcmxwXzcKKyAgICAgICAgIEZpbHRl cjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDVfZGVmYXVsdCBybHBfOAorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBP UiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2Rl ZmF1bHRfMTAgcmxwXzkKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4 dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzMwIHJs cF8xMAorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6 dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfbnVsbCBybHBfMTEKKyAg ICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQor ICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X2RlZmF1bHQgcmxwXzEyCisgICAgICAg ICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKygyNSBy b3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEg PiAyMCBhbmQgYSA8IDI3OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBw ZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8xCisgICAgICAgICBGaWx0ZXI6 ICgoYSA+IDIwKSBBTkQgKGEgPCAyNykpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8yIHJs cF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDIwKSBBTkQgKGEgPCAyNykpCisoNSByb3dz KQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAy OTsKKyAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJscAorICAgRmlsdGVy OiAoYSA9IDI5KQorKDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIHJscCB3aGVyZSBhID49IDI5OworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxw XzEKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxw NV8xIHJscF8yCisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscDVfZGVmYXVsdCBybHBfMworICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8zMCBybHBfNAorICAgICAgICAgRmlsdGVy OiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9kZWZhdWx0IHJs cF81CisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorKDExIHJvd3MpCisKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBh bmQgYSA8IDI1KTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwMSBybHBf MQorICAgICAgICAgRmlsdGVyOiAoKGEgPCAxKSBPUiAoKGEgPiAyMCkgQU5EIChhIDwgMjUp KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzIKKyAgICAgICAgIEZpbHRlcjog KChhIDwgMSkgT1IgKChhID4gMjApIEFORCAoYSA8IDI1KSkpCisoNSByb3dzKQorCitleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyMCBvciBhID0g NDA7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzEKKyAgICAgICAgIEZp bHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9Jzo6aW50ZWdlcltdKSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHA1X2RlZmF1bHQgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7 MjAsNDB9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBybHAzIHdoZXJlIGEgPSAyMDsgICAvKiBlbXB0eSAqLworICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVz dWx0CisgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoMiByb3dzKQorCitleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID0gMTA7CS8q IG9ubHkgZGVmYXVsdCAqLworICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscF9k ZWZhdWx0XzEwIHJscAorICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPSAxMCkpCisoMiBy b3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEg PiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253YXJkcywgaW5jbHVkaW5nIGRlZmF1bHQgKi8K KyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEg PiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNlZmdoIHJscF8y CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwM251bGx4eSBybHBfMworICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBB TkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNfZGVmYXVsdCBybHBfNAor ICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDRfMSBybHBfNQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEg Pj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMiBybHBfNgorICAgICAgICAgRmls dGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRf ZGVmYXVsdCBybHBfNworICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUp KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfMSBybHBfOAorICAgICAgICAgRmlsdGVyOiAo KGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVs dCBybHBfOQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAg LT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzMwIHJscF8xMAorICAgICAgICAgRmlsdGVy OiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZh dWx0X2RlZmF1bHQgcmxwXzExCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+ PSAxNSkpCisoMjMgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCisgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAg IE9uZS1UaW1lIEZpbHRlcjogZmFsc2UKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAx IGFuZCBhID0gMTUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAor ICAgLT4gIFNlcSBTY2FuIG9uIHJscDIgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9 IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNl cSBTY2FuIG9uIHJscDNhYmNkIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBB TkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHAzZWZnaCBybHBfMworICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChh ID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2VxIFNjYW4gb24g cmxwM251bGx4eSBybHBfNAorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0g MykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxw M19kZWZhdWx0IHJscF81CisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAz KSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKygxMSByb3dzKQorCitSRVNFVCBlbmFi bGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLSBtdWx0aS1jb2x1bW4ga2V5cwogY3JlYXRlIHRh YmxlIG1jM3AgKGEgaW50LCBiIGludCwgYyBpbnQpIHBhcnRpdGlvbiBieSByYW5nZSAoYSwg YWJzKGIpLCBjKTsKIGNyZWF0ZSB0YWJsZSBtYzNwX2RlZmF1bHQgcGFydGl0aW9uIG9mIG1j M3AgZGVmYXVsdDsKQEAgLTIwNzIsMTAgKzIyNTEsMTAgQEAgZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIGhwIHdoZXJlIGEgPSAxIGFuZCBiID0gJ2FiY2RlJzsKIAogZXhw bGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGhwIHdoZXJlIGEgPSAxIGFuZCBiID0g J2FiY2RlJyBhbmQKICAgKGMgPSAyIG9yIGMgPSAzKTsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogIFNlcSBTY2FuIG9uIGhwMiBocAotICAgRmlsdGVyOiAoKGEg PSAxKSBBTkQgKGIgPSAnYWJjZGUnOjp0ZXh0KSBBTkQgKChjID0gMikgT1IgKGMgPSAzKSkp CisgICBGaWx0ZXI6ICgoYyA9IEFOWSAoJ3syLDN9Jzo6aW50ZWdlcltdKSkgQU5EIChhID0g MSkgQU5EIChiID0gJ2FiY2RlJzo6dGV4dCkpCiAoMiByb3dzKQogCiBkcm9wIHRhYmxlIGhw MjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAppbmRleCAxMDkw M2JkYWIwLi42ZjU1YjllM2VjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N0YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0 c19leHQub3V0CkBAIC0xMzIyLDE5ICsxMzIyLDE5IEBAIFNFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMg V0hFUkUKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZS T00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5E IGIgPSAnJzEnJycpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0t LS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cp CiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00g ZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5EIChi ID0gJycxJycgT1IgYiA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0t LS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAg MTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NF TEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEg PSAyIE9SIGEgPSA1MSBPUiBhID0gNTIpIEFORCAoYiA9ICcnMScnIE9SIGIgPSAnJzInJykn KTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAg IDE5NyB8ICAgIDIwMAorICAgICAgIDIwMCB8ICAgIDIwMAogKDEgcm93KQogCiAtLSBPUiBj bGF1c2VzIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGFyZSBpbmNvbXBhdGli bGUKQEAgLTE2NjQsMTkgKzE2NjQsMTkgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0 ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRQog U0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5j dGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoKGEgKiAyKSA9IDIgT1IgKGEgKiAyKSA9IDEw MikgQU5EIHVwcGVyKGIpID0gJycxJycnKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0t LS0tLS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAg IDEwMAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdT RUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0g MiBPUiAoYSAqIDIpID0gMTAyKSBBTkQgKHVwcGVyKGIpID0gJycxJycgT1IgdXBwZXIoYikg PSAnJzInJyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0t LQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQog CiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1 bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBPUiAoYSAqIDIpID0g NCBPUiAoYSAqIDIpID0gMTAyIE9SIChhICogMikgPSAxMDQpIEFORCAodXBwZXIoYikgPSAn JzEnJyBPUiB1cHBlcihiKSA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0t LS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgMTk3IHwgICAgMjAwCisgICAgICAgMjAwIHwg ICAgMjAwCiAoMSByb3cpCiAKIC0tIE9SIGNsYXVzZXMgcmVmZXJlbmNpbmcgZGlmZmVyZW50 IGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lz dmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5k ZXggOWJlN2FjYTJiOC4uMWY5MDI5YjViMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zeXN2aWV3cy5vdXQKQEAgLTEyNCw2ICsxMjQsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGlu ZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxl X21lbW9pemUgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfbWVyZ2Vqb2luICAgICAg ICAgICAgICAgfCBvbgogIGVuYWJsZV9uZXN0bG9vcCAgICAgICAgICAgICAgICB8IG9uCisg ZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uICAgICAgIHwgb24KICBlbmFibGVfcGFyYWxsZWxf YXBwZW5kICAgICAgICAgfCBvbgogIGVuYWJsZV9wYXJhbGxlbF9oYXNoICAgICAgICAgICB8 IG9uCiAgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nICAgICAgIHwgb24KQEAgLTEzNCw3ICsx MzUsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5h bWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAgICAgICAgIHwg b24KICBlbmFibGVfc29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV90aWRz Y2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjMgcm93cykKKygyNCByb3dzKQogCiAtLSBU aGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3JpcHRpb25zIGZvciB2YXJpb3VzIHR5 cGVzLgogc2VsZWN0IHR5cGUsIGNvdW50KCopID4gMCBhcyBvayBGUk9NIHBnX3dhaXRfZXZl bnRzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dAppbmRleCBmMTMzYjVh NGFjLi4yYTA3OWU5OTZiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3RpZHNjYW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5v dXQKQEAgLTQzLDEwICs0MywyNiBAQCBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hF UkUgJygwLDEpJyA9IGN0aWQ7CiAtLSBPUidkIGNsYXVzZXMKIEVYUExBSU4gKENPU1RTIE9G RikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBP UiAnKDAsMSknID0gY3RpZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFRpZCBTY2Fu IG9uIHRpZHNjYW4KKyAgIFRJRCBDb25kOiAoY3RpZCA9IEFOWSAoJ3siKDAsMikiLCIoMCwx KSJ9Jzo6dGlkW10pKQorKDIgcm93cykKKworU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2Fu IFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOworIGN0aWQgIHwgaWQg CistLS0tLS0tKy0tLS0KKyAoMCwxKSB8ICAxCisgKDAsMikgfCAgMgorKDIgcm93cykKKwor U0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9S ICcoMCwxKScgPSBjdGlkOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFRpZCBTY2FuIG9uIHRpZHNjYW4KLSAgIFRJRCBD b25kOiAoKGN0aWQgPSAnKDAsMiknOjp0aWQpIE9SICgnKDAsMSknOjp0aWQgPSBjdGlkKSkK KyAgIFRJRCBDb25kOiAoY3RpZCA9IEFOWSAoJ3siKDAsMikiLCIoMCwxKSJ9Jzo6dGlkW10p KQogKDIgcm93cykKIAogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQg PSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwpAQCAtNTYsNiArNzIsNyBAQCBTRUxFQ1Qg Y3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9 IGN0aWQ7CiAgKDAsMikgfCAgMgogKDIgcm93cykKIAorUkVTRVQgZW5hYmxlX29yX3RyYW5z Zm9ybWF0aW9uOwogLS0gY3RpZCA9IFNjYWxhckFycmF5T3AgLSBpbXBsZW1lbnRlZCBhcyB0 aWRzY2FuCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNj YW4gV0hFUkUgY3RpZCA9IEFOWShBUlJBWVsnKDAsMSknLCAnKDAsMiknXTo6dGlkW10pOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggZDQ5Y2U5ZjMwMC4u NTZmZGUxNWJjMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCkBA IC03MzcsNiArNzM3LDQxIEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiBTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2Fu ZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0 aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisg IFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAz IE9SIHRlbnRob3VzID0gNDIpOworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91 c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91 cyA9IDQyKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91 c2FuZCA9IDk5KTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRy ZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5k cmVkID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkgT1IgNDMgPiB0 aG91c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRl bnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhv dXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3Vz IDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisg IFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5 OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0 MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5 IEFORCB0ZW50aG91cyA9IDIpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9S IHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CitSRVNFVCBlbmFibGVfb3JfdHJh bnNmb3JtYXRpb247CisKIC0tCiAtLSBDaGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBp bmRleCBjb2x1bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qb2luLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCmluZGV4IGM0 YzZjN2I4YmEuLjE2NjM2MDgwNDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2pvaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCkBAIC0xNDA4 LDYgKzE0MDgsMTYgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0ICogZnJvbSB0ZW5r MSBhIGpvaW4gdGVuazEgYiBvbgogICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0g Mikgb3IKICAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRy ZWQgPSA0KTsKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4g KGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAg KGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0g MyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CitleHBsYWluIChjb3N0 cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVu aXF1ZTEgPCAyMCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEgYW5kIGIudW5p cXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQg Yi5odW5kcmVkID0gNCk7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAKIC0t CiAtLSB0ZXN0IHBsYWNlbWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXpl ZCBqb2luIHRyZWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlv bl9wcnVuZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3Fs CmluZGV4IGEwOWIyN2Q4MjAuLjk3MTdjOGM4MzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcGFydGl0aW9uX3BydW5lLnNxbApAQCAtMjEsNiArMjEsMTIgQEAgZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGw7CiBleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBudWxsOwogZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdj JzsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5v dCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsKKworU0VUIGVuYWJsZV9vcl90cmFu c2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxw IHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2Mn KTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwogZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2EnIGFuZCBhIDw+ICdkJzsKIGV4 cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIG5vdCBpbiAoJ2En LCAnZCcpOwpAQCAtOTksNiArMTA1LDIyIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBp CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIGFu ZCBhID0gMzsJLyogZW1wdHkgKi8KIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0gMTUpOwog CisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7CitleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWIn OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMjAg YW5kIGEgPCAyNzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hl cmUgYSA9IDI5OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSBhID49IDI5OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSBhIDwgMSBvciAoYSA+IDIwIGFuZCBhIDwgMjUpOworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOworZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICov CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFu ZCBhID0gMTA7CS8qIG9ubHkgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMs IGluY2x1ZGluZyBkZWZhdWx0ICovCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gcmxwIHdoZXJlIGEgPSAxIGFuZCBhID0gMzsJLyogZW1wdHkgKi8KK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3Ig KGEgPiAxIGFuZCBhID0gMTUpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwor CiAtLSBtdWx0aS1jb2x1bW4ga2V5cwogY3JlYXRlIHRhYmxlIG1jM3AgKGEgaW50LCBiIGlu dCwgYyBpbnQpIHBhcnRpdGlvbiBieSByYW5nZSAoYSwgYWJzKGIpLCBjKTsKIGNyZWF0ZSB0 YWJsZSBtYzNwX2RlZmF1bHQgcGFydGl0aW9uIG9mIG1jM3AgZGVmYXVsdDsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvdGlkc2Nhbi5zcWwKaW5kZXggMzEzZTBmYjliNi4uMDQ5OWJlZGI5ZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwKQEAgLTIyLDYgKzIyLDEyIEBAIEVYUExBSU4gKENP U1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygw LDIpJyBPUiAnKDAsMSknID0gY3RpZDsKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBX SEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKIAorU0VUIGVuYWJsZV9v cl90cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGN0 aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBj dGlkOworU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMikn IE9SICcoMCwxKScgPSBjdGlkOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwor CiAtLSBjdGlkID0gU2NhbGFyQXJyYXlPcCAtIGltcGxlbWVudGVkIGFzIHRpZHNjYW4KIEVY UExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBj dGlkID0gQU5ZKEFSUkFZWycoMCwxKScsICcoMCwyKSddOjp0aWRbXSk7CmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CmluZGV4IGNjMzYxMWU2MDYuLmY0YjZmZWU4OTMgMTAwNjQ0Ci0t LSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xNjU2LDYgKzE2NTYsOCBAQCBOdW1lcmljVmFy CiBPTV91aW50MzIKIE9QCiBPU0FQZXJHcm91cFN0YXRlCitPckNsYXVzZUdyb3VwRW50cnkK K09yQ2xhdXNlR3JvdXBLZXkKIE9TQVBlclF1ZXJ5U3RhdGUKIE9TSW5mbwogT1NTTENpcGhl cgotLSAKMi4zNC4xCgo= --------------MUM50ReAJht5A2gAd7uJicWK--