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 1rbz7n-000IpW-9a for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Feb 2024 08:35:44 +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 1rbz7l-00E4FG-To for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Feb 2024 08:35:41 +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 1rbz7k-00E4F8-OW for pgsql-hackers@lists.postgresql.org; Mon, 19 Feb 2024 08:35:41 +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 1rbz7d-007Ul4-Ek for pgsql-hackers@postgresql.org; Mon, 19 Feb 2024 08:35:39 +0000 Received: from [172.20.10.3] (ppp-49-237-14-35.revip6.asianet.co.th [49.237.14.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id DBAB6E20E49; Mon, 19 Feb 2024 11:35:24 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1708331729; bh=Rqprn/gIBqm31hFIXKfd802ccTucHTr7AKI8m0Fu7Q8=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=EqhD9SgsZx16aRE3TGvhEOWSOqJydb96P+lIwcv/sNDV5R8Nm9TM4akSM7mlnbSe7 HO2Ms1o6Yug0aFDH/OhwiyAhvQ1YhZDHyBMg+bPfA9VldK/HDVPAg7/IzBKQojRfGT U01O80+ni7fBl025pwl7MOfnart8cS7K6p/+uS7ZKexjCE1f3uISG0ucTErdXnhOXK rVpv8qG2vDD7CKIz35ZJMetLgpMyqnehhto/jYcDBUCPBnfbSiEkDSLQEI/yeE89+9 trc3XNJOcOFHsqFdE3jJPNA3JrOMDTr/b/icj8hySzekaN17cXQNt0qPsFgQ2DEvPK TBAuceambL/dQ== Content-Type: multipart/mixed; boundary="------------wcPrMQB6xILJsOr0I6P5AMAL" Message-ID: Date: Mon, 19 Feb 2024 15:35:19 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes Content-Language: en-US To: jian he Cc: Alena Rybakina , Alexander Korotkov , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Ranier Vilela , Tomas Vondra , Peter Eisentraut References: <567ED6CA.2040504@sigaev.ru> <32d23d97-d07f-4d44-9933-ba3295fb3ed8@postgrespro.ru> <7e11e27b-7ab9-4d59-af0a-a921861a9206@postgrespro.ru> <13ad923a-33df-4b44-9e00-c9323cd4c37d@postgrespro.ru> <1cf6b382-6e27-4268-9f2a-54ada66eb2eb@postgrespro.ru> <5f119769-ab11-4807-abcc-71d5dd914ea0@postgrespro.ru> From: Andrei Lepikhov Organization: Postgres Professional In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------wcPrMQB6xILJsOr0I6P5AMAL Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 16/2/2024 19:54, jian he wrote: > After setting these parameters, overall enable_or_transformation ON is > performance better. > sorry for the noise. Don't worry, at least we know a weak point of partial paths estimation. > so now I didn't find any corner case where enable_or_transformation is > ON peforms worse than when it's OFF. > > +typedef struct OrClauseGroupEntry > +{ > + OrClauseGroupKey key; > + > + Node *node; > + List *consts; > + Oid scalar_type; > + List *exprs; > +} OrClauseGroupEntry; > > I found that the field `scalar_type` was never used. Thanks, fixed. In attachment - v17 for both patches. As I see it, the only general explanation of the idea is not addressed. I'm not sure how deeply we should explain it. -- regards, Andrei Lepikhov Postgres Professional --------------wcPrMQB6xILJsOr0I6P5AMAL Content-Type: text/plain; charset=UTF-8; name="v17-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Disposition: attachment; filename="v17-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSAzYTNiNmFhMzYzMjBhMDZiNjRmMmY2MDhlMzUyNjI1NWU1M2VkNjU1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogRnJpLCAyIEZlYiAyMDI0IDIyOjAxOjA5ICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIFRyYW5zZm9ybSBPUiBjbGF1c2UgdG8gQU5ZIGV4cHJlc3Npb25z LgoKUmVwbGFjZSAoZXhwciBvcCBDMSkgT1IgKGV4cHIgb3AgQzIpIC4uLiB3aXRoIGV4cHIg b3AgQU5ZKEMxLCBDMiwgLi4uKSBvbiB0aGUKcHJlbGltaW5hcnkgc3RhZ2Ugb2Ygb3B0aW1p emF0aW9uIHdoZW4gd2UgYXJlIHN0aWxsIHdvcmtpbmcgd2l0aCB0aGUgdHJlZQpleHByZXNz aW9uLgpIZXJlIEM8WD4gaXMgYSBjb25zdGFudCBleHByZXNzaW9uLCAnZXhwcicgaXMgbm9u LWNvbnN0YW50IGV4cHJlc3Npb24sICdvcCcgaXMKYW4gb3BlcmF0b3Igd2hpY2ggcmV0dXJu cyBib29sZWFuIHJlc3VsdCBhbmQgaGFzIGEgY29tbXV0ZXIgKGZvciB0aGUgY2FzZSBvZgpy ZXZlcnNlIG9yZGVyIG9mIGNvbnN0YW50IGFuZCBub24tY29uc3RhbnQgcGFydHMgb2YgdGhl IGV4cHJlc3Npb24sCmxpa2UgJ0NYIG9wIGV4cHInKS4KU29tZXRpbWVzIGl0IGNhbiBsZWFk IHRvIG5vdCBvcHRpbWFsIHBsYW4uIEJ1dCB3ZSB0aGluayBpdCBpcyBiZXR0ZXIgdG8gaGF2 ZQphcnJheSBvZiBlbGVtZW50cyBpbnN0ZWFkIG9mIGEgbG90IG9mIE9SIGNsYXVzZXMuIEhl cmUgaXMgYSByb29tIGZvciBmdXJ0aGVyCm9wdGltaXphdGlvbnMgb24gZGVjb21wb3Npbmcg dGhhdCBhcnJheSBpbnRvIG1vcmUgb3B0aW1hbCBwYXJ0cy4KQXV0aG9yczogQWxlbmEgUnli YWtpbmEgPGxlbmEucmliYWNraW5hQHlhbmRleC5ydT4sIEFuZHJleSBMZXBpa2hvdiA8YS5s ZXBpa2hvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IFBldGVyIEdlb2doZWdhbiA8 cGdAYm93dC5pZT4sIFJhbmllciBWaWxlbGEgPHJhbmllci52ZkBnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPiwgUm9i ZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IGppYW4gaGUg PGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KLS0tCiAuLi4vcG9zdGdyZXNfZmR3L2V4 cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAgMTYgKy0KIHNyYy9iYWNrZW5kL25vZGVz L3F1ZXJ5anVtYmxlZnVuY3MuYyAgICAgICAgICB8ICAyNyArKwogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgMzI2ICsrKysrKysrKysrKysrKysr LQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDEx ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAg MSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAg IDYgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggICAgICAgICAgICAg fCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0ICAg IHwgMTU2ICsrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91 dCAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0 ICAgICAgICAgICAgfCAgNjIgKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fcHJ1bmUub3V0IHwgMjE5ICsrKysrKysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICA0ICstCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgICAgICAgfCAgMTIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90aWRzY2FuLm91dCAgICAgICAgIHwgIDIzICstCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgICAgfCAgMzUgKysKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsICAgICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsICAgICAgfCAgMjIgKysKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsICAgICAgICAgICAgICB8ICAgNiArCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIgKwogMjEg ZmlsZXMgY2hhbmdlZCwgODc1IGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0Cmlu ZGV4IGMzNTVlOGYzZjcuLjA1MjNiYmQ4ZjcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAg U0VMRUNUIHQxLmMxLCB0MS5jMiwgdDIuYzEsIHQyLmMyIEZST00gZnQ0IHQxIExFRlQgSk9J TiAoU0VMRUNUICogRlJPTSBmdDUgV0hFUkUKICBGb3JlaWduIFNjYW4KICAgIE91dHB1dDog dDEuYzEsIHQxLmMyLCBmdDUuYzEsIGZ0NS5jMgogICAgUmVsYXRpb25zOiAocHVibGljLmZ0 NCB0MSkgTEVGVCBKT0lOIChwdWJsaWMuZnQ1KQotICAgUmVtb3RlIFNRTDogU0VMRUNUIHIx LmMxLCByMS5jMiwgcjQuYzEsIHI0LmMyIEZST00gKCJTIDEiLiJUIDMiIHIxIExFRlQgSk9J TiAiUyAxIi4iVCA0IiByNCBPTiAoKChyMS5jMSA9IHI0LmMxKSkgQU5EICgocjQuYzEgPCAx MCkpKSkgV0hFUkUgKCgocjQuYzEgPCAxMCkgT1IgKHI0LmMxIElTIE5VTEwpKSkgQU5EICgo cjEuYzEgPCAxMCkpCisgICBSZW1vdGUgU1FMOiBTRUxFQ1QgcjEuYzEsIHIxLmMyLCByNC5j MSwgcjQuYzIgRlJPTSAoIlMgMSIuIlQgMyIgcjEgTEVGVCBKT0lOICJTIDEiLiJUIDQiIHI0 IE9OICgoKHIxLmMxID0gcjQuYzEpKSBBTkQgKChyNC5jMSA8IDEwKSkpKSBXSEVSRSAoKChy NC5jMSBJUyBOVUxMKSBPUiAocjQuYzEgPCAxMCkpKSBBTkQgKChyMS5jMSA8IDEwKSkKICg0 IHJvd3MpCiAKIFNFTEVDVCB0MS5jMSwgdDEuYzIsIHQyLmMxLCB0Mi5jMiBGUk9NIGZ0NCB0 MSBMRUZUIEpPSU4gKFNFTEVDVCAqIEZST00gZnQ1IFdIRVJFIGMxIDwgMTApIHQyIE9OICh0 MS5jMSA9IHQyLmMxKQpAQCAtMzEwNSw3ICszMTA1LDcgQEAgc2VsZWN0IGFycmF5X2FnZyhk aXN0aW5jdCAodDEuYzEpJTUpIGZyb20gZnQ0IHQxIGZ1bGwgam9pbiBmdDUgdDIgb24gKHQx LmMxID0gdDIKICBGb3JlaWduIFNjYW4KICAgIE91dHB1dDogKGFycmF5X2FnZyhESVNUSU5D VCAodDEuYzEgJSA1KSkpLCAoKHQyLmMxICUgMykpCiAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0 ZSBvbiAoKHB1YmxpYy5mdDQgdDEpIEZVTEwgSk9JTiAocHVibGljLmZ0NSB0MikpCi0gICBS ZW1vdGUgU1FMOiBTRUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpKSwgKHIy LmMxICUgMykgRlJPTSAoIlMgMSIuIlQgMyIgcjEgRlVMTCBKT0lOICJTIDEiLiJUIDQiIHIy IE9OICgoKHIxLmMxID0gcjIuYzEpKSkpIFdIRVJFICgoKHIxLmMxIDwgMjApIE9SICgocjEu YzEgSVMgTlVMTCkgQU5EIChyMi5jMSA8IDUpKSkpIEdST1VQIEJZIDIgT1JERVIgQlkgYXJy YXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpKSBBU0MgTlVMTFMgTEFTVAorICAgUmVtb3Rl IFNRTDogU0VMRUNUIGFycmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSksIChyMi5jMSAl IDMpIEZST00gKCJTIDEiLiJUIDMiIHIxIEZVTEwgSk9JTiAiUyAxIi4iVCA0IiByMiBPTiAo KChyMS5jMSA9IHIyLmMxKSkpKSBXSEVSRSAoKCgocjEuYzEgSVMgTlVMTCkgQU5EIChyMi5j MSA8IDUpKSBPUiAocjEuYzEgPCAyMCkpKSBHUk9VUCBCWSAyIE9SREVSIEJZIGFycmF5X2Fn ZyhESVNUSU5DVCAocjEuYzEgJSA1KSkgQVNDIE5VTExTIExBU1QKICg0IHJvd3MpCiAKIHNl bGVjdCBhcnJheV9hZ2coZGlzdGluY3QgKHQxLmMxKSU1KSBmcm9tIGZ0NCB0MSBmdWxsIGpv aW4gZnQ1IHQyIG9uICh0MS5jMSA9IHQyLmMxKSB3aGVyZSB0MS5jMSA8IDIwIG9yICh0MS5j MSBpcyBudWxsIGFuZCB0Mi5jMSA8IDUpIGdyb3VwIGJ5ICh0Mi5jMSklMyBvcmRlciBieSAx OwpAQCAtMzEyMyw3ICszMTIzLDcgQEAgc2VsZWN0IGFycmF5X2FnZyhkaXN0aW5jdCAodDEu YzEpJTUgb3JkZXIgYnkgKHQxLmMxKSU1KSBmcm9tIGZ0NCB0MSBmdWxsIGpvaW4gZnQKICBG b3JlaWduIFNjYW4KICAgIE91dHB1dDogKGFycmF5X2FnZyhESVNUSU5DVCAodDEuYzEgJSA1 KSBPUkRFUiBCWSAodDEuYzEgJSA1KSkpLCAoKHQyLmMxICUgMykpCiAgICBSZWxhdGlvbnM6 IEFnZ3JlZ2F0ZSBvbiAoKHB1YmxpYy5mdDQgdDEpIEZVTEwgSk9JTiAocHVibGljLmZ0NSB0 MikpCi0gICBSZW1vdGUgU1FMOiBTRUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAl IDUpIE9SREVSIEJZICgocjEuYzEgJSA1KSkgQVNDIE5VTExTIExBU1QpLCAocjIuYzEgJSAz KSBGUk9NICgiUyAxIi4iVCAzIiByMSBGVUxMIEpPSU4gIlMgMSIuIlQgNCIgcjIgT04gKCgo cjEuYzEgPSByMi5jMSkpKSkgV0hFUkUgKCgocjEuYzEgPCAyMCkgT1IgKChyMS5jMSBJUyBO VUxMKSBBTkQgKHIyLmMxIDwgNSkpKSkgR1JPVVAgQlkgMiBPUkRFUiBCWSBhcnJheV9hZ2co RElTVElOQ1QgKHIxLmMxICUgNSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBBU0MgTlVMTFMg TEFTVCkgQVNDIE5VTExTIExBU1QKKyAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhcnJheV9hZ2co RElTVElOQ1QgKHIxLmMxICUgNSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBBU0MgTlVMTFMg TEFTVCksIChyMi5jMSAlIDMpIEZST00gKCJTIDEiLiJUIDMiIHIxIEZVTEwgSk9JTiAiUyAx Ii4iVCA0IiByMiBPTiAoKChyMS5jMSA9IHIyLmMxKSkpKSBXSEVSRSAoKCgocjEuYzEgSVMg TlVMTCkgQU5EIChyMi5jMSA8IDUpKSBPUiAocjEuYzEgPCAyMCkpKSBHUk9VUCBCWSAyIE9S REVSIEJZIGFycmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMx ICUgNSkpIEFTQyBOVUxMUyBMQVNUKSBBU0MgTlVMTFMgTEFTVAogKDQgcm93cykKIAogc2Vs ZWN0IGFycmF5X2FnZyhkaXN0aW5jdCAodDEuYzEpJTUgb3JkZXIgYnkgKHQxLmMxKSU1KSBm cm9tIGZ0NCB0MSBmdWxsIGpvaW4gZnQ1IHQyIG9uICh0MS5jMSA9IHQyLmMxKSB3aGVyZSB0 MS5jMSA8IDIwIG9yICh0MS5jMSBpcyBudWxsIGFuZCB0Mi5jMSA8IDUpIGdyb3VwIGJ5ICh0 Mi5jMSklMyBvcmRlciBieSAxOwpAQCAtMzE0MCw3ICszMTQwLDcgQEAgc2VsZWN0IGFycmF5 X2FnZyhkaXN0aW5jdCAodDEuYzEpJTUgb3JkZXIgYnkgKHQxLmMxKSU1IGRlc2MgbnVsbHMg bGFzdCkgZnJvbSBmdDQKICBGb3JlaWduIFNjYW4KICAgIE91dHB1dDogKGFycmF5X2FnZyhE SVNUSU5DVCAodDEuYzEgJSA1KSBPUkRFUiBCWSAodDEuYzEgJSA1KSBERVNDIE5VTExTIExB U1QpKSwgKCh0Mi5jMSAlIDMpKQogICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKChwdWJs aWMuZnQ0IHQxKSBGVUxMIEpPSU4gKHB1YmxpYy5mdDUgdDIpKQotICAgUmVtb3RlIFNRTDog U0VMRUNUIGFycmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMx ICUgNSkpIERFU0MgTlVMTFMgTEFTVCksIChyMi5jMSAlIDMpIEZST00gKCJTIDEiLiJUIDMi IHIxIEZVTEwgSk9JTiAiUyAxIi4iVCA0IiByMiBPTiAoKChyMS5jMSA9IHIyLmMxKSkpKSBX SEVSRSAoKChyMS5jMSA8IDIwKSBPUiAoKHIxLmMxIElTIE5VTEwpIEFORCAocjIuYzEgPCA1 KSkpKSBHUk9VUCBCWSAyIE9SREVSIEJZIGFycmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1 KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIERFU0MgTlVMTFMgTEFTVCkgQVNDIE5VTExTIExB U1QKKyAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhcnJheV9hZ2coRElTVElOQ1QgKHIxLmMxICUg NSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBERVNDIE5VTExTIExBU1QpLCAocjIuYzEgJSAz KSBGUk9NICgiUyAxIi4iVCAzIiByMSBGVUxMIEpPSU4gIlMgMSIuIlQgNCIgcjIgT04gKCgo cjEuYzEgPSByMi5jMSkpKSkgV0hFUkUgKCgoKHIxLmMxIElTIE5VTEwpIEFORCAocjIuYzEg PCA1KSkgT1IgKHIxLmMxIDwgMjApKSkgR1JPVVAgQlkgMiBPUkRFUiBCWSBhcnJheV9hZ2co RElTVElOQ1QgKHIxLmMxICUgNSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBERVNDIE5VTExT IExBU1QpIEFTQyBOVUxMUyBMQVNUCiAoNCByb3dzKQogCiBzZWxlY3QgYXJyYXlfYWdnKGRp c3RpbmN0ICh0MS5jMSklNSBvcmRlciBieSAodDEuYzEpJTUgZGVzYyBudWxscyBsYXN0KSBm cm9tIGZ0NCB0MSBmdWxsIGpvaW4gZnQ1IHQyIG9uICh0MS5jMSA9IHQyLmMxKSB3aGVyZSB0 MS5jMSA8IDIwIG9yICh0MS5jMSBpcyBudWxsIGFuZCB0Mi5jMSA8IDUpIGdyb3VwIGJ5ICh0 Mi5jMSklMyBvcmRlciBieSAxOwpAQCAtODc5NywxOCArODc5NywxOCBAQCBpbnNlcnQgaW50 byB1dHJ0ZXN0IHZhbHVlcyAoMiwgJ3F1eCcpOwogLS0gQ2hlY2sgY2FzZSB3aGVyZSB0aGUg Zm9yZWlnbiBwYXJ0aXRpb24gaXMgYSBzdWJwbGFuIHRhcmdldCByZWwKIGV4cGxhaW4gKHZl cmJvc2UsIGNvc3RzIG9mZikKIHVwZGF0ZSB1dHJ0ZXN0IHNldCBhID0gMSB3aGVyZSBhID0g MSBvciBhID0gMiByZXR1cm5pbmcgKjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogIFVwZGF0ZSBvbiBwdWJsaWMudXRydGVzdAogICAgT3V0 cHV0OiB1dHJ0ZXN0XzEuYSwgdXRydGVzdF8xLmIKICAgIEZvcmVpZ24gVXBkYXRlIG9uIHB1 YmxpYy5yZW1wIHV0cnRlc3RfMQogICAgVXBkYXRlIG9uIHB1YmxpYy5sb2NwIHV0cnRlc3Rf MgogICAgLT4gIEFwcGVuZAogICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRlIG9uIHB1Ymxp Yy5yZW1wIHV0cnRlc3RfMQotICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogVVBEQVRFIHB1 YmxpYy5sb2N0IFNFVCBhID0gMSBXSEVSRSAoKChhID0gMSkgT1IgKGEgPSAyKSkpIFJFVFVS TklORyBhLCBiCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVibGljLmxv Y3QgU0VUIGEgPSAxIFdIRVJFICgoYSA9IEFOWSAoJ3sxLDJ9Jzo6aW50ZWdlcltdKSkpIFJF VFVSTklORyBhLCBiCiAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmxvY3AgdXRy dGVzdF8yCiAgICAgICAgICAgICAgICBPdXRwdXQ6IDEsIHV0cnRlc3RfMi50YWJsZW9pZCwg dXRydGVzdF8yLmN0aWQsIE5VTEw6OnJlY29yZAotICAgICAgICAgICAgICAgRmlsdGVyOiAo KHV0cnRlc3RfMi5hID0gMSkgT1IgKHV0cnRlc3RfMi5hID0gMikpCisgICAgICAgICAgICAg ICBGaWx0ZXI6ICh1dHJ0ZXN0XzIuYSA9IEFOWSAoJ3sxLDJ9Jzo6aW50ZWdlcltdKSkKICgx MCByb3dzKQogCiAtLSBUaGUgbmV3IHZhbHVlcyBhcmUgY29uY2F0ZW5hdGVkIHdpdGggJyB0 cmlnZ2VyZWQgIScKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxl ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYwppbmRleCA4 MmY3MjViYWFhLi5iMjAzNzQ2YmU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9x dWVyeWp1bWJsZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVm dW5jcy5jCkBAIC0xNDEsNiArMTQxLDMzIEBAIEp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSkK IAlyZXR1cm4ganN0YXRlOwogfQogCitKdW1ibGVTdGF0ZSAqCitKdW1ibGVFeHByKEV4cHIg KmV4cHIsIHVpbnQ2NCAqcXVlcnlJZCkKK3sKKwlKdW1ibGVTdGF0ZSAqanN0YXRlID0gTlVM TDsKKworCUFzc2VydChxdWVyeUlkICE9IE5VTEwpOworCisJanN0YXRlID0gKEp1bWJsZVN0 YXRlICopIHBhbGxvYyhzaXplb2YoSnVtYmxlU3RhdGUpKTsKKworCS8qIFNldCB1cCB3b3Jr c3BhY2UgZm9yIHF1ZXJ5IGp1bWJsaW5nICovCisJanN0YXRlLT5qdW1ibGUgPSAodW5zaWdu ZWQgY2hhciAqKSBwYWxsb2MoSlVNQkxFX1NJWkUpOworCWpzdGF0ZS0+anVtYmxlX2xlbiA9 IDA7CisJanN0YXRlLT5jbG9jYXRpb25zX2J1Zl9zaXplID0gMzI7CisJanN0YXRlLT5jbG9j YXRpb25zID0gKExvY2F0aW9uTGVuICopCisJCXBhbGxvYyhqc3RhdGUtPmNsb2NhdGlvbnNf YnVmX3NpemUgKiBzaXplb2YoTG9jYXRpb25MZW4pKTsKKwlqc3RhdGUtPmNsb2NhdGlvbnNf Y291bnQgPSAwOworCWpzdGF0ZS0+aGlnaGVzdF9leHRlcm5fcGFyYW1faWQgPSAwOworCisJ LyogQ29tcHV0ZSBxdWVyeSBJRCAqLworCV9qdW1ibGVOb2RlKGpzdGF0ZSwgKE5vZGUgKikg ZXhwcik7CisJKnF1ZXJ5SWQgPSBEYXR1bUdldFVJbnQ2NChoYXNoX2FueV9leHRlbmRlZChq c3RhdGUtPmp1bWJsZSwKKwkJCQkJCQkJCQkJCWpzdGF0ZS0+anVtYmxlX2xlbiwKKwkJCQkJ CQkJCQkJCTApKTsKKworCXJldHVybiBqc3RhdGU7Cit9CisKIC8qCiAgKiBFbmFibGVzIHF1 ZXJ5IGlkZW50aWZpZXIgY29tcHV0YXRpb24uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMKaW5kZXggOTMwMGM3YjlhYi4uMjc5NzEzZDVhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jCkBAIC0xNiwxMiArMTYsMTQgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgog I2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVt YmxlLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInBh cnNlci9hbmFseXplLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2FnZy5oIgpAQCAtMzgs MTEgKzQwLDEzIEBACiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxz L2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNs dWRlICJ1dGlscy94bWwuaCIKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGJvb2wJCVRyYW5z Zm9ybV9udWxsX2VxdWFscyA9IGZhbHNlOworYm9vbAkJZW5hYmxlX29yX3RyYW5zZm9ybWF0 aW9uID0gdHJ1ZTsKIAogCiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRXhwclJlY3Vyc2UoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKTsKQEAgLTk5LDYgKzEwMywzMjYgQEAgc3Rh dGljIEV4cHIgKm1ha2VfZGlzdGluY3Rfb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpv cG5hbWUsCiBzdGF0aWMgTm9kZSAqbWFrZV9udWxsdGVzdF9mcm9tX2Rpc3RpbmN0KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgQV9FeHByICpkaXN0aW5jdGEsIE5vZGUgKmFy Zyk7CiAKK3R5cGVkZWYgc3RydWN0IE9yQ2xhdXNlR3JvdXBLZXkKK3sKKwlFeHByICAgKmV4 cHI7IC8qIFBvaW50ZXIgdG8gdGhlIGV4cHJlc3Npb24gdHJlZSB3aGljaCBoYXMgYmVlbiBh IHNvdXJjZSBmb3IKKwkJCQkJdGhlIGhhc2hrZXkgdmFsdWUgKi8KKwlPaWQJCW9wbm87CisJ T2lkCQlleHBydHlwZTsKK30gT3JDbGF1c2VHcm91cEtleTsKKwordHlwZWRlZiBzdHJ1Y3Qg T3JDbGF1c2VHcm91cEVudHJ5Cit7CisJT3JDbGF1c2VHcm91cEtleSBrZXk7CisKKwlOb2Rl CQkgICAqbm9kZTsKKwlMaXN0CQkgICAqY29uc3RzOworCUxpc3QgCQkgICAqZXhwcnM7Cit9 IE9yQ2xhdXNlR3JvdXBFbnRyeTsKKworLyoKKyAqIEhhc2ggZnVuY3Rpb24gdG8gZmluZCBj YW5kaWRhdGUgY2xhdXNlcy4KKyAqLworc3RhdGljIHVpbnQzMgorb3JjbGF1c2VfaGFzaChj b25zdCB2b2lkICpkYXRhLCBTaXplIGtleXNpemUpCit7CisJT3JDbGF1c2VHcm91cEtleSAg ICprZXkgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhOworCXVpbnQ2NAkJCQloYXNoOwor CisJQXNzZXJ0KGtleXNpemUgPT0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBLZXkpKTsKKworCSh2 b2lkKSBKdW1ibGVFeHByKGtleS0+ZXhwciwgJmhhc2gpOworCWhhc2ggKz0gKCh1aW50NjQp IGtleS0+b3BubyArICh1aW50NjQpIGtleS0+ZXhwcnR5cGUpOworCXJldHVybiAodWludDMy KSAoaGFzaCAlIFVJTlQzMl9NQVgpOworfQorCitzdGF0aWMgdm9pZCAqCitvcmNsYXVzZV9r ZXljb3B5KHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgU2l6ZSBrZXlzaXplKQorewor CU9yQ2xhdXNlR3JvdXBLZXkgKnNyY19rZXkgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBzcmM7 CisJT3JDbGF1c2VHcm91cEtleSAqZHN0X2tleSA9IChPckNsYXVzZUdyb3VwS2V5ICopIGRl c3Q7CisKKwlBc3NlcnQoc2l6ZW9mKE9yQ2xhdXNlR3JvdXBLZXkpID09IGtleXNpemUpOwor CisJZHN0X2tleS0+ZXhwciA9IHNyY19rZXktPmV4cHI7CisJZHN0X2tleS0+b3BubyA9IHNy Y19rZXktPm9wbm87CisJZHN0X2tleS0+ZXhwcnR5cGUgPSBzcmNfa2V5LT5leHBydHlwZTsK KwlyZXR1cm4gZHN0X2tleTsKK30KKworLyoKKyAqIER5bmFoYXNoIG1hdGNoIGZ1bmN0aW9u IHRvIHVzZSBpbiBndWNfaGFzaHRhYgorICovCitzdGF0aWMgaW50CitvcmNsYXVzZV9tYXRj aChjb25zdCB2b2lkICpkYXRhMSwgY29uc3Qgdm9pZCAqZGF0YTIsIFNpemUga2V5c2l6ZSkK K3sKKwlPckNsYXVzZUdyb3VwS2V5ICAgKmtleTEgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBk YXRhMTsKKwlPckNsYXVzZUdyb3VwS2V5ICAgKmtleTIgPSAoT3JDbGF1c2VHcm91cEtleSAq KSBkYXRhMjsKKworCUFzc2VydChzaXplb2YoT3JDbGF1c2VHcm91cEtleSkgPT0ga2V5c2l6 ZSk7CisKKwlpZiAoa2V5MS0+b3BubyA9PSBrZXkyLT5vcG5vICYmIGtleTEtPmV4cHJ0eXBl ID09IGtleTItPmV4cHJ0eXBlICYmCisJCWVxdWFsKGtleTEtPmV4cHIsIGtleTItPmV4cHIp KQorCQlyZXR1cm4gMDsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgTm9kZSAqCit0cmFu c2Zvcm1Cb29sRXhwck9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQm9vbEV4cHIgKmV4cHIpCit7 CisJTGlzdAkJCQkgICAqb3JfbGlzdCA9IE5JTDsKKwlMaXN0CQkJCSAgICplbnRyaWVzID0g TklMOworCUxpc3RDZWxsCQkJICAgKmxjOworCUhBU0hDVEwJCQkJCWluZm87CisJSFRBQiAJ CQkJICAgKm9yX2dyb3VwX2h0YWIgPSBOVUxMOworCWludCAJCQkJCWxlbl9vcnMgPSBsaXN0 X2xlbmd0aChleHByLT5hcmdzKTsKKwlPckNsYXVzZUdyb3VwRW50cnkJICAgKmVudHJ5ID0g TlVMTDsKKworCS8qIElmIHRoaXMgaXMgbm90IGFuICdPUicgZXhwcmVzc2lvbiwgc2tpcCB0 aGUgdHJhbnNmb3JtYXRpb24gKi8KKwlpZiAoIWVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiB8 fCBleHByLT5ib29sb3AgIT0gT1JfRVhQUiB8fCBsZW5fb3JzIDwgMikKKwkJcmV0dXJuIHRy YW5zZm9ybUJvb2xFeHByKHBzdGF0ZSwgKEJvb2xFeHByICopIGV4cHIpOworCisJTWVtU2V0 KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOworCWluZm8ua2V5c2l6ZSA9IHNpemVvZihPckNs YXVzZUdyb3VwS2V5KTsKKwlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihPckNsYXVzZUdyb3Vw RW50cnkpOworCWluZm8uaGFzaCA9IG9yY2xhdXNlX2hhc2g7CisJaW5mby5rZXljb3B5ID0g b3JjbGF1c2Vfa2V5Y29weTsKKwlpbmZvLm1hdGNoID0gb3JjbGF1c2VfbWF0Y2g7CisJb3Jf Z3JvdXBfaHRhYiA9IGhhc2hfY3JlYXRlKCJPUiBHcm91cHMiLAorCQkJCQkJCQlsZW5fb3Jz LAorCQkJCQkJCQkmaW5mbywKKwkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8 IEhBU0hfQ09NUEFSRSB8IEhBU0hfS0VZQ09QWSk7CisKKwlmb3JlYWNoKGxjLCBleHByLT5h cmdzKQorCXsKKwkJTm9kZQkJCQkgICAqYXJnID0gbGZpcnN0KGxjKTsKKwkJTm9kZQkJCQkg ICAqb3JxdWFsOworCQlOb2RlCQkJCSAgICpjb25zdF9leHByOworCQlOb2RlCQkJCSAgICpu Y29uc3RfZXhwcjsKKwkJT3JDbGF1c2VHcm91cEtleQkJaGFzaGtleTsKKwkJYm9vbAkJCQkJ Zm91bmQ7CisJCU9pZAkJCQkJCW9wbm87CisJCU9pZAkJCQkJCWV4cHJ0eXBlOworCQlOb2Rl CQkJCSAgICpsZWZ0b3AsICpyaWdodG9wOworCisJCS8qIEF0IGZpcnN0LCB0cmFuc2Zvcm0g dGhlIGFyZyBhbmQgZXZhbHVhdGUgY29uc3RhbnQgZXhwcmVzc2lvbnMuICovCisJCW9ycXVh bCA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgKE5vZGUgKikgYXJnKTsKKwkJb3Jx dWFsID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCBvcnF1YWwsICJPUiIpOworCisJCWlm ICghSXNBKG9ycXVhbCwgT3BFeHByKSkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3Jf bGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJb3BubyA9ICgoT3BFeHBy ICopIG9ycXVhbCktPm9wbm87CisJCWlmIChnZXRfb3BfcmV0dHlwZShvcG5vKSAhPSBCT09M T0lEKQorCQl7CisJCQkvKiBPbmx5IG9wZXJhdG9yIHJldHVybmluZyBib29sZWFuIHN1aXRz IE9SIC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiAqLworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3Jf bGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogRGV0ZWN0 IHRoZSBjb25zdGFudCBzaWRlIG9mIHRoZSBjbGF1c2UuIFJlY2FsbCBub24tY29uc3RhbnQK KwkJICogZXhwcmVzc2lvbiBjYW4gYmUgbWFkZSBub3Qgb25seSB3aXRoIFZhcnMsIGJ1dCBh bHNvIHdpdGggUGFyYW1zLAorCQkgKiB3aGljaCBpcyBub3QgYm9uZGVkIHdpdGggYW55IHJl bGF0aW9uLiBUaHVzLCB3ZSBkZXRlY3QgdGhlIGNvbnN0CisJCSAqIHNpZGUgLSBpZiBhbm90 aGVyIHNpZGUgaXMgY29uc3RhbnQgdG9vLCB0aGUgb3JxdWFsIGNvdWxkbid0IGJlCisJCSAq IGFuIE9wRXhwci4KKwkJICogR2V0IHBvaW50ZXJzIHRvIGNvbnN0YW50IGFuZCBleHByZXNz aW9uIHNpZGVzIG9mIHRoZSBxdWFsLgorCQkgKi8KKwkJbGVmdG9wID0gZ2V0X2xlZnRvcChv cnF1YWwpOworCQlpZiAoSXNBKGxlZnRvcCwgUmVsYWJlbFR5cGUpKQorCQkJbGVmdG9wID0g KE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSBsZWZ0b3ApLT5hcmc7CisJCXJpZ2h0b3AgPSBn ZXRfcmlnaHRvcChvcnF1YWwpOworCQlpZiAoSXNBKHJpZ2h0b3AsIFJlbGFiZWxUeXBlKSkK KwkJCXJpZ2h0b3AgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0b3ApLT5hcmc7 CisKKwkJaWYgKElzQShsZWZ0b3AsIENvbnN0KSkKKwkJeworCQkJb3BubyA9IGdldF9jb21t dXRhdG9yKG9wbm8pOworCisJCQlpZiAoIU9pZElzVmFsaWQob3BubykpCisJCQl7CisJCQkJ LyogY29tbXV0YXRvciBkb2Vzbid0IGV4aXN0LCB3ZSBjYW4ndCByZXZlcnNlIHRoZSBvcmRl ciAqLworCQkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsIG9ycXVhbCk7CisJCQkJY29u dGludWU7CisJCQl9CisKKwkJCW5jb25zdF9leHByID0gZ2V0X3JpZ2h0b3Aob3JxdWFsKTsK KwkJCWNvbnN0X2V4cHIgPSBnZXRfbGVmdG9wKG9ycXVhbCk7CisJCX0KKwkJZWxzZSBpZiAo SXNBKHJpZ2h0b3AsIENvbnN0KSkKKwkJeworCQkJY29uc3RfZXhwciA9IGdldF9yaWdodG9w KG9ycXVhbCk7CisJCQluY29uc3RfZXhwciA9IGdldF9sZWZ0b3Aob3JxdWFsKTsKKwkJfQor CQllbHNlCisJCXsKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsIG9ycXVhbCk7CisJ CQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIFRyYW5zZm9ybWF0aW9uIG9ubHkgd29y a3Mgd2l0aCBib3RoIHNpZGUgdHlwZSBpcyBub3QKKwkJICogeyBhcnJheSB8IGNvbXBvc2l0 ZSB8IGRvbWFpbiB8IHJlY29yZCB9LgorCQkgKiBBbHNvLCBmb3JiaWQgaXQgZm9yIHZvbGF0 aWxlIGV4cHJlc3Npb25zLgorCQkgKi8KKwkJZXhwcnR5cGUgPSBleHByVHlwZShuY29uc3Rf ZXhwcik7CisJCWlmICh0eXBlX2lzX3Jvd3R5cGUoZXhwclR5cGUoY29uc3RfZXhwcikpIHx8 CisJCQl0eXBlX2lzX3Jvd3R5cGUoZXhwcnR5cGUpIHx8CisJCQljb250YWluX3ZvbGF0aWxl X2Z1bmN0aW9ucygoTm9kZSAqKSBuY29uc3RfZXhwcikpCisJCXsKKwkJCW9yX2xpc3QgPSBs YXBwZW5kKG9yX2xpc3QsIG9ycXVhbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJ CSogQXQgdGhpcyBwb2ludCB3ZSBkZWZpbml0ZWx5IGhhdmUgYSB0cmFuc2Zvcm1hYmxlIGNs YXVzZS4KKwkJKiBDbGFzc2lmeSBpdCBhbmQgYWRkIGludG8gc3BlY2lmaWMgZ3JvdXAgb2Yg Y2xhdXNlcywgb3IgY3JlYXRlIG5ldworCQkqIGdyb3VwLgorCQkqLworCQloYXNoa2V5LmV4 cHIgPSAoRXhwciAqKSBuY29uc3RfZXhwcjsKKwkJaGFzaGtleS5vcG5vID0gb3BubzsKKwkJ aGFzaGtleS5leHBydHlwZSA9IGV4cHJ0eXBlOworCQllbnRyeSA9IGhhc2hfc2VhcmNoKG9y X2dyb3VwX2h0YWIsICZoYXNoa2V5LCBIQVNIX0VOVEVSLCAmZm91bmQpOworCisJCWlmICh1 bmxpa2VseShmb3VuZCkpCisJCXsKKwkJCWVudHJ5LT5jb25zdHMgPSBsYXBwZW5kKGVudHJ5 LT5jb25zdHMsIGNvbnN0X2V4cHIpOworCQkJZW50cnktPmV4cHJzID0gbGFwcGVuZChlbnRy eS0+ZXhwcnMsIG9ycXVhbCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllbnRyeS0+bm9kZSA9 IG5jb25zdF9leHByOworCQkJZW50cnktPmNvbnN0cyA9IGxpc3RfbWFrZTEoY29uc3RfZXhw cik7CisJCQllbnRyeS0+ZXhwcnMgPSBsaXN0X21ha2UxKG9ycXVhbCk7CisKKwkJCS8qCisJ CQkgKiBBZGQgdGhlIGVudHJ5IHRvIHRoZSBsaXN0LiBJdCBpcyBuZWVkZWQgZXhjbHVzaXZl bHkgdG8gbWFuYWdlIHRoZQorCQkJICogcHJvYmxlbSB3aXRoIHRoZSBvcmRlciBvZiB0cmFu c2Zvcm1lZCBjbGF1c2VzIGluIGV4cGxhaW4uCisJCQkgKiBIYXNoIHZhbHVlIGNhbiBkZXBl bmQgb24gdGhlIHBsYXRmb3JtIGFuZCB2ZXJzaW9uLiBIZW5jZSwKKwkJCSAqIHNlcXVlbnRh bCBzY2FuIG9mIHRoZSBoYXNoIHRhYmxlIHdvdWxkIHByb25lIHRvIGNoYW5nZSB0aGUgb3Jk ZXIKKwkJCSAqIG9mIGNsYXVzZXMgaW4gbGlzdHMgYW5kLCBhcyBhIHJlc3VsdCwgYnJlYWsg cmVncmVzc2lvbiB0ZXN0cworCQkJICogYWNjaWRlbnRpYWxseS4KKwkJCSAqLworCQkJZW50 cmllcyA9IGxhcHBlbmQoZW50cmllcywgZW50cnkpOworCQl9CisJfQorCisJLyogTGV0J3Mg Y29udmVydCBlYWNoIGdyb3VwIG9mIGNsYXVzZXMgdG8gYW4gSU4gb3BlcmF0aW9uLiAqLwor CisJLyoKKwkgKiBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIGdyb3VwcyBhbmQgY29udmVydCBl YWNoLCB3aGVyZSBudW1iZXIgb2YKKwkgKiBjb25zdHMgbW9yZSB0aGFuIDEuIHRyaXZpYWwg Z3JvdXBzIG1vdmUgdG8gT1ItbGlzdCBhZ2FpbgorCSAqLworCisJZm9yZWFjaCAobGMsIGVu dHJpZXMpCisJeworCQlPaWQJCQkJICAgIHNjYWxhcl90eXBlOworCQlPaWQJCQkJCWFycmF5 X3R5cGU7CisKKwkJZW50cnkgPSAoT3JDbGF1c2VHcm91cEVudHJ5ICopIGxmaXJzdChsYyk7 CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25zdHMpID4gMCk7CisJCUFzc2Vy dChsaXN0X2xlbmd0aChlbnRyeS0+ZXhwcnMpID09IGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25z dHMpKTsKKworCQlpZiAobGlzdF9sZW5ndGgoZW50cnktPmNvbnN0cykgPT0gMSkKKwkJewor CQkJLyoKKwkJCSAqIE9ubHkgb25lIGVsZW1lbnQgaW4gdGhlIGNsYXNzLiBSZXR1cm4gb3Jp Z2luIGV4cHJlc3Npb24gaW50bworCQkJICogdGhlIEJvb2xFeHByIGFyZ3MgbGlzdCB1bmNo YW5nZWQuCisJCQkgKi8KKwkJCWxpc3RfZnJlZShlbnRyeS0+Y29uc3RzKTsKKwkJCW9yX2xp c3QgPSBsaXN0X2NvbmNhdChvcl9saXN0LCBlbnRyeS0+ZXhwcnMpOworCQkJY29udGludWU7 CisJCX0KKworCQkvKgorCQkgKiBEbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJCSAqLworCisJ CXNjYWxhcl90eXBlID0gZW50cnktPmtleS5leHBydHlwZTsKKwkJYXJyYXlfdHlwZSA9IE9p ZElzVmFsaWQoc2NhbGFyX3R5cGUpID8gZ2V0X2FycmF5X3R5cGUoc2NhbGFyX3R5cGUpIDoK KwkJCQkJCQkJCQkJICAgSW52YWxpZE9pZDsKKworCQlpZiAoT2lkSXNWYWxpZChhcnJheV90 eXBlKSkKKwkJeworCQkJLyoKKwkJCSAqIE9LOiBjb2VyY2UgYWxsIHRoZSByaWdodC1oYW5k IG5vbi1WYXIgaW5wdXRzIHRvIHRoZSBjb21tb24KKwkJCSAqIHR5cGUgYW5kIGJ1aWxkIGFu IEFycmF5RXhwciBmb3IgdGhlbS4KKwkJCSAqLworCQkJTGlzdAkJCSAgICphZXhwcnMgPSBO SUw7CisJCQlBcnJheUV4cHIJCSAgICpuZXdhID0gTlVMTDsKKwkJCVNjYWxhckFycmF5T3BF eHByICAqc2FvcGV4cHIgPSBOVUxMOworCQkJSGVhcFR1cGxlCQkJb3BlcnR1cDsKKwkJCUZv cm1fcGdfb3BlcmF0b3IJb3BlcmZvcm07CisJCQlMaXN0CQkJICAgKm5hbWVsaXN0ID0gTklM OworCQkJTGlzdENlbGwJCSAgICpsYzE7CisKKwkJCWZvcmVhY2gobGMxLCBlbnRyeS0+Y29u c3RzKQorCQkJeworCQkJCU5vZGUgICAqcmV4cHIgPSAoTm9kZSAqKSBsZmlyc3QobGMxKTsK KworCQkJCXJleHByID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgcmV4cHIsCisJ CQkJCQkJCQkJCSAgc2NhbGFyX3R5cGUsCisJCQkJCQkJCQkJCSAgIklOIik7CisJCQkJYWV4 cHJzID0gbGFwcGVuZChhZXhwcnMsIHJleHByKTsKKwkJCX0KKworCQkJbmV3YSA9IG1ha2VO b2RlKEFycmF5RXhwcik7CisJCQkvKiBhcnJheV9jb2xsaWQgd2lsbCBiZSBzZXQgYnkgcGFy c2VfY29sbGF0ZS5jICovCisJCQluZXdhLT5lbGVtZW50X3R5cGVpZCA9IHNjYWxhcl90eXBl OworCQkJbmV3YS0+YXJyYXlfdHlwZWlkID0gYXJyYXlfdHlwZTsKKwkJCW5ld2EtPm11bHRp ZGltcyA9IGZhbHNlOworCQkJbmV3YS0+ZWxlbWVudHMgPSBhZXhwcnM7CisJCQluZXdhLT5s b2NhdGlvbiA9IC0xOworCisJCQlvcGVydHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJPSUQs CisJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oZW50cnktPmtleS5vcG5vKSk7CisJCQlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQob3BlcnR1cCkpCisJCQkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yICV1IiwKKwkJCQkJIGVudHJ5LT5rZXkub3Bu byk7CisKKwkJCW9wZXJmb3JtID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChvcGVy dHVwKTsKKwkJCWlmICghT3BlcmF0b3JJc1Zpc2libGUoZW50cnktPmtleS5vcG5vKSkKKwkJ CQluYW1lbGlzdCA9IGxhcHBlbmQobmFtZWxpc3QsIG1ha2VTdHJpbmcoZ2V0X25hbWVzcGFj ZV9uYW1lKG9wZXJmb3JtLT5vcHJuYW1lc3BhY2UpKSk7CisKKwkJCW5hbWVsaXN0ID0gbGFw cGVuZChuYW1lbGlzdCwgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIob3BlcmZvcm0tPm9w cm5hbWUpKSkpOworCQkJUmVsZWFzZVN5c0NhY2hlKG9wZXJ0dXApOworCisJCQlzYW9wZXhw ciA9CisJCQkJKFNjYWxhckFycmF5T3BFeHByICopCisJCQkJCW1ha2Vfc2NhbGFyX2FycmF5 X29wKHBzdGF0ZSwKKwkJCQkJCQkJCQkgbmFtZWxpc3QsCisJCQkJCQkJCQkJIHRydWUsCisJ CQkJCQkJCQkJIGVudHJ5LT5ub2RlLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBuZXdhLAorCQkJ CQkJCQkJCSAtMSk7CisKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsICh2b2lkICop IHNhb3BleHByKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGUgY29u c3Qgbm9kZSAocmlnaHQgc2lkZSBvZiBvcGVyYXRvciBleHByZXNzaW9uKSAncyB0eXBlCisJ CQkgKiAgZG9uJ3QgaGF2ZSDigJx0cnVl4oCdIGFycmF5IHR5cGUsIHRoZW4gd2UgY2Fubm5v dCBkbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJCQkgKiBXZSBzaW1wbHkgY29uY2F0ZW5hdGUg dGhlIGV4cHJlc3Npb24gbm9kZS4KKwkJCSAqCisJCQkgKi8KKwkJCWxpc3RfZnJlZShlbnRy eS0+Y29uc3RzKTsKKwkJCW9yX2xpc3QgPSBsaXN0X2NvbmNhdChvcl9saXN0LCBlbnRyeS0+ ZXhwcnMpOworCQl9CisJfQorCWhhc2hfZGVzdHJveShvcl9ncm91cF9odGFiKTsKKwlsaXN0 X2ZyZWUoZW50cmllcyk7CisKKwkvKiBPbmUgbW9yZSB0cmljazogYXNzZW1ibGUgY29ycmVj dCBjbGF1c2UgKi8KKwlyZXR1cm4gKE5vZGUgKikgKChsaXN0X2xlbmd0aChvcl9saXN0KSA+ IDEpID8KKwkJCQkJIG1ha2VCb29sRXhwcihPUl9FWFBSLCBvcl9saXN0LCBleHByLT5sb2Nh dGlvbikgOgorCQkJCQkgbGluaXRpYWwob3JfbGlzdCkpOworfQogCiAvKgogICogdHJhbnNm b3JtRXhwciAtCkBAIC0yMTIsNyArNTM2LDcgQEAgdHJhbnNmb3JtRXhwclJlY3Vyc2UoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJfQogCiAJCWNhc2UgVF9Cb29sRXhw cjoKLQkJCXJlc3VsdCA9IHRyYW5zZm9ybUJvb2xFeHByKHBzdGF0ZSwgKEJvb2xFeHByICop IGV4cHIpOworCQkJcmVzdWx0ID0gdHJhbnNmb3JtQm9vbEV4cHJPcihwc3RhdGUsIChCb29s RXhwciAqKSBleHByKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVF9GdW5jQ2FsbDoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNzA2NTJmMGEzZi4uZjQyNzExZjMz NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEwNzEsNiArMTA3 MSwxNyBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQl0 cnVlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZW5hYmxlX29yX3RyYW5z Zm9ybWF0aW9uIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19PVEhFUiwKKwkJCWdldHRl eHRfbm9vcCgiVHJhbnNmb3JtIGEgc2VxdWVuY2Ugb2YgT1IgY2xhdXNlcyB0byBhbiBJTiBl eHByZXNzaW9uLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJUaGUgcGxhbm5lciB3aWxsIHJlcGxh Y2UgY2xhdXNlcyBsaWtlICd4PWMxIE9SIHg9YzIgLi4iCisJCQkJCQkgInRvIHRoZSBjbGF1 c2UgJ3ggSU4gKGMxLGMyLC4uLiknIiksCisJCQlHVUNfRVhQTEFJTgorCQl9LAorCQkmZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uLAorCQl0cnVlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJ fSwKIAl7CiAJCS8qCiAJCSAqIE5vdCBmb3IgZ2VuZXJhbCB1c2UgLS0tIHVzZWQgYnkgU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiBhbmQgU0VUCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggZTEwNzU1OTcyYS4uZjgwNThl MDVmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZQpAQCAtMzc5LDYgKzM3OSw3IEBACiAjIC0gUGxhbm5lciBNZXRob2QgQ29uZmln dXJhdGlvbiAtCiAKICNlbmFibGVfYXN5bmNfYXBwZW5kID0gb24KKyNlbmFibGVfb3JfdHJh bnNmb3JtYXRpb24gPSBvbgogI2VuYWJsZV9iaXRtYXBzY2FuID0gb24KICNlbmFibGVfZ2F0 aGVybWVyZ2UgPSBvbgogI2VuYWJsZV9oYXNoYWdnID0gb24KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwKaW5kZXggMDBiNTA5MjcxMy4uZDI4YmY2MTdkYiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwKQEAgLTIwOTUsOSArMjA5NSw5IEBAIG15ICV0ZXN0cyA9ICgKIAkJ cmVnZXhwID0+IHFyL14KIAkJCVxRQ1JFQVRFIERPTUFJTiBkdW1wX3Rlc3QudXNfcG9zdGFs X2NvZGUgQVMgdGV4dCBDT0xMQVRFIHBnX2NhdGFsb2cuIkMiIERFRkFVTFQgJzEwMDE0Jzo6 dGV4dFxFXG5ccysKIAkJCVxRQ09OU1RSQUlOVCB1c19wb3N0YWxfY29kZV9jaGVjayBDSEVD SyBcRQotCQkJXFEoKChWQUxVRSB+ICdeXGR7NX1cRQotCQkJXCRcUSc6OnRleHQpIE9SIChW QUxVRSB+ICdeXGR7NX0tXGR7NH1cRVwkCi0JCQlcUSc6OnRleHQpKSk7XEUoLnxcbikqCisJ CQlcUSgoVkFMVUUgfiBBTlkgKEFSUkFZWydeXGR7NX1cRQorCQkJXCRcUSc6OnRleHQsICde XGR7NX0tXGR7NH1cRVwkCisJCQlcUSc6OnRleHRdKSkpO1xFKC58XG4pKgogCQkJXFFDT01N RU5UIE9OIENPTlNUUkFJTlQgdXNfcG9zdGFsX2NvZGVfY2hlY2sgT04gRE9NQUlOIGR1bXBf dGVzdC51c19wb3N0YWxfY29kZSBJUyAnY2hlY2sgaXQnO1xFCiAJCQkveG0sCiAJCWxpa2Ug PT4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCmluZGV4IGYxYzU1YzgwNjcuLmE5YWUwNDhh ZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaApAQCAtNjUsNiArNjUsNyBAQCBleHRl cm4gUEdETExJTVBPUlQgaW50IGNvbXB1dGVfcXVlcnlfaWQ7CiAKIGV4dGVybiBjb25zdCBj aGFyICpDbGVhblF1ZXJ5dGV4dChjb25zdCBjaGFyICpxdWVyeSwgaW50ICpsb2NhdGlvbiwg aW50ICpsZW4pOwogZXh0ZXJuIEp1bWJsZVN0YXRlICpKdW1ibGVRdWVyeShRdWVyeSAqcXVl cnkpOworZXh0ZXJuIEp1bWJsZVN0YXRlICpKdW1ibGVFeHByKEV4cHIgKmV4cHIsIHVpbnQ2 NCAqcXVlcnlJZCk7CiBleHRlcm4gdm9pZCBFbmFibGVRdWVyeUlkKHZvaWQpOwogCiBleHRl cm4gUEdETExJTVBPUlQgYm9vbCBxdWVyeV9pZF9lbmFibGVkOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L29wdGltaXplci5oCmluZGV4IDdiNjNjNWNmNzEuLjM1YWI1Nzc1MDEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvb3B0aW1pemVyLmgKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFBsYW5uZWRT dG10Owogc3RydWN0IFBhcmFtTGlzdEluZm9EYXRhOwogc3RydWN0IEhlYXBUdXBsZURhdGE7 CiAKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsK IAogLyogaW4gcGF0aC9jbGF1c2VzZWwuYzogKi8KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IDc5ZmExMTdjYjUuLmI4NjUzYzA5ZWEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAg LTE4MzgsMTggKzE4MzgsNTAgQEAgRFJPUCBUQUJMRSBvbmVrX3dpdGhfbnVsbDsKIEVYUExB SU4gKENPU1RTIE9GRikKIFNFTEVDVCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQg PSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0 Mik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCi0gICBSZWNoZWNrIENv bmQ6ICgoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAxKSkgT1IgKCh0aG91c2Fu ZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMykpIE9SICgodGhvdXNhbmQgPSA0MikgQU5EICh0 ZW50aG91cyA9IDQyKSkpCi0gICAtPiAgQml0bWFwT3IKLSAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMSkpCi0gICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9 IDMpKQotICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3Rl bnRob3VzCi0gICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFO RCAodGVudGhvdXMgPSA0MikpCi0oOSByb3dzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3Ro b3VzX3RlbnRob3VzIG9uIHRlbmsxCisgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIp IEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzLDQyfSc6OmludGVnZXJbXSkpKQorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAo dGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKyB1bmlx dWUxIHwgdW5pcXVlMiB8IHR3byB8IGZvdXIgfCB0ZW4gfCB0d2VudHkgfCBodW5kcmVkIHwg dGhvdXNhbmQgfCB0d290aG91c2FuZCB8IGZpdmV0aG91cyB8IHRlbnRob3VzIHwgb2RkIHwg ZXZlbiB8IHN0cmluZ3UxIHwgc3RyaW5ndTIgfCBzdHJpbmc0IAorLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAg fCAgICAyIHwgICAyIHwgICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAg NDIgfCAgICAgICAgNDIgfCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNF SUFBQSAgIHwgT09PT3h4CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3Vz YW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDog KChodW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdl cltdKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkp CisoOCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5k cmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworIGNvdW50 IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3Jt YXRpb24gPSBvbjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEK KyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9 IDMgT1IgdGVudGhvdXMgPSA0Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgdGVuazFfdGhvdXNfdGVu dGhvdXMgb24gdGVuazEKKyAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0 ZW50aG91cyA9IEFOWSAoJ3sxLDMsNDJ9Jzo6aW50ZWdlcltdKSkpCisoMiByb3dzKQogCiBT RUxFQ1QgKiBGUk9NIHRlbmsxCiAgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91 cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOwpAQCAtMTg2MSwyOCAr MTg5MywxMTYgQEAgU0VMRUNUICogRlJPTSB0ZW5rMQogRVhQTEFJTiAoQ09TVFMgT0ZGKQog U0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAo dGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hl Y2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9 Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6Omlu dGVnZXJbXSkpCisoOCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBX SEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkp OworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0 MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhvdXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5k IE9SIDQyID4gdGhvdXNhbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUK KyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENv bmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kIDwgQU5ZICgnezQyLDk5LDQzLDQy fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0Myw0 Mn0nOjppbnRlZ2VyW10pKQorKDggcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRl bnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUK KyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENv bmQ6ICgoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzfSc6Omlu dGVnZXJbXSkpKSBPUiAodGhvdXNhbmQgPSA0MSkpCisgICAgICAgICAtPiAgQml0bWFwT3IK KyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190 ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9 IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEsM30nOjppbnRlZ2VyW10pKSkKKyAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91 cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDEpCiso OCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2Fu ZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQg PSA0MTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMg PCAyKSBPUiB0aG91c2FuZCA9IDQxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQor ICAgICAgICAgUmVjaGVjayBDb25kOiAoKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5k ID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpIE9SICh0ZW50aG91cyA8IDIpKSkgT1Ig KHRob3VzYW5kID0gNDEpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRt YXBPcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltd KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHRlbnRob3VzIDwgMikKKyAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDEpCisoMTQgcm93cykKKworU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNh bmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQg PSA0MTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAyMAorKDEgcm93KQorCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQg PSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgQWdncmVnYXRlCiAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MQotICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICgodGhvdXNh bmQgPSA0MikgT1IgKHRob3VzYW5kID0gOTkpKSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDog KChodW5kcmVkID0gNDIpIEFORCAoKCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRob3VzID0g MikpIE9SICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw0MX0nOjppbnRlZ2VyW10pKSkpCiAgICAg ICAgICAtPiAgQml0bWFwQW5kCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfaHVuZHJlZAogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGh1bmRyZWQgPSA0MikKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgogICAgICAgICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRo b3VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQg PSA0MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNh bmQgPSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKQogICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA5OSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw0 MX0nOjppbnRlZ2VyW10pKQogKDExIHJvd3MpCiAKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRl bmsxCi0gIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNh bmQgPSA5OSk7CisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1Ig dGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIpOwogIGNv dW50IAogLS0tLS0tLQogICAgIDEwCiAoMSByb3cpCiAKK1JFU0VUIGVuYWJsZV9vcl90cmFu c2Zvcm1hdGlvbjsKIC0tCiAtLSBDaGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRl eCBjb2x1bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2luaGVyaXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0 Lm91dAppbmRleCAxZTZjYzhlOWJhLi43Y2RmOWQ2NDEyIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvaW5oZXJpdC5vdXQKQEAgLTI2MDAsNyArMjYwMCw3IEBAIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBsaXN0X3BhcnRlZCB3aGVyZSBhID0gJ2FiJyBvciBh IGluIChudWxsLCAnY2QnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogIFNlcSBTY2FuIG9uIHBhcnRfYWJfY2QgbGlzdF9wYXJ0 ZWQKLSAgIEZpbHRlcjogKCgoYSk6OnRleHQgPSAnYWInOjp0ZXh0KSBPUiAoKGEpOjp0ZXh0 ID0gQU5ZICgne05VTEwsY2R9Jzo6dGV4dFtdKSkpCisgICBGaWx0ZXI6ICgoKGEpOjp0ZXh0 ID0gQU5ZICgne05VTEwsY2R9Jzo6dGV4dFtdKSkgT1IgKChhKTo6dGV4dCA9ICdhYic6OnRl eHQpKQogKDIgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxp c3RfcGFydGVkIHdoZXJlIGEgPSAnYWInOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qb2luLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5v dXQKaW5kZXggMGMyY2JhODkyMS4uODJhNWY2ODlhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qb2luLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pvaW4ub3V0CkBAIC00MjEwLDEwICs0MjEwLDEwIEBAIGV4cGxhaW4gKGNvc3RzIG9m ZikKIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgKGEudW5pcXVl MSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCiAgICgoYS51bmlxdWUyID0gMyBvciBhLnVu aXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIE5lc3RlZCBMb29wCi0gICBKb2luIEZp bHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51 bmlxdWUyID0gMykgT1IgKGEudW5pcXVlMiA9IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkK KyAgIEpvaW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIp KSBPUiAoKGEudW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1 bmRyZWQgPSA0KSkpCiAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBiCiAgICAg ICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDIpIE9SIChodW5kcmVkID0gNCkpCiAg ICAgICAgICAtPiAgQml0bWFwT3IKQEAgLTQyMjMsMTYgKzQyMjMsNjQgQEAgc2VsZWN0ICog ZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGh1bmRyZWQgPSA0KQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAgICBSZWNoZWNr IENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gMykgT1IgKHVuaXF1ZTIgPSA3 KSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVu aXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpKQogICAgICAgICAgICAgICAgLT4g IEJpdG1hcE9yCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdW5pcXVlMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHVuaXF1ZTEgPSAxKQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh1bmlxdWUyID0gMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE3IHJv d3MpCisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNv c3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEu dW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBv ciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUx ID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3 fSc6OmludGVnZXJbXSkpIEFORCAoYi5odW5kcmVkID0gNCkpKQorICAgLT4gIEJpdG1hcCBI ZWFwIFNjYW4gb24gdGVuazEgYgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEg PSAyKSBPUiAoaHVuZHJlZCA9IDQpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAyKQorICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNCkKKyAgIC0+ICBNYXRlcmlhbGl6 ZQorICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAgICAgICAg ICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAo J3szLDd9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlx dWUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9 IDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTIgPSA3KQotKDE5IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKKygxNyByb3dz KQorCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0 ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPCAyMCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5p cXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBh LnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBKb2lu IEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKChh LnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpIEFORCAoYi5odW5kcmVkID0g NCkpIE9SIChhLnVuaXF1ZTEgPCAyMCkgT1IgKGEudW5pcXVlMSA9IDMpKQorICAgLT4gIFNl cSBTY2FuIG9uIHRlbmsxIGIKKyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25k OiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltd KSkgT1IgKHVuaXF1ZTEgPCAyMCkgT1IgKHVuaXF1ZTEgPSAzKSkKKyAgICAgICAgICAgICAg IC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh1bmlxdWUxID0gMSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlx dWUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA8 IDIwKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUxID0gMykKKygxNSByb3dzKQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRp b247CiAtLQogLS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFt ZXRlcml6ZWQgam9pbiB0cmVlCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fcHJ1bmUub3V0CmluZGV4IDlhNGM0OGMwNTUuLjM0MjNhZjQ3NjggMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQK QEAgLTgyLDI1ICs4Miw0NyBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g bHAgd2hlcmUgYSBpcyBudWxsOwogKDIgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKLSAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFwcGVuZAog ICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEKLSAgICAgICAgIEZpbHRlcjogKChhID0g J2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKQorICAgICAgICAgRmlsdGVyOiAo YSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKQogICAgLT4gIFNlcSBTY2FuIG9uIGxwX2Jj IGxwXzIKLSAgICAgICAgIEZpbHRlcjogKChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2Mn OjpicGNoYXIpKQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFy W10pKQogKDUgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxw IHdoZXJlIGEgaXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2Fu IG9uIGxwX2FkIGxwXzEKLSAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQg KChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKSkKKyAgICAgICAgIEZp bHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltd KSkpCiAgICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBfMgotICAgICAgICAgRmlsdGVyOiAo KGEgSVMgTk9UIE5VTEwpIEFORCAoKGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJw Y2hhcikpKQorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9IEFO WSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKICg1IHJvd3MpCiAKK1NFVCBlbmFibGVfb3JfdHJh bnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBs cCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBs cF8xCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpCisg ICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA9IEFO WSAoJ3thLGN9Jzo6YnBjaGFyW10pKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9y IGEgPSAnYycpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQK KyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSBJ UyBOT1QgTlVMTCkgQU5EIChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQorICAgLT4g IFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBO VUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCisoNSByb3dzKQorCitS RVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiBleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gbHAgd2hlcmUgYSA8PiAnZyc7CiAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA QCAtNTE1LDEwICs1MzcsMTAgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscCB3aGVyZSBhIDw9IDMxOwogKDI3IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7Ci0gICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcmxwMiBy bHAKLSAgIEZpbHRlcjogKChhID0gMSkgT1IgKGEgPSA3KSkKKyAgIEZpbHRlcjogKGEgPSBB TlkgKCd7MSw3fSc6OmludGVnZXJbXSkpCiAoMiByb3dzKQogCiBleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOwpAQCAtNTg5 LDIwICs2MTEsMjAgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3 aGVyZSBhIDwgMSBvciAoYSA+IDIwIGFuZCBhIDwgMjUpOwogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQXBwZW5kCiAgICAtPiAg U2VxIFNjYW4gb24gcmxwMSBybHBfMQotICAgICAgICAgRmlsdGVyOiAoKGEgPCAxKSBPUiAo KGEgPiAyMCkgQU5EIChhIDwgMjUpKSkKKyAgICAgICAgIEZpbHRlcjogKCgoYSA+IDIwKSBB TkQgKGEgPCAyNSkpIE9SIChhIDwgMSkpCiAgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJs cF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSA8IDEpIE9SICgoYSA+IDIwKSBBTkQgKGEgPCAy NSkpKQorICAgICAgICAgRmlsdGVyOiAoKChhID4gMjApIEFORCAoYSA8IDI1KSkgT1IgKGEg PCAxKSkKICg1IHJvd3MpCiAKIC0tIHdoZXJlIGNsYXVzZSBjb250cmFkaWN0cyBzdWItcGFy dGl0aW9uJ3MgY29uc3RyYWludAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOwotICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgQXBwZW5kCiAgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8xCi0gICAgICAgICBG aWx0ZXI6ICgoYSA9IDIwKSBPUiAoYSA9IDQwKSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBB TlkgKCd7MjAsNDB9Jzo6aW50ZWdlcltdKSkKICAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2Rl ZmF1bHQgcmxwXzIKLSAgICAgICAgIEZpbHRlcjogKChhID0gMjApIE9SIChhID0gNDApKQor ICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQogKDUg cm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUg YSA9IDIwOyAgIC8qIGVtcHR5ICovCkBAIC02NzEsNiArNjkzLDE2MyBAQCBleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9y IChhID4gMSBhbmQgYSA9CiAgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAz KSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKICgxMSByb3dzKQogCitTRVQgZW5hYmxl X29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3OworICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBybHAyIHJscAorICAgRmlsdGVyOiAoYSA9IEFO WSAoJ3sxLDd9Jzo6aW50ZWdlcltdKSkKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYiA9ICdhYic7CisgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwMSBybHBfMQorICAgICAgICAgRmlsdGVy OiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwMiBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0 ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2FiY2QgcmxwXzMK KyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQp KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfNAorICAgICAgICAgRmlsdGVyOiAo KGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4g b24gcmxwNF8yIHJscF81CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRl eHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxw XzYKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRl eHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfMSBybHBfNworICAgICAgICAgRmlsdGVy OiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwNV9kZWZhdWx0IHJscF84CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9S ICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVm YXVsdF8xMCBybHBfOQorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0 ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxw XzEwCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0 ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9udWxsIHJscF8xMQorICAg ICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVmYXVsdCBybHBfMTIKKyAgICAgICAg IEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorKDI1IHJv d3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+ IDIwIGFuZCBhIDwgMjc7CisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBl bmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjog KChhID4gMjApIEFORCAoYSA8IDI3KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxw XzIKKyAgICAgICAgIEZpbHRlcjogKChhID4gMjApIEFORCAoYSA8IDI3KSkKKyg1IHJvd3Mp CisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDI5 OworICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxwCisgICBGaWx0ZXI6 IChhID0gMjkpCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gcmxwIHdoZXJlIGEgPj0gMjk7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHBf MQorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1 XzEgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4g b24gcmxwNV9kZWZhdWx0IHJscF8zCisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAg LT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzMwIHJscF80CisgICAgICAgICBGaWx0ZXI6 IChhID49IDI5KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X2RlZmF1bHQgcmxw XzUKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisoMTEgcm93cykKKworZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwgMSBvciAoYSA+IDIwIGFu ZCBhIDwgMjUpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAxIHJscF8x CisgICAgICAgICBGaWx0ZXI6ICgoKGEgPiAyMCkgQU5EIChhIDwgMjUpKSBPUiAoYSA8IDEp KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMgorICAgICAgICAgRmlsdGVyOiAo KChhID4gMjApIEFORCAoYSA8IDI1KSkgT1IgKGEgPCAxKSkKKyg1IHJvd3MpCisKK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0 MDsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMQorICAgICAgICAgRmls dGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscDVfZGVmYXVsdCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3sy MCw0MH0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCisgICAgICAg IFFVRVJZIFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1 bHQKKyAgIE9uZS1UaW1lIEZpbHRlcjogZmFsc2UKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPSAxMDsJLyog b25seSBkZWZhdWx0ICovCisgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcmxwX2Rl ZmF1bHRfMTAgcmxwCisgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA9IDEwKSkKKygyIHJv d3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+ IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBpbmNsdWRpbmcgZGVmYXVsdCAqLwor ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAg LT4gIFNlcSBTY2FuIG9uIHJscDNhYmNkIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2VmZ2ggcmxwXzIK KyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBybHAzbnVsbHh5IHJscF8zCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFO RCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM19kZWZhdWx0IHJscF80Cisg ICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwNF8xIHJscF81CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+ PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8yIHJscF82CisgICAgICAgICBGaWx0 ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9k ZWZhdWx0IHJscF83CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV8xIHJscF84CisgICAgICAgICBGaWx0ZXI6ICgo YSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0 IHJscF85CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAt PiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxwXzEwCisgICAgICAgICBGaWx0ZXI6 ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1 bHRfZGVmYXVsdCBybHBfMTEKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49 IDE1KSkKKygyMyByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIGEgPSAxIGFuZCBhID0gMzsJLyogZW1wdHkgKi8KKyAgICAgICAgUVVFUlkg UExBTiAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAg T25lLVRpbWUgRmlsdGVyOiBmYWxzZQorKDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAoYSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+IDEg YW5kIGEgPSAxNSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwMiBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKChhID0g MSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwM2FiY2QgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFO RCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscDNlZmdoIHJscF8zCisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEg PSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHAzbnVsbHh5IHJscF80CisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAz KSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAz X2RlZmF1bHQgcmxwXzUKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMp KSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorKDExIHJvd3MpCisKK1JFU0VUIGVuYWJs ZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0tIG11bHRpLWNvbHVtbiBrZXlzCiBjcmVhdGUgdGFi bGUgbWMzcCAoYSBpbnQsIGIgaW50LCBjIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChhLCBh YnMoYiksIGMpOwogY3JlYXRlIHRhYmxlIG1jM3BfZGVmYXVsdCBwYXJ0aXRpb24gb2YgbWMz cCBkZWZhdWx0OwpAQCAtMTkzMywxMCArMjExMiwxMCBAQCBleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gaHAgd2hlcmUgYSA9IDEgYW5kIGIgPSAnYWJjZGUnOwogCiBleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gaHAgd2hlcmUgYSA9IDEgYW5kIGIgPSAn YWJjZGUnIGFuZAogICAoYyA9IDIgb3IgYyA9IDMpOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gaHAyIGhwCi0gICBGaWx0ZXI6ICgoYSA9 IDEpIEFORCAoYiA9ICdhYmNkZSc6OnRleHQpIEFORCAoKGMgPSAyKSBPUiAoYyA9IDMpKSkK KyAgIEZpbHRlcjogKChjID0gQU5ZICgnezIsM30nOjppbnRlZ2VyW10pKSBBTkQgKGEgPSAx KSBBTkQgKGIgPSAnYWJjZGUnOjp0ZXh0KSkKICgyIHJvd3MpCiAKIGRyb3AgdGFibGUgaHAy OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBiNzQ4OGQ3NjBlLi5i NDI0YWQzMTU0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjUw MSw3ICsyNTAxLDcgQEAgcGdfc3RhdHN8IFNFTEVDVCBuLm5zcG5hbWUgQVMgc2NoZW1hbmFt ZSwKICAgICAgSk9JTiBwZ19jbGFzcyBjIE9OICgoYy5vaWQgPSBzLnN0YXJlbGlkKSkpCiAg ICAgIEpPSU4gcGdfYXR0cmlidXRlIGEgT04gKCgoYy5vaWQgPSBhLmF0dHJlbGlkKSBBTkQg KGEuYXR0bnVtID0gcy5zdGFhdHRudW0pKSkpCiAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3Bh Y2UgbiBPTiAoKG4ub2lkID0gYy5yZWxuYW1lc3BhY2UpKSkKLSAgV0hFUkUgKChOT1QgYS5h dHRpc2Ryb3BwZWQpIEFORCBoYXNfY29sdW1uX3ByaXZpbGVnZShjLm9pZCwgYS5hdHRudW0s ICdzZWxlY3QnOjp0ZXh0KSBBTkQgKChjLnJlbHJvd3NlY3VyaXR5ID0gZmFsc2UpIE9SIChO T1Qgcm93X3NlY3VyaXR5X2FjdGl2ZShjLm9pZCkpKSk7CisgIFdIRVJFICgoTk9UIGEuYXR0 aXNkcm9wcGVkKSBBTkQgaGFzX2NvbHVtbl9wcml2aWxlZ2UoYy5vaWQsIGEuYXR0bnVtLCAn c2VsZWN0Jzo6dGV4dCkgQU5EICgoTk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5vaWQpKSBP UiAoYy5yZWxyb3dzZWN1cml0eSA9IGZhbHNlKSkpOwogcGdfc3RhdHNfZXh0fCBTRUxFQ1Qg Y24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIGMucmVsbmFtZSBBUyB0YWJsZW5hbWUs CiAgICAgc24ubnNwbmFtZSBBUyBzdGF0aXN0aWNzX3NjaGVtYW5hbWUsCkBAIC0yNTMyLDcg KzI1MzIsNyBAQCBwZ19zdGF0c19leHR8IFNFTEVDVCBjbi5uc3BuYW1lIEFTIHNjaGVtYW5h bWUsCiAgIFdIRVJFICgoTk9UIChFWElTVFMgKCBTRUxFQ1QgMQogICAgICAgICAgICBGUk9N ICh1bm5lc3Qocy5zdHhrZXlzKSBrKGspCiAgICAgICAgICAgICAgSk9JTiBwZ19hdHRyaWJ1 dGUgYSBPTiAoKChhLmF0dHJlbGlkID0gcy5zdHhyZWxpZCkgQU5EIChhLmF0dG51bSA9IGsu aykpKSkKLSAgICAgICAgICBXSEVSRSAoTk9UIGhhc19jb2x1bW5fcHJpdmlsZWdlKGMub2lk LCBhLmF0dG51bSwgJ3NlbGVjdCc6OnRleHQpKSkpKSBBTkQgKChjLnJlbHJvd3NlY3VyaXR5 ID0gZmFsc2UpIE9SIChOT1Qgcm93X3NlY3VyaXR5X2FjdGl2ZShjLm9pZCkpKSk7CisgICAg ICAgICAgV0hFUkUgKE5PVCBoYXNfY29sdW1uX3ByaXZpbGVnZShjLm9pZCwgYS5hdHRudW0s ICdzZWxlY3QnOjp0ZXh0KSkpKSkgQU5EICgoTk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5v aWQpKSBPUiAoYy5yZWxyb3dzZWN1cml0eSA9IGZhbHNlKSkpOwogcGdfc3RhdHNfZXh0X2V4 cHJzfCBTRUxFQ1QgY24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIGMucmVsbmFtZSBB UyB0YWJsZW5hbWUsCiAgICAgc24ubnNwbmFtZSBBUyBzdGF0aXN0aWNzX3NjaGVtYW5hbWUs CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKaW5kZXggMTA5MDNi ZGFiMC4uNmY1NWI5ZTNlYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdGF0c19leHQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNf ZXh0Lm91dApAQCAtMTMyMiwxOSArMTMyMiwxOSBAQCBTRUxFQ1QgKiBGUk9NIGNoZWNrX2Vz dGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdI RVJFCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9N IGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFIChhID0gMSBPUiBhID0gNTEpIEFORCBi ID0gJycxJycnKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0t LQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQog CiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1 bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFIChhID0gMSBPUiBhID0gNTEpIEFORCAoYiA9 ICcnMScnIE9SIGIgPSAnJzInJyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0t LS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEw MAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxF Q1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFIChhID0gMSBPUiBhID0g MiBPUiBhID0gNTEgT1IgYSA9IDUyKSBBTkQgKGIgPSAnJzEnJyBPUiBiID0gJycyJycpJyk7 CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAx OTcgfCAgICAyMDAKKyAgICAgICAyMDAgfCAgICAyMDAKICgxIHJvdykKIAogLS0gT1IgY2xh dXNlcyByZWZlcmVuY2luZyBkaWZmZXJlbnQgYXR0cmlidXRlcyBhcmUgaW5jb21wYXRpYmxl CkBAIC0xNjY0LDE5ICsxNjY0LDE5IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVk X3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUKIFNF TEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rp b25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKChhICogMikgPSAyIE9SIChhICogMikgPSAxMDIp IEFORCB1cHBlcihiKSA9ICcnMScnJyk7CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0t LS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkgfCAgICAxMDAKKyAgICAgICAxMDAgfCAgICAx MDAKICgxIHJvdykKIAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VM RUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoKGEgKiAyKSA9IDIg T1IgKGEgKiAyKSA9IDEwMikgQU5EICh1cHBlcihiKSA9ICcnMScnIE9SIHVwcGVyKGIpID0g JycyJycpJyk7CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0K LSAgICAgICAgOTkgfCAgICAxMDAKKyAgICAgICAxMDAgfCAgICAxMDAKICgxIHJvdykKIAog U0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5j dGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoKGEgKiAyKSA9IDIgT1IgKGEgKiAyKSA9IDQg T1IgKGEgKiAyKSA9IDEwMiBPUiAoYSAqIDIpID0gMTA0KSBBTkQgKHVwcGVyKGIpID0gJycx JycgT1IgdXBwZXIoYikgPSAnJzInJyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0t LS0tLS0tLSstLS0tLS0tLQotICAgICAgIDE5NyB8ICAgIDIwMAorICAgICAgIDIwMCB8ICAg IDIwMAogKDEgcm93KQogCiAtLSBPUiBjbGF1c2VzIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBh dHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3Zp ZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4 IDliZTdhY2EyYjguLjFmOTAyOWI1YjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3lzdmlld3Mub3V0CkBAIC0xMjQsNiArMTI0LDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcg ZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9t ZW1vaXplICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX21lcmdlam9pbiAgICAgICAg ICAgICAgIHwgb24KICBlbmFibGVfbmVzdGxvb3AgICAgICAgICAgICAgICAgfCBvbgorIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbiAgICAgICB8IG9uCiAgZW5hYmxlX3BhcmFsbGVsX2Fw cGVuZCAgICAgICAgIHwgb24KICBlbmFibGVfcGFyYWxsZWxfaGFzaCAgICAgICAgICAgfCBv bgogIGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAgICAgICB8IG9uCkBAIC0xMzQsNyArMTM1 LDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1l IGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAgICAgICAgICAgICB8IG9u CiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfdGlkc2Nh biAgICAgICAgICAgICAgICAgfCBvbgotKDIzIHJvd3MpCisoMjQgcm93cykKIAogLS0gVGhl cmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0aW9ucyBmb3IgdmFyaW91cyB0eXBl cy4KIHNlbGVjdCB0eXBlLCBjb3VudCgqKSA+IDAgYXMgb2sgRlJPTSBwZ193YWl0X2V2ZW50 cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQKaW5kZXggZjEzM2I1YTRh Yy4uMmEwNzllOTk2YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90 aWRzY2FuLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0 CkBAIC00MywxMCArNDMsMjYgQEAgU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJF ICcoMCwxKScgPSBjdGlkOwogLS0gT1InZCBjbGF1c2VzCiBFWFBMQUlOIChDT1NUUyBPRkYp CiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1Ig JygwLDEpJyA9IGN0aWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUaWQgU2NhbiBv biB0aWRzY2FuCisgICBUSUQgQ29uZDogKGN0aWQgPSBBTlkgKCd7IigwLDIpIiwiKDAsMSki fSc6OnRpZFtdKSkKKygyIHJvd3MpCisKK1NFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBX SEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKKyBjdGlkICB8IGlkIAor LS0tLS0tLSstLS0tCisgKDAsMSkgfCAgMQorICgwLDIpIHwgIDIKKygyIHJvd3MpCisKK1NF VCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAn KDAsMSknID0gY3RpZDsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICBUaWQgU2NhbiBvbiB0aWRzY2FuCi0gICBUSUQgQ29u ZDogKChjdGlkID0gJygwLDIpJzo6dGlkKSBPUiAoJygwLDEpJzo6dGlkID0gY3RpZCkpCisg ICBUSUQgQ29uZDogKGN0aWQgPSBBTlkgKCd7IigwLDIpIiwiKDAsMSkifSc6OnRpZFtdKSkK ICgyIHJvd3MpCiAKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0g JygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKQEAgLTU2LDYgKzcyLDcgQEAgU0VMRUNUIGN0 aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBj dGlkOwogICgwLDIpIHwgIDIKICgyIHJvd3MpCiAKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zv cm1hdGlvbjsKIC0tIGN0aWQgPSBTY2FsYXJBcnJheU9wIC0gaW1wbGVtZW50ZWQgYXMgdGlk c2NhbgogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2Fu IFdIRVJFIGN0aWQgPSBBTlkoQVJSQVlbJygwLDEpJywgJygwLDIpJ106OnRpZFtdKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCmluZGV4IGQ0OWNlOWYzMDAuLjU2 ZmRlMTViYzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRl eC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAt NzM3LDYgKzczNyw0MSBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQg PSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKIAorU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlv biA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBX SEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBP UiB0ZW50aG91cyA9IDQyKTsKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNh bmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMg PSA0Mik7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRl bmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNh bmQgPSA5OSk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPCA0MiBPUiB0aG91c2FuZCA8IDk5IE9SIDQzID4gdGhv dXNhbmQgT1IgNDIgPiB0aG91c2FuZCk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50 aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3Vz ID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQg PSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8 IDIpIE9SIHRob3VzYW5kID0gNDE7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBX SEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkg T1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBB TkQgdGVudGhvdXMgPSAyKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJF IGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0 aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIpOworUkVTRVQgZW5hYmxlX29yX3RyYW5z Zm9ybWF0aW9uOworCiAtLQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5k ZXggY29sdW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvam9pbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAppbmRleCAyNTdm NzI3YTJiLi4wZDE0MjdjMTE1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9q b2luLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbApAQCAtMTQwOCw2 ICsxNDA4LDE2IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCAqIGZyb20gdGVuazEg YSBqb2luIHRlbmsxIGIgb24KICAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIp IG9yCiAgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVk ID0gNCk7CitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChh LnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMg b3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworZXhwbGFpbiAoY29zdHMg b2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlx dWUxIDwgMjAgb3IgYS51bmlxdWUxID0gMyBvciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1 ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIu aHVuZHJlZCA9IDQpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogCiAtLQog LS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQg am9pbiB0cmVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f cHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbApp bmRleCA3YmYzOTIwODI3Li4xZTI3MGFlOWMwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9wcnVuZS5zcWwKQEAgLTIxLDYgKzIxLDEyIEBAIGV4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsOwogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsKIGV4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7 CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3Qg bnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CisKK1NFVCBlbmFibGVfb3JfdHJhbnNm b3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3 aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7 CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisKIGV4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdnJzsKIGV4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdhJyBhbmQgYSA8PiAnZCc7CiBleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBub3QgaW4gKCdhJywg J2QnKTsKQEAgLTk5LDYgKzEwNSwyMiBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253YXJkcywgaQog ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQg YSA9IDM7CS8qIGVtcHR5ICovCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKIAor CitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3OworZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBiID0gJ2FiJzsK K2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDIwIGFu ZCBhIDwgMjc7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJl IGEgPSAyOTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA+PSAyOTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1KTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKK2V4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBybHAzIHdoZXJlIGEgPSAyMDsgICAvKiBlbXB0eSAqLwor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQg YSA9IDEwOwkvKiBvbmx5IGRlZmF1bHQgKi8KK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBp bmNsdWRpbmcgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCitleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChh ID4gMSBhbmQgYSA9IDE1KTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwog LS0gbXVsdGktY29sdW1uIGtleXMKIGNyZWF0ZSB0YWJsZSBtYzNwIChhIGludCwgYiBpbnQs IGMgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEsIGFicyhiKSwgYyk7CiBjcmVhdGUgdGFi bGUgbWMzcF9kZWZhdWx0IHBhcnRpdGlvbiBvZiBtYzNwIGRlZmF1bHQ7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3RpZHNjYW4uc3FsCmluZGV4IDMxM2UwZmI5YjYuLjA0OTliZWRiOWUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3RpZHNjYW4uc3FsCkBAIC0yMiw2ICsyMiwxMiBAQCBFWFBMQUlOIChDT1NU UyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwy KScgT1IgJygwLDEpJyA9IGN0aWQ7CiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hF UkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CiAKK1NFVCBlbmFibGVfb3Jf dHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjdGlk LCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3Rp ZDsKK1NFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBP UiAnKDAsMSknID0gY3RpZDsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwog LS0gY3RpZCA9IFNjYWxhckFycmF5T3AgLSBpbXBsZW1lbnRlZCBhcyB0aWRzY2FuCiBFWFBM QUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3Rp ZCA9IEFOWShBUlJBWVsnKDAsMSknLCAnKDAsMiknXTo6dGlkW10pOwpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAppbmRleCBkODA4YWFkOGIwLi5mOGQ1ODcxMTUzIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTY1NCw2ICsxNjU0LDggQEAgTnVtZXJpY1Zhcgog T01fdWludDMyCiBPUAogT1NBUGVyR3JvdXBTdGF0ZQorT3JDbGF1c2VHcm91cEVudHJ5CitP ckNsYXVzZUdyb3VwS2V5CiBPU0FQZXJRdWVyeVN0YXRlCiBPU0luZm8KIE9TU0xDaXBoZXIK LS0gCjIuNDMuMAoK --------------wcPrMQB6xILJsOr0I6P5AMAL Content-Type: text/plain; charset=UTF-8; name="v17-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pat.patch" Content-Disposition: attachment; filename*0="v17-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pa"; filename*1="t.patch" Content-Transfer-Encoding: base64 RnJvbSA4MmExNGQyYWRiZTk2MzhhYmYxM2U0NTE4YjA4MzYxNDFmZjQ2NDUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogV2VkLCAyNCBKYW4gMjAyNCAxNDowNzoxNyArMDcw MApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBUZWFjaCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMg dG8gYnVpbGQgQml0bWFwT3IgcGF0aHMKIG92ZXIgU0FPUCBjbGF1c2VzLgoKTGlrZXdpc2Ug T1IgY2xhdXNlcywgZGlzY292ZXIgU0FPUCBhcnJheSBhbmQgdHJ5IHRvIHNwbGl0IGl0cyBl bGVtZW50cwpiZXR3ZWVuIHNtYWxsZXIgc2l6ZWQgYXJyYXlzIHRvIGZpdCBhIHNldCBvZiBw YXJ0aWFsIGluZGV4ZXMuCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBh dGguYyAgICAgfCAzMDEgKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcHJlZHRlc3QuYyAgICAgfCAgNDYgKysrKwogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcmVzdHJpY3RpbmZvLmMgfCAgMTMgKwogc3JjL2luY2x1ZGUvb3B0aW1p emVyL29wdGltaXplci5oICAgICAgICAgfCAgMTYgKysKIHNyYy9pbmNsdWRlL29wdGltaXpl ci9yZXN0cmljdGluZm8uaCAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc2VsZWN0Lm91dCAgICAgIHwgMjgyICsrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9zZWxlY3Quc3FsICAgICAgICAgICB8ICA4MiArKysrKysKIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgIHwgICAxICsKIDggZmlsZXMg Y2hhbmdlZCwgNjg5IGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDMyYzZhOGJiZGMuLjU2YjA0NTQx ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwpAQCAtMzIsNiAr MzIsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oIgorI2lu Y2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIApAQCAtMTIyMCwxMSArMTIyMSwxNzQgQEAg YnVpbGRfcGF0aHNfZm9yX09SKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEJ1aWxkaW5nIGluZGV4IHBhdGhzIG92 ZXIgU0FPUCBjbGF1c2UgZGlmZmVycyBmcm9tIHRoZSBsb2dpYyBvZiBPUiBjbGF1c2VzLgor ICogSGVyZSB3ZSBpdGVyYXRlIGFjcm9zcyBhbGwgdGhlIGFycmF5IGVsZW1lbnRzIGFuZCBz cGxpdCB0aGVtIHRvIFNBT1BzLAorICogY29ycmVzcG9uZGluZyB0byBkaWZmZXJlbnQgaW5k ZXhlcy4gV2UgbXVzdCBtYXRjaCBlYWNoIGVsZW1lbnQgdG8gYW4gaW5kZXguCisgKi8KK3N0 YXRpYyBMaXN0ICoKK2J1aWxkX3BhdGhzX2Zvcl9TQU9QKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwsIFJlc3RyaWN0SW5mbyAqcmluZm8sCisJCQkJCSBMaXN0ICpvdGhl cl9jbGF1c2VzKQoreworCUxpc3QJCQkgICAqcmVzdWx0ID0gTklMOworCUxpc3QJCQkgICAq cHJlZGljYXRlX2xpc3RzID0gTklMOworCUxpc3RDZWxsCQkgICAqbGM7CisJUHJlZGljYXRl c0RhdGEJICAgKnBkOworCVNjYWxhckFycmF5T3BFeHByICAqc2FvcCA9IChTY2FsYXJBcnJh eU9wRXhwciAqKSByaW5mby0+Y2xhdXNlOworCisJQXNzZXJ0KElzQShzYW9wLCBTY2FsYXJB cnJheU9wRXhwcikgJiYgc2FvcC0+dXNlT3IpOworCisJaWYgKCFJc0EobHNlY29uZChzYW9w LT5hcmdzKSwgQ29uc3QpKQorCQkvKgorCQkgKiBIYXMgaXQgcHJhY3RpY2FsIG91dGNvbWUg dG8gbWVyZ2UgYXJyYXlzIHdoaWNoIGNvdWxkbid0IGNvbnN0YW50aWZpZWQKKwkJICogYmVm b3JlIHRoYXQgc3RlcD8KKwkJICovCisJCXJldHVybiBOSUw7CisKKwkvKiBDb2xsZWN0IHBy ZWRpY2F0ZXMgKi8KKwlmb3JlYWNoKGxjLCByZWwtPmluZGV4bGlzdCkKKwl7CisJCUluZGV4 T3B0SW5mbyAqaW5kZXggPSAoSW5kZXhPcHRJbmZvICopIGxmaXJzdChsYyk7CisKKwkJLyog VGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gcGFydGlhbCBpbmRleGVzIHN1cHBvcnRpbmcgYml0 bWFwIHNjYW5zICovCisJCWlmICghaW5kZXgtPmFtaGFzZ2V0Yml0bWFwIHx8IGluZGV4LT5p bmRwcmVkID09IE5JTCB8fCBpbmRleC0+cHJlZE9LKQorCQkJY29udGludWU7CisKKwkJcGQg PSBwYWxsb2MwKHNpemVvZihQcmVkaWNhdGVzRGF0YSkpOworCQlwZC0+aWQgPSBmb3JlYWNo X2N1cnJlbnRfaW5kZXgobGMpOworCQkvKiBUaGUgdHJpY2sgd2l0aCByZWR1Y2luZyByZWN1 cnNpb24gaXMgc3RvbGVuIGZyb20gcHJlZGljYXRlX2ltcGxpZWRfYnkgKi8KKwkJcGQtPnBy ZWRpY2F0ZSA9IGxpc3RfbGVuZ3RoKGluZGV4LT5pbmRwcmVkKSA9PSAxID8KKwkJCQkJCQkJ CQkoTm9kZSAqKSBsaW5pdGlhbChpbmRleC0+aW5kcHJlZCkgOgorCQkJCQkJCQkJCShOb2Rl ICopIGluZGV4LT5pbmRwcmVkOworCQlwcmVkaWNhdGVfbGlzdHMgPSBsYXBwZW5kKHByZWRp Y2F0ZV9saXN0cywgKHZvaWQgKikgcGQpOworCX0KKworCS8qIFNwbGl0IHRoZSBhcnJheSBk YXRhIGFjY29yZGluZyB0byBpbmRleCBwcmVkaWNhdGVzLiAqLworCWlmIChwcmVkaWNhdGVf bGlzdHMgPT0gTklMIHx8CisJCSFzYW9wX2NvdmVyZWRfYnlfcHJlZGljYXRlcyhzYW9wLCBw cmVkaWNhdGVfbGlzdHMpKQorCQlyZXR1cm4gTklMOworCisJb3RoZXJfY2xhdXNlcyA9IGxp c3RfZGVsZXRlX3B0cihvdGhlcl9jbGF1c2VzLCByaW5mbyk7CisKKwkvKgorCSAqIEhhdmlu ZyBpbmNvbWluZyBTQU9QIHNwbGl0IHRvIHNldCBvZiBzbWFsbGVyIFNBT1BzIHdoaWNoIGNh biBiZSBhcHBsaWVkCisJICogdG8gcGFydGlhbCBpbmRleGVzLCBnZW5lcmF0ZSBwYXRocyBm b3IgZWFjaCBvbmUuCisJICovCisJZm9yZWFjaChsYywgcHJlZGljYXRlX2xpc3RzKQorCXsK KwkJSW5kZXhPcHRJbmZvCSAgICppbmRleDsKKwkJSW5kZXhDbGF1c2VTZXQJCWNsYXVzZXNl dDsKKwkJTGlzdAkJCSAgICppbmRleHBhdGhzOworCQlSZXN0cmljdEluZm8JICAgKnJpbmZv MSA9IE5VTEw7CisJCUV4cHIJCQkgICAqY2xhdXNlOworCQlBcnJheVR5cGUJCSAgICphcnJh eXZhbCA9IE5VTEw7CisJCUFycmF5RXhwcgkJICAgKmFyciA9IE5VTEw7CisJCUNvbnN0CQkJ ICAgKmFycmF5Y29uc3QgPSBsc2Vjb25kX25vZGUoQ29uc3QsIHNhb3AtPmFyZ3MpOworCQlT Y2FsYXJBcnJheU9wRXhwciAgKmRlc3QgPSBtYWtlTm9kZShTY2FsYXJBcnJheU9wRXhwcik7 CisKKwkJcGQgPSAoUHJlZGljYXRlc0RhdGEgKikgbGZpcnN0KGxjKTsKKwkJaWYgKHBkLT5l bGVtcyA9PSBOSUwpCisJCQkvKiBUaGUgaW5kZXggZG9lc24ndCBwYXJ0aWNpcGF0ZSBpbiB0 aGlzIG9wZXJhdGlvbiAqLworCQkJY29udGludWU7CisKKwkJLyogTWFrZSB1cCBuZXcgYXJy YXkgKi8KKwkJYXJyYXl2YWwgPSBEYXR1bUdldEFycmF5VHlwZVAoYXJyYXljb25zdC0+Y29u c3R2YWx1ZSk7CisJCWFyciA9IG1ha2VOb2RlKEFycmF5RXhwcik7CisJCWFyci0+YXJyYXlf Y29sbGlkID0gYXJyYXljb25zdC0+Y29uc3Rjb2xsaWQ7CisJCWFyci0+YXJyYXlfdHlwZWlk ID0gYXJyYXljb25zdC0+Y29uc3R0eXBlOworCQlhcnItPmVsZW1lbnRfdHlwZWlkID0gYXJy YXl2YWwtPmVsZW10eXBlOworCQlhcnItPmVsZW1lbnRzID0gcGQtPmVsZW1zOworCQlhcnIt PmxvY2F0aW9uID0gLTE7CisJCWFyci0+bXVsdGlkaW1zID0gZmFsc2U7CisKKwkJLyogQ29t cG9zZSBuZXcgU0FPUCwgcGFydGlhbGx5IGNvdmVyaW5nIHRoZSBzb3VyY2Ugb25lICovCisJ CW1lbWNweShkZXN0LCBzYW9wLCBzaXplb2YoU2NhbGFyQXJyYXlPcEV4cHIpKTsKKwkJZGVz dC0+YXJncyA9IGxpc3RfbWFrZTIobGluaXRpYWwoc2FvcC0+YXJncyksIGFycik7CisKKwkJ Y2xhdXNlID0gKEV4cHIgKikgZXN0aW1hdGVfZXhwcmVzc2lvbl92YWx1ZShyb290LCAoTm9k ZSAqKSBkZXN0KTsKKworCQkvKgorCQkgKiBDcmVhdGUgbmV3IFJlc3RyaWN0SW5mby4gSXQg bWF5YmUgbW9yZSBoZWF2eSB0aGFuIGp1c3QgY29weSBub2RlLAorCQkgKiBidXQgcmVtZW1i ZXIgc29tZSBpbnRlcm5hbHM6IHRoZSBzZXJpYWwgbnVtYmVyLCBzZWxlY3Rpdml0eQorCQkg KiBjYWNoZSBldGMuCisJCSAqLworCQlyaW5mbzEgPSBtYWtlX3Jlc3RyaWN0aW5mbyhyb290 LCBjbGF1c2UsCisJCQkJCQkJCSAgIHJpbmZvLT5pc19wdXNoZWRfZG93biwKKwkJCQkJCQkJ ICAgcmluZm8tPmhhc19jbG9uZSwKKwkJCQkJCQkJICAgcmluZm8tPmlzX2Nsb25lLAorCQkJ CQkJCQkgICByaW5mby0+cHNldWRvY29uc3RhbnQsCisJCQkJCQkJCSAgIHJpbmZvLT5zZWN1 cml0eV9sZXZlbCwKKwkJCQkJCQkJICAgcmluZm8tPnJlcXVpcmVkX3JlbGlkcywKKwkJCQkJ CQkJICAgcmluZm8tPmluY29tcGF0aWJsZV9yZWxpZHMsCisJCQkJCQkJCSAgIHJpbmZvLT5v dXRlcl9yZWxpZHMpOworCisJCWluZGV4ID0gbGlzdF9udGgocmVsLT5pbmRleGxpc3QsIHBk LT5pZCk7CisJCUFzc2VydChwcmVkaWNhdGVfaW1wbGllZF9ieShpbmRleC0+aW5kcHJlZCwg bGlzdF9tYWtlMShyaW5mbzEpLCB0cnVlKSk7CisKKwkJLyogRXhjbHVkaW5nIHBhcnRpYWwg aW5kZXhlcyB3aXRoIHByZWRPSyB3ZSBtYWtlIHRoaXMgc3RhdGVtZW50IGZhbHNlICovCisJ CUFzc2VydCghcHJlZGljYXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHByZWQsIG90aGVyX2Ns YXVzZXMsIGZhbHNlKSk7CisKKwkJLyogVGltZSB0byBnZW5lcmF0ZSBpbmRleCBwYXRocyAq LworCisJCU1lbVNldCgmY2xhdXNlc2V0LCAwLCBzaXplb2YoY2xhdXNlc2V0KSk7CisJCW1h dGNoX2NsYXVzZXNfdG9faW5kZXgocm9vdCwgbGlzdF9tYWtlMShyaW5mbzEpLCBpbmRleCwg JmNsYXVzZXNldCk7CisJCW1hdGNoX2NsYXVzZXNfdG9faW5kZXgocm9vdCwgb3RoZXJfY2xh dXNlcywgaW5kZXgsICZjbGF1c2VzZXQpOworCisJCS8qIFByZWRpY2F0ZSBoYXMgZm91bmQg YWxyZWFkeS4gU28sIGl0IGlzIG9rIGZvciB0aGUgZW1wdHkgbWF0Y2ggKi8KKworCQlpbmRl eHBhdGhzID0gYnVpbGRfaW5kZXhfcGF0aHMocm9vdCwgcmVsLAorCQkJCQkJCQkJICAgaW5k ZXgsICZjbGF1c2VzZXQsCisJCQkJCQkJCQkgICB0cnVlLAorCQkJCQkJCQkJICAgU1RfQklU TUFQU0NBTiwKKwkJCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJCQkgICBOVUxMKTsKKwkJQXNz ZXJ0KGluZGV4cGF0aHMgIT0gTklMKTsKKwkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIGlu ZGV4cGF0aHMpOworCX0KKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgTGlzdCAqCitn ZW5lcmF0ZV9zYW9wX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsCisJCQkJCSAgIFJlc3RyaWN0SW5mbyAqcmluZm8sIExpc3QgKmFsbF9jbGF1c2VzKQor eworCUxpc3QJICAgKnBhdGhsaXN0ID0gTklMOworCVBhdGgJICAgKmJpdG1hcHF1YWw7CisJ TGlzdAkgICAqaW5kbGlzdDsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlmICghZW5hYmxlX29y X3RyYW5zZm9ybWF0aW9uKQorCQlyZXR1cm4gTklMOworCisJLyoKKwkgKiBXZSBtdXN0IGJl IGFibGUgdG8gbWF0Y2ggYXQgbGVhc3Qgb25lIGluZGV4IHRvIGVhY2ggZWxlbWVudCBvZgor CSAqIHRoZSBhcnJheSwgZWxzZSB3ZSBjYW4ndCB1c2UgaXQuCisJICovCisJaW5kbGlzdCA9 IGJ1aWxkX3BhdGhzX2Zvcl9TQU9QKHJvb3QsIHJlbCwgcmluZm8sIGFsbF9jbGF1c2VzKTsK KwlpZiAoaW5kbGlzdCA9PSBOSUwpCisJCXJldHVybiBOSUw7CisKKwkvKgorCSAqIE9LLCBw aWNrIHRoZSBtb3N0IHByb21pc2luZyBBTkQgY29tYmluYXRpb24sIGFuZCBhZGQgaXQgdG8K KwkgKiBwYXRobGlzdC4KKwkgKi8KKwlmb3JlYWNoIChsYywgaW5kbGlzdCkKKwl7CisJCUxp c3QgKnBsaXN0ID0gbGZpcnN0X25vZGUoTGlzdCwgbGMpOworCisJCWJpdG1hcHF1YWwgPSBj aG9vc2VfYml0bWFwX2FuZChyb290LCByZWwsIHBsaXN0KTsKKwkJcGF0aGxpc3QgPSBsYXBw ZW5kKHBhdGhsaXN0LCBiaXRtYXBxdWFsKTsKKwl9CisKKwlyZXR1cm4gcGF0aGxpc3Q7Cit9 CisKIC8qCiAgKiBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMKLSAqCQlMb29rIHRocm91Z2gg dGhlIGxpc3Qgb2YgY2xhdXNlcyB0byBmaW5kIE9SIGNsYXVzZXMsIGFuZCBnZW5lcmF0ZQot ICoJCWEgQml0bWFwT3JQYXRoIGZvciBlYWNoIG9uZSB3ZSBjYW4gaGFuZGxlIHRoYXQgd2F5 LiAgUmV0dXJuIGEgbGlzdAotICoJCW9mIHRoZSBnZW5lcmF0ZWQgQml0bWFwT3JQYXRocy4K KyAqCQlMb29rIHRocm91Z2ggdGhlIGxpc3Qgb2YgY2xhdXNlcyB0byBmaW5kIE9SIGFuZCBT QU9QIGNsYXVzZXMsIGFuZAorICoJCUVhY2ggc2FvcCBjbGF1c2UgYXJlIHNwbGl0dGVkIHRv IGJlIGNvdmVyZWQgYnkgcGFydGlhbCBpbmRleGVzLgorICoJCWdlbmVyYXRlIGEgQml0bWFw T3JQYXRoIGZvciBlYWNoIG9uZSB3ZSBjYW4gaGFuZGxlIHRoYXQgd2F5LgorICoJCVJldHVy biBhIGxpc3Qgb2YgdGhlIGdlbmVyYXRlZCBCaXRtYXBPclBhdGhzLgogICoKICAqIG90aGVy X2NsYXVzZXMgaXMgYSBsaXN0IG9mIGFkZGl0aW9uYWwgY2xhdXNlcyB0aGF0IGNhbiBiZSBh c3N1bWVkIHRydWUKICAqIGZvciB0aGUgcHVycG9zZSBvZiBnZW5lcmF0aW5nIGluZGV4cXVh bHMsIGJ1dCBhcmUgbm90IHRvIGJlIHNlYXJjaGVkIGZvcgpAQCAtMTI0Nyw2OCArMTQxMSw5 OSBAQCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAlmb3JlYWNoKGxjLCBjbGF1c2VzKQogCXsKIAkJUmVzdHJpY3RJbmZv ICpyaW5mbyA9IGxmaXJzdF9ub2RlKFJlc3RyaWN0SW5mbywgbGMpOwotCQlMaXN0CSAgICpw YXRobGlzdDsKKwkJTGlzdAkgICAqcGF0aGxpc3QgPSBOSUw7CiAJCVBhdGgJICAgKmJpdG1h cHF1YWw7CiAJCUxpc3RDZWxsICAgKmo7CiAKLQkJLyogSWdub3JlIFJlc3RyaWN0SW5mb3Mg dGhhdCBhcmVuJ3QgT1JzICovCi0JCWlmICghcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKHJp bmZvKSkKKwkJaWYgKHJlc3RyaWN0aW9uX2lzX3Nhb3BfY2xhdXNlKHJpbmZvKSkKKwkJewor CQkJcGF0aGxpc3QgPSBnZW5lcmF0ZV9zYW9wX3BhdGhsaXN0KHJvb3QsIHJlbCwgcmluZm8s CisJCQkJCQkJCQkJCSAgYWxsX2NsYXVzZXMpOworCQl9CisJCWVsc2UgaWYgKCFyZXN0cmlj dGlvbl9pc19vcl9jbGF1c2UocmluZm8pKQorCQkJLyogSWdub3JlIFJlc3RyaWN0SW5mb3Mg dGhhdCBhcmVuJ3QgT1JzICovCiAJCQljb250aW51ZTsKLQotCQkvKgotCQkgKiBXZSBtdXN0 IGJlIGFibGUgdG8gbWF0Y2ggYXQgbGVhc3Qgb25lIGluZGV4IHRvIGVhY2ggb2YgdGhlIGFy bXMgb2YKLQkJICogdGhlIE9SLCBlbHNlIHdlIGNhbid0IHVzZSBpdC4KLQkJICovCi0JCXBh dGhsaXN0ID0gTklMOwotCQlmb3JlYWNoKGosICgoQm9vbEV4cHIgKikgcmluZm8tPm9yY2xh dXNlKS0+YXJncykKKwkJZWxzZQogCQl7Ci0JCQlOb2RlCSAgICpvcmFyZyA9IChOb2RlICop IGxmaXJzdChqKTsKLQkJCUxpc3QJICAgKmluZGxpc3Q7Ci0KLQkJCS8qIE9SIGFyZ3VtZW50 cyBzaG91bGQgYmUgQU5EcyBvciBzdWItUmVzdHJpY3RJbmZvcyAqLwotCQkJaWYgKGlzX2Fu ZGNsYXVzZShvcmFyZykpCisJCQkvKgorCQkJICogV2UgbXVzdCBiZSBhYmxlIHRvIG1hdGNo IGF0IGxlYXN0IG9uZSBpbmRleCB0byBlYWNoIG9mIHRoZSBhcm1zIG9mCisJCQkgKiB0aGUg T1IsIGVsc2Ugd2UgY2FuJ3QgdXNlIGl0LgorCQkJICovCisJCQlmb3JlYWNoKGosICgoQm9v bEV4cHIgKikgcmluZm8tPm9yY2xhdXNlKS0+YXJncykKIAkJCXsKLQkJCQlMaXN0CSAgICph bmRhcmdzID0gKChCb29sRXhwciAqKSBvcmFyZyktPmFyZ3M7CisJCQkJTm9kZQkgICAqb3Jh cmcgPSAoTm9kZSAqKSBsZmlyc3Qoaik7CisJCQkJTGlzdAkgICAqaW5kbGlzdDsKIAotCQkJ CWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkg YW5kYXJncywKLQkJCQkJCQkJCQkJIGFsbF9jbGF1c2VzKTsKKwkJCQkvKiBPUiBhcmd1bWVu dHMgc2hvdWxkIGJlIEFORHMgb3Igc3ViLVJlc3RyaWN0SW5mb3MgKi8KKwkJCQlpZiAoaXNf YW5kY2xhdXNlKG9yYXJnKSkKKwkJCQl7CisJCQkJCUxpc3QJICAgKmFuZGFyZ3MgPSAoKEJv b2xFeHByICopIG9yYXJnKS0+YXJnczsKIAotCQkJCS8qIFJlY3Vyc2UgaW4gY2FzZSB0aGVy ZSBhcmUgc3ViLU9ScyAqLwotCQkJCWluZGxpc3QgPSBsaXN0X2NvbmNhdChpbmRsaXN0LAot CQkJCQkJCQkJICBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMocm9vdCwgcmVsLAotCQkJCQkJ CQkJCQkJCQkJICAgYW5kYXJncywKLQkJCQkJCQkJCQkJCQkJCSAgIGFsbF9jbGF1c2VzKSk7 Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJUmVzdHJpY3RJbmZvICpyaSA9IGNhc3ROb2Rl KFJlc3RyaWN0SW5mbywgb3JhcmcpOwotCQkJCUxpc3QJICAgKm9yYXJnczsKKwkJCQkJaW5k bGlzdCA9IGJ1aWxkX3BhdGhzX2Zvcl9PUihyb290LCByZWwsCisJCQkJCQkJCQkJCQkgYW5k YXJncywKKwkJCQkJCQkJCQkJCSBhbGxfY2xhdXNlcyk7CiAKLQkJCQlBc3NlcnQoIXJlc3Ry aWN0aW9uX2lzX29yX2NsYXVzZShyaSkpOwotCQkJCW9yYXJncyA9IGxpc3RfbWFrZTEocmkp OworCQkJCQkvKiBSZWN1cnNlIGluIGNhc2UgdGhlcmUgYXJlIHN1Yi1PUnMgKi8KKwkJCQkJ aW5kbGlzdCA9IGxpc3RfY29uY2F0KGluZGxpc3QsCisJCQkJCQkJCQkJICBnZW5lcmF0ZV9i aXRtYXBfb3JfcGF0aHMocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJCQkJCSAgIGFuZGFyZ3Ms CisJCQkJCQkJCQkJCQkJCQkJICAgYWxsX2NsYXVzZXMpKTsKKwkJCQl9CisJCQkJZWxzZQor CQkJCXsKKwkJCQkJUmVzdHJpY3RJbmZvICpyaSA9IGNhc3ROb2RlKFJlc3RyaWN0SW5mbywg b3JhcmcpOworCQkJCQlMaXN0CSAgICpvcmFyZ3M7CiAKLQkJCQlpbmRsaXN0ID0gYnVpbGRf cGF0aHNfZm9yX09SKHJvb3QsIHJlbCwKLQkJCQkJCQkJCQkJIG9yYXJncywKLQkJCQkJCQkJ CQkJIGFsbF9jbGF1c2VzKTsKLQkJCX0KKwkJCQkJQXNzZXJ0KCFyZXN0cmljdGlvbl9pc19v cl9jbGF1c2UocmkpKTsKIAotCQkJLyoKLQkJCSAqIElmIG5vdGhpbmcgbWF0Y2hlZCB0aGlz IGFybSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGlzIE9SCi0JCQkgKiBjbGF1c2Uu Ci0JCQkgKi8KLQkJCWlmIChpbmRsaXN0ID09IE5JTCkKLQkJCXsKLQkJCQlwYXRobGlzdCA9 IE5JTDsKLQkJCQlicmVhazsKLQkJCX0KKwkJCQkJb3JhcmdzID0gbGlzdF9tYWtlMShyaSk7 CiAKLQkJCS8qCi0JCQkgKiBPSywgcGljayB0aGUgbW9zdCBwcm9taXNpbmcgQU5EIGNvbWJp bmF0aW9uLCBhbmQgYWRkIGl0IHRvCi0JCQkgKiBwYXRobGlzdC4KLQkJCSAqLwotCQkJYml0 bWFwcXVhbCA9IGNob29zZV9iaXRtYXBfYW5kKHJvb3QsIHJlbCwgaW5kbGlzdCk7Ci0JCQlw YXRobGlzdCA9IGxhcHBlbmQocGF0aGxpc3QsIGJpdG1hcHF1YWwpOworCQkJCQlpZiAocmVz dHJpY3Rpb25faXNfc2FvcF9jbGF1c2UocmkpKQorCQkJCQl7CisJCQkJCQlMaXN0ICpwYXRo czsKKworCQkJCQkJcGF0aHMgPSBnZW5lcmF0ZV9zYW9wX3BhdGhsaXN0KHJvb3QsIHJlbCwg cmksCisJCQkJCQkJCQkJCQkJCSBhbGxfY2xhdXNlcyk7CisKKwkJCQkJCWlmIChwYXRocyAh PSBOSUwpCisJCQkJCQl7CisJCQkJCQkJLyoKKwkJCQkJCQkgKiBBZGQgcGF0aHMgdG8gcGF0 aGxpc3QgYW5kIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhlCisJCQkJCQkJICogbmV4dCBlbGVt ZW50IG9mIHRoZSBPUiBjbGF1c2UuCisJCQkJCQkJICovCisJCQkJCQkJcGF0aGxpc3QgPSBs aXN0X2NvbmNhdChwYXRobGlzdCwgcGF0aHMpOworCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJ fQorCisJCQkJCQkvKgorCQkJCQkJICogUGFzcyBkb3duIG91dCBvZiB0aGlzIGlmIGNvbnN0 cnVjdGlvbjoKKwkJCQkJCSAqIElmIHNhb3AgaXNuJ3QgY292ZXJlZCBieSBwYXJ0aWFsIGlu ZGV4ZXMsIHRyeSB0bworCQkJCQkJICogYnVpbGQgc2NhbiBwYXRoIGZvciB0aGUgc2FvcCBh cyBhIHdob2xlLgorCQkJCQkJICovCisJCQkJCX0KKworCQkJCQlpbmRsaXN0ID0gYnVpbGRf cGF0aHNfZm9yX09SKHJvb3QsIHJlbCwKKwkJCQkJCQkJCQkJCSBvcmFyZ3MsCisJCQkJCQkJ CQkJCQkgYWxsX2NsYXVzZXMpOworCQkJCX0KKworCQkJCS8qCisJCQkJICogSWYgbm90aGlu ZyBtYXRjaGVkIHRoaXMgYXJtLCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoaXMgT1IK KwkJCQkgKiBjbGF1c2UuCisJCQkJICovCisJCQkJaWYgKGluZGxpc3QgPT0gTklMKQorCQkJ CXsKKwkJCQkJcGF0aGxpc3QgPSBOSUw7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCS8q CisJCQkJICogT0ssIHBpY2sgdGhlIG1vc3QgcHJvbWlzaW5nIEFORCBjb21iaW5hdGlvbiwg YW5kIGFkZCBpdCB0bworCQkJCSAqIHBhdGhsaXN0LgorCQkJCSAqLworCQkJCWJpdG1hcHF1 YWwgPSBjaG9vc2VfYml0bWFwX2FuZChyb290LCByZWwsIGluZGxpc3QpOworCQkJCXBhdGhs aXN0ID0gbGFwcGVuZChwYXRobGlzdCwgYml0bWFwcXVhbCk7CisJCQl9CiAJCX0KIAogCQkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKaW5kZXggYzM3YjQxNmUy NC4uOGVkODBhNzhiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5j CkBAIC0xMTIsNiArMTEyLDUyIEBAIHN0YXRpYyBPaWQJZ2V0X2J0cmVlX3Rlc3Rfb3AoT2lk IHByZWRfb3AsIE9pZCBjbGF1c2Vfb3AsIGJvb2wgcmVmdXRlX2l0KTsKIHN0YXRpYyB2b2lk IEludmFsaWRhdGVPcHJQcm9vZkNhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSk7CiAKIAorLyoKKyAqIENvdWxkIHRoaXMgQU5ZICgpIGV4 cHJlc3Npb24gY2FuIGJlIHNwbGl0IGludG8gYSBzZXQgb2YgQU5ZcyBvdmVyIHBhcnRpYWwK KyAqIGluZGV4ZXM/IElmIHllcywgcmV0dXJuIHRoZXNlIHNhb3BzIGluIHRoZSBQcmVkaWNh dGVzRGF0YSBzdHJ1Y3R1cmUuCisgKi8KK2Jvb2wKK3Nhb3BfY292ZXJlZF9ieV9wcmVkaWNh dGVzKFNjYWxhckFycmF5T3BFeHByICpzYW9wLCBMaXN0ICpwcmVkaWNhdGVfbGlzdHMpCit7 CisJTGlzdENlbGwJCSAgICpsYzsKKwlQcmVkSXRlckluZm9EYXRhCWNsYXVzZV9pbmZvOwor CWJvb2wJCQkJcmVzdWx0ID0gZmFsc2U7CisKKwlpZiAocHJlZGljYXRlX2NsYXNzaWZ5KChO b2RlICopIHNhb3AsICZjbGF1c2VfaW5mbykgIT0gQ0xBU1NfT1IpCisJCXJldHVybiBmYWxz ZTsKKworCWl0ZXJhdGVfYmVnaW4ocGl0ZW0sIChOb2RlICopIHNhb3AsIGNsYXVzZV9pbmZv KQorCXsKKwkJcmVzdWx0ID0gZmFsc2U7CisKKwkJZm9yZWFjaChsYywgcHJlZGljYXRlX2xp c3RzKQorCQl7CisJCQlQcmVkaWNhdGVzRGF0YSAqcGQgPSAoUHJlZGljYXRlc0RhdGEgKikg bGZpcnN0KGxjKTsKKworCQkJaWYgKCFwcmVkaWNhdGVfaW1wbGllZF9ieV9yZWN1cnNlKHBp dGVtLCBwZC0+cHJlZGljYXRlLCBmYWxzZSkpCisJCQkJY29udGludWU7CisKKwkJCS8qIFBy ZWRpY2F0ZSBpcyBmb3VuZC4gQWRkIHRoZSBlbGVtIHRvIHRoZSBzYW9wIGNsYXVzZSAqLwor CQkJQXNzZXJ0KElzQShwaXRlbSwgT3BFeHByKSk7CisKKwkJCS8qIEV4dHJhY3QgY29uc3Rh bnQgZnJvbSB0aGUgZXhwcmVzc2lvbiAqLworCQkJcGQtPmVsZW1zID0gbGFwcGVuZChwZC0+ ZWxlbXMsCisJCQkJCWNvcHlPYmplY3QobHNlY29uZF9ub2RlKENvbnN0LCAoKE9wRXhwciAq KSBwaXRlbSktPmFyZ3MpKSk7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0K KworCQlpZiAoIXJlc3VsdCkKKwkJCS8qCisJCQkgKiBUaGUgZWxlbWVudCBkb2Vzbid0IGZp dCBhbnkgaW5kZXguIEludGVycnVwdCB0aGUgcHJvY2VzcyBpbW1lZGlhdGVseQorCQkJICov CisJCQlicmVhazsKKwl9CisJaXRlcmF0ZV9lbmQoY2xhdXNlX2luZm8pOworCisJcmV0dXJu IHJlc3VsdDsKK30KKwogLyoKICAqIHByZWRpY2F0ZV9pbXBsaWVkX2J5CiAgKgkgIFJlY3Vy c2l2ZWx5IGNoZWNrcyB3aGV0aGVyIHRoZSBjbGF1c2VzIGluIGNsYXVzZV9saXN0IGltcGx5 IHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZXN0 cmljdGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5j CmluZGV4IDBiNDA2ZTkzMzQuLjFkYWQxZGM2NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3Jlc3RyaWN0aW5mby5jCkBAIC00MjEsNiArNDIxLDE5IEBAIHJlc3RyaWN0 aW9uX2lzX29yX2NsYXVzZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbykKIAkJcmV0dXJu IGZhbHNlOwogfQogCitib29sCityZXN0cmljdGlvbl9pc19zYW9wX2NsYXVzZShSZXN0cmlj dEluZm8gKnJlc3RyaWN0aW5mbykKK3sKKwlpZiAocmVzdHJpY3RpbmZvLT5jbGF1c2UgJiYg SXNBKHJlc3RyaWN0aW5mby0+Y2xhdXNlLCBTY2FsYXJBcnJheU9wRXhwcikpCisJeworCQlT Y2FsYXJBcnJheU9wRXhwciAqc2FvcCA9IChTY2FsYXJBcnJheU9wRXhwciAqKSByZXN0cmlj dGluZm8tPmNsYXVzZTsKKworCQlpZiAoc2FvcC0+dXNlT3IpCisJCQlyZXR1cm4gdHJ1ZTsK Kwl9CisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogcmVzdHJpY3Rpb25faXNfc2VjdXJl bHlfcHJvbW90YWJsZQogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9v cHRpbWl6ZXIuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAppbmRleCAz NWFiNTc3NTAxLi4yMzJhZmNkMDBjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5o CkBAIC0xNjAsNiArMTYwLDIyIEBAIGV4dGVybiBMaXN0ICpleHBhbmRfZnVuY3Rpb25fYXJn dW1lbnRzKExpc3QgKmFyZ3MsIGJvb2wgaW5jbHVkZV9vdXRfYXJndW1lbnRzLAogCiAvKiBp biB1dGlsL3ByZWR0ZXN0LmM6ICovCiAKKy8qCisgKiBDb250YWlucyBpbmZvcm1hdGlvbiBu ZWVkZWQgdG8gZXh0cmFjdCBmcm9tIHNhb3AgYSBzZXQgb2YgZWxlbWVudHMgd2hpY2ggY2Fu CisgKiBiZSBjb3ZlcmVkIGJ5IHRoZSBwYXJ0aWFsIGluZGV4OgorICogaWQgLSBjYWxsZXIn cyBpZGVudGlmaWNhdGlvbiBvZiB0aGUgaW5kZXguCisgKiBwcmVkaWNhdGUgLSBwcmVkaWNh dGUgZXhwcmVzc2lvbiBvZiB0aGUgaW5kZXgKKyAqIGVsZW1zIC0gcmV0dXJuaW5nIGxpc3Qg b2YgYXJyYXkgZWxlbWVudHMgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhpcyBwcmVkaWNhdGUK KyAqLwordHlwZWRlZiBzdHJ1Y3QgUHJlZGljYXRlc0RhdGEKK3sKKwlpbnQJCWlkOworCU5v ZGUgICAqcHJlZGljYXRlOworCUxpc3QgICAqZWxlbXM7Cit9IFByZWRpY2F0ZXNEYXRhOwor CitleHRlcm4gYm9vbCBzYW9wX2NvdmVyZWRfYnlfcHJlZGljYXRlcyhTY2FsYXJBcnJheU9w RXhwciAqc2FvcCwKKwkJCQkJCQkJCSAgTGlzdCAqcHJlZGljYXRlX2xpc3RzKTsKIGV4dGVy biBib29sIHByZWRpY2F0ZV9pbXBsaWVkX2J5KExpc3QgKnByZWRpY2F0ZV9saXN0LCBMaXN0 ICpjbGF1c2VfbGlzdCwKIAkJCQkJCQkJIGJvb2wgd2Vhayk7CiBleHRlcm4gYm9vbCBwcmVk aWNhdGVfcmVmdXRlZF9ieShMaXN0ICpwcmVkaWNhdGVfbGlzdCwgTGlzdCAqY2xhdXNlX2xp c3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgg Yi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgKaW5kZXggMWI0MmM4MzJj NS4uMmNkNWZiZjk0MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jlc3Ry aWN0aW5mby5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9yZXN0cmljdGluZm8uaApA QCAtMzQsNiArMzQsNyBAQCBleHRlcm4gUmVzdHJpY3RJbmZvICptYWtlX3Jlc3RyaWN0aW5m byhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCSAgIFJlbGlkcyBvdXRlcl9yZWxpZHMp OwogZXh0ZXJuIFJlc3RyaWN0SW5mbyAqY29tbXV0ZV9yZXN0cmljdGluZm8oUmVzdHJpY3RJ bmZvICpyaW5mbywgT2lkIGNvbW1fb3ApOwogZXh0ZXJuIGJvb2wgcmVzdHJpY3Rpb25faXNf b3JfY2xhdXNlKFJlc3RyaWN0SW5mbyAqcmVzdHJpY3RpbmZvKTsKK2V4dGVybiBib29sIHJl c3RyaWN0aW9uX2lzX3Nhb3BfY2xhdXNlKFJlc3RyaWN0SW5mbyAqcmVzdHJpY3RpbmZvKTsK IGV4dGVybiBib29sIHJlc3RyaWN0aW9uX2lzX3NlY3VyZWx5X3Byb21vdGFibGUoUmVzdHJp Y3RJbmZvICpyZXN0cmljdGluZm8sCiAJCQkJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnJlbCk7 CiBleHRlcm4gTGlzdCAqZ2V0X2FjdHVhbF9jbGF1c2VzKExpc3QgKnJlc3RyaWN0aW5mb19s aXN0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dAppbmRleCAzM2E2ZGNl YjBlLi4wNzAyMDJiMGYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3NlbGVjdC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0 CkBAIC05MDcsNiArOTA3LDI4OCBAQCBzZWxlY3QgdW5pcXVlMSwgdW5pcXVlMiBmcm9tIG9u ZWsyCiAgICAgICAgMCB8ICAgICA5OTgKICgyIHJvd3MpCiAKK1NFVCBlbmFibGVfc2Vxc2Nh biBUTyBvZmY7CitTRVQgZW5hYmxlX2luZGV4c2NhbiBUTyBvZmY7IC0tIE9ubHkgQml0bWFw U2NhbiBpcyBhIHN1YmplY3QgbWF0dGVyIGhlcmUKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3Jt YXRpb24gPSAnb2ZmJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25k OiAoKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQor ICAgICAgICAgRmlsdGVyOiAoKHN0cmluZ3UxID0gJ0EnOjpuYW1lKSBPUiAoc3RyaW5ndTEg PSAnSic6Om5hbWUpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQorKDggcm93cykK KworLS0gV2l0aG91dCB0aGUgdHJhbnNmb3JtYXRpb24gb25seSBzZXFzY2FuIHBvc3NpYmxl IGhlcmUKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBG Uk9NIG9uZWsyCitXSEVSRSB1bmlxdWUyIDwgMSBBTkQgc3RyaW5ndTEgSU4gKCdBJywnSicp IEFORCBzdHJpbmd1MSA8ICdaJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2Vx IFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjogKCh1bmlxdWUyIDwgMSkgQU5EIChzdHJpbmd1 MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA8ICdaJzo6bmFtZSkp CisoMiByb3dzKQorCistLSBVc2UgcGFydGlhbCBpbmRleGVzCitleHBsYWluIChjb3N0cyBv ZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEgSU4gKCdC JywnSicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9IDEpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJp bmd1MSA8ICdCJzo6bmFtZSkgT1IgKHVuaXF1ZTEgPSAxKSkKKyAgICAgICAgIEZpbHRlcjog KChzdHJpbmd1MSA9IEFOWSAoJ3tCLEp9Jzo6bmFtZVtdKSkgQU5EICgoc3RyaW5ndTEgPSAn QSc6Om5hbWUpIE9SICh1bmlxdWUxID0gMSkpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwK KyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKKyg4IHJv d3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBG Uk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIDwgMSBPUiAoc3RyaW5ndTEgPSAnQScgT1Igc3Ry aW5ndTEgPSAnSicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIK KyAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxIDwgMSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpu YW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgRmlsdGVyOiAoKHVuaXF1ZTEg PCAxKSBPUiAoc3RyaW5ndTEgPSAnQSc6Om5hbWUpIE9SIChzdHJpbmd1MSA9ICdKJzo6bmFt ZSkpCisgICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA8 IDEpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAor ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQorKDkgcm93 cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZS T00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPSAxIE9SIHVuaXF1ZTIgPSBQSSgpOjppbnRlZ2Vy OworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g b25lazIKKyAgIEZpbHRlcjogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAzKSkKKygy IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKy0tIE9SIDwtPiBB TlkgdHJhbnNmb3JtYXRpb24gbXVzdCBmaW5kIGEgcGF0aCB3aXRoIHBhcnRpYWwgaW5kZXhl cyBzY2FuCistLSByZWdhcmRsZXNzIHRoZSBjbGF1c2UgcmVwcmVzZW50YXRpb24uCitleHBs YWluIChjb3N0cyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJp bmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdKJzsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25k OiAoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0In OjpuYW1lKSkKKyAgICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpu YW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4IHJv d3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsy IFdIRVJFIHN0cmluZ3UxIElOICgnQScsJ0onKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25k OiAoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0In OjpuYW1lKSkKKyAgICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpu YW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4IHJv d3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsy IFdIRVJFIHN0cmluZ3UxID0gQU5ZICgne0EsSn0nKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBD b25kOiAoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwg J0InOjpuYW1lKSkKKyAgICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0n OjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4 IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9u ZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScpIE9SIHN0cmluZ3UxIElOICgnSicpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10p KSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKQorICAgICAgICAgRmlsdGVyOiAoc3RyaW5n dTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwK KyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tK fSc6Om5hbWVbXSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfdTJfcHJ0bAorKDggcm93cykKKworLS0gRG9uJ3Qgc2NhbiBwYXJ0aWFsIGluZGV4 ZXMgYmVjYXVzZSBvZiBleHRyYSB2YWx1ZS4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScsICdKJywgJ0Mn KTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgU2VxIFNjYW4gb24gb25lazIKKyAgICAgICAg IEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSixDfSc6Om5hbWVbXSkpCisoMyByb3dz KQorCitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgdW5pcXVlMiBGUk9NIG9uZWsyCitX SEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCAnQScpIEFORCAoc3RyaW5ndTEgPSAnQScgT1Igc3Ry aW5ndTEgPSAnQScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9u ZWsyCisgICBSZWNoZWNrIENvbmQ6IChzdHJpbmd1MSA8ICdCJzo6bmFtZSkKKyAgIEZpbHRl cjogKChzdHJpbmd1MSA9IEFOWSAoJ3tBLEF9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA9 IEFOWSAoJ3tBLEF9Jzo6bmFtZVtdKSkpCisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfdTJfcHJ0bAorKDQgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNU IHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTIgPCAxIEFORCBz dHJpbmd1MSBJTiAoJ0EnLCdKJykgQU5EIHN0cmluZ3UxIDwgJ1onOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25l azIKKyAgIFJlY2hlY2sgQ29uZDogKCgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10p KSBBTkQgKHN0cmluZ3UxIDwgJ1onOjpuYW1lKSkgT1IgKCh1bmlxdWUyIDwgMSkgQU5EIChz dHJpbmd1MSA8ICdCJzo6bmFtZSkpKQorICAgRmlsdGVyOiAoKHVuaXF1ZTIgPCAxKSBBTkQg KHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKSkKKyAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVb XSkpIEFORCAoc3RyaW5ndTEgPCAnWic6Om5hbWUpKQorICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh1bmlxdWUyIDwgMSkKKyg4IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVD VCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0gMSBPUiB1 bmlxdWUxID0gUEkoKTo6aW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJl Y2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMykgT1IgKHVuaXF1ZTEgPSAxKSkKKyAgIC0+ICBC aXRtYXBPcgorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3By dGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMykKKyAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCisoNyByb3dzKQorCitleHBsYWluIChjb3N0 cyBvZmYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5p cXVlMSBJTiAoMSwgUEkoKTo6aW50ZWdlcik7IC0tIFRPRE86IHdoeSBpdCBpcyBkaWZmZXJz IGZyb20gcHJldmlvdXMgZXhhbXBsZT8KKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2Fu IG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICh1bmlxdWUxID0gQU5ZICgnezEsM30nOjpp bnRlZ2VyW10pKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwK KyAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gQU5ZICgnezEsM30nOjppbnRlZ2Vy W10pKQorKDQgcm93cykKKworLS0gRG9uJ3QgYXBwbHkgdGhlIG9wdGltaXphdGlvbiB0byBj bGF1c2VzLCBjb250YWluaW5nIHZvbGF0aWxlIGZ1bmN0aW9ucworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVl MSA9IChyYW5kb20oKSoyKTo6aW50ZWdlciBPUiB1bmlxdWUxID0gKHJhbmRvbSgpKjMpOjpp bnRlZ2VyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBvbmVrMgorICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAoKHJh bmRvbSgpICogJzInOjpkb3VibGUgcHJlY2lzaW9uKSk6OmludGVnZXIpIE9SICh1bmlxdWUx ID0gKChyYW5kb20oKSAqICczJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyKSkKKygy IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3Ux IEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgSU4gKChyYW5kb20oKSoyKTo6aW50ZWdlciwg KHJhbmRvbSgpKjMpOjppbnRlZ2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjogKHVuaXF1 ZTEgPSBBTlkgKEFSUkFZWygocmFuZG9tKCkgKiAnMic6OmRvdWJsZSBwcmVjaXNpb24pKTo6 aW50ZWdlciwgKChyYW5kb20oKSAqICczJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2Vy XSkpCisoMiByb3dzKQorCistLSBDb21iaW5lIGRpZmZlcmVudCBzYW9wcy4gU29lIG9mIHRo ZW0gZG9lc250JyBmaXQgYSBzZXQgb2YgcGFydGlhbCBpbmRleGVzLAorLS0gYnV0IG90aGVy IGZpdHMuCistLSBVbmZvcnR1bmF0ZWx5LCB3ZSBkb24ndCBjb21iaW5lIHNhb3AgYW5kIE9S IGNsYXVzZXMgc28gZmFyLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIs c3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUKKyAgdW5pcXVlMSBJTiAoMSwyLDIxKSBBTkQK KyAgKHN0cmluZ3UxIElOICgnQScsJ0onKSBPUiB1bmlxdWUxIElOICgzLDQpIE9SIHN0cmlu Z3UxID0gJ0onKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNo ZWNrIENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKSBPUiAoc3RyaW5n dTEgPCAnQic6Om5hbWUpIE9SICgodW5pcXVlMSA9IEFOWSAoJ3szLDR9Jzo6aW50ZWdlcltd KSkgQU5EICh1bmlxdWUxID0gQU5ZICgnezEsMiwyMX0nOjppbnRlZ2VyW10pKSkgT1IgKHN0 cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgIEZpbHRlcjogKCh1bmlxdWUxID0gQU5ZICgnezEs MiwyMX0nOjppbnRlZ2VyW10pKSBBTkQgKChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFt ZVtdKSkgT1IgKHVuaXF1ZTEgPSBBTlkgKCd7Myw0fSc6OmludGVnZXJbXSkpIE9SIChzdHJp bmd1MSA9ICdKJzo6bmFtZSkpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBD b25kOiAoKHVuaXF1ZTEgPSBBTlkgKCd7Myw0fSc6OmludGVnZXJbXSkpIEFORCAodW5pcXVl MSA9IEFOWSAoJ3sxLDIsMjF9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBD b25kOiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpCisoMTEgcm93cykKKworLS0gQ2hlY2sgcmVj dXJzaXZlIGNvbWJpbmF0aW9uIG9mIE9SIGFuZCBTQU9QIGV4cHJlc3Npb25zCitleHBsYWlu IChjb3N0cyBvZmYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hF UkUgdW5pcXVlMSA8IDEgT1IgKHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24g b25lazIKKyAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVb XSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKHVuaXF1ZTEgPCAxKSkKKyAgIEZp bHRlcjogKChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkgT1IgKHVuaXF1ZTEg PCAxKSkKKyAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmlu Z3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBvbmVrMl91Ml9wcnRsCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfdTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEg PCAxKQorKDkgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIs IHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFICh1bmlxdWUxIDwgMSBPUiBzdHJpbmd1MSBJ TiAoJ0EnLCdKJykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFw IEhlYXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxID0gQU5Z ICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAodW5pcXVl MSA8IDEpKQorICAgRmlsdGVyOiAoKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10p KSBPUiAodW5pcXVlMSA8IDEpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodW5pcXVlMSA8IDEpCisoOSByb3dzKQorCistLSBBbHRob3VnaCBTQU9QIGRvZXNu J3QgZml0IHBhcnRpYWwgaW5kZXhlcyBmdWxseSwgd2UgY2FuIHVzZSBhbmRlZCBPUiBjbGF1 c2UKKy0tIHRvIHNjYW4gYW5vdGhlciBjb3VwbGUgb2YgcGFydGlhbCBpbmRleGVzLgorZXhw bGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIKK1dIRVJFIHN0 cmluZ3UxIElOICgnQicsJ0onKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAx KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdh dGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICAgICAgICBSZWNoZWNr IENvbmQ6ICgoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9SICh1bmlxdWUxID0gMSkpCisgICAg ICAgICBGaWx0ZXI6ICgoc3RyaW5ndTEgPSBBTlkgKCd7QixKfSc6Om5hbWVbXSkpIEFORCAo KHN0cmluZ3UxID0gJ0EnOjpuYW1lKSBPUiAodW5pcXVlMSA9IDEpKSkKKyAgICAgICAgIC0+ ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9u ZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBv bmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVl MSA9IDEpCisoOCByb3dzKQorCitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5h YmxlX3NlcXNjYW47CiAtLQogLS0gVGVzdCBzb21lIGNvcm5lciBjYXNlcyB0aGF0IGhhdmUg YmVlbiBrbm93biB0byBjb25mdXNlIHRoZSBwbGFubmVyCiAtLQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nl bGVjdC5zcWwKaW5kZXggMDE5ZjFlNzY3My4uMGU2NTBhMjMwMSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zZWxlY3Quc3FsCkBAIC0yMzQsNiArMjM0LDg4IEBAIHNlbGVjdCB1bmlxdWUxLCB1bmlx dWUyIGZyb20gb25lazIKIHNlbGVjdCB1bmlxdWUxLCB1bmlxdWUyIGZyb20gb25lazIKICAg d2hlcmUgKHVuaXF1ZTIgPSAxMSBhbmQgc3RyaW5ndTEgPCAnQicpIG9yIHVuaXF1ZTEgPSAw OwogCitTRVQgZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4g VE8gb2ZmOyAtLSBPbmx5IEJpdG1hcFNjYW4gaXMgYSBzdWJqZWN0IG1hdHRlciBoZXJlCitT RVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gJ29mZic7CitleHBsYWluIChjb3N0cyBv ZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSA9ICdBJyBP UiBzdHJpbmd1MSA9ICdKJzsKKy0tIFdpdGhvdXQgdGhlIHRyYW5zZm9ybWF0aW9uIG9ubHkg c2Vxc2NhbiBwb3NzaWJsZSBoZXJlCitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgdW5p cXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMiA8IDEgQU5EIHN0cmlu Z3UxIElOICgnQScsJ0onKSBBTkQgc3RyaW5ndTEgPCAnWic7CistLSBVc2UgcGFydGlhbCBp bmRleGVzCitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVr MgorV0hFUkUgc3RyaW5ndTEgSU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1Ig dW5pcXVlMSA9IDEpOworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0 cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPCAxIE9SIChzdHJpbmd1MSA9ICdB JyBPUiBzdHJpbmd1MSA9ICdKJyk7CitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgdW5p cXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IDEgT1IgdW5pcXVl MiA9IFBJKCk6OmludGVnZXI7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisK Ky0tIE9SIDwtPiBBTlkgdHJhbnNmb3JtYXRpb24gbXVzdCBmaW5kIGEgcGF0aCB3aXRoIHBh cnRpYWwgaW5kZXhlcyBzY2FuCistLSByZWdhcmRsZXNzIHRoZSBjbGF1c2UgcmVwcmVzZW50 YXRpb24uCitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVr MiBXSEVSRSBzdHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdKJzsKK2V4cGxhaW4gKGNv c3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElO ICgnQScsJ0onKTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IG9uZWsyIFdIRVJFIHN0cmluZ3UxID0gQU5ZICgne0EsSn0nKTsKK2V4cGxhaW4gKGNvc3Rz IG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgn QScpIE9SIHN0cmluZ3UxIElOICgnSicpOworCistLSBEb24ndCBzY2FuIHBhcnRpYWwgaW5k ZXhlcyBiZWNhdXNlIG9mIGV4dHJhIHZhbHVlLgorZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VM RUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJywgJ0onLCAn QycpOworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIgRlJPTSBvbmVrMgor V0hFUkUgc3RyaW5ndTEgSU4gKCdBJywgJ0EnKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHN0 cmluZ3UxID0gJ0EnKTsKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIs IHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTIgPCAxIEFORCBzdHJpbmd1MSBJ TiAoJ0EnLCdKJykgQU5EIHN0cmluZ3UxIDwgJ1onOworZXhwbGFpbiAoY29zdHMgb2ZmKQor U0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPSAx IE9SIHVuaXF1ZTEgPSBQSSgpOjppbnRlZ2VyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VM RUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgSU4gKDEs IFBJKCk6OmludGVnZXIpOyAtLSBUT0RPOiB3aHkgaXQgaXMgZGlmZmVycyBmcm9tIHByZXZp b3VzIGV4YW1wbGU/CisKKy0tIERvbid0IGFwcGx5IHRoZSBvcHRpbWl6YXRpb24gdG8gY2xh dXNlcywgY29udGFpbmluZyB2b2xhdGlsZSBmdW5jdGlvbnMKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEg PSAocmFuZG9tKCkqMik6OmludGVnZXIgT1IgdW5pcXVlMSA9IChyYW5kb20oKSozKTo6aW50 ZWdlcjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZS T00gb25lazIKK1dIRVJFIHVuaXF1ZTEgSU4gKChyYW5kb20oKSoyKTo6aW50ZWdlciwgKHJh bmRvbSgpKjMpOjppbnRlZ2VyKTsKKworLS0gQ29tYmluZSBkaWZmZXJlbnQgc2FvcHMuIFNv ZSBvZiB0aGVtIGRvZXNudCcgZml0IGEgc2V0IG9mIHBhcnRpYWwgaW5kZXhlcywKKy0tIGJ1 dCBvdGhlciBmaXRzLgorLS0gVW5mb3J0dW5hdGVseSwgd2UgZG9uJ3QgY29tYmluZSBzYW9w IGFuZCBPUiBjbGF1c2VzIHNvIGZhci4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1 bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFCisgIHVuaXF1ZTEgSU4gKDEsMiwy MSkgQU5ECisgIChzdHJpbmd1MSBJTiAoJ0EnLCdKJykgT1IgdW5pcXVlMSBJTiAoMyw0KSBP UiBzdHJpbmd1MSA9ICdKJyk7CisKKy0tIENoZWNrIHJlY3Vyc2l2ZSBjb21iaW5hdGlvbiBv ZiBPUiBhbmQgU0FPUCBleHByZXNzaW9ucworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNU IHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPCAxIE9SIChz dHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdKJyk7CitleHBsYWluIChjb3N0cyBvZmYp CitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgKHVuaXF1ZTEg PCAxIE9SIHN0cmluZ3UxIElOICgnQScsJ0onKSk7CistLSBBbHRob3VnaCBTQU9QIGRvZXNu J3QgZml0IHBhcnRpYWwgaW5kZXhlcyBmdWxseSwgd2UgY2FuIHVzZSBhbmRlZCBPUiBjbGF1 c2UKKy0tIHRvIHNjYW4gYW5vdGhlciBjb3VwbGUgb2YgcGFydGlhbCBpbmRleGVzLgorZXhw bGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIKK1dIRVJFIHN0 cmluZ3UxIElOICgnQicsJ0onKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAx KTsKKworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwor CiAtLQogLS0gVGVzdCBzb21lIGNvcm5lciBjYXNlcyB0aGF0IGhhdmUgYmVlbiBrbm93biB0 byBjb25mdXNlIHRoZSBwbGFubmVyCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCBmOGQ1ODcxMTUzLi4zY2I0NWVmZTYwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdApAQCAtMjEzOCw2ICsyMTM4LDcgQEAgUHJlZEl0ZXJJbmZvRGF0YQogUHJlZFhhY3RM aXN0CiBQcmVkaWNhdGVMb2NrRGF0YQogUHJlZGljYXRlTG9ja1RhcmdldFR5cGUKK1ByZWRp Y2F0ZXNEYXRhCiBQcmVmZXRjaEJ1ZmZlclJlc3VsdAogUHJlcFBhcmFsbGVsUmVzdG9yZVB0 clR5cGUKIFByZXBhcmVTdG10Ci0tIAoyLjQzLjAKCg== --------------wcPrMQB6xILJsOr0I6P5AMAL--