Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cm5Pe-0006Cr-O4 for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Mar 2017 21:15:55 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cm5Pe-0002hg-9g for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Mar 2017 21:15:54 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cm5NF-0008CY-7p for pgsql-hackers@postgresql.org; Thu, 09 Mar 2017 21:13:25 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cm5NC-0002ZR-F2 for pgsql-hackers@postgresql.org; Thu, 09 Mar 2017 21:13:23 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 99AB4209FA for ; Thu, 9 Mar 2017 16:13:21 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute7.internal (MEProxy); Thu, 09 Mar 2017 16:13:21 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=smtpout; bh=5fw27+XSDY1znJ CJBTzdWBn4V4s=; b=AwRUfDHnDbmVDPIWpsoJn1OeELXN/BdqU38qeHF5dnKXV/ e4dXMcdMPoQybSVl21DwqYFLeVNDOV+z4IK6HJTZSAebUQGc8VsYyYjIwM48yvvZ /ZSsbX+bs8oSJnXMywTKzlcS38riE13UUtBGbdHSh+kQxNXthgbS6MtBVCVM8= X-ME-Sender: X-Sasl-enc: VpqyVIdbSutUFns7yTjoAjMRuiF4EskufJ4zNXe6qO/N 1489094000 Received: from april.local (c-73-13-66-39.hsd1.pa.comcast.net [73.13.66.39]) by mail.messagingengine.com (Postfix) with ESMTPA id 540887E354 for ; Thu, 9 Mar 2017 16:13:20 -0500 (EST) Subject: Re: ICU integration To: pgsql-hackers References: <85364fde-091f-bbc0-fec2-e3ede39840a6@2ndquadrant.com> <3a88fa29-275b-f547-9957-86d4b2cd68db@2ndquadrant.com> From: Peter Eisentraut Organization: 2ndQuadrant Message-ID: <48b736bd-e589-6e71-3fd1-2d058c319c66@2ndquadrant.com> Date: Thu, 9 Mar 2017 16:13:20 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------B5BBEBAA0C7142E7817D9E04" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------B5BBEBAA0C7142E7817D9E04 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit The v4 patch didn't apply anymore, so here is a rebased patch. No changes in functionality. On 2/16/17 00:10, Peter Eisentraut wrote: > Updated and rebased patch. > > Significant changes: > > - Changed collversion to type text > > - Changed pg_locale_t to a union > > - Use ucol_getAvailable() instead of uloc_getAvailable(), so the set of > initial collations is smaller now, because redundancies are eliminated. > > - Added keyword variants to predefined ICU collations (so you get > "de_phonebook%icu", for example) (So the initial set of collations is > bigger now. :) ) > > - Predefined ICU collations have a comment now, so \dOS+ is useful. > > - Use ucol_nextSortKeyPart() for abbreviated keys > > - Enhanced tests and documentation > > I believe all issues raised in reviews have been addressed. > > Discussion points: > > - Naming of collations: Are we happy with the "de%icu" naming? I might > have come up with that while reviewing the IPv6 zone index patch. ;-) > An alternative might be "de$icu" for more Oracle vibe and avoiding the > need for double quotes in some cases. (But we have mixed-case names > like "de_AT%icu", so further changes would be necessary to fully get rid > of the need for quoting.) A more radical alternative would be to > install ICU locales in a different schema and use the search_path, or > even have a separate search path setting for collations only. Which > leads to ... > > - Selecting default collation provider: Maybe we want a setting, say in > initdb, to determine which provider's collations get the "good" names? > Maybe not necessary for this release, but something to think about. > > - Currently (in this patch), we check a collation's version when it is > first used. But, say, after pg_upgrade, you might want to check all of > them right away. What might be a good interface for that? (Possibly, > we only have to check the ones actually in use, and we have dependency > information for that.) > > > > -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------B5BBEBAA0C7142E7817D9E04 Content-Type: application/x-patch; name="v5-0001-ICU-support.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v5-0001-ICU-support.patch" RnJvbSAwMGYzZmIzZGNkMDM4ZDk0NGU2ZWJlM2MwMjZmYTU2ZTI0MmQ4MWQz IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFRodSwgMTYgRmViIDIwMTcg MDA6MDY6MTYgLTA1MDAKU3ViamVjdDogW1BBVENIIHY1XSBJQ1Ugc3VwcG9y dAoKQWRkIGEgY29sdW1uIGNvbGxwcm92aWRlciB0byBwZ19jb2xsYXRpb24g dGhhdCBkZXRlcm1pbmVzIHdoaWNoIGxpYnJhcnkKcHJvdmlkZXMgdGhlIGNv bGxhdGlvbiBkYXRhLiAgVGhlIGV4aXN0aW5nIGNob2ljZXMgYXJlIGRlZmF1 bHQgYW5kIGxpYmMsCmFuZCB0aGlzIGFkZHMgYW4gaWN1IGNob2ljZSwgd2hp Y2ggdXNlcyB0aGUgSUNVNEMgbGlicmFyeS4KClRoZSBwZ19sb2NhbGVfdCB0 eXBlIGlzIGNoYW5nZWQgdG8gYSB1bmlvbiB0aGF0IGNvbnRhaW5zIHRoZQpw cm92aWRlci1zcGVjaWZpYyBsb2NhbGUgaGFuZGxlcy4gIFVzZXJzIG9mIGxv Y2FsZSBpbmZvcm1hdGlvbiBhcmUKY2hhbmdlZCB0byBsb29rIGludG8gdGhh dCBzdHJ1Y3QgZm9yIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGUgdG8gdXNlLgoK QWxzbyBhZGQgYSBjb2xsdmVyc2lvbiBjb2x1bW4gdGhhdCByZWNvcmRzIHRo ZSB2ZXJzaW9uIG9mIHRoZSBjb2xsYXRpb24Kd2hlbiBpdCBpcyBjcmVhdGVk LCBhbmQgY2hlY2sgYXQgcnVuIHRpbWUgd2hldGhlciBpdCBpcyBzdGlsbCB0 aGUgc2FtZS4KVGhpcyBkZXRlY3RzIHBvdGVudGlhbGx5IGluY29tcGF0aWJs ZSBsaWJyYXJ5IHVwZ3JhZGVzIHRoYXQgY2FuIGNvcnJ1cHQKaW5kZXhlcyBh bmQgb3RoZXIgc3RydWN0dXJlcy4gIFRoaXMgaXMgY3VycmVudGx5IG9ubHkg c3VwcG9ydGVkIGJ5CklDVS1wcm92aWRlZCBjb2xsYXRpb25zLgoKaW5pdGRi IGluaXRpYWxpemVzIHRoZSBkZWZhdWx0IGNvbGxhdGlvbiBzZXQgYXMgYmVm b3JlIGZyb20gdGhlIGBsb2NhbGUKLWFgIG91dHB1dCBidXQgYWxzbyBhZGRz IGFsbCBhdmFpbGFibGUgSUNVIGxvY2FsZXMgd2l0aCBhICIlaWN1IgphcHBl bmRlZC4KCkN1cnJlbnRseSwgSUNVLXByb3ZpZGVkIGNvbGxhdGlvbnMgY2Fu IG9ubHkgYmUgZXhwbGljaXRseSBuYW1lZApjb2xsYXRpb25zLiAgVGhlIGds b2JhbCBkYXRhYmFzZSBsb2NhbGVzIGFyZSBzdGlsbCBhbHdheXMgbGliYy1w cm92aWRlZC4KLS0tCiBhY2xvY2FsLm00ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBjb25maWcvcGtnLm00ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI3NSArKysr KysrKysrKysrCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDMxMyArKysrKysrKysrKysrKwogY29uZmln dXJlLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMzUgKysKIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDE5ICsKIGRvYy9zcmMvc2dtbC9jaGFyc2V0 LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTcyICsrKysrKyst CiBkb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwgICAgICAgICAgICAg ICAgICAgICB8ICAxNCArCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2NvbGxh dGlvbi5zZ21sICAgICAgICAgICAgICB8ICA0MiArKwogZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwgICAgICAgICAgICAgfCAgMTYg Ky0KIHNyYy9NYWtlZmlsZS5nbG9iYWwuaW4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2NvbGxhdGlvbi5jICAgICAgICAgICAgICAgICB8ICAy NiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jICAg ICAgICAgICAgICAgfCAyMDUgKysrKysrKysrLQogc3JjL2JhY2tlbmQvY29t bW9uLm1rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgICAgICAg ICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5j ICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKwogc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKy0K IHNyYy9iYWNrZW5kL3JlZ2V4L3JlZ2NfcGdfbG9jYWxlLmMgICAgICAgICAg ICAgICAgIHwgMTEwICsrKy0tCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHku YyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvZm9ybWF0dGluZy5jICAgICAgICAgICAgICAgICB8IDQ1 MyArKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9saWtlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDUzICsrLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jICAgICAgICAgICAgICAg ICAgfCAyNTkgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYyAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAgICAgICAgICAgICAgICAg fCAxNTUgKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvbWIvZW5jbmFtZXMu YyAgICAgICAgICAgICAgICAgICAgfCAgNzYgKysrKwogc3JjL2Jpbi9pbml0 ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMg Ky0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDU1ICsrLQogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmggICAgICAgICAgICAgICAgIHwg IDI1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbl9mbi5o ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9j b2xsYXRpb25jbWRzLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9tYi9wZ193Y2hhci5oICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggICAgICAgICAgICAgICAgICAgICB8ICAxMSArCiBzcmMvaW5j bHVkZS9wZ19jb25maWcuaC5pbiAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNiArCiBzcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCAgICAgICAg ICAgICAgICAgICAgICB8ICAzMiArLQogc3JjL3Rlc3QvcmVncmVzcy9HTlVt YWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogLi4uL3tj b2xsYXRlLmxpbnV4LnV0Zjgub3V0ID0+IGNvbGxhdGUuaWN1Lm91dH0gICAg fCAxODggKysrKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv bGxhdGUubGludXgudXRmOC5vdXQgICB8ICA3OCArKystCiAuLi4ve2NvbGxh dGUubGludXgudXRmOC5zcWwgPT4gY29sbGF0ZS5pY3Uuc3FsfSAgICB8ICA5 OSArKystLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51 dGY4LnNxbCAgICAgICAgfCAgMzEgKysKIDQxIGZpbGVzIGNoYW5nZWQsIDIz NDQgaW5zZXJ0aW9ucygrKSwgNDkzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGNvbmZpZy9wa2cubTQKIGNvcHkgc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC97Y29sbGF0ZS5saW51eC51dGY4Lm91dCA9PiBjb2xsYXRl LmljdS5vdXR9ICg4MCUpCiBjb3B5IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3tj b2xsYXRlLmxpbnV4LnV0Zjguc3FsID0+IGNvbGxhdGUuaWN1LnNxbH0gKDgy JSkKCmRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAppbmRl eCA2ZjkzMGI2ZmMxLi41Y2E5MDJiNmEyIDEwMDY0NAotLS0gYS9hY2xvY2Fs Lm00CisrKyBiL2FjbG9jYWwubTQKQEAgLTcsNiArNyw3IEBAIG00X2luY2x1 ZGUoW2NvbmZpZy9kb2Nib29rLm00XSkKIG00X2luY2x1ZGUoW2NvbmZpZy9n ZW5lcmFsLm00XSkKIG00X2luY2x1ZGUoW2NvbmZpZy9saWJ0b29sLm00XSkK IG00X2luY2x1ZGUoW2NvbmZpZy9wZXJsLm00XSkKK200X2luY2x1ZGUoW2Nv bmZpZy9wa2cubTRdKQogbTRfaW5jbHVkZShbY29uZmlnL3Byb2dyYW1zLm00 XSkKIG00X2luY2x1ZGUoW2NvbmZpZy9weXRob24ubTRdKQogbTRfaW5jbHVk ZShbY29uZmlnL3RjbC5tNF0pCmRpZmYgLS1naXQgYS9jb25maWcvcGtnLm00 IGIvY29uZmlnL3BrZy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi44MmJlYTk2ZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvY29u ZmlnL3BrZy5tNApAQCAtMCwwICsxLDI3NSBAQAorZG5sIHBrZy5tNCAtIE1h Y3JvcyB0byBsb2NhdGUgYW5kIHV0aWxpc2UgcGtnLWNvbmZpZy4gICAtKi0g QXV0b2NvbmYgLSotCitkbmwgc2VyaWFsIDExIChwa2ctY29uZmlnLTAuMjku MSkKK2RubAorZG5sIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJl bW5hbnQgPHNjb3R0QG5ldHNwbGl0LmNvbT4uCitkbmwgQ29weXJpZ2h0IMKp IDIwMTItMjAxNSBEYW4gTmljaG9sc29uIDxkYm4ubGlzdHNAZ21haWwuY29t PgorZG5sCitkbmwgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKK2RubCBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorZG5sIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CitkbmwgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KK2Ru bAorZG5sIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKK2RubCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCitkbmwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorZG5sIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KK2RubAorZG5sIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCitkbmwgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKK2RubCBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEKK2RubCAwMjExMS0xMzA3LCBVU0EuCitkbmwKK2RubCBBcyBh IHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSwgaWYgeW91CitkbmwgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMg cGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCitkbmwgY29uZmln dXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5 IGluY2x1ZGUgaXQgdW5kZXIKK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24g dGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0Citkbmwg cHJvZ3JhbS4KKworZG5sIFBLR19QUkVSRVEoTUlOLVZFUlNJT04pCitkbmwg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5jZTogMC4yOQorZG5s CitkbmwgVmVyaWZ5IHRoYXQgdGhlIHZlcnNpb24gb2YgdGhlIHBrZy1jb25m aWcgbWFjcm9zIGFyZSBhdCBsZWFzdAorZG5sIE1JTi1WRVJTSU9OLiBVbmxp a2UgUEtHX1BST0dfUEtHX0NPTkZJRywgd2hpY2ggY2hlY2tzIHRoZSB1c2Vy J3MKK2RubCBpbnN0YWxsZWQgdmVyc2lvbiBvZiBwa2ctY29uZmlnLCB0aGlz IGNoZWNrcyB0aGUgZGV2ZWxvcGVyJ3MgdmVyc2lvbgorZG5sIG9mIHBrZy5t NCB3aGVuIGdlbmVyYXRpbmcgY29uZmlndXJlLgorZG5sCitkbmwgVG8gZW5z dXJlIHRoYXQgdGhpcyBtYWNybyBpcyBkZWZpbmVkLCBhbHNvIGFkZDoKK2Ru bCBtNF9pZm5kZWYoW1BLR19QUkVSRVFdLAorZG5sICAgICBbbTRfZmF0YWwo W211c3QgaW5zdGFsbCBwa2ctY29uZmlnIDAuMjkgb3IgbGF0ZXIgYmVmb3Jl IHJ1bm5pbmcgYXV0b2NvbmYvYXV0b2dlbl0pXSkKK2RubAorZG5sIFNlZSB0 aGUgIlNpbmNlIiBjb21tZW50IGZvciBlYWNoIG1hY3JvIHlvdSB1c2UgdG8g c2VlIHdoYXQgdmVyc2lvbgorZG5sIG9mIHRoZSBtYWNyb3MgeW91IHJlcXVp cmUuCittNF9kZWZ1bihbUEtHX1BSRVJFUV0sCitbbTRfZGVmaW5lKFtQS0df TUFDUk9TX1ZFUlNJT05dLCBbMC4yOS4xXSkKK200X2lmKG00X3ZlcnNpb25f Y29tcGFyZShQS0dfTUFDUk9TX1ZFUlNJT04sIFskMV0pLCAtMSwKKyAgICBb bTRfZmF0YWwoW3BrZy5tNCB2ZXJzaW9uICQxIG9yIGhpZ2hlciBpcyByZXF1 aXJlZCBidXQgXVBLR19NQUNST1NfVkVSU0lPTlsgZm91bmRdKV0pCitdKWRu bCBQS0dfUFJFUkVRCisKK2RubCBQS0dfUFJPR19QS0dfQ09ORklHKFtNSU4t VkVSU0lPTl0pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorZG5sIFNpbmNlOiAwLjE2CitkbmwKK2RubCBTZWFyY2ggZm9yIHRo ZSBwa2ctY29uZmlnIHRvb2wgYW5kIHNldCB0aGUgUEtHX0NPTkZJRyB2YXJp YWJsZSB0bworZG5sIGZpcnN0IGZvdW5kIGluIHRoZSBwYXRoLiBDaGVja3Mg dGhhdCB0aGUgdmVyc2lvbiBvZiBwa2ctY29uZmlnIGZvdW5kCitkbmwgaXMg YXQgbGVhc3QgTUlOLVZFUlNJT04uIElmIE1JTi1WRVJTSU9OIGlzIG5vdCBz cGVjaWZpZWQsIDAuOS4wIGlzCitkbmwgdXNlZCBzaW5jZSB0aGF0J3MgdGhl IGZpcnN0IHZlcnNpb24gd2hlcmUgbW9zdCBjdXJyZW50IGZlYXR1cmVzIG9m CitkbmwgcGtnLWNvbmZpZyBleGlzdGVkLgorQUNfREVGVU4oW1BLR19QUk9H X1BLR19DT05GSUddLAorW200X3BhdHRlcm5fZm9yYmlkKFteXz9QS0dfW0Et Wl9dKyRdKQorbTRfcGF0dGVybl9hbGxvdyhbXlBLR19DT05GSUcoXyhQQVRI fExJQkRJUnxTWVNST09UX0RJUnxBTExPV19TWVNURU1fKENGTEFHU3xMSUJT KSkpPyRdKQorbTRfcGF0dGVybl9hbGxvdyhbXlBLR19DT05GSUdfKERJU0FC TEVfVU5JTlNUQUxMRUR8VE9QX0JVSUxEX0RJUnxERUJVR19TUEVXKSRdKQor QUNfQVJHX1ZBUihbUEtHX0NPTkZJR10sIFtwYXRoIHRvIHBrZy1jb25maWcg dXRpbGl0eV0pCitBQ19BUkdfVkFSKFtQS0dfQ09ORklHX1BBVEhdLCBbZGly ZWN0b3JpZXMgdG8gYWRkIHRvIHBrZy1jb25maWcncyBzZWFyY2ggcGF0aF0p CitBQ19BUkdfVkFSKFtQS0dfQ09ORklHX0xJQkRJUl0sIFtwYXRoIG92ZXJy aWRpbmcgcGtnLWNvbmZpZydzIGJ1aWx0LWluIHNlYXJjaCBwYXRoXSkKKwor aWYgdGVzdCAieCRhY19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0 IjsgdGhlbgorCUFDX1BBVEhfVE9PTChbUEtHX0NPTkZJR10sIFtwa2ctY29u ZmlnXSkKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKwlf cGtnX21pbl92ZXJzaW9uPW00X2RlZmF1bHQoWyQxXSwgWzAuOS4wXSkKKwlB Q19NU0dfQ0hFQ0tJTkcoW3BrZy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lv biAkX3BrZ19taW5fdmVyc2lvbl0pCisJaWYgJFBLR19DT05GSUcgLS1hdGxl YXN0LXBrZ2NvbmZpZy12ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uOyB0aGVu CisJCUFDX01TR19SRVNVTFQoW3llc10pCisJZWxzZQorCQlBQ19NU0dfUkVT VUxUKFtub10pCisJCVBLR19DT05GSUc9IiIKKwlmaQorZmlbXWRubAorXSlk bmwgUEtHX1BST0dfUEtHX0NPTkZJRworCitkbmwgUEtHX0NIRUNLX0VYSVNU UyhNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1Qt Rk9VTkRdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5j ZTogMC4xOAorZG5sCitkbmwgQ2hlY2sgdG8gc2VlIHdoZXRoZXIgYSBwYXJ0 aWN1bGFyIHNldCBvZiBtb2R1bGVzIGV4aXN0cy4gU2ltaWxhciB0bworZG5s IFBLR19DSEVDS19NT0RVTEVTKCksIGJ1dCBkb2VzIG5vdCBzZXQgdmFyaWFi bGVzIG9yIHByaW50IGVycm9ycy4KK2RubAorZG5sIFBsZWFzZSByZW1lbWJl ciB0aGF0IG00IGV4cGFuZHMgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NP TkZJR10pCitkbmwgb25seSBhdCB0aGUgZmlyc3Qgb2NjdXJlbmNlIGluIGNv bmZpZ3VyZS5hYywgc28gaWYgdGhlIGZpcnN0IHBsYWNlCitkbmwgaXQncyBj YWxsZWQgbWlnaHQgYmUgc2tpcHBlZCAoc3VjaCBhcyBpZiBpdCBpcyB3aXRo aW4gYW4gImlmIiwgeW91CitkbmwgaGF2ZSB0byBjYWxsIFBLR19DSEVDS19F WElTVFMgbWFudWFsbHkKK0FDX0RFRlVOKFtQS0dfQ0hFQ0tfRVhJU1RTXSwK K1tBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSlkbmwKK2lmIHRl c3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgQUNfUlVOX0xPRyhbJFBL R19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiQxIl0pOyB0aGVu CisgIG00X2RlZmF1bHQoWyQyXSwgWzpdKQorbTRfaWZ2YWxuKFskM10sIFtl bHNlCisgICQzXSlkbmwKK2ZpXSkKKworZG5sIF9QS0dfQ09ORklHKFtWQVJJ QUJMRV0sIFtDT01NQU5EXSwgW01PRFVMRVNdKQorZG5sIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIEludGVy bmFsIHdyYXBwZXIgY2FsbGluZyBwa2ctY29uZmlnIHZpYSBQS0dfQ09ORklH IGFuZCBzZXR0aW5nCitkbmwgcGtnX2ZhaWxlZCBiYXNlZCBvbiB0aGUgcmVz dWx0LgorbTRfZGVmaW5lKFtfUEtHX0NPTkZJR10sCitbaWYgdGVzdCAtbiAi JCQxIjsgdGhlbgorICAgIHBrZ19jdl9bXSQxPSIkJDEiCisgZWxpZiB0ZXN0 IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBQS0dfQ0hFQ0tfRVhJU1RT KFskM10sCisgICAgICAgICAgICAgICAgICAgICBbcGtnX2N2X1tdJDE9YCRQ S0dfQ09ORklHIC0tW10kMiAiJDMiIDI+L2Rldi9udWxsYAorCQkgICAgICB0 ZXN0ICJ4JD8iICE9ICJ4MCIgJiYgcGtnX2ZhaWxlZD15ZXMgXSwKKwkJICAg ICBbcGtnX2ZhaWxlZD15ZXNdKQorIGVsc2UKKyAgICBwa2dfZmFpbGVkPXVu dHJpZWQKK2ZpW11kbmwKK10pZG5sIF9QS0dfQ09ORklHCisKK2RubCBfUEtH X1NIT1JUX0VSUk9SU19TVVBQT1JURUQKK2RubCAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK2RubCBJbnRlcm5hbCBjaGVjayB0byBzZWUgaWYgcGtn LWNvbmZpZyBzdXBwb3J0cyBzaG9ydCBlcnJvcnMuCitBQ19ERUZVTihbX1BL R19TSE9SVF9FUlJPUlNfU1VQUE9SVEVEXSwKK1tBQ19SRVFVSVJFKFtQS0df UFJPR19QS0dfQ09ORklHXSkKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1w a2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hv cnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19z aG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaVtdZG5sCitdKWRubCBfUEtH X1NIT1JUX0VSUk9SU19TVVBQT1JURUQKKworCitkbmwgUEtHX0NIRUNLX01P RFVMRVMoVkFSSUFCTEUtUFJFRklYLCBNT0RVTEVTLCBbQUNUSU9OLUlGLUZP VU5EXSwKK2RubCAgIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKK2RubCAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorZG5sIFNpbmNlOiAwLjQuMAorZG5sCitkbmwgTm90 ZSB0aGF0IGlmIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhlIGZpcnN0IGNh bGwgdG8KK2RubCBQS0dfQ0hFQ0tfTU9EVUxFUyBtaWdodCBub3QgaGFwcGVu LCB5b3Ugc2hvdWxkIGJlIHN1cmUgdG8gaW5jbHVkZSBhbgorZG5sIGV4cGxp Y2l0IGNhbGwgdG8gUEtHX1BST0dfUEtHX0NPTkZJRyBpbiB5b3VyIGNvbmZp Z3VyZS5hYworQUNfREVGVU4oW1BLR19DSEVDS19NT0RVTEVTXSwKK1tBQ19S RVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSlkbmwKK0FDX0FSR19WQVIo WyQxXVtfQ0ZMQUdTXSwgW0MgY29tcGlsZXIgZmxhZ3MgZm9yICQxLCBvdmVy cmlkaW5nIHBrZy1jb25maWddKWRubAorQUNfQVJHX1ZBUihbJDFdW19MSUJT XSwgW2xpbmtlciBmbGFncyBmb3IgJDEsIG92ZXJyaWRpbmcgcGtnLWNvbmZp Z10pZG5sCisKK3BrZ19mYWlsZWQ9bm8KK0FDX01TR19DSEVDS0lORyhbZm9y ICQxXSkKKworX1BLR19DT05GSUcoWyQxXVtfQ0ZMQUdTXSwgW2NmbGFnc10s IFskMl0pCitfUEtHX0NPTkZJRyhbJDFdW19MSUJTXSwgW2xpYnNdLCBbJDJd KQorCittNF9kZWZpbmUoW19QS0dfVEVYVF0sIFtBbHRlcm5hdGl2ZWx5LCB5 b3UgbWF5IHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzICQxW11fQ0ZM QUdTCithbmQgJDFbXV9MSUJTIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNhbGwg cGtnLWNvbmZpZy4KK1NlZSB0aGUgcGtnLWNvbmZpZyBtYW4gcGFnZSBmb3Ig bW9yZSBkZXRhaWxzLl0pCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7 IHRoZW4KKyAgIAlBQ19NU0dfUkVTVUxUKFtub10pCisgICAgICAgIF9QS0df U0hPUlRfRVJST1JTX1NVUFBPUlRFRAorICAgICAgICBpZiB0ZXN0ICRfcGtn X3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAg ICQxW11fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMg LS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJzICIkMiIgMj4mMWAKKyAg ICAgICAgZWxzZSAKKwkgICAgICAgICQxW11fUEtHX0VSUk9SUz1gJFBLR19D T05GSUcgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJzICIkMiIgMj4m MWAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2Fn ZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkJDFb XV9QS0dfRVJST1JTIiA+JkFTX01FU1NBR0VfTE9HX0ZECisKKwltNF9kZWZh dWx0KFskNF0sIFtBQ19NU0dfRVJST1IoCitbUGFja2FnZSByZXF1aXJlbWVu dHMgKCQyKSB3ZXJlIG5vdCBtZXQ6CisKKyQkMV9QS0dfRVJST1JTCisKK0Nv bnNpZGVyIGFkanVzdGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25t ZW50IHZhcmlhYmxlIGlmIHlvdQoraW5zdGFsbGVkIHNvZnR3YXJlIGluIGEg bm9uLXN0YW5kYXJkIHByZWZpeC4KKworX1BLR19URVhUXSlbXWRubAorICAg ICAgICBdKQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhl bgorICAgICAJQUNfTVNHX1JFU1VMVChbbm9dKQorCW00X2RlZmF1bHQoWyQ0 XSwgW0FDX01TR19GQUlMVVJFKAorW1RoZSBwa2ctY29uZmlnIHNjcmlwdCBj b3VsZCBub3QgYmUgZm91bmQgb3IgaXMgdG9vIG9sZC4gIE1ha2Ugc3VyZSBp dAoraXMgaW4geW91ciBQQVRIIG9yIHNldCB0aGUgUEtHX0NPTkZJRyBlbnZp cm9ubWVudCB2YXJpYWJsZSB0byB0aGUgZnVsbAorcGF0aCB0byBwa2ctY29u ZmlnLgorCitfUEtHX1RFWFQKKworVG8gZ2V0IHBrZy1jb25maWcsIHNlZSA8 aHR0cDovL3BrZy1jb25maWcuZnJlZWRlc2t0b3Aub3JnLz4uXSlbXWRubAor ICAgICAgICBdKQorZWxzZQorCSQxW11fQ0ZMQUdTPSRwa2dfY3ZfW10kMVtd X0NGTEFHUworCSQxW11fTElCUz0kcGtnX2N2X1tdJDFbXV9MSUJTCisgICAg ICAgIEFDX01TR19SRVNVTFQoW3llc10pCisJJDMKK2ZpW11kbmwKK10pZG5s IFBLR19DSEVDS19NT0RVTEVTCisKKworZG5sIFBLR19DSEVDS19NT0RVTEVT X1NUQVRJQyhWQVJJQUJMRS1QUkVGSVgsIE1PRFVMRVMsIFtBQ1RJT04tSUYt Rk9VTkRdLAorZG5sICAgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorZG5sIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIFNpbmNlOiAwLjI5CitkbmwK K2RubCBDaGVja3MgZm9yIGV4aXN0ZW5jZSBvZiBNT0RVTEVTIGFuZCBnYXRo ZXJzIGl0cyBidWlsZCBmbGFncyB3aXRoCitkbmwgc3RhdGljIGxpYnJhcmll cyBlbmFibGVkLiBTZXRzIFZBUklBQkxFLVBSRUZJWF9DRkxBR1MgZnJvbSAt LWNmbGFncworZG5sIGFuZCBWQVJJQUJMRS1QUkVGSVhfTElCUyBmcm9tIC0t bGlicy4KK2RubAorZG5sIE5vdGUgdGhhdCBpZiB0aGVyZSBpcyBhIHBvc3Np YmlsaXR5IHRoZSBmaXJzdCBjYWxsIHRvCitkbmwgUEtHX0NIRUNLX01PRFVM RVNfU1RBVElDIG1pZ2h0IG5vdCBoYXBwZW4sIHlvdSBzaG91bGQgYmUgc3Vy ZSB0bworZG5sIGluY2x1ZGUgYW4gZXhwbGljaXQgY2FsbCB0byBQS0dfUFJP R19QS0dfQ09ORklHIGluIHlvdXIKK2RubCBjb25maWd1cmUuYWMuCitBQ19E RUZVTihbUEtHX0NIRUNLX01PRFVMRVNfU1RBVElDXSwKK1tBQ19SRVFVSVJF KFtQS0dfUFJPR19QS0dfQ09ORklHXSlkbmwKK19zYXZlX1BLR19DT05GSUc9 JFBLR19DT05GSUcKK1BLR19DT05GSUc9IiRQS0dfQ09ORklHIC0tc3RhdGlj IgorUEtHX0NIRUNLX01PRFVMRVMoJEApCitQS0dfQ09ORklHPSRfc2F2ZV9Q S0dfQ09ORklHW11kbmwKK10pZG5sIFBLR19DSEVDS19NT0RVTEVTX1NUQVRJ QworCisKK2RubCBQS0dfSU5TVEFMTERJUihbRElSRUNUT1JZXSkKK2RubCAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgU2luY2U6IDAuMjcKK2Ru bAorZG5sIFN1YnN0aXR1dGVzIHRoZSB2YXJpYWJsZSBwa2djb25maWdkaXIg YXMgdGhlIGxvY2F0aW9uIHdoZXJlIGEgbW9kdWxlCitkbmwgc2hvdWxkIGlu c3RhbGwgcGtnLWNvbmZpZyAucGMgZmlsZXMuIEJ5IGRlZmF1bHQgdGhlIGRp cmVjdG9yeSBpcworZG5sICRsaWJkaXIvcGtnY29uZmlnLCBidXQgdGhlIGRl ZmF1bHQgY2FuIGJlIGNoYW5nZWQgYnkgcGFzc2luZworZG5sIERJUkVDVE9S WS4gVGhlIHVzZXIgY2FuIG92ZXJyaWRlIHRocm91Z2ggdGhlIC0td2l0aC1w a2djb25maWdkaXIKK2RubCBwYXJhbWV0ZXIuCitBQ19ERUZVTihbUEtHX0lO U1RBTExESVJdLAorW200X3B1c2hkZWYoW3BrZ19kZWZhdWx0XSwgW200X2Rl ZmF1bHQoWyQxXSwgWycke2xpYmRpcn0vcGtnY29uZmlnJ10pXSkKK200X3B1 c2hkZWYoW3BrZ19kZXNjcmlwdGlvbl0sCisgICAgW3BrZy1jb25maWcgaW5z dGFsbGF0aW9uIGRpcmVjdG9yeSBAPDpAXXBrZ19kZWZhdWx0W0A6PkBdKQor QUNfQVJHX1dJVEgoW3BrZ2NvbmZpZ2Rpcl0sCisgICAgW0FTX0hFTFBfU1RS SU5HKFstLXdpdGgtcGtnY29uZmlnZGlyXSwgcGtnX2Rlc2NyaXB0aW9uKV0s LAorICAgIFt3aXRoX3BrZ2NvbmZpZ2Rpcj1dcGtnX2RlZmF1bHQpCitBQ19T VUJTVChbcGtnY29uZmlnZGlyXSwgWyR3aXRoX3BrZ2NvbmZpZ2Rpcl0pCitt NF9wb3BkZWYoW3BrZ19kZWZhdWx0XSkKK200X3BvcGRlZihbcGtnX2Rlc2Ny aXB0aW9uXSkKK10pZG5sIFBLR19JTlNUQUxMRElSCisKKworZG5sIFBLR19O T0FSQ0hfSU5TVEFMTERJUihbRElSRUNUT1JZXSkKK2RubCAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIFNpbmNlOiAwLjI3CitkbmwK K2RubCBTdWJzdGl0dXRlcyB0aGUgdmFyaWFibGUgbm9hcmNoX3BrZ2NvbmZp Z2RpciBhcyB0aGUgbG9jYXRpb24gd2hlcmUgYQorZG5sIG1vZHVsZSBzaG91 bGQgaW5zdGFsbCBhcmNoLWluZGVwZW5kZW50IHBrZy1jb25maWcgLnBjIGZp bGVzLiBCeQorZG5sIGRlZmF1bHQgdGhlIGRpcmVjdG9yeSBpcyAkZGF0YWRp ci9wa2djb25maWcsIGJ1dCB0aGUgZGVmYXVsdCBjYW4gYmUKK2RubCBjaGFu Z2VkIGJ5IHBhc3NpbmcgRElSRUNUT1JZLiBUaGUgdXNlciBjYW4gb3ZlcnJp ZGUgdGhyb3VnaCB0aGUKK2RubCAtLXdpdGgtbm9hcmNoLXBrZ2NvbmZpZ2Rp ciBwYXJhbWV0ZXIuCitBQ19ERUZVTihbUEtHX05PQVJDSF9JTlNUQUxMRElS XSwKK1ttNF9wdXNoZGVmKFtwa2dfZGVmYXVsdF0sIFttNF9kZWZhdWx0KFsk MV0sIFsnJHtkYXRhZGlyfS9wa2djb25maWcnXSldKQorbTRfcHVzaGRlZihb cGtnX2Rlc2NyaXB0aW9uXSwKKyAgICBbcGtnLWNvbmZpZyBhcmNoLWluZGVw ZW5kZW50IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgQDw6QF1wa2dfZGVmYXVs dFtAOj5AXSkKK0FDX0FSR19XSVRIKFtub2FyY2gtcGtnY29uZmlnZGlyXSwK KyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ub2FyY2gtcGtnY29uZmln ZGlyXSwgcGtnX2Rlc2NyaXB0aW9uKV0sLAorICAgIFt3aXRoX25vYXJjaF9w a2djb25maWdkaXI9XXBrZ19kZWZhdWx0KQorQUNfU1VCU1QoW25vYXJjaF9w a2djb25maWdkaXJdLCBbJHdpdGhfbm9hcmNoX3BrZ2NvbmZpZ2Rpcl0pCitt NF9wb3BkZWYoW3BrZ19kZWZhdWx0XSkKK200X3BvcGRlZihbcGtnX2Rlc2Ny aXB0aW9uXSkKK10pZG5sIFBLR19OT0FSQ0hfSU5TVEFMTERJUgorCisKK2Ru bCBQS0dfQ0hFQ0tfVkFSKFZBUklBQkxFLCBNT0RVTEUsIENPTkZJRy1WQVJJ QUJMRSwKK2RubCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1Qt Rk9VTkRdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK2RubCBTaW5jZTogMC4yOAorZG5sCitkbmwgUmV0cmll dmVzIHRoZSB2YWx1ZSBvZiB0aGUgcGtnLWNvbmZpZyB2YXJpYWJsZSBmb3Ig dGhlIGdpdmVuIG1vZHVsZS4KK0FDX0RFRlVOKFtQS0dfQ0hFQ0tfVkFSXSwK K1tBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSlkbmwKK0FDX0FS R19WQVIoWyQxXSwgW3ZhbHVlIG9mICQzIGZvciAkMiwgb3ZlcnJpZGluZyBw a2ctY29uZmlnXSlkbmwKKworX1BLR19DT05GSUcoWyQxXSwgW3ZhcmlhYmxl PSJdWyQzXVsiXSwgWyQyXSkKK0FTX1ZBUl9DT1BZKFskMV0sIFtwa2dfY3Zf XVskMV0pCisKK0FTX1ZBUl9JRihbJDFdLCBbIiJdLCBbJDVdLCBbJDRdKWRu bAorXSlkbmwgUEtHX0NIRUNLX1ZBUgpkaWZmIC0tZ2l0IGEvY29uZmlndXJl IGIvY29uZmlndXJlCmluZGV4IGI1Y2RlYmI1MTAuLjQ4MWQ1ZDE1ZTggMTAw NzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTcxNSw2 ICs3MTUsMTIgQEAga3JiX3NydnRhYgogd2l0aF9weXRob24KIHdpdGhfcGVy bAogd2l0aF90Y2wKK0lDVV9MSUJTCitJQ1VfQ0ZMQUdTCitQS0dfQ09ORklH X0xJQkRJUgorUEtHX0NPTkZJR19QQVRICitQS0dfQ09ORklHCit3aXRoX2lj dQogZW5hYmxlX3RocmVhZF9zYWZldHkKIElOQ0xVREVTCiBhdXRvZGVwZW5k CkBAIC04MjEsNiArODI3LDcgQEAgd2l0aF9DQwogZW5hYmxlX2RlcGVuZAog ZW5hYmxlX2Nhc3NlcnQKIGVuYWJsZV90aHJlYWRfc2FmZXR5Cit3aXRoX2lj dQogd2l0aF90Y2wKIHdpdGhfdGNsY29uZmlnCiB3aXRoX3BlcmwKQEAgLTg1 Niw2ICs4NjMsMTEgQEAgTERGTEFHUwogTElCUwogQ1BQRkxBR1MKIENQUAor UEtHX0NPTkZJRworUEtHX0NPTkZJR19QQVRICitQS0dfQ09ORklHX0xJQkRJ UgorSUNVX0NGTEFHUworSUNVX0xJQlMKIExERkxBR1NfRVgKIExERkxBR1Nf U0wKIERPQ0JPT0tTVFlMRScKQEAgLTE1MTEsNiArMTUyMyw3IEBAIE9wdGlv bmFsIFBhY2thZ2VzOgogICAtLXdpdGgtd2FsLXNlZ3NpemU9U0VHU0laRQog ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgV0FMIHNlZ21lbnQgc2l6 ZSBpbiBNQiBbMTZdCiAgIC0td2l0aC1DQz1DTUQgICAgICAgICAgIHNldCBj b21waWxlciAoZGVwcmVjYXRlZCkKKyAgLS13aXRoLWljdSAgICAgICAgICAg ICAgYnVpbGQgd2l0aCBJQ1Ugc3VwcG9ydAogICAtLXdpdGgtdGNsICAgICAg ICAgICAgICBidWlsZCBUY2wgbW9kdWxlcyAoUEwvVGNsKQogICAtLXdpdGgt dGNsY29uZmlnPURJUiAgICB0Y2xDb25maWcuc2ggaXMgaW4gRElSCiAgIC0t d2l0aC1wZXJsICAgICAgICAgICAgIGJ1aWxkIFBlcmwgbW9kdWxlcyAoUEwv UGVybCkKQEAgLTE1NDYsNiArMTU1OSwxMyBAQCBTb21lIGluZmx1ZW50aWFs IGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgQ1BQRkxBR1MgICAgKE9iamVj dGl2ZSkgQy9DKysgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1 ZGUgZGlyPiBpZgogICAgICAgICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGlu IGEgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNsdWRlIGRpcj4KICAgQ1BQ ICAgICAgICAgQyBwcmVwcm9jZXNzb3IKKyAgUEtHX0NPTkZJRyAgcGF0aCB0 byBwa2ctY29uZmlnIHV0aWxpdHkKKyAgUEtHX0NPTkZJR19QQVRICisgICAg ICAgICAgICAgIGRpcmVjdG9yaWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mg c2VhcmNoIHBhdGgKKyAgUEtHX0NPTkZJR19MSUJESVIKKyAgICAgICAgICAg ICAgcGF0aCBvdmVycmlkaW5nIHBrZy1jb25maWcncyBidWlsdC1pbiBzZWFy Y2ggcGF0aAorICBJQ1VfQ0ZMQUdTICBDIGNvbXBpbGVyIGZsYWdzIGZvciBJ Q1UsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBJQ1VfTElCUyAgICBsaW5r ZXIgZmxhZ3MgZm9yIElDVSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIExE RkxBR1NfRVggIGV4dHJhIGxpbmtlciBmbGFncyBmb3IgbGlua2luZyBleGVj dXRhYmxlcyBvbmx5CiAgIExERkxBR1NfU0wgIGV4dHJhIGxpbmtlciBmbGFn cyBmb3IgbGlua2luZyBzaGFyZWQgbGlicmFyaWVzIG9ubHkKICAgRE9DQk9P S1NUWUxFCkBAIC01MzYyLDYgKzUzODIsMjU1IEBAICRhc19lY2hvICIkZW5h YmxlX3RocmVhZF9zYWZldHkiID4mNjsgfQogCiAKICMKKyMgSUNVCisjCit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIHdoZXRoZXIgdG8gYnVpbGQgd2l0aCBJQ1Ugc3VwcG9ydCIgPiY1Cisk YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxkIHdpdGggSUNV IHN1cHBvcnQuLi4gIiA+JjY7IH0KKworCisKKyMgQ2hlY2sgd2hldGhlciAt LXdpdGgtaWN1IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9pY3Urc2V0 fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2ljdTsKKyAgY2Fz ZSAkd2l0aHZhbCBpbgorICAgIHllcykKKworJGFzX2VjaG8gIiNkZWZpbmUg VVNFX0lDVSAxIiA+PmNvbmZkZWZzLmgKKworICAgICAgOzsKKyAgICBubykK KyAgICAgIDoKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGFzX2ZuX2Vycm9y ICQ/ICJubyBhcmd1bWVudCBleHBlY3RlZCBmb3IgLS13aXRoLWljdSBvcHRp b24iICIkTElORU5PIiA1CisgICAgICA7OworICBlc2FjCisKK2Vsc2UKKyAg d2l0aF9pY3U9bm8KKworZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfaWN1IiA+JjUKKyRh c19lY2hvICIkd2l0aF9pY3UiID4mNjsgfQorCisKK2lmIHRlc3QgIiR3aXRo X2ljdSIgPSB5ZXM7IHRoZW4KKworCisKKworCisKKworaWYgdGVzdCAieCRh Y19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0IjsgdGhlbgorCWlm IHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0 IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25m aWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgor c2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZzsgYWNfd29y ZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Bh dGhfUEtHX0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFBLR19DT05GSUcgaW4K KyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfUEtHX0NPTkZJ Rz0iJFBLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0 ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0k SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRI CitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIi ICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19l eGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFi bGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAg ICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg PiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFz X3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCitQS0dfQ09ORklHPSRhY19j dl9wYXRoX1BLR19DT05GSUcKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsg dGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJFBLR19DT05GSUciID4mNQorJGFzX2VjaG8gIiRQS0df Q09ORklHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hv ICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3Zf cGF0aF9QS0dfQ09ORklHIjsgdGhlbgorICBhY19wdF9QS0dfQ09ORklHPSRQ S0dfQ09ORklHCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGtn LWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy Z3MuCitzZXQgZHVtbXkgcGtnLWNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRh Y193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfYWNfcHRfUEtH X0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGFjX3B0X1BLR19DT05GSUcgaW4K KyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYWNfcHRfUEtH X0NPTkZJRz0iJGFjX3B0X1BLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92 ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBh c19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNf ZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3Qg LXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFz X2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9u ZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2Zp CithY19wdF9QS0dfQ09ORklHPSRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05G SUcKK2lmIHRlc3QgLW4gIiRhY19wdF9QS0dfQ09ORklHIjsgdGhlbgorICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGFjX3B0X1BLR19DT05GSUciID4mNQorJGFzX2VjaG8gIiRhY19wdF9Q S0dfQ09ORklHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19l Y2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfcHRfUEtH X0NPTkZJRyIgPSB4OyB0aGVuCisgICAgUEtHX0NPTkZJRz0iIgorICBlbHNl CisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBp bgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVk IHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdB Uk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhv c3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNh YworICAgIFBLR19DT05GSUc9JGFjX3B0X1BLR19DT05GSUcKKyAgZmkKK2Vs c2UKKyAgUEtHX0NPTkZJRz0iJGFjX2N2X3BhdGhfUEtHX0NPTkZJRyIKK2Zp CisKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKwlfcGtn X21pbl92ZXJzaW9uPTAuOS4wCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxl YXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb24iID4mNQorJGFzX2VjaG9f biAiY2hlY2tpbmcgcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRf cGtnX21pbl92ZXJzaW9uLi4uICIgPiY2OyB9CisJaWYgJFBLR19DT05GSUcg LS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9u OyB0aGVuCisJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9 CisJZWxzZQorCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0K KwkJUEtHX0NPTkZJRz0iIgorCWZpCitmaQorCitwa2dfZmFpbGVkPW5vCit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBJQ1UiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIElD VS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkSUNVX0NGTEFHUyI7IHRo ZW4KKyAgICBwa2dfY3ZfSUNVX0NGTEFHUz0iJElDVV9DRkxBR1MiCisgZWxp ZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1u ICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMg LS1wcmludC1lcnJvcnMgXCJpY3UtdWMgaWN1LWkxOG5cIiI7IH0gPiY1Cisg ICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiaWN1LXVj IGljdS1pMThuIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtn X2N2X0lDVV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJpY3UtdWMg aWN1LWkxOG4iIDI+L2Rldi9udWxsYAorCQkgICAgICB0ZXN0ICJ4JD8iICE9 ICJ4MCIgJiYgcGtnX2ZhaWxlZD15ZXMKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15 ZXMKK2ZpCisgZWxzZQorICAgIHBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lm IHRlc3QgLW4gIiRJQ1VfTElCUyI7IHRoZW4KKyAgICBwa2dfY3ZfSUNVX0xJ QlM9IiRJQ1VfTElCUyIKKyBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsg dGhlbgorICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAg eyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwk UEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImljdS11YyBp Y3UtaTE4blwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0t cHJpbnQtZXJyb3JzICJpY3UtdWMgaWN1LWkxOG4iKSAyPiY1CisgIGFjX3N0 YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVz ID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfSUNVX0xJQlM9YCRQS0dfQ09ORklH IC0tbGlicyAiaWN1LXVjIGljdS1pMThuIiAyPi9kZXYvbnVsbGAKKwkJICAg ICAgdGVzdCAieCQ/IiAhPSAieDAiICYmIHBrZ19mYWlsZWQ9eWVzCitlbHNl CisgIHBrZ19mYWlsZWQ9eWVzCitmaQorIGVsc2UKKyAgICBwa2dfZmFpbGVk PXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVz OyB0aGVuCisgICAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9 CisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lv biAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBv cnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3Vw cG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vy cm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIElDVV9QS0df RVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLXByaW50LWVy cm9ycyAtLWNmbGFncyAtLWxpYnMgImljdS11YyBpY3UtaTE4biIgMj4mMWAK KyAgICAgICAgZWxzZQorCSAgICAgICAgSUNVX1BLR19FUlJPUlM9YCRQS0df Q09ORklHIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzIC0tbGlicyAiaWN1LXVj IGljdS1pMThuIiAyPiYxYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0 eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25n cworCWVjaG8gIiRJQ1VfUEtHX0VSUk9SUyIgPiY1CisKKwlhc19mbl9lcnJv ciAkPyAiUGFja2FnZSByZXF1aXJlbWVudHMgKGljdS11YyBpY3UtaTE4bikg d2VyZSBub3QgbWV0OgorCiskSUNVX1BLR19FUlJPUlMKKworQ29uc2lkZXIg YWRqdXN0aW5nIHRoZSBQS0dfQ09ORklHX1BBVEggZW52aXJvbm1lbnQgdmFy aWFibGUgaWYgeW91CitpbnN0YWxsZWQgc29mdHdhcmUgaW4gYSBub24tc3Rh bmRhcmQgcHJlZml4LgorCitBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHNldCB0 aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIElDVV9DRkxBR1MKK2FuZCBJQ1Vf TElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25maWcuCitT ZWUgdGhlIHBrZy1jb25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4i ICIkTElORU5PIiA1CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVk OyB0aGVuCisgICAgIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7 IH0KKwl7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNf bWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9y ICQ/ICJUaGUgcGtnLWNvbmZpZyBzY3JpcHQgY291bGQgbm90IGJlIGZvdW5k IG9yIGlzIHRvbyBvbGQuICBNYWtlIHN1cmUgaXQKK2lzIGluIHlvdXIgUEFU SCBvciBzZXQgdGhlIFBLR19DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUg dG8gdGhlIGZ1bGwKK3BhdGggdG8gcGtnLWNvbmZpZy4KKworQWx0ZXJuYXRp dmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBJ Q1VfQ0ZMQUdTCithbmQgSUNVX0xJQlMgdG8gYXZvaWQgdGhlIG5lZWQgdG8g Y2FsbCBwa2ctY29uZmlnLgorU2VlIHRoZSBwa2ctY29uZmlnIG1hbiBwYWdl IGZvciBtb3JlIGRldGFpbHMuCisKK1RvIGdldCBwa2ctY29uZmlnLCBzZWUg PGh0dHA6Ly9wa2ctY29uZmlnLmZyZWVkZXNrdG9wLm9yZy8+LgorU2VlIFxg Y29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0K K2Vsc2UKKwlJQ1VfQ0ZMQUdTPSRwa2dfY3ZfSUNVX0NGTEFHUworCUlDVV9M SUJTPSRwa2dfY3ZfSUNVX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Cisk YXNfZWNobyAieWVzIiA+JjY7IH0KKworZmkKK2ZpCisKKyMKICMgT3B0aW9u YWxseSBidWlsZCBUY2wgbW9kdWxlcyAoUEwvVGNsKQogIwogeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0 aGVyIHRvIGJ1aWxkIHdpdGggVGNsIiA+JjUKQEAgLTEzNDMzLDYgKzEzNzAy LDUwIEBAIGZpCiBkb25lCiAKIAoraWYgdGVzdCAiJHdpdGhfaWN1IiA9IHll czsgdGhlbgorICAjIElDVSBmdW5jdGlvbnMgYXJlIG1hY3Jvcywgc28gd2Ug bmVlZCB0byBkbyB0aGlzIHRoZSBsb25nIHdheS4KKworICAjIHVjb2xfc3Ry Y29sbFVURjgoKSBhcHBlYXJlZCBpbiBJQ1UgNTAuCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVj b2xfc3RyY29sbFVURjgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IHVjb2xfc3RyY29sbFVURjguLi4gIiA+JjY7IH0KK2lmICR7cGdhY19jdl9m dW5jX3Vjb2xfc3RyY29sbFVURjgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNf ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19zYXZlX0NQUEZM QUdTPSRDUFBGTEFHUworQ1BQRkxBR1M9IiRJQ1VfQ0ZMQUdTICRDUFBGTEFH UyIKK2FjX3NhdmVfTElCUz0kTElCUworTElCUz0iJElDVV9MSUJTICRMSUJT IgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHVuaWNvZGUv dWNvbC5oPgorCitpbnQKK21haW4gKCkKK3sKK3Vjb2xfc3RyY29sbFVURjgo TlVMTCwgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCk7CisgIDsKKyAgcmV0dXJu IDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i OyB0aGVuIDoKKyAgcGdhY19jdl9mdW5jX3Vjb2xfc3RyY29sbFVURjg9eWVz CitlbHNlCisgIHBnYWNfY3ZfZnVuY191Y29sX3N0cmNvbGxVVEY4PW5vCitm aQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4 dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQK K0NQUEZMQUdTPSRhY19zYXZlX0NQUEZMQUdTCitMSUJTPSRhY19zYXZlX0xJ QlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJHBnYWNfY3ZfZnVuY191Y29sX3N0cmNvbGxVVEY4IiA+ JjUKKyRhc19lY2hvICIkcGdhY19jdl9mdW5jX3Vjb2xfc3RyY29sbFVURjgi ID4mNjsgfQorICBpZiB0ZXN0ICIkcGdhY19jdl9mdW5jX3Vjb2xfc3RyY29s bFVURjgiID0geWVzIDsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZF X1VDT0xfU1RSQ09MTFVURjggMSIgPj5jb25mZGVmcy5oCisKKyAgZmkKK2Zp CisKICMgTGFzdGx5LCByZXN0b3JlIGZ1bGwgTElCUyBsaXN0IGFuZCBjaGVj ayBmb3IgcmVhZGxpbmUvbGliZWRpdCBzeW1ib2xzCiBMSUJTPSIkTElCU19p bmNsdWRpbmdfcmVhZGxpbmUiCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5p biBiL2NvbmZpZ3VyZS5pbgppbmRleCAxZDk5Y2RhMWQ4Li4yMzViODc0NWQ2 IDEwMDY0NAotLS0gYS9jb25maWd1cmUuaW4KKysrIGIvY29uZmlndXJlLmlu CkBAIC02MTQsNiArNjE0LDE5IEBAIEFDX01TR19SRVNVTFQoWyRlbmFibGVf dGhyZWFkX3NhZmV0eV0pCiBBQ19TVUJTVChlbmFibGVfdGhyZWFkX3NhZmV0 eSkKIAogIworIyBJQ1UKKyMKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0 byBidWlsZCB3aXRoIElDVSBzdXBwb3J0XSkKK1BHQUNfQVJHX0JPT0wod2l0 aCwgaWN1LCBubywgW2J1aWxkIHdpdGggSUNVIHN1cHBvcnRdLAorICAgICAg ICAgICAgICBbQUNfREVGSU5FKFtVU0VfSUNVXSwgMSwgW0RlZmluZSB0byBi dWlsZCB3aXRoIElDVSBzdXBwb3J0LiAoLS13aXRoLWljdSldKV0pCitBQ19N U0dfUkVTVUxUKFskd2l0aF9pY3VdKQorQUNfU1VCU1Qod2l0aF9pY3UpCisK K2lmIHRlc3QgIiR3aXRoX2ljdSIgPSB5ZXM7IHRoZW4KKyAgUEtHX0NIRUNL X01PRFVMRVMoSUNVLCBpY3UtdWMgaWN1LWkxOG4pCitmaQorCisjCiAjIE9w dGlvbmFsbHkgYnVpbGQgVGNsIG1vZHVsZXMgKFBML1RjbCkKICMKIEFDX01T R19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCB3aXRoIFRjbF0pCkBAIC0x NjM0LDYgKzE2NDcsMjggQEAgZmkKIEFDX0NIRUNLX0ZVTkNTKFtzdHJ0b2xs IHN0cnRvcV0sIFticmVha10pCiBBQ19DSEVDS19GVU5DUyhbc3RydG91bGwg c3RydG91cV0sIFticmVha10pCiAKK2lmIHRlc3QgIiR3aXRoX2ljdSIgPSB5 ZXM7IHRoZW4KKyAgIyBJQ1UgZnVuY3Rpb25zIGFyZSBtYWNyb3MsIHNvIHdl IG5lZWQgdG8gZG8gdGhpcyB0aGUgbG9uZyB3YXkuCisKKyAgIyB1Y29sX3N0 cmNvbGxVVEY4KCkgYXBwZWFyZWQgaW4gSUNVIDUwLgorICBBQ19DQUNIRV9D SEVDSyhbZm9yIHVjb2xfc3RyY29sbFVURjhdLCBbcGdhY19jdl9mdW5jX3Vj b2xfc3RyY29sbFVURjhdLAorW2FjX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdT CitDUFBGTEFHUz0iJElDVV9DRkxBR1MgJENQUEZMQUdTIgorYWNfc2F2ZV9M SUJTPSRMSUJTCitMSUJTPSIkSUNVX0xJQlMgJExJQlMiCitBQ19MSU5LX0lG RUxTRShbQUNfTEFOR19QUk9HUkFNKAorWyNpbmNsdWRlIDx1bmljb2RlL3Vj b2wuaD4KK10sCitbdWNvbF9zdHJjb2xsVVRGOChOVUxMLCBOVUxMLCAwLCBO VUxMLCAwLCBOVUxMKTtdKV0sCitbcGdhY19jdl9mdW5jX3Vjb2xfc3RyY29s bFVURjg9eWVzXSwKK1twZ2FjX2N2X2Z1bmNfdWNvbF9zdHJjb2xsVVRGOD1u b10pCitDUFBGTEFHUz0kYWNfc2F2ZV9DUFBGTEFHUworTElCUz0kYWNfc2F2 ZV9MSUJTXSkKKyAgaWYgdGVzdCAiJHBnYWNfY3ZfZnVuY191Y29sX3N0cmNv bGxVVEY4IiA9IHllcyA7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfVUNP TF9TVFJDT0xMVVRGOF0sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgYHVjb2xfc3RyY29sbFVURjgnIGZ1bmN0aW9uLl0pCisgIGZpCitmaQor CiAjIExhc3RseSwgcmVzdG9yZSBmdWxsIExJQlMgbGlzdCBhbmQgY2hlY2sg Zm9yIHJlYWRsaW5lL2xpYmVkaXQgc3ltYm9scwogTElCUz0iJExJQlNfaW5j bHVkaW5nX3JlYWRsaW5lIgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmlu ZGV4IDI4Y2RhYmU2ZmUuLjMzYWU2MTI4OTIgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCkBAIC0yMDEzLDYgKzIwMTMsMTQgQEAgPHRpdGxlPjxzdHJ1 Y3RuYW1lPnBnX2NvbGxhdGlvbjwvPiBDb2x1bW5zPC90aXRsZT4KICAgICAg PC9yb3c+CiAKICAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0Zmll bGQ+Y29sbHByb3ZpZGVyPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAg PGVudHJ5Pjx0eXBlPmNoYXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48L2VudHJ5PgorICAgICAgPGVudHJ5PlByb3ZpZGVyIG9mIHRoZSBjb2xs YXRpb246IDxsaXRlcmFsPmQ8L2xpdGVyYWw+ID0gZGF0YWJhc2UKKyAgICAg ICBkZWZhdWx0LCA8bGl0ZXJhbD5jPC9saXRlcmFsPiA9IGxpYmMsIDxsaXRl cmFsPmk8L2xpdGVyYWw+ID0gaWN1PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y29sbGVu Y29kaW5nPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgogICAgICAgPGVudHJ5Pjx0 eXBlPmludDQ8L3R5cGU+PC9lbnRyeT4KICAgICAgIDxlbnRyeT48L2VudHJ5 PgpAQCAtMjAzMyw2ICsyMDQxLDE3IEBAIDx0aXRsZT48c3RydWN0bmFtZT5w Z19jb2xsYXRpb248Lz4gQ29sdW1uczwvdGl0bGU+CiAgICAgICA8ZW50cnk+ PC9lbnRyeT4KICAgICAgIDxlbnRyeT48c3ltYm9sPkxDX0NUWVBFPC8+IGZv ciB0aGlzIGNvbGxhdGlvbiBvYmplY3Q8L2VudHJ5PgogICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jb2xs dmVyc2lvbjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48 dHlwZT50ZXh0PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBQcm92aWRlci1zcGVjaWZpYyB2 ZXJzaW9uIG9mIHRoZSBjb2xsYXRpb24uICBUaGlzIGlzIHJlY29yZGVkIHdo ZW4gdGhlCisgICAgICAgY29sbGF0aW9uIGlzIGNyZWF0ZWQgYW5kIHRoZW4g Y2hlY2tlZCB3aGVuIGl0IGlzIHVzZWQsIHRvIGRldGVjdAorICAgICAgIGNo YW5nZXMgaW4gdGhlIGNvbGxhdGlvbiBkZWZpbml0aW9uIHRoYXQgY291bGQg bGVhZCB0byBkYXRhIGNvcnJ1cHRpb24uCisgICAgICA8L2VudHJ5PgorICAg ICA8L3Jvdz4KICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFi bGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sIGIv ZG9jL3NyYy9zZ21sL2NoYXJzZXQuc2dtbAppbmRleCAyYWJhMGZjNTI4Li4w MWEzODkzMWZhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2hhcnNldC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jaGFyc2V0LnNnbWwKQEAgLTUwMCwy MSArNTAwLDQ1IEBAIDx0aXRsZT5Db25jZXB0czwvdGl0bGU+CiAgICA8dGl0 bGU+TWFuYWdpbmcgQ29sbGF0aW9uczwvdGl0bGU+CiAKICAgIDxwYXJhPgot ICAgIEEgY29sbGF0aW9uIGlzIGFuIFNRTCBzY2hlbWEgb2JqZWN0IHRoYXQg bWFwcyBhbiBTUUwgbmFtZSB0bwotICAgIG9wZXJhdGluZyBzeXN0ZW0gbG9j YWxlcy4gIEluIHBhcnRpY3VsYXIsIGl0IG1hcHMgdG8gYSBjb21iaW5hdGlv bgotICAgIG9mIDxzeW1ib2w+TENfQ09MTEFURTwvc3ltYm9sPiBhbmQgPHN5 bWJvbD5MQ19DVFlQRTwvc3ltYm9sPi4gIChBcworICAgIEEgY29sbGF0aW9u IGlzIGFuIFNRTCBzY2hlbWEgb2JqZWN0IHRoYXQgbWFwcyBhbiBTUUwgbmFt ZSB0byBsb2NhbGVzCisgICAgcHJvdmlkZWQgYnkgbGlicmFyaWVzIGluc3Rh bGxlZCBpbiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIEEgY29sbGF0aW9uCisg ICAgZGVmaW5pdGlvbiBoYXMgYSA8Zmlyc3R0ZXJtPnByb3ZpZGVyPC9maXJz dHRlcm0+IHRoYXQgc3BlY2lmaWVzIHdoaWNoCisgICAgbGlicmFyeSBzdXBw bGllcyB0aGUgbG9jYWxlIGRhdGEuICBPbmUgc3RhbmRhcmQgcHJvdmlkZXIg bmFtZQorICAgIGlzIDxsaXRlcmFsPmxpYmM8L2xpdGVyYWw+LCB3aGljaCB1 c2VzIHRoZSBsb2NhbGVzIHByb3ZpZGVkIGJ5IHRoZQorICAgIG9wZXJhdGlu ZyBzeXN0ZW0gQyBsaWJyYXJ5LiAgVGhlc2UgYXJlIHRoZSBsb2NhbGVzIHRo YXQgbW9zdCB0b29scworICAgIHByb3ZpZGVkIGJ5IHRoZSBvcGVyYXRpbmcg c3lzdGVtIHVzZS4gIEFub3RoZXIgcHJvdmlkZXIKKyAgICBpcyA8bGl0ZXJh bD5pY3U8L2xpdGVyYWw+LCB3aGljaCB1c2VzIHRoZSBleHRlcm5hbAorICAg IElDVTxpbmRleHRlcm0+PHByaW1hcnk+SUNVPC8+PC8+IGxpYnJhcnkuICBT dXBwb3J0IGZvciBJQ1UgaGFzIHRvIGJlCisgICAgY29uZmlndXJlZCB3aGVu IFBvc3RncmVTUUwgaXMgYnVpbHQuCisgICA8L3BhcmE+CisKKyAgIDxwYXJh PgorICAgIEEgY29sbGF0aW9uIG9iamVjdCBwcm92aWRlZCBieSA8bGl0ZXJh bD5saWJjPC9saXRlcmFsPiBtYXBzIHRvIGEgY29tYmluYXRpb24KKyAgICBv ZiA8c3ltYm9sPkxDX0NPTExBVEU8L3N5bWJvbD4gYW5kIDxzeW1ib2w+TENf Q1RZUEU8L3N5bWJvbD4gc2V0dGluZ3MuICAoQXMKICAgICB0aGUgbmFtZSB3 b3VsZCBzdWdnZXN0LCB0aGUgbWFpbiBwdXJwb3NlIG9mIGEgY29sbGF0aW9u IGlzIHRvIHNldAogICAgIDxzeW1ib2w+TENfQ09MTEFURTwvc3ltYm9sPiwg d2hpY2ggY29udHJvbHMgdGhlIHNvcnQgb3JkZXIuICBCdXQKICAgICBpdCBp cyByYXJlbHkgbmVjZXNzYXJ5IGluIHByYWN0aWNlIHRvIGhhdmUgYW4KICAg ICA8c3ltYm9sPkxDX0NUWVBFPC9zeW1ib2w+IHNldHRpbmcgdGhhdCBpcyBk aWZmZXJlbnQgZnJvbQogICAgIDxzeW1ib2w+TENfQ09MTEFURTwvc3ltYm9s Piwgc28gaXQgaXMgbW9yZSBjb252ZW5pZW50IHRvIGNvbGxlY3QKICAgICB0 aGVzZSB1bmRlciBvbmUgY29uY2VwdCB0aGFuIHRvIGNyZWF0ZSBhbm90aGVy IGluZnJhc3RydWN0dXJlIGZvcgotICAgIHNldHRpbmcgPHN5bWJvbD5MQ19D VFlQRTwvc3ltYm9sPiBwZXIgZXhwcmVzc2lvbi4pICBBbHNvLCBhIGNvbGxh dGlvbgorICAgIHNldHRpbmcgPHN5bWJvbD5MQ19DVFlQRTwvc3ltYm9sPiBw ZXIgZXhwcmVzc2lvbi4pICBBbHNvLCBhIDxsaXRlcmFsPmxpYmM8L2xpdGVy YWw+IGNvbGxhdGlvbgogICAgIGlzIHRpZWQgdG8gYSBjaGFyYWN0ZXIgc2V0 IGVuY29kaW5nIChzZWUgPHhyZWYgbGlua2VuZD0ibXVsdGlieXRlIj4pLgog ICAgIFRoZSBzYW1lIGNvbGxhdGlvbiBuYW1lIG1heSBleGlzdCBmb3IgZGlm ZmVyZW50IGVuY29kaW5ncy4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+Cisg ICAgQSBjb2xsYXRpb24gcHJvdmlkZWQgYnkgPGxpdGVyYWw+aWN1PC9saXRl cmFsPiBtYXBzIHRvIGEgbmFtZWQgY29sbGF0b3IKKyAgICBwcm92aWRlZCBi eSB0aGUgSUNVIGxpYnJhcnkuICBJQ1UgZG9lcyBub3Qgc3VwcG9ydAorICAg IHNlcGFyYXRlIDxxdW90ZT5jb2xsYXRlPC9xdW90ZT4gYW5kIDxxdW90ZT5j dHlwZTwvcXVvdGU+IHNldHRpbmdzLCBzbyB0aGV5CisgICAgYXJlIGFsd2F5 cyB0aGUgc2FtZS4gIEFsc28sIElDVSBjb2xsYXRpb25zIGFyZSBpbmRlcGVu ZGVudCBvZiB0aGUKKyAgICBlbmNvZGluZywgc28gdGhlcmUgaXMgYWx3YXlz IG9ubHkgb25lIElDVSBjb2xsYXRpb24gZm9yIGEgZ2l2ZW4gbmFtZSBpbiBh CisgICAgZGF0YWJhc2UuCisgICA8L3BhcmE+CisKKyAgIDxzZWN0Mz4KKyAg ICA8dGl0bGU+U3RhbmRhcmQgQ29sbGF0aW9uczwvdGl0bGU+CisKKyAgIDxw YXJhPgogICAgIE9uIGFsbCBwbGF0Zm9ybXMsIHRoZSBjb2xsYXRpb25zIG5h bWVkIDxsaXRlcmFsPmRlZmF1bHQ8Lz4sCiAgICAgPGxpdGVyYWw+QzwvPiwg YW5kIDxsaXRlcmFsPlBPU0lYPC8+IGFyZSBhdmFpbGFibGUuICBBZGRpdGlv bmFsCiAgICAgY29sbGF0aW9ucyBtYXkgYmUgYXZhaWxhYmxlIGRlcGVuZGlu ZyBvbiBvcGVyYXRpbmcgc3lzdGVtIHN1cHBvcnQuCkBAIC01MjgsMTIgKzU1 MiwzNiBAQCA8dGl0bGU+TWFuYWdpbmcgQ29sbGF0aW9uczwvdGl0bGU+CiAg ICA8L3BhcmE+CiAKICAgIDxwYXJhPgorICAgIEFkZGl0aW9uYWxseSwgdGhl IFNRTCBzdGFuZGFyZCBjb2xsYXRpb24gbmFtZSA8bGl0ZXJhbD51Y3NfYmFz aWM8L2xpdGVyYWw+CisgICAgaXMgYXZhaWxhYmxlIGZvciBlbmNvZGluZyA8 bGl0ZXJhbD5VVEY4PC9saXRlcmFsPi4gIEl0IGlzIGVxdWl2YWxlbnQKKyAg ICB0byA8bGl0ZXJhbD5DPC9saXRlcmFsPiBhbmQgc29ydHMgYnkgVW5pY29k ZSBjb2RlIHBvaW50LgorICAgPC9wYXJhPgorICA8L3NlY3QzPgorCisgIDxz ZWN0Mz4KKyAgIDx0aXRsZT5QcmVkZWZpbmVkIENvbGxhdGlvbnM8L3RpdGxl PgorCisgICA8cGFyYT4KICAgICBJZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBw cm92aWRlcyBzdXBwb3J0IGZvciB1c2luZyBtdWx0aXBsZSBsb2NhbGVzCiAg ICAgd2l0aGluIGEgc2luZ2xlIHByb2dyYW0gKDxmdW5jdGlvbj5uZXdsb2Nh bGU8Lz4gYW5kIHJlbGF0ZWQgZnVuY3Rpb25zKSwKKyAgICBvciBzdXBwb3J0 IGZvciBJQ1UgaXMgY29uZmlndXJlZCwKICAgICB0aGVuIHdoZW4gYSBkYXRh YmFzZSBjbHVzdGVyIGlzIGluaXRpYWxpemVkLCA8Y29tbWFuZD5pbml0ZGI8 L2NvbW1hbmQ+CiAgICAgcG9wdWxhdGVzIHRoZSBzeXN0ZW0gY2F0YWxvZyA8 bGl0ZXJhbD5wZ19jb2xsYXRpb248L2xpdGVyYWw+IHdpdGgKICAgICBjb2xs YXRpb25zIGJhc2VkIG9uIGFsbCB0aGUgbG9jYWxlcyBpdCBmaW5kcyBvbiB0 aGUgb3BlcmF0aW5nCi0gICAgc3lzdGVtIGF0IHRoZSB0aW1lLiAgRm9yIGV4 YW1wbGUsIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1pZ2h0CisgICAgc3lzdGVt IGF0IHRoZSB0aW1lLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBU aGUgaW5zcGVjdCB0aGUgY3VycmVudGx5IGF2YWlsYWJsZSBsb2NhbGVzLCB1 c2UgdGhlIHF1ZXJ5IDxsaXRlcmFsPlNFTEVDVAorICAgICogRlJPTSBwZ19j b2xsYXRpb248L2xpdGVyYWw+LCBvciB0aGUgY29tbWFuZCA8Y29tbWFuZD5c ZE9TKzwvY29tbWFuZD4KKyAgICBpbiA8YXBwbGljYXRpb24+cHNxbDwvYXBw bGljYXRpb24+LgorICAgPC9wYXJhPgorCisgIDxzZWN0ND4KKyAgIDx0aXRs ZT5saWJjIGNvbGxhdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBG b3IgZXhhbXBsZSwgdGhlIG9wZXJhdGluZyBzeXN0ZW0gbWlnaHQKICAgICBw cm92aWRlIGEgbG9jYWxlIG5hbWVkIDxsaXRlcmFsPmRlX0RFLnV0Zjg8L2xp dGVyYWw+LgogICAgIDxjb21tYW5kPmluaXRkYjwvY29tbWFuZD4gd291bGQg dGhlbiBjcmVhdGUgYSBjb2xsYXRpb24gbmFtZWQKICAgICA8bGl0ZXJhbD5k ZV9ERS51dGY4PC9saXRlcmFsPiBmb3IgZW5jb2RpbmcgPGxpdGVyYWw+VVRG ODwvbGl0ZXJhbD4KQEAgLTU0NCwxNyArNTkyLDIwIEBAIDx0aXRsZT5NYW5h Z2luZyBDb2xsYXRpb25zPC90aXRsZT4KICAgICB1bmRlciB0aGUgbmFtZSA8 bGl0ZXJhbD5kZV9ERTwvbGl0ZXJhbD4sIHdoaWNoIGlzIGxlc3MgY3VtYmVy c29tZQogICAgIHRvIHdyaXRlIGFuZCBtYWtlcyB0aGUgbmFtZSBsZXNzIGVu Y29kaW5nLWRlcGVuZGVudC4gIE5vdGUgdGhhdCwKICAgICBuZXZlcnRoZWxl c3MsIHRoZSBpbml0aWFsIHNldCBvZiBjb2xsYXRpb24gbmFtZXMgaXMKLSAg ICBwbGF0Zm9ybS1kZXBlbmRlbnQuCisgICAgcGxhdGZvcm0tZGVwZW5kZW50 LiAgQ29sbGF0aW9ucyBwcm92aWRlZCBieSBJQ1UgYXJlIGNyZWF0ZWQKKyAg ICB3aXRoIDxsaXRlcmFsPiVpY3U8L2xpdGVyYWw+IGFwcGVuZGVkLCBzbyA8 bGl0ZXJhbD5kZSVpY3U8L2xpdGVyYWw+IGZvcgorICAgIGV4YW1wbGUuCiAg ICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIEluIGNhc2UgYSBjb2xsYXRp b24gaXMgbmVlZGVkIHRoYXQgaGFzIGRpZmZlcmVudCB2YWx1ZXMgZm9yCi0g ICAgPHN5bWJvbD5MQ19DT0xMQVRFPC9zeW1ib2w+IGFuZCA8c3ltYm9sPkxD X0NUWVBFPC9zeW1ib2w+LCBhIG5ldwotICAgIGNvbGxhdGlvbiBtYXkgYmUg Y3JlYXRlZCB1c2luZwotICAgIHRoZSA8eHJlZiBsaW5rZW5kPSJzcWwtY3Jl YXRlY29sbGF0aW9uIj4gY29tbWFuZC4gIFRoYXQgY29tbWFuZAotICAgIGNh biBhbHNvIGJlIHVzZWQgdG8gY3JlYXRlIGEgbmV3IGNvbGxhdGlvbiBmcm9t IGFuIGV4aXN0aW5nCi0gICAgY29sbGF0aW9uLCB3aGljaCBjYW4gYmUgdXNl ZnVsIHRvIGJlIGFibGUgdG8gdXNlCi0gICAgb3BlcmF0aW5nLXN5c3RlbS1p bmRlcGVuZGVudCBjb2xsYXRpb24gbmFtZXMgaW4gYXBwbGljYXRpb25zLgor ICAgIFRoZSBkZWZhdWx0IHNldCBvZiBjb2xsYXRpb25zIHByb3ZpZGVkIGJ5 IDxsaXRlcmFsPmxpYmM8L2xpdGVyYWw+IG1hcAorICAgIGRpcmVjdGx5IHRv IHRoZSBsb2NhbGVzIGluc3RhbGxlZCBpbiB0aGUgb3BlcmF0aW5nIHN5c3Rl bSwgd2hpY2ggY2FuIGJlCisgICAgbGlzdGVkIHVzaW5nIHRoZSBjb21tYW5k IDxsaXRlcmFsPmxvY2FsZSAtYTwvbGl0ZXJhbD4uCisgICAgSW4gY2FzZSBh IDxsaXRlcmFsPmxpYmM8L2xpdGVyYWw+IGNvbGxhdGlvbiBpcyBuZWVkZWQg dGhhdCBoYXMgZGlmZmVyZW50IHZhbHVlcyBmb3IKKyAgICA8c3ltYm9sPkxD X0NPTExBVEU8L3N5bWJvbD4gYW5kIDxzeW1ib2w+TENfQ1RZUEU8L3N5bWJv bD4sIG9yIG5ldyBsb2NhbGVzCisgICAgYXJlIGluc3RhbGxlZCBpbiB0aGUg b3BlcmF0aW5nIHN5c3RlbSBhZnRlciB0aGUgZGF0YWJhc2Ugc3lzdGVtIHdh cworICAgIGluaXRpYWxpemVkLCB0aGVuIGEgbmV3IGNvbGxhdGlvbiBtYXkg YmUgY3JlYXRlZCB1c2luZworICAgIHRoZSA8eHJlZiBsaW5rZW5kPSJzcWwt Y3JlYXRlY29sbGF0aW9uIj4gY29tbWFuZC4KICAgIDwvcGFyYT4KIAogICAg PHBhcmE+CkBAIC01NjYsOCArNjE3LDggQEAgPHRpdGxlPk1hbmFnaW5nIENv bGxhdGlvbnM8L3RpdGxlPgogICAgIFVzZSBvZiB0aGUgc3RyaXBwZWQgY29s bGF0aW9uIG5hbWVzIGlzIHJlY29tbWVuZGVkLCBzaW5jZSBpdCB3aWxsCiAg ICAgbWFrZSBvbmUgbGVzcyB0aGluZyB5b3UgbmVlZCB0byBjaGFuZ2UgaWYg eW91IGRlY2lkZSB0byBjaGFuZ2UgdG8KICAgICBhbm90aGVyIGRhdGFiYXNl IGVuY29kaW5nLiAgTm90ZSBob3dldmVyIHRoYXQgdGhlIDxsaXRlcmFsPmRl ZmF1bHQ8Lz4sCi0gICAgPGxpdGVyYWw+QzwvPiwgYW5kIDxsaXRlcmFsPlBP U0lYPC8+IGNvbGxhdGlvbnMgY2FuIGJlIHVzZWQKLSAgICByZWdhcmRsZXNz IG9mIHRoZSBkYXRhYmFzZSBlbmNvZGluZy4KKyAgICA8bGl0ZXJhbD5DPC8+ LCBhbmQgPGxpdGVyYWw+UE9TSVg8Lz4gY29sbGF0aW9ucywgYXMgd2VsbCBh cyBhbGwgY29sbGF0aW9ucworICAgIHByb3ZpZGVkIGJ5IElDVSBjYW4gYmUg dXNlZCByZWdhcmRsZXNzIG9mIHRoZSBkYXRhYmFzZSBlbmNvZGluZy4KICAg IDwvcGFyYT4KIAogICAgPHBhcmE+CkBAIC01ODEsNiArNjMyLDk3IEBAIDx0 aXRsZT5NYW5hZ2luZyBDb2xsYXRpb25zPC90aXRsZT4KICAgICBjb2xsYXRp b25zIGhhdmUgaWRlbnRpY2FsIGJlaGF2aW9ycy4gIE1peGluZyBzdHJpcHBl ZCBhbmQgbm9uLXN0cmlwcGVkCiAgICAgY29sbGF0aW9uIG5hbWVzIGlzIHRo ZXJlZm9yZSBub3QgcmVjb21tZW5kZWQuCiAgICA8L3BhcmE+CisgIDwvc2Vj dDQ+CisKKyAgPHNlY3Q0PgorICAgPHRpdGxlPklDVSBjb2xsYXRpb25zPC90 aXRsZT4KKworICAgPHBhcmE+CisgICAgV2l0aCBJQ1UsIGl0IGlzIG5vdCBz ZW5zaWJsZSB0byBlbnVtZXJhdGUgYWxsIHBvc3NpYmxlIGxvY2FsZSBuYW1l cy4gIElDVQorICAgIHVzZXMgYSBwYXJ0aWN1bGFyIG5hbWluZyBzeXN0ZW0g Zm9yIGxvY2FsZXMsIGJ1dCB0aGVyZSBhcmUgbWFueSBtb3JlIHdheXMKKyAg ICB0byBuYW1lIGEgbG9jYWxlIHRoYW4gdGhlcmUgYXJlIGFjdHVhbGx5IGRp c3RpbmN0IGxvY2FsZXMuICAoSW4gZmFjdCwgYW55CisgICAgc3RyaW5nIHdp bGwgYmUgYWNjZXB0ZWQgYXMgYSBsb2NhbGUgbmFtZS4pCisgICAgU2VlIDx1 bGluayB1cmw9Imh0dHA6Ly91c2VyZ3VpZGUuaWN1LXByb2plY3Qub3JnL2xv Y2FsZSI+PC91bGluaz4gZm9yCisgICAgaW5mb3JtYXRpb24gb24gSUNVIGxv Y2FsZSBuYW1pbmcuICA8Y29tbWFuZD5pbml0ZGI8L2NvbW1hbmQ+IHVzZXMg dGhlIElDVQorICAgIEFQSXMgdG8gZXh0cmFjdCBhIHNldCBvZiBsb2NhbGVz IHdpdGggZGlzdGluY3QgY29sbGF0aW9uIHJ1bGVzIHRvIHBvcHVsYXRlCisg ICAgdGhlIGluaXRpYWwgc2V0IG9mIGNvbGxhdGlvbnMuICBIZXJlIGFyZSBz b21lIGV4YW1wbGVzIGNvbGxhdGlvbnMgdGhhdAorICAgIG1pZ2h0IGJlIGNy ZWF0ZWQ6CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgPHRlcm0+PGxpdGVyYWw+ZGUlaWN1PC9saXRlcmFsPjwv dGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT5HZXJtYW4g Y29sbGF0aW9uLCBkZWZhdWx0IHZhcmlhbnQ8L3BhcmE+CisgICAgICA8L2xp c3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgPHRlcm0+PGxpdGVyYWw+ZGVfcGhvbmVib29rJWlj dTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAg PHBhcmE+R2VybWFuIGNvbGxhdGlvbiwgcGhvbmUgYm9vayB2YXJpYW50PC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxsaXRlcmFs PmRlX0FUJWljdTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+R2VybWFuIGNvbGxhdGlvbiBmb3IgQXVzdHJpYSwg ZGVmYXVsdCB2YXJpYW50PC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICAoTm90ZSB0aGF0IGFzIG9mIHRoaXMgd3JpdGluZywgdGhlcmUgaXMgbm8s CisgICAgICAgIHNheSwgPGxpdGVyYWw+ZGVfREUlaWN1PC9saXRlcmFsPiBv ciA8bGl0ZXJhbD5kZV9DSCVpY3U8L2xpdGVyYWw+LAorICAgICAgICBzaW5j ZSB0aG9zZSBhcmUgZXF1aXZhbGVudCB0byA8bGl0ZXJhbD5kZSVpY3U8L2xp dGVyYWw+LikKKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgPHRlcm0+PGxpdGVyYWw+ZGVfQVRfcGhvbmVib29rJWljdTwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ R2VybWFuIGNvbGxhdGlvbiBmb3IgQXVzdHJpYSwgcGhvbmUgYm9vayB2YXJp YW50PC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0 ZW50cnk+CisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48bGl0 ZXJhbD5yb290JWljdTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIElDVSA8cXVvdGU+cm9vdDwv cXVvdGU+IGNvbGxhdGlvbi4gIFVzZSB0aGlzIHRvIGdldCBhIHJlYXNvbmFi bGUKKyAgICAgICAgbGFuZ3VhZ2UtYWdub3N0aWMgc29ydCBvcmRlci4KKyAg ICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgIDwvcGFyYT4KKwor ICAgPHBhcmE+CisgICAgU29tZSAobGVzcyBmcmVxdWVudGx5IHVzZWQpIGVu Y29kaW5ncyBhcmUgbm90IHN1cHBvcnRlZCBieSBJQ1UuICBJZiB0aGUKKyAg ICBkYXRhYmFzZSBjbHVzdGVyIHdhcyBpbml0aWFsaXplZCB3aXRoIHN1Y2gg YW4gZW5jb2RpbmcsIG5vIElDVSBjb2xsYXRpb25zCisgICAgd2lsbCBiZSBw cmVkZWZpbmVkLgorICAgPC9wYXJhPgorICAgPC9zZWN0ND4KKyAgIDwvc2Vj dDM+CisKKyAgIDxzZWN0Mz4KKyAgIDx0aXRsZT5Db3B5aW5nIENvbGxhdGlv bnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgY29tbWFuZCA8eHJl ZiBsaW5rZW5kPSJzcWwtY3JlYXRlY29sbGF0aW9uIj4gY2FuIGFsc28gYmUg dXNlZCB0bworICAgIGNyZWF0ZSBhIG5ldyBjb2xsYXRpb24gZnJvbSBhbiBl eGlzdGluZyBjb2xsYXRpb24sIHdoaWNoIGNhbiBiZSB1c2VmdWwgdG8KKyAg ICBiZSBhYmxlIHRvIHVzZSBvcGVyYXRpbmctc3lzdGVtLWluZGVwZW5kZW50 IGNvbGxhdGlvbiBuYW1lcyBpbgorICAgIGFwcGxpY2F0aW9ucywgY3JlYXRl IGNvbXBhdGliaWxpdHkgbmFtZXMsIG9yIHVzZSBhbiBJQ1UtcHJvdmlkZWQg Y29sbGF0aW9uCisgICAgdW5kZXIgYSBzdWZmaXgtbGVzcyBuYW1lLiAgRm9y IGV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgQ09MTEFUSU9O IGdlcm1hbiBGUk9NICJkZV9ERSI7CitDUkVBVEUgQ09MTEFUSU9OIGZyZW5j aCBGUk9NICJmciVpY3UiOworQ1JFQVRFIENPTExBVElPTiAiZGVfREUlaWN1 IiBGUk9NICJkZSVpY3UiOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvcGFy YT4KKworICAgPHBhcmE+CisgICAgVGhlIHN0YW5kYXJkIGFuZCBwcmVkZWZp bmVkIGNvbGxhdGlvbnMgYXJlIGluIHRoZQorICAgIHNjaGVtYSA8bGl0ZXJh bD5wZ19jYXRhbG9nPC9saXRlcmFsPiwgbGlrZSBhbGwgcHJlZGVmaW5lZCBv YmplY3RzLgorICAgIFVzZXItZGVmaW5lZCBjb2xsYXRpb25zIHNob3VsZCBi ZSBjcmVhdGVkIGluIHVzZXIgc2NoZW1hcy4gIFRoaXMgYWxzbworICAgIGVu c3VyZXMgdGhhdCB0aGV5IGFyZSBzYXZlZCBieSA8Y29tbWFuZD5wZ19kdW1w PC9jb21tYW5kPi4KKyAgIDwvcGFyYT4KICAgPC9zZWN0Mj4KICA8L3NlY3Qx PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwKaW5kZXggNTY4 OTk1YzlmMi4uYjM1ZmZhMWU1YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2luc3RhbGxhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9pbnN0YWxs YXRpb24uc2dtbApAQCAtNzY3LDYgKzc2NywyMCBAQCA8dGl0bGU+Q29uZmln dXJhdGlvbjwvdGl0bGU+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT48b3B0aW9uPi0td2l0 aC1pY3U8L29wdGlvbj48L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICA8cGFyYT4KKyAgICAgICAgIEJ1aWxkIHdpdGggc3VwcG9ydCBmb3IK KyAgICAgICAgIHRoZSA8cHJvZHVjdG5hbWU+SUNVPC9wcm9kdWN0bmFtZT48 aW5kZXh0ZXJtPjxwcmltYXJ5PklDVTwvPjwvPgorICAgICAgICAgbGlicmFy eS4gIFRoaXMgcmVxdWlyZXMgdGhlIDxwcm9kdWN0bmFtZT5JQ1U0QzwvcHJv ZHVjdG5hbWU+IHBhY2thZ2UKKyAgICAgICAgIGFzIHdlbGwKKyAgICAgICAg IGFzIDxwcm9kdWN0bmFtZT5wa2ctY29uZmlnPC9wcm9kdWN0bmFtZT48aW5k ZXh0ZXJtPjxwcmltYXJ5PnBrZy1jb25maWc8Lz48Lz4KKyAgICAgICAgIHRv IGJlIGluc3RhbGxlZC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxp c3RlbnRyeT4KICAgICAgICA8dGVybT48b3B0aW9uPi0td2l0aC1vcGVuc3Ns PC9vcHRpb24+CiAgICAgICAgPGluZGV4dGVybT4KICAgICAgICAgPHByaW1h cnk+T3BlblNTTDwvcHJpbWFyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfY29sbGF0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX2NvbGxhdGlvbi5zZ21sCmluZGV4IDY3MDhjN2UxMGUuLjNiY2Ez ZjEzOTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfY29s bGF0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9jb2xs YXRpb24uc2dtbApAQCAtMjEsNiArMjEsOCBAQAogCiAgPHJlZnN5bm9wc2lz ZGl2PgogPHN5bm9wc2lzPgorQUxURVIgQ09MTEFUSU9OIDxyZXBsYWNlYWJs ZT5uYW1lPC9yZXBsYWNlYWJsZT4gUkVGUkVTSCBWRVJTSU9OCisKIEFMVEVS IENPTExBVElPTiA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IFJF TkFNRSBUTyA8cmVwbGFjZWFibGU+bmV3X25hbWU8L3JlcGxhY2VhYmxlPgog QUxURVIgQ09MTEFUSU9OIDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJs ZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGU+bmV3X293bmVyPC9yZXBsYWNl YWJsZT4gfCBDVVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQogQUxURVIg Q09MTEFUSU9OIDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gU0VU IFNDSEVNQSA8cmVwbGFjZWFibGU+bmV3X3NjaGVtYTwvcmVwbGFjZWFibGU+ CkBAIC04NSw5ICs4Nyw0OSBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+ CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVy YWw+UkVGUkVTSCBWRVJTSU9OPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVXBkYXRlZCB0aGUgY29sbGF0 aW9uIHZlcnNpb24uCisgICAgICBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLWFs dGVyY29sbGF0aW9uLW5vdGVzIj4gYmVsb3cuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CiAgIDwvdmFyaWFi bGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKKyA8cmVmc2VjdDEgaWQ9InNxbC1h bHRlcmNvbGxhdGlvbi1ub3RlcyI+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICBXaGVuIHVzaW5nIGNvbGxhdGlvbnMgcHJvdmlk ZWQgYnkgdGhlIElDVSBsaWJyYXJ5LCB0aGUgSUNVLXNwZWNpZmljIHZlcnNp b24KKyAgIG9mIHRoZSBjb2xsYXRvciBpcyByZWNvcmRlZCBpbiB0aGUgc3lz dGVtIGNhdGFsb2cgd2hlbiB0aGUgY29sbGF0aW9uIG9iamVjdAorICAgaXMg Y3JlYXRlZC4gIFdoZW4gdGhlIGNvbGxhdGlvbiBpcyB0aGVuIHVzZWQsIHRo ZSBjdXJyZW50IHZlcnNpb24gaXMKKyAgIGNoZWNrZWQgYWdhaW5zdCB0aGUg cmVjb3JkZWQgdmVyc2lvbiwgYW5kIGEgd2FybmluZyBpcyBpc3N1ZWQgd2hl biB0aGVyZSBpcworICAgYSBtaXNtYXRjaCwgZm9yIGV4YW1wbGU6Cis8c2Ny ZWVuPgorV0FSTklORzogIElDVSBjb2xsYXRvciB2ZXJzaW9uIG1pc21hdGNo CitERVRBSUw6ICBUaGUgZGF0YWJhc2Ugd2FzIGNyZWF0ZWQgdXNpbmcgdmVy c2lvbiAxLjIuMy40LCB0aGUgbGlicmFyeSBwcm92aWRlcyB2ZXJzaW9uIDIu My40LjUuCitISU5UOiAgUmVidWlsZCBhbGwgb2JqZWN0cyBhZmZlY3RlZCBi eSB0aGlzIGNvbGxhdGlvbiBhbmQgcnVuIEFMVEVSIENPTExBVElPTiBwZ19j YXRhbG9nLiJ4eCVpY3UiIFJFRlJFU0ggVkVSU0lPTiwgb3IgYnVpbGQgUG9z dGdyZVNRTCB3aXRoIHRoZSByaWdodCB2ZXJzaW9uIG9mIElDVS4KKzwvc2Ny ZWVuPgorICAgQSBjaGFuZ2UgaW4gY29sbGF0aW9uIGRlZmluaXRpb25zIGNh biBsZWFkIHRvIGNvcnJ1cHQgaW5kZXhlcyBhbmQgb3RoZXIKKyAgIHByb2Js ZW1zIHdoZXJlIHRoZSBkYXRhYmFzZSBzeXN0ZW0gcmVsaWVzIG9uIHN0b3Jl ZCBvYmplY3RzIGhhdmluZyBhCisgICBjZXJ0YWluIHNvcnQgb3JkZXIuICBH ZW5lcmFsbHksIHRoaXMgc2hvdWxkIGJlIGF2b2lkZWQsIGJ1dCBpdCBjYW4g aGFwcGVuCisgICBpbiBsZWdpdGltYXRlIGNpcmN1bXN0YW5jZXMsIHN1Y2gg YXMgd2hlbgorICAgdXNpbmcgPGNvbW1hbmQ+cGdfdXBncmFkZTwvY29tbWFu ZD4gdG8gdXBncmFkZSB0byBzZXJ2ZXIgYmluYXJpZXMgbGlua2VkCisgICB3 aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBJQ1UuICBXaGVuIHRoaXMgaGFwcGVu cywgYWxsIG9iamVjdHMgZGVwZW5kaW5nIG9uCisgICB0aGUgY29sbGF0aW9u IHNob3VsZCBiZSByZWJ1aWx0LCBmb3IgZXhhbXBsZSwKKyAgIHVzaW5nIDxj b21tYW5kPlJFSU5ERVg8L2NvbW1hbmQ+LiAgV2hlbiB0aGF0IGlzIGRvbmUs IHRoZSBjb2xsYXRpb24gdmVyc2lvbgorICAgY2FuIGJlIHJlZnJlc2hlZCB1 c2luZyB0aGUgY29tbWFuZCA8bGl0ZXJhbD5BTFRFUiBDT0xMQVRJT04gLi4u IFJFRlJFU0gKKyAgIFZFUlNJT048L2xpdGVyYWw+LiAgVGhpcyB3aWxsIHVw ZGF0ZSB0aGUgc3lzdGVtIGNhdGFsb2cgdG8gcmVjb3JkIHRoZQorICAgY3Vy cmVudCBjb2xsYXRvciB2ZXJzaW9uIGFuZCB3aWxsIG1ha2UgdGhlIHdhcm5p bmcgZ28gYXdheS4gIE5vdGUgdGhhdCB0aGlzCisgICBkb2VzIG5vdCBhY3R1 YWxseSBjaGVjayB3aGV0aGVyIGFsbCBhZmZlY3RlZCBvYmplY3RzIGhhdmUg YmVlbiByZWJ1aWx0CisgICBjb3JyZWN0bHkuCisgIDwvcGFyYT4KKyA8L3Jl ZnNlY3QxPgorCiAgPHJlZnNlY3QxPgogICA8dGl0bGU+RXhhbXBsZXM8L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9j b2xsYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2NvbGxh dGlvbi5zZ21sCmluZGV4IGMwOWU1YmQ2ZDQuLmVlN2E4ZWE1YWUgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2NvbGxhdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2NvbGxhdGlvbi5zZ21s CkBAIC0yMSw3ICsyMSw4IEBACiBDUkVBVEUgQ09MTEFUSU9OIFsgSUYgTk9U IEVYSVNUUyBdIDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gKAog ICAgIFsgTE9DQUxFID0gPHJlcGxhY2VhYmxlPmxvY2FsZTwvcmVwbGFjZWFi bGU+LCBdCiAgICAgWyBMQ19DT0xMQVRFID0gPHJlcGxhY2VhYmxlPmxjX2Nv bGxhdGU8L3JlcGxhY2VhYmxlPiwgXQotICAgIFsgTENfQ1RZUEUgPSA8cmVw bGFjZWFibGU+bGNfY3R5cGU8L3JlcGxhY2VhYmxlPiBdCisgICAgWyBMQ19D VFlQRSA9IDxyZXBsYWNlYWJsZT5sY19jdHlwZTwvcmVwbGFjZWFibGU+LCBd CisgICAgWyBQUk9WSURFUiA9IDxyZXBsYWNlYWJsZT5wcm92aWRlcjwvcmVw bGFjZWFibGU+IF0KICkKIENSRUFURSBDT0xMQVRJT04gWyBJRiBOT1QgRVhJ U1RTIF0gPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBGUk9NIDxy ZXBsYWNlYWJsZT5leGlzdGluZ19jb2xsYXRpb248L3JlcGxhY2VhYmxlPgog PC9zeW5vcHNpcz4KQEAgLTExNCw2ICsxMTUsMTkgQEAgPHRpdGxlPlBhcmFt ZXRlcnM8L3RpdGxlPgogICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgPHZh cmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PHJlcGxhY2VhYmxlPnByb3ZpZGVy PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICAgU3BlY2lmaWVzIHRoZSBwcm92aWRlciB0byB1 c2UgZm9yIGxvY2FsZSBzZXJ2aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcwor ICAgICAgIGNvbGxhdGlvbi4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgIGFy ZTogPGxpdGVyYWw+aWN1PC9saXRlcmFsPiw8aW5kZXh0ZXJtPjxwcmltYXJ5 PklDVTwvPjwvPiA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPi4KKyAgICAgICBU aGUgYXZhaWxhYmxlIGNob2ljZXMgZGVwZW5kIG9uIHRoZSBvcGVyYXRpbmcg c3lzdGVtIGFuZCBidWlsZCBvcHRpb25zLgorICAgICAgPC9wYXJhPgorICAg ICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZh cmxpc3RlbnRyeT4KICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlPmV4aXN0aW5n X2NvbGxhdGlvbjwvcmVwbGFjZWFibGU+PC90ZXJtPgogCiAgICAgIDxsaXN0 aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4gYi9z cmMvTWFrZWZpbGUuZ2xvYmFsLmluCmluZGV4IDgzMWQzOWE5ZDEuLjhhOTgx NWRmZWYgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KKysr IGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMTc5LDYgKzE3OSw3IEBA IHBneHNkaXIgPSAkKHBrZ2xpYmRpcikvcGd4cwogIwogIyBSZWNvcmRzIHRo ZSBjaG9pY2Ugb2YgdGhlIHZhcmlvdXMgLS1lbmFibGUteHh4IGFuZCAtLXdp dGgteHh4IG9wdGlvbnMuCiAKK3dpdGhfaWN1CT0gQHdpdGhfaWN1QAogd2l0 aF9wZXJsCT0gQHdpdGhfcGVybEAKIHdpdGhfcHl0aG9uCT0gQHdpdGhfcHl0 aG9uQAogd2l0aF90Y2wJPSBAd2l0aF90Y2xACkBAIC0yMDgsNiArMjA5LDkg QEAgcHl0aG9uX3ZlcnNpb24JCT0gQHB5dGhvbl92ZXJzaW9uQAogCiBrcmJf c3J2dGFiID0gQGtyYl9zcnZ0YWJACiAKK0lDVV9DRkxBR1MJCT0gQElDVV9D RkxBR1NACitJQ1VfTElCUwkJPSBASUNVX0xJQlNACisKIFRDTFNICQkJPSBA VENMU0hACiBUQ0xfTElCUwkJPSBAVENMX0xJQlNACiBUQ0xfTElCX1NQRUMJ CT0gQFRDTF9MSUJfU1BFQ0AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL01h a2VmaWxlIGIvc3JjL2JhY2tlbmQvTWFrZWZpbGUKaW5kZXggN2EwYmJiMjk0 Mi4uZmZmYjBkOTViYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvTWFrZWZpbGUKQEAgLTU4LDcgKzU4LDcg QEAgaWZuZXEgKCQoUE9SVE5BTUUpLCB3aW4zMikKIGlmbmVxICgkKFBPUlRO QU1FKSwgYWl4KQogCiBwb3N0Z3JlczogJChPQkpTKQotCSQoQ0MpICQoQ0ZM QUdTKSAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChleHBvcnRfZHluYW1p YykgJChjYWxsIGV4cGFuZF9zdWJzeXMsJF4pICQoTElCUykgLW8gJEAKKwkk KENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoZXhw b3J0X2R5bmFtaWMpICQoY2FsbCBleHBhbmRfc3Vic3lzLCReKSAkKExJQlMp ICQoSUNVX0xJQlMpIC1vICRACiAKIGVuZGlmCiBlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb2xsYXRpb24uYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMKaW5kZXggNjViNjA1MWMw ZC4uZmZlNjhhYTExNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19jb2xsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X2NvbGxhdGlvbi5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAibWIv cGdfd2NoYXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2lu Y2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvcGdf bG9jYWxlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90cXVhbC5oIgpA QCAtNDAsMTAgKzQxLDEyIEBACiBPaWQKIENvbGxhdGlvbkNyZWF0ZShjb25z dCBjaGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1lc3BhY2UsCiAJCQkJT2lk IGNvbGxvd25lciwKKwkJCQljaGFyIGNvbGxwcm92aWRlciwKIAkJCQlpbnQz MiBjb2xsZW5jb2RpbmcsCiAJCQkJY29uc3QgY2hhciAqY29sbGNvbGxhdGUs IGNvbnN0IGNoYXIgKmNvbGxjdHlwZSwKIAkJCQlib29sIGlmX25vdF9leGlz dHMpCiB7CisJY2hhcgkgICAqY29sbHZlcnNpb247CiAJUmVsYXRpb24JcmVs OwogCVR1cGxlRGVzYwl0dXBEZXNjOwogCUhlYXBUdXBsZQl0dXA7CkBAIC03 OCwyMSArODEsMjcgQEAgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNv bGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAkJewogCQkJZXJlcG9ydChO T1RJQ0UsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNU KSwKLQkJCQkgZXJybXNnKCJjb2xsYXRpb24gXCIlc1wiIGZvciBlbmNvZGlu ZyBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKLQkJCQkJCWNv bGxuYW1lLCBwZ19lbmNvZGluZ190b19jaGFyKGNvbGxlbmNvZGluZykpKSk7 CisJCQkJIGNvbGxlbmNvZGluZyA9PSAtMQorCQkJCSA/IGVycm1zZygiY29s bGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJ CQkJICBjb2xsbmFtZSkKKwkJCQkgOiBlcnJtc2coImNvbGxhdGlvbiBcIiVz XCIgZm9yIGVuY29kaW5nIFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBp bmciLAorCQkJCQkJICBjb2xsbmFtZSwgcGdfZW5jb2RpbmdfdG9fY2hhcihj b2xsZW5jb2RpbmcpKSkpOwogCQkJcmV0dXJuIEludmFsaWRPaWQ7CiAJCX0K IAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKLQkJCQkJIGVycm1zZygiY29sbGF0 aW9uIFwiJXNcIiBmb3IgZW5jb2RpbmcgXCIlc1wiIGFscmVhZHkgZXhpc3Rz IiwKLQkJCQkJCQljb2xsbmFtZSwgcGdfZW5jb2RpbmdfdG9fY2hhcihjb2xs ZW5jb2RpbmcpKSkpOworCQkJCQkgY29sbGVuY29kaW5nID09IC0xCisJCQkJ CSA/IGVycm1zZygiY29sbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIs CisJCQkJCQkJICBjb2xsbmFtZSkKKwkJCQkJIDogZXJybXNnKCJjb2xsYXRp b24gXCIlc1wiIGZvciBlbmNvZGluZyBcIiVzXCIgYWxyZWFkeSBleGlzdHMi LAorCQkJCQkJCSAgY29sbG5hbWUsIHBnX2VuY29kaW5nX3RvX2NoYXIoY29s bGVuY29kaW5nKSkpKTsKIAl9CiAKIAkvKgogCSAqIEFsc28gZm9yYmlkIG1h dGNoaW5nIGFuIGFueS1lbmNvZGluZyBlbnRyeS4gIFRoaXMgdGVzdCBvZiBj b3Vyc2UgaXMgbm90CiAJICogYmFja2VkIHVwIGJ5IHRoZSB1bmlxdWUgaW5k ZXgsIGJ1dCBpdCdzIG5vdCBhIHByb2JsZW0gc2luY2Ugd2UgZG9uJ3QKLQkg KiBzdXBwb3J0IGFkZGluZyBhbnktZW5jb2RpbmcgZW50cmllcyBhZnRlciBp bml0ZGIuCisJICogc3VwcG9ydCBhZGRpbmcgYW55LWVuY29kaW5nIGVudHJp ZXMgYWZ0ZXIgaW5pdGRiLiBGSVhNRQogCSAqLwogCWlmIChTZWFyY2hTeXND YWNoZUV4aXN0czMoQ09MTE5BTUVFTkNOU1AsCiAJCQkJCQkJICBQb2ludGVy R2V0RGF0dW0oY29sbG5hbWUpLApAQCAtMTE0LDYgKzEyMyw4IEBAIENvbGxh dGlvbkNyZWF0ZShjb25zdCBjaGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1l c3BhY2UsCiAJCQkJCQljb2xsbmFtZSkpKTsKIAl9CiAKKwljb2xsdmVyc2lv biA9IGdldF9zeXN0ZW1fY29sbGF0aW9uX3ZlcnNpb24oY29sbHByb3ZpZGVy LCBjb2xsY29sbGF0ZSk7CisKIAkvKiBvcGVuIHBnX2NvbGxhdGlvbiAqLwog CXJlbCA9IGhlYXBfb3BlbihDb2xsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKIAl0dXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwp OwpAQCAtMTI1LDExICsxMzYsMTYgQEAgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0 IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAl2YWx1ZXNb QW51bV9wZ19jb2xsYXRpb25fY29sbG5hbWUgLSAxXSA9IE5hbWVHZXREYXR1 bSgmbmFtZV9uYW1lKTsKIAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29s bG5hbWVzcGFjZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShjb2xsbmFtZXNw YWNlKTsKIAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbG93bmVyIC0g MV0gPSBPYmplY3RJZEdldERhdHVtKGNvbGxvd25lcik7CisJdmFsdWVzW0Fu dW1fcGdfY29sbGF0aW9uX2NvbGxwcm92aWRlciAtIDFdID0gQ2hhckdldERh dHVtKGNvbGxwcm92aWRlcik7CiAJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9u X2NvbGxlbmNvZGluZyAtIDFdID0gSW50MzJHZXREYXR1bShjb2xsZW5jb2Rp bmcpOwogCW5hbWVzdHJjcHkoJm5hbWVfY29sbGF0ZSwgY29sbGNvbGxhdGUp OwogCXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY29sbGF0ZSAtIDFd ID0gTmFtZUdldERhdHVtKCZuYW1lX2NvbGxhdGUpOwogCW5hbWVzdHJjcHko Jm5hbWVfY3R5cGUsIGNvbGxjdHlwZSk7CiAJdmFsdWVzW0FudW1fcGdfY29s bGF0aW9uX2NvbGxjdHlwZSAtIDFdID0gTmFtZUdldERhdHVtKCZuYW1lX2N0 eXBlKTsKKwlpZiAoY29sbHZlcnNpb24pCisJCXZhbHVlc1tBbnVtX3BnX2Nv bGxhdGlvbl9jb2xsdmVyc2lvbiAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1 bShjb2xsdmVyc2lvbik7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX2NvbGxh dGlvbl9jb2xsdmVyc2lvbiAtIDFdID0gdHJ1ZTsKIAogCXR1cCA9IGhlYXBf Zm9ybV90dXBsZSh0dXBEZXNjLCB2YWx1ZXMsIG51bGxzKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCmluZGV4IDkx OWNmYzZhMDYuLjVmOWYxNDJkZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb2xsYXRpb25jbWRzLmMKQEAgLTE0LDE1ICsxNCwxOCBAQAog ICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vz cy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9n L2RlcGVuZGVuY3kuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL29iamVjdGFjY2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf Y29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb25f Zm4uaCIKICNpbmNsdWRlICJjb21tYW5kcy9hbHRlci5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL2NvbGxhdGlvbmNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5k cy9jb21tZW50LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5o IgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgIm1i L3BnX3djaGFyLmgiCkBAIC0zMyw2ICszNiw3IEBACiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAorCiAv KgogICogQ1JFQVRFIENPTExBVElPTgogICovCkBAIC00Nyw4ICs1MSwxMiBA QCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpu YW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCURlZkVs ZW0gICAgKmxvY2FsZUVsID0gTlVMTDsKIAlEZWZFbGVtICAgICpsY2NvbGxh dGVFbCA9IE5VTEw7CiAJRGVmRWxlbSAgICAqbGNjdHlwZUVsID0gTlVMTDsK KwlEZWZFbGVtICAgICpwcm92aWRlckVsID0gTlVMTDsKIAljaGFyCSAgICpj b2xsY29sbGF0ZSA9IE5VTEw7CiAJY2hhcgkgICAqY29sbGN0eXBlID0gTlVM TDsKKwljaGFyCSAgICpjb2xscHJvdmlkZXJzdHIgPSBOVUxMOworCWludAkJ CWNvbGxlbmNvZGluZzsKKwljaGFyCQljb2xscHJvdmlkZXIgPSAwOwogCU9p ZAkJCW5ld29pZDsKIAlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CiAKQEAgLTcy LDYgKzgwLDggQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90 X2UKIAkJCWRlZmVscCA9ICZsY2NvbGxhdGVFbDsKIAkJZWxzZSBpZiAocGdf c3RyY2FzZWNtcChkZWZlbC0+ZGVmbmFtZSwgImxjX2N0eXBlIikgPT0gMCkK IAkJCWRlZmVscCA9ICZsY2N0eXBlRWw7CisJCWVsc2UgaWYgKHBnX3N0cmNh c2VjbXAoZGVmZWwtPmRlZm5hbWUsICJwcm92aWRlciIpID09IDApCisJCQlk ZWZlbHAgPSAmcHJvdmlkZXJFbDsKIAkJZWxzZQogCQl7CiAJCQllcmVwb3J0 KEVSUk9SLApAQCAtMTAzLDYgKzExMyw3IEBAIERlZmluZUNvbGxhdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0 ZXJzLCBib29sIGlmX25vdF9lCiAKIAkJY29sbGNvbGxhdGUgPSBwc3RyZHVw KE5hbWVTdHIoKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSkt PmNvbGxjb2xsYXRlKSk7CiAJCWNvbGxjdHlwZSA9IHBzdHJkdXAoTmFtZVN0 cigoKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29sbGN0 eXBlKSk7CisJCWNvbGxwcm92aWRlciA9ICgoRm9ybV9wZ19jb2xsYXRpb24p IEdFVFNUUlVDVCh0cCkpLT5jb2xscHJvdmlkZXI7CiAKIAkJUmVsZWFzZVN5 c0NhY2hlKHRwKTsKIAl9CkBAIC0xMTksNiArMTMwLDI0IEBAIERlZmluZUNv bGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0 ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJaWYgKGxjY3R5cGVFbCkK IAkJY29sbGN0eXBlID0gZGVmR2V0U3RyaW5nKGxjY3R5cGVFbCk7CiAKKwlp ZiAocHJvdmlkZXJFbCkKKwkJY29sbHByb3ZpZGVyc3RyID0gZGVmR2V0U3Ry aW5nKHByb3ZpZGVyRWwpOworCisJaWYgKGNvbGxwcm92aWRlcnN0cikKKwl7 CisJCWlmIChwZ19zdHJjYXNlY21wKGNvbGxwcm92aWRlcnN0ciwgImljdSIp ID09IDApCisJCQljb2xscHJvdmlkZXIgPSBDT0xMUFJPVklERVJfSUNVOwor CQllbHNlIGlmIChwZ19zdHJjYXNlY21wKGNvbGxwcm92aWRlcnN0ciwgImxp YmMiKSA9PSAwKQorCQkJY29sbHByb3ZpZGVyID0gQ09MTFBST1ZJREVSX0xJ QkM7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBl cnJtc2coInVucmVjb2duaXplZCBjb2xsYXRpb24gcHJvdmlkZXI6ICVzIiwK KwkJCQkJCQljb2xscHJvdmlkZXJzdHIpKSk7CisJfQorCWVsc2UgaWYgKCFm cm9tRWwpCisJCWNvbGxwcm92aWRlciA9IENPTExQUk9WSURFUl9MSUJDOwor CiAJaWYgKCFjb2xsY29sbGF0ZSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLApA QCAtMTI5LDEyICsxNTgsMTkgQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJv b2wgaWZfbm90X2UKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JK RUNUX0RFRklOSVRJT04pLAogCQkJCSBlcnJtc2coInBhcmFtZXRlciBcImxj X2N0eXBlXCIgbXVzdCBiZSBzcGVjaWZpZWQiKSkpOwogCi0JY2hlY2tfZW5j b2RpbmdfbG9jYWxlX21hdGNoZXMoR2V0RGF0YWJhc2VFbmNvZGluZygpLCBj b2xsY29sbGF0ZSwgY29sbGN0eXBlKTsKKwlpZiAoY29sbHByb3ZpZGVyID09 IENPTExQUk9WSURFUl9JQ1UpCisJCWNvbGxlbmNvZGluZyA9IC0xOworCWVs c2UKKwl7CisJCWNvbGxlbmNvZGluZyA9IEdldERhdGFiYXNlRW5jb2Rpbmco KTsKKwkJY2hlY2tfZW5jb2RpbmdfbG9jYWxlX21hdGNoZXMoY29sbGVuY29k aW5nLCBjb2xsY29sbGF0ZSwgY29sbGN0eXBlKTsKKwl9CiAKIAluZXdvaWQg PSBDb2xsYXRpb25DcmVhdGUoY29sbE5hbWUsCiAJCQkJCQkJIGNvbGxOYW1l c3BhY2UsCiAJCQkJCQkJIEdldFVzZXJJZCgpLAotCQkJCQkJCSBHZXREYXRh YmFzZUVuY29kaW5nKCksCisJCQkJCQkJIGNvbGxwcm92aWRlciwKKwkJCQkJ CQkgY29sbGVuY29kaW5nLAogCQkJCQkJCSBjb2xsY29sbGF0ZSwKIAkJCQkJ CQkgY29sbGN0eXBlLAogCQkJCQkJCSBpZl9ub3RfZXhpc3RzKTsKQEAgLTE4 Miw2ICsyMTgsNzkgQEAgSXNUaGVyZUNvbGxhdGlvbkluTmFtZXNwYWNlKGNv bnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgbnNwT2lkKQogCQkJCQkJY29sbG5h bWUsIGdldF9uYW1lc3BhY2VfbmFtZShuc3BPaWQpKSkpOwogfQogCisvKgor ICogQUxURVIgQ09MTEFUSU9OCisgKi8KK09iamVjdEFkZHJlc3MKK0FsdGVy Q29sbGF0aW9uKEFsdGVyQ29sbGF0aW9uU3RtdCAqc3RtdCkKK3sKKwlSZWxh dGlvbglyZWw7CisJT2lkCQkJY29sbE9pZDsKKwlIZWFwVHVwbGUJdHVwOwor CUZvcm1fcGdfY29sbGF0aW9uIGNvbGxGb3JtOworCURhdHVtCQljb2xsdmVy c2lvbjsKKwlib29sCQlpc251bGw7CisJY2hhcgkgICAqb2xkdmVyc2lvbjsK KwljaGFyCSAgICpuZXd2ZXJzaW9uOworCU9iamVjdEFkZHJlc3MgYWRkcmVz czsKKworCXJlbCA9IGhlYXBfb3BlbihDb2xsYXRpb25SZWxhdGlvbklkLCBS b3dFeGNsdXNpdmVMb2NrKTsKKwljb2xsT2lkID0gZ2V0X2NvbGxhdGlvbl9v aWQoc3RtdC0+Y29sbG5hbWUsIGZhbHNlKTsKKworCWlmICghcGdfY29sbGF0 aW9uX293bmVyY2hlY2soY29sbE9pZCwgR2V0VXNlcklkKCkpKQorCQlhY2xj aGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIEFDTF9LSU5EX0NPTExB VElPTiwKKwkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhzdG10LT5jb2xsbmFt ZSkpOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShDT0xMT0lELCBP YmplY3RJZEdldERhdHVtKGNvbGxPaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIGNvbGxhdGlvbiAldSIsIGNvbGxPaWQpOworCisJY29sbEZvcm0g PSAoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVDVCh0dXApOworCWNvbGx2 ZXJzaW9uID0gU3lzQ2FjaGVHZXRBdHRyKENPTExPSUQsIHR1cCwgQW51bV9w Z19jb2xsYXRpb25fY29sbHZlcnNpb24sCisJCQkJCQkJCSAgJmlzbnVsbCk7 CisJb2xkdmVyc2lvbiA9IGlzbnVsbCA/IE5VTEwgOiBUZXh0RGF0dW1HZXRD U3RyaW5nKGNvbGx2ZXJzaW9uKTsKKworCW5ld3ZlcnNpb24gPSBnZXRfc3lz dGVtX2NvbGxhdGlvbl92ZXJzaW9uKGNvbGxGb3JtLT5jb2xscHJvdmlkZXIs IE5hbWVTdHIoY29sbEZvcm0tPmNvbGxjb2xsYXRlKSk7CisKKwkvKiBjYW5u b3QgY2hhbmdlIGZyb20gTlVMTCB0byBub24tTlVMTCBvciB2aWNlIHZlcnNh ICovCisJaWYgKCghb2xkdmVyc2lvbiAmJiBuZXd2ZXJzaW9uKSB8fCAob2xk dmVyc2lvbiAmJiAhbmV3dmVyc2lvbikpCisJCWVsb2coRVJST1IsICJpbnZh bGlkIGNvbGxhdGlvbiB2ZXJzaW9uIGNoYW5nZSIpOworCWVsc2UgaWYgKG9s ZHZlcnNpb24gJiYgbmV3dmVyc2lvbiAmJiBzdHJjbXAobmV3dmVyc2lvbiwg b2xkdmVyc2lvbikgIT0gMCkKKwl7CisJCWJvb2wgICAgICAgIG51bGxzW05h dHRzX3BnX2NvbGxhdGlvbl07CisJCWJvb2wgICAgICAgIHJlcGxhY2VzW05h dHRzX3BnX2NvbGxhdGlvbl07CisJCURhdHVtICAgICAgIHZhbHVlc1tOYXR0 c19wZ19jb2xsYXRpb25dOworCisJCWVyZXBvcnQoTk9USUNFLAorCQkJCShl cnJtc2coImNoYW5naW5nIHZlcnNpb24gZnJvbSAlcyB0byAlcyIsCisJCQkJ CQlvbGR2ZXJzaW9uLCBuZXd2ZXJzaW9uKSkpOworCisJCW1lbXNldCh2YWx1 ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwkJbWVtc2V0KG51bGxzLCBmYWxz ZSwgc2l6ZW9mKG51bGxzKSk7CisJCW1lbXNldChyZXBsYWNlcywgZmFsc2Us IHNpemVvZihyZXBsYWNlcykpOworCisJCXZhbHVlc1tBbnVtX3BnX2NvbGxh dGlvbl9jb2xsdmVyc2lvbiAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShu ZXd2ZXJzaW9uKTsKKwkJcmVwbGFjZXNbQW51bV9wZ19jb2xsYXRpb25fY29s bHZlcnNpb24gLSAxXSA9IHRydWU7CisKKwkJdHVwID0gaGVhcF9tb2RpZnlf dHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksCisJCQkJCQkJCXZh bHVlcywgbnVsbHMsIHJlcGxhY2VzKTsKKwl9CisJZWxzZQorCQllcmVwb3J0 KE5PVElDRSwKKwkJCQkoZXJybXNnKCJ2ZXJzaW9uIGhhcyBub3QgY2hhbmdl ZCIpKSk7CisKKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3Nl bGYsIHR1cCk7CisKKwlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKENvbGxh dGlvblJlbGF0aW9uSWQsIGNvbGxPaWQsIDApOworCisJT2JqZWN0QWRkcmVz c1NldChhZGRyZXNzLCBDb2xsYXRpb25SZWxhdGlvbklkLCBjb2xsT2lkKTsK KworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJaGVhcF9jbG9zZShyZWwsIE5v TG9jayk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKwogCiAvKgogICogIk5v cm1hbGl6ZSIgYSBsb2NhbGUgbmFtZSwgc3RyaXBwaW5nIG9mZiBlbmNvZGlu ZyB0YWdzIHN1Y2ggYXMKQEAgLTIxOSw2ICszMjgsMjkgQEAgbm9ybWFsaXpl X2xvY2FsZV9uYW1lKGNoYXIgKm5ldywgY29uc3QgY2hhciAqb2xkKQogfQog CiAKKyNpZmRlZiBVU0VfSUNVCitzdGF0aWMgY2hhciAqCitnZXRfaWN1X2xv Y2FsZV9jb21tZW50KGNvbnN0IGNoYXIgKmxvY2FsZW5hbWUpCit7CisJVUVy cm9yQ29kZQlzdGF0dXM7CisJVUNoYXIJCWRpc3BsYXluYW1lWzEyOF07CisJ aW50MzIJCWxlbl91Y2hhcjsKKwljaGFyCSAgICpyZXN1bHQ7CisKKwlzdGF0 dXMgPSBVX1pFUk9fRVJST1I7CisJbGVuX3VjaGFyID0gdWxvY19nZXREaXNw bGF5TmFtZShsb2NhbGVuYW1lLCAiZW4iLCAmZGlzcGxheW5hbWVbMF0sIHNp emVvZihkaXNwbGF5bmFtZSksICZzdGF0dXMpOworCWlmIChVX0ZBSUxVUkUo c3RhdHVzKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3Vs ZCBnZXQgZGlzcGxheSBuYW1lIGZvciBsb2NhbGUgXCIlc1wiOiAlcyIsCisJ CQkJCQlsb2NhbGVuYW1lLCB1X2Vycm9yTmFtZShzdGF0dXMpKSkpOworCisJ aWN1X2Zyb21fdWNoYXIoJnJlc3VsdCwgZGlzcGxheW5hbWUsIGxlbl91Y2hh cik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCS8qIFVTRV9JQ1Ug Ki8KKworCiBEYXR1bQogcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBH X0ZVTkNUSU9OX0FSR1MpCiB7CkBAIC0zMDIsNyArNDM0LDcgQEAgcGdfaW1w b3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJ Y291bnQrKzsKIAotCQlDb2xsYXRpb25DcmVhdGUobG9jYWxlYnVmLCBuc3Bp ZCwgR2V0VXNlcklkKCksIGVuYywKKwkJQ29sbGF0aW9uQ3JlYXRlKGxvY2Fs ZWJ1ZiwgbnNwaWQsIEdldFVzZXJJZCgpLCBDT0xMUFJPVklERVJfTElCQywg ZW5jLAogCQkJCQkJbG9jYWxlYnVmLCBsb2NhbGVidWYsIGlmX25vdF9leGlz dHMpOwogCiAJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CkBAIC0zMzMs NyArNDY1LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCWNoYXIJICAgKmxvY2FsZSA9IChjaGFyICopIGxm aXJzdChsY2wpOwogCQlpbnQJCQllbmMgPSBsZmlyc3RfaW50KGxjZSk7CiAK LQkJQ29sbGF0aW9uQ3JlYXRlKGFsaWFzLCBuc3BpZCwgR2V0VXNlcklkKCks IGVuYywKKwkJQ29sbGF0aW9uQ3JlYXRlKGFsaWFzLCBuc3BpZCwgR2V0VXNl cklkKCksIENPTExQUk9WSURFUl9MSUJDLCBlbmMsCiAJCQkJCQlsb2NhbGUs IGxvY2FsZSwgdHJ1ZSk7CiAJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CiAJfQpAQCAtMzQzLDUgKzQ3NSw3MCBAQCBwZ19pbXBvcnRfc3lzdGVtX2Nv bGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkoZXJybXNnKCJubyB1 c2FibGUgc3lzdGVtIGxvY2FsZXMgd2VyZSBmb3VuZCIpKSk7CiAjZW5kaWYg ICAvKiBub3QgSEFWRV9MT0NBTEVfVCAmJiBub3QgV0lOMzIgKi8KIAorI2lm ZGVmIFVTRV9JQ1UKKwlpZiAoIWlzX2VuY29kaW5nX3N1cHBvcnRlZF9ieV9p Y3UoR2V0RGF0YWJhc2VFbmNvZGluZygpKSkKKwl7CisJCWVyZXBvcnQoTk9U SUNFLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkgZXJybXNnKCJlbmNvZGluZyBcIiVzXCIgbm90IHN1cHBv cnRlZCBieSBJQ1UiLAorCQkJCQkJcGdfZW5jb2RpbmdfdG9fY2hhcihHZXRE YXRhYmFzZUVuY29kaW5nKCkpKSkpOworCX0KKwllbHNlCisJeworCQlpbnQg aTsKKworCQkvKgorCQkgKiBTdGFydCB0aGUgbG9vcCBhdCAtMSB0byBzbmVh ayBpbiB0aGUgcm9vdCBsb2NhbGUgd2l0aG91dCB0b28gbXVjaAorCQkgKiBj b2RlIGR1cGxpY2F0aW9uLgorCQkgKi8KKwkJZm9yIChpID0gLTE7IGkgPCB1 Y29sX2NvdW50QXZhaWxhYmxlKCk7IGkrKykKKwkJeworCQkJY29uc3QgY2hh ciAqbmFtZTsKKwkJCVVFbnVtZXJhdGlvbiAqZW47CisJCQlVRXJyb3JDb2Rl CXN0YXR1czsKKwkJCWNvbnN0IGNoYXIgKnZhbDsKKwkJCU9pZAkJCWNvbGxp ZDsKKworCQkJaWYgKGkgPT0gLTEpCisJCQkJbmFtZSA9ICIiOyAgLyogSUNV IHJvb3QgbG9jYWxlICovCisJCQllbHNlCisJCQkJbmFtZSA9IHVjb2xfZ2V0 QXZhaWxhYmxlKGkpOworCQkJY29sbGlkID0gQ29sbGF0aW9uQ3JlYXRlKHBz cHJpbnRmKCIlcyUlaWN1IiwgaSA9PSAtMSA/ICJyb290IiA6IG5hbWUpLAor CQkJCQkJCQkJIG5zcGlkLCBHZXRVc2VySWQoKSwgQ09MTFBST1ZJREVSX0lD VSwgLTEsCisJCQkJCQkJCQkgbmFtZSwgbmFtZSwgaWZfbm90X2V4aXN0cyk7 CisKKwkJCUNyZWF0ZUNvbW1lbnRzKGNvbGxpZCwgQ29sbGF0aW9uUmVsYXRp b25JZCwgMCwKKwkJCQkJCSAgIGdldF9pY3VfbG9jYWxlX2NvbW1lbnQobmFt ZSkpOworCisJCQkvKgorCQkJICogQWRkIGtleXdvcmQgdmFyaWFudHMKKwkJ CSAqLworCQkJc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCQkJZW4gPSB1Y29s X2dldEtleXdvcmRWYWx1ZXNGb3JMb2NhbGUoImNvbGxhdGlvbiIsIG5hbWUs IFRSVUUsICZzdGF0dXMpOworCQkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJybXNnKCJjb3VsZCBub3Qg Z2V0IGtleXdvcmQgdmFsdWVzIGZvciBsb2NhbGUgXCIlc1wiOiAlcyIsCisJ CQkJCQkJCW5hbWUsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7CisKKwkJCXN0 YXR1cyA9IFVfWkVST19FUlJPUjsKKwkJCXVlbnVtX3Jlc2V0KGVuLCAmc3Rh dHVzKTsKKwkJCXdoaWxlICgodmFsID0gdWVudW1fbmV4dChlbiwgTlVMTCwg JnN0YXR1cykpKQorCQkJeworCQkJCWNoYXIgKmxvY2FsZW5hbWUgPSBwc3By aW50ZigiJXNAY29sbGF0aW9uPSVzIiwgbmFtZSwgdmFsKTsKKwkJCQljb2xs aWQgPSBDb2xsYXRpb25DcmVhdGUocHNwcmludGYoIiVzXyVzJSVpY3UiLCBp ID09IC0xID8gInJvb3QiIDogbmFtZSwgdmFsKSwKKwkJCQkJCQkJCQkgbnNw aWQsIEdldFVzZXJJZCgpLCBDT0xMUFJPVklERVJfSUNVLCAtMSwKKwkJCQkJ CQkJCQkgbG9jYWxlbmFtZSwgbG9jYWxlbmFtZSwgaWZfbm90X2V4aXN0cyk7 CisJCQkJQ3JlYXRlQ29tbWVudHMoY29sbGlkLCBDb2xsYXRpb25SZWxhdGlv bklkLCAwLAorCQkJCQkJCSAgIGdldF9pY3VfbG9jYWxlX2NvbW1lbnQobG9j YWxlbmFtZSkpOworCQkJfQorCQkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJybXNnKCJjb3VsZCBub3Qg Z2V0IGtleXdvcmQgdmFsdWVzIGZvciBsb2NhbGUgXCIlc1wiOiAlcyIsCisJ CQkJCQkJCW5hbWUsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7CisJCQl1ZW51 bV9jbG9zZShlbik7CisJCX0KKwl9CisjZW5kaWYKKwogCVBHX1JFVFVSTl9W T0lEKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tb24ubWsg Yi9zcmMvYmFja2VuZC9jb21tb24ubWsKaW5kZXggNWQ1OTlkYmQwYy4uMGI1 NzU0M2JjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbW9uLm1rCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpAQCAtOCw2ICs4LDggQEAKICMg dGhpcyBkaXJlY3RvcnkgYW5kIFNVQkRJUlMgdG8gc3ViZGlyZWN0b3JpZXMg Y29udGFpbmluZyBtb3JlIHRoaW5ncwogIyB0byBidWlsZC4KIAorb3ZlcnJp ZGUgQ1BQRkxBR1MgOj0gJChDUFBGTEFHUykgJChJQ1VfQ0ZMQUdTKQorCiBp ZmRlZiBQQVJUSUFMX0xJTktJTkcKICMgb2xkIHN0eWxlOiBsaW5raW5nIHVz aW5nIFNVQlNZUy5vCiBzdWJzeXNmaWxlbmFtZSA9IFNVQlNZUy5vCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IGJmYzJhYzE3MTYuLjcx ZGFhYmJmOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBA IC0zMDI4LDYgKzMwMjgsMTYgQEAgX2NvcHlBbHRlclRhYmxlQ21kKGNvbnN0 IEFsdGVyVGFibGVDbWQgKmZyb20pCiAJcmV0dXJuIG5ld25vZGU7CiB9CiAK K3N0YXRpYyBBbHRlckNvbGxhdGlvblN0bXQgKgorX2NvcHlBbHRlckNvbGxh dGlvblN0bXQoY29uc3QgQWx0ZXJDb2xsYXRpb25TdG10ICpmcm9tKQorewor CUFsdGVyQ29sbGF0aW9uU3RtdCAqbmV3bm9kZSA9IG1ha2VOb2RlKEFsdGVy Q29sbGF0aW9uU3RtdCk7CisKKwlDT1BZX05PREVfRklFTEQoY29sbG5hbWUp OworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIHN0YXRpYyBBbHRlckRvbWFp blN0bXQgKgogX2NvcHlBbHRlckRvbWFpblN0bXQoY29uc3QgQWx0ZXJEb21h aW5TdG10ICpmcm9tKQogewpAQCAtNDk1OSw2ICs0OTY5LDkgQEAgY29weU9i amVjdChjb25zdCB2b2lkICpmcm9tKQogCQljYXNlIFRfQWx0ZXJUYWJsZUNt ZDoKIAkJCXJldHZhbCA9IF9jb3B5QWx0ZXJUYWJsZUNtZChmcm9tKTsKIAkJ CWJyZWFrOworCQljYXNlIFRfQWx0ZXJDb2xsYXRpb25TdG10OgorCQkJcmV0 dmFsID0gX2NvcHlBbHRlckNvbGxhdGlvblN0bXQoZnJvbSk7CisJCQlicmVh azsKIAkJY2FzZSBUX0FsdGVyRG9tYWluU3RtdDoKIAkJCXJldHZhbCA9IF9j b3B5QWx0ZXJEb21haW5TdG10KGZyb20pOwogCQkJYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggNTRlOWM5ODNhMC4uNTdm ZTdjYTYxZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpA QCAtMTA4Nyw2ICsxMDg3LDE0IEBAIF9lcXVhbEFsdGVyVGFibGVDbWQoY29u c3QgQWx0ZXJUYWJsZUNtZCAqYSwgY29uc3QgQWx0ZXJUYWJsZUNtZCAqYikK IH0KIAogc3RhdGljIGJvb2wKK19lcXVhbEFsdGVyQ29sbGF0aW9uU3RtdChj b25zdCBBbHRlckNvbGxhdGlvblN0bXQgKmEsIGNvbnN0IEFsdGVyQ29sbGF0 aW9uU3RtdCAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQoY29sbG5hbWUp OworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sCiBfZXF1YWxB bHRlckRvbWFpblN0bXQoY29uc3QgQWx0ZXJEb21haW5TdG10ICphLCBjb25z dCBBbHRlckRvbWFpblN0bXQgKmIpCiB7CiAJQ09NUEFSRV9TQ0FMQVJfRklF TEQoc3VidHlwZSk7CkBAIC0zMTU2LDYgKzMxNjQsOSBAQCBlcXVhbChjb25z dCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCQljYXNlIFRfQWx0ZXJUYWJs ZUNtZDoKIAkJCXJldHZhbCA9IF9lcXVhbEFsdGVyVGFibGVDbWQoYSwgYik7 CiAJCQlicmVhazsKKwkJY2FzZSBUX0FsdGVyQ29sbGF0aW9uU3RtdDoKKwkJ CXJldHZhbCA9IF9lcXVhbEFsdGVyQ29sbGF0aW9uU3RtdChhLCBiKTsKKwkJ CWJyZWFrOwogCQljYXNlIFRfQWx0ZXJEb21haW5TdG10OgogCQkJcmV0dmFs ID0gX2VxdWFsQWx0ZXJEb21haW5TdG10KGEsIGIpOwogCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBlN2FjYzJkOWEyLi5lMzM3YWJk NzhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI0NCw3ICsyNDQs NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogfQog CiAldHlwZSA8bm9kZT4Jc3RtdCBzY2hlbWFfc3RtdAotCQlBbHRlckV2ZW50 VHJpZ1N0bXQKKwkJQWx0ZXJFdmVudFRyaWdTdG10IEFsdGVyQ29sbGF0aW9u U3RtdAogCQlBbHRlckRhdGFiYXNlU3RtdCBBbHRlckRhdGFiYXNlU2V0U3Rt dCBBbHRlckRvbWFpblN0bXQgQWx0ZXJFbnVtU3RtdAogCQlBbHRlckZkd1N0 bXQgQWx0ZXJGb3JlaWduU2VydmVyU3RtdCBBbHRlckdyb3VwU3RtdAogCQlB bHRlck9iamVjdERlcGVuZHNTdG10IEFsdGVyT2JqZWN0U2NoZW1hU3RtdCBB bHRlck93bmVyU3RtdApAQCAtODEyLDYgKzgxMiw3IEBAIHN0bXRtdWx0aToJ c3RtdG11bHRpICc7JyBzdG10CiAKIHN0bXQgOgogCQkJQWx0ZXJFdmVudFRy aWdTdG10CisJCQl8IEFsdGVyQ29sbGF0aW9uU3RtdAogCQkJfCBBbHRlckRh dGFiYXNlU3RtdAogCQkJfCBBbHRlckRhdGFiYXNlU2V0U3RtdAogCQkJfCBB bHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdApAQCAtOTYzMyw2ICs5NjM0LDIx IEBAIERyb3BkYlN0bXQ6IERST1AgREFUQUJBU0UgZGF0YWJhc2VfbmFtZQog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCisgKgkJ QUxURVIgQ09MTEFUSU9OCisgKgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworCitBbHRlckNvbGxhdGlvblN0bXQ6IEFMVEVSIENPTExB VElPTiBhbnlfbmFtZSBSRUZSRVNIIFZFUlNJT05fUAorCQkJCXsKKwkJCQkJ QWx0ZXJDb2xsYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJDb2xsYXRp b25TdG10KTsKKwkJCQkJbi0+Y29sbG5hbWUgPSAkMzsKKwkJCQkJJCQgPSAo Tm9kZSAqKW47CisJCQkJfQorCQk7CisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKgogICoJCUFMVEVSIFNZU1RFTQogICoKICAq IFRoaXMgaXMgdXNlZCB0byBjaGFuZ2UgY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXJzIHBlcnNpc3RlbnRseS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl Z2V4L3JlZ2NfcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC9yZWdleC9yZWdj X3BnX2xvY2FsZS5jCmluZGV4IGFmYTNhN2Q2MTMuLjU1YzhhYjEyZDYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlZ2V4L3JlZ2NfcGdfbG9jYWxlLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVnZXgvcmVnY19wZ19sb2NhbGUuYwpAQCAt NjgsNyArNjgsOCBAQCB0eXBlZGVmIGVudW0KIAlQR19SRUdFWF9MT0NBTEVf V0lERSwJCS8qIFVzZSA8d2N0eXBlLmg+IGZ1bmN0aW9ucyAqLwogCVBHX1JF R0VYX0xPQ0FMRV8xQllURSwJCS8qIFVzZSA8Y3R5cGUuaD4gZnVuY3Rpb25z ICovCiAJUEdfUkVHRVhfTE9DQUxFX1dJREVfTCwJCS8qIFVzZSBsb2NhbGVf dCA8d2N0eXBlLmg+IGZ1bmN0aW9ucyAqLwotCVBHX1JFR0VYX0xPQ0FMRV8x QllURV9MCQkvKiBVc2UgbG9jYWxlX3QgPGN0eXBlLmg+IGZ1bmN0aW9ucyAq LworCVBHX1JFR0VYX0xPQ0FMRV8xQllURV9MLAkvKiBVc2UgbG9jYWxlX3Qg PGN0eXBlLmg+IGZ1bmN0aW9ucyAqLworCVBHX1JFR0VYX0xPQ0FMRV9JQ1UJ CQkvKiBVc2UgSUNVIHVjaGFyLmggZnVuY3Rpb25zICovCiB9IFBHX0xvY2Fs ZV9TdHJhdGVneTsKIAogc3RhdGljIFBHX0xvY2FsZV9TdHJhdGVneSBwZ19y ZWdleF9zdHJhdGVneTsKQEAgLTI2Miw2ICsyNjMsMTEgQEAgcGdfc2V0X3Jl Z2V4X2NvbGxhdGlvbihPaWQgY29sbGF0aW9uKQogCQkJCQkgZXJyaGludCgi VXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNvbGxhdGlvbiBl eHBsaWNpdGx5LiIpKSk7CiAJCX0KIAorI2lmZGVmIFVTRV9JQ1UKKwkJaWYg KHBnX3JlZ2V4X2xvY2FsZSAmJiBwZ19yZWdleF9sb2NhbGUtPnByb3ZpZGVy ID09IENPTExQUk9WSURFUl9JQ1UpCisJCQlwZ19yZWdleF9zdHJhdGVneSA9 IFBHX1JFR0VYX0xPQ0FMRV9JQ1U7CisJCWVsc2UKKyNlbmRpZgogI2lmZGVm IFVTRV9XSURFX1VQUEVSX0xPV0VSCiAJCWlmIChHZXREYXRhYmFzZUVuY29k aW5nKCkgPT0gUEdfVVRGOCkKIAkJewpAQCAtMzAzLDEzICszMDksMTggQEAg cGdfd2NfaXNkaWdpdChwZ193Y2hhciBjKQogCQljYXNlIFBHX1JFR0VYX0xP Q0FMRV9XSURFX0w6CiAjaWYgZGVmaW5lZChIQVZFX0xPQ0FMRV9UKSAmJiBk ZWZpbmVkKFVTRV9XSURFX1VQUEVSX0xPV0VSKQogCQkJaWYgKHNpemVvZih3 Y2hhcl90KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJ cmV0dXJuIGlzd2RpZ2l0X2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxl KTsKKwkJCQlyZXR1cm4gaXN3ZGlnaXRfbCgod2ludF90KSBjLCBwZ19yZWdl eF9sb2NhbGUtPmluZm8ubHQpOwogI2VuZGlmCiAJCQkvKiBGQUxMIFRIUlUg Ki8KIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfMUJZVEVfTDoKICNpZmRlZiBI QVZFX0xPQ0FMRV9UCiAJCQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSBVQ0hB Ul9NQVggJiYKLQkJCQkJaXNkaWdpdF9sKCh1bnNpZ25lZCBjaGFyKSBjLCBw Z19yZWdleF9sb2NhbGUpKTsKKwkJCQkJaXNkaWdpdF9sKCh1bnNpZ25lZCBj aGFyKSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQpKTsKKyNlbmRpZgor CQkJYnJlYWs7CisJCWNhc2UgUEdfUkVHRVhfTE9DQUxFX0lDVToKKyNpZmRl ZiBVU0VfSUNVCisJCQlyZXR1cm4gdV9pc2RpZ2l0KGMpOwogI2VuZGlmCiAJ CQlicmVhazsKIAl9CkBAIC0zMzYsMTMgKzM0NywxOCBAQCBwZ193Y19pc2Fs cGhhKHBnX3djaGFyIGMpCiAJCWNhc2UgUEdfUkVHRVhfTE9DQUxFX1dJREVf TDoKICNpZiBkZWZpbmVkKEhBVkVfTE9DQUxFX1QpICYmIGRlZmluZWQoVVNF X1dJREVfVVBQRVJfTE9XRVIpCiAJCQlpZiAoc2l6ZW9mKHdjaGFyX3QpID49 IDQgfHwgYyA8PSAocGdfd2NoYXIpIDB4RkZGRikKLQkJCQlyZXR1cm4gaXN3 YWxwaGFfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2NhbGUpOworCQkJCXJl dHVybiBpc3dhbHBoYV9sKCh3aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+ aW5mby5sdCk7CiAjZW5kaWYKIAkJCS8qIEZBTEwgVEhSVSAqLwogCQljYXNl IFBHX1JFR0VYX0xPQ0FMRV8xQllURV9MOgogI2lmZGVmIEhBVkVfTE9DQUxF X1QKIAkJCXJldHVybiAoYyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCAmJgot CQkJCQlpc2FscGhhX2woKHVuc2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xv Y2FsZSkpOworCQkJCQlpc2FscGhhX2woKHVuc2lnbmVkIGNoYXIpIGMsIHBn X3JlZ2V4X2xvY2FsZS0+aW5mby5sdCkpOworI2VuZGlmCisJCQlicmVhazsK KwkJY2FzZSBQR19SRUdFWF9MT0NBTEVfSUNVOgorI2lmZGVmIFVTRV9JQ1UK KwkJCXJldHVybiB1X2lzYWxwaGEoYyk7CiAjZW5kaWYKIAkJCWJyZWFrOwog CX0KQEAgLTM2OSwxMyArMzg1LDE4IEBAIHBnX3djX2lzYWxudW0ocGdfd2No YXIgYykKIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfV0lERV9MOgogI2lmIGRl ZmluZWQoSEFWRV9MT0NBTEVfVCkgJiYgZGVmaW5lZChVU0VfV0lERV9VUFBF Ul9MT1dFUikKIAkJCWlmIChzaXplb2Yod2NoYXJfdCkgPj0gNCB8fCBjIDw9 IChwZ193Y2hhcikgMHhGRkZGKQotCQkJCXJldHVybiBpc3dhbG51bV9sKCh3 aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZSk7CisJCQkJcmV0dXJuIGlzd2Fs bnVtX2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KTsK ICNlbmRpZgogCQkJLyogRkFMTCBUSFJVICovCiAJCWNhc2UgUEdfUkVHRVhf TE9DQUxFXzFCWVRFX0w6CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAogCQkJcmV0 dXJuIChjIDw9IChwZ193Y2hhcikgVUNIQVJfTUFYICYmCi0JCQkJCWlzYWxu dW1fbCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxlKSk7CisJ CQkJCWlzYWxudW1fbCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9j YWxlLT5pbmZvLmx0KSk7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIFBH X1JFR0VYX0xPQ0FMRV9JQ1U6CisjaWZkZWYgVVNFX0lDVQorCQkJcmV0dXJu IHVfaXNhbG51bShjKTsKICNlbmRpZgogCQkJYnJlYWs7CiAJfQpAQCAtNDAy LDEzICs0MjMsMTggQEAgcGdfd2NfaXN1cHBlcihwZ193Y2hhciBjKQogCQlj YXNlIFBHX1JFR0VYX0xPQ0FMRV9XSURFX0w6CiAjaWYgZGVmaW5lZChIQVZF X0xPQ0FMRV9UKSAmJiBkZWZpbmVkKFVTRV9XSURFX1VQUEVSX0xPV0VSKQog CQkJaWYgKHNpemVvZih3Y2hhcl90KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFy KSAweEZGRkYpCi0JCQkJcmV0dXJuIGlzd3VwcGVyX2woKHdpbnRfdCkgYywg cGdfcmVnZXhfbG9jYWxlKTsKKwkJCQlyZXR1cm4gaXN3dXBwZXJfbCgod2lu dF90KSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQpOwogI2VuZGlmCiAJ CQkvKiBGQUxMIFRIUlUgKi8KIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfMUJZ VEVfTDoKICNpZmRlZiBIQVZFX0xPQ0FMRV9UCiAJCQlyZXR1cm4gKGMgPD0g KHBnX3djaGFyKSBVQ0hBUl9NQVggJiYKLQkJCQkJaXN1cHBlcl9sKCh1bnNp Z25lZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUpKTsKKwkJCQkJaXN1cHBl cl9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8u bHQpKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgUEdfUkVHRVhfTE9D QUxFX0lDVToKKyNpZmRlZiBVU0VfSUNVCisJCQlyZXR1cm4gdV9pc3VwcGVy KGMpOwogI2VuZGlmCiAJCQlicmVhazsKIAl9CkBAIC00MzUsMTMgKzQ2MSwx OCBAQCBwZ193Y19pc2xvd2VyKHBnX3djaGFyIGMpCiAJCWNhc2UgUEdfUkVH RVhfTE9DQUxFX1dJREVfTDoKICNpZiBkZWZpbmVkKEhBVkVfTE9DQUxFX1Qp ICYmIGRlZmluZWQoVVNFX1dJREVfVVBQRVJfTE9XRVIpCiAJCQlpZiAoc2l6 ZW9mKHdjaGFyX3QpID49IDQgfHwgYyA8PSAocGdfd2NoYXIpIDB4RkZGRikK LQkJCQlyZXR1cm4gaXN3bG93ZXJfbCgod2ludF90KSBjLCBwZ19yZWdleF9s b2NhbGUpOworCQkJCXJldHVybiBpc3dsb3dlcl9sKCh3aW50X3QpIGMsIHBn X3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7CiAjZW5kaWYKIAkJCS8qIEZBTEwg VEhSVSAqLwogCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV8xQllURV9MOgogI2lm ZGVmIEhBVkVfTE9DQUxFX1QKIAkJCXJldHVybiAoYyA8PSAocGdfd2NoYXIp IFVDSEFSX01BWCAmJgotCQkJCQlpc2xvd2VyX2woKHVuc2lnbmVkIGNoYXIp IGMsIHBnX3JlZ2V4X2xvY2FsZSkpOworCQkJCQlpc2xvd2VyX2woKHVuc2ln bmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCkpOworI2Vu ZGlmCisJCQlicmVhazsKKwkJY2FzZSBQR19SRUdFWF9MT0NBTEVfSUNVOgor I2lmZGVmIFVTRV9JQ1UKKwkJCXJldHVybiB1X2lzbG93ZXIoYyk7CiAjZW5k aWYKIAkJCWJyZWFrOwogCX0KQEAgLTQ2OCwxMyArNDk5LDE4IEBAIHBnX3dj X2lzZ3JhcGgocGdfd2NoYXIgYykKIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVf V0lERV9MOgogI2lmIGRlZmluZWQoSEFWRV9MT0NBTEVfVCkgJiYgZGVmaW5l ZChVU0VfV0lERV9VUFBFUl9MT1dFUikKIAkJCWlmIChzaXplb2Yod2NoYXJf dCkgPj0gNCB8fCBjIDw9IChwZ193Y2hhcikgMHhGRkZGKQotCQkJCXJldHVy biBpc3dncmFwaF9sKCh3aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZSk7CisJ CQkJcmV0dXJuIGlzd2dyYXBoX2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9j YWxlLT5pbmZvLmx0KTsKICNlbmRpZgogCQkJLyogRkFMTCBUSFJVICovCiAJ CWNhc2UgUEdfUkVHRVhfTE9DQUxFXzFCWVRFX0w6CiAjaWZkZWYgSEFWRV9M T0NBTEVfVAogCQkJcmV0dXJuIChjIDw9IChwZ193Y2hhcikgVUNIQVJfTUFY ICYmCi0JCQkJCWlzZ3JhcGhfbCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVn ZXhfbG9jYWxlKSk7CisJCQkJCWlzZ3JhcGhfbCgodW5zaWduZWQgY2hhcikg YywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KSk7CisjZW5kaWYKKwkJCWJy ZWFrOworCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9JQ1U6CisjaWZkZWYgVVNF X0lDVQorCQkJcmV0dXJuIHVfaXNncmFwaChjKTsKICNlbmRpZgogCQkJYnJl YWs7CiAJfQpAQCAtNTAxLDEzICs1MzcsMTggQEAgcGdfd2NfaXNwcmludChw Z193Y2hhciBjKQogCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9XSURFX0w6CiAj aWYgZGVmaW5lZChIQVZFX0xPQ0FMRV9UKSAmJiBkZWZpbmVkKFVTRV9XSURF X1VQUEVSX0xPV0VSKQogCQkJaWYgKHNpemVvZih3Y2hhcl90KSA+PSA0IHx8 IGMgPD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJcmV0dXJuIGlzd3ByaW50 X2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlKTsKKwkJCQlyZXR1cm4g aXN3cHJpbnRfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8u bHQpOwogI2VuZGlmCiAJCQkvKiBGQUxMIFRIUlUgKi8KIAkJY2FzZSBQR19S RUdFWF9MT0NBTEVfMUJZVEVfTDoKICNpZmRlZiBIQVZFX0xPQ0FMRV9UCiAJ CQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSBVQ0hBUl9NQVggJiYKLQkJCQkJ aXNwcmludF9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUp KTsKKwkJCQkJaXNwcmludF9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdl eF9sb2NhbGUtPmluZm8ubHQpKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNh c2UgUEdfUkVHRVhfTE9DQUxFX0lDVToKKyNpZmRlZiBVU0VfSUNVCisJCQly ZXR1cm4gdV9pc3ByaW50KGMpOwogI2VuZGlmCiAJCQlicmVhazsKIAl9CkBA IC01MzQsMTMgKzU3NSwxOCBAQCBwZ193Y19pc3B1bmN0KHBnX3djaGFyIGMp CiAJCWNhc2UgUEdfUkVHRVhfTE9DQUxFX1dJREVfTDoKICNpZiBkZWZpbmVk KEhBVkVfTE9DQUxFX1QpICYmIGRlZmluZWQoVVNFX1dJREVfVVBQRVJfTE9X RVIpCiAJCQlpZiAoc2l6ZW9mKHdjaGFyX3QpID49IDQgfHwgYyA8PSAocGdf d2NoYXIpIDB4RkZGRikKLQkJCQlyZXR1cm4gaXN3cHVuY3RfbCgod2ludF90 KSBjLCBwZ19yZWdleF9sb2NhbGUpOworCQkJCXJldHVybiBpc3dwdW5jdF9s KCh3aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7CiAjZW5k aWYKIAkJCS8qIEZBTEwgVEhSVSAqLwogCQljYXNlIFBHX1JFR0VYX0xPQ0FM RV8xQllURV9MOgogI2lmZGVmIEhBVkVfTE9DQUxFX1QKIAkJCXJldHVybiAo YyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCAmJgotCQkJCQlpc3B1bmN0X2wo KHVuc2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZSkpOworCQkJCQlp c3B1bmN0X2woKHVuc2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+ aW5mby5sdCkpOworI2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBQR19SRUdF WF9MT0NBTEVfSUNVOgorI2lmZGVmIFVTRV9JQ1UKKwkJCXJldHVybiB1X2lz cHVuY3QoYyk7CiAjZW5kaWYKIAkJCWJyZWFrOwogCX0KQEAgLTU2NywxMyAr NjEzLDE4IEBAIHBnX3djX2lzc3BhY2UocGdfd2NoYXIgYykKIAkJY2FzZSBQ R19SRUdFWF9MT0NBTEVfV0lERV9MOgogI2lmIGRlZmluZWQoSEFWRV9MT0NB TEVfVCkgJiYgZGVmaW5lZChVU0VfV0lERV9VUFBFUl9MT1dFUikKIAkJCWlm IChzaXplb2Yod2NoYXJfdCkgPj0gNCB8fCBjIDw9IChwZ193Y2hhcikgMHhG RkZGKQotCQkJCXJldHVybiBpc3dzcGFjZV9sKCh3aW50X3QpIGMsIHBnX3Jl Z2V4X2xvY2FsZSk7CisJCQkJcmV0dXJuIGlzd3NwYWNlX2woKHdpbnRfdCkg YywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KTsKICNlbmRpZgogCQkJLyog RkFMTCBUSFJVICovCiAJCWNhc2UgUEdfUkVHRVhfTE9DQUxFXzFCWVRFX0w6 CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAogCQkJcmV0dXJuIChjIDw9IChwZ193 Y2hhcikgVUNIQVJfTUFYICYmCi0JCQkJCWlzc3BhY2VfbCgodW5zaWduZWQg Y2hhcikgYywgcGdfcmVnZXhfbG9jYWxlKSk7CisJCQkJCWlzc3BhY2VfbCgo dW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KSk7 CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9J Q1U6CisjaWZkZWYgVVNFX0lDVQorCQkJcmV0dXJuIHVfaXNzcGFjZShjKTsK ICNlbmRpZgogCQkJYnJlYWs7CiAJfQpAQCAtNjA4LDE1ICs2NTksMjAgQEAg cGdfd2NfdG91cHBlcihwZ193Y2hhciBjKQogCQljYXNlIFBHX1JFR0VYX0xP Q0FMRV9XSURFX0w6CiAjaWYgZGVmaW5lZChIQVZFX0xPQ0FMRV9UKSAmJiBk ZWZpbmVkKFVTRV9XSURFX1VQUEVSX0xPV0VSKQogCQkJaWYgKHNpemVvZih3 Y2hhcl90KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJ cmV0dXJuIHRvd3VwcGVyX2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxl KTsKKwkJCQlyZXR1cm4gdG93dXBwZXJfbCgod2ludF90KSBjLCBwZ19yZWdl eF9sb2NhbGUtPmluZm8ubHQpOwogI2VuZGlmCiAJCQkvKiBGQUxMIFRIUlUg Ki8KIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfMUJZVEVfTDoKICNpZmRlZiBI QVZFX0xPQ0FMRV9UCiAJCQlpZiAoYyA8PSAocGdfd2NoYXIpIFVDSEFSX01B WCkKLQkJCQlyZXR1cm4gdG91cHBlcl9sKCh1bnNpZ25lZCBjaGFyKSBjLCBw Z19yZWdleF9sb2NhbGUpOworCQkJCXJldHVybiB0b3VwcGVyX2woKHVuc2ln bmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7CiAjZW5k aWYKIAkJCXJldHVybiBjOworCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9JQ1U6 CisjaWZkZWYgVVNFX0lDVQorCQkJcmV0dXJuIHVfdG91cHBlcihjKTsKKyNl bmRpZgorCQkJYnJlYWs7CiAJfQogCXJldHVybiAwOwkJCQkJLyogY2FuJ3Qg Z2V0IGhlcmUsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiB9CkBAIC02 NDksMTUgKzcwNSwyMCBAQCBwZ193Y190b2xvd2VyKHBnX3djaGFyIGMpCiAJ CWNhc2UgUEdfUkVHRVhfTE9DQUxFX1dJREVfTDoKICNpZiBkZWZpbmVkKEhB VkVfTE9DQUxFX1QpICYmIGRlZmluZWQoVVNFX1dJREVfVVBQRVJfTE9XRVIp CiAJCQlpZiAoc2l6ZW9mKHdjaGFyX3QpID49IDQgfHwgYyA8PSAocGdfd2No YXIpIDB4RkZGRikKLQkJCQlyZXR1cm4gdG93bG93ZXJfbCgod2ludF90KSBj LCBwZ19yZWdleF9sb2NhbGUpOworCQkJCXJldHVybiB0b3dsb3dlcl9sKCh3 aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7CiAjZW5kaWYK IAkJCS8qIEZBTEwgVEhSVSAqLwogCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV8x QllURV9MOgogI2lmZGVmIEhBVkVfTE9DQUxFX1QKIAkJCWlmIChjIDw9IChw Z193Y2hhcikgVUNIQVJfTUFYKQotCQkJCXJldHVybiB0b2xvd2VyX2woKHVu c2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZSk7CisJCQkJcmV0dXJu IHRvbG93ZXJfbCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxl LT5pbmZvLmx0KTsKICNlbmRpZgogCQkJcmV0dXJuIGM7CisJCWNhc2UgUEdf UkVHRVhfTE9DQUxFX0lDVToKKyNpZmRlZiBVU0VfSUNVCisJCQlyZXR1cm4g dV90b2xvd2VyKGMpOworI2VuZGlmCisJCQlicmVhazsKIAl9CiAJcmV0dXJu IDA7CQkJCQkvKiBjYW4ndCBnZXQgaGVyZSwgYnV0IGtlZXAgY29tcGlsZXIg cXVpZXQgKi8KIH0KQEAgLTgwOCw2ICs4NjksOSBAQCBwZ19jdHlwZV9nZXRf Y2FjaGUocGdfd2NfcHJvYmVmdW5jIHByb2JlZnVuYywgaW50IGNjbGFzc2Nv ZGUpCiAJCQltYXhfY2hyID0gKHBnX3djaGFyKSBNQVhfU0lNUExFX0NIUjsK ICNlbmRpZgogCQkJYnJlYWs7CisJCWNhc2UgUEdfUkVHRVhfTE9DQUxFX0lD VToKKwkJCW1heF9jaHIgPSAocGdfd2NoYXIpIE1BWF9TSU1QTEVfQ0hSOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQltYXhfY2hyID0gMDsJCS8qIGNh bid0IGdldCBoZXJlLCBidXQga2VlcCBjb21waWxlciBxdWlldCAqLwogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHku YyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDIwYjUyNzM0 MDUuLmM4ZDIwZmZmZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBA IC0xNjIzLDYgKzE2MjMsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQljb21tYW5kQ29sbGVjdGVkID0gdHJ1ZTsK IAkJCQlicmVhazsKIAorCQkJY2FzZSBUX0FsdGVyQ29sbGF0aW9uU3RtdDoK KwkJCQlhZGRyZXNzID0gQWx0ZXJDb2xsYXRpb24oKEFsdGVyQ29sbGF0aW9u U3RtdCAqKSBwYXJzZXRyZWUpOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0 OgogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAl ZCIsCiAJCQkJCSAoaW50KSBub2RlVGFnKHBhcnNldHJlZSkpOwpAQCAtMjY3 Myw2ICsyNjc3LDEwIEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0 cmVlKQogCQkJdGFnID0gIkRST1AgU1VCU0NSSVBUSU9OIjsKIAkJCWJyZWFr OwogCisJCWNhc2UgVF9BbHRlckNvbGxhdGlvblN0bXQ6CisJCQl0YWcgPSAi QUxURVIgQ09MTEFUSU9OIjsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9QcmVw YXJlU3RtdDoKIAkJCXRhZyA9ICJQUkVQQVJFIjsKIAkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKaW5kZXggZTU1 MmM4ZDIwYi4uNmZlZGNmM2M5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2Zvcm1hdHRpbmcuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvZm9ybWF0dGluZy5jCkBAIC04Miw2ICs4MiwxMCBAQAogI2luY2x1 ZGUgPHdjdHlwZS5oPgogI2VuZGlmCiAKKyNpZmRlZiBVU0VfSUNVCisjaW5j bHVkZSA8dW5pY29kZS91c3RyaW5nLmg+CisjZW5kaWYKKwogI2luY2x1ZGUg ImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAibWIvcGdfd2No YXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMTQ0Myw2 ICsxNDQ3LDQyIEBAIHN0cl9udW10aChjaGFyICpkZXN0LCBjaGFyICpudW0s IGludCB0eXBlKQogICoJCQl1cHBlci9sb3dlci9pbml0Y2FwIGZ1bmN0aW9u cwogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCisjaWZk ZWYgVVNFX0lDVQorc3RhdGljIGludDMyX3QKK2ljdV9jb252ZXJ0X2Nhc2Uo aW50MzJfdCAoKmZ1bmMpKFVDaGFyICosIGludDMyX3QsIGNvbnN0IFVDaGFy ICosIGludDMyX3QsIGNvbnN0IGNoYXIgKiwgVUVycm9yQ29kZSAqKSwKKwkJ CQkgcGdfbG9jYWxlX3QgbXlsb2NhbGUsIFVDaGFyICoqYnVmZl9kZXN0LCBV Q2hhciAqYnVmZl9zb3VyY2UsIGludDMyX3QgbGVuX3NvdXJjZSkKK3sKKwlV RXJyb3JDb2RlCXN0YXR1czsKKwlpbnQzMl90CQlsZW5fZGVzdDsKKworCWxl bl9kZXN0ID0gbGVuX3NvdXJjZTsgIC8qIHRyeSBmaXJzdCB3aXRoIHNhbWUg bGVuZ3RoICovCisJKmJ1ZmZfZGVzdCA9IHBhbGxvYyhsZW5fZGVzdCAqIHNp emVvZigqKmJ1ZmZfZGVzdCkpOworCXN0YXR1cyA9IFVfWkVST19FUlJPUjsK KwlsZW5fZGVzdCA9IGZ1bmMoKmJ1ZmZfZGVzdCwgbGVuX2Rlc3QsIGJ1ZmZf c291cmNlLCBsZW5fc291cmNlLCBteWxvY2FsZS0+aW5mby5pY3UubG9jYWxl LCAmc3RhdHVzKTsKKwlpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9X X0VSUk9SKQorCXsKKwkJLyogdHJ5IGFnYWluIHdpdGggYWRqdXN0ZWQgbGVu Z3RoICovCisJCXBmcmVlKGJ1ZmZfZGVzdCk7CisJCWJ1ZmZfZGVzdCA9IHBh bGxvYyhsZW5fZGVzdCAqIHNpemVvZigqKmJ1ZmZfZGVzdCkpOworCQlzdGF0 dXMgPSBVX1pFUk9fRVJST1I7CisJCWxlbl9kZXN0ID0gZnVuYygqYnVmZl9k ZXN0LCBsZW5fZGVzdCwgYnVmZl9zb3VyY2UsIGxlbl9zb3VyY2UsIG15bG9j YWxlLT5pbmZvLmljdS5sb2NhbGUsICZzdGF0dXMpOworCX0KKwlpZiAoVV9G QUlMVVJFKHN0YXR1cykpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1z ZygiY2FzZSBjb252ZXJzaW9uIGZhaWxlZDogJXMiLCB1X2Vycm9yTmFtZShz dGF0dXMpKSkpOworCXJldHVybiBsZW5fZGVzdDsKK30KKworc3RhdGljIGlu dDMyX3QKK3Vfc3RyVG9UaXRsZV9kZWZhdWx0X0JJKFVDaGFyICpkZXN0LCBp bnQzMl90IGRlc3RDYXBhY2l0eSwKKwkJCQkJCWNvbnN0IFVDaGFyICpzcmMs IGludDMyX3Qgc3JjTGVuZ3RoLAorCQkJCQkJY29uc3QgY2hhciAqbG9jYWxl LAorCQkJCQkJVUVycm9yQ29kZSAqcEVycm9yQ29kZSkKK3sKKwlyZXR1cm4g dV9zdHJUb1RpdGxlKGRlc3QsIGRlc3RDYXBhY2l0eSwgc3JjLCBzcmNMZW5n dGgsIE5VTEwsIGxvY2FsZSwgcEVycm9yQ29kZSk7Cit9CisjZW5kaWYKKwog LyoKICAqIElmIHRoZSBzeXN0ZW0gcHJvdmlkZXMgdGhlIG5lZWRlZCBmdW5j dGlvbnMgZm9yIHdpZGUtY2hhcmFjdGVyIG1hbmlwdWxhdGlvbgogICogKHdo aWNoIGFyZSBhbGwgc3RhbmRhcmRpemVkIGJ5IEM5OSksIHRoZW4gd2UgaW1w bGVtZW50IHVwcGVyL2xvd2VyL2luaXRjYXAKQEAgLTE0NzksMTIgKzE1MTks OSBAQCBzdHJfdG9sb3dlcihjb25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5 dGVzLCBPaWQgY29sbGlkKQogCQlyZXN1bHQgPSBhc2NfdG9sb3dlcihidWZm LCBuYnl0ZXMpOwogCX0KICNpZmRlZiBVU0VfV0lERV9VUFBFUl9MT1dFUgot CWVsc2UgaWYgKHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSA+ IDEpCisJZWxzZQogCXsKIAkJcGdfbG9jYWxlX3QgbXlsb2NhbGUgPSAwOwot CQl3Y2hhcl90ICAgICp3b3Jrc3BhY2U7Ci0JCXNpemVfdAkJY3Vycl9jaGFy OwotCQlzaXplX3QJCXJlc3VsdF9zaXplOwogCiAJCWlmIChjb2xsaWQgIT0g REVGQVVMVF9DT0xMQVRJT05fT0lEKQogCQl7CkBAIC0xNTAyLDc3ICsxNTM5 LDc5IEBAIHN0cl90b2xvd2VyKGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBu Ynl0ZXMsIE9pZCBjb2xsaWQpCiAJCQlteWxvY2FsZSA9IHBnX25ld2xvY2Fs ZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwogCQl9CiAKLQkJLyogT3ZlcmZs b3cgcGFyYW5vaWEgKi8KLQkJaWYgKChuYnl0ZXMgKyAxKSA+IChJTlRfTUFY IC8gc2l6ZW9mKHdjaGFyX3QpKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJ CShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCi0JCQkJCSBlcnJt c2coIm91dCBvZiBtZW1vcnkiKSkpOworI2lmZGVmIFVTRV9JQ1UKKwkJaWYg KG15bG9jYWxlICYmIG15bG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklE RVJfSUNVKQorCQl7CisJCQlpbnQzMl90CQlsZW5fdWNoYXI7CisJCQlpbnQz Ml90CQlsZW5fY29udjsKKwkJCVVDaGFyCSAgICpidWZmX3VjaGFyOworCQkJ VUNoYXIJICAgKmJ1ZmZfY29udjsKKworCQkJbGVuX3VjaGFyID0gaWN1X3Rv X3VjaGFyKCZidWZmX3VjaGFyLCBidWZmLCBuYnl0ZXMpOworCQkJbGVuX2Nv bnYgPSBpY3VfY29udmVydF9jYXNlKHVfc3RyVG9Mb3dlciwgbXlsb2NhbGUs ICZidWZmX2NvbnYsIGJ1ZmZfdWNoYXIsIGxlbl91Y2hhcik7CisJCQlpY3Vf ZnJvbV91Y2hhcigmcmVzdWx0LCBidWZmX2NvbnYsIGxlbl9jb252KTsKKwkJ fQorCQllbHNlCisjZW5kaWYKKwkJeworCQkJaWYgKHBnX2RhdGFiYXNlX2Vu Y29kaW5nX21heF9sZW5ndGgoKSA+IDEpCisJCQl7CisJCQkJd2NoYXJfdCAg ICAqd29ya3NwYWNlOworCQkJCXNpemVfdAkJY3Vycl9jaGFyOworCQkJCXNp emVfdAkJcmVzdWx0X3NpemU7CiAKLQkJLyogT3V0cHV0IHdvcmtzcGFjZSBj YW5ub3QgaGF2ZSBtb3JlIGNvZGVzIHRoYW4gaW5wdXQgYnl0ZXMgKi8KLQkJ d29ya3NwYWNlID0gKHdjaGFyX3QgKikgcGFsbG9jKChuYnl0ZXMgKyAxKSAq IHNpemVvZih3Y2hhcl90KSk7CisJCQkJLyogT3ZlcmZsb3cgcGFyYW5vaWEg Ki8KKwkJCQlpZiAoKG5ieXRlcyArIDEpID4gKElOVF9NQVggLyBzaXplb2Yo d2NoYXJfdCkpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJj b2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJCQkJIGVycm1zZygi b3V0IG9mIG1lbW9yeSIpKSk7CiAKLQkJY2hhcjJ3Y2hhcih3b3Jrc3BhY2Us IG5ieXRlcyArIDEsIGJ1ZmYsIG5ieXRlcywgbXlsb2NhbGUpOworCQkJCS8q IE91dHB1dCB3b3Jrc3BhY2UgY2Fubm90IGhhdmUgbW9yZSBjb2RlcyB0aGFu IGlucHV0IGJ5dGVzICovCisJCQkJd29ya3NwYWNlID0gKHdjaGFyX3QgKikg cGFsbG9jKChuYnl0ZXMgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAKLQkJ Zm9yIChjdXJyX2NoYXIgPSAwOyB3b3Jrc3BhY2VbY3Vycl9jaGFyXSAhPSAw OyBjdXJyX2NoYXIrKykKLQkJeworCQkJCWNoYXIyd2NoYXIod29ya3NwYWNl LCBuYnl0ZXMgKyAxLCBidWZmLCBuYnl0ZXMsIG15bG9jYWxlKTsKKworCQkJ CWZvciAoY3Vycl9jaGFyID0gMDsgd29ya3NwYWNlW2N1cnJfY2hhcl0gIT0g MDsgY3Vycl9jaGFyKyspCisJCQkJewogI2lmZGVmIEhBVkVfTE9DQUxFX1QK LQkJCWlmIChteWxvY2FsZSkKLQkJCQl3b3Jrc3BhY2VbY3Vycl9jaGFyXSA9 IHRvd2xvd2VyX2wod29ya3NwYWNlW2N1cnJfY2hhcl0sIG15bG9jYWxlKTsK LQkJCWVsc2UKKwkJCQkJaWYgKG15bG9jYWxlKQorCQkJCQkJd29ya3NwYWNl W2N1cnJfY2hhcl0gPSB0b3dsb3dlcl9sKHdvcmtzcGFjZVtjdXJyX2NoYXJd LCBteWxvY2FsZS0+aW5mby5sdCk7CisJCQkJCWVsc2UKICNlbmRpZgotCQkJ CXdvcmtzcGFjZVtjdXJyX2NoYXJdID0gdG93bG93ZXIod29ya3NwYWNlW2N1 cnJfY2hhcl0pOwotCQl9CisJCQkJCQl3b3Jrc3BhY2VbY3Vycl9jaGFyXSA9 IHRvd2xvd2VyKHdvcmtzcGFjZVtjdXJyX2NoYXJdKTsKKwkJCQl9CiAKLQkJ LyogTWFrZSByZXN1bHQgbGFyZ2UgZW5vdWdoOyBjYXNlIGNoYW5nZSBtaWdo dCBjaGFuZ2UgbnVtYmVyIG9mIGJ5dGVzICovCi0JCXJlc3VsdF9zaXplID0g Y3Vycl9jaGFyICogcGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgp ICsgMTsKLQkJcmVzdWx0ID0gcGFsbG9jKHJlc3VsdF9zaXplKTsKKwkJCQkv KiBNYWtlIHJlc3VsdCBsYXJnZSBlbm91Z2g7IGNhc2UgY2hhbmdlIG1pZ2h0 IGNoYW5nZSBudW1iZXIgb2YgYnl0ZXMgKi8KKwkJCQlyZXN1bHRfc2l6ZSA9 IGN1cnJfY2hhciAqIHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgo KSArIDE7CisJCQkJcmVzdWx0ID0gcGFsbG9jKHJlc3VsdF9zaXplKTsKIAot CQl3Y2hhcjJjaGFyKHJlc3VsdCwgd29ya3NwYWNlLCByZXN1bHRfc2l6ZSwg bXlsb2NhbGUpOwotCQlwZnJlZSh3b3Jrc3BhY2UpOwotCX0KKwkJCQl3Y2hh cjJjaGFyKHJlc3VsdCwgd29ya3NwYWNlLCByZXN1bHRfc2l6ZSwgbXlsb2Nh bGUpOworCQkJCXBmcmVlKHdvcmtzcGFjZSk7CisJCQl9CiAjZW5kaWYgICAv KiBVU0VfV0lERV9VUFBFUl9MT1dFUiAqLwotCWVsc2UKLQl7Ci0jaWZkZWYg SEFWRV9MT0NBTEVfVAotCQlwZ19sb2NhbGVfdCBteWxvY2FsZSA9IDA7Ci0j ZW5kaWYKLQkJY2hhcgkgICAqcDsKLQotCQlpZiAoY29sbGlkICE9IERFRkFV TFRfQ09MTEFUSU9OX09JRCkKLQkJewotCQkJaWYgKCFPaWRJc1ZhbGlkKGNv bGxpZCkpCisJCQllbHNlCiAJCQl7Ci0JCQkJLyoKLQkJCQkgKiBUaGlzIHR5 cGljYWxseSBtZWFucyB0aGF0IHRoZSBwYXJzZXIgY291bGQgbm90IHJlc29s dmUgYQotCQkJCSAqIGNvbmZsaWN0IG9mIGltcGxpY2l0IGNvbGxhdGlvbnMs IHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KLQkJCQkgKi8KLQkJCQllcmVwb3J0 KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRF X0NPTExBVElPTiksCi0JCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJt aW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIGxvd2VyKCkgZnVuY3Rp b24iKSwKLQkJCQkJCSBlcnJoaW50KCJVc2UgdGhlIENPTExBVEUgY2xhdXNl IHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikpKTsKLQkJCX0K LSNpZmRlZiBIQVZFX0xPQ0FMRV9UCi0JCQlteWxvY2FsZSA9IHBnX25ld2xv Y2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwotI2VuZGlmCi0JCX0KKwkJ CQljaGFyCSAgICpwOwogCi0JCXJlc3VsdCA9IHBuc3RyZHVwKGJ1ZmYsIG5i eXRlcyk7CisJCQkJcmVzdWx0ID0gcG5zdHJkdXAoYnVmZiwgbmJ5dGVzKTsK IAotCQkvKgotCQkgKiBOb3RlOiB3ZSBhc3N1bWUgdGhhdCB0b2xvd2VyX2wo KSB3aWxsIG5vdCBiZSBzbyBicm9rZW4gYXMgdG8gbmVlZAotCQkgKiBhbiBp c3VwcGVyX2woKSBndWFyZCB0ZXN0LiAgV2hlbiB1c2luZyB0aGUgZGVmYXVs dCBjb2xsYXRpb24sIHdlCi0JCSAqIGFwcGx5IHRoZSB0cmFkaXRpb25hbCBQ b3N0Z3JlcyBiZWhhdmlvciB0aGF0IGZvcmNlcyBBU0NJSS1zdHlsZQotCQkg KiB0cmVhdG1lbnQgb2YgSS9pLCBidXQgaW4gbm9uLWRlZmF1bHQgY29sbGF0 aW9ucyB5b3UgZ2V0IGV4YWN0bHkKLQkJICogd2hhdCB0aGUgY29sbGF0aW9u IHNheXMuCi0JCSAqLwotCQlmb3IgKHAgPSByZXN1bHQ7ICpwOyBwKyspCi0J CXsKKwkJCQkvKgorCQkJCSAqIE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRvbG93 ZXJfbCgpIHdpbGwgbm90IGJlIHNvIGJyb2tlbiBhcyB0byBuZWVkCisJCQkJ ICogYW4gaXN1cHBlcl9sKCkgZ3VhcmQgdGVzdC4gIFdoZW4gdXNpbmcgdGhl IGRlZmF1bHQgY29sbGF0aW9uLCB3ZQorCQkJCSAqIGFwcGx5IHRoZSB0cmFk aXRpb25hbCBQb3N0Z3JlcyBiZWhhdmlvciB0aGF0IGZvcmNlcyBBU0NJSS1z dHlsZQorCQkJCSAqIHRyZWF0bWVudCBvZiBJL2ksIGJ1dCBpbiBub24tZGVm YXVsdCBjb2xsYXRpb25zIHlvdSBnZXQgZXhhY3RseQorCQkJCSAqIHdoYXQg dGhlIGNvbGxhdGlvbiBzYXlzLgorCQkJCSAqLworCQkJCWZvciAocCA9IHJl c3VsdDsgKnA7IHArKykKKwkJCQl7CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAot CQkJaWYgKG15bG9jYWxlKQotCQkJCSpwID0gdG9sb3dlcl9sKCh1bnNpZ25l ZCBjaGFyKSAqcCwgbXlsb2NhbGUpOwotCQkJZWxzZQorCQkJCQlpZiAobXls b2NhbGUpCisJCQkJCQkqcCA9IHRvbG93ZXJfbCgodW5zaWduZWQgY2hhcikg KnAsIG15bG9jYWxlLT5pbmZvLmx0KTsKKwkJCQkJZWxzZQogI2VuZGlmCi0J CQkJKnAgPSBwZ190b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSAqcCk7CisJCQkJ CQkqcCA9IHBnX3RvbG93ZXIoKHVuc2lnbmVkIGNoYXIpICpwKTsKKwkJCQl9 CisJCQl9CiAJCX0KIAl9CiAKQEAgLTE1OTksMTIgKzE2MzgsOSBAQCBzdHJf dG91cHBlcihjb25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5dGVzLCBPaWQg Y29sbGlkKQogCQlyZXN1bHQgPSBhc2NfdG91cHBlcihidWZmLCBuYnl0ZXMp OwogCX0KICNpZmRlZiBVU0VfV0lERV9VUFBFUl9MT1dFUgotCWVsc2UgaWYg KHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSA+IDEpCisJZWxz ZQogCXsKIAkJcGdfbG9jYWxlX3QgbXlsb2NhbGUgPSAwOwotCQl3Y2hhcl90 ICAgICp3b3Jrc3BhY2U7Ci0JCXNpemVfdAkJY3Vycl9jaGFyOwotCQlzaXpl X3QJCXJlc3VsdF9zaXplOwogCiAJCWlmIChjb2xsaWQgIT0gREVGQVVMVF9D T0xMQVRJT05fT0lEKQogCQl7CkBAIC0xNjIyLDc3ICsxNjU4LDc4IEBAIHN0 cl90b3VwcGVyKGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBuYnl0ZXMsIE9p ZCBjb2xsaWQpCiAJCQlteWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2Nv bGxhdGlvbihjb2xsaWQpOwogCQl9CiAKLQkJLyogT3ZlcmZsb3cgcGFyYW5v aWEgKi8KLQkJaWYgKChuYnl0ZXMgKyAxKSA+IChJTlRfTUFYIC8gc2l6ZW9m KHdjaGFyX3QpKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2Rl KEVSUkNPREVfT1VUX09GX01FTU9SWSksCi0JCQkJCSBlcnJtc2coIm91dCBv ZiBtZW1vcnkiKSkpOworI2lmZGVmIFVTRV9JQ1UKKwkJaWYgKG15bG9jYWxl ICYmIG15bG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQor CQl7CisJCQlpbnQzMl90CQlsZW5fdWNoYXIsIGxlbl9jb252OworCQkJVUNo YXIJICAgKmJ1ZmZfdWNoYXI7CisJCQlVQ2hhcgkgICAqYnVmZl9jb252Owog Ci0JCS8qIE91dHB1dCB3b3Jrc3BhY2UgY2Fubm90IGhhdmUgbW9yZSBjb2Rl cyB0aGFuIGlucHV0IGJ5dGVzICovCi0JCXdvcmtzcGFjZSA9ICh3Y2hhcl90 ICopIHBhbGxvYygobmJ5dGVzICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwor CQkJbGVuX3VjaGFyID0gaWN1X3RvX3VjaGFyKCZidWZmX3VjaGFyLCBidWZm LCBuYnl0ZXMpOworCQkJbGVuX2NvbnYgPSBpY3VfY29udmVydF9jYXNlKHVf c3RyVG9VcHBlciwgbXlsb2NhbGUsICZidWZmX2NvbnYsIGJ1ZmZfdWNoYXIs IGxlbl91Y2hhcik7CisJCQlpY3VfZnJvbV91Y2hhcigmcmVzdWx0LCBidWZm X2NvbnYsIGxlbl9jb252KTsKKwkJfQorCQllbHNlCisjZW5kaWYKKwkJewor CQkJaWYgKHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSA+IDEp CisJCQl7CisJCQkJd2NoYXJfdCAgICAqd29ya3NwYWNlOworCQkJCXNpemVf dAkJY3Vycl9jaGFyOworCQkJCXNpemVfdAkJcmVzdWx0X3NpemU7CiAKLQkJ Y2hhcjJ3Y2hhcih3b3Jrc3BhY2UsIG5ieXRlcyArIDEsIGJ1ZmYsIG5ieXRl cywgbXlsb2NhbGUpOworCQkJCS8qIE92ZXJmbG93IHBhcmFub2lhICovCisJ CQkJaWYgKChuYnl0ZXMgKyAxKSA+IChJTlRfTUFYIC8gc2l6ZW9mKHdjaGFy X3QpKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShF UlJDT0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCQkJCSBlcnJtc2coIm91dCBv ZiBtZW1vcnkiKSkpOwogCi0JCWZvciAoY3Vycl9jaGFyID0gMDsgd29ya3Nw YWNlW2N1cnJfY2hhcl0gIT0gMDsgY3Vycl9jaGFyKyspCi0JCXsKLSNpZmRl ZiBIQVZFX0xPQ0FMRV9UCi0JCQlpZiAobXlsb2NhbGUpCi0JCQkJd29ya3Nw YWNlW2N1cnJfY2hhcl0gPSB0b3d1cHBlcl9sKHdvcmtzcGFjZVtjdXJyX2No YXJdLCBteWxvY2FsZSk7Ci0JCQllbHNlCi0jZW5kaWYKLQkJCQl3b3Jrc3Bh Y2VbY3Vycl9jaGFyXSA9IHRvd3VwcGVyKHdvcmtzcGFjZVtjdXJyX2NoYXJd KTsKLQkJfQorCQkJCS8qIE91dHB1dCB3b3Jrc3BhY2UgY2Fubm90IGhhdmUg bW9yZSBjb2RlcyB0aGFuIGlucHV0IGJ5dGVzICovCisJCQkJd29ya3NwYWNl ID0gKHdjaGFyX3QgKikgcGFsbG9jKChuYnl0ZXMgKyAxKSAqIHNpemVvZih3 Y2hhcl90KSk7CiAKLQkJLyogTWFrZSByZXN1bHQgbGFyZ2UgZW5vdWdoOyBj YXNlIGNoYW5nZSBtaWdodCBjaGFuZ2UgbnVtYmVyIG9mIGJ5dGVzICovCi0J CXJlc3VsdF9zaXplID0gY3Vycl9jaGFyICogcGdfZGF0YWJhc2VfZW5jb2Rp bmdfbWF4X2xlbmd0aCgpICsgMTsKLQkJcmVzdWx0ID0gcGFsbG9jKHJlc3Vs dF9zaXplKTsKKwkJCQljaGFyMndjaGFyKHdvcmtzcGFjZSwgbmJ5dGVzICsg MSwgYnVmZiwgbmJ5dGVzLCBteWxvY2FsZSk7CiAKLQkJd2NoYXIyY2hhcihy ZXN1bHQsIHdvcmtzcGFjZSwgcmVzdWx0X3NpemUsIG15bG9jYWxlKTsKLQkJ cGZyZWUod29ya3NwYWNlKTsKLQl9Ci0jZW5kaWYgICAvKiBVU0VfV0lERV9V UFBFUl9MT1dFUiAqLwotCWVsc2UKLQl7CisJCQkJZm9yIChjdXJyX2NoYXIg PSAwOyB3b3Jrc3BhY2VbY3Vycl9jaGFyXSAhPSAwOyBjdXJyX2NoYXIrKykK KwkJCQl7CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAotCQlwZ19sb2NhbGVfdCBt eWxvY2FsZSA9IDA7CisJCQkJCWlmIChteWxvY2FsZSkKKwkJCQkJCXdvcmtz cGFjZVtjdXJyX2NoYXJdID0gdG93dXBwZXJfbCh3b3Jrc3BhY2VbY3Vycl9j aGFyXSwgbXlsb2NhbGUtPmluZm8ubHQpOworCQkJCQllbHNlCiAjZW5kaWYK LQkJY2hhcgkgICAqcDsKKwkJCQkJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0g dG93dXBwZXIod29ya3NwYWNlW2N1cnJfY2hhcl0pOworCQkJCX0KIAotCQlp ZiAoY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKLQkJewotCQkJ aWYgKCFPaWRJc1ZhbGlkKGNvbGxpZCkpCi0JCQl7Ci0JCQkJLyoKLQkJCQkg KiBUaGlzIHR5cGljYWxseSBtZWFucyB0aGF0IHRoZSBwYXJzZXIgY291bGQg bm90IHJlc29sdmUgYQotCQkJCSAqIGNvbmZsaWN0IG9mIGltcGxpY2l0IGNv bGxhdGlvbnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KLQkJCQkgKi8KLQkJ CQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRF VEVSTUlOQVRFX0NPTExBVElPTiksCi0JCQkJCQkgZXJybXNnKCJjb3VsZCBu b3QgZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIHVwcGVy KCkgZnVuY3Rpb24iKSwKLQkJCQkJCSBlcnJoaW50KCJVc2UgdGhlIENPTExB VEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikp KTsKKwkJCQkvKiBNYWtlIHJlc3VsdCBsYXJnZSBlbm91Z2g7IGNhc2UgY2hh bmdlIG1pZ2h0IGNoYW5nZSBudW1iZXIgb2YgYnl0ZXMgKi8KKwkJCQlyZXN1 bHRfc2l6ZSA9IGN1cnJfY2hhciAqIHBnX2RhdGFiYXNlX2VuY29kaW5nX21h eF9sZW5ndGgoKSArIDE7CisJCQkJcmVzdWx0ID0gcGFsbG9jKHJlc3VsdF9z aXplKTsKKworCQkJCXdjaGFyMmNoYXIocmVzdWx0LCB3b3Jrc3BhY2UsIHJl c3VsdF9zaXplLCBteWxvY2FsZSk7CisJCQkJcGZyZWUod29ya3NwYWNlKTsK IAkJCX0KLSNpZmRlZiBIQVZFX0xPQ0FMRV9UCi0JCQlteWxvY2FsZSA9IHBn X25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwotI2VuZGlmCi0J CX0KKyNlbmRpZiAgIC8qIFVTRV9XSURFX1VQUEVSX0xPV0VSICovCisJCQll bHNlCisJCQl7CisJCQkJY2hhcgkgICAqcDsKIAotCQlyZXN1bHQgPSBwbnN0 cmR1cChidWZmLCBuYnl0ZXMpOworCQkJCXJlc3VsdCA9IHBuc3RyZHVwKGJ1 ZmYsIG5ieXRlcyk7CiAKLQkJLyoKLQkJICogTm90ZTogd2UgYXNzdW1lIHRo YXQgdG91cHBlcl9sKCkgd2lsbCBub3QgYmUgc28gYnJva2VuIGFzIHRvIG5l ZWQKLQkJICogYW4gaXNsb3dlcl9sKCkgZ3VhcmQgdGVzdC4gIFdoZW4gdXNp bmcgdGhlIGRlZmF1bHQgY29sbGF0aW9uLCB3ZQotCQkgKiBhcHBseSB0aGUg dHJhZGl0aW9uYWwgUG9zdGdyZXMgYmVoYXZpb3IgdGhhdCBmb3JjZXMgQVND SUktc3R5bGUKLQkJICogdHJlYXRtZW50IG9mIEkvaSwgYnV0IGluIG5vbi1k ZWZhdWx0IGNvbGxhdGlvbnMgeW91IGdldCBleGFjdGx5Ci0JCSAqIHdoYXQg dGhlIGNvbGxhdGlvbiBzYXlzLgotCQkgKi8KLQkJZm9yIChwID0gcmVzdWx0 OyAqcDsgcCsrKQotCQl7CisJCQkJLyoKKwkJCQkgKiBOb3RlOiB3ZSBhc3N1 bWUgdGhhdCB0b3VwcGVyX2woKSB3aWxsIG5vdCBiZSBzbyBicm9rZW4gYXMg dG8gbmVlZAorCQkJCSAqIGFuIGlzbG93ZXJfbCgpIGd1YXJkIHRlc3QuICBX aGVuIHVzaW5nIHRoZSBkZWZhdWx0IGNvbGxhdGlvbiwgd2UKKwkJCQkgKiBh cHBseSB0aGUgdHJhZGl0aW9uYWwgUG9zdGdyZXMgYmVoYXZpb3IgdGhhdCBm b3JjZXMgQVNDSUktc3R5bGUKKwkJCQkgKiB0cmVhdG1lbnQgb2YgSS9pLCBi dXQgaW4gbm9uLWRlZmF1bHQgY29sbGF0aW9ucyB5b3UgZ2V0IGV4YWN0bHkK KwkJCQkgKiB3aGF0IHRoZSBjb2xsYXRpb24gc2F5cy4KKwkJCQkgKi8KKwkJ CQlmb3IgKHAgPSByZXN1bHQ7ICpwOyBwKyspCisJCQkJewogI2lmZGVmIEhB VkVfTE9DQUxFX1QKLQkJCWlmIChteWxvY2FsZSkKLQkJCQkqcCA9IHRvdXBw ZXJfbCgodW5zaWduZWQgY2hhcikgKnAsIG15bG9jYWxlKTsKLQkJCWVsc2UK KwkJCQkJaWYgKG15bG9jYWxlKQorCQkJCQkJKnAgPSB0b3VwcGVyX2woKHVu c2lnbmVkIGNoYXIpICpwLCBteWxvY2FsZS0+aW5mby5sdCk7CisJCQkJCWVs c2UKICNlbmRpZgotCQkJCSpwID0gcGdfdG91cHBlcigodW5zaWduZWQgY2hh cikgKnApOworCQkJCQkJKnAgPSBwZ190b3VwcGVyKCh1bnNpZ25lZCBjaGFy KSAqcCk7CisJCQkJfQorCQkJfQogCQl9CiAJfQogCkBAIC0xNzIwLDEyICsx NzU3LDkgQEAgc3RyX2luaXRjYXAoY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90 IG5ieXRlcywgT2lkIGNvbGxpZCkKIAkJcmVzdWx0ID0gYXNjX2luaXRjYXAo YnVmZiwgbmJ5dGVzKTsKIAl9CiAjaWZkZWYgVVNFX1dJREVfVVBQRVJfTE9X RVIKLQllbHNlIGlmIChwZ19kYXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3Ro KCkgPiAxKQorCWVsc2UKIAl7CiAJCXBnX2xvY2FsZV90IG15bG9jYWxlID0g MDsKLQkJd2NoYXJfdCAgICAqd29ya3NwYWNlOwotCQlzaXplX3QJCWN1cnJf Y2hhcjsKLQkJc2l6ZV90CQlyZXN1bHRfc2l6ZTsKIAogCQlpZiAoY29sbGlk ICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKIAkJewpAQCAtMTc0MywxMDAg KzE3NzcsMTAxIEBAIHN0cl9pbml0Y2FwKGNvbnN0IGNoYXIgKmJ1ZmYsIHNp emVfdCBuYnl0ZXMsIE9pZCBjb2xsaWQpCiAJCQlteWxvY2FsZSA9IHBnX25l d2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwogCQl9CiAKLQkJLyog T3ZlcmZsb3cgcGFyYW5vaWEgKi8KLQkJaWYgKChuYnl0ZXMgKyAxKSA+IChJ TlRfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpKSkKLQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCi0JCQkJ CSBlcnJtc2coIm91dCBvZiBtZW1vcnkiKSkpOwotCi0JCS8qIE91dHB1dCB3 b3Jrc3BhY2UgY2Fubm90IGhhdmUgbW9yZSBjb2RlcyB0aGFuIGlucHV0IGJ5 dGVzICovCi0JCXdvcmtzcGFjZSA9ICh3Y2hhcl90ICopIHBhbGxvYygobmJ5 dGVzICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwotCi0JCWNoYXIyd2NoYXIo d29ya3NwYWNlLCBuYnl0ZXMgKyAxLCBidWZmLCBuYnl0ZXMsIG15bG9jYWxl KTsKLQotCQlmb3IgKGN1cnJfY2hhciA9IDA7IHdvcmtzcGFjZVtjdXJyX2No YXJdICE9IDA7IGN1cnJfY2hhcisrKQorI2lmZGVmIFVTRV9JQ1UKKwkJaWYg KG15bG9jYWxlICYmIG15bG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklE RVJfSUNVKQogCQl7Ci0jaWZkZWYgSEFWRV9MT0NBTEVfVAotCQkJaWYgKG15 bG9jYWxlKQotCQkJewotCQkJCWlmICh3YXNhbG51bSkKLQkJCQkJd29ya3Nw YWNlW2N1cnJfY2hhcl0gPSB0b3dsb3dlcl9sKHdvcmtzcGFjZVtjdXJyX2No YXJdLCBteWxvY2FsZSk7Ci0JCQkJZWxzZQotCQkJCQl3b3Jrc3BhY2VbY3Vy cl9jaGFyXSA9IHRvd3VwcGVyX2wod29ya3NwYWNlW2N1cnJfY2hhcl0sIG15 bG9jYWxlKTsKLQkJCQl3YXNhbG51bSA9IGlzd2FsbnVtX2wod29ya3NwYWNl W2N1cnJfY2hhcl0sIG15bG9jYWxlKTsKLQkJCX0KLQkJCWVsc2UKKwkJCWlu dDMyX3QJCWxlbl91Y2hhciwgbGVuX2NvbnY7CisJCQlVQ2hhcgkgICAqYnVm Zl91Y2hhcjsKKwkJCVVDaGFyCSAgICpidWZmX2NvbnY7CisKKwkJCWxlbl91 Y2hhciA9IGljdV90b191Y2hhcigmYnVmZl91Y2hhciwgYnVmZiwgbmJ5dGVz KTsKKwkJCWxlbl9jb252ID0gaWN1X2NvbnZlcnRfY2FzZSh1X3N0clRvVGl0 bGVfZGVmYXVsdF9CSSwgbXlsb2NhbGUsICZidWZmX2NvbnYsIGJ1ZmZfdWNo YXIsIGxlbl91Y2hhcik7CisJCQlpY3VfZnJvbV91Y2hhcigmcmVzdWx0LCBi dWZmX2NvbnYsIGxlbl9jb252KTsKKwkJfQorCQllbHNlCiAjZW5kaWYKKwkJ eworCQkJaWYgKHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSA+ IDEpCiAJCQl7Ci0JCQkJaWYgKHdhc2FsbnVtKQotCQkJCQl3b3Jrc3BhY2Vb Y3Vycl9jaGFyXSA9IHRvd2xvd2VyKHdvcmtzcGFjZVtjdXJyX2NoYXJdKTsK LQkJCQllbHNlCi0JCQkJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0gdG93dXBw ZXIod29ya3NwYWNlW2N1cnJfY2hhcl0pOwotCQkJCXdhc2FsbnVtID0gaXN3 YWxudW0od29ya3NwYWNlW2N1cnJfY2hhcl0pOwotCQkJfQotCQl9CisJCQkJ d2NoYXJfdCAgICAqd29ya3NwYWNlOworCQkJCXNpemVfdAkJY3Vycl9jaGFy OworCQkJCXNpemVfdAkJcmVzdWx0X3NpemU7CiAKLQkJLyogTWFrZSByZXN1 bHQgbGFyZ2UgZW5vdWdoOyBjYXNlIGNoYW5nZSBtaWdodCBjaGFuZ2UgbnVt YmVyIG9mIGJ5dGVzICovCi0JCXJlc3VsdF9zaXplID0gY3Vycl9jaGFyICog cGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpICsgMTsKLQkJcmVz dWx0ID0gcGFsbG9jKHJlc3VsdF9zaXplKTsKKwkJCQkvKiBPdmVyZmxvdyBw YXJhbm9pYSAqLworCQkJCWlmICgobmJ5dGVzICsgMSkgPiAoSU5UX01BWCAv IHNpemVvZih3Y2hhcl90KSkpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKKwkJCQkJCQkg ZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsKIAotCQl3Y2hhcjJjaGFyKHJl c3VsdCwgd29ya3NwYWNlLCByZXN1bHRfc2l6ZSwgbXlsb2NhbGUpOwotCQlw ZnJlZSh3b3Jrc3BhY2UpOwotCX0KLSNlbmRpZiAgIC8qIFVTRV9XSURFX1VQ UEVSX0xPV0VSICovCi0JZWxzZQotCXsKLSNpZmRlZiBIQVZFX0xPQ0FMRV9U Ci0JCXBnX2xvY2FsZV90IG15bG9jYWxlID0gMDsKLSNlbmRpZgotCQljaGFy CSAgICpwOworCQkJCS8qIE91dHB1dCB3b3Jrc3BhY2UgY2Fubm90IGhhdmUg bW9yZSBjb2RlcyB0aGFuIGlucHV0IGJ5dGVzICovCisJCQkJd29ya3NwYWNl ID0gKHdjaGFyX3QgKikgcGFsbG9jKChuYnl0ZXMgKyAxKSAqIHNpemVvZih3 Y2hhcl90KSk7CiAKLQkJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElP Tl9PSUQpCi0JCXsKLQkJCWlmICghT2lkSXNWYWxpZChjb2xsaWQpKQotCQkJ ewotCQkJCS8qCi0JCQkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0 aGUgcGFyc2VyIGNvdWxkIG5vdCByZXNvbHZlIGEKLQkJCQkgKiBjb25mbGlj dCBvZiBpbXBsaWNpdCBjb2xsYXRpb25zLCBzbyByZXBvcnQgaXQgdGhhdCB3 YXkuCi0JCQkJICovCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9DT0xMQVRJT04pLAotCQkJCQkJ IGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGljaCBjb2xsYXRpb24g dG8gdXNlIGZvciBpbml0Y2FwKCkgZnVuY3Rpb24iKSwKLQkJCQkJCSBlcnJo aW50KCJVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0 aW9uIGV4cGxpY2l0bHkuIikpKTsKLQkJCX0KKwkJCQljaGFyMndjaGFyKHdv cmtzcGFjZSwgbmJ5dGVzICsgMSwgYnVmZiwgbmJ5dGVzLCBteWxvY2FsZSk7 CisKKwkJCQlmb3IgKGN1cnJfY2hhciA9IDA7IHdvcmtzcGFjZVtjdXJyX2No YXJdICE9IDA7IGN1cnJfY2hhcisrKQorCQkJCXsKICNpZmRlZiBIQVZFX0xP Q0FMRV9UCi0JCQlteWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxh dGlvbihjb2xsaWQpOworCQkJCQlpZiAobXlsb2NhbGUpCisJCQkJCXsKKwkJ CQkJCWlmICh3YXNhbG51bSkKKwkJCQkJCQl3b3Jrc3BhY2VbY3Vycl9jaGFy XSA9IHRvd2xvd2VyX2wod29ya3NwYWNlW2N1cnJfY2hhcl0sIG15bG9jYWxl LT5pbmZvLmx0KTsKKwkJCQkJCWVsc2UKKwkJCQkJCQl3b3Jrc3BhY2VbY3Vy cl9jaGFyXSA9IHRvd3VwcGVyX2wod29ya3NwYWNlW2N1cnJfY2hhcl0sIG15 bG9jYWxlLT5pbmZvLmx0KTsKKwkJCQkJCXdhc2FsbnVtID0gaXN3YWxudW1f bCh3b3Jrc3BhY2VbY3Vycl9jaGFyXSwgbXlsb2NhbGUtPmluZm8ubHQpOwor CQkJCQl9CisJCQkJCWVsc2UKICNlbmRpZgotCQl9CisJCQkJCXsKKwkJCQkJ CWlmICh3YXNhbG51bSkKKwkJCQkJCQl3b3Jrc3BhY2VbY3Vycl9jaGFyXSA9 IHRvd2xvd2VyKHdvcmtzcGFjZVtjdXJyX2NoYXJdKTsKKwkJCQkJCWVsc2UK KwkJCQkJCQl3b3Jrc3BhY2VbY3Vycl9jaGFyXSA9IHRvd3VwcGVyKHdvcmtz cGFjZVtjdXJyX2NoYXJdKTsKKwkJCQkJCXdhc2FsbnVtID0gaXN3YWxudW0o d29ya3NwYWNlW2N1cnJfY2hhcl0pOworCQkJCQl9CisJCQkJfQogCi0JCXJl c3VsdCA9IHBuc3RyZHVwKGJ1ZmYsIG5ieXRlcyk7CisJCQkJLyogTWFrZSBy ZXN1bHQgbGFyZ2UgZW5vdWdoOyBjYXNlIGNoYW5nZSBtaWdodCBjaGFuZ2Ug bnVtYmVyIG9mIGJ5dGVzICovCisJCQkJcmVzdWx0X3NpemUgPSBjdXJyX2No YXIgKiBwZ19kYXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCkgKyAxOwor CQkJCXJlc3VsdCA9IHBhbGxvYyhyZXN1bHRfc2l6ZSk7CiAKLQkJLyoKLQkJ ICogTm90ZTogd2UgYXNzdW1lIHRoYXQgdG91cHBlcl9sKCkvdG9sb3dlcl9s KCkgd2lsbCBub3QgYmUgc28gYnJva2VuCi0JCSAqIGFzIHRvIG5lZWQgZ3Vh cmQgdGVzdHMuICBXaGVuIHVzaW5nIHRoZSBkZWZhdWx0IGNvbGxhdGlvbiwg d2UgYXBwbHkKLQkJICogdGhlIHRyYWRpdGlvbmFsIFBvc3RncmVzIGJlaGF2 aW9yIHRoYXQgZm9yY2VzIEFTQ0lJLXN0eWxlIHRyZWF0bWVudAotCQkgKiBv ZiBJL2ksIGJ1dCBpbiBub24tZGVmYXVsdCBjb2xsYXRpb25zIHlvdSBnZXQg ZXhhY3RseSB3aGF0IHRoZQotCQkgKiBjb2xsYXRpb24gc2F5cy4KLQkJICov Ci0JCWZvciAocCA9IHJlc3VsdDsgKnA7IHArKykKLQkJewotI2lmZGVmIEhB VkVfTE9DQUxFX1QKLQkJCWlmIChteWxvY2FsZSkKLQkJCXsKLQkJCQlpZiAo d2FzYWxudW0pCi0JCQkJCSpwID0gdG9sb3dlcl9sKCh1bnNpZ25lZCBjaGFy KSAqcCwgbXlsb2NhbGUpOwotCQkJCWVsc2UKLQkJCQkJKnAgPSB0b3VwcGVy X2woKHVuc2lnbmVkIGNoYXIpICpwLCBteWxvY2FsZSk7Ci0JCQkJd2FzYWxu dW0gPSBpc2FsbnVtX2woKHVuc2lnbmVkIGNoYXIpICpwLCBteWxvY2FsZSk7 CisJCQkJd2NoYXIyY2hhcihyZXN1bHQsIHdvcmtzcGFjZSwgcmVzdWx0X3Np emUsIG15bG9jYWxlKTsKKwkJCQlwZnJlZSh3b3Jrc3BhY2UpOwogCQkJfQor I2VuZGlmICAgLyogVVNFX1dJREVfVVBQRVJfTE9XRVIgKi8KIAkJCWVsc2UK LSNlbmRpZgogCQkJewotCQkJCWlmICh3YXNhbG51bSkKLQkJCQkJKnAgPSBw Z190b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSAqcCk7Ci0JCQkJZWxzZQotCQkJ CQkqcCA9IHBnX3RvdXBwZXIoKHVuc2lnbmVkIGNoYXIpICpwKTsKLQkJCQl3 YXNhbG51bSA9IGlzYWxudW0oKHVuc2lnbmVkIGNoYXIpICpwKTsKKwkJCQlj aGFyCSAgICpwOworCisJCQkJcmVzdWx0ID0gcG5zdHJkdXAoYnVmZiwgbmJ5 dGVzKTsKKworCQkJCS8qCisJCQkJICogTm90ZTogd2UgYXNzdW1lIHRoYXQg dG91cHBlcl9sKCkvdG9sb3dlcl9sKCkgd2lsbCBub3QgYmUgc28gYnJva2Vu CisJCQkJICogYXMgdG8gbmVlZCBndWFyZCB0ZXN0cy4gIFdoZW4gdXNpbmcg dGhlIGRlZmF1bHQgY29sbGF0aW9uLCB3ZSBhcHBseQorCQkJCSAqIHRoZSB0 cmFkaXRpb25hbCBQb3N0Z3JlcyBiZWhhdmlvciB0aGF0IGZvcmNlcyBBU0NJ SS1zdHlsZSB0cmVhdG1lbnQKKwkJCQkgKiBvZiBJL2ksIGJ1dCBpbiBub24t ZGVmYXVsdCBjb2xsYXRpb25zIHlvdSBnZXQgZXhhY3RseSB3aGF0IHRoZQor CQkJCSAqIGNvbGxhdGlvbiBzYXlzLgorCQkJCSAqLworCQkJCWZvciAocCA9 IHJlc3VsdDsgKnA7IHArKykKKwkJCQl7CisjaWZkZWYgSEFWRV9MT0NBTEVf VAorCQkJCQlpZiAobXlsb2NhbGUpCisJCQkJCXsKKwkJCQkJCWlmICh3YXNh bG51bSkKKwkJCQkJCQkqcCA9IHRvbG93ZXJfbCgodW5zaWduZWQgY2hhcikg KnAsIG15bG9jYWxlLT5pbmZvLmx0KTsKKwkJCQkJCWVsc2UKKwkJCQkJCQkq cCA9IHRvdXBwZXJfbCgodW5zaWduZWQgY2hhcikgKnAsIG15bG9jYWxlLT5p bmZvLmx0KTsKKwkJCQkJCXdhc2FsbnVtID0gaXNhbG51bV9sKCh1bnNpZ25l ZCBjaGFyKSAqcCwgbXlsb2NhbGUtPmluZm8ubHQpOworCQkJCQl9CisJCQkJ CWVsc2UKKyNlbmRpZgorCQkJCQl7CisJCQkJCQlpZiAod2FzYWxudW0pCisJ CQkJCQkJKnAgPSBwZ190b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSAqcCk7CisJ CQkJCQllbHNlCisJCQkJCQkJKnAgPSBwZ190b3VwcGVyKCh1bnNpZ25lZCBj aGFyKSAqcCk7CisJCQkJCQl3YXNhbG51bSA9IGlzYWxudW0oKHVuc2lnbmVk IGNoYXIpICpwKTsKKwkJCQkJfQorCQkJCX0KIAkJCX0KIAkJfQogCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvbGlrZS5jCmluZGV4IDkxZmUxMDk4NjcuLjhh NGY3NjhkZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9s aWtlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2UuYwpAQCAt OTYsNyArOTYsNyBAQCBTQl9sb3dlcl9jaGFyKHVuc2lnbmVkIGNoYXIgYywg cGdfbG9jYWxlX3QgbG9jYWxlLCBib29sIGxvY2FsZV9pc19jKQogCQlyZXR1 cm4gcGdfYXNjaWlfdG9sb3dlcihjKTsKICNpZmRlZiBIQVZFX0xPQ0FMRV9U CiAJZWxzZSBpZiAobG9jYWxlKQotCQlyZXR1cm4gdG9sb3dlcl9sKGMsIGxv Y2FsZSk7CisJCXJldHVybiB0b2xvd2VyX2woYywgbG9jYWxlLT5pbmZvLmx0 KTsKICNlbmRpZgogCWVsc2UKIAkJcmV0dXJuIHBnX3RvbG93ZXIoYyk7CkBA IC0xNjUsMTQgKzE2NSwzNiBAQCBHZW5lcmljX1RleHRfSUNfbGlrZSh0ZXh0 ICpzdHIsIHRleHQgKnBhdCwgT2lkIGNvbGxhdGlvbikKIAkJCSAgICpwOwog CWludAkJCXNsZW4sCiAJCQkJcGxlbjsKKwlwZ19sb2NhbGVfdCBsb2NhbGUg PSAwOworCWJvb2wJCWxvY2FsZV9pc19jID0gZmFsc2U7CisKKwlpZiAobGNf Y3R5cGVfaXNfYyhjb2xsYXRpb24pKQorCQlsb2NhbGVfaXNfYyA9IHRydWU7 CisJZWxzZSBpZiAoY29sbGF0aW9uICE9IERFRkFVTFRfQ09MTEFUSU9OX09J RCkKKwl7CisJCWlmICghT2lkSXNWYWxpZChjb2xsYXRpb24pKQorCQl7CisJ CQkvKgorCQkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGUgcGFy c2VyIGNvdWxkIG5vdCByZXNvbHZlIGEKKwkJCSAqIGNvbmZsaWN0IG9mIGlt cGxpY2l0IGNvbGxhdGlvbnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KKwkJ CSAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTkRFVEVSTUlOQVRFX0NPTExBVElPTiksCisJCQkJCSBlcnJtc2coImNv dWxkIG5vdCBkZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3Ig SUxJS0UiKSwKKwkJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1 c2UgdG8gc2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOworCQl9 CisJCWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xs YXRpb24pOworCX0KIAogCS8qCiAJICogRm9yIGVmZmljaWVuY3kgcmVhc29u cywgaW4gdGhlIHNpbmdsZSBieXRlIGNhc2Ugd2UgZG9uJ3QgY2FsbCBsb3dl cigpCiAJICogb24gdGhlIHBhdHRlcm4gYW5kIHRleHQsIGJ1dCBpbnN0ZWFk IGNhbGwgU0JfbG93ZXJfY2hhciBvbiBlYWNoCi0JICogY2hhcmFjdGVyLiAg SW4gdGhlIG11bHRpLWJ5dGUgY2FzZSB3ZSBkb24ndCBoYXZlIG11Y2ggY2hv aWNlIDotKAorCSAqIGNoYXJhY3Rlci4gIEluIHRoZSBtdWx0aS1ieXRlIGNh c2Ugd2UgZG9uJ3QgaGF2ZSBtdWNoIGNob2ljZSA6LSguCisJICogQWxzbywg SUNVIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLWNoYXJhY3RlciBjYXNlIGZv bGRpbmcsIHNvIHdlIGdvIHRoZQorCSAqIGxvbmcgd2F5LgogCSAqLwogCi0J aWYgKHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSA+IDEpCisJ aWYgKHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSA+IDEgfHwg bG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQogCXsKIAkJ LyogbG93ZXIncyByZXN1bHQgaXMgbmV2ZXIgcGFja2VkLCBzbyBPSyB0byB1 c2Ugb2xkIG1hY3JvcyBoZXJlICovCiAJCXBhdCA9IERhdHVtR2V0VGV4dFAo RGlyZWN0RnVuY3Rpb25DYWxsMUNvbGwobG93ZXIsIGNvbGxhdGlvbiwKQEAg LTE5MCwzMSArMjEyLDYgQEAgR2VuZXJpY19UZXh0X0lDX2xpa2UodGV4dCAq c3RyLCB0ZXh0ICpwYXQsIE9pZCBjb2xsYXRpb24pCiAJfQogCWVsc2UKIAl7 Ci0JCS8qCi0JCSAqIEhlcmUgd2UgbmVlZCB0byBwcmVwYXJlIGxvY2FsZSBp bmZvcm1hdGlvbiBmb3IgU0JfbG93ZXJfY2hhci4gVGhpcwotCQkgKiBzaG91 bGQgbWF0Y2ggdGhlIG1ldGhvZHMgdXNlZCBpbiBzdHJfdG9sb3dlcigpLgot CQkgKi8KLQkJcGdfbG9jYWxlX3QgbG9jYWxlID0gMDsKLQkJYm9vbAkJbG9j YWxlX2lzX2MgPSBmYWxzZTsKLQotCQlpZiAobGNfY3R5cGVfaXNfYyhjb2xs YXRpb24pKQotCQkJbG9jYWxlX2lzX2MgPSB0cnVlOwotCQllbHNlIGlmIChj b2xsYXRpb24gIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQotCQl7Ci0JCQlp ZiAoIU9pZElzVmFsaWQoY29sbGF0aW9uKSkKLQkJCXsKLQkJCQkvKgotCQkJ CSAqIFRoaXMgdHlwaWNhbGx5IG1lYW5zIHRoYXQgdGhlIHBhcnNlciBjb3Vs ZCBub3QgcmVzb2x2ZSBhCi0JCQkJICogY29uZmxpY3Qgb2YgaW1wbGljaXQg Y29sbGF0aW9ucywgc28gcmVwb3J0IGl0IHRoYXQgd2F5LgotCQkJCSAqLwot CQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO REVURVJNSU5BVEVfQ09MTEFUSU9OKSwKLQkJCQkJCSBlcnJtc2coImNvdWxk IG5vdCBkZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3IgSUxJ S0UiKSwKLQkJCQkJCSBlcnJoaW50KCJVc2UgdGhlIENPTExBVEUgY2xhdXNl IHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikpKTsKLQkJCX0K LQkJCWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xs YXRpb24pOwotCQl9Ci0KIAkJcCA9IFZBUkRBVEFfQU5ZKHBhdCk7CiAJCXBs ZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihwYXQpOwogCQlzID0gVkFSREFUQV9B Tlkoc3RyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUu YwppbmRleCBhYjE5NzAyNWY4Li40YTEwNjU1YzczIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC01NywxMSArNTcsMTcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgIm1iL3BnX3dj aGFyLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9wZ19sb2NhbGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgogCisjaWZkZWYgVVNFX0lDVQorI2luY2x1ZGUgPHVuaWNvZGUvdWNudi5o PgorI2VuZGlmCisKICNpZmRlZiBXSU4zMgogLyoKICAqIFRoaXMgV2luZG93 cyBmaWxlIGRlZmluZXMgU3RyTkNweS4gV2UgZG9uJ3QgbmVlZCBpdCBoZXJl LCBzbyB3ZSB1bmRlZmluZQpAQCAtMTI3MiwxMiArMTI3OCwxMyBAQCBwZ19u ZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCkKIAlpZiAoY2Fj aGVfZW50cnktPmxvY2FsZSA9PSAwKQogCXsKIAkJLyogV2UgaGF2ZW4ndCBj b21wdXRlZCB0aGlzIHlldCBpbiB0aGlzIHNlc3Npb24sIHNvIGRvIGl0ICov Ci0jaWZkZWYgSEFWRV9MT0NBTEVfVAogCQlIZWFwVHVwbGUJdHA7CiAJCUZv cm1fcGdfY29sbGF0aW9uIGNvbGxmb3JtOwogCQljb25zdCBjaGFyICpjb2xs Y29sbGF0ZTsKLQkJY29uc3QgY2hhciAqY29sbGN0eXBlOwotCQlsb2NhbGVf dAlyZXN1bHQ7CisJCWNvbnN0IGNoYXIgKmNvbGxjdHlwZSBwZ19hdHRyaWJ1 dGVfdW51c2VkKCk7CisJCXBnX2xvY2FsZV90CXJlc3VsdDsKKwkJRGF0dW0J CWNvbGx2ZXJzaW9uOworCQlib29sCQlpc251bGw7CiAKIAkJdHAgPSBTZWFy Y2hTeXNDYWNoZTEoQ09MTE9JRCwgT2JqZWN0SWRHZXREYXR1bShjb2xsaWQp KTsKIAkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKQEAgLTEyODcsNjEg KzEyOTQsMjIzIEBAIHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihPaWQg Y29sbGlkKQogCQljb2xsY29sbGF0ZSA9IE5hbWVTdHIoY29sbGZvcm0tPmNv bGxjb2xsYXRlKTsKIAkJY29sbGN0eXBlID0gTmFtZVN0cihjb2xsZm9ybS0+ Y29sbGN0eXBlKTsKIAotCQlpZiAoc3RyY21wKGNvbGxjb2xsYXRlLCBjb2xs Y3R5cGUpID09IDApCisJCXJlc3VsdCA9IG1hbGxvYyhzaXplb2YoKiByZXN1 bHQpKTsKKwkJbWVtc2V0KHJlc3VsdCwgMCwgc2l6ZW9mKCogcmVzdWx0KSk7 CisJCXJlc3VsdC0+cHJvdmlkZXIgPSBjb2xsZm9ybS0+Y29sbHByb3ZpZGVy OworCisJCWlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9W SURFUl9MSUJDKQogCQl7Ci0JCQkvKiBOb3JtYWwgY2FzZSB3aGVyZSB0aGV5 J3JlIHRoZSBzYW1lICovCisjaWZkZWYgSEFWRV9MT0NBTEVfVAorCQkJbG9j YWxlX3QJbG9jOworCisJCQlpZiAoc3RyY21wKGNvbGxjb2xsYXRlLCBjb2xs Y3R5cGUpID09IDApCisJCQl7CisJCQkJLyogTm9ybWFsIGNhc2Ugd2hlcmUg dGhleSdyZSB0aGUgc2FtZSAqLwogI2lmbmRlZiBXSU4zMgotCQkJcmVzdWx0 ID0gbmV3bG9jYWxlKExDX0NPTExBVEVfTUFTSyB8IExDX0NUWVBFX01BU0ss IGNvbGxjb2xsYXRlLAotCQkJCQkJCSAgIE5VTEwpOworCQkJCWxvYyA9IG5l d2xvY2FsZShMQ19DT0xMQVRFX01BU0sgfCBMQ19DVFlQRV9NQVNLLCBjb2xs Y29sbGF0ZSwKKwkJCQkJCQkJICAgTlVMTCk7CiAjZWxzZQotCQkJcmVzdWx0 ID0gX2NyZWF0ZV9sb2NhbGUoTENfQUxMLCBjb2xsY29sbGF0ZSk7CisJCQkJ bG9jID0gX2NyZWF0ZV9sb2NhbGUoTENfQUxMLCBjb2xsY29sbGF0ZSk7CiAj ZW5kaWYKLQkJCWlmICghcmVzdWx0KQotCQkJCXJlcG9ydF9uZXdsb2NhbGVf ZmFpbHVyZShjb2xsY29sbGF0ZSk7Ci0JCX0KLQkJZWxzZQotCQl7CisJCQkJ aWYgKCFsb2MpCisJCQkJCXJlcG9ydF9uZXdsb2NhbGVfZmFpbHVyZShjb2xs Y29sbGF0ZSk7CisJCQl9CisJCQllbHNlCisJCQl7CiAjaWZuZGVmIFdJTjMy Ci0JCQkvKiBXZSBuZWVkIHR3byBuZXdsb2NhbGUoKSBzdGVwcyAqLwotCQkJ bG9jYWxlX3QJbG9jMTsKLQotCQkJbG9jMSA9IG5ld2xvY2FsZShMQ19DT0xM QVRFX01BU0ssIGNvbGxjb2xsYXRlLCBOVUxMKTsKLQkJCWlmICghbG9jMSkK LQkJCQlyZXBvcnRfbmV3bG9jYWxlX2ZhaWx1cmUoY29sbGNvbGxhdGUpOwot CQkJcmVzdWx0ID0gbmV3bG9jYWxlKExDX0NUWVBFX01BU0ssIGNvbGxjdHlw ZSwgbG9jMSk7Ci0JCQlpZiAoIXJlc3VsdCkKLQkJCQlyZXBvcnRfbmV3bG9j YWxlX2ZhaWx1cmUoY29sbGN0eXBlKTsKKwkJCQkvKiBXZSBuZWVkIHR3byBu ZXdsb2NhbGUoKSBzdGVwcyAqLworCQkJCWxvY2FsZV90CWxvYzE7CisKKwkJ CQlsb2MxID0gbmV3bG9jYWxlKExDX0NPTExBVEVfTUFTSywgY29sbGNvbGxh dGUsIE5VTEwpOworCQkJCWlmICghbG9jMSkKKwkJCQkJcmVwb3J0X25ld2xv Y2FsZV9mYWlsdXJlKGNvbGxjb2xsYXRlKTsKKwkJCQlsb2MgPSBuZXdsb2Nh bGUoTENfQ1RZUEVfTUFTSywgY29sbGN0eXBlLCBsb2MxKTsKKwkJCQlpZiAo IWxvYykKKwkJCQkJcmVwb3J0X25ld2xvY2FsZV9mYWlsdXJlKGNvbGxjdHlw ZSk7CiAjZWxzZQogCi0JCQkvKgotCQkJICogWFhYIFRoZSBfY3JlYXRlX2xv Y2FsZSgpIEFQSSBkb2Vzbid0IGFwcGVhciB0byBzdXBwb3J0IHRoaXMuCi0J CQkgKiBDb3VsZCBwZXJoYXBzIGJlIHdvcmtlZCBhcm91bmQgYnkgY2hhbmdp bmcgcGdfbG9jYWxlX3QgdG8KLQkJCSAqIGNvbnRhaW4gdHdvIHNlcGFyYXRl IGZpZWxkcy4KLQkJCSAqLworCQkJCS8qCisJCQkJICogWFhYIFRoZSBfY3Jl YXRlX2xvY2FsZSgpIEFQSSBkb2Vzbid0IGFwcGVhciB0byBzdXBwb3J0IHRo aXMuCisJCQkJICogQ291bGQgcGVyaGFwcyBiZSB3b3JrZWQgYXJvdW5kIGJ5 IGNoYW5naW5nIHBnX2xvY2FsZV90IHRvCisJCQkJICogY29udGFpbiB0d28g c2VwYXJhdGUgZmllbGRzLgorCQkJCSAqLworCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCQkgZXJybXNnKCJjb2xsYXRpb25zIHdpdGggZGlmZmVyZW50 IGNvbGxhdGUgYW5kIGN0eXBlIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBv biB0aGlzIHBsYXRmb3JtIikpKTsKKyNlbmRpZgorCQkJfQorCisJCQlyZXN1 bHQtPmluZm8ubHQgPSBsb2M7CisjZWxzZQkJCQkJCQkvKiBub3QgSEFWRV9M T0NBTEVfVCAqLworCQkJLyogcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBv cnQgbG9jYWxlX3QgKi8KIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVy cm1zZygiY29sbGF0aW9ucyB3aXRoIGRpZmZlcmVudCBjb2xsYXRlIGFuZCBj dHlwZSB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9y bSIpKSk7Ci0jZW5kaWYKKwkJCQkJIGVycm1zZygiY29sbGF0aW9uIHByb3Zp ZGVyIExJQkMgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikp KTsKKyNlbmRpZiAgIC8qIG5vdCBIQVZFX0xPQ0FMRV9UICovCisJCX0KKwkJ ZWxzZSBpZiAoY29sbGZvcm0tPmNvbGxwcm92aWRlciA9PSBDT0xMUFJPVklE RVJfSUNVKQorCQl7CisjaWZkZWYgVVNFX0lDVQorCQkJVUNvbGxhdG9yICAq Y29sbGF0b3I7CisJCQlVRXJyb3JDb2RlCXN0YXR1czsKKworCQkJc3RhdHVz ID0gVV9aRVJPX0VSUk9SOworCQkJY29sbGF0b3IgPSB1Y29sX29wZW4oY29s bGNvbGxhdGUsICZzdGF0dXMpOworCQkJaWYgKFVfRkFJTFVSRShzdGF0dXMp KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJybXNnKCJjb3VsZCBu b3Qgb3BlbiBjb2xsYXRvciBmb3IgbG9jYWxlIFwiJXNcIjogJXMiLAorCQkJ CQkJCQljb2xsY29sbGF0ZSwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwor CQkJcmVzdWx0LT5pbmZvLmljdS5sb2NhbGUgPSBzdHJkdXAoY29sbGNvbGxh dGUpOworCQkJcmVzdWx0LT5pbmZvLmljdS51Y29sID0gY29sbGF0b3I7Cisj ZWxzZSAvKiBub3QgVVNFX0lDVSAqLworCQkJLyogY291bGQgZ2V0IGhlcmUg aWYgYSBjb2xsYXRpb24gd2FzIGNyZWF0ZWQgYnkgYSBidWlsZCB3aXRoIElD VSAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJJQ1Ug aXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIiksIFwKKwkJCQkJIGVy cmhpbnQoIllvdSBuZWVkIHRvIHJlYnVpbGQgUG9zdGdyZVNRTCB1c2luZyAt LXdpdGgtaWN1LiIpKSk7CisjZW5kaWYgLyogbm90IFVTRV9JQ1UgKi8KIAkJ fQogCi0JCWNhY2hlX2VudHJ5LT5sb2NhbGUgPSByZXN1bHQ7CisJCWNvbGx2 ZXJzaW9uID0gU3lzQ2FjaGVHZXRBdHRyKENPTExPSUQsIHRwLCBBbnVtX3Bn X2NvbGxhdGlvbl9jb2xsdmVyc2lvbiwKKwkJCQkJCQkJCSAgJmlzbnVsbCk7 CisJCWlmICghaXNudWxsKQorCQl7CisJCQljaGFyCSAgICpzeXN2ZXJzaW9u c3RyOworCQkJY2hhcgkgICAqY29sbHZlcnNpb25zdHI7CisKKwkJCXN5c3Zl cnNpb25zdHIgPSBnZXRfc3lzdGVtX2NvbGxhdGlvbl92ZXJzaW9uKGNvbGxm b3JtLT5jb2xscHJvdmlkZXIsIGNvbGxjb2xsYXRlKTsKKwkJCWNvbGx2ZXJz aW9uc3RyID0gVGV4dERhdHVtR2V0Q1N0cmluZyhjb2xsdmVyc2lvbik7CisK KwkJCWlmIChzdHJjbXAoc3lzdmVyc2lvbnN0ciwgY29sbHZlcnNpb25zdHIp ICE9IDApCisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygi Y29sbGF0aW9uIFwiJXNcIiBoYXMgdmVyc2lvbiBtaXNtYXRjaCIsCisJCQkJ CQkJCU5hbWVTdHIoY29sbGZvcm0tPmNvbGxuYW1lKSksCisJCQkJCQkgZXJy ZGV0YWlsKCJUaGUgY29sbGF0aW9uIGluIHRoZSBkYXRhYmFzZSB3YXMgY3Jl YXRlZCB1c2luZyB2ZXJzaW9uICVzLCAiCisJCQkJCQkJCSAgICJidXQgdGhl IG9wZXJhdGluZyBzeXN0ZW0gcHJvdmlkZXMgdmVyc2lvbiAlcy4iLAorCQkJ CQkJCQkgICBjb2xsdmVyc2lvbnN0ciwgc3lzdmVyc2lvbnN0ciksCisJCQkJ CQkgZXJyaGludCgiUmVidWlsZCBhbGwgb2JqZWN0cyBhZmZlY3RlZCBieSB0 aGlzIGNvbGxhdGlvbiBhbmQgcnVuICIKKwkJCQkJCQkJICJBTFRFUiBDT0xM QVRJT04gJXMgUkVGUkVTSCBWRVJTSU9OLCAiCisJCQkJCQkJCSAib3IgYnVp bGQgUG9zdGdyZVNRTCB3aXRoIHRoZSByaWdodCBsaWJyYXJ5IHZlcnNpb24u IiwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGdldF9u YW1lc3BhY2VfbmFtZShjb2xsZm9ybS0+Y29sbG5hbWVzcGFjZSksCisJCQkJ CQkJCQkJCQkJCQlOYW1lU3RyKGNvbGxmb3JtLT5jb2xsbmFtZSkpKSkpOwor CQl9CiAKIAkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKLSNlbHNlCQkJCQkJCS8q IG5vdCBIQVZFX0xPQ0FMRV9UICovCiAKLQkJLyoKLQkJICogRm9yIHBsYXRm b3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgbG9jYWxlX3QsIHdlIGNhbid0IGRv IGFueXRoaW5nCi0JCSAqIHdpdGggbm9uLWRlZmF1bHQgY29sbGF0aW9ucy4K LQkJICovCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQllcnJtc2coIm5vbmRlZmF1 bHQgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRm b3JtIikpKTsKLSNlbmRpZiAgIC8qIG5vdCBIQVZFX0xPQ0FMRV9UICovCisJ CWNhY2hlX2VudHJ5LT5sb2NhbGUgPSByZXN1bHQ7CiAJfQogCiAJcmV0dXJu IGNhY2hlX2VudHJ5LT5sb2NhbGU7CiB9CiAKKy8qCisgKiBHZXQgcHJvdmlk ZXItc3BlY2lmaWMgY29sbGF0aW9uIHZlcnNpb24gc3RyaW5nIGZvciB0aGUg Z2l2ZW4gY29sbGF0aW9uIGZyb20KKyAqIHRoZSBvcGVyYXRpbmcgc3lzdGVt L2xpYnJhcnkuCisgKgorICogQSBwYXJ0aWN1bGFyIHByb3ZpZGVyIG11c3Qg YWx3YXlzIGVpdGhlciByZXR1cm4gYSBub24tTlVMTCBzdHJpbmcgb3IgcmV0 dXJuCisgKiBOVUxMIChpZiBpdCBkb2Vzbid0IHN1cHBvcnQgdmVyc2lvbnMp LiAgSXQgbXVzdCBub3QgcmV0dXJuIE5VTEwgZm9yIHNvbWUKKyAqIGNvbGxj b2xsYXRlIGFuZCBub3QgTlVMTCBmb3Igb3RoZXJzLgorICovCitjaGFyICoK K2dldF9zeXN0ZW1fY29sbGF0aW9uX3ZlcnNpb24oY2hhciBjb2xscHJvdmlk ZXIsIGNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlKQoreworCWNoYXIJICAgKmNv bGx2ZXJzaW9uOworCisjaWZkZWYgVVNFX0lDVQorCWlmIChjb2xscHJvdmlk ZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwl7CisJCVVDb2xsYXRvciAgKmNv bGxhdG9yOworCQlVRXJyb3JDb2RlCXN0YXR1czsKKwkJVVZlcnNpb25JbmZv IHZlcnNpb25pbmZvOworCQljaGFyCQlidWZbVV9NQVhfVkVSU0lPTl9TVFJJ TkdfTEVOR1RIXTsKKworCQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisJCWNv bGxhdG9yID0gdWNvbF9vcGVuKGNvbGxjb2xsYXRlLCAmc3RhdHVzKTsKKwkJ aWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycm1zZygiY291bGQgbm90IG9wZW4gY29sbGF0b3IgZm9yIGxvY2Fs ZSBcIiVzXCI6ICVzIiwKKwkJCQkJCQljb2xsY29sbGF0ZSwgdV9lcnJvck5h bWUoc3RhdHVzKSkpKTsKKwkJdWNvbF9nZXRWZXJzaW9uKGNvbGxhdG9yLCB2 ZXJzaW9uaW5mbyk7CisJCXVjb2xfY2xvc2UoY29sbGF0b3IpOworCisJCXVf dmVyc2lvblRvU3RyaW5nKHZlcnNpb25pbmZvLCBidWYpOworCQljb2xsdmVy c2lvbiA9IHBzdHJkdXAoYnVmKTsKKwl9CisJZWxzZQorI2VuZGlmCisJCWNv bGx2ZXJzaW9uID0gTlVMTDsKKworCXJldHVybiBjb2xsdmVyc2lvbjsKK30K KworCisjaWZkZWYgVVNFX0lDVQorLyoKKyAqIENvbnZlcnRlciBvYmplY3Qg Zm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBJQ1UncyBVQ2hhciBzdHJpbmdzIGFu ZCBDIHN0cmluZ3MKKyAqIGluIGRhdGFiYXNlIGVuY29kaW5nLiAgU2luY2Ug dGhlIGRhdGFiYXNlIGVuY29kaW5nIGRvZXNuJ3QgY2hhbmdlLCB3ZSBvbmx5 CisgKiBuZWVkIG9uZSBvZiB0aGVzZSBwZXIgc2Vzc2lvbi4KKyAqLworc3Rh dGljIFVDb252ZXJ0ZXIgKmljdV9jb252ZXJ0ZXIgPSBOVUxMOworCitzdGF0 aWMgdm9pZAoraW5pdF9pY3VfY29udmVydGVyKHZvaWQpCit7CisJY29uc3Qg Y2hhciAqaWN1X2VuY29kaW5nX25hbWU7CisJVUVycm9yQ29kZQlzdGF0dXM7 CisJVUNvbnZlcnRlciAqY29udjsKKworCWlmIChpY3VfY29udmVydGVyKQor CQlyZXR1cm47CisKKwlpY3VfZW5jb2RpbmdfbmFtZSA9IGdldF9lbmNvZGlu Z19uYW1lX2Zvcl9pY3UoR2V0RGF0YWJhc2VFbmNvZGluZygpKTsKKworCXN0 YXR1cyA9IFVfWkVST19FUlJPUjsKKwljb252ID0gdWNudl9vcGVuKGljdV9l bmNvZGluZ19uYW1lLCAmc3RhdHVzKTsKKwlpZiAoVV9GQUlMVVJFKHN0YXR1 cykpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygiY291bGQgbm90 IG9wZW4gSUNVIGNvbnZlcnRlciBmb3IgZW5jb2RpbmcgXCIlc1wiOiAlcyIs CisJCQkJCQlpY3VfZW5jb2RpbmdfbmFtZSwgdV9lcnJvck5hbWUoc3RhdHVz KSkpKTsKKworCWljdV9jb252ZXJ0ZXIgPSBjb252OworfQorCitpbnQzMl90 CitpY3VfdG9fdWNoYXIoVUNoYXIgKipidWZmX3VjaGFyLCBjb25zdCBjaGFy ICpidWZmLCBzaXplX3QgbmJ5dGVzKQoreworCVVFcnJvckNvZGUJc3RhdHVz OworCWludDMyX3QJCWxlbl91Y2hhcjsKKworCWluaXRfaWN1X2NvbnZlcnRl cigpOworCisJbGVuX3VjaGFyID0gMiAqIG5ieXRlczsgIC8qIG1heCBsZW5n dGggcGVyIGRvY3MgKi8KKwkqYnVmZl91Y2hhciA9IHBhbGxvYyhsZW5fdWNo YXIgKiBzaXplb2YoKipidWZmX3VjaGFyKSk7CisJc3RhdHVzID0gVV9aRVJP X0VSUk9SOworCWxlbl91Y2hhciA9IHVjbnZfdG9VQ2hhcnMoaWN1X2NvbnZl cnRlciwgKmJ1ZmZfdWNoYXIsIGxlbl91Y2hhciwgYnVmZiwgbmJ5dGVzLCAm c3RhdHVzKTsKKwlpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycm1zZygidWNudl90b1VDaGFycyBmYWlsZWQ6ICVz IiwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwlyZXR1cm4gbGVuX3VjaGFy OworfQorCitpbnQzMl90CitpY3VfZnJvbV91Y2hhcihjaGFyICoqcmVzdWx0 LCBVQ2hhciAqYnVmZl91Y2hhciwgaW50MzJfdCBsZW5fdWNoYXIpCit7CisJ VUVycm9yQ29kZQlzdGF0dXM7CisJaW50MzJfdAkJbGVuX3Jlc3VsdDsKKwor CWluaXRfaWN1X2NvbnZlcnRlcigpOworCisJbGVuX3Jlc3VsdCA9IFVDTlZf R0VUX01BWF9CWVRFU19GT1JfU1RSSU5HKGxlbl91Y2hhciwgdWNudl9nZXRN YXhDaGFyU2l6ZShpY3VfY29udmVydGVyKSk7CisJKnJlc3VsdCA9IHBhbGxv YyhsZW5fcmVzdWx0ICsgMSk7CisJc3RhdHVzID0gVV9aRVJPX0VSUk9SOwor CXVjbnZfZnJvbVVDaGFycyhpY3VfY29udmVydGVyLCAqcmVzdWx0LCBsZW5f cmVzdWx0LCBidWZmX3VjaGFyLCBsZW5fdWNoYXIsICZzdGF0dXMpOworCWlm IChVX0ZBSUxVUkUoc3RhdHVzKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJybXNnKCJ1Y252X2Zyb21VQ2hhcnMgZmFpbGVkOiAlcyIsIHVfZXJyb3JO YW1lKHN0YXR1cykpKSk7CisJcmV0dXJuIGxlbl9yZXN1bHQ7Cit9CisjZW5k aWYKIAogLyoKICAqIFRoZXNlIGZ1bmN0aW9ucyBjb252ZXJ0IGZyb20vdG8g bGliYydzIHdjaGFyX3QsICpub3QqIHBnX3djaGFyX3QuCkBAIC0xMzYyLDYg KzE1MzEsOCBAQCB3Y2hhcjJjaGFyKGNoYXIgKnRvLCBjb25zdCB3Y2hhcl90 ICpmcm9tLCBzaXplX3QgdG9sZW4sIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsK IAlzaXplX3QJCXJlc3VsdDsKIAorCUFzc2VydCghbG9jYWxlIHx8IGxvY2Fs ZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpOworCiAJaWYgKHRv bGVuID09IDApCiAJCXJldHVybiAwOwogCkBAIC0xMzk4LDEwICsxNTY5LDEw IEBAIHdjaGFyMmNoYXIoY2hhciAqdG8sIGNvbnN0IHdjaGFyX3QgKmZyb20s IHNpemVfdCB0b2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKQogI2lmZGVmIEhB VkVfTE9DQUxFX1QKICNpZmRlZiBIQVZFX1dDU1RPTUJTX0wKIAkJLyogVXNl IHdjc3RvbWJzX2wgZm9yIG5vbmRlZmF1bHQgbG9jYWxlcyAqLwotCQlyZXN1 bHQgPSB3Y3N0b21ic19sKHRvLCBmcm9tLCB0b2xlbiwgbG9jYWxlKTsKKwkJ cmVzdWx0ID0gd2NzdG9tYnNfbCh0bywgZnJvbSwgdG9sZW4sIGxvY2FsZS0+ aW5mby5sdCk7CiAjZWxzZQkJCQkJCQkvKiAhSEFWRV9XQ1NUT01CU19MICov CiAJCS8qIFdlIGhhdmUgdG8gdGVtcG9yYXJpbHkgc2V0IHRoZSBsb2NhbGUg YXMgY3VycmVudCAuLi4gdWdoICovCi0JCWxvY2FsZV90CXNhdmVfbG9jYWxl ID0gdXNlbG9jYWxlKGxvY2FsZSk7CisJCWxvY2FsZV90CXNhdmVfbG9jYWxl ID0gdXNlbG9jYWxlKGxvY2FsZS0+aW5mby5sdCk7CiAKIAkJcmVzdWx0ID0g d2NzdG9tYnModG8sIGZyb20sIHRvbGVuKTsKIApAQCAtMTQzMiw2ICsxNjAz LDggQEAgY2hhcjJ3Y2hhcih3Y2hhcl90ICp0bywgc2l6ZV90IHRvbGVuLCBj b25zdCBjaGFyICpmcm9tLCBzaXplX3QgZnJvbWxlbiwKIHsKIAlzaXplX3QJ CXJlc3VsdDsKIAorCUFzc2VydCghbG9jYWxlIHx8IGxvY2FsZS0+cHJvdmlk ZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpOworCiAJaWYgKHRvbGVuID09IDAp CiAJCXJldHVybiAwOwogCkBAIC0xNDczLDEwICsxNjQ2LDEwIEBAIGNoYXIy d2NoYXIod2NoYXJfdCAqdG8sIHNpemVfdCB0b2xlbiwgY29uc3QgY2hhciAq ZnJvbSwgc2l6ZV90IGZyb21sZW4sCiAjaWZkZWYgSEFWRV9MT0NBTEVfVAog I2lmZGVmIEhBVkVfTUJTVE9XQ1NfTAogCQkJLyogVXNlIG1ic3Rvd2NzX2wg Zm9yIG5vbmRlZmF1bHQgbG9jYWxlcyAqLwotCQkJcmVzdWx0ID0gbWJzdG93 Y3NfbCh0bywgc3RyLCB0b2xlbiwgbG9jYWxlKTsKKwkJCXJlc3VsdCA9IG1i c3Rvd2NzX2wodG8sIHN0ciwgdG9sZW4sIGxvY2FsZS0+aW5mby5sdCk7CiAj ZWxzZQkJCQkJCQkvKiAhSEFWRV9NQlNUT1dDU19MICovCiAJCQkvKiBXZSBo YXZlIHRvIHRlbXBvcmFyaWx5IHNldCB0aGUgbG9jYWxlIGFzIGN1cnJlbnQg Li4uIHVnaCAqLwotCQkJbG9jYWxlX3QJc2F2ZV9sb2NhbGUgPSB1c2Vsb2Nh bGUobG9jYWxlKTsKKwkJCWxvY2FsZV90CXNhdmVfbG9jYWxlID0gdXNlbG9j YWxlKGxvY2FsZS0+aW5mby5sdCk7CiAKIAkJCXJlc3VsdCA9IG1ic3Rvd2Nz KHRvLCBzdHIsIHRvbGVuKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYwppbmRleCBhMDRmZDdiYzkwLi5iNzBkYWRjYTVmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAtNTI1OCw3 ICs1MjU4LDcgQEAgZmluZF9qb2luX2lucHV0X3JlbChQbGFubmVySW5mbyAq cm9vdCwgUmVsaWRzIHJlbGlkcykKIC8qCiAgKiBDaGVjayB3aGV0aGVyIGNo YXIgaXMgYSBsZXR0ZXIgKGFuZCwgaGVuY2UsIHN1YmplY3QgdG8gY2FzZS1m b2xkaW5nKQogICoKLSAqIEluIG11bHRpYnl0ZSBjaGFyYWN0ZXIgc2V0cywg d2UgY2FuJ3QgdXNlIGlzYWxwaGEsIGFuZCBpdCBkb2VzIG5vdCBzZWVtCisg KiBJbiBtdWx0aWJ5dGUgY2hhcmFjdGVyIHNldHMgb3Igd2l0aCBJQ1UsIHdl IGNhbid0IHVzZSBpc2FscGhhLCBhbmQgaXQgZG9lcyBub3Qgc2VlbQogICog d29ydGggdHJ5aW5nIHRvIGNvbnZlcnQgdG8gd2NoYXJfdCB0byB1c2UgaXN3 YWxwaGEuICBJbnN0ZWFkLCBqdXN0IGFzc3VtZQogICogYW55IG11bHRpYnl0 ZSBjaGFyIGlzIHBvdGVudGlhbGx5IGNhc2UtdmFyeWluZy4KICAqLwpAQCAt NTI3MCw5ICs1MjcwLDExIEBAIHBhdHRlcm5fY2hhcl9pc2FscGhhKGNoYXIg YywgYm9vbCBpc19tdWx0aWJ5dGUsCiAJCXJldHVybiAoYyA+PSAnQScgJiYg YyA8PSAnWicpIHx8IChjID49ICdhJyAmJiBjIDw9ICd6Jyk7CiAJZWxzZSBp ZiAoaXNfbXVsdGlieXRlICYmIElTX0hJR0hCSVRfU0VUKGMpKQogCQlyZXR1 cm4gdHJ1ZTsKKwllbHNlIGlmIChsb2NhbGUgJiYgbG9jYWxlLT5wcm92aWRl ciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQlyZXR1cm4gSVNfSElHSEJJVF9T RVQoYykgPyB0cnVlIDogZmFsc2U7CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAot CWVsc2UgaWYgKGxvY2FsZSkKLQkJcmV0dXJuIGlzYWxwaGFfbCgodW5zaWdu ZWQgY2hhcikgYywgbG9jYWxlKTsKKwllbHNlIGlmIChsb2NhbGUgJiYgbG9j YWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfTElCQykKKwkJcmV0dXJu IGlzYWxwaGFfbCgodW5zaWduZWQgY2hhcikgYywgbG9jYWxlLT5pbmZvLmx0 KTsKICNlbmRpZgogCWVsc2UKIAkJcmV0dXJuIGlzYWxwaGEoKHVuc2lnbmVk IGNoYXIpIGMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMK aW5kZXggMjhiNTc0NWJhOC4uOWY4YzJlMzQ4NSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdmFybGVuYS5jCkBAIC0xNDAzLDEwICsxNDAzLDcgQEAg dmFyc3RyX2NtcChjaGFyICphcmcxLCBpbnQgbGVuMSwgY2hhciAqYXJnMiwg aW50IGxlbjIsIE9pZCBjb2xsaWQpCiAJCWNoYXIJCWEyYnVmW1RFWFRCVUZM RU5dOwogCQljaGFyCSAgICphMXAsCiAJCQkJICAgKmEycDsKLQotI2lmZGVm IEhBVkVfTE9DQUxFX1QKIAkJcGdfbG9jYWxlX3QgbXlsb2NhbGUgPSAwOwot I2VuZGlmCiAKIAkJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9P SUQpCiAJCXsKQEAgLTE0MjEsOSArMTQxOCw3IEBAIHZhcnN0cl9jbXAoY2hh ciAqYXJnMSwgaW50IGxlbjEsIGNoYXIgKmFyZzIsIGludCBsZW4yLCBPaWQg Y29sbGlkKQogCQkJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3 aGljaCBjb2xsYXRpb24gdG8gdXNlIGZvciBzdHJpbmcgY29tcGFyaXNvbiIp LAogCQkJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8g c2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOwogCQkJfQotI2lm ZGVmIEhBVkVfTE9DQUxFX1QKIAkJCW15bG9jYWxlID0gcGdfbmV3bG9jYWxl X2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7Ci0jZW5kaWYKIAkJfQogCiAJCS8q CkBAIC0xNTQyLDkgKzE1MzcsNDQgQEAgdmFyc3RyX2NtcChjaGFyICphcmcx LCBpbnQgbGVuMSwgY2hhciAqYXJnMiwgaW50IGxlbjIsIE9pZCBjb2xsaWQp CiAJCW1lbWNweShhMnAsIGFyZzIsIGxlbjIpOwogCQlhMnBbbGVuMl0gPSAn XDAnOwogCi0jaWZkZWYgSEFWRV9MT0NBTEVfVAogCQlpZiAobXlsb2NhbGUp Ci0JCQlyZXN1bHQgPSBzdHJjb2xsX2woYTFwLCBhMnAsIG15bG9jYWxlKTsK KwkJeworI2lmZGVmIFVTRV9JQ1UKKwkJCWlmIChteWxvY2FsZS0+cHJvdmlk ZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJCXsKKyNpZmRlZiBIQVZFX1VD T0xfU1RSQ09MTFVURjgKKwkJCQlpZiAoR2V0RGF0YWJhc2VFbmNvZGluZygp ID09IFBHX1VURjgpCisJCQkJeworCQkJCQlVRXJyb3JDb2RlCXN0YXR1czsK KworCQkJCQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisJCQkJCXJlc3VsdCA9 IHVjb2xfc3RyY29sbFVURjgobXlsb2NhbGUtPmluZm8uaWN1LnVjb2wsCisJ CQkJCQkJCQkJCSAgYXJnMSwgbGVuMSwKKwkJCQkJCQkJCQkJICBhcmcyLCBs ZW4yLAorCQkJCQkJCQkJCQkgICZzdGF0dXMpOworCQkJCQlpZiAoVV9GQUlM VVJFKHN0YXR1cykpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQko ZXJybXNnKCJjb2xsYXRpb24gZmFpbGVkOiAlcyIsIHVfZXJyb3JOYW1lKHN0 YXR1cykpKSk7CisJCQkJfQorCQkJCWVsc2UKKyNlbmRpZgorCQkJCXsKKwkJ CQkJaW50MzJfdCB1bGVuMSwgdWxlbjI7CisJCQkJCVVDaGFyICp1Y2hhcjEs ICp1Y2hhcjI7CisKKwkJCQkJdWxlbjEgPSBpY3VfdG9fdWNoYXIoJnVjaGFy MSwgYXJnMSwgbGVuMSk7CisJCQkJCXVsZW4yID0gaWN1X3RvX3VjaGFyKCZ1 Y2hhcjIsIGFyZzIsIGxlbjIpOworCisJCQkJCXJlc3VsdCA9IHVjb2xfc3Ry Y29sbChteWxvY2FsZS0+aW5mby5pY3UudWNvbCwKKwkJCQkJCQkJCQkgIHVj aGFyMSwgdWxlbjEsCisJCQkJCQkJCQkJICB1Y2hhcjIsIHVsZW4yKTsKKwkJ CQl9CisJCQl9CisJCQllbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0xPQ0FM RV9UCisJCQkJcmVzdWx0ID0gc3RyY29sbF9sKGExcCwgYTJwLCBteWxvY2Fs ZS0+aW5mby5sdCk7CisJCX0KIAkJZWxzZQogI2VuZGlmCiAJCQlyZXN1bHQg PSBzdHJjb2xsKGExcCwgYTJwKTsKQEAgLTE3NjgsMTAgKzE3OTgsNyBAQCB2 YXJzdHJfc29ydHN1cHBvcnQoU29ydFN1cHBvcnQgc3N1cCwgT2lkIGNvbGxp ZCwgYm9vbCBicGNoYXIpCiAJYm9vbAkJYWJicmV2aWF0ZSA9IHNzdXAtPmFi YnJldmlhdGU7CiAJYm9vbAkJY29sbGF0ZV9jID0gZmFsc2U7CiAJVmFyU3Ry aW5nU29ydFN1cHBvcnQgKnNzczsKLQotI2lmZGVmIEhBVkVfTE9DQUxFX1QK IAlwZ19sb2NhbGVfdCBsb2NhbGUgPSAwOwotI2VuZGlmCiAKIAkvKgogCSAq IElmIHBvc3NpYmxlLCBzZXQgc3N1cC0+Y29tcGFyYXRvciB0byBhIGZ1bmN0 aW9uIHdoaWNoIGNhbiBiZSB1c2VkIHRvCkBAIC0xODI2LDkgKzE4NTMsNyBA QCB2YXJzdHJfc29ydHN1cHBvcnQoU29ydFN1cHBvcnQgc3N1cCwgT2lkIGNv bGxpZCwgYm9vbCBicGNoYXIpCiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg ZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIHN0cmluZyBj b21wYXJpc29uIiksCiAJCQkJCQkgZXJyaGludCgiVXNlIHRoZSBDT0xMQVRF IGNsYXVzZSB0byBzZXQgdGhlIGNvbGxhdGlvbiBleHBsaWNpdGx5LiIpKSk7 CiAJCQl9Ci0jaWZkZWYgSEFWRV9MT0NBTEVfVAogCQkJbG9jYWxlID0gcGdf bmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7Ci0jZW5kaWYKIAkJ fQogCX0KIApAQCAtMTg1NCw3ICsxODc5LDcgQEAgdmFyc3RyX3NvcnRzdXBw b3J0KFNvcnRTdXBwb3J0IHNzdXAsIE9pZCBjb2xsaWQsIGJvb2wgYnBjaGFy KQogCSAqIHBsYXRmb3Jtcy4KIAkgKi8KICNpZm5kZWYgVFJVU1RfU1RSWEZS TQotCWlmICghY29sbGF0ZV9jKQorCWlmICghY29sbGF0ZV9jICYmICEobG9j YWxlICYmIGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkp CiAJCWFiYnJldmlhdGUgPSBmYWxzZTsKICNlbmRpZgogCkBAIC0yMDkwLDkg KzIxMTUsNDQgQEAgdmFyc3RyZmFzdGNtcF9sb2NhbGUoRGF0dW0geCwgRGF0 dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKIAkJZ290byBkb25lOwogCX0KIAot I2lmZGVmIEhBVkVfTE9DQUxFX1QKIAlpZiAoc3NzLT5sb2NhbGUpCi0JCXJl c3VsdCA9IHN0cmNvbGxfbChzc3MtPmJ1ZjEsIHNzcy0+YnVmMiwgc3NzLT5s b2NhbGUpOworCXsKKyNpZmRlZiBVU0VfSUNVCisJCWlmIChzc3MtPmxvY2Fs ZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJeworI2lmZGVm IEhBVkVfVUNPTF9TVFJDT0xMVVRGOAorCQkJaWYgKEdldERhdGFiYXNlRW5j b2RpbmcoKSA9PSBQR19VVEY4KQorCQkJeworCQkJCVVFcnJvckNvZGUJc3Rh dHVzOworCisJCQkJc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCQkJCXJlc3Vs dCA9IHVjb2xfc3RyY29sbFVURjgoc3NzLT5sb2NhbGUtPmluZm8uaWN1LnVj b2wsCisJCQkJCQkJCQkJICBhMXAsIGxlbjEsCisJCQkJCQkJCQkJICBhMnAs IGxlbjIsCisJCQkJCQkJCQkJICAmc3RhdHVzKTsKKwkJCQlpZiAoVV9GQUlM VVJFKHN0YXR1cykpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVy cm1zZygiY29sbGF0aW9uIGZhaWxlZDogJXMiLCB1X2Vycm9yTmFtZShzdGF0 dXMpKSkpOworCQkJfQorCQkJZWxzZQorI2VuZGlmCisJCQl7CisJCQkJaW50 MzJfdCB1bGVuMSwgdWxlbjI7CisJCQkJVUNoYXIgKnVjaGFyMSwgKnVjaGFy MjsKKworCQkJCXVsZW4xID0gaWN1X3RvX3VjaGFyKCZ1Y2hhcjEsIGExcCwg bGVuMSk7CisJCQkJdWxlbjIgPSBpY3VfdG9fdWNoYXIoJnVjaGFyMiwgYTJw LCBsZW4yKTsKKworCQkJCXJlc3VsdCA9IHVjb2xfc3RyY29sbChzc3MtPmxv Y2FsZS0+aW5mby5pY3UudWNvbCwKKwkJCQkJCQkJCSAgdWNoYXIxLCB1bGVu MSwKKwkJCQkJCQkJCSAgdWNoYXIyLCB1bGVuMik7CisJCQl9CisJCX0KKwkJ ZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9MT0NBTEVfVAorCQkJcmVzdWx0 ID0gc3RyY29sbF9sKHNzcy0+YnVmMSwgc3NzLT5idWYyLCBzc3MtPmxvY2Fs ZS0+aW5mby5sdCk7CisJfQogCWVsc2UKICNlbmRpZgogCQlyZXN1bHQgPSBz dHJjb2xsKHNzcy0+YnVmMSwgc3NzLT5idWYyKTsKQEAgLTIyMDAsOSArMjI2 MCwxNCBAQCB2YXJzdHJfYWJicmV2X2NvbnZlcnQoRGF0dW0gb3JpZ2luYWws IFNvcnRTdXBwb3J0IHNzdXApCiAJZWxzZQogCXsKIAkJU2l6ZQkJYnNpemU7 CisjaWZkZWYgVVNFX0lDVQorCQlpbnQzMl90CQl1bGVuID0gLTE7CisJCVVD aGFyCSAgICp1Y2hhcjsKKyNlbmRpZgogCiAJCS8qCi0JCSAqIFdlJ3JlIG5v dCB1c2luZyB0aGUgQyBjb2xsYXRpb24sIHNvIGZhbGwgYmFjayBvbiBzdHJ4 ZnJtLgorCQkgKiBXZSdyZSBub3QgdXNpbmcgdGhlIEMgY29sbGF0aW9uLCBz byBmYWxsIGJhY2sgb24gc3RyeGZybSBvciBJQ1UKKwkJICogYW5hbG9ncy4K IAkJICovCiAKIAkJLyogQnkgY29udmVudGlvbiwgd2UgdXNlIGJ1ZmZlciAx IHRvIHN0b3JlIGFuZCBOVUwtdGVybWluYXRlICovCkBAIC0yMjIyLDE3ICsy Mjg3LDY2IEBAIHZhcnN0cl9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5h bCwgU29ydFN1cHBvcnQgc3N1cCkKIAkJCWdvdG8gZG9uZTsKIAkJfQogCi0J CS8qIEp1c3QgbGlrZSBzdHJjb2xsKCksIHN0cnhmcm0oKSBleHBlY3RzIGEg TlVMLXRlcm1pbmF0ZWQgc3RyaW5nICovCiAJCW1lbWNweShzc3MtPmJ1ZjEs IGF1dGhvcml0YXRpdmVfZGF0YSwgbGVuKTsKKwkJLyogSnVzdCBsaWtlIHN0 cmNvbGwoKSwgc3RyeGZybSgpIGV4cGVjdHMgYSBOVUwtdGVybWluYXRlZCBz dHJpbmcuCisJCSAqIE5vdCBuZWNlc3NhcnkgZm9yIElDVSwgYnV0IGRvZXNu J3QgaHVydC4gKi8KIAkJc3NzLT5idWYxW2xlbl0gPSAnXDAnOwogCQlzc3Mt Pmxhc3RfbGVuMSA9IGxlbjsKIAorI2lmZGVmIFVTRV9JQ1UKKwkJLyogV2hl biB1c2luZyBJQ1UgYW5kIG5vdCBVVEY4LCBjb252ZXJ0IHN0cmluZyB0byBV Q2hhci4gKi8KKwkJaWYgKHNzcy0+bG9jYWxlICYmIHNzcy0+bG9jYWxlLT5w cm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVICYmCisJCQlHZXREYXRhYmFz ZUVuY29kaW5nKCkgIT0gUEdfVVRGOCkKKwkJCXVsZW4gPSBpY3VfdG9fdWNo YXIoJnVjaGFyLCBzc3MtPmJ1ZjEsIGxlbik7CisjZW5kaWYKKworCQkvKgor CQkgKiBMb29wOiBDYWxsIHN0cnhmcm0oKSBvciB1Y29sX2dldFNvcnRLZXko KSwgcG9zc2libHkgZW5sYXJnZSBidWZmZXIsCisJCSAqIGFuZCB0cnkgYWdh aW4uICBCb3RoIG9mIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSByZXN1bHQg YnVmZmVyCisJCSAqIGNvbnRlbnQgdW5kZWZpbmVkIGlmIHRoZSByZXN1bHQg ZGlkIG5vdCBmaXQsIHNvIHdlIG5lZWQgdG8gcmV0cnkKKwkJICogdW50aWwg ZXZlcnl0aGluZyBmaXRzLCBldmVuIHRob3VnaCB3ZSBvbmx5IG5lZWQgdGhl IGZpcnN0IGZldyBieXRlcworCQkgKiBpbiB0aGUgZW5kLiAgV2hlbiB1c2lu ZyB1Y29sX25leHRTb3J0S2V5UGFydCgpLCBob3dldmVyLCB3ZSBvbmx5CisJ CSAqIGFzayBmb3IgYXMgbWFueSBieXRlcyBhcyB3ZSBhY3R1YWxseSBuZWVk LgorCQkgKi8KIAkJZm9yICg7OykKIAkJeworI2lmZGVmIFVTRV9JQ1UKKwkJ CWlmIChzc3MtPmxvY2FsZSAmJiBzc3MtPmxvY2FsZS0+cHJvdmlkZXIgPT0g Q09MTFBST1ZJREVSX0lDVSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdoZW4g dXNpbmcgVVRGOCwgdXNlIHRoZSBpdGVyYXRpb24gaW50ZXJmYWNlIHNvIHdl IG9ubHkKKwkJCQkgKiBuZWVkIHRvIHByb2R1Y2UgYXMgbWFueSBieXRlcyBh cyB3ZSBhY3R1YWxseSBuZWVkLgorCQkJCSAqLworCQkJCWlmIChHZXREYXRh YmFzZUVuY29kaW5nKCkgPT0gUEdfVVRGOCkKKwkJCQl7CisJCQkJCVVDaGFy SXRlcmF0b3IgaXRlcjsKKwkJCQkJdWludDMyX3QJc3RhdGVbMl07CisJCQkJ CVVFcnJvckNvZGUJc3RhdHVzOworCisJCQkJCXVpdGVyX3NldFVURjgoJml0 ZXIsIHNzcy0+YnVmMSwgbGVuKTsKKwkJCQkJc3RhdGVbMF0gPSBzdGF0ZVsx XSA9IDA7ICAvKiB3b24ndCBuZWVkIHRoYXQgYWdhaW4gKi8KKwkJCQkJc3Rh dHVzID0gVV9aRVJPX0VSUk9SOworCQkJCQlic2l6ZSA9IHVjb2xfbmV4dFNv cnRLZXlQYXJ0KHNzcy0+bG9jYWxlLT5pbmZvLmljdS51Y29sLAorCQkJCQkJ CQkJCQkJICZpdGVyLAorCQkJCQkJCQkJCQkJIHN0YXRlLAorCQkJCQkJCQkJ CQkJICh1aW50OF90ICopIHNzcy0+YnVmMiwKKwkJCQkJCQkJCQkJCSBNaW4o c2l6ZW9mKERhdHVtKSwgc3NzLT5idWZsZW4yKSwKKwkJCQkJCQkJCQkJCSAm c3RhdHVzKTsKKwkJCQkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycm1zZygic29ydCBrZXkgZ2Vu ZXJhdGlvbiBmYWlsZWQ6ICVzIiwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsK KwkJCQl9CisJCQkJZWxzZQorCQkJCQlic2l6ZSA9IHVjb2xfZ2V0U29ydEtl eShzc3MtPmxvY2FsZS0+aW5mby5pY3UudWNvbCwKKwkJCQkJCQkJCQkJdWNo YXIsIHVsZW4sCisJCQkJCQkJCQkJCSh1aW50OF90ICopIHNzcy0+YnVmMiwg c3NzLT5idWZsZW4yKTsKKwkJCX0KKwkJCWVsc2UKKyNlbmRpZgogI2lmZGVm IEhBVkVfTE9DQUxFX1QKLQkJCWlmIChzc3MtPmxvY2FsZSkKKwkJCWlmIChz c3MtPmxvY2FsZSAmJiBzc3MtPmxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBS T1ZJREVSX0xJQkMpCiAJCQkJYnNpemUgPSBzdHJ4ZnJtX2woc3NzLT5idWYy LCBzc3MtPmJ1ZjEsCi0JCQkJCQkJCSAgc3NzLT5idWZsZW4yLCBzc3MtPmxv Y2FsZSk7CisJCQkJCQkJCSAgc3NzLT5idWZsZW4yLCBzc3MtPmxvY2FsZS0+ aW5mby5sdCk7CiAJCQllbHNlCiAjZW5kaWYKIAkJCQlic2l6ZSA9IHN0cnhm cm0oc3NzLT5idWYyLCBzc3MtPmJ1ZjEsIHNzcy0+YnVmbGVuMik7CkBAIC0y MjQyLDggKzIzNTYsNyBAQCB2YXJzdHJfYWJicmV2X2NvbnZlcnQoRGF0dW0g b3JpZ2luYWwsIFNvcnRTdXBwb3J0IHNzdXApCiAJCQkJYnJlYWs7CiAKIAkJ CS8qCi0JCQkgKiBUaGUgQyBzdGFuZGFyZCBzdGF0ZXMgdGhhdCB0aGUgY29u dGVudHMgb2YgdGhlIGJ1ZmZlciBpcyBub3cKLQkJCSAqIHVuc3BlY2lmaWVk LiAgR3JvdyBidWZmZXIsIGFuZCByZXRyeS4KKwkJCSAqIEdyb3cgYnVmZmVy IGFuZCByZXRyeS4KIAkJCSAqLwogCQkJcGZyZWUoc3NzLT5idWYyKTsKIAkJ CXNzcy0+YnVmbGVuMiA9IE1heChic2l6ZSArIDEsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9tYi9lbmNuYW1lcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWIvZW5jbmFtZXMuYwppbmRleCAxMTA5OWI4NDRmLi40NDRlZWMy NWI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tYi9lbmNuYW1l cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21iL2VuY25hbWVzLmMKQEAg LTQwMyw2ICs0MDMsODIgQEAgY29uc3QgcGdfZW5jMmdldHRleHQgcGdfZW5j MmdldHRleHRfdGJsW10gPQogfTsKIAogCisjaWZuZGVmIEZST05URU5ECisK Ky8qCisgKiBUYWJsZSBvZiBlbmNvZGluZyBuYW1lcyBmb3IgSUNVCisgKgor ICogUmVmZXJlbmNlOiA8aHR0cHM6Ly9zc2wuaWN1LXByb2plY3Qub3JnL2lj dS1iaW4vY29udmV4cD4KKyAqCisgKiBOVUxMIGVudHJpZXMgYXJlIG5vdCBz dXBwb3J0ZWQgYnkgSUNVLCBvciB0aGVpciBtYXBwaW5nIGlzIHVuY2xlYXIu CisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcGdfZW5jMmljdV90 YmxbXSA9Cit7CisJTlVMTCwJCQkJCS8qIFBHX1NRTF9BU0NJSSAqLworCSJF VUMtSlAiLAkJCQkvKiBQR19FVUNfSlAgKi8KKwkiRVVDLUNOIiwJCQkJLyog UEdfRVVDX0NOICovCisJIkVVQy1LUiIsCQkJCS8qIFBHX0VVQ19LUiAqLwor CSJFVUMtVFciLAkJCQkvKiBQR19FVUNfVFcgKi8KKwlOVUxMLAkJCQkJLyog UEdfRVVDX0pJU18yMDA0ICovCisJIlVURi04IiwJCQkJLyogUEdfVVRGOCAq LworCU5VTEwsCQkJCQkvKiBQR19NVUxFX0lOVEVSTkFMICovCisJIklTTy04 ODU5LTEiLAkJCS8qIFBHX0xBVElOMSAqLworCSJJU08tODg1OS0yIiwJCQkv KiBQR19MQVRJTjIgKi8KKwkiSVNPLTg4NTktMyIsCQkJLyogUEdfTEFUSU4z ICovCisJIklTTy04ODU5LTQiLAkJCS8qIFBHX0xBVElONCAqLworCSJJU08t ODg1OS05IiwJCQkvKiBQR19MQVRJTjUgKi8KKwkiSVNPLTg4NTktMTAiLAkJ CS8qIFBHX0xBVElONiAqLworCSJJU08tODg1OS0xMyIsCQkJLyogUEdfTEFU SU43ICovCisJIklTTy04ODU5LTE0IiwJCQkvKiBQR19MQVRJTjggKi8KKwki SVNPLTg4NTktMTUiLAkJCS8qIFBHX0xBVElOOSAqLworCU5VTEwsCQkJCQkv KiBQR19MQVRJTjEwICovCisJIkNQMTI1NiIsCQkJCS8qIFBHX1dJTjEyNTYg Ki8KKwkiQ1AxMjU4IiwJCQkJLyogUEdfV0lOMTI1OCAqLworCSJDUDg2NiIs CQkJCS8qIFBHX1dJTjg2NiAqLworCU5VTEwsCQkJCQkvKiBQR19XSU44NzQg Ki8KKwkiS09JOC1SIiwJCQkJLyogUEdfS09JOFIgKi8KKwkiQ1AxMjUxIiwJ CQkJLyogUEdfV0lOMTI1MSAqLworCSJDUDEyNTIiLAkJCQkvKiBQR19XSU4x MjUyICovCisJIklTTy04ODU5LTUiLAkJCS8qIFBHX0lTT184ODU5XzUgKi8K KwkiSVNPLTg4NTktNiIsCQkJLyogUEdfSVNPXzg4NTlfNiAqLworCSJJU08t ODg1OS03IiwJCQkvKiBQR19JU09fODg1OV83ICovCisJIklTTy04ODU5LTgi LAkJCS8qIFBHX0lTT184ODU5XzggKi8KKwkiQ1AxMjUwIiwJCQkJLyogUEdf V0lOMTI1MCAqLworCSJDUDEyNTMiLAkJCQkvKiBQR19XSU4xMjUzICovCisJ IkNQMTI1NCIsCQkJCS8qIFBHX1dJTjEyNTQgKi8KKwkiQ1AxMjU1IiwJCQkJ LyogUEdfV0lOMTI1NSAqLworCSJDUDEyNTciLAkJCQkvKiBQR19XSU4xMjU3 ICovCisJIktPSTgtVSIsCQkJCS8qIFBHX0tPSThVICovCit9OworCitib29s Citpc19lbmNvZGluZ19zdXBwb3J0ZWRfYnlfaWN1KGludCBlbmNvZGluZykK K3sKKwlyZXR1cm4gKHBnX2VuYzJpY3VfdGJsW2VuY29kaW5nXSAhPSBOVUxM KTsKK30KKworY29uc3QgY2hhciAqCitnZXRfZW5jb2RpbmdfbmFtZV9mb3Jf aWN1KGludCBlbmNvZGluZykKK3sKKwljb25zdCBjaGFyICppY3VfZW5jb2Rp bmdfbmFtZTsKKworCVN0YXRpY0Fzc2VydFN0bXQobGVuZ3Rob2YocGdfZW5j MmljdV90YmwpID09IFBHX0VOQ09ESU5HX0JFX0xBU1QgKyAxLAorCQkJCQkg InBnX2VuYzJpY3VfdGJsIGluY29tcGxldGUiKTsKKworCWljdV9lbmNvZGlu Z19uYW1lID0gcGdfZW5jMmljdV90YmxbZW5jb2RpbmddOworCisJaWYgKCFp Y3VfZW5jb2RpbmdfbmFtZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVy cm1zZygiZW5jb2RpbmcgXCIlc1wiIG5vdCBzdXBwb3J0ZWQgYnkgSUNVIiwK KwkJCQkJCXBnX2VuY29kaW5nX3RvX2NoYXIoZW5jb2RpbmcpKSkpOworCisJ cmV0dXJuIGljdV9lbmNvZGluZ19uYW1lOworfQorCisjZW5kaWYgLyogbm90 IEZST05URU5EICovCisKKwogLyogLS0tLS0tLS0tLQogICogRW5jb2Rpbmcg Y2hlY2tzLCBmb3IgZXJyb3IgcmV0dXJucyAtMSBlbHNlIGVuY29kaW5nIGlk CiAgKiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9p bml0ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCmluZGV4IGRhNDBk N2FiNjcuLjYzNzkwODQ4N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRi L2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC02 MSw2ICs2MSw3IEBACiAKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVf dXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vcmVzdHJpY3RlZF90b2tlbi5o IgogI2luY2x1ZGUgImNvbW1vbi91c2VybmFtZS5oIgpAQCAtMTYyMCw3ICsx NjIxLDcgQEAgc2V0dXBfY29sbGF0aW9uKEZJTEUgKmNtZGZkKQogCVBHX0NN RF9QVVRTKCJTRUxFQ1QgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKGlm X25vdF9leGlzdHMgPT4gZmFsc2UsIHNjaGVtYSA9PiAncGdfY2F0YWxvZycp O1xuXG4iKTsKIAogCS8qIEFkZCBhbiBTUUwtc3RhbmRhcmQgbmFtZSAqLwot CVBHX0NNRF9QUklOVEYyKCJJTlNFUlQgSU5UTyBwZ19jb2xsYXRpb24gKGNv bGxuYW1lLCBjb2xsbmFtZXNwYWNlLCBjb2xsb3duZXIsIGNvbGxlbmNvZGlu ZywgY29sbGNvbGxhdGUsIGNvbGxjdHlwZSkgVkFMVUVTICgndWNzX2Jhc2lj JywgJ3BnX2NhdGFsb2cnOjpyZWduYW1lc3BhY2UsICV1LCAlZCwgJ0MnLCAn QycpO1xuXG4iLCBCT09UU1RSQVBfU1VQRVJVU0VSSUQsIFBHX1VURjgpOwor CVBHX0NNRF9QUklOVEYzKCJJTlNFUlQgSU5UTyBwZ19jb2xsYXRpb24gKGNv bGxuYW1lLCBjb2xsbmFtZXNwYWNlLCBjb2xsb3duZXIsIGNvbGxwcm92aWRl ciwgY29sbGVuY29kaW5nLCBjb2xsY29sbGF0ZSwgY29sbGN0eXBlKSBWQUxV RVMgKCd1Y3NfYmFzaWMnLCAncGdfY2F0YWxvZyc6OnJlZ25hbWVzcGFjZSwg JXUsICclYycsICVkLCAnQycsICdDJyk7XG5cbiIsIEJPT1RTVFJBUF9TVVBF UlVTRVJJRCwgQ09MTFBST1ZJREVSX0xJQkMsIFBHX1VURjgpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYzc4NzZmZWRkMi4uMDMy ZmI5NWEyYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xMjgwMSw4 ICsxMjgwMSwxMCBAQCBkdW1wQ29sbGF0aW9uKEFyY2hpdmUgKmZvdXQsIENv bGxJbmZvICpjb2xsaW5mbykKIAlQUUV4cEJ1ZmZlciBkZWxxOwogCVBRRXhw QnVmZmVyIGxhYmVscTsKIAlQR3Jlc3VsdCAgICpyZXM7CisJaW50CQkJaV9j b2xscHJvdmlkZXI7CiAJaW50CQkJaV9jb2xsY29sbGF0ZTsKIAlpbnQJCQlp X2NvbGxjdHlwZTsKKwljb25zdCBjaGFyICpjb2xscHJvdmlkZXI7CiAJY29u c3QgY2hhciAqY29sbGNvbGxhdGU7CiAJY29uc3QgY2hhciAqY29sbGN0eXBl OwogCkBAIC0xMjgxOSwxOCArMTI4MjEsMzAgQEAgZHVtcENvbGxhdGlvbihB cmNoaXZlICpmb3V0LCBDb2xsSW5mbyAqY29sbGluZm8pCiAJc2VsZWN0U291 cmNlU2NoZW1hKGZvdXQsIGNvbGxpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9i ai5uYW1lKTsKIAogCS8qIEdldCBjb2xsYXRpb24tc3BlY2lmaWMgZGV0YWls cyAqLwotCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiU0VMRUNUICIKLQkJ CQkJICAiY29sbGNvbGxhdGUsICIKLQkJCQkJICAiY29sbGN0eXBlICIKLQkJ CQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbiBjICIKLQkJCQkJ ICAiV0hFUkUgYy5vaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCIsCi0JCQkJ CSAgY29sbGluZm8tPmRvYmouY2F0SWQub2lkKTsKKwlpZiAoZm91dC0+cmVt b3RlVmVyc2lvbiA+PSAxMDAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1 ZXJ5LCAiU0VMRUNUICIKKwkJCQkJCSAgImNvbGxwcm92aWRlciwgIgorCQkJ CQkJICAiY29sbGNvbGxhdGUsICIKKwkJCQkJCSAgImNvbGxjdHlwZSAiCisJ CQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY29sbGF0aW9uIGMgIgorCQkJ CQkJICAiV0hFUkUgYy5vaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCIsCisJ CQkJCQkgIGNvbGxpbmZvLT5kb2JqLmNhdElkLm9pZCk7CisJZWxzZQorCQlh cHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIlNFTEVDVCAiCisJCQkJCQkgICIn cCc6OmNoYXIgQVMgY29sbHByb3ZpZGVyLCAiCisJCQkJCQkgICJjb2xsY29s bGF0ZSwgIgorCQkJCQkJICAiY29sbGN0eXBlICIKKwkJCQkJCSAgIkZST00g cGdfY2F0YWxvZy5wZ19jb2xsYXRpb24gYyAiCisJCQkJCQkgICJXSEVSRSBj Lm9pZCA9ICcldSc6OnBnX2NhdGFsb2cub2lkIiwKKwkJCQkJCSAgY29sbGlu Zm8tPmRvYmouY2F0SWQub2lkKTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVy eUZvclNpbmdsZVJvdyhmb3V0LCBxdWVyeS0+ZGF0YSk7CiAKKwlpX2NvbGxw cm92aWRlciA9IFBRZm51bWJlcihyZXMsICJjb2xscHJvdmlkZXIiKTsKIAlp X2NvbGxjb2xsYXRlID0gUFFmbnVtYmVyKHJlcywgImNvbGxjb2xsYXRlIik7 CiAJaV9jb2xsY3R5cGUgPSBQUWZudW1iZXIocmVzLCAiY29sbGN0eXBlIik7 CiAKKwljb2xscHJvdmlkZXIgPSBQUWdldHZhbHVlKHJlcywgMCwgaV9jb2xs cHJvdmlkZXIpOwogCWNvbGxjb2xsYXRlID0gUFFnZXR2YWx1ZShyZXMsIDAs IGlfY29sbGNvbGxhdGUpOwogCWNvbGxjdHlwZSA9IFBRZ2V0dmFsdWUocmVz LCAwLCBpX2NvbGxjdHlwZSk7CiAKQEAgLTEyODQyLDExICsxMjg1NiwzMiBA QCBkdW1wQ29sbGF0aW9uKEFyY2hpdmUgKmZvdXQsIENvbGxJbmZvICpjb2xs aW5mbykKIAlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiLiVzO1xuIiwKIAkJ CQkJICBmbXRJZChjb2xsaW5mby0+ZG9iai5uYW1lKSk7CiAKLQlhcHBlbmRQ UUV4cEJ1ZmZlcihxLCAiQ1JFQVRFIENPTExBVElPTiAlcyAobGNfY29sbGF0 ZSA9ICIsCisJYXBwZW5kUFFFeHBCdWZmZXIocSwgIkNSRUFURSBDT0xMQVRJ T04gJXMgKCIsCiAJCQkJCSAgZm10SWQoY29sbGluZm8tPmRvYmoubmFtZSkp OwotCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxLCBjb2xsY29sbGF0ZSwgZm91 dCk7Ci0JYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiwgbGNfY3R5cGUgPSAi KTsKLQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocSwgY29sbGN0eXBlLCBmb3V0 KTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICJwcm92aWRlciA9ICIp OworCWlmIChjb2xscHJvdmlkZXJbMF0gPT0gJ2MnKQorCQlhcHBlbmRTdHJp bmdMaXRlcmFsQUgocSwgImxpYmMiLCBmb3V0KTsKKwllbHNlIGlmIChjb2xs cHJvdmlkZXJbMF0gPT0gJ2knKQorCQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgo cSwgImljdSIsIGZvdXQpOworCWVsc2UKKwkJZXhpdF9ob3JyaWJseShOVUxM LAorCQkJCQkgICJ1bnJlY29nbml6ZWQgY29sbGF0aW9uIHByb3ZpZGVyOiAl c1xuIiwKKwkJCQkJICBjb2xscHJvdmlkZXIpOworCisJaWYgKHN0cmNtcChj b2xsY29sbGF0ZSwgY29sbGN0eXBlKSA9PSAwKQorCXsKKwkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocSwgIiwgbG9jYWxlID0gIik7CisJCWFwcGVuZFN0cmlu Z0xpdGVyYWxBSChxLCBjb2xsY29sbGF0ZSwgZm91dCk7CisJfQorCWVsc2UK Kwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsIGxjX2NvbGxhdGUg PSAiKTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHEsIGNvbGxjb2xsYXRl LCBmb3V0KTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiwgbGNfY3R5 cGUgPSAiKTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHEsIGNvbGxjdHlw ZSwgZm91dCk7CisJfQorCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIik7 XG4iKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKGxhYmVscSwgIkNPTExBVElP TiAlcyIsIGZtdElkKGNvbGxpbmZvLT5kb2JqLm5hbWUpKTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKaW5kZXggZTJlNGNiY2MwOC4uZWQyZWVlYTgxYiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKQEAgLTM3MDEsNyArMzcwMSw3IEBAIGxpc3RDb2xs YXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9v bCBzaG93U3lzdGVtKQogCVBRRXhwQnVmZmVyRGF0YSBidWY7CiAJUEdyZXN1 bHQgICAqcmVzOwogCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7 Ci0Jc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OworCXN0YXRpYyBj b25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CiAKIAlpZiAocHNldC5z dmVyc2lvbiA8IDkwMTAwKQogCXsKQEAgLTM3MjUsNiArMzcyNSwxMSBAQCBs aXN0Q29sbGF0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UsIGJvb2wgc2hvd1N5c3RlbSkKIAkJCQkJICBnZXR0ZXh0X25vb3AoIkNv bGxhdGUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIkN0eXBlIikpOwogCisJ aWYgKHBzZXQuc3ZlcnNpb24gPj0gMTAwMDAwKQorCQlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLAorCQkJCQkJICAiLFxuICAgICAgIENBU0UgYy5jb2xscHJv dmlkZXIgV0hFTiAnZCcgVEhFTiAnZGVmYXVsdCcgV0hFTiAnYycgVEhFTiAn bGliYycgV0hFTiAnaScgVEhFTiAnaWN1JyBFTkQgQVMgXCIlc1wiIiwKKwkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJQcm92aWRlciIpKTsKKwogCWlmICh2ZXJi b3NlKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLFxu ICAgICAgIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKGMub2lkLCAncGdf Y29sbGF0aW9uJykgQVMgXCIlc1wiIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbGxhdGlvbi5oCmluZGV4IDMwYzg3ZTAwNGUuLjhlZGQ4YWEw NjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0 aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24u aApAQCAtMzQsOSArMzQsMTMgQEAgQ0FUQUxPRyhwZ19jb2xsYXRpb24sMzQ1 NikKIAlOYW1lRGF0YQljb2xsbmFtZTsJCS8qIGNvbGxhdGlvbiBuYW1lICov CiAJT2lkCQkJY29sbG5hbWVzcGFjZTsJLyogT0lEIG9mIG5hbWVzcGFjZSBj b250YWluaW5nIGNvbGxhdGlvbiAqLwogCU9pZAkJCWNvbGxvd25lcjsJCS8q IG93bmVyIG9mIGNvbGxhdGlvbiAqLworCWNoYXIJCWNvbGxwcm92aWRlcjsJ Lyogc2VlIGNvbnN0YW50cyBiZWxvdyAqLwogCWludDMyCQljb2xsZW5jb2Rp bmc7CS8qIGVuY29kaW5nIGZvciB0aGlzIGNvbGxhdGlvbjsgLTEgPSAiYWxs IiAqLwogCU5hbWVEYXRhCWNvbGxjb2xsYXRlOwkvKiBMQ19DT0xMQVRFIHNl dHRpbmcgKi8KIAlOYW1lRGF0YQljb2xsY3R5cGU7CQkvKiBMQ19DVFlQRSBz ZXR0aW5nICovCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJs ZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KKwl0ZXh0CQljb2xsdmVy c2lvbjsJLyogcHJvdmlkZXItZGVwZW5kZW50IHZlcnNpb24gb2YgY29sbGF0 aW9uIGRhdGEgKi8KKyNlbmRpZgogfSBGb3JtRGF0YV9wZ19jb2xsYXRpb247 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTUwLDI3ICs1NCwzNCBAQCB0 eXBlZGVmIEZvcm1EYXRhX3BnX2NvbGxhdGlvbiAqRm9ybV9wZ19jb2xsYXRp b247CiAgKgkJY29tcGlsZXIgY29uc3RhbnRzIGZvciBwZ19jb2xsYXRpb24K ICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwotI2RlZmluZSBOYXR0c19wZ19j b2xsYXRpb24JCQkJNgorI2RlZmluZSBOYXR0c19wZ19jb2xsYXRpb24JCQkJ OAogI2RlZmluZSBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsbmFtZQkJMQogI2Rl ZmluZSBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsbmFtZXNwYWNlIDIKICNkZWZp bmUgQW51bV9wZ19jb2xsYXRpb25fY29sbG93bmVyCQkzCi0jZGVmaW5lIEFu dW1fcGdfY29sbGF0aW9uX2NvbGxlbmNvZGluZwk0Ci0jZGVmaW5lIEFudW1f cGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlCTUKLSNkZWZpbmUgQW51bV9wZ19j b2xsYXRpb25fY29sbGN0eXBlCQk2CisjZGVmaW5lIEFudW1fcGdfY29sbGF0 aW9uX2NvbGxwcm92aWRlcgk0CisjZGVmaW5lIEFudW1fcGdfY29sbGF0aW9u X2NvbGxlbmNvZGluZwk1CisjZGVmaW5lIEFudW1fcGdfY29sbGF0aW9uX2Nv bGxjb2xsYXRlCTYKKyNkZWZpbmUgQW51bV9wZ19jb2xsYXRpb25fY29sbGN0 eXBlCQk3CisjZGVmaW5lIEFudW1fcGdfY29sbGF0aW9uX2NvbGx2ZXJzaW9u CTgKIAogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJCWluaXRpYWwgY29udGVu dHMgb2YgcGdfY29sbGF0aW9uCiAgKiAtLS0tLS0tLS0tLS0tLS0tCiAgKi8K IAotREFUQShpbnNlcnQgT0lEID0gMTAwICggZGVmYXVsdAkJUEdOU1AgUEdV SUQgLTEgIiIgIiIgKSk7CitEQVRBKGluc2VydCBPSUQgPSAxMDAgKCBkZWZh dWx0CQlQR05TUCBQR1VJRCBkIC0xICIiICIiIDAgKSk7CiBERVNDUigiZGF0 YWJhc2UncyBkZWZhdWx0IGNvbGxhdGlvbiIpOwogI2RlZmluZSBERUZBVUxU X0NPTExBVElPTl9PSUQJMTAwCi1EQVRBKGluc2VydCBPSUQgPSA5NTAgKCBD CQkJUEdOU1AgUEdVSUQgLTEgIkMiICJDIiApKTsKK0RBVEEoaW5zZXJ0IE9J RCA9IDk1MCAoIEMJCQlQR05TUCBQR1VJRCBjIC0xICJDIiAiQyIgMCApKTsK IERFU0NSKCJzdGFuZGFyZCBDIGNvbGxhdGlvbiIpOwogI2RlZmluZSBDX0NP TExBVElPTl9PSUQJCQk5NTAKLURBVEEoaW5zZXJ0IE9JRCA9IDk1MSAoIFBP U0lYCQlQR05TUCBQR1VJRCAtMSAiUE9TSVgiICJQT1NJWCIgKSk7CitEQVRB KGluc2VydCBPSUQgPSA5NTEgKCBQT1NJWAkJUEdOU1AgUEdVSUQgYyAtMSAi UE9TSVgiICJQT1NJWCIgMCApKTsKIERFU0NSKCJzdGFuZGFyZCBQT1NJWCBj b2xsYXRpb24iKTsKICNkZWZpbmUgUE9TSVhfQ09MTEFUSU9OX09JRAkJOTUx CiAKKworI2RlZmluZSBDT0xMUFJPVklERVJfREVGQVVMVAknZCcKKyNkZWZp bmUgQ09MTFBST1ZJREVSX0lDVQkJJ2knCisjZGVmaW5lIENPTExQUk9WSURF Ul9MSUJDCQknYycKKwogI2VuZGlmICAgLyogUEdfQ09MTEFUSU9OX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9u X2ZuLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbl9mbi5o CmluZGV4IDQ4MmJhNzkyMGUuLjJhNTBlNTQxMjQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uX2ZuLmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb25fZm4uaApAQCAtMTYsNiAr MTYsNyBAQAogCiBleHRlcm4gT2lkIENvbGxhdGlvbkNyZWF0ZShjb25zdCBj aGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1lc3BhY2UsCiAJCQkJT2lkIGNv bGxvd25lciwKKwkJCQljaGFyIGNvbGxwcm92aWRlciwKIAkJCQlpbnQzMiBj b2xsZW5jb2RpbmcsCiAJCQkJY29uc3QgY2hhciAqY29sbGNvbGxhdGUsIGNv bnN0IGNoYXIgKmNvbGxjdHlwZSwKIAkJCQlib29sIGlmX25vdF9leGlzdHMp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29sbGF0aW9u Y21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29sbGF0aW9uY21kcy5o CmluZGV4IDNiMmZjYjgyNzEuLmRmNTYyM2NjYjYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmgKQEAgLTIwLDUgKzIw LDYgQEAKIAogZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lQ29sbGF0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFt ZXRlcnMsIGJvb2wgaWZfbm90X2V4aXN0cyk7CiBleHRlcm4gdm9pZCBJc1Ro ZXJlQ29sbGF0aW9uSW5OYW1lc3BhY2UoY29uc3QgY2hhciAqY29sbG5hbWUs IE9pZCBuc3BPaWQpOworZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJDb2xs YXRpb24oQWx0ZXJDb2xsYXRpb25TdG10ICpzdG10KTsKIAogI2VuZGlmICAg LyogQ09MTEFUSU9OQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9tYi9wZ193Y2hhci5oIGIvc3JjL2luY2x1ZGUvbWIvcGdfd2NoYXIuaApp bmRleCBjZWI1Njk1OTI0Li41ZTI3OWIzMTlhIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9tYi9wZ193Y2hhci5oCisrKyBiL3NyYy9pbmNsdWRlL21iL3Bn X3djaGFyLmgKQEAgLTMzMyw2ICszMzMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3Qg cGdfZW5jMmdldHRleHQKIGV4dGVybiBjb25zdCBwZ19lbmMyZ2V0dGV4dCBw Z19lbmMyZ2V0dGV4dF90YmxbXTsKIAogLyoKKyAqIEVuY29kaW5nIG5hbWVz IGZvciBJQ1UKKyAqLworZXh0ZXJuIGJvb2wgaXNfZW5jb2Rpbmdfc3VwcG9y dGVkX2J5X2ljdShpbnQgZW5jb2RpbmcpOworZXh0ZXJuIGNvbnN0IGNoYXIg KmdldF9lbmNvZGluZ19uYW1lX2Zvcl9pY3UoaW50IGVuY29kaW5nKTsKKwor LyoKICAqIHBnX3djaGFyIHN0dWZmCiAgKi8KIHR5cGVkZWYgaW50ICgqbWIy d2NoYXJfd2l0aF9sZW5fY29udmVydGVyKSAoY29uc3QgdW5zaWduZWQgY2hh ciAqZnJvbSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IDJiYzdhNWRm MTEuLjVkNmQwNTM4NWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAt NDIzLDYgKzQyMyw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVh dGVTdWJzY3JpcHRpb25TdG10LAogCVRfQWx0ZXJTdWJzY3JpcHRpb25TdG10 LAogCVRfRHJvcFN1YnNjcmlwdGlvblN0bXQsCisJVF9BbHRlckNvbGxhdGlv blN0bXQsCiAKIAkvKgogCSAqIFRBR1MgRk9SIFBBUlNFIFRSRUUgTk9ERVMg KHBhcnNlbm9kZXMuaCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCBhNDRkMjE3OGUxLi40YTNiYmRkODIyIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNzMzLDYgKzE3MzMsMTcgQEAg dHlwZWRlZiBzdHJ1Y3QgQWx0ZXJUYWJsZUNtZAkvKiBvbmUgc3ViY29tbWFu ZCBvZiBhbiBBTFRFUiBUQUJMRSAqLwogCiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqIEFsdGVyIENvbGxhdGlvbgorICogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBBbHRlckNvbGxhdGlv blN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKmNvbGxuYW1l OworfSBBbHRlckNvbGxhdGlvblN0bXQ7CisKKworLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICoJQWx0ZXIgRG9tYWluCiAgKgogICogVGhlIGZpZWxk cyBhcmUgdXNlZCBpbiBkaWZmZXJlbnQgd2F5cyBieSB0aGUgZGlmZmVyZW50 IHZhcmlhbnRzIG9mCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25m aWcuaC5pbiBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCmluZGV4IDVi Y2Q4YTExNjAuLjBjYTcwOGJiZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5o LmluCkBAIC02MDMsNiArNjAzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlv dSBoYXZlIHRoZSBleHRlcm5hbCBhcnJheSBgdHpuYW1lJy4gKi8KICN1bmRl ZiBIQVZFX1RaTkFNRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgYHVjb2xfc3RyY29sbFVURjgnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB VkVfVUNPTF9TVFJDT0xMVVRGOAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug aGF2ZSB0aGUgPHVjcmVkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhB VkVfVUNSRURfSAogCkBAIC04MTYsNiArODE5LDkgQEAKICAgICgtLWVuYWJs ZS1mbG9hdDgtYnl2YWwpICovCiAjdW5kZWYgVVNFX0ZMT0FUOF9CWVZBTAog CisvKiBEZWZpbmUgdG8gYnVpbGQgd2l0aCBJQ1Ugc3VwcG9ydC4gKC0td2l0 aC1pY3UpICovCisjdW5kZWYgVVNFX0lDVQorCiAvKiBEZWZpbmUgdG8gMSB0 byBidWlsZCB3aXRoIExEQVAgc3VwcG9ydC4gKC0td2l0aC1sZGFwKSAqLwog I3VuZGVmIFVTRV9MREFQCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3BnX2xvY2FsZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxl LmgKaW5kZXggY2I1MDllMmI2Yi4uZTVmMThmMTViMiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcGdfbG9jYWxlLmgKQEAgLTE1LDYgKzE1LDkgQEAKICNpZiBk ZWZpbmVkKExPQ0FMRV9UX0lOX1hMT0NBTEUpIHx8IGRlZmluZWQoV0NTVE9N QlNfTF9JTl9YTE9DQUxFKQogI2luY2x1ZGUgPHhsb2NhbGUuaD4KICNlbmRp ZgorI2lmZGVmIFVTRV9JQ1UKKyNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4K KyNlbmRpZgogCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAKQEAgLTYxLDE3 ICs2NCwzNiBAQCBleHRlcm4gdm9pZCBjYWNoZV9sb2NhbGVfdGltZSh2b2lk KTsKICAqIFdlIGRlZmluZSBvdXIgb3duIHdyYXBwZXIgYXJvdW5kIGxvY2Fs ZV90IHNvIHdlIGNhbiBrZWVwIHRoZSBzYW1lCiAgKiBmdW5jdGlvbiBzaWdu YXR1cmVzIGZvciBhbGwgYnVpbGRzLCB3aGlsZSBub3QgaGF2aW5nIHRvIGNy ZWF0ZSBhCiAgKiBmYWtlIHZlcnNpb24gb2YgdGhlIHN0YW5kYXJkIHR5cGUg bG9jYWxlX3QgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCi0gKiBUaGUgZmFr ZSB2ZXJzaW9uIG9mIHBnX2xvY2FsZV90IGNhbiBiZSBjaGVja2VkIGZvciB0 cnV0aDsgdGhhdCdzCi0gKiBhYm91dCBhbGwgaXQgd2lsbCBiZSBuZWVkZWQg Zm9yLgorICogcGdfbG9jYWxlX3QgaXMgb2NjYXNpb25hbGx5IGNoZWNrZWQg Zm9yIHRydXRoLCBzbyBtYWtlIGl0IGEgcG9pbnRlci4KICAqLworc3RydWN0 IHBnX2xvY2FsZV90Cit7CisJY2hhcglwcm92aWRlcjsKKwl1bmlvbgorCXsK ICNpZmRlZiBIQVZFX0xPQ0FMRV9UCi10eXBlZGVmIGxvY2FsZV90IHBnX2xv Y2FsZV90OwotI2Vsc2UKLXR5cGVkZWYgaW50IHBnX2xvY2FsZV90OworCQls b2NhbGVfdCBsdDsKKyNlbmRpZgorI2lmZGVmIFVTRV9JQ1UKKwkJc3RydWN0 IHsKKwkJCWNvbnN0IGNoYXIgKmxvY2FsZTsKKwkJCVVDb2xsYXRvciAqdWNv bDsKKwkJfSBpY3U7CiAjZW5kaWYKKwl9IGluZm87Cit9OworCit0eXBlZGVm IHN0cnVjdCBwZ19sb2NhbGVfdCAqcGdfbG9jYWxlX3Q7CiAKIGV4dGVybiBw Z19sb2NhbGVfdCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNv bGxpZCk7CiAKK2V4dGVybiBjaGFyICpnZXRfc3lzdGVtX2NvbGxhdGlvbl92 ZXJzaW9uKGNoYXIgY29sbHByb3ZpZGVyLCBjb25zdCBjaGFyICpjb2xsY29s bGF0ZSk7CisKKyNpZmRlZiBVU0VfSUNVCitleHRlcm4gaW50MzJfdCBpY3Vf dG9fdWNoYXIoVUNoYXIgKipidWZmX3VjaGFyLCBjb25zdCBjaGFyICpidWZm LCBzaXplX3QgbmJ5dGVzKTsKK2V4dGVybiBpbnQzMl90IGljdV9mcm9tX3Vj aGFyKGNoYXIgKipyZXN1bHQsIFVDaGFyICpidWZmX3VjaGFyLCBpbnQzMl90 IGxlbl91Y2hhcik7CisjZW5kaWYKKwogLyogVGhlc2UgZnVuY3Rpb25zIGNv bnZlcnQgZnJvbS90byBsaWJjJ3Mgd2NoYXJfdCwgKm5vdCogcGdfd2NoYXJf dCAqLwogI2lmZGVmIFVTRV9XSURFX1VQUEVSX0xPV0VSCiBleHRlcm4gc2l6 ZV90IHdjaGFyMmNoYXIoY2hhciAqdG8sIGNvbnN0IHdjaGFyX3QgKmZyb20s IHNpemVfdCB0b2xlbiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv R05VbWFrZWZpbGUgYi9zcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlCmlu ZGV4IGI5MjNlYTE0MjAuLmE3NDdmYWNiOWEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9HTlVtYWtlZmlsZQpAQCAtMTI1LDYgKzEyNSw5IEBAIHRhYmxlc3BhY2Ut c2V0dXA6CiAjIwogCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0uICQoRVhU UkFfUkVHUkVTU19PUFRTKQoraWZlcSAoJCh3aXRoX2ljdSkseWVzKQorb3Zl cnJpZGUgRVhUUkFfVEVTVFMgOj0gY29sbGF0ZS5pY3UgJChFWFRSQV9URVNU UykKK2VuZGlmCiAKIGNoZWNrOiBhbGwgdGFibGVzcGFjZS1zZXR1cAogCSQo cGdfcmVncmVzc19jaGVjaykgJChSRUdSRVNTX09QVFMpIC0tc2NoZWR1bGU9 JChzcmNkaXIpL3BhcmFsbGVsX3NjaGVkdWxlICQoTUFYQ09OTk9QVCkgJChF WFRSQV9URVNUUykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29sbGF0ZS5saW51eC51dGY4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3Uub3V0CnNpbWlsYXJpdHkgaW5kZXgg ODAlCmNvcHkgZnJvbSBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxh dGUubGludXgudXRmOC5vdXQKY29weSB0byBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvbGxhdGUuaWN1Lm91dAppbmRleCAyOTNlNzg2NDFlLi4wOTQz ZTcwNmJiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvbGxhdGUubGludXgudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb2xsYXRlLmljdS5vdXQKQEAgLTEsNTQgKzEsNTQgQEAK IC8qCi0gKiBUaGlzIHRlc3QgaXMgZm9yIExpbnV4L2dsaWJjIHN5c3RlbXMg YW5kIGFzc3VtZXMgdGhhdCBhIGZ1bGwgc2V0IG9mCi0gKiBsb2NhbGVzIGlz IGluc3RhbGxlZC4gIEl0IG11c3QgYmUgcnVuIGluIGEgZGF0YWJhc2Ugd2l0 aCBVVEYtOCBlbmNvZGluZywKLSAqIGJlY2F1c2Ugb3RoZXIgZW5jb2Rpbmdz IGRvbid0IHN1cHBvcnQgYWxsIHRoZSBjaGFyYWN0ZXJzIHVzZWQuCisgKiBU aGlzIHRlc3QgaXMgZm9yIElDVSBjb2xsYXRpb25zLgogICovCiBTRVQgY2xp ZW50X2VuY29kaW5nIFRPIFVURjg7CitDUkVBVEUgU0NIRU1BIGNvbGxhdGVf dGVzdHM7CitTRVQgc2VhcmNoX3BhdGggPSBjb2xsYXRlX3Rlc3RzOwogQ1JF QVRFIFRBQkxFIGNvbGxhdGVfdGVzdDEgKAogICAgIGEgaW50LAotICAgIGIg dGV4dCBDT0xMQVRFICJlbl9VUyIgTk9UIE5VTEwKKyAgICBiIHRleHQgQ09M TEFURSAiZW4laWN1IiBOT1QgTlVMTAogKTsKIFxkIGNvbGxhdGVfdGVzdDEK LSAgICAgICAgICAgVGFibGUgInB1YmxpYy5jb2xsYXRlX3Rlc3QxIgorICAg ICAgICBUYWJsZSAiY29sbGF0ZV90ZXN0cy5jb2xsYXRlX3Rlc3QxIgogIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCiAtLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0KICBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKLSBiICAgICAgfCB0ZXh0ICAgIHwgZW5fVVMgICAgIHwg bm90IG51bGwgfCAKKyBiICAgICAgfCB0ZXh0ICAgIHwgZW4laWN1ICAgIHwg bm90IG51bGwgfCAKIAogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdF9mYWls ICgKICAgICBhIGludCwKLSAgICBiIHRleHQgQ09MTEFURSAiamFfSlAuZXVj anAiCisgICAgYiB0ZXh0IENPTExBVEUgImphX0pQLmV1Y2pwJWljdSIKICk7 Ci1FUlJPUjogIGNvbGxhdGlvbiAiamFfSlAuZXVjanAiIGZvciBlbmNvZGlu ZyAiVVRGOCIgZG9lcyBub3QgZXhpc3QKLUxJTkUgMzogICAgIGIgdGV4dCBD T0xMQVRFICJqYV9KUC5ldWNqcCIKK0VSUk9SOiAgY29sbGF0aW9uICJqYV9K UC5ldWNqcCVpY3UiIGZvciBlbmNvZGluZyAiVVRGOCIgZG9lcyBub3QgZXhp c3QKK0xJTkUgMzogICAgIGIgdGV4dCBDT0xMQVRFICJqYV9KUC5ldWNqcCVp Y3UiCiAgICAgICAgICAgICAgICAgICAgXgogQ1JFQVRFIFRBQkxFIGNvbGxh dGVfdGVzdF9mYWlsICgKICAgICBhIGludCwKLSAgICBiIHRleHQgQ09MTEFU RSAiZm9vIgorICAgIGIgdGV4dCBDT0xMQVRFICJmb28laWN1IgogKTsKLUVS Uk9SOiAgY29sbGF0aW9uICJmb28iIGZvciBlbmNvZGluZyAiVVRGOCIgZG9l cyBub3QgZXhpc3QKLUxJTkUgMzogICAgIGIgdGV4dCBDT0xMQVRFICJmb28i CitFUlJPUjogIGNvbGxhdGlvbiAiZm9vJWljdSIgZm9yIGVuY29kaW5nICJV VEY4IiBkb2VzIG5vdCBleGlzdAorTElORSAzOiAgICAgYiB0ZXh0IENPTExB VEUgImZvbyVpY3UiCiAgICAgICAgICAgICAgICAgICAgXgogQ1JFQVRFIFRB QkxFIGNvbGxhdGVfdGVzdF9mYWlsICgKLSAgICBhIGludCBDT0xMQVRFICJl bl9VUyIsCisgICAgYSBpbnQgQ09MTEFURSAiZW4laWN1IiwKICAgICBiIHRl eHQKICk7CiBFUlJPUjogIGNvbGxhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQg YnkgdHlwZSBpbnRlZ2VyCi1MSU5FIDI6ICAgICBhIGludCBDT0xMQVRFICJl bl9VUyIsCitMSU5FIDI6ICAgICBhIGludCBDT0xMQVRFICJlbiVpY3UiLAog ICAgICAgICAgICAgICAgICAgXgogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVz dF9saWtlICgKICAgICBMSUtFIGNvbGxhdGVfdGVzdDEKICk7CiBcZCBjb2xs YXRlX3Rlc3RfbGlrZQotICAgICAgICAgVGFibGUgInB1YmxpYy5jb2xsYXRl X3Rlc3RfbGlrZSIKKyAgICAgIFRhYmxlICJjb2xsYXRlX3Rlc3RzLmNvbGxh dGVfdGVzdF9saWtlIgogIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgCiAtLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KICBhICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKLSBiICAgICAgfCB0ZXh0 ICAgIHwgZW5fVVMgICAgIHwgbm90IG51bGwgfCAKKyBiICAgICAgfCB0ZXh0 ICAgIHwgZW4laWN1ICAgIHwgbm90IG51bGwgfCAKIAogQ1JFQVRFIFRBQkxF IGNvbGxhdGVfdGVzdDIgKAogICAgIGEgaW50LAotICAgIGIgdGV4dCBDT0xM QVRFICJzdl9TRSIKKyAgICBiIHRleHQgQ09MTEFURSAic3YlaWN1IgogKTsK IENSRUFURSBUQUJMRSBjb2xsYXRlX3Rlc3QzICgKICAgICBhIGludCwKQEAg LTEwNiwxMiArMTA2LDEyIEBAIFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0 MSBXSEVSRSBiIENPTExBVEUgIkMiID49ICdiYmMnIENPTExBVEUgIkMiOwog IDMgfCBiYmMKICgyIHJvd3MpCiAKLVNFTEVDVCAqIEZST00gY29sbGF0ZV90 ZXN0MSBXSEVSRSBiIENPTExBVEUgIkMiID49ICdiYmMnIENPTExBVEUgImVu X1VTIjsKLUVSUk9SOiAgY29sbGF0aW9uIG1pc21hdGNoIGJldHdlZW4gZXhw bGljaXQgY29sbGF0aW9ucyAiQyIgYW5kICJlbl9VUyIKK1NFTEVDVCAqIEZS T00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIENPTExBVEUgIkMiID49ICdiYmMn IENPTExBVEUgImVuJWljdSI7CitFUlJPUjogIGNvbGxhdGlvbiBtaXNtYXRj aCBiZXR3ZWVuIGV4cGxpY2l0IGNvbGxhdGlvbnMgIkMiIGFuZCAiZW4laWN1 IgogTElORSAxOiAuLi4qIEZST00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIENP TExBVEUgIkMiID49ICdiYmMnIENPTExBVEUgImUuLi4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCi1DUkVBVEUgRE9NQUlOIHRlc3Rkb21haW5fc3YgQVMgdGV4dCBD T0xMQVRFICJzdl9TRSI7Ci1DUkVBVEUgRE9NQUlOIHRlc3Rkb21haW5faSBB UyBpbnQgQ09MTEFURSAic3ZfU0UiOyAtLSBmYWlscworQ1JFQVRFIERPTUFJ TiB0ZXN0ZG9tYWluX3N2IEFTIHRleHQgQ09MTEFURSAic3YlaWN1IjsKK0NS RUFURSBET01BSU4gdGVzdGRvbWFpbl9pIEFTIGludCBDT0xMQVRFICJzdiVp Y3UiOyAtLSBmYWlscwogRVJST1I6ICBjb2xsYXRpb25zIGFyZSBub3Qgc3Vw cG9ydGVkIGJ5IHR5cGUgaW50ZWdlcgogQ1JFQVRFIFRBQkxFIGNvbGxhdGVf dGVzdDQgKAogICAgIGEgaW50LApAQCAtMTI5LDcgKzEyOSw3IEBAIFNFTEVD VCBhLCBiIEZST00gY29sbGF0ZV90ZXN0NCBPUkRFUiBCWSBiOwogCiBDUkVB VEUgVEFCTEUgY29sbGF0ZV90ZXN0NSAoCiAgICAgYSBpbnQsCi0gICAgYiB0 ZXN0ZG9tYWluX3N2IENPTExBVEUgImVuX1VTIgorICAgIGIgdGVzdGRvbWFp bl9zdiBDT0xMQVRFICJlbiVpY3UiCiApOwogSU5TRVJUIElOVE8gY29sbGF0 ZV90ZXN0NSBTRUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVzdDE7CiBTRUxFQ1Qg YSwgYiBGUk9NIGNvbGxhdGVfdGVzdDUgT1JERVIgQlkgYjsKQEAgLTIwNiwx MyArMjA2LDEzIEBAIFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MyBPUkRF UiBCWSBiOwogKDQgcm93cykKIAogLS0gY29uc3RhbnQgZXhwcmVzc2lvbiBm b2xkaW5nCi1TRUxFQ1QgJ2JiYycgQ09MTEFURSAiZW5fVVMiID4gJ8OkYmMn IENPTExBVEUgImVuX1VTIiBBUyAidHJ1ZSI7CitTRUxFQ1QgJ2JiYycgQ09M TEFURSAiZW4laWN1IiA+ICfDpGJjJyBDT0xMQVRFICJlbiVpY3UiIEFTICJ0 cnVlIjsKICB0cnVlIAogLS0tLS0tCiAgdAogKDEgcm93KQogCi1TRUxFQ1Qg J2JiYycgQ09MTEFURSAic3ZfU0UiID4gJ8OkYmMnIENPTExBVEUgInN2X1NF IiBBUyAiZmFsc2UiOworU0VMRUNUICdiYmMnIENPTExBVEUgInN2JWljdSIg PiAnw6RiYycgQ09MTEFURSAic3YlaWN1IiBBUyAiZmFsc2UiOwogIGZhbHNl IAogLS0tLS0tLQogIGYKQEAgLTIyMSw4ICsyMjEsOCBAQCBTRUxFQ1QgJ2Ji YycgQ09MTEFURSAic3ZfU0UiID4gJ8OkYmMnIENPTExBVEUgInN2X1NFIiBB UyAiZmFsc2UiOwogLS0gdXBwZXIvbG93ZXIKIENSRUFURSBUQUJMRSBjb2xs YXRlX3Rlc3QxMCAoCiAgICAgYSBpbnQsCi0gICAgeCB0ZXh0IENPTExBVEUg ImVuX1VTIiwKLSAgICB5IHRleHQgQ09MTEFURSAidHJfVFIiCisgICAgeCB0 ZXh0IENPTExBVEUgImVuJWljdSIsCisgICAgeSB0ZXh0IENPTExBVEUgInRy JWljdSIKICk7CiBJTlNFUlQgSU5UTyBjb2xsYXRlX3Rlc3QxMCBWQUxVRVMg KDEsICdoaWonLCAnaGlqJyksICgyLCAnSElKJywgJ0hJSicpOwogU0VMRUNU IGEsIGxvd2VyKHgpLCBsb3dlcih5KSwgdXBwZXIoeCksIHVwcGVyKHkpLCBp bml0Y2FwKHgpLCBpbml0Y2FwKHkpIEZST00gY29sbGF0ZV90ZXN0MTA7CkBA IC0yOTAsMjUgKzI5MCwyNSBAQCBTRUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVz dDEgV0hFUkUgYiBJTElLRSAnJWJjJSc7CiAgNCB8IEFCQwogKDQgcm93cykK IAotU0VMRUNUICdUw7xya2l5ZScgQ09MTEFURSAiZW5fVVMiIElMSUtFICcl S0klJyBBUyAidHJ1ZSI7CitTRUxFQ1QgJ1TDvHJraXllJyBDT0xMQVRFICJl biVpY3UiIElMSUtFICclS0klJyBBUyAidHJ1ZSI7CiAgdHJ1ZSAKIC0tLS0t LQogIHQKICgxIHJvdykKIAotU0VMRUNUICdUw7xya2l5ZScgQ09MTEFURSAi dHJfVFIiIElMSUtFICclS0klJyBBUyAiZmFsc2UiOworU0VMRUNUICdUw7xy a2l5ZScgQ09MTEFURSAidHIlaWN1IiBJTElLRSAnJUtJJScgQVMgImZhbHNl IjsKICBmYWxzZSAKIC0tLS0tLS0KICBmCiAoMSByb3cpCiAKLVNFTEVDVCAn YsSxdCcgSUxJS0UgJ0JJVCcgQ09MTEFURSAiZW5fVVMiIEFTICJmYWxzZSI7 CitTRUxFQ1QgJ2LEsXQnIElMSUtFICdCSVQnIENPTExBVEUgImVuJWljdSIg QVMgImZhbHNlIjsKICBmYWxzZSAKIC0tLS0tLS0KICBmCiAoMSByb3cpCiAK LVNFTEVDVCAnYsSxdCcgSUxJS0UgJ0JJVCcgQ09MTEFURSAidHJfVFIiIEFT ICJ0cnVlIjsKK1NFTEVDVCAnYsSxdCcgSUxJS0UgJ0JJVCcgQ09MTEFURSAi dHIlaWN1IiBBUyAidHJ1ZSI7CiAgdHJ1ZSAKIC0tLS0tLQogIHQKQEAgLTM2 NCwzMCArMzY0LDYyIEBAIFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MSBX SEVSRSBiIH4qICdiYyc7CiAgNCB8IEFCQwogKDQgcm93cykKIAotU0VMRUNU ICdUw7xya2l5ZScgQ09MTEFURSAiZW5fVVMiIH4qICdLSScgQVMgInRydWUi OworQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDYgKAorICAgIGEgaW50LAor ICAgIGIgdGV4dCBDT0xMQVRFICJlbiVpY3UiCispOworSU5TRVJUIElOVE8g Y29sbGF0ZV90ZXN0NiBWQUxVRVMgKDEsICdhYmMnKSwgKDIsICdBQkMnKSwg KDMsICcxMjMnKSwgKDQsICdhYjEnKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICg1LCAnYTEhJyksICg2LCAnYSBjJyksICg3LCAnIS47 JyksICg4LCAnICAgJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoOSwgJ8OkYsOnJyksICgxMCwgJ8OEQsOHJyk7CitTRUxFQ1QgYiwK KyAgICAgICBiIH4gJ15bWzphbHBoYTpdXSskJyBBUyBpc19hbHBoYSwKKyAg ICAgICBiIH4gJ15bWzp1cHBlcjpdXSskJyBBUyBpc191cHBlciwKKyAgICAg ICBiIH4gJ15bWzpsb3dlcjpdXSskJyBBUyBpc19sb3dlciwKKyAgICAgICBi IH4gJ15bWzpkaWdpdDpdXSskJyBBUyBpc19kaWdpdCwKKyAgICAgICBiIH4g J15bWzphbG51bTpdXSskJyBBUyBpc19hbG51bSwKKyAgICAgICBiIH4gJ15b WzpncmFwaDpdXSskJyBBUyBpc19ncmFwaCwKKyAgICAgICBiIH4gJ15bWzpw cmludDpdXSskJyBBUyBpc19wcmludCwKKyAgICAgICBiIH4gJ15bWzpwdW5j dDpdXSskJyBBUyBpc19wdW5jdCwKKyAgICAgICBiIH4gJ15bWzpzcGFjZTpd XSskJyBBUyBpc19zcGFjZQorRlJPTSBjb2xsYXRlX3Rlc3Q2OworICBiICB8 IGlzX2FscGhhIHwgaXNfdXBwZXIgfCBpc19sb3dlciB8IGlzX2RpZ2l0IHwg aXNfYWxudW0gfCBpc19ncmFwaCB8IGlzX3ByaW50IHwgaXNfcHVuY3QgfCBp c19zcGFjZSAKKy0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgYWJjIHwgdCAgICAgICAgfCBm ICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICB8IHQg ICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYKKyBBQkMgfCB0ICAg ICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZgorIDEy MyB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAg IHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAg fCBmCisgYWIxIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwg ZiAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgfCBm ICAgICAgICB8IGYKKyBhMSEgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAg ICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCB0ICAg ICAgICB8IGYgICAgICAgIHwgZgorIGEgYyB8IGYgICAgICAgIHwgZiAgICAg ICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAg ICB8IHQgICAgICAgIHwgZiAgICAgICAgfCBmCisgIS47IHwgZiAgICAgICAg fCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8 IHQgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IGYKKyAgICAgfCBm ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYg ICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwgdAor IMOkYsOnIHwgdCAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgIHwgZiAg ICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgfCBmICAg ICAgICB8IGYKKyDDhELDhyB8IHQgICAgICAgIHwgdCAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAg ICAgIHwgZiAgICAgICAgfCBmCisoMTAgcm93cykKKworU0VMRUNUICdUw7xy a2l5ZScgQ09MTEFURSAiZW4laWN1IiB+KiAnS0knIEFTICJ0cnVlIjsKKyB0 cnVlIAorLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgJ1TDvHJraXll JyBDT0xMQVRFICJ0ciVpY3UiIH4qICdLSScgQVMgInRydWUiOyAgLS0gdHJ1 ZSB3aXRoIElDVQogIHRydWUgCiAtLS0tLS0KICB0CiAoMSByb3cpCiAKLVNF TEVDVCAnVMO8cmtpeWUnIENPTExBVEUgInRyX1RSIiB+KiAnS0knIEFTICJm YWxzZSI7CitTRUxFQ1QgJ2LEsXQnIH4qICdCSVQnIENPTExBVEUgImVuJWlj dSIgQVMgImZhbHNlIjsKICBmYWxzZSAKIC0tLS0tLS0KICBmCiAoMSByb3cp CiAKLVNFTEVDVCAnYsSxdCcgfiogJ0JJVCcgQ09MTEFURSAiZW5fVVMiIEFT ICJmYWxzZSI7CitTRUxFQ1QgJ2LEsXQnIH4qICdCSVQnIENPTExBVEUgInRy JWljdSIgQVMgImZhbHNlIjsgIC0tIGZhbHNlIHdpdGggSUNVCiAgZmFsc2Ug CiAtLS0tLS0tCiAgZgogKDEgcm93KQogCi1TRUxFQ1QgJ2LEsXQnIH4qICdC SVQnIENPTExBVEUgInRyX1RSIiBBUyAidHJ1ZSI7Ci0gdHJ1ZSAKLS0tLS0t LQotIHQKLSgxIHJvdykKLQogLS0gVGhlIGZvbGxvd2luZyBhY3R1YWxseSBl eGVyY2lzZXMgdGhlIHNlbGVjdGl2aXR5IGVzdGltYXRpb24gZm9yIH4qLgog U0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lIH4q ICdeYWJjJzsKICByZWxuYW1lIApAQCAtNDAyLDcgKzQzNCw3IEBAIFNFTEVD VCB0b19jaGFyKGRhdGUgJzIwMTAtMDQtMDEnLCAnREQgVE1NT04gWVlZWScp OwogIDAxIE5JUyAyMDEwCiAoMSByb3cpCiAKLVNFTEVDVCB0b19jaGFyKGRh dGUgJzIwMTAtMDQtMDEnLCAnREQgVE1NT04gWVlZWScgQ09MTEFURSAidHJf VFIiKTsKK1NFTEVDVCB0b19jaGFyKGRhdGUgJzIwMTAtMDQtMDEnLCAnREQg VE1NT04gWVlZWScgQ09MTEFURSAidHIlaWN1Iik7CiAgICB0b19jaGFyICAg CiAtLS0tLS0tLS0tLS0tCiAgMDEgTsSwUyAyMDEwCkBAIC02OTMsNyArNzI1 LDcgQEAgU0VMRUNUIGEsIGIgRlJPTSBjb2xsYXRlX3Rlc3QxIFVOSU9OIEFM TCBTRUxFQ1QgYSwgYiBGUk9NIGNvbGxhdGVfdGVzdDM7IC0tIG9rCiAoOCBy b3dzKQogCiBTRUxFQ1QgYSwgYiBGUk9NIGNvbGxhdGVfdGVzdDEgVU5JT04g U0VMRUNUIGEsIGIgRlJPTSBjb2xsYXRlX3Rlc3QzIE9SREVSIEJZIDI7IC0t IGZhaWwKLUVSUk9SOiAgY29sbGF0aW9uIG1pc21hdGNoIGJldHdlZW4gaW1w bGljaXQgY29sbGF0aW9ucyAiZW5fVVMiIGFuZCAiQyIKK0VSUk9SOiAgY29s bGF0aW9uIG1pc21hdGNoIGJldHdlZW4gaW1wbGljaXQgY29sbGF0aW9ucyAi ZW4laWN1IiBhbmQgIkMiCiBMSU5FIDE6IFNFTEVDVCBhLCBiIEZST00gY29s bGF0ZV90ZXN0MSBVTklPTiBTRUxFQ1QgYSwgYiBGUk9NIGNvbGxhdC4uLgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KIEhJTlQ6ICBZb3UgY2FuIGNob29zZSB0aGUgY29sbGF0 aW9uIGJ5IGFwcGx5aW5nIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBvbmUgb3Ig Ym90aCBleHByZXNzaW9ucy4KQEAgLTcwNywxMiArNzM5LDEyIEBAIFNFTEVD VCBhLCBiIENPTExBVEUgIkMiIEZST00gY29sbGF0ZV90ZXN0MSBVTklPTiBT RUxFQ1QgYSwgYiBGUk9NIGNvbGxhdGVfdGVzdDMKICg0IHJvd3MpCiAKIFNF TEVDVCBhLCBiIEZST00gY29sbGF0ZV90ZXN0MSBJTlRFUlNFQ1QgU0VMRUNU IGEsIGIgRlJPTSBjb2xsYXRlX3Rlc3QzIE9SREVSIEJZIDI7IC0tIGZhaWwK LUVSUk9SOiAgY29sbGF0aW9uIG1pc21hdGNoIGJldHdlZW4gaW1wbGljaXQg Y29sbGF0aW9ucyAiZW5fVVMiIGFuZCAiQyIKK0VSUk9SOiAgY29sbGF0aW9u IG1pc21hdGNoIGJldHdlZW4gaW1wbGljaXQgY29sbGF0aW9ucyAiZW4laWN1 IiBhbmQgIkMiCiBMSU5FIDE6IC4uLkVMRUNUIGEsIGIgRlJPTSBjb2xsYXRl X3Rlc3QxIElOVEVSU0VDVCBTRUxFQ1QgYSwgYiBGUk9NIGNvbC4uLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KIEhJTlQ6ICBZb3UgY2FuIGNob29zZSB0aGUgY29s bGF0aW9uIGJ5IGFwcGx5aW5nIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBvbmUg b3IgYm90aCBleHByZXNzaW9ucy4KIFNFTEVDVCBhLCBiIEZST00gY29sbGF0 ZV90ZXN0MSBFWENFUFQgU0VMRUNUIGEsIGIgRlJPTSBjb2xsYXRlX3Rlc3Qz IE9SREVSIEJZIDI7IC0tIGZhaWwKLUVSUk9SOiAgY29sbGF0aW9uIG1pc21h dGNoIGJldHdlZW4gaW1wbGljaXQgY29sbGF0aW9ucyAiZW5fVVMiIGFuZCAi QyIKK0VSUk9SOiAgY29sbGF0aW9uIG1pc21hdGNoIGJldHdlZW4gaW1wbGlj aXQgY29sbGF0aW9ucyAiZW4laWN1IiBhbmQgIkMiCiBMSU5FIDE6IFNFTEVD VCBhLCBiIEZST00gY29sbGF0ZV90ZXN0MSBFWENFUFQgU0VMRUNUIGEsIGIg RlJPTSBjb2xsYS4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBISU5UOiAgWW91IGNhbiBj aG9vc2UgdGhlIGNvbGxhdGlvbiBieSBhcHBseWluZyB0aGUgQ09MTEFURSBj bGF1c2UgdG8gb25lIG9yIGJvdGggZXhwcmVzc2lvbnMuCkBAIC03MzEsMTgg Kzc2MywxOCBAQCBzZWxlY3QgeCB8fCB5IGZyb20gY29sbGF0ZV90ZXN0MTA7 IC0tIG9rLCBiZWNhdXNlIHx8IGlzIG5vdCBjb2xsYXRpb24gYXdhcmUKICgy IHJvd3MpCiAKIHNlbGVjdCB4LCB5IGZyb20gY29sbGF0ZV90ZXN0MTAgb3Jk ZXIgYnkgeCB8fCB5OyAtLSBub3Qgc28gb2sKLUVSUk9SOiAgY29sbGF0aW9u IG1pc21hdGNoIGJldHdlZW4gaW1wbGljaXQgY29sbGF0aW9ucyAiZW5fVVMi IGFuZCAidHJfVFIiCitFUlJPUjogIGNvbGxhdGlvbiBtaXNtYXRjaCBiZXR3 ZWVuIGltcGxpY2l0IGNvbGxhdGlvbnMgImVuJWljdSIgYW5kICJ0ciVpY3Ui CiBMSU5FIDE6IHNlbGVjdCB4LCB5IGZyb20gY29sbGF0ZV90ZXN0MTAgb3Jk ZXIgYnkgeCB8fCB5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgogSElOVDogIFlvdSBjYW4gY2hv b3NlIHRoZSBjb2xsYXRpb24gYnkgYXBwbHlpbmcgdGhlIENPTExBVEUgY2xh dXNlIHRvIG9uZSBvciBib3RoIGV4cHJlc3Npb25zLgogLS0gY29sbGF0aW9u IG1pc21hdGNoIGJldHdlZW4gcmVjdXJzaXZlIGFuZCBub24tcmVjdXJzaXZl IHRlcm0KIFdJVEggUkVDVVJTSVZFIGZvbyh4KSBBUwotICAgKFNFTEVDVCB4 IEZST00gKFZBTFVFUygnYScgQ09MTEFURSAiZW5fVVMiKSwoJ2InKSkgdCh4 KQorICAgKFNFTEVDVCB4IEZST00gKFZBTFVFUygnYScgQ09MTEFURSAiZW4l aWN1IiksKCdiJykpIHQoeCkKICAgIFVOSU9OIEFMTAotICAgU0VMRUNUICh4 IHx8ICdjJykgQ09MTEFURSAiZGVfREUiIEZST00gZm9vIFdIRVJFIGxlbmd0 aCh4KSA8IDEwKQorICAgU0VMRUNUICh4IHx8ICdjJykgQ09MTEFURSAiZGUl aWN1IiBGUk9NIGZvbyBXSEVSRSBsZW5ndGgoeCkgPCAxMCkKIFNFTEVDVCAq IEZST00gZm9vOwotRVJST1I6ICByZWN1cnNpdmUgcXVlcnkgImZvbyIgY29s dW1uIDEgaGFzIGNvbGxhdGlvbiAiZW5fVVMiIGluIG5vbi1yZWN1cnNpdmUg dGVybSBidXQgY29sbGF0aW9uICJkZV9ERSIgb3ZlcmFsbAotTElORSAyOiAg ICAoU0VMRUNUIHggRlJPTSAoVkFMVUVTKCdhJyBDT0xMQVRFICJlbl9VUyIp LCgnYicpKSB0KHgpCitFUlJPUjogIHJlY3Vyc2l2ZSBxdWVyeSAiZm9vIiBj b2x1bW4gMSBoYXMgY29sbGF0aW9uICJlbiVpY3UiIGluIG5vbi1yZWN1cnNp dmUgdGVybSBidXQgY29sbGF0aW9uICJkZSVpY3UiIG92ZXJhbGwKK0xJTkUg MjogICAgKFNFTEVDVCB4IEZST00gKFZBTFVFUygnYScgQ09MTEFURSAiZW4l aWN1IiksKCdiJykpIHQoeCkKICAgICAgICAgICAgICAgICAgICBeCiBISU5U OiAgVXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNvbGxhdGlv biBvZiB0aGUgbm9uLXJlY3Vyc2l2ZSB0ZXJtLgogLS0gY2FzdGluZwpAQCAt ODQzLDcgKzg3NSw3IEBAIGJlZ2luCiAgIHJldHVybiB4eCA8IHl5OwogZW5k CiAkJDsKLVNFTEVDVCBteWx0MignYScsICdCJyBjb2xsYXRlICJlbl9VUyIp IGFzIHQsIG15bHQyKCdhJywgJ0InIGNvbGxhdGUgIkMiKSBhcyBmOworU0VM RUNUIG15bHQyKCdhJywgJ0InIGNvbGxhdGUgImVuJWljdSIpIGFzIHQsIG15 bHQyKCdhJywgJ0InIGNvbGxhdGUgIkMiKSBhcyBmOwogIHQgfCBmIAogLS0t Ky0tLQogIHQgfCBmCkBAIC05NTcsMjkgKzk4OSwyMyBAQCBDUkVBVEUgU0NI RU1BIHRlc3Rfc2NoZW1hOwogLS0gV2UgbmVlZCB0byBkbyB0aGlzIHRoaXMg d2F5IHRvIGNvcGUgd2l0aCB2YXJ5aW5nIG5hbWVzIGZvciBlbmNvZGluZ3M6 CiBkbyAkJAogQkVHSU4KLSAgRVhFQ1VURSAnQ1JFQVRFIENPTExBVElPTiB0 ZXN0MCAobG9jYWxlID0gJyB8fAorICBFWEVDVVRFICdDUkVBVEUgQ09MTEFU SU9OIHRlc3QwIChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJyB8fAogICAg ICAgICAgIHF1b3RlX2xpdGVyYWwoY3VycmVudF9zZXR0aW5nKCdsY19jb2xs YXRlJykpIHx8ICcpOyc7CiBFTkQKICQkOwogQ1JFQVRFIENPTExBVElPTiB0 ZXN0MCBGUk9NICJDIjsgLS0gZmFpbCwgZHVwbGljYXRlIG5hbWUKLUVSUk9S OiAgY29sbGF0aW9uICJ0ZXN0MCIgZm9yIGVuY29kaW5nICJVVEY4IiBhbHJl YWR5IGV4aXN0cwotQ1JFQVRFIENPTExBVElPTiBJRiBOT1QgRVhJU1RTIHRl c3QwIEZST00gIkMiOyAtLSBvaywgc2tpcHBlZAotTk9USUNFOiAgY29sbGF0 aW9uICJ0ZXN0MCIgZm9yIGVuY29kaW5nICJVVEY4IiBhbHJlYWR5IGV4aXN0 cywgc2tpcHBpbmcKLUNSRUFURSBDT0xMQVRJT04gSUYgTk9UIEVYSVNUUyB0 ZXN0MCAobG9jYWxlID0gJ2ZvbycpOyAtLSBvaywgc2tpcHBlZAotTk9USUNF OiAgY29sbGF0aW9uICJ0ZXN0MCIgZm9yIGVuY29kaW5nICJVVEY4IiBhbHJl YWR5IGV4aXN0cywgc2tpcHBpbmcKK0VSUk9SOiAgY29sbGF0aW9uICJ0ZXN0 MCIgYWxyZWFkeSBleGlzdHMKIGRvICQkCiBCRUdJTgotICBFWEVDVVRFICdD UkVBVEUgQ09MTEFUSU9OIHRlc3QxIChsY19jb2xsYXRlID0gJyB8fAorICBF WEVDVVRFICdDUkVBVEUgQ09MTEFUSU9OIHRlc3QxIChwcm92aWRlciA9IGlj dSwgbGNfY29sbGF0ZSA9ICcgfHwKICAgICAgICAgICBxdW90ZV9saXRlcmFs KGN1cnJlbnRfc2V0dGluZygnbGNfY29sbGF0ZScpKSB8fAogICAgICAgICAg ICcsIGxjX2N0eXBlID0gJyB8fAogICAgICAgICAgIHF1b3RlX2xpdGVyYWwo Y3VycmVudF9zZXR0aW5nKCdsY19jdHlwZScpKSB8fCAnKTsnOwogRU5ECiAk JDsKLUNSRUFURSBDT0xMQVRJT04gdGVzdDMgKGxjX2NvbGxhdGUgPSAnZW5f VVMudXRmOCcpOyAtLSBmYWlsLCBuZWVkIGxjX2N0eXBlCitDUkVBVEUgQ09M TEFUSU9OIHRlc3QzIChwcm92aWRlciA9IGljdSwgbGNfY29sbGF0ZSA9ICdl bl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWQgbGNfY3R5cGUKIEVSUk9SOiAg cGFyYW1ldGVyICJsY19jdHlwZSIgbXVzdCBiZSBzcGVjaWZpZWQKLUNSRUFU RSBDT0xMQVRJT04gdGVzdHggKGxvY2FsZSA9ICdub25zZW5zZScpOyAtLSBm YWlsCi1FUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgbG9jYWxlICJub25zZW5z ZSI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLURFVEFJTDogIFRoZSBv cGVyYXRpbmcgc3lzdGVtIGNvdWxkIG5vdCBmaW5kIGFueSBsb2NhbGUgZGF0 YSBmb3IgdGhlIGxvY2FsZSBuYW1lICJub25zZW5zZSIuCitDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNl bnNlJyk7IC8qIG5ldmVyIGZhaWxzIHdpdGggSUNVICovICBEUk9QIENPTExB VElPTiB0ZXN0eDsKIENSRUFURSBDT0xMQVRJT04gdGVzdDQgRlJPTSBub25z ZW5zZTsKIEVSUk9SOiAgY29sbGF0aW9uICJub25zZW5zZSIgZm9yIGVuY29k aW5nICJVVEY4IiBkb2VzIG5vdCBleGlzdAogQ1JFQVRFIENPTExBVElPTiB0 ZXN0NSBGUk9NIHRlc3QwOwpAQCAtOTkzLDcgKzEwMTksNyBAQCBTRUxFQ1Qg Y29sbG5hbWUgRlJPTSBwZ19jb2xsYXRpb24gV0hFUkUgY29sbG5hbWUgTElL RSAndGVzdCUnIE9SREVSIEJZIDE7CiAKIEFMVEVSIENPTExBVElPTiB0ZXN0 MSBSRU5BTUUgVE8gdGVzdDExOwogQUxURVIgQ09MTEFUSU9OIHRlc3QwIFJF TkFNRSBUTyB0ZXN0MTE7IC0tIGZhaWwKLUVSUk9SOiAgY29sbGF0aW9uICJ0 ZXN0MTEiIGZvciBlbmNvZGluZyAiVVRGOCIgYWxyZWFkeSBleGlzdHMgaW4g c2NoZW1hICJwdWJsaWMiCitFUlJPUjogIGNvbGxhdGlvbiAidGVzdDExIiBh bHJlYWR5IGV4aXN0cyBpbiBzY2hlbWEgImNvbGxhdGVfdGVzdHMiCiBBTFRF UiBDT0xMQVRJT04gdGVzdDEgUkVOQU1FIFRPIHRlc3QyMjsgLS0gZmFpbAog RVJST1I6ICBjb2xsYXRpb24gInRlc3QxIiBmb3IgZW5jb2RpbmcgIlVURjgi IGRvZXMgbm90IGV4aXN0CiBBTFRFUiBDT0xMQVRJT04gdGVzdDExIE9XTkVS IFRPIHJlZ3Jlc3NfdGVzdF9yb2xlOwpAQCAtMTAwNSwxMSArMTAzMSwxMSBA QCBTRUxFQ1QgY29sbG5hbWUsIG5zcG5hbWUsIG9ial9kZXNjcmlwdGlvbihw Z19jb2xsYXRpb24ub2lkLCAncGdfY29sbGF0aW9uJykKICAgICBGUk9NIHBn X2NvbGxhdGlvbiBKT0lOIHBnX25hbWVzcGFjZSBPTiAoY29sbG5hbWVzcGFj ZSA9IHBnX25hbWVzcGFjZS5vaWQpCiAgICAgV0hFUkUgY29sbG5hbWUgTElL RSAndGVzdCUnCiAgICAgT1JERVIgQlkgMTsKLSBjb2xsbmFtZSB8ICAgbnNw bmFtZSAgIHwgb2JqX2Rlc2NyaXB0aW9uIAotLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCi0gdGVzdDAgICAgfCBwdWJsaWMg ICAgICB8IFVTIEVuZ2xpc2gKLSB0ZXN0MTEgICB8IHRlc3Rfc2NoZW1hIHwg Ci0gdGVzdDUgICAgfCBwdWJsaWMgICAgICB8IAorIGNvbGxuYW1lIHwgICAg bnNwbmFtZSAgICB8IG9ial9kZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgdGVzdDAgICAgfCBj b2xsYXRlX3Rlc3RzIHwgVVMgRW5nbGlzaAorIHRlc3QxMSAgIHwgdGVzdF9z Y2hlbWEgICB8IAorIHRlc3Q1ICAgIHwgY29sbGF0ZV90ZXN0cyB8IAogKDMg cm93cykKIAogRFJPUCBDT0xMQVRJT04gdGVzdDAsIHRlc3Rfc2NoZW1hLnRl c3QxMSwgdGVzdDU7CkBAIC0xMDI0LDYgKzEwNTAsOSBAQCBTRUxFQ1QgY29s bG5hbWUgRlJPTSBwZ19jb2xsYXRpb24gV0hFUkUgY29sbG5hbWUgTElLRSAn dGVzdCUnOwogCiBEUk9QIFNDSEVNQSB0ZXN0X3NjaGVtYTsKIERST1AgUk9M RSByZWdyZXNzX3Rlc3Rfcm9sZTsKKy0tIEFMVEVSCitBTFRFUiBDT0xMQVRJ T04gImVuJWljdSIgUkVGUkVTSCBWRVJTSU9OOworTk9USUNFOiAgdmVyc2lv biBoYXMgbm90IGNoYW5nZWQKIC0tIGRlcGVuZGVuY2llcwogQ1JFQVRFIENP TExBVElPTiB0ZXN0MCBGUk9NICJDIjsKIENSRUFURSBUQUJMRSBjb2xsYXRl X2RlcF90ZXN0MSAoYSBpbnQsIGIgdGV4dCBDT0xMQVRFIHRlc3QwKTsKQEAg LTEwNDgsMTMgKzEwNzcsMTMgQEAgZHJvcCBjYXNjYWRlcyB0byBjb21wb3Np dGUgdHlwZSBjb2xsYXRlX2RlcF90ZXN0MiBjb2x1bW4geQogZHJvcCBjYXNj YWRlcyB0byB2aWV3IGNvbGxhdGVfZGVwX3Rlc3QzCiBkcm9wIGNhc2NhZGVz IHRvIGluZGV4IGNvbGxhdGVfZGVwX3Rlc3Q0aQogXGQgY29sbGF0ZV9kZXBf dGVzdDEKLSAgICAgICAgIFRhYmxlICJwdWJsaWMuY29sbGF0ZV9kZXBfdGVz dDEiCisgICAgICBUYWJsZSAiY29sbGF0ZV90ZXN0cy5jb2xsYXRlX2RlcF90 ZXN0MSIKICBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCBEZWZhdWx0IAogLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCiAgYSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCiAKIFxkIGNvbGxhdGVfZGVwX3Rlc3Qy Ci0gICAgIENvbXBvc2l0ZSB0eXBlICJwdWJsaWMuY29sbGF0ZV9kZXBfdGVz dDIiCisgQ29tcG9zaXRlIHR5cGUgImNvbGxhdGVfdGVzdHMuY29sbGF0ZV9k ZXBfdGVzdDIiCiAgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCAKIC0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQogIHggICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IApAQCAtMTA2Myw3ICsxMDkyLDcg QEAgRFJPUCBUQUJMRSBjb2xsYXRlX2RlcF90ZXN0MSwgY29sbGF0ZV9kZXBf dGVzdDR0OwogRFJPUCBUWVBFIGNvbGxhdGVfZGVwX3Rlc3QyOwogLS0gdGVz dCByYW5nZSB0eXBlcyBhbmQgY29sbGF0aW9ucwogY3JlYXRlIHR5cGUgdGV4 dHJhbmdlX2MgYXMgcmFuZ2Uoc3VidHlwZT10ZXh0LCBjb2xsYXRpb249IkMi KTsKLWNyZWF0ZSB0eXBlIHRleHRyYW5nZV9lbl91cyBhcyByYW5nZShzdWJ0 eXBlPXRleHQsIGNvbGxhdGlvbj0iZW5fVVMiKTsKK2NyZWF0ZSB0eXBlIHRl eHRyYW5nZV9lbl91cyBhcyByYW5nZShzdWJ0eXBlPXRleHQsIGNvbGxhdGlv bj0iZW4laWN1Iik7CiBzZWxlY3QgdGV4dHJhbmdlX2MoJ0EnLCdaJykgQD4g J2InOjp0ZXh0OwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQpAQCAtMTA3OCwz ICsxMTA3LDI0IEBAIHNlbGVjdCB0ZXh0cmFuZ2VfZW5fdXMoJ0EnLCdaJykg QD4gJ2InOjp0ZXh0OwogCiBkcm9wIHR5cGUgdGV4dHJhbmdlX2M7CiBkcm9w IHR5cGUgdGV4dHJhbmdlX2VuX3VzOworLS0gY2xlYW51cAorRFJPUCBTQ0hF TUEgY29sbGF0ZV90ZXN0cyBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNj YWRlcyB0byAxOCBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2Nh ZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDEKK2Ryb3AgY2FzY2FkZXMgdG8g dGFibGUgY29sbGF0ZV90ZXN0X2xpa2UKK2Ryb3AgY2FzY2FkZXMgdG8gdGFi bGUgY29sbGF0ZV90ZXN0MgorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjb2xs YXRlX3Rlc3QzCitkcm9wIGNhc2NhZGVzIHRvIHR5cGUgdGVzdGRvbWFpbl9z dgorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3Q0Citkcm9w IGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDUKK2Ryb3AgY2FzY2Fk ZXMgdG8gdGFibGUgY29sbGF0ZV90ZXN0MTAKK2Ryb3AgY2FzY2FkZXMgdG8g dGFibGUgY29sbGF0ZV90ZXN0NgorZHJvcCBjYXNjYWRlcyB0byB2aWV3IGNv bGx2aWV3MQorZHJvcCBjYXNjYWRlcyB0byB2aWV3IGNvbGx2aWV3MgorZHJv cCBjYXNjYWRlcyB0byB2aWV3IGNvbGx2aWV3MworZHJvcCBjYXNjYWRlcyB0 byB0eXBlIHRlc3Rkb21haW4KK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24g bXlsdCh0ZXh0LHRleHQpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG15 bHRfbm9uaW5saW5lKHRleHQsdGV4dCkKK2Ryb3AgY2FzY2FkZXMgdG8gZnVu Y3Rpb24gbXlsdF9wbHBnc3FsKHRleHQsdGV4dCkKK2Ryb3AgY2FzY2FkZXMg dG8gZnVuY3Rpb24gbXlsdDIodGV4dCx0ZXh0KQorZHJvcCBjYXNjYWRlcyB0 byBmdW5jdGlvbiBkdXAoYW55ZWxlbWVudCkKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5saW51eC51dGY4Lm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5saW51eC51dGY4 Lm91dAppbmRleCAyOTNlNzg2NDFlLi4zMzJmYjRkYmJkIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUubGludXgudXRm OC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRl LmxpbnV4LnV0Zjgub3V0CkBAIC00LDEyICs0LDE0IEBACiAgKiBiZWNhdXNl IG90aGVyIGVuY29kaW5ncyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY2hhcmFj dGVycyB1c2VkLgogICovCiBTRVQgY2xpZW50X2VuY29kaW5nIFRPIFVURjg7 CitDUkVBVEUgU0NIRU1BIGNvbGxhdGVfdGVzdHM7CitTRVQgc2VhcmNoX3Bh dGggPSBjb2xsYXRlX3Rlc3RzOwogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVz dDEgKAogICAgIGEgaW50LAogICAgIGIgdGV4dCBDT0xMQVRFICJlbl9VUyIg Tk9UIE5VTEwKICk7CiBcZCBjb2xsYXRlX3Rlc3QxCi0gICAgICAgICAgIFRh YmxlICJwdWJsaWMuY29sbGF0ZV90ZXN0MSIKKyAgICAgICAgVGFibGUgImNv bGxhdGVfdGVzdHMuY29sbGF0ZV90ZXN0MSIKICBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAogLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCiAg YSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCkBA IC00MCw3ICs0Miw3IEBAIENSRUFURSBUQUJMRSBjb2xsYXRlX3Rlc3RfbGlr ZSAoCiAgICAgTElLRSBjb2xsYXRlX3Rlc3QxCiApOwogXGQgY29sbGF0ZV90 ZXN0X2xpa2UKLSAgICAgICAgIFRhYmxlICJwdWJsaWMuY29sbGF0ZV90ZXN0 X2xpa2UiCisgICAgICBUYWJsZSAiY29sbGF0ZV90ZXN0cy5jb2xsYXRlX3Rl c3RfbGlrZSIKICBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCBEZWZhdWx0IAogLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCiAgYSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCkBAIC0zNjQsNiArMzY2LDM4IEBA IFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIH4qICdiYyc7 CiAgNCB8IEFCQwogKDQgcm93cykKIAorQ1JFQVRFIFRBQkxFIGNvbGxhdGVf dGVzdDYgKAorICAgIGEgaW50LAorICAgIGIgdGV4dCBDT0xMQVRFICJlbl9V UyIKKyk7CitJTlNFUlQgSU5UTyBjb2xsYXRlX3Rlc3Q2IFZBTFVFUyAoMSwg J2FiYycpLCAoMiwgJ0FCQycpLCAoMywgJzEyMycpLCAoNCwgJ2FiMScpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDUsICdhMSEnKSwg KDYsICdhIGMnKSwgKDcsICchLjsnKSwgKDgsICcgICAnKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICg5LCAnw6Riw6cnKSwgKDEwLCAn w4RCw4cnKTsKK1NFTEVDVCBiLAorICAgICAgIGIgfiAnXltbOmFscGhhOl1d KyQnIEFTIGlzX2FscGhhLAorICAgICAgIGIgfiAnXltbOnVwcGVyOl1dKyQn IEFTIGlzX3VwcGVyLAorICAgICAgIGIgfiAnXltbOmxvd2VyOl1dKyQnIEFT IGlzX2xvd2VyLAorICAgICAgIGIgfiAnXltbOmRpZ2l0Ol1dKyQnIEFTIGlz X2RpZ2l0LAorICAgICAgIGIgfiAnXltbOmFsbnVtOl1dKyQnIEFTIGlzX2Fs bnVtLAorICAgICAgIGIgfiAnXltbOmdyYXBoOl1dKyQnIEFTIGlzX2dyYXBo LAorICAgICAgIGIgfiAnXltbOnByaW50Ol1dKyQnIEFTIGlzX3ByaW50LAor ICAgICAgIGIgfiAnXltbOnB1bmN0Ol1dKyQnIEFTIGlzX3B1bmN0LAorICAg ICAgIGIgfiAnXltbOnNwYWNlOl1dKyQnIEFTIGlzX3NwYWNlCitGUk9NIGNv bGxhdGVfdGVzdDY7CisgIGIgIHwgaXNfYWxwaGEgfCBpc191cHBlciB8IGlz X2xvd2VyIHwgaXNfZGlnaXQgfCBpc19hbG51bSB8IGlzX2dyYXBoIHwgaXNf cHJpbnQgfCBpc19wdW5jdCB8IGlzX3NwYWNlIAorLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyBhYmMgfCB0ICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAg ICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IGYgICAg ICAgIHwgZgorIEFCQyB8IHQgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAg ICB8IGYgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAg IHwgZiAgICAgICAgfCBmCisgMTIzIHwgZiAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwg dCAgICAgICAgfCBmICAgICAgICB8IGYKKyBhYjEgfCBmICAgICAgICB8IGYg ICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgIHwgdCAg ICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZgorIGExISB8IGYgICAg ICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAg ICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgfCBmCisgYSBj IHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAg fCBmICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8 IGYKKyAhLjsgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBm ICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQg ICAgICAgIHwgZgorICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgIHwgZiAgICAgICAgfCB0Cisgw6Riw6cgfCB0ICAgICAgICB8IGYgICAg ICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgIHwgdCAgICAg ICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZgorIMOEQsOHIHwgdCAgICAg ICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAg ICB8IHQgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYKKygxMCBy b3dzKQorCiBTRUxFQ1QgJ1TDvHJraXllJyBDT0xMQVRFICJlbl9VUyIgfiog J0tJJyBBUyAidHJ1ZSI7CiAgdHJ1ZSAKIC0tLS0tLQpAQCAtOTkzLDcgKzEw MjcsNyBAQCBTRUxFQ1QgY29sbG5hbWUgRlJPTSBwZ19jb2xsYXRpb24gV0hF UkUgY29sbG5hbWUgTElLRSAndGVzdCUnIE9SREVSIEJZIDE7CiAKIEFMVEVS IENPTExBVElPTiB0ZXN0MSBSRU5BTUUgVE8gdGVzdDExOwogQUxURVIgQ09M TEFUSU9OIHRlc3QwIFJFTkFNRSBUTyB0ZXN0MTE7IC0tIGZhaWwKLUVSUk9S OiAgY29sbGF0aW9uICJ0ZXN0MTEiIGZvciBlbmNvZGluZyAiVVRGOCIgYWxy ZWFkeSBleGlzdHMgaW4gc2NoZW1hICJwdWJsaWMiCitFUlJPUjogIGNvbGxh dGlvbiAidGVzdDExIiBmb3IgZW5jb2RpbmcgIlVURjgiIGFscmVhZHkgZXhp c3RzIGluIHNjaGVtYSAiY29sbGF0ZV90ZXN0cyIKIEFMVEVSIENPTExBVElP TiB0ZXN0MSBSRU5BTUUgVE8gdGVzdDIyOyAtLSBmYWlsCiBFUlJPUjogIGNv bGxhdGlvbiAidGVzdDEiIGZvciBlbmNvZGluZyAiVVRGOCIgZG9lcyBub3Qg ZXhpc3QKIEFMVEVSIENPTExBVElPTiB0ZXN0MTEgT1dORVIgVE8gcmVncmVz c190ZXN0X3JvbGU7CkBAIC0xMDA1LDExICsxMDM5LDExIEBAIFNFTEVDVCBj b2xsbmFtZSwgbnNwbmFtZSwgb2JqX2Rlc2NyaXB0aW9uKHBnX2NvbGxhdGlv bi5vaWQsICdwZ19jb2xsYXRpb24nKQogICAgIEZST00gcGdfY29sbGF0aW9u IEpPSU4gcGdfbmFtZXNwYWNlIE9OIChjb2xsbmFtZXNwYWNlID0gcGdfbmFt ZXNwYWNlLm9pZCkKICAgICBXSEVSRSBjb2xsbmFtZSBMSUtFICd0ZXN0JScK ICAgICBPUkRFUiBCWSAxOwotIGNvbGxuYW1lIHwgICBuc3BuYW1lICAgfCBv YmpfZGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0KLSB0ZXN0MCAgICB8IHB1YmxpYyAgICAgIHwgVVMg RW5nbGlzaAotIHRlc3QxMSAgIHwgdGVzdF9zY2hlbWEgfCAKLSB0ZXN0NSAg ICB8IHB1YmxpYyAgICAgIHwgCisgY29sbG5hbWUgfCAgICBuc3BuYW1lICAg IHwgb2JqX2Rlc2NyaXB0aW9uIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0KKyB0ZXN0MCAgICB8IGNvbGxhdGVfdGVz dHMgfCBVUyBFbmdsaXNoCisgdGVzdDExICAgfCB0ZXN0X3NjaGVtYSAgIHwg CisgdGVzdDUgICAgfCBjb2xsYXRlX3Rlc3RzIHwgCiAoMyByb3dzKQogCiBE Uk9QIENPTExBVElPTiB0ZXN0MCwgdGVzdF9zY2hlbWEudGVzdDExLCB0ZXN0 NTsKQEAgLTEwMjQsNiArMTA1OCw5IEBAIFNFTEVDVCBjb2xsbmFtZSBGUk9N IHBnX2NvbGxhdGlvbiBXSEVSRSBjb2xsbmFtZSBMSUtFICd0ZXN0JSc7CiAK IERST1AgU0NIRU1BIHRlc3Rfc2NoZW1hOwogRFJPUCBST0xFIHJlZ3Jlc3Nf dGVzdF9yb2xlOworLS0gQUxURVIKK0FMVEVSIENPTExBVElPTiAiZW5fVVMi IFJFRlJFU0ggVkVSU0lPTjsKK05PVElDRTogIHZlcnNpb24gaGFzIG5vdCBj aGFuZ2VkCiAtLSBkZXBlbmRlbmNpZXMKIENSRUFURSBDT0xMQVRJT04gdGVz dDAgRlJPTSAiQyI7CiBDUkVBVEUgVEFCTEUgY29sbGF0ZV9kZXBfdGVzdDEg KGEgaW50LCBiIHRleHQgQ09MTEFURSB0ZXN0MCk7CkBAIC0xMDQ4LDEzICsx MDg1LDEzIEBAIGRyb3AgY2FzY2FkZXMgdG8gY29tcG9zaXRlIHR5cGUgY29s bGF0ZV9kZXBfdGVzdDIgY29sdW1uIHkKIGRyb3AgY2FzY2FkZXMgdG8gdmll dyBjb2xsYXRlX2RlcF90ZXN0MwogZHJvcCBjYXNjYWRlcyB0byBpbmRleCBj b2xsYXRlX2RlcF90ZXN0NGkKIFxkIGNvbGxhdGVfZGVwX3Rlc3QxCi0gICAg ICAgICBUYWJsZSAicHVibGljLmNvbGxhdGVfZGVwX3Rlc3QxIgorICAgICAg VGFibGUgImNvbGxhdGVfdGVzdHMuY29sbGF0ZV9kZXBfdGVzdDEiCiAgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCAKIC0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQogIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAogCiBcZCBjb2xsYXRlX2RlcF90ZXN0MgotICAgICBDb21w b3NpdGUgdHlwZSAicHVibGljLmNvbGxhdGVfZGVwX3Rlc3QyIgorIENvbXBv c2l0ZSB0eXBlICJjb2xsYXRlX3Rlc3RzLmNvbGxhdGVfZGVwX3Rlc3QyIgog IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERl ZmF1bHQgCiAtLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0KICB4ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKQEAgLTEwNzgsMyArMTExNSwyNCBAQCBzZWxlY3Qg dGV4dHJhbmdlX2VuX3VzKCdBJywnWicpIEA+ICdiJzo6dGV4dDsKIAogZHJv cCB0eXBlIHRleHRyYW5nZV9jOwogZHJvcCB0eXBlIHRleHRyYW5nZV9lbl91 czsKKy0tIGNsZWFudXAKK0RST1AgU0NIRU1BIGNvbGxhdGVfdGVzdHMgQ0FT Q0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMTggb3RoZXIgb2Jq ZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjb2xsYXRl X3Rlc3QxCitkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdF9s aWtlCitkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDIKK2Ry b3AgY2FzY2FkZXMgdG8gdGFibGUgY29sbGF0ZV90ZXN0MworZHJvcCBjYXNj YWRlcyB0byB0eXBlIHRlc3Rkb21haW5fc3YKK2Ryb3AgY2FzY2FkZXMgdG8g dGFibGUgY29sbGF0ZV90ZXN0NAorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBj b2xsYXRlX3Rlc3Q1Citkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVf dGVzdDEwCitkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxhdGVfdGVzdDYK K2Ryb3AgY2FzY2FkZXMgdG8gdmlldyBjb2xsdmlldzEKK2Ryb3AgY2FzY2Fk ZXMgdG8gdmlldyBjb2xsdmlldzIKK2Ryb3AgY2FzY2FkZXMgdG8gdmlldyBj b2xsdmlldzMKK2Ryb3AgY2FzY2FkZXMgdG8gdHlwZSB0ZXN0ZG9tYWluCitk cm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG15bHQodGV4dCx0ZXh0KQorZHJv cCBjYXNjYWRlcyB0byBmdW5jdGlvbiBteWx0X25vbmlubGluZSh0ZXh0LHRl eHQpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG15bHRfcGxwZ3NxbCh0 ZXh0LHRleHQpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG15bHQyKHRl eHQsdGV4dCkKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZHVwKGFueWVs ZW1lbnQpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xs YXRlLmxpbnV4LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29s bGF0ZS5pY3Uuc3FsCnNpbWlsYXJpdHkgaW5kZXggODIlCmNvcHkgZnJvbSBz cmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmxpbnV4LnV0Zjguc3FsCmNv cHkgdG8gc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3Uuc3FsCmlu ZGV4IGMzNDljYmRlMmIuLmNmMDkyNzMwZWMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUubGludXgudXRmOC5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3Uuc3FsCkBAIC0xLDMx ICsxLDMyIEBACiAvKgotICogVGhpcyB0ZXN0IGlzIGZvciBMaW51eC9nbGli YyBzeXN0ZW1zIGFuZCBhc3N1bWVzIHRoYXQgYSBmdWxsIHNldCBvZgotICog bG9jYWxlcyBpcyBpbnN0YWxsZWQuICBJdCBtdXN0IGJlIHJ1biBpbiBhIGRh dGFiYXNlIHdpdGggVVRGLTggZW5jb2RpbmcsCi0gKiBiZWNhdXNlIG90aGVy IGVuY29kaW5ncyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY2hhcmFjdGVycyB1 c2VkLgorICogVGhpcyB0ZXN0IGlzIGZvciBJQ1UgY29sbGF0aW9ucy4KICAq LwogCiBTRVQgY2xpZW50X2VuY29kaW5nIFRPIFVURjg7CiAKK0NSRUFURSBT Q0hFTUEgY29sbGF0ZV90ZXN0czsKK1NFVCBzZWFyY2hfcGF0aCA9IGNvbGxh dGVfdGVzdHM7CisKIAogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDEgKAog ICAgIGEgaW50LAotICAgIGIgdGV4dCBDT0xMQVRFICJlbl9VUyIgTk9UIE5V TEwKKyAgICBiIHRleHQgQ09MTEFURSAiZW4laWN1IiBOT1QgTlVMTAogKTsK IAogXGQgY29sbGF0ZV90ZXN0MQogCiBDUkVBVEUgVEFCTEUgY29sbGF0ZV90 ZXN0X2ZhaWwgKAogICAgIGEgaW50LAotICAgIGIgdGV4dCBDT0xMQVRFICJq YV9KUC5ldWNqcCIKKyAgICBiIHRleHQgQ09MTEFURSAiamFfSlAuZXVjanAl aWN1IgogKTsKIAogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdF9mYWlsICgK ICAgICBhIGludCwKLSAgICBiIHRleHQgQ09MTEFURSAiZm9vIgorICAgIGIg dGV4dCBDT0xMQVRFICJmb28laWN1IgogKTsKIAogQ1JFQVRFIFRBQkxFIGNv bGxhdGVfdGVzdF9mYWlsICgKLSAgICBhIGludCBDT0xMQVRFICJlbl9VUyIs CisgICAgYSBpbnQgQ09MTEFURSAiZW4laWN1IiwKICAgICBiIHRleHQKICk7 CiAKQEAgLTM3LDcgKzM4LDcgQEAgQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVz dF9saWtlICgKIAogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDIgKAogICAg IGEgaW50LAotICAgIGIgdGV4dCBDT0xMQVRFICJzdl9TRSIKKyAgICBiIHRl eHQgQ09MTEFURSAic3YlaWN1IgogKTsKIAogQ1JFQVRFIFRBQkxFIGNvbGxh dGVfdGVzdDMgKApAQCAtNTcsMTEgKzU4LDExIEBAIENSRUFURSBUQUJMRSBj b2xsYXRlX3Rlc3QzICgKIFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MSBX SEVSRSBiIENPTExBVEUgIkMiID49ICdiYmMnOwogU0VMRUNUICogRlJPTSBj b2xsYXRlX3Rlc3QxIFdIRVJFIGIgPj0gJ2JiYycgQ09MTEFURSAiQyI7CiBT RUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVzdDEgV0hFUkUgYiBDT0xMQVRFICJD IiA+PSAnYmJjJyBDT0xMQVRFICJDIjsKLVNFTEVDVCAqIEZST00gY29sbGF0 ZV90ZXN0MSBXSEVSRSBiIENPTExBVEUgIkMiID49ICdiYmMnIENPTExBVEUg ImVuX1VTIjsKK1NFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MSBXSEVSRSBi IENPTExBVEUgIkMiID49ICdiYmMnIENPTExBVEUgImVuJWljdSI7CiAKIAot Q1JFQVRFIERPTUFJTiB0ZXN0ZG9tYWluX3N2IEFTIHRleHQgQ09MTEFURSAi c3ZfU0UiOwotQ1JFQVRFIERPTUFJTiB0ZXN0ZG9tYWluX2kgQVMgaW50IENP TExBVEUgInN2X1NFIjsgLS0gZmFpbHMKK0NSRUFURSBET01BSU4gdGVzdGRv bWFpbl9zdiBBUyB0ZXh0IENPTExBVEUgInN2JWljdSI7CitDUkVBVEUgRE9N QUlOIHRlc3Rkb21haW5faSBBUyBpbnQgQ09MTEFURSAic3YlaWN1IjsgLS0g ZmFpbHMKIENSRUFURSBUQUJMRSBjb2xsYXRlX3Rlc3Q0ICgKICAgICBhIGlu dCwKICAgICBiIHRlc3Rkb21haW5fc3YKQEAgLTcxLDcgKzcyLDcgQEAgQ1JF QVRFIFRBQkxFIGNvbGxhdGVfdGVzdDQgKAogCiBDUkVBVEUgVEFCTEUgY29s bGF0ZV90ZXN0NSAoCiAgICAgYSBpbnQsCi0gICAgYiB0ZXN0ZG9tYWluX3N2 IENPTExBVEUgImVuX1VTIgorICAgIGIgdGVzdGRvbWFpbl9zdiBDT0xMQVRF ICJlbiVpY3UiCiApOwogSU5TRVJUIElOVE8gY29sbGF0ZV90ZXN0NSBTRUxF Q1QgKiBGUk9NIGNvbGxhdGVfdGVzdDE7CiBTRUxFQ1QgYSwgYiBGUk9NIGNv bGxhdGVfdGVzdDUgT1JERVIgQlkgYjsKQEAgLTg5LDE1ICs5MCwxNSBAQCBD UkVBVEUgVEFCTEUgY29sbGF0ZV90ZXN0NSAoCiBTRUxFQ1QgKiBGUk9NIGNv bGxhdGVfdGVzdDMgT1JERVIgQlkgYjsKIAogLS0gY29uc3RhbnQgZXhwcmVz c2lvbiBmb2xkaW5nCi1TRUxFQ1QgJ2JiYycgQ09MTEFURSAiZW5fVVMiID4g J8OkYmMnIENPTExBVEUgImVuX1VTIiBBUyAidHJ1ZSI7Ci1TRUxFQ1QgJ2Ji YycgQ09MTEFURSAic3ZfU0UiID4gJ8OkYmMnIENPTExBVEUgInN2X1NFIiBB UyAiZmFsc2UiOworU0VMRUNUICdiYmMnIENPTExBVEUgImVuJWljdSIgPiAn w6RiYycgQ09MTEFURSAiZW4laWN1IiBBUyAidHJ1ZSI7CitTRUxFQ1QgJ2Ji YycgQ09MTEFURSAic3YlaWN1IiA+ICfDpGJjJyBDT0xMQVRFICJzdiVpY3Ui IEFTICJmYWxzZSI7CiAKIC0tIHVwcGVyL2xvd2VyCiAKIENSRUFURSBUQUJM RSBjb2xsYXRlX3Rlc3QxMCAoCiAgICAgYSBpbnQsCi0gICAgeCB0ZXh0IENP TExBVEUgImVuX1VTIiwKLSAgICB5IHRleHQgQ09MTEFURSAidHJfVFIiCisg ICAgeCB0ZXh0IENPTExBVEUgImVuJWljdSIsCisgICAgeSB0ZXh0IENPTExB VEUgInRyJWljdSIKICk7CiAKIElOU0VSVCBJTlRPIGNvbGxhdGVfdGVzdDEw IFZBTFVFUyAoMSwgJ2hpaicsICdoaWonKSwgKDIsICdISUonLCAnSElKJyk7 CkBAIC0xMTYsMTEgKzExNywxMSBAQCBDUkVBVEUgVEFCTEUgY29sbGF0ZV90 ZXN0MTAgKAogU0VMRUNUICogRlJPTSBjb2xsYXRlX3Rlc3QxIFdIRVJFIGIg SUxJS0UgJ2FiYyUnOwogU0VMRUNUICogRlJPTSBjb2xsYXRlX3Rlc3QxIFdI RVJFIGIgSUxJS0UgJyViYyUnOwogCi1TRUxFQ1QgJ1TDvHJraXllJyBDT0xM QVRFICJlbl9VUyIgSUxJS0UgJyVLSSUnIEFTICJ0cnVlIjsKLVNFTEVDVCAn VMO8cmtpeWUnIENPTExBVEUgInRyX1RSIiBJTElLRSAnJUtJJScgQVMgImZh bHNlIjsKK1NFTEVDVCAnVMO8cmtpeWUnIENPTExBVEUgImVuJWljdSIgSUxJ S0UgJyVLSSUnIEFTICJ0cnVlIjsKK1NFTEVDVCAnVMO8cmtpeWUnIENPTExB VEUgInRyJWljdSIgSUxJS0UgJyVLSSUnIEFTICJmYWxzZSI7CiAKLVNFTEVD VCAnYsSxdCcgSUxJS0UgJ0JJVCcgQ09MTEFURSAiZW5fVVMiIEFTICJmYWxz ZSI7Ci1TRUxFQ1QgJ2LEsXQnIElMSUtFICdCSVQnIENPTExBVEUgInRyX1RS IiBBUyAidHJ1ZSI7CitTRUxFQ1QgJ2LEsXQnIElMSUtFICdCSVQnIENPTExB VEUgImVuJWljdSIgQVMgImZhbHNlIjsKK1NFTEVDVCAnYsSxdCcgSUxJS0Ug J0JJVCcgQ09MTEFURSAidHIlaWN1IiBBUyAidHJ1ZSI7CiAKIC0tIFRoZSBm b2xsb3dpbmcgYWN0dWFsbHkgZXhlcmNpc2VzIHRoZSBzZWxlY3Rpdml0eSBl c3RpbWF0aW9uIGZvciBJTElLRS4KIFNFTEVDVCByZWxuYW1lIEZST00gcGdf Y2xhc3MgV0hFUkUgcmVsbmFtZSBJTElLRSAnYWJjJSc7CkBAIC0xMzQsMTEg KzEzNSwzMCBAQCBDUkVBVEUgVEFCTEUgY29sbGF0ZV90ZXN0MTAgKAogU0VM RUNUICogRlJPTSBjb2xsYXRlX3Rlc3QxIFdIRVJFIGIgfiogJ15hYmMnOwog U0VMRUNUICogRlJPTSBjb2xsYXRlX3Rlc3QxIFdIRVJFIGIgfiogJ2JjJzsK IAotU0VMRUNUICdUw7xya2l5ZScgQ09MTEFURSAiZW5fVVMiIH4qICdLSScg QVMgInRydWUiOwotU0VMRUNUICdUw7xya2l5ZScgQ09MTEFURSAidHJfVFIi IH4qICdLSScgQVMgImZhbHNlIjsKLQotU0VMRUNUICdixLF0JyB+KiAnQklU JyBDT0xMQVRFICJlbl9VUyIgQVMgImZhbHNlIjsKLVNFTEVDVCAnYsSxdCcg fiogJ0JJVCcgQ09MTEFURSAidHJfVFIiIEFTICJ0cnVlIjsKK0NSRUFURSBU QUJMRSBjb2xsYXRlX3Rlc3Q2ICgKKyAgICBhIGludCwKKyAgICBiIHRleHQg Q09MTEFURSAiZW4laWN1IgorKTsKK0lOU0VSVCBJTlRPIGNvbGxhdGVfdGVz dDYgVkFMVUVTICgxLCAnYWJjJyksICgyLCAnQUJDJyksICgzLCAnMTIzJyks ICg0LCAnYWIxJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoNSwgJ2ExIScpLCAoNiwgJ2EgYycpLCAoNywgJyEuOycpLCAoOCwgJyAg ICcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDksICfD pGLDpycpLCAoMTAsICfDhELDhycpOworU0VMRUNUIGIsCisgICAgICAgYiB+ ICdeW1s6YWxwaGE6XV0rJCcgQVMgaXNfYWxwaGEsCisgICAgICAgYiB+ICde W1s6dXBwZXI6XV0rJCcgQVMgaXNfdXBwZXIsCisgICAgICAgYiB+ICdeW1s6 bG93ZXI6XV0rJCcgQVMgaXNfbG93ZXIsCisgICAgICAgYiB+ICdeW1s6ZGln aXQ6XV0rJCcgQVMgaXNfZGlnaXQsCisgICAgICAgYiB+ICdeW1s6YWxudW06 XV0rJCcgQVMgaXNfYWxudW0sCisgICAgICAgYiB+ICdeW1s6Z3JhcGg6XV0r JCcgQVMgaXNfZ3JhcGgsCisgICAgICAgYiB+ICdeW1s6cHJpbnQ6XV0rJCcg QVMgaXNfcHJpbnQsCisgICAgICAgYiB+ICdeW1s6cHVuY3Q6XV0rJCcgQVMg aXNfcHVuY3QsCisgICAgICAgYiB+ICdeW1s6c3BhY2U6XV0rJCcgQVMgaXNf c3BhY2UKK0ZST00gY29sbGF0ZV90ZXN0NjsKKworU0VMRUNUICdUw7xya2l5 ZScgQ09MTEFURSAiZW4laWN1IiB+KiAnS0knIEFTICJ0cnVlIjsKK1NFTEVD VCAnVMO8cmtpeWUnIENPTExBVEUgInRyJWljdSIgfiogJ0tJJyBBUyAidHJ1 ZSI7ICAtLSB0cnVlIHdpdGggSUNVCisKK1NFTEVDVCAnYsSxdCcgfiogJ0JJ VCcgQ09MTEFURSAiZW4laWN1IiBBUyAiZmFsc2UiOworU0VMRUNUICdixLF0 JyB+KiAnQklUJyBDT0xMQVRFICJ0ciVpY3UiIEFTICJmYWxzZSI7ICAtLSBm YWxzZSB3aXRoIElDVQogCiAtLSBUaGUgZm9sbG93aW5nIGFjdHVhbGx5IGV4 ZXJjaXNlcyB0aGUgc2VsZWN0aXZpdHkgZXN0aW1hdGlvbiBmb3IgfiouCiBT RUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgfiog J15hYmMnOwpAQCAtMTQ4LDcgKzE2OCw3IEBAIENSRUFURSBUQUJMRSBjb2xs YXRlX3Rlc3QxMCAoCiAKIFNFVCBsY190aW1lIFRPICd0cl9UUic7CiBTRUxF Q1QgdG9fY2hhcihkYXRlICcyMDEwLTA0LTAxJywgJ0REIFRNTU9OIFlZWVkn KTsKLVNFTEVDVCB0b19jaGFyKGRhdGUgJzIwMTAtMDQtMDEnLCAnREQgVE1N T04gWVlZWScgQ09MTEFURSAidHJfVFIiKTsKK1NFTEVDVCB0b19jaGFyKGRh dGUgJzIwMTAtMDQtMDEnLCAnREQgVE1NT04gWVlZWScgQ09MTEFURSAidHIl aWN1Iik7CiAKIAogLS0gYmFja3dhcmRzIHBhcnNpbmcKQEAgLTIxOCw5ICsy MzgsOSBAQCBDUkVBVEUgVEFCTEUgdGVzdF91IEFTIFNFTEVDVCBhLCBiIEZS T00gY29sbGF0ZV90ZXN0MSBVTklPTiBBTEwgU0VMRUNUIGEsIGIgRlJPTQog CiAtLSBjb2xsYXRpb24gbWlzbWF0Y2ggYmV0d2VlbiByZWN1cnNpdmUgYW5k IG5vbi1yZWN1cnNpdmUgdGVybQogV0lUSCBSRUNVUlNJVkUgZm9vKHgpIEFT Ci0gICAoU0VMRUNUIHggRlJPTSAoVkFMVUVTKCdhJyBDT0xMQVRFICJlbl9V UyIpLCgnYicpKSB0KHgpCisgICAoU0VMRUNUIHggRlJPTSAoVkFMVUVTKCdh JyBDT0xMQVRFICJlbiVpY3UiKSwoJ2InKSkgdCh4KQogICAgVU5JT04gQUxM Ci0gICBTRUxFQ1QgKHggfHwgJ2MnKSBDT0xMQVRFICJkZV9ERSIgRlJPTSBm b28gV0hFUkUgbGVuZ3RoKHgpIDwgMTApCisgICBTRUxFQ1QgKHggfHwgJ2Mn KSBDT0xMQVRFICJkZSVpY3UiIEZST00gZm9vIFdIRVJFIGxlbmd0aCh4KSA8 IDEwKQogU0VMRUNUICogRlJPTSBmb287CiAKIApAQCAtMjY4LDcgKzI4OCw3 IEBAIENSRUFURSBGVU5DVElPTiBteWx0MiAoeCB0ZXh0LCB5IHRleHQpIFJF VFVSTlMgYm9vbGVhbiBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCiBlbmQKICQk OwogCi1TRUxFQ1QgbXlsdDIoJ2EnLCAnQicgY29sbGF0ZSAiZW5fVVMiKSBh cyB0LCBteWx0MignYScsICdCJyBjb2xsYXRlICJDIikgYXMgZjsKK1NFTEVD VCBteWx0MignYScsICdCJyBjb2xsYXRlICJlbiVpY3UiKSBhcyB0LCBteWx0 MignYScsICdCJyBjb2xsYXRlICJDIikgYXMgZjsKIAogQ1JFQVRFIE9SIFJF UExBQ0UgRlVOQ1RJT04KICAgbXlsdDIgKHggdGV4dCwgeSB0ZXh0KSBSRVRV Uk5TIGJvb2xlYW4gTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJApAQCAtMzIwLDIz ICszNDAsMjEgQEAgQ1JFQVRFIFNDSEVNQSB0ZXN0X3NjaGVtYTsKIC0tIFdl IG5lZWQgdG8gZG8gdGhpcyB0aGlzIHdheSB0byBjb3BlIHdpdGggdmFyeWlu ZyBuYW1lcyBmb3IgZW5jb2RpbmdzOgogZG8gJCQKIEJFR0lOCi0gIEVYRUNV VEUgJ0NSRUFURSBDT0xMQVRJT04gdGVzdDAgKGxvY2FsZSA9ICcgfHwKKyAg RVhFQ1VURSAnQ1JFQVRFIENPTExBVElPTiB0ZXN0MCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICcgfHwKICAgICAgICAgICBxdW90ZV9saXRlcmFsKGN1 cnJlbnRfc2V0dGluZygnbGNfY29sbGF0ZScpKSB8fCAnKTsnOwogRU5ECiAk JDsKIENSRUFURSBDT0xMQVRJT04gdGVzdDAgRlJPTSAiQyI7IC0tIGZhaWws IGR1cGxpY2F0ZSBuYW1lCi1DUkVBVEUgQ09MTEFUSU9OIElGIE5PVCBFWElT VFMgdGVzdDAgRlJPTSAiQyI7IC0tIG9rLCBza2lwcGVkCi1DUkVBVEUgQ09M TEFUSU9OIElGIE5PVCBFWElTVFMgdGVzdDAgKGxvY2FsZSA9ICdmb28nKTsg LS0gb2ssIHNraXBwZWQKIGRvICQkCiBCRUdJTgotICBFWEVDVVRFICdDUkVB VEUgQ09MTEFUSU9OIHRlc3QxIChsY19jb2xsYXRlID0gJyB8fAorICBFWEVD VVRFICdDUkVBVEUgQ09MTEFUSU9OIHRlc3QxIChwcm92aWRlciA9IGljdSwg bGNfY29sbGF0ZSA9ICcgfHwKICAgICAgICAgICBxdW90ZV9saXRlcmFsKGN1 cnJlbnRfc2V0dGluZygnbGNfY29sbGF0ZScpKSB8fAogICAgICAgICAgICcs IGxjX2N0eXBlID0gJyB8fAogICAgICAgICAgIHF1b3RlX2xpdGVyYWwoY3Vy cmVudF9zZXR0aW5nKCdsY19jdHlwZScpKSB8fCAnKTsnOwogRU5ECiAkJDsK LUNSRUFURSBDT0xMQVRJT04gdGVzdDMgKGxjX2NvbGxhdGUgPSAnZW5fVVMu dXRmOCcpOyAtLSBmYWlsLCBuZWVkIGxjX2N0eXBlCi1DUkVBVEUgQ09MTEFU SU9OIHRlc3R4IChsb2NhbGUgPSAnbm9uc2Vuc2UnKTsgLS0gZmFpbAorQ1JF QVRFIENPTExBVElPTiB0ZXN0MyAocHJvdmlkZXIgPSBpY3UsIGxjX2NvbGxh dGUgPSAnZW5fVVMudXRmOCcpOyAtLSBmYWlsLCBuZWVkIGxjX2N0eXBlCitD UkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxl ID0gJ25vbnNlbnNlJyk7IC8qIG5ldmVyIGZhaWxzIHdpdGggSUNVICovICBE Uk9QIENPTExBVElPTiB0ZXN0eDsKIAogQ1JFQVRFIENPTExBVElPTiB0ZXN0 NCBGUk9NIG5vbnNlbnNlOwogQ1JFQVRFIENPTExBVElPTiB0ZXN0NSBGUk9N IHRlc3QwOwpAQCAtMzY4LDYgKzM4NiwxMSBAQCBDUkVBVEUgQ09MTEFUSU9O IHRlc3Q1IEZST00gdGVzdDA7CiBEUk9QIFJPTEUgcmVncmVzc190ZXN0X3Jv bGU7CiAKIAorLS0gQUxURVIKKworQUxURVIgQ09MTEFUSU9OICJlbiVpY3Ui IFJFRlJFU0ggVkVSU0lPTjsKKworCiAtLSBkZXBlbmRlbmNpZXMKIAogQ1JF QVRFIENPTExBVElPTiB0ZXN0MCBGUk9NICJDIjsKQEAgLTM5MSwxMCArNDE0 LDE0IEBAIENSRUFURSBJTkRFWCBjb2xsYXRlX2RlcF90ZXN0NGkgT04gY29s bGF0ZV9kZXBfdGVzdDR0IChiIENPTExBVEUgdGVzdDApOwogLS0gdGVzdCBy YW5nZSB0eXBlcyBhbmQgY29sbGF0aW9ucwogCiBjcmVhdGUgdHlwZSB0ZXh0 cmFuZ2VfYyBhcyByYW5nZShzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIp OwotY3JlYXRlIHR5cGUgdGV4dHJhbmdlX2VuX3VzIGFzIHJhbmdlKHN1YnR5 cGU9dGV4dCwgY29sbGF0aW9uPSJlbl9VUyIpOworY3JlYXRlIHR5cGUgdGV4 dHJhbmdlX2VuX3VzIGFzIHJhbmdlKHN1YnR5cGU9dGV4dCwgY29sbGF0aW9u PSJlbiVpY3UiKTsKIAogc2VsZWN0IHRleHRyYW5nZV9jKCdBJywnWicpIEA+ ICdiJzo6dGV4dDsKIHNlbGVjdCB0ZXh0cmFuZ2VfZW5fdXMoJ0EnLCdaJykg QD4gJ2InOjp0ZXh0OwogCiBkcm9wIHR5cGUgdGV4dHJhbmdlX2M7CiBkcm9w IHR5cGUgdGV4dHJhbmdlX2VuX3VzOworCisKKy0tIGNsZWFudXAKK0RST1Ag U0NIRU1BIGNvbGxhdGVfdGVzdHMgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUubGludXgudXRmOC5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmxpbnV4LnV0Zjguc3FsCmlu ZGV4IGMzNDljYmRlMmIuLjc4YzdhYzJlNDQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUubGludXgudXRmOC5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51dGY4LnNxbApA QCAtNiw2ICs2LDkgQEAKIAogU0VUIGNsaWVudF9lbmNvZGluZyBUTyBVVEY4 OwogCitDUkVBVEUgU0NIRU1BIGNvbGxhdGVfdGVzdHM7CitTRVQgc2VhcmNo X3BhdGggPSBjb2xsYXRlX3Rlc3RzOworCiAKIENSRUFURSBUQUJMRSBjb2xs YXRlX3Rlc3QxICgKICAgICBhIGludCwKQEAgLTEzNCw2ICsxMzcsMjUgQEAg Q1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDEwICgKIFNFTEVDVCAqIEZST00g Y29sbGF0ZV90ZXN0MSBXSEVSRSBiIH4qICdeYWJjJzsKIFNFTEVDVCAqIEZS T00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIH4qICdiYyc7CiAKK0NSRUFURSBU QUJMRSBjb2xsYXRlX3Rlc3Q2ICgKKyAgICBhIGludCwKKyAgICBiIHRleHQg Q09MTEFURSAiZW5fVVMiCispOworSU5TRVJUIElOVE8gY29sbGF0ZV90ZXN0 NiBWQUxVRVMgKDEsICdhYmMnKSwgKDIsICdBQkMnKSwgKDMsICcxMjMnKSwg KDQsICdhYjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICg1LCAnYTEhJyksICg2LCAnYSBjJyksICg3LCAnIS47JyksICg4LCAnICAg JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOSwgJ8Ok YsOnJyksICgxMCwgJ8OEQsOHJyk7CitTRUxFQ1QgYiwKKyAgICAgICBiIH4g J15bWzphbHBoYTpdXSskJyBBUyBpc19hbHBoYSwKKyAgICAgICBiIH4gJ15b Wzp1cHBlcjpdXSskJyBBUyBpc191cHBlciwKKyAgICAgICBiIH4gJ15bWzps b3dlcjpdXSskJyBBUyBpc19sb3dlciwKKyAgICAgICBiIH4gJ15bWzpkaWdp dDpdXSskJyBBUyBpc19kaWdpdCwKKyAgICAgICBiIH4gJ15bWzphbG51bTpd XSskJyBBUyBpc19hbG51bSwKKyAgICAgICBiIH4gJ15bWzpncmFwaDpdXSsk JyBBUyBpc19ncmFwaCwKKyAgICAgICBiIH4gJ15bWzpwcmludDpdXSskJyBB UyBpc19wcmludCwKKyAgICAgICBiIH4gJ15bWzpwdW5jdDpdXSskJyBBUyBp c19wdW5jdCwKKyAgICAgICBiIH4gJ15bWzpzcGFjZTpdXSskJyBBUyBpc19z cGFjZQorRlJPTSBjb2xsYXRlX3Rlc3Q2OworCiBTRUxFQ1QgJ1TDvHJraXll JyBDT0xMQVRFICJlbl9VUyIgfiogJ0tJJyBBUyAidHJ1ZSI7CiBTRUxFQ1Qg J1TDvHJraXllJyBDT0xMQVRFICJ0cl9UUiIgfiogJ0tJJyBBUyAiZmFsc2Ui OwogCkBAIC0zNjgsNiArMzkwLDExIEBAIENSRUFURSBDT0xMQVRJT04gdGVz dDUgRlJPTSB0ZXN0MDsKIERST1AgUk9MRSByZWdyZXNzX3Rlc3Rfcm9sZTsK IAogCistLSBBTFRFUgorCitBTFRFUiBDT0xMQVRJT04gImVuX1VTIiBSRUZS RVNIIFZFUlNJT047CisKKwogLS0gZGVwZW5kZW5jaWVzCiAKIENSRUFURSBD T0xMQVRJT04gdGVzdDAgRlJPTSAiQyI7CkBAIC0zOTgsMyArNDI1LDcgQEAg Q1JFQVRFIElOREVYIGNvbGxhdGVfZGVwX3Rlc3Q0aSBPTiBjb2xsYXRlX2Rl cF90ZXN0NHQgKGIgQ09MTEFURSB0ZXN0MCk7CiAKIGRyb3AgdHlwZSB0ZXh0 cmFuZ2VfYzsKIGRyb3AgdHlwZSB0ZXh0cmFuZ2VfZW5fdXM7CisKKworLS0g Y2xlYW51cAorRFJPUCBTQ0hFTUEgY29sbGF0ZV90ZXN0cyBDQVNDQURFOwot LSAKMi4xMi4wCgo= --------------B5BBEBAA0C7142E7817D9E04 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------B5BBEBAA0C7142E7817D9E04--