Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o8gCP-0004cb-0o for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Jul 2022 10:54:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o8gCN-0007Dk-11 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Jul 2022 10:54:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o8gCL-0007CV-34 for pgsql-hackers@lists.postgresql.org; Tue, 05 Jul 2022 10:54:30 +0000 Received: from out4-smtp.messagingengine.com ([66.111.4.28]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o8gC9-0005TL-Rl for pgsql-hackers@postgresql.org; Tue, 05 Jul 2022 10:54:28 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id BD42D5C00EA for ; Tue, 5 Jul 2022 06:54:15 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 05 Jul 2022 06:54:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1657018455; x=1657104855; bh=VLzxr4vbwR8xCjjRzrKr10wdlmlB wQpT0wcy0bkVQU8=; b=A7UfogV1VFOzQuf43y08rZ6FHYmp3HQMC580ToUSSleo zkgU0USDD5bOlHVr0QWUlQdK9hdpDchjr77jTL3RbJR0vggQfg0Ugas6bduLK/+O 2tMHx5ETnAPA/zEEW+6fc40VZMwg5XxEzOoCvxp37MO350poaCqdVwYONxF8G37R nvsYD+NMTV9S1+0J3243GWbW1dezfsWptozefYwvT07RyPlsyiD0rBy4YN7XcZox Yxm1Ouwg0sIgoin3QXHd4JfioGcyrcmikC+w3FP4iwvRG11X+65nXN/YIq5wVUKf dkRuZbmz3u+OJVPpUvsYx/vmdYODgysKIxM4QDg84A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrudeiuddgfeeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfuffhvfhfjgesmhdtre ertdefjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdr vghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrth htvghrnhepkeetteefheevhfdvledtfeegleeutdekkeekveeifeeuffevjeeujeehffej ieejnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepph gvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Tue, 5 Jul 2022 06:54:14 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------yyXS9RW1ewvmcEGajBn6MQpX" Message-ID: <79f08a39-a7da-5157-cef4-378fb60c18f8@enterprisedb.com> Date: Tue, 5 Jul 2022 12:54:13 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: Transparent column encryption Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers References: <89157929-c2b6-817b-6025-8e4b2d89d88f@enterprisedb.com> <48a9f2c2-4a57-27d8-7c53-16a23a01014e@enterprisedb.com> In-Reply-To: <48a9f2c2-4a57-27d8-7c53-16a23a01014e@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------yyXS9RW1ewvmcEGajBn6MQpX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Rebased patch, no new functionality. On 29.06.22 01:29, Peter Eisentraut wrote: > Here is a new version of this patch.  See also the original description > quoted below.  I have done a significant amount of work on this over the > last few months.  Some important news include: > > - The cryptography has been improved.  It now uses an AEAD scheme, and > for deterministic encryption a proper SIV construction. > > - The OpenSSL-specific parts have been moved to a separate file in > libpq.  Non-OpenSSL builds compile and work (without functionality, of > course). > > - libpq handles multiple CEKs and CMKs, including changing keys on the fly. > > - libpq supports a mode to force encryption of certain values. > > - libpq supports a flexible configuration system for looking up CMKs, > including support for external key management systems. > > - psql has a new \gencr command that allows passing in bind parameters > for (potential) encryption. > > - There is some more pg_dump and psql support. > > - The new data types for storing encrypted data have been renamed for > clarity. > > - Various changes to the protocol compared to the previous patch. > > - The patch contains full documentation of the protocol changes, > glossary entries, and more new documentation. > > The major pieces that are still missing are: > > - DDL support for registering keys > > - Protocol versioning or feature flags > > Other than that it's pretty complete in my mind. > > For interested reviewers, I have organized the patch so that you can > start reading it top to bottom: The documentation comes first, then the > tests, then the code changes.  Even some feedback on the first or first > two aspects would be valuable to me. > > Old news follows: > > On 03.12.21 22:32, Peter Eisentraut wrote: >> I want to present my proof-of-concept patch for the transparent column >> encryption feature.  (Some might also think of it as automatic >> client-side encryption or similar, but I like my name.)  This feature >> enables the {automatic,transparent} encryption and decryption of >> particular columns in the client.  The data for those columns then >> only ever appears in ciphertext on the server, so it is protected from >> the "prying eyes" of DBAs, sysadmins, cloud operators, etc.  The >> canonical use case for this feature is storing credit card numbers >> encrypted, in accordance with PCI DSS, as well as similar situations >> involving social security numbers etc.  Of course, you can't do any >> computations with encrypted values on the server, but for these use >> cases, that is not necessary.  This feature does support deterministic >> encryption as an alternative to the default randomized encryption, so >> in that mode you can do equality lookups, at the cost of some >> security. >> >> This functionality also exists in other SQL database products, so the >> overall concepts weren't invented by me by any means. >> >> Also, this feature has nothing to do with the on-disk encryption >> feature being contemplated in parallel.  Both can exist independently. >> >> The attached patch has all the necessary pieces in place to make this >> work, so you can have an idea how the overall system works.  It >> contains some documentation and tests to help illustrate the >> functionality.  But it's missing the remaining 90% of the work, >> including additional DDL support, error handling, robust memory >> management, protocol versioning, forward and backward compatibility, >> pg_dump support, psql \d support, refinement of the cryptography, and >> so on.  But I think obvious solutions exist to all of those things, so >> it isn't that interesting to focus on them for now. >> >> ------ >> >> Now to the explanation of how it works. >> >> You declare a column as encrypted in a CREATE TABLE statement.  The >> column value is encrypted by a symmetric key called the column >> encryption key (CEK).  The CEK is a catalog object.  The CEK key >> material is in turn encrypted by an assymmetric key called the column >> master key (CMK).  The CMK is not stored in the database but somewhere >> where the client can get to it, for example in a file or in a key >> management system.  When a server sends rows containing encrypted >> column values to the client, it first sends the required CMK and CEK >> information (new protocol messages), which the client needs to record. >> Then, the client can use this information to automatically decrypt the >> incoming row data and forward it in plaintext to the application. >> >> For the CMKs, the catalog object specifies a "provider" and generic >> options.  Right now, libpq has a "file" provider hardcoded, and it >> takes a "filename" option.  Via some mechanism to be determined, >> additional providers could be loaded and then talk to key management >> systems via http or whatever.  I have left some comments in the libpq >> code where the hook points for this could be. >> >> The general idea would be for an application to have one CMK per area >> of secret stuff, for example, for credit card data.  The CMK can be >> rotated: each CEK can be represented multiple times in the database, >> encrypted by a different CMK.  (The CEK can't be rotated easily, since >> that would require reading out all the data from a table/column and >> reencrypting it.  We could/should add some custom tooling for that, >> but it wouldn't be a routine operation.) >> >> The encryption algorithms are mostly hardcoded right now, but there >> are facilities for picking algorithms and adding new ones that will be >> expanded.  The CMK process uses RSA-OAEP.  The CEK process uses >> AES-128-CBC right now; a more complete solution should probably >> involve some HMAC thrown in. >> >> In the server, the encrypted datums are stored in types called >> encryptedr and encryptedd (for randomized and deterministic >> encryption).  These are essentially cousins of bytea.  For the rest of >> the database system below the protocol handling, there is nothing >> special about those.  For example, encryptedr has no operators at all, >> encryptedd has only an equality operator.  pg_attribute has a new >> column attrealtypid that stores the original type of the data in the >> column.  This is only used for providing it to clients, so that >> higher-level clients can convert the decrypted value to their >> appropriate data types in their environments. >> >> Some protocol extensions are required.  These should be guarded by >> some _pq_... setting, but this is not done in this patch yet.  As >> mentioned above, extra messages are added for sending the CMKs and >> CEKs.  In the RowDescription message, I have commandeered the format >> field to add a bit that indicates that the field is encrypted.  This >> could be made a separate field, and there should probably be >> additional fields to indicate the algorithm and CEK name, but this was >> easiest for now.  The ParameterDescription message is extended to >> contain format fields for each parameter, for the same purpose. >> Again, this could be done differently. >> >> Speaking of parameter descriptions, the trickiest part of this whole >> thing appears to be how to get transparently encrypted data into the >> database (as opposed to reading it out).  It is required to use >> protocol-level prepared statements (i.e., extended query) for this. >> The client must first prepare a statement, then describe the statement >> to get parameter metadata, which indicates which parameters are to be >> encrypted and how.  So this will require some care by applications >> that want to do this, but, well, they probably should be careful >> anyway.  In libpq, the existing APIs make this difficult, because >> there is no way to pass the result of a describe-statement call back >> into execute-statement-with-parameters.  I added new functions that do >> this, so you then essentially do >> >>      res0 = PQdescribePrepared(conn, ""); >>      res = PQexecPrepared2(conn, "", 2, values, NULL, NULL, 0, res0); >> >> (The name could obviously be improved.)  Other client APIs that have a >> "statement handle" concept could do this more elegantly and probably >> without any API changes. >> >> Another challenge is that the parse analysis must check which >> underlying column a parameter corresponds to.  This is similar to >> resorigtbl and resorigcol in the opposite direction.  The current >> implementation of this works for the test cases, but I know it has >> some problems, so I'll continue working in this.  This functionality >> is in principle available to all prepared-statement variants, not only >> protocol-level.  So you can see in the tests that I expanded the >> pg_prepared_statements view to show this information as well, which >> also provides an easy way to test and debug this functionality >> independent of column encryption. >> >> And also, psql doesn't use prepared statements, so writing into >> encrypted columns currently doesn't work at all via psql.  (Reading >> works no problem.)  All the test code currently uses custom libpq C >> programs.  We should think about a way to enable prepared statements >> in psql, perhaps something like >> >> INSERT INTO t1 VALUES ($1, $2) \gg 'val1' 'val2' >> >> (\gexec and \gx are already taken.) >> >> ------ >> >> This is not targeting PostgreSQL 15.  But I'd appreciate some feedback >> on the direction.  As I mentioned above, a lot of the remaining work >> is arguably mostly straightforward.  Some closer examination of the >> issues surrounding the libpq API changes and psql would be useful. >> Perhaps there are other projects where that kind of functionality >> would also be useful. --------------yyXS9RW1ewvmcEGajBn6MQpX Content-Type: text/plain; charset=UTF-8; name="v3-0001-Transparent-column-encryption.patch" Content-Disposition: attachment; filename="v3-0001-Transparent-column-encryption.patch" Content-Transfer-Encoding: base64 RnJvbSBiY2I5ZGY4ZWFhZmRkMWI1YTA1ZDhlYTRiYjViMmFmMDAxZjY0MDNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA1IEp1bCAyMDIyIDEyOjQ4OjE4ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2M10gVHJhbnNwYXJlbnQgY29sdW1uIGVuY3J5cHRpb24KCi0tLQogZG9jL3Ny Yy9zZ21sL2Fjcm9ueW1zLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsKIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8IDI3NSArKysrKysr CiBkb2Mvc3JjL3NnbWwvZGF0YXR5cGUuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgNDcg KysKIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3 MyArKwogZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwgICAgICAgICAgICAgICAgICAgIHwg IDIzICsKIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sICAgICAgICAgICAgICAgICAgICAgICB8 IDI1NyArKysrKy0KIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICB8IDM0NiArKysrKysrKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dt bCAgICAgICAgICAgIHwgIDQyICstCiBkb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwg ICAgICAgICAgICAgICAgfCAgMzMgKwogc3JjL3Rlc3QvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi8u Z2l0aWdub3JlICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24v TWFrZWZpbGUgICAgICAgICAgIHwgIDI5ICsKIC4uLi90LzAwMV9jb2x1bW5fZW5jcnlwdGlv bi5wbCAgICAgICAgICAgICAgICB8IDIwNiArKysrKwogLi4uL2NvbHVtbl9lbmNyeXB0aW9u L3QvMDAyX2Nta19yb3RhdGlvbi5wbCAgIHwgMTQ0ICsrKysKIHNyYy90ZXN0L2NvbHVtbl9l bmNyeXB0aW9uL3Rlc3RfY2xpZW50LmMgICAgICB8IDIxMCArKysrKwogLi4uL2NvbHVtbl9l bmNyeXB0aW9uL3Rlc3RfcnVuX2RlY3J5cHQucGwgICAgIHwgIDQxICsKIC4uLi90cmFjZXMv ZGlzYWxsb3dlZF9pbl9waXBlbGluZS50cmFjZSAgICAgICB8ICAgMiArLQogLi4uL3RyYWNl cy9tdWx0aV9waXBlbGluZXMudHJhY2UgICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vbGli cHFfcGlwZWxpbmUvdHJhY2VzL25vc3luYy50cmFjZSAgICAgICAgfCAgMjAgKy0KIC4uLi90 cmFjZXMvcGlwZWxpbmVfYWJvcnQudHJhY2UgICAgICAgICAgICAgICB8ICAgNCArLQogLi4u L2xpYnBxX3BpcGVsaW5lL3RyYWNlcy9wcmVwYXJlZC50cmFjZSAgICAgIHwgICA2ICstCiAu Li4vdHJhY2VzL3NpbXBsZV9waXBlbGluZS50cmFjZSAgICAgICAgICAgICAgfCAgIDIgKy0K IC4uLi9saWJwcV9waXBlbGluZS90cmFjZXMvc2luZ2xlcm93LnRyYWNlICAgICB8ICAgNiAr LQogLi4uL2xpYnBxX3BpcGVsaW5lL3RyYWNlcy90cmFuc2FjdGlvbi50cmFjZSAgIHwgICAy ICstCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2x1bW5fZW5jcnlwdGlvbi5vdXQgICAgfCAg NTkgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0ICAgICAgICB8 ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0ICAgICAg fCAgMTIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJlcGFyZS5vdXQgICAgICAg ICB8ICAzOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAgICAg ICAgIHwgIDI1ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAg ICAgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90eXBlX3Nhbml0eS5v dXQgICAgIHwgIDIwICstCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAg ICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNzX21haW4uYyAg ICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2x1bW5fZW5jcnlw dGlvbi5zcWwgICAgfCAgNTAgKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBhcmUuc3Fs ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwg ICAgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3R5cGVfc2Fu aXR5LnNxbCAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVw LmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1v cC5kYXQgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ft cHJvYy5kYXQgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h dHRyaWJ1dGUuaCAgICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y2FzdC5kYXQgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NvbGVuY2tleS5oICAgICAgICAgICAgfCAgNTUgKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfY29sZW5ja2V5ZGF0YS5oICAgICAgICB8ICA0NiArKwogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jb2xtYXN0ZXJrZXkuaCAgICAgICAgIHwgIDQ1ICsrCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX29wY2xhc3MuZGF0ICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19vcGVyYXRvci5kYXQgICAgICAgICAgIHwgIDEwICsKIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfb3BmYW1pbHkuZGF0ICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfdHlwZS5kYXQgICAgICAgICAgICAgICB8ICAxMiArCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3R5cGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL3BhcnNlci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV9wYXJhbS5oICAgICAgICAgICAgICB8ICAgMyArLQogc3Jj L2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgNiArCiBz cmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDQgKwog c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9wcmludHNpbXBsZS5jICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnR0dXAuYyAgICAgICAgICB8IDE2MiAr KysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYyAgICAgICAgICAgfCAg MTIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHZhbGlkYXRlLmMgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlICAgICAgICAgICAgICAgICAg fCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgICAg ICB8ICAgMyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAg ICAgfCAgNzQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAg ICAgICB8ICA3NCArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAg ICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAg ICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAg ICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAg ICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3BhcmFt LmMgICAgICAgICAgICAgIHwgIDQzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFy Z2V0LmMgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j ICAgICAgICAgICAgICAgICAgIHwgIDU0ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJy YXlmdW5jcy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cGxhbmNhY2hlLmMgICAgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3N5c2NhY2hlLmMgICAgICAgICAgICB8ICAzOSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BzcWwvY29tbWFu ZC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzEgKwogc3JjL2Jpbi9wc3FsL2NvbW1v bi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM5ICstCiBzcmMvYmluL3BzcWwvZGVz Y3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKy0KIHNyYy9iaW4vcHNxbC9o ZWxwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmluL3BzcWwv c2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2Jpbi9wc3Fs L3N0YXJ0dXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuYyAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2ludGVy ZmFjZXMvbGlicHEvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbnRl cmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0ICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgICAgICAgICAgICAgfCAgMjAgKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtZW5jcnlwdC1vcGVuc3NsLmMgICAgIHwgNzU4ICsrKysrKysr KysrKysrKysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZW5jcnlwdC5oICAgICAgICAg ICAgIHwgIDMzICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYyAgICAgICAgICAg ICAgICB8IDU5NCArKysrKysrKysrKysrLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJv dG9jb2wzLmMgICAgICAgICAgIHwgMTIzICsrLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt dHJhY2UuYyAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xp YnBxLWZlLmggICAgICAgICAgICAgICB8ICAyMiArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9s aWJwcS1pbnQuaCAgICAgICAgICAgICAgfCAgMzQgKwogc3JjL2ludGVyZmFjZXMvbGlicHEv bmxzLm1rICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW50ZXJmYWNlcy9saWJw cS90ZXN0Ly5naXRpZ25vcmUgICAgICAgICAgfCAgIDEgKwogc3JjL2ludGVyZmFjZXMvbGli cHEvdGVzdC9NYWtlZmlsZSAgICAgICAgICAgIHwgICA3ICsKIC4uLi9wb3N0Z3Jlc19mZHcv ZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8ICAgMiArLQogMTAyIGZpbGVzIGNoYW5n ZWQsIDQ0MDcgaW5zZXJ0aW9ucygrKSwgMTMwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uLy5naXRpZ25vcmUKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi9NYWtlZmlsZQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL3QvMDAxX2NvbHVtbl9l bmNyeXB0aW9uLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvY29sdW1uX2VuY3J5 cHRpb24vdC8wMDJfY21rX3JvdGF0aW9uLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvY29sdW1uX2VuY3J5cHRpb24vdGVzdF9jbGllbnQuYwogY3JlYXRlIG1vZGUgMTAwNzU1 IHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL3Rlc3RfcnVuX2RlY3J5cHQucGwKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbHVtbl9lbmNyeXB0 aW9uLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbHVt bl9lbmNyeXB0aW9uLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfY29sZW5ja2V5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbGVuY2tleWRhdGEuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY29sbWFzdGVya2V5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LW9wZW5zc2wuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWVuY3J5cHQuaAoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9hY3Jvbnltcy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Fjcm9ueW1zLnNnbWwKaW5k ZXggOWVkMTQ4YWI4NC4uZTIxYzliY2NlMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Fj cm9ueW1zLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Fjcm9ueW1zLnNnbWwKQEAgLTU2LDYg KzU2LDE1IEBAIDx0aXRsZT5BY3JvbnltczwvdGl0bGU+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxhY3Jv bnltPkNFSzwvYWNyb255bT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIENvbHVtbiBFbmNyeXB0aW9uIEtleQorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0 ZXJtPjxhY3JvbnltPkNJRFI8L2Fjcm9ueW0+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAg LTY3LDYgKzc2LDE1IEBAIDx0aXRsZT5BY3JvbnltczwvdGl0bGU+CiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxhY3JvbnltPkNNSzwvYWNyb255bT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIENvbHVtbiBNYXN0ZXIgS2V5CisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg PHRlcm0+PGFjcm9ueW0+Q1BBTjwvYWNyb255bT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbAppbmRleCA0ZjNmMzc1YTg0Li5jNWUzMGY4MDI5IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbApAQCAtMTA1LDYgKzEwNSwyMSBAQCA8dGl0bGU+U3lzdGVtIENhdGFsb2dzPC90 aXRsZT4KICAgICAgIDxlbnRyeT5jb2xsYXRpb25zIChsb2NhbGUgaW5mb3JtYXRpb24pPC9l bnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGluayBs aW5rZW5kPSJjYXRhbG9nLXBnLWNvbGVuY2tleSI+PHN0cnVjdG5hbWU+cGdfY29sZW5ja2V5 PC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PmNvbHVtbiBlbmNy eXB0aW9uIGtleXM8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAg PGVudHJ5PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctY29sZW5ja2V5ZGF0YSI+PHN0cnVj dG5hbWU+cGdfY29sZW5ja2V5ZGF0YTwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAg ICAgIDxlbnRyeT5jb2x1bW4gZW5jcnlwdGlvbiBrZXkgZGF0YTwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxv Zy1wZy1jb2xtYXN0ZXJrZXkiPjxzdHJ1Y3RuYW1lPnBnX2NvbG1hc3RlcmtleTwvc3RydWN0 bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5jb2x1bW4gbWFzdGVyIGtleXM8 L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3Ry YWludDwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5jaGVjayBj b25zdHJhaW50cywgdW5pcXVlIGNvbnN0cmFpbnRzLCBwcmltYXJ5IGtleSBjb25zdHJhaW50 cywgZm9yZWlnbiBrZXkgY29uc3RyYWludHM8L2VudHJ5PgpAQCAtMTM2MCw2ICsxMzc1LDQw IEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+IENvbHVt bnM8L3RpdGxlPgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hdHRjZWs8 L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxp bmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jb2xlbmNrZXkiPjxzdHJ1Y3RuYW1lPnBnX2NvbGVu Y2tleTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIElmIHRoZSBjb2x1bW4g aXMgZW5jcnlwdGVkLCBhIHJlZmVyZW5jZSB0byB0aGUgY29sdW1uIGVuY3J5cHRpb24ga2V5 LCBlbHNlIDAuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmF0dHJlYWx0 eXBpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNl cyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXR5cGUiPjxzdHJ1Y3RuYW1lPnBnX3R5cGU8 L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJZiB0aGUgY29sdW1uIGlzIGVu Y3J5cHRlZCwgdGhlbiB0aGlzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIHR5cGUgb2YgdGhlCisg ICAgICAgZW5jcnlwdGVkIGRhdGEgdGhhdCBpcyByZXBvcnRlZCB0byB0aGUgY2xpZW50LiAg Rm9yIGVuY3J5cHRlZCBjb2x1bW5zLAorICAgICAgIHRoZSBmaWVsZCA8c3RydWN0ZmllbGQ+ YXR0dHlwaWQ8L3N0cnVjdGZpZWxkPiBpcyBlaXRoZXIKKyAgICAgICA8dHlwZT5wZ19lbmNy eXB0ZWRfZGV0PC90eXBlPiBvciA8dHlwZT5wZ19lbmNyeXB0ZWRfcm5kPC90eXBlPi4gIElm IHRoZQorICAgICAgIGNvbHVtbiBpcyBub3QgZW5jcnlwdGVkLCB0aGVuIDAuCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmF0dGVuY2FsZzwvc3RydWN0ZmllbGQ+IDx0 eXBlPmludDE2PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg SWYgdGhlIGNvbHVtbiBpcyBlbmNyeXB0ZWQsIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBlbmNy eXB0aW9uIGFsZ29yaXRobTsKKyAgICAgICBzZWUgPHhyZWYgbGlua2VuZD0icHJvdG9jb2wt Y2VrIi8+IGZvciBwb3NzaWJsZSB2YWx1ZXMuCisgICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxz dHJ1Y3RmaWVsZD5hdHRpbmhjb3VudDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDQ8L3R5cGU+ CkBAIC0yNDM3LDYgKzI0ODYsMjMyIEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19jb2xsYXRp b248L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgogICA8L3BhcmE+CiAgPC9zZWN0MT4K IAorIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1jb2xlbmNrZXkiPgorICA8dGl0bGU+PHN0cnVj dG5hbWU+cGdfY29sZW5ja2V5PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVy bSB6b25lPSJjYXRhbG9nLXBnLWNvbGVuY2tleSI+CisgICA8cHJpbWFyeT5wZ19jb2xlbmNr ZXk8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIGNhdGFs b2cgPHN0cnVjdG5hbWU+cGdfY29sZW5ja2V5PC9zdHJ1Y3RuYW1lPiBjb250YWlucyBpbmZv cm1hdGlvbgorICAgYWJvdXQgdGhlIGNvbHVtbiBlbmNyeXB0aW9uIGtleXMgaW4gdGhlIGRh dGFiYXNlLiAgVGhlIGFjdHVhbCBrZXkgbWF0ZXJpYWwKKyAgIG9mIHRoZSBjb2x1bW4gZW5j cnlwdGlvbiBrZXlzIGlzIGluIHRoZSBjYXRhbG9nIDxsaW5rCisgICBsaW5rZW5kPSJjYXRh bG9nLXBnLWNvbGVuY2tleWRhdGEiPjxzdHJ1Y3RuYW1lPnBnX2NvbGVuY2tleWRhdGE8L3N0 cnVjdG5hbWU+PC9saW5rPi4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48 c3RydWN0bmFtZT5wZ19jb2xlbmNrZXk8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgor ICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8 dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBS b3cgaWRlbnRpZmllcgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jZWtu YW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIENvbHVtbiBlbmNyeXB0aW9uIGtleSBuYW1lCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNla293bmVyPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFs b2ctcGctYXV0aGlkIj48c3RydWN0bmFtZT5wZ19hdXRoaWQ8L3N0cnVjdG5hbWU+PC9saW5r Pi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBPd25lciBvZiB0aGUgY29sdW1uIGVuY3J5cHRpb24ga2V5Cisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwv dGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKyA8c2VjdDEgaWQ9ImNhdGFsb2ct cGctY29sZW5ja2V5ZGF0YSI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19jb2xlbmNrZXlk YXRhPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9n LXBnLWNvbGVuY2tleWRhdGEiPgorICAgPHByaW1hcnk+cGdfY29sZW5ja2V5ZGF0YTwvcHJp bWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3Ry dWN0bmFtZT5wZ19jb2xlbmNrZXlkYXRhPC9zdHJ1Y3RuYW1lPiBjb250YWlucyB0aGUga2V5 CisgICBtYXRlcmlhbCBvZiBjb2x1bW4gZW5jcnlwdGlvbiBrZXlzLiAgRWFjaCBjb2x1bW4g ZW5jcnlwdGlvbiBrZXkgb2JqZWN0IGNhbgorICAgY29udGFpbiBzZXZlcmFsIHZlcnNpb25z IG9mIHRoZSBrZXkgbWF0ZXJpYWwsIGVhY2ggZW5jcnlwdGVkIHdpdGggYQorICAgZGlmZmVy ZW50IGNvbHVtbiBtYXN0ZXIga2V5LiAgVGhhdCBhbGxvd3MgdGhlIGdyYWR1YWwgcm90YXRp b24gb2YgdGhlCisgICBjb2x1bW4gbWFzdGVyIGtleXMuICBUaHVzLCA8bGl0ZXJhbD4oY2tk Y2VraWQsIGNrZGNta2lkKTwvbGl0ZXJhbD4gaXMgYQorICAgdW5pcXVlIGtleSBvZiB0aGlz IHRhYmxlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUga2V5IG1hdGVyaWFsIG9m IGNvbHVtbiBlbmNyeXB0aW9uIGtleXMgc2hvdWxkIG5ldmVyIGJlIGRlY3J5cHRlZCBpbnNp ZGUKKyAgIHRoZSBkYXRhYmFzZSBpbnN0YW5jZS4gIEl0IGlzIG1lYW50IHRvIGJlIHNlbnQg YXMtaXMgdG8gdGhlIGNsaWVudCwgd2hlcmUKKyAgIGl0IGlzIGRlY3J5cHRlZCB1c2luZyB0 aGUgYXNzb2NpYXRlZCBjb2x1bW4gbWFzdGVyIGtleSwgYW5kIHRoZW4gdXNlZCB0bworICAg ZW5jcnlwdCBvciBkZWNyeXB0IGNvbHVtbiB2YWx1ZXMuCisgIDwvcGFyYT4KKworICA8dGFi bGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfY29sZW5ja2V5ZGF0YTwvc3RydWN0bmFt ZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9k eT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk Pm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmNrZGNla2lkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBl PgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctY29sZW5j a2V5Ij48c3RydWN0bmFtZT5wZ19jb2xlbmNrZXk8L3N0cnVjdG5hbWU+PC9saW5rPi48c3Ry dWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBUaGUgY29sdW1uIGVuY3J5cHRpb24ga2V5IHRoaXMgZW50cnkgYmVsb25n cyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5ja2RjbWtpZDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBs aW5rZW5kPSJjYXRhbG9nLXBnLWNvbG1hc3RlcmtleSI+PHN0cnVjdG5hbWU+cGdfY29sbWFz dGVya2V5PC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0Zmll bGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGNvbHVtbiBt YXN0ZXIga2V5IHRoYXQgdGhlIGtleSBtYXRlcmlhbCBpcyBlbmNyeXB0ZWQgd2l0aAorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5ja2RjbWthbGc8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnQxNjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB1c2VkIGZvciBlbmNyeXB0aW5nIHRoZSBr ZXkgbWF0ZXJpYWw7IHNlZQorICAgICAgIDx4cmVmIGxpbmtlbmQ9InByb3RvY29sLWNtayIv PiBmb3IgcG9zc2libGUgdmFsdWVzLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5ja2RlbmN2YWw8L3N0cnVjdGZpZWxkPiA8dHlwZT5ieXRlYTwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBrZXkgbWF0ZXJpYWwgb2YgdGhp cyBjb2x1bW4gZW5jcnlwdGlvbiBrZXksIGVuY3J5cHRlZCB1c2luZyB0aGUKKyAgICAgICBy ZWZlcmVuY2VkIGNvbHVtbiBtYXN0ZXIga2V5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwv c2VjdDE+CisKKyA8c2VjdDEgaWQ9ImNhdGFsb2ctcGctY29sbWFzdGVya2V5Ij4KKyAgPHRp dGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbG1hc3RlcmtleTwvc3RydWN0bmFtZT48L3RpdGxlPgor CisgIDxpbmRleHRlcm0gem9uZT0iY2F0YWxvZy1wZy1jb2xtYXN0ZXJrZXkiPgorICAgPHBy aW1hcnk+cGdfY29sbWFzdGVya2V5PC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8 cGFyYT4KKyAgIFRoZSBjYXRhbG9nIDxzdHJ1Y3RuYW1lPnBnX2NvbG1hc3RlcmtleTwvc3Ry dWN0bmFtZT4gY29udGFpbnMgaW5mb3JtYXRpb24KKyAgIGFib3V0IGNvbHVtbiBtYXN0ZXIg a2V5cy4gIFRoZSBrZXlzIHRoZW1zZWx2ZXMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlCisgICBk YXRhYmFzZS4gIFRoZSBjYXRhbG9nIGVudHJ5IG9ubHkgY29udGFpbnMgaW5mb3JtYXRpb24g dGhhdCBpcyB1c2VkIGJ5CisgICBjbGllbnRzIHRvIGxvY2F0ZSB0aGUga2V5cywgZm9yIGV4 YW1wbGUgaW4gYSBmaWxlIG9yIGluIGEga2V5IG1hbmFnZW1lbnQKKyAgIHN5c3RlbS4KKyAg PC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19jb2xtYXN0 ZXJrZXk8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIx Ij4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNj cmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhl YWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jbWtuYW1lPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IENvbHVtbiBtYXN0ZXIga2V5IG5hbWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+Y21rb3duZXI8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAg KHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdXRoaWQiPjxzdHJ1Y3Ru YW1lPnBnX2F1dGhpZDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0 cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE93bmVy IG9mIHRoZSBjb2x1bW4gbWFzdGVyIGtleQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5jbWtyZWFsbTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBBIDxxdW90ZT5yZWFsbTwvcXVvdGU+ IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbHVtbiBtYXN0ZXIga2V5LiAgVGhpcyBpcworICAg ICAgIGEgZnJlZWx5IGNob3NlbiBzdHJpbmcgdGhhdCBpcyB1c2VkIGJ5IGNsaWVudHMgdG8g ZGV0ZXJtaW5lIGhvdyB0byBsb29rCisgICAgICAgdXAgdGhlIGtleS4gIEEgdHlwaWNhbCBj b25maWd1cmF0aW9uIHdvdWxkIHB1dCBhbGwgQ01LcyB0aGF0IGFyZSBsb29rZWQKKyAgICAg ICB1cCBpbiB0aGUgc2FtZSB3YXkgaW50byB0aGUgc2FtZSByZWFsbS4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+Cisg IDwvdGFibGU+CisgPC9zZWN0MT4KKwogIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1jb25zdHJh aW50Ij4KICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbnN0cmFpbnQ8L3N0cnVjdG5hbWU+ PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RhdGF0eXBlLnNnbWwgYi9k b2Mvc3JjL3NnbWwvZGF0YXR5cGUuc2dtbAppbmRleCA4ZTMwYjgyMjczLi5jZGQwNTMwZWVi IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGF0YXR5cGUuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvZGF0YXR5cGUuc2dtbApAQCAtNTM0Miw0ICs1MzQyLDUxIEBAIDx0aXRsZT5Qc2V1 ZG8tVHlwZXM8L3RpdGxlPgogCiAgIDwvc2VjdDE+CiAKKyAgPHNlY3QxIGlkPSJkYXRhdHlw ZS1lbmNyeXB0ZWQiPgorICAgPHRpdGxlPlR5cGVzIFJlbGF0ZWQgdG8gRW5jcnlwdGlvbjwv dGl0bGU+CisKKyAgIDxwYXJhPgorICAgIEFuIGVuY3J5cHRlZCBjb2x1bW4gdmFsdWUgKHNl ZSA8eHJlZiBsaW5rZW5kPSJkZGwtY29sdW1uLWVuY3J5cHRpb24iLz4pIGlzCisgICAgaW50 ZXJuYWxseSBzdG9yZWQgdXNpbmcgdGhlIHR5cGVzCisgICAgPHR5cGU+cGdfZW5jcnlwdGVk X3JuZDwvdHlwZT4gKGZvciByYW5kb21pemVkIGVuY3J5cHRpb24pIG9yCisgICAgPHR5cGU+ cGdfZW5jcnlwdGVkX2RldDwvdHlwZT4gKGZvciBkZXRlcm1pbmlzdGljIGVuY3J5cHRpb24p OyBzZWUgPHhyZWYKKyAgICBsaW5rZW5kPSJkYXRhdHlwZS1lbmNyeXB0ZWQtdGFibGUiLz4u ICBNb3N0IG9mIHRoZSBkYXRhYmFzZSBzeXN0ZW0gdHJlYXRzCisgICAgdGhpcyBhcyBub3Jt YWwgdHlwZXMuICBGb3IgZXhhbXBsZSwgdGhlIHR5cGUgPHR5cGU+cGdfZW5jcnlwdGVkX2Rl dDwvdHlwZT4gaGFzCisgICAgYW4gZXF1YWxzIG9wZXJhdG9yIHRoYXQgYWxsb3dzIGxvb2t1 cCBvZiBlbmNyeXB0ZWQgdmFsdWVzLiAgVGhlIGV4dGVybmFsCisgICAgcmVwcmVzZW50YXRp b24gb2YgdGhlc2UgdHlwZXMgaXMgdGhlIHNhbWUgYXMgdGhlIDx0eXBlPmJ5dGVhPC90eXBl PiB0eXBlLgorICAgIFRodXMsIGNsaWVudHMgdGhhdCBkb24ndCBzdXBwb3J0IHRyYW5zcGFy ZW50IGNvbHVtbiBlbmNyeXB0aW9uIG9yIGhhdmUKKyAgICBkaXNhYmxlZCBpdCB3aWxsIHNl ZSB0aGUgZW5jcnlwdGVkIHZhbHVlcyBhcyBieXRlIGFycmF5cy4gIENsaWVudHMgdGhhdAor ICAgIHN1cHBvcnQgdHJhbnNwYXJlbnQgZGF0YSBlbmNyeXB0aW9uIHdpbGwgbm90IHNlZSB0 aGVzZSB0eXBlcyBpbiByZXN1bHQKKyAgICBzZXRzLCBhcyB0aGUgcHJvdG9jb2wgbGF5ZXIg d2lsbCB0cmFuc2xhdGUgdGhlbSBiYWNrIHRvIGRlY2xhcmVkCisgICAgdW5kZXJseWluZyB0 eXBlIGluIHRoZSB0YWJsZSBkZWZpbml0aW9uLgorICAgPC9wYXJhPgorCisgICAgPHRhYmxl IGlkPSJkYXRhdHlwZS1lbmNyeXB0ZWQtdGFibGUiPgorICAgICA8dGl0bGU+VHlwZXMgUmVs YXRlZCB0byBFbmNyeXB0aW9uPC90aXRsZT4KKyAgICAgPHRncm91cCBjb2xzPSIzIj4KKyAg ICAgIDxjb2xzcGVjIGNvbG5hbWU9ImNvbDEiIGNvbHdpZHRoPSIxKiIvPgorICAgICAgPGNv bHNwZWMgY29sbmFtZT0iY29sMiIgY29sd2lkdGg9IjMqIi8+CisgICAgICA8Y29sc3BlYyBj b2xuYW1lPSJjb2wzIiBjb2x3aWR0aD0iMioiLz4KKyAgICAgIDx0aGVhZD4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnk+TmFtZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5TdG9y YWdlIFNpemU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgPC90aGVhZD4KKyAgICAgIDx0Ym9keT4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnk+PHR5cGU+cGdfZW5jcnlwdGVkX2RldDwvdHlwZT48L2Vu dHJ5PgorICAgICAgICA8ZW50cnk+MSBvciA0IGJ5dGVzIHBsdXMgdGhlIGFjdHVhbCBiaW5h cnkgc3RyaW5nPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PmVuY3J5cHRlZCBjb2x1bW4gdmFs dWUsIGRldGVybWluaXN0aWMgZW5jcnlwdGlvbjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5Pjx0eXBlPnBnX2VuY3J5cHRlZF9ybmQ8L3R5 cGU+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PjEgb3IgNCBieXRlcyBwbHVzIHRoZSBhY3R1 YWwgYmluYXJ5IHN0cmluZzwvZW50cnk+CisgICAgICAgIDxlbnRyeT5lbmNyeXB0ZWQgY29s dW1uIHZhbHVlLCByYW5kb21pemVkIGVuY3J5cHRpb248L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgPC90Ym9keT4KKyAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9z ZWN0MT4KICA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggYjAxZTNhZDU0NC4uYmI4NTAzNTg0ZSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9k ZGwuc2dtbApAQCAtMTIxMSw2ICsxMjExLDc5IEBAIDx0aXRsZT5FeGNsdXNpb24gQ29uc3Ry YWludHM8L3RpdGxlPgogICA8L3NlY3QyPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImRk bC1jb2x1bW4tZW5jcnlwdGlvbiI+CisgIDx0aXRsZT5UcmFuc3BhcmVudCBDb2x1bW4gRW5j cnlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBXaXRoIDxmaXJzdHRlcm0+dHJhbnNw YXJlbnQgY29sdW1uIGVuY3J5cHRpb248L2ZpcnN0dGVybT4sIGNvbHVtbnMgY2FuIGJlCisg ICBzdG9yZWQgZW5jcnlwdGVkIGluIHRoZSBkYXRhYmFzZS4gIFRoZSBlbmNyeXB0aW9uIGFu ZCBkZWNyeXB0aW9uIGhhcHBlbnMgb24KKyAgIHRoZSBjbGllbnQsIHNvIHRoYXQgdGhlIHBs YWludGV4dCB2YWx1ZSBpcyBuZXZlciBzZWVuIGluIHRoZSBkYXRhYmFzZQorICAgaW5zdGFu Y2Ugb3Igb24gdGhlIHNlcnZlciBob3N0aW5nIHRoZSBkYXRhYmFzZS4gIFRoZSBkcmF3YmFj ayBpcyB0aGF0IG1vc3QKKyAgIG9wZXJhdGlvbnMsIHN1Y2ggYXMgZnVuY3Rpb24gY2FsbHMg b3Igc29ydGluZywgYXJlIG5vdCBwb3NzaWJsZSBvbgorICAgZW5jcnlwdGVkIHZhbHVlcy4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVHJhbnBhcmVudCBjb2x1bW4gZW5jcnlwdGlv biB1c2VzIHR3byBsZXZlbHMgb2YgY3J5cHRvZ3JhcGhpYyBrZXlzLiAgVGhlCisgICBhY3R1 YWwgY29sdW1uIHZhbHVlIGlzIGVuY3J5cHRlZCB1c2luZyBhIHN5bW1ldHJpYyBhbGdvcml0 aG0sIHN1Y2ggYXMgQUVTLAorICAgdXNpbmcgYSA8Zmlyc3R0ZXJtPmNvbHVtbiBlbmNyeXB0 aW9uIGtleTwvZmlyc3R0ZXJtPgorICAgKDxhY3JvbnltPkNFSzwvYWNyb255bT4pLiAgVGhl IGNvbHVtbiBlbmNyeXB0aW9uIGtleSBpcyBpbiB0dXJuIGVuY3J5cHRlZAorICAgdXNpbmcg YW4gYXNzeW1tZXRyaWMgYWxnb3JpdGhtLCBzdWNoIGFzIFJTQSwgdXNpbmcgYSA8Zmlyc3R0 ZXJtPmNvbHVtbgorICAgbWFzdGVyIGtleTwvZmlyc3R0ZXJtPiAoPGFjcm9ueW0+Q01LPC9h Y3JvbnltPikuICBUaGUgZW5jcnlwdGVkIENFSyBpcworICAgc3RvcmVkIGluIHRoZSBkYXRh YmFzZSBzeXN0ZW0uICBUaGUgQ01LIGlzIG5vdCBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlCisg ICBzeXN0ZW07IGl0IGlzIHN0b3JlZCBvbiB0aGUgY2xpZW50IG9yIHNvbWV3aGVyZSB3aGVy ZSB0aGUgY2xpZW50IGNhbiBhY2Nlc3MKKyAgIGl0LCBzdWNoIGFzIGluIGEgbG9jYWwgZmls ZSBvciBpbiBhIGtleSBtYW5hZ2VtZW50IHN5c3RlbS4gIFRoZSBkYXRhYmFzZQorICAgc3lz dGVtIG9ubHkgcmVjb3JkcyB3aGVyZSB0aGUgQ01LIGlzIHN0b3JlZCBhbmQgcHJvdmlkZXMg dGhpcyBpbmZvcm1hdGlvbgorICAgdG8gdGhlIGNsaWVudC4gIFdoZW4gcm93cyBjb250YWlu aW5nIGVuY3J5cHRlZCBjb2x1bW5zIGFyZSBzZW50IHRvIHRoZQorICAgY2xpZW50LCB0aGUg c2VydmVyIGZpcnN0IHNlbmRzIGFueSBuZWNlc3NhcnkgQ01LIGluZm9ybWF0aW9uLCBmb2xs b3dlZCBieQorICAgYW55IHJlcXVpcmVkIENFSy4gIFRoZSBjbGllbnQgdGhlbiBsb29rcyB1 cCB0aGUgQ01LIGFuZCB1c2VzIHRoYXQgdG8KKyAgIGRlY3J5cHQgdGhlIENFSy4gIFRoZW4g aXQgZGVjcnlwdHMgaW5jb21pbmcgcm93IGRhdGEgdXNpbmcgdGhlIENFSyBhbmQKKyAgIHBy b3ZpZGVzIHRoZSBkZWNyeXB0ZWQgcm93IGRhdGEgdG8gdGhlIGFwcGxpY2F0aW9uLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBIZXJlIGlzIGFuIGV4YW1wbGUgZGVjbGFyaW5nIGEg Y29sdW1uIGFzIGVuY3J5cHRlZDoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBUQUJMRSBj dXN0b21lcnMgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBuYW1lIHRleHQgTk9U IE5VTEwsCisgICAgLi4uCisgICAgY3JlZGl0Y2FyZF9udW0gdGV4dCA8ZW1waGFzaXM+RU5D UllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9IGNlazEpPC9lbXBoYXNpcz4K Kyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBDb2x1 bW4gZW5jcnlwdGlvbiBzdXBwb3J0cyA8Zmlyc3R0ZXJtPnJhbmRvbWl6ZWQ8L2ZpcnN0dGVy bT4KKyAgIChhbHNvIGtub3duIGFzIDxmaXJzdHRlcm0+cHJvYmFiaWxpc3RpYzwvZmlyc3R0 ZXJtPikgYW5kCisgICA8Zmlyc3R0ZXJtPmRldGVybWluaXN0aWM8L2ZpcnN0dGVybT4gZW5j cnlwdGlvbi4gIFRoZSBhYm92ZSBleGFtcGxlIHVzZXMKKyAgIHJhbmRvbWl6ZWQgZW5jcnlw dGlvbiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuICBSYW5kb21pemVkIGVuY3J5cHRpb24gdXNl cyBhCisgICByYW5kb20gaW5pdGlhbGl6YXRpb24gdmVjdG9yIGZvciBlYWNoIGVuY3J5cHRp b24sIHNvIHRoYXQgZXZlbiBpZiB0aGUKKyAgIHBsYWludGV4dCBvZiB0d28gcm93cyBpcyBl cXVhbCwgdGhlIGVuY3J5cHRlZCB2YWx1ZXMgd2lsbCBiZSBkaWZmZXJlbnQuCisgICBUaGlz IHByZXZlbnRzIHNvbWVvbmUgd2l0aCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBkYXRhYmFzZSBz ZXJ2ZXIgdG8gbWFrZQorICAgY29tcHV0YXRpb25zIHN1Y2ggYXMgZGlzdGluY3QgY291bnRz IG9uIHRoZSBlbmNyeXB0ZWQgdmFsdWVzLgorICAgRGV0ZXJtaW5pc3RpYyBlbmNyeXB0aW9u IHVzZXMgYSBmaXhlZCBpbml0aWFsaXphdGlvbiB2ZWN0b3IuICBUaGlzIHJlZHVjZXMKKyAg IHNlY3VyaXR5LCBidXQgaXQgYWxsb3dzIGVxdWFsaXR5IHNlYXJjaGVzIG9uIGVuY3J5cHRl ZCB2YWx1ZXMuICBUaGUKKyAgIGZvbGxvd2luZyBleGFtcGxlIGRlY2xhcmVzIGEgY29sdW1u IHdpdGggZGV0ZXJtaW5pc3RpYyBlbmNyeXB0aW9uOgorPHByb2dyYW1saXN0aW5nPgorQ1JF QVRFIFRBQkxFIGVtcGxveWVlcyAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIG5h bWUgdGV4dCBOT1QgTlVMTCwKKyAgICAuLi4KKyAgICBzc24gdGV4dCBFTkNSWVBURUQgV0lU SCAoCisgICAgICAgIGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9IGNlazEsIDxlbXBoYXNpcz5l bmNyeXB0aW9uX3R5cGUgPSBkZXRlcm1pbmlzdGljPC9lbXBoYXNpcz4pCispOworPC9wcm9n cmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgTnVsbCB2YWx1ZXMgYXJl IG5vdCBlbmNyeXB0ZWQgYnkgdHJhbnNwYXJlbnQgY29sdW1uIGVuY3J5cHRpb247IG51bGwg dmFsdWVzCisgICBzZW50IGJ5IHRoZSBjbGllbnQgYXJlIHZpc2libGUgYXMgbnVsbCB2YWx1 ZXMgaW4gdGhlIGRhdGFiYXNlLiAgSWYgdGhlIGZhY3QKKyAgIHRoYXQgYSB2YWx1ZSBpcyBu dWxsIG5lZWRzIHRvIGJlIGhpZGRlbiBmcm9tIHRoZSBzZXJ2ZXIsIHRoaXMgaW5mb3JtYXRp b24KKyAgIG5lZWRzIHRvIGJlIGVuY29kZWQgaW50byBhIG5vbm51bGwgdmFsdWUgaW4gdGhl IGNsaWVudCBzb21laG93LgorICA8L3BhcmE+CisgPC9zZWN0MT4KKwogIDxzZWN0MSBpZD0i ZGRsLXN5c3RlbS1jb2x1bW5zIj4KICAgPHRpdGxlPlN5c3RlbSBDb2x1bW5zPC90aXRsZT4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwgYi9kb2Mvc3JjL3Nn bWwvZ2xvc3Nhcnkuc2dtbAppbmRleCBkNmQwYTNhODE0Li4xMDUwN2U0MzkxIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZ2xv c3Nhcnkuc2dtbApAQCAtMzUzLDYgKzM1MywyOSBAQCA8dGl0bGU+R2xvc3Nhcnk8L3RpdGxl PgogICAgPC9nbG9zc2RlZj4KICAgPC9nbG9zc2VudHJ5PgogCisgIDxnbG9zc2VudHJ5IGlk PSJnbG9zc2FyeS1jb2x1bW4tZW5jcnlwdGlvbi1rZXkiPgorICAgPGdsb3NzdGVybT5Db2x1 bW4gZW5jcnlwdGlvbiBrZXk8L2dsb3NzdGVybT4KKyAgIDxnbG9zc2RlZj4KKyAgICA8cGFy YT4KKyAgICAgQSBjcnlwdG9ncmFwaGljIGtleSB1c2VkIHRvIGVuY3J5cHQgY29sdW1uIHZh bHVlcyB3aGVuIHVzaW5nIHRyYW5zcGFyZW50CisgICAgIGNvbHVtbiBlbmNyeXB0aW9uLiAg Q29sdW1uIGVuY3J5cHRpb24ga2V5cyBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZQorICAg ICBlbmNyeXB0ZWQgYnkgYW5vdGhlciBrZXksIHRoZSBjb2x1bW4gbWFzdGVyIGtleS4KKyAg ICA8L3BhcmE+CisgICA8L2dsb3NzZGVmPgorICA8L2dsb3NzZW50cnk+CisKKyAgPGdsb3Nz ZW50cnkgaWQ9Imdsb3NzYXJ5LWNvbHVtbi1tYXN0ZXIta2V5Ij4KKyAgIDxnbG9zc3Rlcm0+ Q29sdW1uIG1hc3RlciBrZXk8L2dsb3NzdGVybT4KKyAgIDxnbG9zc2RlZj4KKyAgICA8cGFy YT4KKyAgICAgQSBjcnlwdG9ncmFwaGljIGtleSB1c2VkIHRvIGVuY3J5cHQgY29sdW1uIGVu Y3J5cHRpb24ga2V5cy4gIChTbyB0aGUKKyAgICAgY29sdW1uIG1hc3RlciBrZXkgaXMgYSA8 Zmlyc3R0ZXJtPmtleSBlbmNyeXB0aW9uIGtleTwvZmlyc3R0ZXJtPi4pCisgICAgIENvbHVt biBtYXN0ZXIga2V5cyBhcmUgc3RvcmVkIG91dHNpZGUgdGhlIGRhdGFiYXNlIHN5c3RlbSwg Zm9yIGV4YW1wbGUgaW4KKyAgICAgYSBrZXkgbWFuYWdlbWVudCBzeXN0ZW0uCisgICAgPC9w YXJhPgorICAgPC9nbG9zc2RlZj4KKyAgPC9nbG9zc2VudHJ5PgorCiAgIDxnbG9zc2VudHJ5 IGlkPSJnbG9zc2FyeS1jb21taXQiPgogICAgPGdsb3NzdGVybT5Db21taXQ8L2dsb3NzdGVy bT4KICAgIDxnbG9zc2RlZj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21s IGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKaW5kZXggNzQ0NTZhYTY5ZC4uMzEwYWE0OWUz NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwKQEAgLTE5NzQsNiArMTk3NCwxMTAgQEAgPHRpdGxlPlBhcmFtZXRl ciBLZXkgV29yZHM8L3RpdGxlPgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBx LWNvbm5lY3QtY21rbG9va3VwIiB4cmVmbGFiZWw9ImNta2xvb2t1cCI+CisgICAgICA8dGVy bT48bGl0ZXJhbD5jbWtsb29rdXA8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPGxpc3RpdGVt PgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNwZWNpZmllcyBob3cgbGlicHEgc2hv dWxkIGxvb2sgdXAgY29sdW1uIG1hc3RlciBrZXlzIChDTUtzKSBpbgorICAgICAgICBvcmRl ciB0byBkZWNyeXB0IHRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXlzIChDRUtzKS4KKyAgICAg ICAgVGhlIHZhbHVlIGlzIGEgbGlzdCBvZiA8bGl0ZXJhbD5rZXk9dmFsdWU8L2xpdGVyYWw+ IGVudHJpZXMgc2VwYXJhdGVkCisgICAgICAgIGJ5IHNlbWljb2xvbnMuICBFYWNoIGtleSBp cyB0aGUgbmFtZSBvZiBhIGtleSByZWFsbSwgb3IKKyAgICAgICAgPGxpdGVyYWw+KjwvbGl0 ZXJhbD4gdG8gbWF0Y2ggYWxsIHJlYWxtcy4gIFRoZSB2YWx1ZSBpcyBhCisgICAgICAgIDxs aXRlcmFsPnNjaGVtZTpkYXRhPC9saXRlcmFsPiBzcGVjaWZpY2F0aW9uLiAgVGhlIHNjaGVt ZSBzcGVjaWZpZXMKKyAgICAgICAgdGhlIG1ldGhvZCB0byBsb29rIHVwIHRoZSBrZXksIHRo ZSByZW1haW5pbmcgZGF0YSBpcyBzcGVjaWZpYyB0byB0aGUKKyAgICAgICAgc2NoZW1lLiAg UGxhY2Vob2xkZXJzIGFyZSByZXBsYWNlZCBpbiB0aGUgcmVtYWluaW5nIGRhdGEgYXMgZm9s bG93czoKKworICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgPHZhcmxpc3RlbnRy eT4KKyAgICAgICAgICA8dGVybT48bGl0ZXJhbD4lYTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg ICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBD TUsgYWxnb3JpdGhtIG5hbWUgKHNlZSA8eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1jbWstdGFi bGUiLz4pCisgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAg ICAgICAgPHRlcm0+PGxpdGVyYWw+JWI8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZW5jcnlwdGVk IENFSyBkYXRhIGluIEJhc2U2NCBlbmNvZGluZyAob25seSBmb3IgdGhlIDxsaXRlcmFsPnJ1 bjwvbGl0ZXJhbD4gc2NoZW1lKQorICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9s aXN0aXRlbT4KKyAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPiVrPC9saXRlcmFsPjwvdGVybT4K KyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAg VGhlIENNSyBrZXkgbmFtZQorICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPiVyPC9saXRlcmFsPjwvdGVybT4KKyAg ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhl IHJlYWxtIG5hbWUKKyAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPC92YXJpYWJsZWxpc3Q+Cisg ICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIEF2YWlsYWJsZSBzY2hl bWVzIGFyZToKKyAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+ZmlsZTwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIExv YWQgdGhlIGtleSBtYXRlcmlhbCBmcm9tIGEgZmlsZS4gIFRoZSByZW1haW5pbmcgZGF0YSBp cyB0aGUgZmlsZQorICAgICAgICAgICAgbmFtZS4gIFVzZSB0aGlzIGlmIHRoZSBDTUtzIGFy ZSBrZXB0IGluIGEgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisgICAgICAgICAgIDwvcGFy YT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisK KyAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+cnVu PC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgY29tbWFuZCB0byBkZWNyeXB0 IHRoZSBDRUsuICBUaGUgcmVtYWluaW5nIGRhdGEKKyAgICAgICAgICAgIGlzIGEgc2hlbGwg Y29tbWFuZC4gIFVzZSB0aGlzIHdpdGgga2V5IG1hbmFnZW1lbnQgc3lzdGVtcyB0aGF0Cisg ICAgICAgICAgICBwZXJmb3JtIHRoZSBkZWNyeXB0aW9uIHRoZW1zZWx2ZXMuICBUaGUgY29t bWFuZCBtdXN0IHByaW50IHRoZQorICAgICAgICAgICAgZGVjcnlwdGVkIHBsYWludGV4dCBp biBCYXNlNjQgZm9ybWF0IG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQuCisgICAgICAgICAgIDwv cGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgPC92YXJsaXN0ZW50cnk+ CisgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxw YXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS4KKyAgICAgICA8L3Bh cmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgRXhhbXBsZToKKzxwcm9ncmFtbGlzdGlu Zz4KK2Nta2xvb2t1cD0icjE9ZmlsZTovc29tZS93aGVyZS9zZWNyZXRzLyVrLnBlbTsqPWZp bGU6L2Vsc2Uvd2hlcmUvJXIvJWsucGVtIgorPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAg VGhpcyBzcGVjaWZpY2F0aW9uIHNheXMsIGZvciBrZXlzIGluIHJlYWxtIDxxdW90ZT5yMTwv cXVvdGU+LCBsb2FkCisgICAgICAgIHRoZW0gZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUsIHJl cGxhY2luZyA8bGl0ZXJhbD4lazwvbGl0ZXJhbD4gYnkgdGhlCisgICAgICAgIGtleSBuYW1l LiAgRm9yIGtleXMgaW4gb3RoZXIgcmVhbG1zLCBsb2FkIHRoZW0gZnJvbSB0aGUgZmlsZSwK KyAgICAgICAgcmVwbGFjaW5nIHJlYWxtIGFuZCBrZXkgbmFtZXMgYXMgc3BlY2lmaWVkLgor ICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBBbiBleGFtcGxlIGZv ciBpbnRlcmFjdGluZyB3aXRoIGEgKGh5cG90aGV0aWNhbCkga2V5IG1hbmFnZW1lbnQKKyAg ICAgICAgc3lzdGVtOgorPHByb2dyYW1saXN0aW5nPgorY21rbG9va3VwPSIqPXJ1bjphY21l a21zIGRlY3J5cHQgLS1rZXkgJWsgLS1hbGcgJWEgLS1ibG9iICclYiciCis8L3Byb2dyYW1s aXN0aW5nPgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgogICAgIDwvdmFyaWFibGVsaXN0PgogICAgPC9wYXJhPgogICA8L3NlY3Qy PgpAQCAtMzAyMiw2ICszMTI2LDU3IEBAIDx0aXRsZT5NYWluIEZ1bmN0aW9uczwvdGl0bGU+ CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFy bGlzdGVudHJ5IGlkPSJsaWJwcS1QUWV4ZWNQcmVwYXJlZDIiPgorICAgICAgPHRlcm0+PGZ1 bmN0aW9uPlBRZXhlY1ByZXBhcmVkMjwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5Q UWV4ZWNQcmVwYXJlZDI8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNlbmRzIGEgcmVxdWVzdCB0byBl eGVjdXRlIGEgcHJlcGFyZWQgc3RhdGVtZW50IHdpdGggZ2l2ZW4KKyAgICAgICAgcGFyYW1l dGVycywgYW5kIHdhaXRzIGZvciB0aGUgcmVzdWx0LCB3aXRoIHN1cHBvcnQgZm9yIGVuY3J5 cHRlZCBjb2x1bW5zLgorPHN5bm9wc2lzPgorUEdyZXN1bHQgKlBRZXhlY1ByZXBhcmVkMihQ R2Nvbm4gKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0 bXROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgblBhcmFtcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICpwYXJhbVZhbHVlcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnBhcmFtRm9yY2VDb2x1bW5FbmNy eXB0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc3VsdEZvcm1hdCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgUEdyZXN1bHQgKnBhcmFtRGVzYyk7Cis8L3N5 bm9wc2lzPgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICA8eHJl ZiBsaW5rZW5kPSJsaWJwcS1QUWV4ZWNQcmVwYXJlZDIiLz4gaXMgbGlrZSA8eHJlZgorICAg ICAgICBsaW5rZW5kPSJsaWJwcS1QUWV4ZWNQcmVwYXJlZCIvPiB3aXRoIGFkZGl0aW9uYWwg c3VwcG9ydCBmb3IgZW5jcnlwdGVkCisgICAgICAgIGNvbHVtbnMuICBUaGUgcGFyYW1ldGVy IDxwYXJhbWV0ZXI+cGFyYW1EZXNjPC9wYXJhbWV0ZXI+IG11c3QgYmUgYQorICAgICAgICBy ZXN1bHQgc2V0IG9idGFpbmVkIGZyb20gPHhyZWYgbGlua2VuZD0ibGlicHEtUFFkZXNjcmli ZVByZXBhcmVkIi8+IG9uCisgICAgICAgIHRoZSBzYW1lIHByZXBhcmVkIHN0YXRlbWVudC4K KyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBmdW5jdGlv biBtdXN0IGJlIHVzZWQgaWYgYSBzdGF0ZW1lbnQgcGFyYW1ldGVyIGNvcnJlc3BvbmRzIHRv IGFuCisgICAgICAgIHVuZGVybHlpbmcgZW5jcnlwdGVkIGNvbHVtbi4gIEluIHRoYXQgc2l0 dWF0aW9uLCB0aGUgcHJlcGFyZWQKKyAgICAgICAgc3RhdGVtZW50IG5lZWRzIHRvIGJlIGRl c2NyaWJlZCBmaXJzdCBzbyB0aGF0IGxpYnBxIGNhbiBvYnRhaW4gdGhlCisgICAgICAgIG5l Y2Vzc2FyeSBrZXkgYW5kIG90aGVyIGluZm9ybWF0aW9uIGZyb20gdGhlIHNlcnZlci4gIFdo ZW4gdGhhdCBpcworICAgICAgICBkb25lLCB0aGUgcGFyYW1ldGVycyBjb3JyZXNwb25kaW5n IHRvIGVuY3J5cHRlZCBjb2x1bW5zIGFyZQorICAgICAgICBhdXRvbWF0aWNhbGx5IGVuY3J5 cHRlZCBhcHByb3ByaWF0ZWx5IGJlZm9yZSBiZWluZyBzZW50IHRvIHRoZSBzZXJ2ZXIuCisg ICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBwYXJhbWV0ZXIg PHBhcmFtZXRlcj5wYXJhbUZvcmNlQ29sdW1uRW5jcnlwdGlvbnM8L3BhcmFtZXRlcj4KKyAg ICAgICAgc3BlY2lmaWVzIHdoZXRoZXIgZW5jcnlwdGlvbiBzaG91bGQgYmUgZm9yY2VkIGZv ciBhIHBhcmFtZXRlci4gIElmCisgICAgICAgIGVuY3J5cHRpb24gaXMgZm9yY2VkIGZvciBh IHBhcmFtZXRlciBidXQgaXQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhbgorICAgICAgICBl bmNyeXB0ZWQgY29sdW1uIG9uIHRoZSBzZXJ2ZXIsIHRoZW4gdGhlIGNhbGwgd2lsbCBmYWls IGFuZCB0aGUKKyAgICAgICAgcGFyYW1ldGVyIHdpbGwgbm90IGJlIHNlbnQuICBUaGlzIGNh biBiZSB1c2VkIGZvciBhZGRpdGlvbmFsIHNlY3VyaXR5CisgICAgICAgIGFnYWluc3QgYSBj b21wcmltaXNlZCBzZXJ2ZXIuICAoVGhlIGRyYXdiYWNrIGlzIHRoYXQgYXBwbGljYXRpb24g Y29kZQorICAgICAgICB0aGVuIG5lZWRzIHRvIGJlIGtlcHQgdXAgdG8gZGF0ZSB3aXRoIGtu b3dsZWRnZSBhYm91dCB3aGljaCBjb2x1bW5zCisgICAgICAgIGFyZSBlbmNyeXB0ZWQgcmF0 aGVyIHRoYW4gbGV0dGluZyB0aGUgc2VydmVyIHNwZWNpZnkgdGhpcy4pICBJZiB0aGUKKyAg ICAgICAgYXJyYXkgcG9pbnRlciBpcyBudWxsIHRoZW4gZW5jcnlwdGlvbiBpcyBub3QgZm9y Y2VkIGZvciBhbnkgcGFyYW1ldGVyLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imxp YnBxLVBRZGVzY3JpYmVQcmVwYXJlZCI+CiAgICAgICA8dGVybT48ZnVuY3Rpb24+UFFkZXNj cmliZVByZXBhcmVkPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRZGVzY3JpYmVQ cmVwYXJlZDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CiAKQEAgLTM4NzIsNiArNDAy NywyOCBAQCA8dGl0bGU+UmV0cmlldmluZyBRdWVyeSBSZXN1bHQgSW5mb3JtYXRpb248L3Rp dGxlPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgPHZh cmxpc3RlbnRyeSBpZD0ibGlicHEtUFFmaXNlbmNyeXB0ZWQiPgorICAgICA8dGVybT48ZnVu Y3Rpb24+UFFmaXNlbmNyeXB0ZWQ8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFm aXNlbmNyeXB0ZWQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgIDxsaXN0 aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJldHVybnMgd2hldGhlciB0aGUgdmFsdWUg Zm9yIHRoZSBnaXZlbiBjb2x1bW4gY2FtZSBmcm9tIGFuIGVuY3J5cHRlZAorICAgICAgIGNv bHVtbi4gIENvbHVtbiBudW1iZXJzIHN0YXJ0IGF0IDAuCis8c3lub3BzaXM+CitpbnQgUFFm aXNlbmNyeXB0ZWQoY29uc3QgUEdyZXN1bHQgKnJlcywKKyAgICAgICAgICAgICAgICAgICBp bnQgY29sdW1uX251bWJlcik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgorCisgICAg ICA8cGFyYT4KKyAgICAgICBFbmNyeXB0ZWQgY29sdW1uIHZhbHVlcyBhcmUgYXV0b21hdGlj YWxseSBkZWNyeXB0ZWQsIHNvIHRoaXMgZnVuY3Rpb24KKyAgICAgICBpcyBub3QgbmVjZXNz YXJ5IHRvIGFjY2VzcyB0aGUgY29sdW1uIHZhbHVlLiAgSXQgY2FuIGJlIHVzZWQgZm9yIGV4 dHJhCisgICAgICAgc2VjdXJpdHkgdG8gY2hlY2sgd2hldGhlciB0aGUgdmFsdWUgd2FzIHN0 b3JlZCBlbmNyeXB0ZWQgd2hlbiBvbmUKKyAgICAgICB0aG91Z2h0IGl0IHNob3VsZCBiZS4K KyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRZnNpemUiPgogICAgICA8dGVybT48 ZnVuY3Rpb24+UFFmc2l6ZTwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUWZzaXpl PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KIApAQCAtNDA0NywxMiArNDIyNCwzNyBA QCA8dGl0bGU+UmV0cmlldmluZyBRdWVyeSBSZXN1bHQgSW5mb3JtYXRpb248L3RpdGxlPgog CiAgICAgICA8cGFyYT4KICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIHdo ZW4gaW5zcGVjdGluZyB0aGUgcmVzdWx0IG9mCi0gICAgICAgPHhyZWYgbGlua2VuZD0ibGli cHEtUFFkZXNjcmliZVByZXBhcmVkIi8+LiAgRm9yIG90aGVyIHR5cGVzIG9mIHF1ZXJpZXMg aXQKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWRlc2NyaWJlUHJlcGFyZWQiLz4u ICBGb3Igb3RoZXIgdHlwZXMgb2YgcmVzdWx0cyBpdAogICAgICAgIHdpbGwgcmV0dXJuIHpl cm8uCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUXBhcmFtaXNlbmNyeXB0ZWQi PgorICAgICA8dGVybT48ZnVuY3Rpb24+UFFwYXJhbWlzZW5jcnlwdGVkPC9mdW5jdGlvbj48 aW5kZXh0ZXJtPjxwcmltYXJ5PlBRcGFyYW1pc2VuY3J5cHRlZDwvcHJpbWFyeT48L2luZGV4 dGVybT48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAg UmV0dXJucyB3aGV0aGVyIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlciBpcyBk ZXN0aW5lZCBmb3IgYW4KKyAgICAgICBlbmNyeXB0ZWQgY29sdW1uLiAgUGFyYW1ldGVyIG51 bWJlcnMgc3RhcnQgYXQgMC4KKzxzeW5vcHNpcz4KK2ludCBQUXBhcmFtaXNlbmNyeXB0ZWQo Y29uc3QgUEdyZXN1bHQgKnJlcywgaW50IHBhcmFtX251bWJlcik7Cis8L3N5bm9wc2lzPgor ICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBWYWx1ZXMgZm9yIHBhcmFt ZXRlcnMgZGVzdGluZWQgZm9yIGVuY3J5cHRlZCBjb2x1bW5zIGFyZSBhdXRvbWF0aWNhbGx5 CisgICAgICAgZW5jcnlwdGVkLCBzbyB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBuZWNlc3Nhcnkg dG8gcHJlcGFyZSB0aGUgcGFyYW1ldGVyCisgICAgICAgdmFsdWUuICBJdCBjYW4gYmUgdXNl ZCBmb3IgZXh0cmEgc2VjdXJpdHkgdG8gY2hlY2sgd2hldGhlciB0aGUgdmFsdWUKKyAgICAg ICB3aWxsIGJlIHN0b3JlZCBlbmNyeXB0ZWQgd2hlbiBvbmUgdGhvdWdodCBpdCBzaG91bGQg YmUuICAoQnV0IHNlZSBhbHNvCisgICAgICAgYXQgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFl eGVjUHJlcGFyZWQyIi8+IGZvciBhbm90aGVyIHdheSB0byBkbyB0aGF0LikKKyAgICAgICBU aGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIHdoZW4gaW5zcGVjdGluZyB0aGUgcmVzdWx0 IG9mIDx4cmVmCisgICAgICAgbGlua2VuZD0ibGlicHEtUFFkZXNjcmliZVByZXBhcmVkIi8+ LiAgRm9yIG90aGVyIHR5cGVzIG9mIHJlc3VsdHMgaXQKKyAgICAgICB3aWxsIHJldHVybiBm YWxzZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRcHJpbnQiPgogICAgICA8 dGVybT48ZnVuY3Rpb24+UFFwcmludDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5Q UXByaW50PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KIApAQCAtNDU3OCw2ICs0Nzgw LDcgQEAgPHRpdGxlPkFzeW5jaHJvbm91cyBDb21tYW5kIFByb2Nlc3Npbmc8L3RpdGxlPgog ICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kUXVlcnlQYXJhbXMiLz4sCiAgICA8eHJl ZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRQcmVwYXJlIi8+LAogICAgPHhyZWYgbGlua2VuZD0i bGlicHEtUFFzZW5kUXVlcnlQcmVwYXJlZCIvPiwKKyAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRc2VuZFF1ZXJ5UHJlcGFyZWQyIi8+LAogICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFz ZW5kRGVzY3JpYmVQcmVwYXJlZCIvPiwgYW5kCiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1Q UXNlbmREZXNjcmliZVBvcnRhbCIvPiwKICAgIHdoaWNoIGNhbiBiZSB1c2VkIHdpdGggPHhy ZWYgbGlua2VuZD0ibGlicHEtUFFnZXRSZXN1bHQiLz4gdG8gZHVwbGljYXRlCkBAIC00NTg1 LDYgKzQ3ODgsNyBAQCA8dGl0bGU+QXN5bmNocm9ub3VzIENvbW1hbmQgUHJvY2Vzc2luZzwv dGl0bGU+CiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWV4ZWNQYXJhbXMiLz4sCiAgICA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXByZXBhcmUiLz4sCiAgICA8eHJlZiBsaW5rZW5kPSJs aWJwcS1QUWV4ZWNQcmVwYXJlZCIvPiwKKyAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZXhl Y1ByZXBhcmVkMiIvPiwKICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZGVzY3JpYmVQcmVw YXJlZCIvPiwgYW5kCiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWRlc2NyaWJlUG9ydGFs Ii8+CiAgICByZXNwZWN0aXZlbHkuCkBAIC00Njk2LDYgKzQ5MDAsNDYgQEAgPHRpdGxlPkFz eW5jaHJvbm91cyBDb21tYW5kIFByb2Nlc3Npbmc8L3RpdGxlPgogICAgICA8L2xpc3RpdGVt PgogICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEt UFFzZW5kUXVlcnlQcmVwYXJlZDIiPgorICAgICA8dGVybT48ZnVuY3Rpb24+UFFzZW5kUXVl cnlQcmVwYXJlZDI8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFzZW5kUXVlcnlQ cmVwYXJlZDI8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgIDxsaXN0aXRl bT4KKyAgICAgIDxwYXJhPgorICAgICAgIFNlbmRzIGEgcmVxdWVzdCB0byBleGVjdXRlIGEg cHJlcGFyZWQgc3RhdGVtZW50IHdpdGggZ2l2ZW4KKyAgICAgICBwYXJhbWV0ZXJzLCB3aXRo b3V0IHdhaXRpbmcgZm9yIHRoZSByZXN1bHQocyksIHdpdGggc3VwcG9ydCBmb3IgZW5jcnlw dGVkIGNvbHVtbnMuCis8c3lub3BzaXM+CitpbnQgUFFzZW5kUXVlcnlQcmVwYXJlZDIoUEdj b25uICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0bXRO YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuUGFyYW1zLAorICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqcGFyYW1WYWx1ZXMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUZvcm1hdHMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUZvcmNlQ29sdW1uRW5jcnlwdGlvbnMs CisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc3VsdEZvcm1hdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICBQR3Jlc3VsdCAqcGFyYW1EZXNjKTsKKzwvc3lub3BzaXM+Cisg ICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLVBRc2VuZFF1ZXJ5UHJlcGFyZWQyIi8+IGlzIGxpa2UgPHhyZWYKKyAgICAgICBsaW5r ZW5kPSJsaWJwcS1QUXNlbmRRdWVyeVByZXBhcmVkIi8+IHdpdGggYWRkaXRpb25hbCBzdXBw b3J0IGZvciBlbmNyeXB0ZWQKKyAgICAgICBjb2x1bW5zLiAgVGhlIHBhcmFtZXRlciA8cGFy YW1ldGVyPnBhcmFtRGVzYzwvcGFyYW1ldGVyPiBtdXN0IGJlIGEKKyAgICAgICByZXN1bHQg c2V0IG9idGFpbmVkIGZyb20gPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kRGVzY3JpYmVQ cmVwYXJlZCIvPiBvbgorICAgICAgIHRoZSBzYW1lIHByZXBhcmVkIHN0YXRlbWVudC4KKyAg ICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0 IGJlIHVzZWQgaWYgYSBzdGF0ZW1lbnQgcGFyYW1ldGVyIGNvcnJlc3BvbmRzIHRvIGFuCisg ICAgICAgdW5kZXJseWluZyBlbmNyeXB0ZWQgY29sdW1uLiAgSW4gdGhhdCBzaXR1YXRpb24s IHRoZSBwcmVwYXJlZAorICAgICAgIHN0YXRlbWVudCBuZWVkcyB0byBiZSBkZXNjcmliZWQg Zmlyc3Qgc28gdGhhdCBsaWJwcSBjYW4gb2J0YWluIHRoZQorICAgICAgIG5lY2Vzc2FyeSBr ZXkgYW5kIG90aGVyIGluZm9ybWF0aW9uIGZyb20gdGhlIHNlcnZlci4gIFdoZW4gdGhhdCBp cworICAgICAgIGRvbmUsIHRoZSBwYXJhbWV0ZXJzIGNvcnJlc3BvbmRpbmcgdG8gZW5jcnlw dGVkIGNvbHVtbnMgYXJlCisgICAgICAgYXV0b21hdGljYWxseSBlbmNyeXB0ZWQgYXBwcm9w cmlhdGVseSBiZWZvcmUgYmVpbmcgc2VudCB0byB0aGUgc2VydmVyLgorICAgICAgIFNlZSBh bHNvIHVuZGVyIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZXhlY1ByZXBhcmVkMiIvPi4KKyAg ICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKwog ICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRc2VuZERlc2NyaWJlUHJlcGFyZWQiPgog ICAgICA8dGVybT48ZnVuY3Rpb24+UFFzZW5kRGVzY3JpYmVQcmVwYXJlZDwvZnVuY3Rpb24+ PGluZGV4dGVybT48cHJpbWFyeT5QUXNlbmREZXNjcmliZVByZXBhcmVkPC9wcmltYXJ5Pjwv aW5kZXh0ZXJtPjwvdGVybT4KIApAQCAtNDc0Niw2ICs0OTkwLDcgQEAgPHRpdGxlPkFzeW5j aHJvbm91cyBDb21tYW5kIFByb2Nlc3Npbmc8L3RpdGxlPgogICAgICAgIDx4cmVmIGxpbmtl bmQ9ImxpYnBxLVBRc2VuZFF1ZXJ5UGFyYW1zIi8+LAogICAgICAgIDx4cmVmIGxpbmtlbmQ9 ImxpYnBxLVBRc2VuZFByZXBhcmUiLz4sCiAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFzZW5kUXVlcnlQcmVwYXJlZCIvPiwKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1Q UXNlbmRRdWVyeVByZXBhcmVkMiIvPiwKICAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1Q UXNlbmREZXNjcmliZVByZXBhcmVkIi8+LAogICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRc2VuZERlc2NyaWJlUG9ydGFsIi8+LCBvcgogICAgICAgIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLVBRcGlwZWxpbmVTeW5jIi8+CkBAIC03Nzc2LDYgKzgwMjEsMTYgQEAgPHRpdGxlPkVu dmlyb25tZW50IFZhcmlhYmxlczwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3Rp dGVtPgogCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIDxpbmRleHRlcm0+ CisgICAgICAgPHByaW1hcnk+PGVudmFyPlBHQ01LTE9PS1VQPC9lbnZhcj48L3ByaW1hcnk+ CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDxlbnZhcj5QR0NNS0xPT0tVUDwvZW52YXI+ IGJlaGF2ZXMgdGhlIHNhbWUgYXMgdGhlIDx4cmVmCisgICAgICBsaW5rZW5kPSJsaWJwcS1j b25uZWN0LWNta2xvb2t1cCIvPiBjb25uZWN0aW9uIHBhcmFtZXRlci4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisKICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAg ICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s IGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggYzBiODlhM2MwMS4uNjA1OTVj MzNiMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTEwNTAsNiArMTA1MCw1MiBAQCA8dGl0bGU+ RXh0ZW5kZWQgUXVlcnk8L3RpdGxlPgogICAgPC9ub3RlPgogICA8L3NlY3QyPgogCisgIDxz ZWN0Mj4KKyAgIDx0aXRsZT5UcmFuc3BhcmVudCBDb2x1bW4gRW5jcnlwdGlvbjwvdGl0bGU+ CisKKyAgIDxwYXJhPgorICAgIFdoZW4gdHJhbnNwYXJlbnQgY29sdW1uIGVuY3J5cHRpb24g aXMgZW5hYmxlZCwgdGhlIG1lc3NhZ2VzCisgICAgQ29sdW1uTWFzdGVyS2V5IGFuZCBDb2x1 bW5FbmNyeXB0aW9uS2V5IGNhbiBhcHBlYXIgYmVmb3JlIFJvd0Rlc2NyaXB0aW9uCisgICAg YW5kIFBhcmFtZXRlckRlc2NyaXB0aW9uIG1lc3NhZ2VzLiAgQ2xpZW50cyBzaG91bGQgY29s bGVjdCB0aGUgaW5mb3JtYXRpb24KKyAgICBpbiB0aGVzZSBtZXNzYWdlcyBhbmQga2VlcCB0 aGVtIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNvbm5lY3Rpb24uICBBCisgICAgc2VydmVy IGlzIG5vdCByZXF1aXJlZCB0byByZXNlbmQgdGhlIGtleSBpbmZvcm1hdGlvbiBmb3IgZWFj aCBzdGF0ZW1lbnQKKyAgICBjeWNsZSBpZiBpdCB3YXMgYWxyZWFkeSBzZW50IGR1cmluZyB0 aGlzIGNvbm5lY3Rpb24uICBJZiBhIHNlcnZlciByZXNlbmRzCisgICAgYSBrZXkgdGhhdCB0 aGUgY2xpZW50IGhhcyBhbHJlYWR5IHN0b3JlZCAodGhhdCBpcywgYSBrZXkgaGF2aW5nIGFu IElECisgICAgZXF1YWwgdG8gb25lIGFscmVhZHkgc3RvcmVkKSwgdGhlIG5ldyBpbmZvcm1h dGlvbiBzaG91bGQgcmVwbGFjZSB0aGUgb2xkLgorICAgIChUaGlzIGNvdWxkIGhhcHBlbiwg Zm9yIGV4YW1wbGUsIGlmIHRoZSBrZXkgd2FzIGFsdGVyZWQgYnkgc2VydmVyLXNpZGUgRERM CisgICAgY29tbWFuZHMuKQorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBBIGNsaWVu dCBzdXBwb3J0aW5nIHRyYW5zcGFyZW50IGNvbHVtbiBlbmNyeXB0aW9uIHNob3VsZCBhdXRv bWF0aWNhbGx5CisgICAgZGVjcnlwdCB0aGUgY29sdW1uIHZhbHVlIGZpZWxkcyBvZiBEYXRh Um93IG1lc3NhZ2VzIGNvcnJlc3BvbmRpbmcgdG8KKyAgICBlbmNyeXB0ZWQgY29sdW1ucywg YW5kIGl0IHNob3VsZCBhdXRvbWF0aWNhbGx5IGVuY3J5cHQgdGhlIHBhcmFtZXRlciB2YWx1 ZQorICAgIGZpZWxkcyBvZiBCaW5kIG1lc3NhZ2VzIGNvcnJlc3BvbmRpbmcgdG8gZW5jcnlw dGVkIGNvbHVtbnMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFdoZW4gY29sdW1u IGVuY3J5cHRpb24gaXMgdXNlZCwgdGhlIHBsYWludGV4dCBpcyBhbHdheXMgaW4gdGV4dCBm b3JtYXQKKyAgICAobm90IGJpbmFyeSBmb3JtYXQpLgorICAgPC9wYXJhPgorCisgICA8cGFy YT4KKyAgICBXaGVuIGRldGVybWluaXN0aWMgZW5jcnlwdGlvbiBpcyB1c2VkLCBjbGllbnRz IG5lZWQgdG8gdGFrZSBjYXJlIHRvCisgICAgcmVwcmVzZW50IHBsYWludGV4dCB0byBiZSBl bmNyeXB0ZWQgaW4gYSBjb25zaXN0ZW50IGZvcm0uICBGb3IgZXhhbXBsZSwKKyAgICBlbmNy eXB0aW5nIGFuIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgdGhlIHN0cmluZyA8bGl0ZXJhbD4x MDA8L2xpdGVyYWw+IGFuZAorICAgIGFuIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgdGhlIHN0 cmluZyA8bGl0ZXJhbD4rMTAwPC9saXRlcmFsPiB3b3VsZCByZXN1bHQKKyAgICBpbiB0d28g ZGlmZmVyZW50IGNpcGhlcnRleHRzLCB0aHVzIGRlZmVhdGluZyB0aGUgbWFpbiBwb2ludCBv ZgorICAgIGRldGVybWluaXN0aWMgZW5jcnlwdGlvbi4gIFRoaXMgcHJvdG9jb2wgc3BlY2lm aWNhdGlvbiByZXF1aXJlcyB0aGUKKyAgICBwbGFpbnRleHQgdG8gYmUgaW4gPHF1b3RlPmNh bm9uaWNhbDwvcXVvdGU+IGZvcm0sIHdoaWNoIGlzIHRoZSBmb3JtIHRoYXQKKyAgICBpcyBw cm9kdWNlZCBieSB0aGUgc2VydmVyIHdoZW4gaXQgb3V0cHV0cyBhIHBhcnRpY3VsYXIgdmFs dWUgaW4gdGV4dAorICAgIGZvcm1hdC4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAg VGhlIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyB1c2VkIGZvciB0cmFuc3BhcmVudCBjb2x1 bW4gZW5jcnlwdGlvbiBhcmUKKyAgICBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0icHJv dG9jb2wtdHJhbnNwYXJlbnQtY29sdW1uLWVuY3J5cHRpb24iLz4uCisgICA8L3BhcmE+Cisg IDwvc2VjdDI+CisKICAgPHNlY3QyPgogICAgPHRpdGxlPkZ1bmN0aW9uIENhbGw8L3RpdGxl PgogCkBAIC0zOTkxLDYgKzQwMzcsMTI4IEBAIDx0aXRsZT5NZXNzYWdlIEZvcm1hdHM8L3Rp dGxlPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxp c3RlbnRyeSBpZD0icHJvdG9jb2wtbWVzc2FnZS1mb3JtYXRzLUNvbHVtbkVuY3J5cHRpb25L ZXkiPgorICAgIDx0ZXJtPkNvbHVtbkVuY3J5cHRpb25LZXkgKEIpPC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgICAgPHRlcm0+Qnl0ZTEoJ1knKTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgIDxwYXJhPgorICAgICAgICAgSWRlbnRpZmllcyB0aGUgbWVzc2FnZSBhcyBhIGNvbHVt biBlbmNyeXB0aW9uIGtleSBtZXNzYWdlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9s aXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5 PgorICAgICAgIDx0ZXJtPkludDMyPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgPHBhcmE+CisgICAgICAgICBMZW5ndGggb2YgbWVzc2FnZSBjb250ZW50cyBpbiBieXRl cywgaW5jbHVkaW5nIHNlbGYuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVt PgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAg ICAgPHRlcm0+SW50MzI8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgIFRoZSBzZXNzaW9uLXNwZWNpZmljIGlkZW50aWZpZXIgb2YgdGhlIGtl eS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQzMjwv dGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhl IGlkZW50aWZpZXIgb2YgdGhlIG1hc3RlciBrZXkgdXNlZCB0byBlbmNyeXB0IHRoaXMga2V5 LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlz dGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDE2PC90 ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUg aWRlbnRpZmllciBvZiB0aGUgYWxnb3JpdGhtIHVzZWQgdG8gZW5jcnlwdCB0aGlzIGtleS4K KyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQzMjwvdGVy bT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIGxl bmd0aCBvZiB0aGUgZm9sbG93aW5nIGtleSBtYXRlcmlhbC4KKyAgICAgICAgPC9wYXJhPgor ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZh cmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5CeXRlPHJlcGxhY2VhYmxlPm48L3JlcGxhY2Vh YmxlPjwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAg ICAgVGhlIGtleSBtYXRlcmlhbCwgZW5jcnlwdGVkIHdpdGggdGhlIG1hc3RlciBrZXkgcmVm ZXJlbmNlZCBhYm92ZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5IGlkPSJwcm90 b2NvbC1tZXNzYWdlLWZvcm1hdHMtQ29sdW1uTWFzdGVyS2V5Ij4KKyAgICA8dGVybT5Db2x1 bW5NYXN0ZXJLZXkgKEIpPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHZhcmlhYmxl bGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+Qnl0ZTEoJ3knKTwv dGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgSWRl bnRpZmllcyB0aGUgbWVzc2FnZSBhcyBhIGNvbHVtbiBtYXN0ZXIga2V5IG1lc3NhZ2UuCisg ICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50MzI8L3Rlcm0+ CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIExlbmd0aCBv ZiBtZXNzYWdlIGNvbnRlbnRzIGluIGJ5dGVzLCBpbmNsdWRpbmcgc2VsZi4KKyAgICAgICAg PC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQzMjwvdGVybT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHNlc3Npb24tc3Bl Y2lmaWMgaWRlbnRpZmllciBvZiB0aGUga2V5LgorICAgICAgICA8L3BhcmE+CisgICAgICAg PC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPlN0cmluZzwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGtleS4KKyAgICAgICAg PC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5TdHJpbmc8L3Rlcm0+CisgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBrZXkncyByZWFs bS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxp c3RlbnRyeT4KKyAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJwcm90b2NvbC1tZXNzYWdl LWZvcm1hdHMtQ29tbWFuZENvbXBsZXRlIj4KICAgICA8dGVybT5Db21tYW5kQ29tcGxldGUg KEIpPC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTUwODYsNiArNTI1NCwzNyBAQCA8dGl0 bGU+TWVzc2FnZSBGb3JtYXRzPC90aXRsZT4KICAgICAgICAgPC9wYXJhPgogICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRy eT4KKyAgICAgICA8dGVybT5JbnQzMjwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgIDxwYXJhPgorICAgICAgICAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgdG8gYmUgZW5jcnlw dGVkLCB0aGlzIHNwZWNpZmllcyB0aGUKKyAgICAgICAgIGlkZW50aWZpZXIgb2YgdGhlIGNv bHVtbiBlbmNyeXB0aW9uIGtleSB0byB1c2UsIGVsc2UgemVyby4KKyAgICAgICAgPC9wYXJh PgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAg PHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQxNjwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMg dG8gYmUgZW5jcnlwdGVkLCB0aGlzIHNwZWNpZmllcyB0aGUKKyAgICAgICAgIGlkZW50aWZp ZXIgb2YgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtLCBlbHNlIHplcm8uCisgICAgICAgIDwv cGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50MTY8L3Rlcm0+CisgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoaXMgaXMgdXNlZCBhcyBh IGJpdCBmaWVsZCBvZiBmbGFncy4gIElmIHRoZSBjb2x1bW4gaXMKKyAgICAgICAgIGVuY3J5 cHRlZCBhbmQgYml0IDB4MDEgaXMgc2V0LCB0aGUgY29sdW1uIHVzZXMgZGV0ZXJtaW5pc3Rp YworICAgICAgICAgZW5jcnlwdGlvbiwgb3RoZXJ3aXNlIHJhbmRvbWl6ZWQgZW5jcnlwdGlv bi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxp c3RlbnRyeT4KICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgpAQCAtNTQ3NCw2ICs1NjczLDI2IEBAIDx0aXRsZT5NZXNzYWdlIEZv cm1hdHM8L3RpdGxlPgogICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAg ICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0 ZXJtPkludDMyPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+Cisg ICAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyB0byBiZSBlbmNyeXB0ZWQsIHRoaXMgc3Bl Y2lmaWVzIHRoZQorICAgICAgICAgaWRlbnRpZmllciBvZiB0aGUgY29sdW1uIGVuY3J5cHRp b24ga2V5IHRvIHVzZSwgZWxzZSB6ZXJvLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9s aXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5 PgorICAgICAgIDx0ZXJtPkludDE2PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgPHBhcmE+CisgICAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyB0byBiZSBlbmNyeXB0 ZWQsIHRoaXMgc3BlY2lmaWVzIHRoZQorICAgICAgICAgaWRlbnRpZmllciBvZiB0aGUgZW5j cnlwdCBhbGdvcml0aG0sIGVsc2UgemVyby4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwv bGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgPC92YXJpYWJsZWxpc3Q+ CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtNzI3OCw2ICs3NDk3 LDEzMyBAQCA8dGl0bGU+TG9naWNhbCBSZXBsaWNhdGlvbiBNZXNzYWdlIEZvcm1hdHM8L3Rp dGxlPgogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJwcm90 b2NvbC10cmFuc3BhcmVudC1jb2x1bW4tZW5jcnlwdGlvbiI+CisgIDx0aXRsZT5UcmFuc3Bh cmVudCBDb2x1bW4gRW5jcnlwdGlvbiBDcnlwdG9ncmFwaHk8L3RpdGxlPgorCisgIDxwYXJh PgorICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgY3J5cHRvZ3JhcGhpYyBvcGVyYXRp b25zIHVzZWQgYnkgdHJhbnNwYXJlbnQKKyAgIGNvbHVtbiBlbmNyeXB0aW9uLiAgQSBjbGll bnQgdGhhdCBzdXBwb3J0cyB0cmFuc3BhcmVudCBjb2x1bW4gZW5jcnlwdGlvbgorICAgbmVl ZHMgdG8gaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgYXMgc3BlY2lmaWVkIGhlcmUgaW4g b3JkZXIgdG8gYmUgYWJsZQorICAgdG8gaW50ZXJvcGVyYXRlIHdpdGggb3RoZXIgY2xpZW50 cy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQ29sdW1uIGVuY3J5cHRpb24ga2V5IGFs Z29yaXRobXMgYW5kIGNvbHVtbiBtYXN0ZXIga2V5IGFsZ29yaXRobXMgYXJlCisgICBpZGVu dGlmaWVkIGJ5IGludGVnZXJzIGluIHRoZSBwcm90b2NvbCBtZXNzYWdlcyBhbmQgdGhlIHN5 c3RlbSBjYXRhbG9ncy4KKyAgIEFkZGl0aW9uYWwgYWxnb3JpdGhtcyBtYXkgYmUgYWRkZWQg dG8gdGhpcyBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIHdpdGhvdXQgYQorICAgY2hhbmdlIGlu IHRoZSBwcm90b2NvbCB2ZXJzaW9uIG51bWJlci4gIENsaWVudHMgc2hvdWxkIGltcGxlbWVu dCBzdXBwb3J0CisgICBmb3IgYWxsIHRoZSBhbGdvcml0aG1zIHNwZWNpZmllZCBoZXJlLiAg SWYgYSBjbGllbnQgZW5jb3VudGVycyBhbiBhbGdvcml0aG0KKyAgIGlkZW50aWZpZXIgaXQg ZG9lcyBub3QgcmVjb2duaXplIG9yIGRvZXMgbm90IHN1cHBvcnQsIGl0IG11c3QgcmFpc2Ug YW4KKyAgIGVycm9yLiAgQSBzdWl0YWJsZSBlcnJvciBtZXNzYWdlIHNob3VsZCBiZSBwcm92 aWRlZCB0byB0aGUgYXBwbGljYXRpb24gb3IKKyAgIHVzZXIuCisgIDwvcGFyYT4KKworICA8 c2VjdDIgaWQ9InByb3RvY29sLWNtayI+CisgICA8dGl0bGU+Q29sdW1uIE1hc3RlciBLZXlz PC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhlIGN1cnJlbnRseSBkZWZpbmVkIGFsZ29y aXRobXMgZm9yIGNvbHVtbiBtYXN0ZXIga2V5cyBhcmUgbGlzdGVkIGluCisgICAgPHhyZWYg bGlua2VuZD0icHJvdG9jb2wtY21rLXRhYmxlIi8+LgorICAgPC9wYXJhPgorCisgICA8dGFi bGUgaWQ9InByb3RvY29sLWNtay10YWJsZSI+CisgICAgPHRpdGxlPkNvbHVtbiBNYXN0ZXIg S2V5IEFsZ29yaXRobXM8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgIDx0 aGVhZD4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PklEPC9lbnRyeT4KKyAgICAgICA8 ZW50cnk+TmFtZTwvZW50cnk+CisgICAgICAgPGVudHJ5PlJlZmVyZW5jZTwvZW50cnk+Cisg ICAgICA8L3Jvdz4KKyAgICAgPC90aGVhZD4KKyAgICAgPHRib2R5PgorICAgICAgPHJvdz4K KyAgICAgICA8ZW50cnk+MTwvZW50cnk+CisgICAgICAgPGVudHJ5PjxsaXRlcmFsPlJTQUVT X09BRVBfU0hBXzE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHVsaW5rIHVy bD0iaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4MDE3Ij5SRkMg ODAxNzwvdWxpbms+IChQS0NTICMxKTwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxy b3c+CisgICAgICAgPGVudHJ5PjI8L2VudHJ5PgorICAgICAgIDxlbnRyeT48bGl0ZXJhbD5S U0FFU19PQUVQX1NIQV8yNTY8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHVs aW5rIHVybD0iaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4MDE3 Ij5SRkMgODAxNzwvdWxpbms+IChQS0NTICMxKTwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAg ICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAgIDwvdGFibGU+CisgIDwvc2VjdDI+CisK KyAgPHNlY3QyIGlkPSJwcm90b2NvbC1jZWsiPgorICAgPHRpdGxlPkNvbHVtbiBFbmNyeXB0 aW9uIEtleXM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgY3VycmVudGx5IGRlZmlu ZWQgYWxnb3JpdGhtcyBmb3IgY29sdW1uIGVuY3J5cHRpb24ga2V5cyBhcmUgbGlzdGVkIGlu CisgICAgPHhyZWYgbGlua2VuZD0icHJvdG9jb2wtY2VrLXRhYmxlIi8+LgorICAgPC9wYXJh PgorCisgICA8dGFibGUgaWQ9InByb3RvY29sLWNlay10YWJsZSI+CisgICAgPHRpdGxlPkNv bHVtbiBFbmNyeXB0aW9uIEtleSBBbGdvcml0aG1zPC90aXRsZT4KKyAgICA8dGdyb3VwIGNv bHM9IjMiPgorICAgICA8dGhlYWQ+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeT5JRDwv ZW50cnk+CisgICAgICAgPGVudHJ5Pk5hbWU8L2VudHJ5PgorICAgICAgIDxlbnRyeT5SZWZl cmVuY2U8L2VudHJ5PgorICAgICAgIDxlbnRyeT5LZXkgbGVuZ3RoIChvY3RldHMpPC9lbnRy eT4KKyAgICAgIDwvcm93PgorICAgICA8L3RoZWFkPgorICAgICA8dGJvZHk+CisgICAgICA8 cm93PgorICAgICAgIDxlbnRyeT4xMzA8L2VudHJ5PgorICAgICAgIDxlbnRyeT48bGl0ZXJh bD5BRUFEX0FFU18xMjhfQ0JDX0hNQUNfU0hBXzI1NjwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgIDxlbnRyeT48dWxpbmsgdXJsPSJodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2Rv Yy9odG1sL2RyYWZ0LW1jZ3Jldy1hZWFkLWFlcy1jYmMtaG1hYy1zaGEyLTA1Ii8+PC9lbnRy eT4KKyAgICAgICA8ZW50cnk+MzI8L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93 PgorICAgICAgIDxlbnRyeT4xMzE8L2VudHJ5PgorICAgICAgIDxlbnRyeT48bGl0ZXJhbD5B RUFEX0FFU18xOTJfQ0JDX0hNQUNfU0hBXzM4NDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg IDxlbnRyeT48dWxpbmsgdXJsPSJodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9o dG1sL2RyYWZ0LW1jZ3Jldy1hZWFkLWFlcy1jYmMtaG1hYy1zaGEyLTA1Ii8+PC9lbnRyeT4K KyAgICAgICA8ZW50cnk+NDg8L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93Pgor ICAgICAgIDxlbnRyeT4xMzI8L2VudHJ5PgorICAgICAgIDxlbnRyeT48bGl0ZXJhbD5BRUFE X0FFU18yNTZfQ0JDX0hNQUNfU0hBXzM4NDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxl bnRyeT48dWxpbmsgdXJsPSJodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1s L2RyYWZ0LW1jZ3Jldy1hZWFkLWFlcy1jYmMtaG1hYy1zaGEyLTA1Ii8+PC9lbnRyeT4KKyAg ICAgICA8ZW50cnk+NTY8L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAg ICAgIDxlbnRyeT4xMzM8L2VudHJ5PgorICAgICAgIDxlbnRyeT48bGl0ZXJhbD5BRUFEX0FF U18yNTZfQ0JDX0hNQUNfU0hBXzUxMjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRy eT48dWxpbmsgdXJsPSJodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2Ry YWZ0LW1jZ3Jldy1hZWFkLWFlcy1jYmMtaG1hYy1zaGEyLTA1Ii8+PC9lbnRyeT4KKyAgICAg ICA8ZW50cnk+NjQ8L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGJvZHk+CisgICAg PC90Z3JvdXA+CisgICA8L3RhYmxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgPHF1b3RlPmFz c29jaWF0ZWQgZGF0YTwvcXVvdGU+IGluIHRoZXNlIGFsZ29yaXRobXMgY29uc2lzdHMgb2Yg NAorICAgIGJ5dGVzOiBUaGUgQVNDSUkgbGV0dGVycyA8bGl0ZXJhbD5QPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+RzwvbGl0ZXJhbD4KKyAgICAoYnl0ZSB2YWx1ZXMgODAgYW5kIDcxKSwg Zm9sbG93ZWQgYnkgdGhlIGFsZ29yaXRobSBJRCBhcyBhIDE2LWJpdCB1bnNpZ25lZAorICAg IGludGVnZXIgaW4gbmV0d29yayBieXRlIG9yZGVyLgorICAgPC9wYXJhPgorCisgICA8cGFy YT4KKyAgICBUaGUgbGVuZ3RoIG9mIHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgaXMgMTYg b2N0ZXRzIGZvciBhbGwgQ0VLIGFsZ29yaXRobQorICAgIHZhcmlhbnRzLiAgRm9yIHJhbmRv bWl6ZWQgZW5jcnlwdGlvbiwgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciBzaG91bGQgYmUK KyAgICAoY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nKSByYW5kb20gYnl0ZXMuICBGb3IgZGV0 ZXJtaW5pc3RpYyBlbmNyeXB0aW9uLAorICAgIHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3Ig aXMgY29uc3RydWN0ZWQgYXMKKzxwcm9ncmFtbGlzdGluZz4KK1NVQlNUUklORyg8cmVwbGFj ZWFibGU+SE1BQzwvcmVwbGFjZWFibGU+KDxyZXBsYWNlYWJsZT5LPC9yZXBsYWNlYWJsZT4s IDxyZXBsYWNlYWJsZT5QPC9yZXBsYWNlYWJsZT4pIEZPUiA8cmVwbGFjZWFibGU+SVZMRU48 L3JlcGxhY2VhYmxlPikKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgd2hlcmUgPHJlcGxhY2Vh YmxlPkhNQUM8L3JlcGxhY2VhYmxlPiBpcyB0aGUgSE1BQyBmdW5jdGlvbiBhc3NvY2lhdGVk IHdpdGgKKyAgICB0aGUgYWxnb3JpdGhtLCA8cmVwbGFjZWFibGU+SzwvcmVwbGFjZWFibGU+ IGlzIHRoZSBwcmVmaXggb2YgdGhlIENFSyBvZgorICAgIHRoZSBsZW5ndGggcmVxdWlyZWQg YnkgdGhlIEhNQUMgZnVuY3Rpb24sIGFuZCA8cmVwbGFjZWFibGU+UDwvcmVwbGFjZWFibGU+ CisgICAgaXMgdGhlIHBsYWludGV4dCB0byBiZSBlbmNyeXB0ZWQuICAoVGhpcyBpcyB0aGUg c2FtZSBwb3J0aW9uIG9mIHRoZSBDRUsKKyAgICB0aGF0IHRoZSBBRUFEX0FFU18qX0hNQUNf KiBhbGdvcml0aG1zIHVzZSBmb3IgdGhlIE1BQyBwYXJ0LikKKyAgIDwvcGFyYT4KKyAgPC9z ZWN0Mj4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJwcm90b2NvbC1jaGFuZ2VzIj4KICAg PHRpdGxlPlN1bW1hcnkgb2YgQ2hhbmdlcyBzaW5jZSBQcm90b2NvbCAyLjA8L3RpdGxlPgog CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCA2Yzk5MThiMGExLi43YTFk MDNmODY4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTIyLDcgKzIy LDcgQEAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+CiBDUkVBVEUgWyBbIEdMT0JB TCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsg SUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gKCBbCi0gIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IFsgQ09NUFJFU1NJT04gPHJlcGxhY2Vh YmxlPmNvbXByZXNzaW9uX21ldGhvZDwvcmVwbGFjZWFibGU+IF0gWyBDT0xMQVRFIDxyZXBs YWNlYWJsZT5jb2xsYXRpb248L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBd CisgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVw bGFjZWFibGU+IFsgQ09NUFJFU1NJT04gPHJlcGxhY2VhYmxlPmNvbXByZXNzaW9uX21ldGhv ZDwvcmVwbGFjZWFibGU+IF0gWyBFTkNSWVBURUQgV0lUSCAoIDxyZXBsYWNlYWJsZT5lbmNy eXB0aW9uX29wdGlvbnM8L3JlcGxhY2VhYmxlPiApIF0gWyBDT0xMQVRFIDxyZXBsYWNlYWJs ZT5jb2xsYXRpb248L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBdCiAgICAg fCA8cmVwbGFjZWFibGU+dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+CiAgICAgfCBM SUtFIDxyZXBsYWNlYWJsZT5zb3VyY2VfdGFibGU8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNl YWJsZT5saWtlX29wdGlvbjwvcmVwbGFjZWFibGU+IC4uLiBdIH0KICAgICBbLCAuLi4gXQpA QCAtMzIyLDYgKzMyMiw0NiBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgPC9s aXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPjxsaXRlcmFsPkVOQ1JZUFRFRCBXSVRIICggPHJlcGxhY2VhYmxlPmVuY3J5cHRp b25fb3B0aW9uczwvcmVwbGFjZWFibGU+ICk8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBFbmFibGVzIHRyYW5zcGFyZW50IGNvbHVtbiBl bmNyeXB0aW9uIGZvciB0aGUgY29sdW1uLgorICAgICAgPHJlcGxhY2VhYmxlPmVuY3J5cHRp b25fb3B0aW9uczwvcmVwbGFjZWFibGU+IGFyZSBjb21tYS1zZXBhcmF0ZWQKKyAgICAgIDxs aXRlcmFsPmtleT12YWx1ZTwvbGl0ZXJhbD4gc3BlY2lmaWNhdGlvbnMuICBUaGUgZm9sbG93 aW5nIG9wdGlvbnMgYXJlCisgICAgICBhdmFpbGFibGU6CisgICAgICA8dmFyaWFibGVsaXN0 PgorICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmNvbHVt bl9lbmNyeXB0aW9uX2tleTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUg Y29sdW1uIGVuY3J5cHRpb24ga2V5IHRvIHVzZS4gIFNwZWNpZnlpbmcKKyAgICAgICAgICB0 aGlzIGlzIG1hbmRhdG9yeS4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRl bT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICA8dmFybGlzdGVudHJ5PgorICAg ICAgICA8dGVybT48bGl0ZXJhbD5lbmNyeXB0aW9uX3R5cGU8L2xpdGVyYWw+PC90ZXJtPgor ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8bGl0ZXJh bD5yYW5kb21pemVkPC9saXRlcmFsPiAodGhlIGRlZmF1bHQpIG9yIDxsaXRlcmFsPmRldGVy bWluaXN0aWM8L2xpdGVyYWw+CisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgICAgPHRlcm0+PGxpdGVyYWw+YWxnb3JpdGhtPC9saXRlcmFsPjwvdGVybT4KKyAgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGVuY3J5cHRp b24gYWxnb3JpdGhtIHRvIHVzZS4gIFRoZSBkZWZhdWx0IGlzCisgICAgICAgICAgPGxpdGVy YWw+QUVBRF9BRVNfMTI4X0NCQ19ITUFDX1NIQV8yNTY8L2xpdGVyYWw+LgorICAgICAgICAg PC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5Pgor ICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxp dGVyYWw+SU5IRVJJVFMgKCA8cmVwbGFjZWFibGU+cGFyZW50X3RhYmxlPC9yZXBsYWNlYWJs ZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sCmluZGV4IDY1YmIwYTZhM2YuLmU2YzkzZjFiMTMgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL3BzcWwtcmVmLnNnbWwKQEAgLTIyNTUsNiArMjI1NSwyOCBAQCA8dGl0bGU+TWV0YS1D b21tYW5kczwvdGl0bGU+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogCisgICAgICA8dmFy bGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPjxsaXRlcmFsPlxnZW5jcjwvbGl0ZXJhbD4gWyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4g XSAuLi4gPC90ZXJtPgorCisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgIFNlbmRzIHRoZSBjdXJyZW50IHF1ZXJ5IGJ1ZmZlciB0byB0aGUgc2VydmVyIGZv ciBleGVjdXRpb24sIGFzIHdpdGgKKyAgICAgICAgIDxsaXRlcmFsPlxnPC9saXRlcmFsPiwg d2l0aCB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMgcGFzc2VkIGZvciBhbnkKKyAgICAgICAg IHBhcmFtZXRlciBwbGFjZWhvbGRlcnMgKDxsaXRlcmFsPiQxPC9saXRlcmFsPiBldGMuKS4g IFRoaXMgY29tbWFuZAorICAgICAgICAgZW5zdXJlcyB0aGF0IGFueSBwYXJhbWV0ZXJzIGNv cnJlc3BvbmRpbmcgdG8gZW5jcnlwdGVkIGNvbHVtbnMgYXJlCisgICAgICAgICBzZW50IHRv IHRoZSBzZXJ2ZXIgZW5jcnlwdGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBh cmE+CisgICAgICAgICBFeGFtcGxlOgorPHByb2dyYW1saXN0aW5nPgorSU5TRVJUIElOVE8g dGJsMSBWQUxVRVMgKCQxLCAkMikgXGdlbmNyICdmaXJzdCB2YWx1ZScgJ3NlY29uZCB2YWx1 ZScKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3Rp dGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKwogICAgICAgPHZhcmxpc3RlbnRyeT4K ICAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGdldGVudiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cHNxbF92YXI8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZW52X3ZhcjwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVybT4KIApAQCAt Mzk0NSw2ICszOTY3LDE3IEBAIDx0aXRsZT5WYXJpYWJsZXM8L3RpdGxlPgogICAgICAgICA8 L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPkhJREVfQ09MVU1OX0VOQ1JZUFRJT048L3Zh cm5hbWU+PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJh bD4sIGNvbHVtbiBlbmNyeXB0aW9uCisgICAgICAgICBkZXRhaWxzIGFyZSBub3QgZGlzcGxh eWVkLiBUaGlzIGlzIG1haW5seSB1c2VmdWwgZm9yIHJlZ3Jlc3Npb24KKyAgICAgICAgIHRl c3RzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgPHRlcm0+PHZh cm5hbWU+SElERV9UT0FTVF9DT01QUkVTU0lPTjwvdmFybmFtZT48L3Rlcm0+CiAgICAgICAg IDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L01ha2VmaWxlIGIvc3JjL3Rlc3Qv TWFrZWZpbGUKaW5kZXggNjllZjA3NGQ3NS4uMjMwMGJlODMzMiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvTWFrZWZpbGUKQEAgLTMyLDYgKzMyLDcg QEAgU1VCRElSUyArPSBsZGFwCiBlbmRpZgogZW5kaWYKIGlmZXEgKCQod2l0aF9zc2wpLG9w ZW5zc2wpCitTVUJESVJTICs9IGNvbHVtbl9lbmNyeXB0aW9uCiBpZm5lcSAoLCQoZmlsdGVy IHNzbCwkKFBHX1RFU1RfRVhUUkEpKSkKIFNVQkRJUlMgKz0gc3NsCiBlbmRpZgpAQCAtNDEs NyArNDIsNyBAQCBlbmRpZgogIyBjbGVhbiIgZXRjIHRvIHJlY3Vyc2UgaW50byB0aGVtLiAg KFdlIG11c3QgZmlsdGVyIG91dCB0aG9zZSB0aGF0IHdlCiAjIGhhdmUgY29uZGl0aW9uYWxs eSBpbmNsdWRlZCBpbnRvIFNVQkRJUlMgYWJvdmUsIGVsc2UgdGhlcmUgd2lsbCBiZQogIyBt YWtlIGNvbmZ1c2lvbi4pCi1BTFdBWVNfU1VCRElSUyA9ICQoZmlsdGVyLW91dCAkKFNVQkRJ UlMpLGV4YW1wbGVzIGtlcmJlcm9zIGljdSBsZGFwIHNzbCkKK0FMV0FZU19TVUJESVJTID0g JChmaWx0ZXItb3V0ICQoU1VCRElSUyksZXhhbXBsZXMga2VyYmVyb3MgaWN1IGxkYXAgc3Ns IGNvbHVtbl9lbmNyeXB0aW9uKQogCiAjIFdlIHdhbnQgdG8gcmVjdXJzZSB0byBhbGwgc3Vi ZGlycyBmb3IgYWxsIHN0YW5kYXJkIHRhcmdldHMsIGV4Y2VwdCB0aGF0CiAjIGluc3RhbGxj aGVjayBhbmQgaW5zdGFsbCBzaG91bGQgbm90IHJlY3Vyc2UgaW50byB0aGUgc3ViZGlyZWN0 b3J5ICJtb2R1bGVzIi4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9u Ly5naXRpZ25vcmUgYi9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi8uZ2l0aWdub3JlCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ1NmRiZjY5ZDIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi8uZ2l0aWdub3JlCkBA IC0wLDAgKzEsMyBAQAorL3Rlc3RfY2xpZW50CisjIEdlbmVyYXRlZCBieSB0ZXN0IHN1aXRl CisvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24v TWFrZWZpbGUgYi9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi9NYWtlZmlsZQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43YWNhODRiMTdhCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vTWFrZWZpbGUKQEAgLTAsMCAr MSwyOSBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgTWFrZWZpbGUgZm9yIHNyYy90 ZXN0L2NvbHVtbl9lbmNyeXB0aW9uCisjCisjIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 Ni0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorIyBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYQorIworIyBzcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi9NYWtlZmlsZQorIwor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3ViZGlyID0gc3JjL3Rlc3QvY29sdW1uX2VuY3J5 cHRpb24KK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGly KS9zcmMvTWFrZWZpbGUuZ2xvYmFsCisKK292ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChsaWJw cV9zcmNkaXIpICQoQ1BQRkxBR1MpCitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVp bGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscyAkKGxpYnBxX3BncG9ydCkKKworYWxs OiB0ZXN0X2NsaWVudAorCitjaGVjazogYWxsCisJJChwcm92ZV9jaGVjaykKKworaW5zdGFs bGNoZWNrOgorCSQocHJvdmVfaW5zdGFsbGNoZWNrKQorCitjbGVhbiBkaXN0Y2xlYW4gbWFp bnRhaW5lci1jbGVhbjoKKwlybSAtZiB0ZXN0X2NsaWVudC5vIHRlc3RfY2xpZW50CisJcm0g LXJmIHRtcF9jaGVjawpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24v dC8wMDFfY29sdW1uX2VuY3J5cHRpb24ucGwgYi9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlv bi90LzAwMV9jb2x1bW5fZW5jcnlwdGlvbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi43YWI5ODk4MWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv Y29sdW1uX2VuY3J5cHRpb24vdC8wMDFfY29sdW1uX2VuY3J5cHRpb24ucGwKQEAgLTAsMCAr MSwyMDYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygnbm9kZScpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+c3RhcnQ7CisKKwor c3ViIGNyZWF0ZV9jbWsKK3sKKwlteSAoJGNta25hbWUpID0gQF87CisKKwlteSAkY21rZmls ZW5hbWUgPSAiJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfS8ke2Nta25h bWV9LnBlbSI7CisKKwlzeXN0ZW1fb3JfYmFpbCAnb3BlbnNzbCcsICdnZW5wa2V5JywgJy1h bGdvcml0aG0nLCAncnNhJywgJy1vdXQnLCAkY21rZmlsZW5hbWU7CisKKwkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworSU5TRVJUIElOVE8gcGdfY29sbWFzdGVya2V5IChv aWQsIGNta25hbWUsIGNta293bmVyLCBjbWtyZWFsbSkgVkFMVUVTICgKKyAgICBwZ19uZXh0 b2lkKCdwZ19jYXRhbG9nLnBnX2NvbG1hc3RlcmtleScsICdvaWQnLCAncGdfY2F0YWxvZy5w Z19jb2xtYXN0ZXJrZXlfb2lkX2luZGV4JyksCisgICAgJyR7Y21rbmFtZX0nLAorICAgIChz ZWxlY3Qgb2lkIGZyb20gcGdfcm9sZXMgd2hlcmUgcm9sbmFtZSA9IGN1cnJlbnRfdXNlciks CisgICAnJworKTsKK30pOworCisJcmV0dXJuICRjbWtmaWxlbmFtZTsKK30KKworc3ViIGNy ZWF0ZV9jZWsKK3sKKwlteSAoJGNla25hbWUsICRieXRlcywgJGNta25hbWUsICRjbWtmaWxl bmFtZSkgPSBAXzsKKworCSMgZ2VuZXJhdGUgcmFuZG9tIGJ5dGVzCisJc3lzdGVtX29yX2Jh aWwgJ29wZW5zc2wnLCAncmFuZCcsICctb3V0JywgIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM6OnRtcF9jaGVja30vJHtjZWtuYW1lfS5iaW4iLCAkYnl0ZXM7CisKKwkjIGVuY3J5cHQg Q0VLIHVzaW5nIENNSworCXN5c3RlbV9vcl9iYWlsICdvcGVuc3NsJywgJ3BrZXl1dGwnLCAn LWVuY3J5cHQnLAorCSAgJy1pbmtleScsICRjbWtmaWxlbmFtZSwKKwkgICctcGtleW9wdCcs ICdyc2FfcGFkZGluZ19tb2RlOm9hZXAnLAorCSAgJy1pbicsICIke1Bvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0bXBfY2hlY2t9LyR7Y2VrbmFtZX0uYmluIiwKKwkgICctb3V0JywgIiR7 UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja30vJHtjZWtuYW1lfS5iaW4uZW5j IjsKKworCW15ICRjZWtlbmNoZXggPSB1bnBhY2soJ0gqJywgc2x1cnBfZmlsZSAiJHtQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfS8ke2Nla25hbWV9LmJpbi5lbmMiKTsK KworCSMgY3JlYXRlIENFSyBpbiBkYXRhYmFzZQorCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXF7CitJTlNFUlQgSU5UTyBwZ19jb2xlbmNrZXkgKG9pZCwgY2VrbmFtZSwgY2Vr b3duZXIpIFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xlbmNr ZXknLCAnb2lkJywgJ3BnX2NhdGFsb2cucGdfY29sZW5ja2V5X29pZF9pbmRleCcpLAorICAg ICcke2Nla25hbWV9JywKKyAgICAoc2VsZWN0IG9pZCBmcm9tIHBnX3JvbGVzIHdoZXJlIHJv bG5hbWUgPSBjdXJyZW50X3VzZXIpCispOworfSk7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKK0lOU0VSVCBJTlRPIHBnX2NvbGVuY2tleWRhdGEgKG9pZCwgY2tkY2Vr aWQsIGNrZGNta2lkLCBja2RjbWthbGcsIGNrZGVuY3ZhbCkgVkFMVUVTICgKKyAgICBwZ19u ZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleWRhdGEnLCAnb2lkJywgJ3BnX2NhdGFs b2cucGdfY29sZW5ja2V5ZGF0YV9vaWRfaW5kZXgnKSwKKyAgICAoU0VMRUNUIG9pZCBGUk9N IHBnX2NvbGVuY2tleSBXSEVSRSBjZWtuYW1lID0gJyR7Y2VrbmFtZX0nKSwKKyAgICAoU0VM RUNUIG9pZCBGUk9NIHBnX2NvbG1hc3RlcmtleSBXSEVSRSBjbWtuYW1lID0gJyR7Y21rbmFt ZX0nKSwKKyAgICAxLAorICAgICdcXHgke2Nla2VuY2hleH0nCispOworfSk7CisKKwlyZXR1 cm47Cit9CisKKworbXkgJGNtazFmaWxlbmFtZSA9IGNyZWF0ZV9jbWsoJ2NtazEnKTsKK215 ICRjbWsyZmlsZW5hbWUgPSBjcmVhdGVfY21rKCdjbWsyJyk7CitjcmVhdGVfY2VrKCdjZWsx JywgMzIsICdjbWsxJywgJGNtazFmaWxlbmFtZSk7CitjcmVhdGVfY2VrKCdjZWsyJywgNDgs ICdjbWsyJywgJGNtazJmaWxlbmFtZSk7CisKKyRFTlZ7J1BHQ01LTE9PS1VQJ30gPSAnKj1m aWxlOicgLiAke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9IC4gJy8lay5w ZW0nOworCisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFC TEUgdGJsMSAoCisgICAgYSBpbnQsCisgICAgYiB0ZXh0IEVOQ1JZUFRFRCBXSVRIIChjb2x1 bW5fZW5jcnlwdGlvbl9rZXkgPSBjZWsxKQorKTsKK30pOworCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRibDIgKAorICAgIGEgaW50LAorICAg IGIgdGV4dCBFTkNSWVBURUQgV0lUSCAoZW5jcnlwdGlvbl90eXBlID0gZGV0ZXJtaW5pc3Rp YywgY29sdW1uX2VuY3J5cHRpb25fa2V5ID0gY2VrMSkKKyk7Cit9KTsKKworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBUQUJMRSB0YmwzICgKKyAgICBhIGlu dCwKKyAgICBiIHRleHQgRU5DUllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9 IGNlazEpLAorICAgIGMgdGV4dCBFTkNSWVBURUQgV0lUSCAoY29sdW1uX2VuY3J5cHRpb25f a2V5ID0gY2VrMiwgYWxnb3JpdGhtID0gJ0FFQURfQUVTXzE5Ml9DQkNfSE1BQ19TSEFfMzg0 JykKKyk7Cit9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworSU5TRVJU IElOVE8gdGJsMSAoYSwgYikgVkFMVUVTICgxLCAkMSkgXGdlbmNyICd2YWwxJworSU5TRVJU IElOVE8gdGJsMSAoYSwgYikgVkFMVUVTICgyLCAkMSkgXGdlbmNyICd2YWwyJworfSk7CisK KyMgRXhwZWN0ZWQgY2lwaGVydGV4dCBsZW5ndGggaXMgMiBibG9ja3Mgb2YgQUVTIG91dHB1 dCAoMiAqIDE2KSBwbHVzCisjIGhhbGYgU0hBLTI1NiBvdXRwdXQgKDE2KSBpbiBoZXggZW5j b2Rpbmc6ICgyICogMTYgKyAxNikgKiAyID0gOTYKK2xpa2UoJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxe0NPUFkgKFNFTEVDVCAqIEZST00gdGJsMSkgVE8gU1RET1VUfSksCisJ cXIvMVx0XFxcXHhbMC05YS1mXXs5Nn1cbjJcdFxcXFx4WzAtOWEtZl17OTZ9LywKKwknaW5z ZXJ0ZWQgZGF0YSBpcyBlbmNyeXB0ZWQnKTsKKworbXkgJHJlc3VsdDsKKworJHJlc3VsdCA9 ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgYSwgYiBGUk9NIHRibDEg XGdkZXNjfSk7CitpcygkcmVzdWx0LAorCXEoYXxpbnRlZ2VyCitifHRleHQpLAorCSdxdWVy eSByZXN1bHQgZGVzY3JpcHRpb24gaGFzIG9yaWdpbmFsIHR5cGUnKTsKKworJHJlc3VsdCA9 ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgYSwgYiBGUk9NIHRibDF9 KTsKK2lzKCRyZXN1bHQsCisJcSgxfHZhbDEKKzJ8dmFsMiksCisJJ2RlY3J5cHRlZCBxdWVy eSByZXN1bHQnKTsKKworeworCWxvY2FsICRFTlZ7J1BHQ01LTE9PS1VQJ30gPSAnKj1ydW46 YnJva2VuICVrICIlYiInOworCSRyZXN1bHQgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBx e1NFTEVDVCBhLCBiIEZST00gdGJsMX0pOworCWlzbnQoJHJlc3VsdCwgMCwgJ3F1ZXJ5IGZh aWxzIHdpdGggYnJva2VuIGNta2xvb2t1cCBydW4gc2V0dGluZycpOworfQorCit7CisJbG9j YWwgJEVOVnsnUEdDTUtMT09LVVAnfSA9ICIqPXJ1bjpwZXJsIC4vdGVzdF9ydW5fZGVjcnlw dC5wbCAnJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfScgJWsgJWEgJyVi JyI7CisKKwkkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVD VCBhLCBiIEZST00gdGJsMX0pOworCWlzKCRyZXN1bHQsCisJCXEoMXx2YWwxCisyfHZhbDIp LAorCQknZGVjcnlwdGVkIHF1ZXJ5IHJlc3VsdCB3aXRoIGNta2xvb2t1cCBydW4nKTsKK30K KworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworSU5TRVJUIElOVE8gdGJsMyAo YSwgYiwgYykgVkFMVUVTICgxLCAkMSwgJDIpIFxnZW5jciAndmFsQjEnICd2YWxDMScKK30p OworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBh LCBiLCBjIEZST00gdGJsM30pOworaXMoJHJlc3VsdCwKKwlxKDF8dmFsQjF8dmFsQzEpLAor CSdkZWNyeXB0ZWQgcXVlcnkgcmVzdWx0IG11bHRpcGxlIGtleXMnKTsKKworCiskbm9kZS0+ Y29tbWFuZF9mYWlsc19saWtlKFsndGVzdF9jbGllbnQnLCAndGVzdDEnXSwgcXIvbm90IGVu Y3J5cHRlZC8sICd0ZXN0IGNsaWVudCBmYWlscyBiZWNhdXNlIHBhcmFtZXRlcnMgbm90IGVu Y3J5cHRlZCcpOworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx e1NFTEVDVCBhLCBiIEZST00gdGJsMX0pOworaXMoJHJlc3VsdCwKKwlxKDF8dmFsMQorMnx2 YWwyKSwKKwknZGVjcnlwdGVkIHF1ZXJ5IHJlc3VsdCBhZnRlciB0ZXN0IGNsaWVudCBpbnNl cnQnKTsKKworJG5vZGUtPmNvbW1hbmRfb2soWyd0ZXN0X2NsaWVudCcsICd0ZXN0MiddLCAn dGVzdCBjbGllbnQgdGVzdCAyJyk7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHF7U0VMRUNUIGEsIGIgRlJPTSB0YmwxfSk7CitpcygkcmVzdWx0LAorCXEo MXx2YWwxCisyfHZhbDIKKzN8dmFsMyksCisJJ2RlY3J5cHRlZCBxdWVyeSByZXN1bHQgYWZ0 ZXIgdGVzdCBjbGllbnQgaW5zZXJ0IDInKTsKKworbGlrZSgkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHF7Q09QWSAoU0VMRUNUICogRlJPTSB0YmwxIFdIRVJFIGEgPSAzKSBUTyBT VERPVVR9KSwKKwlxci8zXHRcXFxceFswLTlhLWZdezk2fS8sCisJJ2luc2VydGVkIGRhdGEg aXMgZW5jcnlwdGVkJyk7CisKKyRub2RlLT5jb21tYW5kX29rKFsndGVzdF9jbGllbnQnLCAn dGVzdDMnXSwgJ3Rlc3QgY2xpZW50IHRlc3QgMycpOworCiskcmVzdWx0ID0gJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBhLCBiIEZST00gdGJsMX0pOworaXMoJHJl c3VsdCwKKwlxKDF8dmFsMQorMnx2YWwyCiszfHZhbDN1cGQpLAorCSdkZWNyeXB0ZWQgcXVl cnkgcmVzdWx0IGFmdGVyIHRlc3QgY2xpZW50IGluc2VydCAzJyk7CisKKyRub2RlLT5jb21t YW5kX29rKFsndGVzdF9jbGllbnQnLCAndGVzdDQnXSwgJ3Rlc3QgY2xpZW50IHRlc3QgNCcp OworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBh LCBiIEZST00gdGJsMn0pOworaXMoJHJlc3VsdCwKKwlxKDF8dmFsQQorMnx2YWxCCiszfHZh bEEpLAorCSdkZWNyeXB0ZWQgcXVlcnkgcmVzdWx0IGFmdGVyIHRlc3QgY2xpZW50IGluc2Vy dCA0Jyk7CisKK2lzKCRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgYiwg Y291bnQoKikgRlJPTSB0YmwyIEdST1VQIEJZIGIgT1JERVIgQlkgMn0pLAorCXEodmFsQnwx Cit2YWxBfDIpLAorCSdncm91cCBieSBkZXRlcm1pbmlzdGljYWxseSBlbmNyeXB0ZWQgY29s dW1uJyk7CisKKyRub2RlLT5jb21tYW5kX29rKFsndGVzdF9jbGllbnQnLCAndGVzdDUnXSwg J3Rlc3QgY2xpZW50IHRlc3QgNScpOworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxe1NFTEVDVCBhLCBiLCBjIEZST00gdGJsM30pOworaXMoJHJlc3VsdCwK KwlxKDF8dmFsQjF8dmFsQzEKKzJ8dmFsQjJ8dmFsQzIKKzN8dmFsQjN8dmFsQzMpLAorCSdk ZWNyeXB0ZWQgcXVlcnkgcmVzdWx0IG11bHRpcGxlIGtleXMgYWZ0ZXIgdGVzdCBjbGllbnQg aW5zZXJ0IDUnKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9j b2x1bW5fZW5jcnlwdGlvbi90LzAwMl9jbWtfcm90YXRpb24ucGwgYi9zcmMvdGVzdC9jb2x1 bW5fZW5jcnlwdGlvbi90LzAwMl9jbWtfcm90YXRpb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uNWExM2EyMDZlYgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL3QvMDAyX2Nta19yb3RhdGlvbi5wbApAQCAtMCww ICsxLDE0NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IGNvbHVtbiBtYXN0ZXIga2V5IHJvdGF0 aW9uLiAgRmlyc3QsIHdlIGdlbmVyYXRlIENNSzEgYW5kIGEgQ0VLCisjIGVuY3J5cHRlZCB3 aXRoIGl0LiAgVGhlbiB3ZSBhZGQgYSBDTUsyIGFuZCBlbmNyeXB0IHRoZSBDRUsgd2l0aCBp dAorIyBhcyB3ZWxsLiAgKFJlY2FsbCB0aGF0IGEgQ0VLIGNhbiBiZSBhc3NvY2lhdGVkIHdp dGggbXVsdGlwbGUgQ01LcywKKyMgZm9yIHRoaXMgcmVhc29uLiAgVGhhdCdzIHdoeSBwZ19j b2xlbmNrZXlkYXRhIGlzIHNwbGl0IG91dCBmcm9tCisjIHBnX2NvbGVuY2tleS4pICBUaGVu IHdlIHJlbW92ZSBDTUsxLiAgV2UgdGVzdCB0aGF0IHdlIGNhbiBnZXQKKyMgZGVjcnlwdGVk IHF1ZXJ5IHJlc3VsdHMgYXQgZWFjaCBzdGVwLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p bmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPnN0 YXJ0OworCisKK3N1YiBjcmVhdGVfY21rCit7CisJbXkgKCRjbWtuYW1lKSA9IEBfOworCisJ bXkgJGNta2ZpbGVuYW1lID0gIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVj a30vJHtjbWtuYW1lfS5wZW0iOworCisJc3lzdGVtX29yX2JhaWwgJ29wZW5zc2wnLCAnZ2Vu cGtleScsICctYWxnb3JpdGhtJywgJ3JzYScsICctb3V0JywgJGNta2ZpbGVuYW1lOworCisJ JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKK0lOU0VSVCBJTlRPIHBnX2NvbG1h c3RlcmtleSAob2lkLCBjbWtuYW1lLCBjbWtvd25lciwgY21rcmVhbG0pIFZBTFVFUyAoCisg ICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xtYXN0ZXJrZXknLCAnb2lkJywgJ3Bn X2NhdGFsb2cucGdfY29sbWFzdGVya2V5X29pZF9pbmRleCcpLAorICAgICcke2Nta25hbWV9 JywKKyAgICAoc2VsZWN0IG9pZCBmcm9tIHBnX3JvbGVzIHdoZXJlIHJvbG5hbWUgPSBjdXJy ZW50X3VzZXIpLAorICAgJycKKyk7Cit9KTsKKworCXJldHVybiAkY21rZmlsZW5hbWU7Cit9 CisKKworbXkgJGNtazFmaWxlbmFtZSA9IGNyZWF0ZV9jbWsoJ2NtazEnKTsKKworIyBjcmVh dGUgQ0VLCitteSAoJGNla25hbWUsICRieXRlcykgPSAoJ2NlazEnLCAxNisxNik7CisKKyMg Z2VuZXJhdGUgcmFuZG9tIGJ5dGVzCitzeXN0ZW1fb3JfYmFpbCAnb3BlbnNzbCcsICdyYW5k JywgJy1vdXQnLCAiJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfS8ke2Nl a25hbWV9LmJpbiIsICRieXRlczsKKworIyBlbmNyeXB0IENFSyB1c2luZyBDTUsKK3N5c3Rl bV9vcl9iYWlsICdvcGVuc3NsJywgJ3BrZXl1dGwnLCAnLWVuY3J5cHQnLAorICAnLWlua2V5 JywgJGNtazFmaWxlbmFtZSwKKyAgJy1wa2V5b3B0JywgJ3JzYV9wYWRkaW5nX21vZGU6b2Fl cCcsCisgICctaW4nLCAiJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfS8k e2Nla25hbWV9LmJpbiIsCisgICctb3V0JywgIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnRtcF9jaGVja30vJHtjZWtuYW1lfS5iaW4uZW5jIjsKKworbXkgJGNla2VuY2hleCA9IHVu cGFjaygnSConLCBzbHVycF9maWxlICIke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBf Y2hlY2t9LyR7Y2VrbmFtZX0uYmluLmVuYyIpOworCisjIGNyZWF0ZSBDRUsgaW4gZGF0YWJh c2UKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CitJTlNFUlQgSU5UTyBwZ19j b2xlbmNrZXkgKG9pZCwgY2VrbmFtZSwgY2Vrb3duZXIpIFZBTFVFUyAoCisgICAgcGdfbmV4 dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXknLCAnb2lkJywgJ3BnX2NhdGFsb2cucGdf Y29sZW5ja2V5X29pZF9pbmRleCcpLAorICAgICcke2Nla25hbWV9JywKKyAgICAoc2VsZWN0 IG9pZCBmcm9tIHBnX3JvbGVzIHdoZXJlIHJvbG5hbWUgPSBjdXJyZW50X3VzZXIpCispOwor fSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CitJTlNFUlQgSU5UTyBw Z19jb2xlbmNrZXlkYXRhIChvaWQsIGNrZGNla2lkLCBja2RjbWtpZCwgY2tkY21rYWxnLCBj a2RlbmN2YWwpIFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xl bmNrZXlkYXRhJywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleWRhdGFfb2lkX2lu ZGV4JyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xlbmNrZXkgV0hFUkUgY2VrbmFt ZSA9ICcke2Nla25hbWV9JyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xtYXN0ZXJr ZXkgV0hFUkUgY21rbmFtZSA9ICdjbWsxJyksCisgICAgMSwKKyAgICAnXFx4JHtjZWtlbmNo ZXh9JworKTsKK30pOworCiskRU5WeydQR0NNS0xPT0tVUCd9ID0gJyo9ZmlsZTonIC4gJHtQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfSAuICcvJWsucGVtJzsKKworJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBUQUJMRSB0YmwxICgKKyAg ICBhIGludCwKKyAgICBiIHRleHQgRU5DUllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9u X2tleSA9IGNlazEpCispOworfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXsKK0lOU0VSVCBJTlRPIHRibDEgKGEsIGIpIFZBTFVFUyAoMSwgJDEpIFxnZW5jciAndmFs MScKK0lOU0VSVCBJTlRPIHRibDEgKGEsIGIpIFZBTFVFUyAoMiwgJDEpIFxnZW5jciAndmFs MicKK30pOworCitpcygkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIGEs IGIgRlJPTSB0YmwxfSksCisJcSgxfHZhbDEKKzJ8dmFsMiksCisJJ2RlY3J5cHRlZCBxdWVy eSByZXN1bHQgd2l0aCBvbmUgQ01LJyk7CisKKworIyBjcmVhdGUgbmV3IENNSworbXkgJGNt azJmaWxlbmFtZSA9IGNyZWF0ZV9jbWsoJ2NtazInKTsKKworIyBlbmNyeXB0IENFSyB1c2lu ZyBuZXcgQ01LCisjCisjIChIZXJlLCB3ZSBzdGlsbCBoYXZlIHRoZSBwbGFpbnRleHQgb2Yg dGhlIENFSyBhdmFpbGFibGUgZnJvbQorIyBlYXJsaWVyLiAgSW4gcmVhbGl0eSwgb25lIHdv dWxkIGRlY3J5cHQgdGhlIENFSyB3aXRoIHRoZSBmaXJzdCBDTUsKKyMgYW5kIHRoZW4gcmUt ZW5jcnlwdCBpdCB3aXRoIHRoZSBzZWNvbmQgQ01LLikKK3N5c3RlbV9vcl9iYWlsICdvcGVu c3NsJywgJ3BrZXl1dGwnLCAnLWVuY3J5cHQnLAorICAnLWlua2V5JywgJGNtazJmaWxlbmFt ZSwKKyAgJy1wa2V5b3B0JywgJ3JzYV9wYWRkaW5nX21vZGU6b2FlcCcsCisgICctaW4nLCAi JHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfS8ke2Nla25hbWV9LmJpbiIs CisgICctb3V0JywgIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja30vJHtj ZWtuYW1lfS5iaW4uZW5jIjsKKworJGNla2VuY2hleCA9IHVucGFjaygnSConLCBzbHVycF9m aWxlICIke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9LyR7Y2VrbmFtZX0u YmluLmVuYyIpOworCisjIGFkZCBuZXcgZGF0YSByZWNvcmQgZm9yIENFSyBpbiBkYXRhYmFz ZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKK0lOU0VSVCBJTlRPIHBnX2Nv bGVuY2tleWRhdGEgKG9pZCwgY2tkY2VraWQsIGNrZGNta2lkLCBja2RjbWthbGcsIGNrZGVu Y3ZhbCkgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbGVuY2tl eWRhdGEnLCAnb2lkJywgJ3BnX2NhdGFsb2cucGdfY29sZW5ja2V5ZGF0YV9vaWRfaW5kZXgn KSwKKyAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NvbGVuY2tleSBXSEVSRSBjZWtuYW1lID0g JyR7Y2VrbmFtZX0nKSwKKyAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NvbG1hc3RlcmtleSBX SEVSRSBjbWtuYW1lID0gJ2NtazInKSwKKyAgICAxLAorICAgICdcXHgke2Nla2VuY2hleH0n CispOworfSk7CisKKworaXMoJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVD VCBhLCBiIEZST00gdGJsMX0pLAorCXEoMXx2YWwxCisyfHZhbDIpLAorCSdkZWNyeXB0ZWQg cXVlcnkgcmVzdWx0IHdpdGggdHdvIENNS3MnKTsKKworCisjIGRlbGV0ZSBDRUsgcmVjb3Jk IGZvciBmaXJzdCBDTUsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CitERUxF VEUgRlJPTSBwZ19jb2xlbmNrZXlkYXRhIFdIRVJFIGNrZGNta2lkID0gKFNFTEVDVCBvaWQg RlJPTSBwZ19jb2xtYXN0ZXJrZXkgV0hFUkUgY21rbmFtZSA9ICdjbWsxJyk7Cit9KTsKKwor Citpcygkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIGEsIGIgRlJPTSB0 YmwxfSksCisJcSgxfHZhbDEKKzJ8dmFsMiksCisJJ2RlY3J5cHRlZCBxdWVyeSByZXN1bHQg d2l0aCBvbmx5IG5ldyBDTUsnKTsKKworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL3Rlc3RfY2xpZW50LmMgYi9zcmMvdGVzdC9j b2x1bW5fZW5jcnlwdGlvbi90ZXN0X2NsaWVudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmFkZDlmZTQwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9jb2x1bW5fZW5jcnlwdGlvbi90ZXN0X2NsaWVudC5jCkBAIC0wLDAgKzEsMjEwIEBACisv KgorICogQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCisKKyNpbmNs dWRlICJsaWJwcS1mZS5oIgorCisKK3N0YXRpYyBpbnQKK3Rlc3QxKFBHY29ubiAqY29ubikK K3sKKwlQR3Jlc3VsdCAgICpyZXM7CisJY29uc3QgY2hhciAqdmFsdWVzW10gPSB7IjMiLCAi dmFsMyJ9OworCisJcmVzID0gUFFleGVjUGFyYW1zKGNvbm4sICJJTlNFUlQgSU5UTyB0Ymwx IChhLCBiKSBWQUxVRVMgKCQxLCAkMikiLAorCQkJCQkgICAyLCBOVUxMLCB2YWx1ZXMsIE5V TEwsIE5VTEwsIDApOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1B TkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIlBRZXhlY1BhcmFtcygpIGZhaWxlZDog JXNcbiIsCisJCQkJUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAordGVzdDIoUEdjb25uICpjb25uKQorewor CVBHcmVzdWx0ICAgKnJlcywKKwkJCSAgICpyZXMyOworCWNvbnN0IGNoYXIgKnZhbHVlc1td ID0geyIzIiwgInZhbDMifTsKKwlpbnQJCQlmb3JjZXNbXSA9IHtmYWxzZSwgdHJ1ZX07CisK KwlyZXMgPSBQUXByZXBhcmUoY29ubiwgIiIsICJJTlNFUlQgSU5UTyB0YmwxIChhLCBiKSBW QUxVRVMgKCQxLCAkMikiLAorCQkJCQkyLCBOVUxMKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMo cmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJQUXBy ZXBhcmUoKSBmYWlsZWQ6ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJ cmV0dXJuIDE7CisJfQorCisJcmVzMiA9IFBRZGVzY3JpYmVQcmVwYXJlZChjb25uLCAiIik7 CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlczIpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJewor CQlmcHJpbnRmKHN0ZGVyciwgIlBRZGVzY3JpYmVQcmVwYXJlZCgpIGZhaWxlZDogJXNcbiIs CisJCQkJUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAo ISghUFFwYXJhbWlzZW5jcnlwdGVkKHJlczIsIDApICYmCisJCSAgUFFwYXJhbWlzZW5jcnlw dGVkKHJlczIsIDEpKSkKKwl7CisJCWZwcmludGYoc3RkZXJyLCAid3JvbmcgcmVzdWx0cyBm cm9tIFBRcGFyYW1pc2VuY3J5cHRlZCgpXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmVz ID0gUFFleGVjUHJlcGFyZWQyKGNvbm4sICIiLCAyLCB2YWx1ZXMsIE5VTEwsIE5VTEwsIGZv cmNlcywgMCwgcmVzMik7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09N TUFORF9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiUFFleGVjUHJlcGFyZWQoKSBmYWls ZWQ6ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJuIDE7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3Rlc3QzKFBHY29ubiAqY29ubikK K3sKKwlQR3Jlc3VsdCAgICpyZXMsCisJCQkgICAqcmVzMjsKKwljb25zdCBjaGFyICp2YWx1 ZXNbXSA9IHsiMyIsICJ2YWwzdXBkIn07CisKKwlyZXMgPSBQUXByZXBhcmUoY29ubiwgIiIs ICJVUERBVEUgdGJsMSBTRVQgYiA9ICQyIFdIRVJFIGEgPSAkMSIsCisJCQkJCTIsIE5VTEwp OworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJewor CQlmcHJpbnRmKHN0ZGVyciwgIlBRcHJlcGFyZSgpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFl cnJvck1lc3NhZ2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXMyID0gUFFkZXNj cmliZVByZXBhcmVkKGNvbm4sICIiKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzMikgIT0g UEdSRVNfQ09NTUFORF9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiUFFkZXNjcmliZVBy ZXBhcmVkKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2FnZShjb25uKSk7CisJ CXJldHVybiAxOworCX0KKworCXJlcyA9IFBRZXhlY1ByZXBhcmVkMihjb25uLCAiIiwgMiwg dmFsdWVzLCBOVUxMLCBOVUxMLCBOVUxMLCAwLCByZXMyKTsKKwlpZiAoUFFyZXN1bHRTdGF0 dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJQ UWV4ZWNQcmVwYXJlZCgpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFlcnJvck1lc3NhZ2UoY29u bikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAor dGVzdDQoUEdjb25uICpjb25uKQoreworCVBHcmVzdWx0ICAgKnJlcywKKwkJCSAgICpyZXMy OworCWNvbnN0IGNoYXIgKnZhbHVlc1tdID0geyIxIiwgInZhbEEiLCAiMiIsICJ2YWxCIiwg IjMiLCAidmFsQSJ9OworCisJcmVzID0gUFFwcmVwYXJlKGNvbm4sICIiLCAiSU5TRVJUIElO VE8gdGJsMiAoYSwgYikgVkFMVUVTICgkMSwgJDIpLCAoJDMsICQ0KSwgKCQ1LCAkNikiLAor CQkJCQk2LCBOVUxMKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01N QU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJQUXByZXBhcmUoKSBmYWlsZWQ6ICVz XG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJuIDE7CisJfQorCisJ cmVzMiA9IFBRZGVzY3JpYmVQcmVwYXJlZChjb25uLCAiIik7CisJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlczIpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwg IlBRZGVzY3JpYmVQcmVwYXJlZCgpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXMgPSBQUWV4ZWNQcmVwYXJlZDIo Y29ubiwgIiIsIDYsIHZhbHVlcywgTlVMTCwgTlVMTCwgTlVMTCwgMCwgcmVzMik7CisJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCWZwcmlu dGYoc3RkZXJyLCAiUFFleGVjUHJlcGFyZWQoKSBmYWlsZWQ6ICVzXG4iLAorCQkJCVBRZXJy b3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQKK3Rlc3Q1KFBHY29ubiAqY29ubikKK3sKKwlQR3Jlc3VsdCAgICpyZXMs CisJCQkgICAqcmVzMjsKKwljb25zdCBjaGFyICp2YWx1ZXNbXSA9IHsKKwkJIjIiLCAidmFs QjIiLCAidmFsQzIiLAorCQkiMyIsICJ2YWxCMyIsICJ2YWxDMyIKKwl9OworCisJcmVzID0g UFFwcmVwYXJlKGNvbm4sICIiLCAiSU5TRVJUIElOVE8gdGJsMyAoYSwgYiwgYykgVkFMVUVT ICgkMSwgJDIsICQzKSwgKCQ0LCAkNSwgJDYpIiwKKwkJCQkJNiwgTlVMTCk7CisJaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCWZwcmludGYo c3RkZXJyLCAiUFFwcmVwYXJlKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2Fn ZShjb25uKSk7CisJCXJldHVybiAxOworCX0KKworCXJlczIgPSBQUWRlc2NyaWJlUHJlcGFy ZWQoY29ubiwgIiIpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMyKSAhPSBQR1JFU19DT01N QU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJQUWRlc2NyaWJlUHJlcGFyZWQoKSBm YWlsZWQ6ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJuIDE7 CisJfQorCisJcmVzID0gUFFleGVjUHJlcGFyZWQyKGNvbm4sICIiLCA2LCB2YWx1ZXMsIE5V TEwsIE5VTEwsIE5VTEwsIDAsIHJlczIpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9 IFBHUkVTX0NPTU1BTkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIlBRZXhlY1ByZXBh cmVkKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXJl dHVybiAxOworCX0KKworCXJldHVybiAwOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQoreworCVBHY29ubgkgICAqY29ubjsKKwlpbnQJCQlyZXQgPSAwOworCisJ Y29ubiA9IFBRY29ubmVjdGRiKCIiKTsKKwlpZiAoUFFzdGF0dXMoY29ubikgIT0gQ09OTkVD VElPTl9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiQ29ubmVjdGlvbiB0byBkYXRhYmFz ZSBmYWlsZWQ6ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJu IDE7CisJfQorCisJaWYgKGFyZ2MgPCAyIHx8IGFyZ3ZbMV0gPT0gTlVMTCkKKwkJcmV0dXJu IDg3OworCWVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAidGVzdDEiKSA9PSAwKQorCQlyZXQg PSB0ZXN0MShjb25uKTsKKwllbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInRlc3QyIikgPT0g MCkKKwkJcmV0ID0gdGVzdDIoY29ubik7CisJZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJ0 ZXN0MyIpID09IDApCisJCXJldCA9IHRlc3QzKGNvbm4pOworCWVsc2UgaWYgKHN0cmNtcChh cmd2WzFdLCAidGVzdDQiKSA9PSAwKQorCQlyZXQgPSB0ZXN0NChjb25uKTsKKwllbHNlIGlm IChzdHJjbXAoYXJndlsxXSwgInRlc3Q1IikgPT0gMCkKKwkJcmV0ID0gdGVzdDUoY29ubik7 CisJZWxzZQorCQlyZXQgPSA4ODsKKworCVBRZmluaXNoKGNvbm4pOworCXJldHVybiByZXQ7 Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi90ZXN0X3J1bl9k ZWNyeXB0LnBsIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vdGVzdF9ydW5fZGVjcnlw dC5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwLi45NjY0MzQ5ZjE0 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vdGVzdF9y dW5fZGVjcnlwdC5wbApAQCAtMCwwICsxLDQxIEBACisjIS91c3IvYmluL3BlcmwKKworIyBU ZXN0L3NhbXBsZSBjb21tYW5kIGZvciBsaWJwcSBjbWtsb29rdXAgcnVuIHNjaGVtZQorIwor IyBUaGlzIGp1c3QgcGxhY2VzIHRoZSBkYXRhIGludG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBy dW5zIHRoZSBvcGVuc3NsCisjIGNvbW1hbmQgb24gaXQuICAoSW4gcHJhY3RpY2UsIHRoaXMg Y291bGQgbW9yZSBzaW1wbHkgYmUgd3JpdHRlbiBhcyBhCisjIHNoZWxsIHNjcmlwdCwgYnV0 IHRoaXMgd2F5IGl0J3MgbW9yZSBwb3J0YWJsZS4pCisKKyMgQ29weXJpZ2h0IChjKSAyMDIx LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBNSU1FOjpCYXNlNjQ7CisKK215ICgkdG1wZGly LCAkY21rbmFtZSwgJGFsZywgJGI2NGRhdGEpID0gQEFSR1Y7CisKK2RpZSB1bmxlc3MgJGFs ZyBlcSAnUlNBRVNfT0FFUF9TSEFfMSc7CisKK29wZW4gbXkgJGZoLCAnPjpyYXcnLCAiJHt0 bXBkaXJ9L2lucHV0LnRtcCIgb3IgZGllOworcHJpbnQgJGZoIGRlY29kZV9iYXNlNjQoJGI2 NGRhdGEpOworY2xvc2UgJGZoOworCitzeXN0ZW0oJ29wZW5zc2wnLCAncGtleXV0bCcsICct ZGVjcnlwdCcsCisJJy1pbmtleScsICIke3RtcGRpcn0vJHtjbWtuYW1lfS5wZW0iLCAnLXBr ZXlvcHQnLCAncnNhX3BhZGRpbmdfbW9kZTpvYWVwJywKKwknLWluJywgIiR7dG1wZGlyfS9p bnB1dC50bXAiLCAnLW91dCcsICIke3RtcGRpcn0vb3V0cHV0LnRtcCIpID09IDAgb3IgZGll OworCitvcGVuICRmaCwgJzw6cmF3JywgIiR7dG1wZGlyfS9vdXRwdXQudG1wIiBvciBkaWU7 CitteSAkZGF0YSA9ICcnOworCit3aGlsZSAoMSkgeworCW15ICRzdWNjZXNzID0gcmVhZCAk ZmgsICRkYXRhLCAxMDAsIGxlbmd0aCgkZGF0YSk7CisJZGllICQhIGlmIG5vdCBkZWZpbmVk ICRzdWNjZXNzOworCWxhc3QgaWYgbm90ICRzdWNjZXNzOworfQorCitjbG9zZSAkZmg7CisK K3VubGluayAiJHt0bXBkaXJ9L2lucHV0LnRtcCIsICIke3RtcGRpcn0vb3V0cHV0LnRtcCI7 CisKK3ByaW50IGVuY29kZV9iYXNlNjQoJGRhdGEpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvZGlzYWxsb3dlZF9pbl9waXBlbGluZS50 cmFjZSBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL2Rpc2FsbG93 ZWRfaW5fcGlwZWxpbmUudHJhY2UKaW5kZXggZGQ2ZGYwM2YxZS4uNWZjOWMwMzQ2ZCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvZGlzYWxs b3dlZF9pbl9waXBlbGluZS50cmFjZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3Bp cGVsaW5lL3RyYWNlcy9kaXNhbGxvd2VkX2luX3BpcGVsaW5lLnRyYWNlCkBAIC0xLDUgKzEs NSBAQAogRgkxMwlRdWVyeQkgIlNFTEVDVCAxIgotQgkzMwlSb3dEZXNjcmlwdGlvbgkgMSAi P2NvbHVtbj8iIE5OTk4gMCBOTk5OIDQgLTEgMAorQgkzOQlSb3dEZXNjcmlwdGlvbgkgMSAi P2NvbHVtbj8iIE5OTk4gMCBOTk5OIDQgLTEgMCBOTk5OIDAKIEIJMTEJRGF0YVJvdwkgMSAx ICcxJwogQgkxMwlDb21tYW5kQ29tcGxldGUJICJTRUxFQ1QgMSIKIEIJNQlSZWFkeUZvclF1 ZXJ5CSBJCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3Ry YWNlcy9tdWx0aV9waXBlbGluZXMudHJhY2UgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3Bp cGVsaW5lL3RyYWNlcy9tdWx0aV9waXBlbGluZXMudHJhY2UKaW5kZXggNGI5YWIwN2NhNC4u NzAwYjBiNjUxOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGlu ZS90cmFjZXMvbXVsdGlfcGlwZWxpbmVzLnRyYWNlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv bGlicHFfcGlwZWxpbmUvdHJhY2VzL211bHRpX3BpcGVsaW5lcy50cmFjZQpAQCAtMTAsMTMg KzEwLDEzIEBAIEYJOQlFeGVjdXRlCSAiIiAwCiBGCTQJU3luYwogQgk0CVBhcnNlQ29tcGxl dGUKIEIJNAlCaW5kQ29tcGxldGUKLUIJMzMJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/ IiBOTk5OIDAgTk5OTiA0IC0xIDAKK0IJMzkJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/ IiBOTk5OIDAgTk5OTiA0IC0xIDAgTk5OTiAwCiBCCTExCURhdGFSb3cJIDEgMSAnMScKIEIJ MTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTUJUmVhZHlGb3JRdWVyeQkgSQog Qgk0CVBhcnNlQ29tcGxldGUKIEIJNAlCaW5kQ29tcGxldGUKLUIJMzMJUm93RGVzY3JpcHRp b24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0xIDAKK0IJMzkJUm93RGVzY3JpcHRp b24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0xIDAgTk5OTiAwCiBCCTExCURhdGFS b3cJIDEgMSAnMScKIEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTUJUmVh ZHlGb3JRdWVyeQkgSQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBl bGluZS90cmFjZXMvbm9zeW5jLnRyYWNlIGIvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBl bGluZS90cmFjZXMvbm9zeW5jLnRyYWNlCmluZGV4IGQ5OWFhYzY0OWQuLjdiMWRmYTFjMTUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL25v c3luYy50cmFjZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNl cy9ub3N5bmMudHJhY2UKQEAgLTQxLDUyICs0MSw1MiBAQCBGCTkJRXhlY3V0ZQkgIiIgMAog Rgk0CUZsdXNoCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21wbGV0ZQotQgkzMQlS b3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAwCitCCTM3 CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAgTk5O TiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4 enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29tbWFuZENvbXBsZXRl CSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21wbGV0ZQotQgkz MQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAwCitC CTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAg Tk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4 eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29tbWFuZENvbXBs ZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21wbGV0ZQot QgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAw CitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1NTM1IC0x IDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5enh6eHl6 eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29tbWFuZENv bXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21wbGV0 ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUzNSAt MSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1NTM1 IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5enh6 eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29tbWFu ZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21w bGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUz NSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1 NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5 enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29t bWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRD b21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2 NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5O IDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4 enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJ Q29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJp bmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5O TiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBO Tk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4 eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJ MTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0 CUJpbmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAg Tk5OTiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4g MCBOTk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6 eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicK IEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQog Qgk0CUJpbmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5O IDAgTk5OTiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5O Tk4gMCBOTk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6 eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4 eicKIEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0 ZQogQgk0CUJpbmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBO Tk5OIDAgTk5OTiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQi IE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5 enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4 eXp4eicKIEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBGCTQJVGVybWluYXRl CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNlcy9w aXBlbGluZV9hYm9ydC50cmFjZSBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUv dHJhY2VzL3BpcGVsaW5lX2Fib3J0LnRyYWNlCmluZGV4IDNmY2U1NDhiOTkuLjZlNDMwOWNh ZGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2Vz L3BpcGVsaW5lX2Fib3J0LnRyYWNlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlw ZWxpbmUvdHJhY2VzL3BpcGVsaW5lX2Fib3J0LnRyYWNlCkBAIC01MCwxNCArNTAsMTQgQEAg Rgk2CUNsb3NlCSBQICIiCiBGCTQJU3luYwogQgk0CVBhcnNlQ29tcGxldGUKIEIJNAlCaW5k Q29tcGxldGUKLUIJMzMJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5O TiA2NTUzNSAtMSAwCitCCTM5CVJvd0Rlc2NyaXB0aW9uCSAxICI/Y29sdW1uPyIgTk5OTiAw IE5OTk4gNjU1MzUgLTEgMCBOTk5OIDAKIEIJMzIJRGF0YVJvdwkgMSAyMiAnMC4zMzMzMzMz MzMzMzMzMzMzMzMzMycKIEIJMzIJRGF0YVJvdwkgMSAyMiAnMC41MDAwMDAwMDAwMDAwMDAw MDAwMCcKIEIJMzIJRGF0YVJvdwkgMSAyMiAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMCcKIEIJ Tk4JRXJyb3JSZXNwb25zZQkgUyAiRVJST1IiIFYgIkVSUk9SIiBDICIyMjAxMiIgTSAiZGl2 aXNpb24gYnkgemVybyIgRiAiU1NTUyIgTCAiU1NTUyIgUiAiU1NTUyIgXHgwMAogQgk1CVJl YWR5Rm9yUXVlcnkJIEkKIEYJNDAJUXVlcnkJICJTRUxFQ1QgaXRlbW5vIEZST00gcHFfcGlw ZWxpbmVfZGVtbyIKLUIJMzEJUm93RGVzY3JpcHRpb24JIDEgIml0ZW1ubyIgTk5OTiAyIE5O Tk4gNCAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJpdGVtbm8iIE5OTk4gMiBOTk5O IDQgLTEgMCBOTk5OIDAKIEIJMTEJRGF0YVJvdwkgMSAxICczJwogQgkxMwlDb21tYW5kQ29t cGxldGUJICJTRUxFQ1QgMSIKIEIJNQlSZWFkeUZvclF1ZXJ5CSBJCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNlcy9wcmVwYXJlZC50cmFjZSBi L3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3ByZXBhcmVkLnRyYWNl CmluZGV4IDFhN2RlNWMzZTYuLjhkNDViYmMwY2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3ByZXBhcmVkLnRyYWNlCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3ByZXBhcmVkLnRyYWNlCkBAIC0y LDggKzIsOCBAQCBGCTY4CVBhcnNlCSAic2VsZWN0X29uZSIgIlNFTEVDVCAkMSwgJzQyJywg JDE6Om51bWVyaWMsIGludGVydmFsICcxIHNlYyciIDEgTk5OTgogRgkxNglEZXNjcmliZQkg UyAic2VsZWN0X29uZSIKIEYJNAlTeW5jCiBCCTQJUGFyc2VDb21wbGV0ZQotQgkxMAlQYXJh bWV0ZXJEZXNjcmlwdGlvbgkgMSBOTk5OCi1CCTExMwlSb3dEZXNjcmlwdGlvbgkgNCAiP2Nv bHVtbj8iIE5OTk4gMCBOTk5OIDQgLTEgMCAiP2NvbHVtbj8iIE5OTk4gMCBOTk5OIDY1NTM1 IC0xIDAgIm51bWVyaWMiIE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAgImludGVydmFsIiBOTk5O IDAgTk5OTiAxNiAtMSAwCitCCTE4CVBhcmFtZXRlckRlc2NyaXB0aW9uCSAxIE5OTk4gTk5O TiAwIDAKK0IJMTM3CVJvd0Rlc2NyaXB0aW9uCSA0ICI/Y29sdW1uPyIgTk5OTiAwIE5OTk4g NCAtMSAwIE5OTk4gMCAiP2NvbHVtbj8iIE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAgTk5OTiAw ICJudW1lcmljIiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAwIE5OTk4gMCAiaW50ZXJ2YWwiIE5O Tk4gMCBOTk5OIDE2IC0xIDAgTk5OTiAwCiBCCTUJUmVhZHlGb3JRdWVyeQkgSQogRgkxMAlR dWVyeQkgIkJFR0lOIgogQgkxMAlDb21tYW5kQ29tcGxldGUJICJCRUdJTiIKQEAgLTEzLDYg KzEzLDYgQEAgQgkxOQlDb21tYW5kQ29tcGxldGUJICJERUNMQVJFIENVUlNPUiIKIEIJNQlS ZWFkeUZvclF1ZXJ5CSBUCiBGCTE2CURlc2NyaWJlCSBQICJjdXJzb3Jfb25lIgogRgk0CVN5 bmMKLUIJMzMJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0x IDAKK0IJMzkJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0x IDAgTk5OTiAwCiBCCTUJUmVhZHlGb3JRdWVyeQkgVAogRgk0CVRlcm1pbmF0ZQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvc2ltcGxlX3Bp cGVsaW5lLnRyYWNlIGIvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMv c2ltcGxlX3BpcGVsaW5lLnRyYWNlCmluZGV4IDVjOTQ3NDliYzEuLjVmNDg0OTQyNWQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3NpbXBs ZV9waXBlbGluZS50cmFjZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5l L3RyYWNlcy9zaW1wbGVfcGlwZWxpbmUudHJhY2UKQEAgLTUsNyArNSw3IEBAIEYJOQlFeGVj dXRlCSAiIiAwCiBGCTQJU3luYwogQgk0CVBhcnNlQ29tcGxldGUKIEIJNAlCaW5kQ29tcGxl dGUKLUIJMzMJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0x IDAKK0IJMzkJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0x IDAgTk5OTiAwCiBCCTExCURhdGFSb3cJIDEgMSAnMScKIEIJMTMJQ29tbWFuZENvbXBsZXRl CSAiU0VMRUNUIDEiCiBCCTUJUmVhZHlGb3JRdWVyeQkgSQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvc2luZ2xlcm93LnRyYWNlIGIvc3Jj L3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvc2luZ2xlcm93LnRyYWNlCmlu ZGV4IDlkZTk5YmVmY2MuLjE5OWRmNGQ0ZjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3NpbmdsZXJvdy50cmFjZQorKysgYi9zcmMvdGVz dC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNlcy9zaW5nbGVyb3cudHJhY2UKQEAgLTEz LDE0ICsxMywxNCBAQCBGCTkJRXhlY3V0ZQkgIiIgMAogRgk0CVN5bmMKIEIJNAlQYXJzZUNv bXBsZXRlCiBCCTQJQmluZENvbXBsZXRlCi1CCTQwCVJvd0Rlc2NyaXB0aW9uCSAxICJnZW5l cmF0ZV9zZXJpZXMiIE5OTk4gMCBOTk5OIDQgLTEgMAorQgk0NglSb3dEZXNjcmlwdGlvbgkg MSAiZ2VuZXJhdGVfc2VyaWVzIiBOTk5OIDAgTk5OTiA0IC0xIDAgTk5OTiAwCiBCCTEyCURh dGFSb3cJIDEgMiAnNDInCiBCCTEyCURhdGFSb3cJIDEgMiAnNDMnCiBCCTEyCURhdGFSb3cJ IDEgMiAnNDQnCiBCCTEzCUNvbW1hbmRDb21wbGV0ZQkgIlNFTEVDVCAzIgogQgk0CVBhcnNl Q29tcGxldGUKIEIJNAlCaW5kQ29tcGxldGUKLUIJNDAJUm93RGVzY3JpcHRpb24JIDEgImdl bmVyYXRlX3NlcmllcyIgTk5OTiAwIE5OTk4gNCAtMSAwCitCCTQ2CVJvd0Rlc2NyaXB0aW9u CSAxICJnZW5lcmF0ZV9zZXJpZXMiIE5OTk4gMCBOTk5OIDQgLTEgMCBOTk5OIDAKIEIJMTIJ RGF0YVJvdwkgMSAyICc0MicKIEIJMTIJRGF0YVJvdwkgMSAyICc0MycKIEIJMTIJRGF0YVJv dwkgMSAyICc0NCcKQEAgLTI4LDcgKzI4LDcgQEAgQgkxMglEYXRhUm93CSAxIDIgJzQ1Jwog QgkxMwlDb21tYW5kQ29tcGxldGUJICJTRUxFQ1QgNCIKIEIJNAlQYXJzZUNvbXBsZXRlCiBC CTQJQmluZENvbXBsZXRlCi1CCTQwCVJvd0Rlc2NyaXB0aW9uCSAxICJnZW5lcmF0ZV9zZXJp ZXMiIE5OTk4gMCBOTk5OIDQgLTEgMAorQgk0NglSb3dEZXNjcmlwdGlvbgkgMSAiZ2VuZXJh dGVfc2VyaWVzIiBOTk5OIDAgTk5OTiA0IC0xIDAgTk5OTiAwCiBCCTEyCURhdGFSb3cJIDEg MiAnNDInCiBCCTEyCURhdGFSb3cJIDEgMiAnNDMnCiBCCTEyCURhdGFSb3cJIDEgMiAnNDQn CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNlcy90 cmFuc2FjdGlvbi50cmFjZSBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJh Y2VzL3RyYW5zYWN0aW9uLnRyYWNlCmluZGV4IDFkY2MyMzczYzAuLmE2ODY5YzRhNWIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3RyYW5z YWN0aW9uLnRyYWNlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJh Y2VzL3RyYW5zYWN0aW9uLnRyYWNlCkBAIC01NCw3ICs1NCw3IEBAIEIJMTUJQ29tbWFuZENv bXBsZXRlCSAiSU5TRVJUIDAgMSIKIEIJNQlSZWFkeUZvclF1ZXJ5CSBJCiBCCTUJUmVhZHlG b3JRdWVyeQkgSQogRgkzNAlRdWVyeQkgIlNFTEVDVCAqIEZST00gcHFfcGlwZWxpbmVfdHN0 IgotQgkyNwlSb3dEZXNjcmlwdGlvbgkgMSAiaWQiIE5OTk4gMSBOTk5OIDQgLTEgMAorQgkz MwlSb3dEZXNjcmlwdGlvbgkgMSAiaWQiIE5OTk4gMSBOTk5OIDQgLTEgMCBOTk5OIDAKIEIJ MTEJRGF0YVJvdwkgMSAxICczJwogQgkxMwlDb21tYW5kQ29tcGxldGUJICJTRUxFQ1QgMSIK IEIJNQlSZWFkeUZvclF1ZXJ5CSBJCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvbHVtbl9lbmNyeXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29sdW1uX2VuY3J5cHRpb24ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmY4ZGI0ZTE3ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvbHVtbl9lbmNyeXB0aW9uLm91dApAQCAtMCwwICsxLDU5IEBACitc c2V0IEhJREVfQ09MVU1OX0VOQ1JZUFRJT04gZmFsc2UKKy8qIEltYWdpbmU6CitDUkVBVEUg Q09MVU1OIE1BU1RFUiBLRVkgY21rMSAoCisgICAgcmVhbG0gPSAndGVzdCcKKyk7CisqLwor SU5TRVJUIElOVE8gcGdfY29sbWFzdGVya2V5IChvaWQsIGNta25hbWUsIGNta293bmVyLCBj bWtyZWFsbSkgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbG1h c3RlcmtleScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xtYXN0ZXJrZXlfb2lkX2luZGV4 JyksCisgICAgJ2NtazEnLAorICAgIChzZWxlY3Qgb2lkIGZyb20gcGdfcm9sZXMgd2hlcmUg cm9sbmFtZSA9IGN1cnJlbnRfdXNlciksCisgICAgJ3Rlc3QnCispOworLyogSW1hZ2luZToK K0NSRUFURSBDT0xVTU4gRU5DUllQVElPTiBLRVkgY2VrMSAoCisgICAgY29sdW1uX21hc3Rl cl9rZXkgPSBjbWsxLAorICAgIGFsZ29yaXRobSA9ICcuLi4nLAorICAgIGVuY3J5cHRlZF92 YWx1ZSA9ICcuLi4nCispOworKi8KK0lOU0VSVCBJTlRPIHBnX2NvbGVuY2tleSAob2lkLCBj ZWtuYW1lLCBjZWtvd25lcikgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9n LnBnX2NvbGVuY2tleScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlfb2lkX2lu ZGV4JyksCisgICAgJ2NlazEnLAorICAgIChzZWxlY3Qgb2lkIGZyb20gcGdfcm9sZXMgd2hl cmUgcm9sbmFtZSA9IGN1cnJlbnRfdXNlcikKKyk7CitJTlNFUlQgSU5UTyBwZ19jb2xlbmNr ZXlkYXRhIChvaWQsIGNrZGNla2lkLCBja2RjbWtpZCwgY2tkY21rYWxnLCBja2RlbmN2YWwp IFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlkYXRh JywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleWRhdGFfb2lkX2luZGV4JyksCisg ICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xlbmNrZXkgV0hFUkUgY2VrbmFtZSA9ICdjZWsx JyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xtYXN0ZXJrZXkgV0hFUkUgY21rbmFt ZSA9ICdjbWsxJyksCisgICAgMSwKKyAgICAnXHhERUFEQkVFRicKKyk7CitDUkVBVEUgVEFC TEUgdGJsX2ZhaWwgKAorICAgIGEgaW50LAorICAgIGIgdGV4dCwKKyAgICBjIHRleHQgRU5D UllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9IG5vdGV4aXN0KQorKTsKK0VS Uk9SOiAgY29sdW1uIGVuY3J5cHRpb24ga2V5ICJub3RleGlzdCIgZG9lcyBub3QgZXhpc3QK K0NSRUFURSBUQUJMRSB0YmxfMjlmMyAoCisgICAgYSBpbnQsCisgICAgYiB0ZXh0LAorICAg IGMgdGV4dCBFTkNSWVBURUQgV0lUSCAoY29sdW1uX2VuY3J5cHRpb25fa2V5ID0gY2VrMSkK Kyk7CitcZCB0YmxfMjlmMworICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRibF8yOWYz IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBiICAgICAg fCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBjICAgICAgfCB0ZXh0ICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworXGQrIHRibF8yOWYzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50YmxfMjlmMyIK KyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwg U3RvcmFnZSAgfCBFbmNyeXB0aW9uIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCist LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEg ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFp biAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCB0ZXh0ICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAg ICAgIHwgICAgICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgY2VrMSAgICAgICB8ICAgICAgICAg ICAgICB8IAorCitEUk9QIFRBQkxFIHRibF8yOWYzOyAgLS0gRklYTUU6IG5lZWRzIHBnX2R1 bXAgc3VwcG9ydCBmb3IgcGdfdXBncmFkZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL29pZGpvaW5zLm91dAppbmRleCAyMTVlYjg5OWJlLi4yYWEwZTE2MzIzIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dApAQCAtNzMsNiArNzMsOCBAQCBO T1RJQ0U6ICBjaGVja2luZyBwZ190eXBlIHt0eXBiYXNldHlwZX0gPT4gcGdfdHlwZSB7b2lk fQogTk9USUNFOiAgY2hlY2tpbmcgcGdfdHlwZSB7dHlwY29sbGF0aW9ufSA9PiBwZ19jb2xs YXRpb24ge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2F0dHJpYnV0ZSB7YXR0cmVsaWR9 ID0+IHBnX2NsYXNzIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19hdHRyaWJ1dGUge2F0 dHR5cGlkfSA9PiBwZ190eXBlIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ19hdHRyaWJ1 dGUge2F0dGNla30gPT4gcGdfY29sZW5ja2V5IHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBw Z19hdHRyaWJ1dGUge2F0dHJlYWx0eXBpZH0gPT4gcGdfdHlwZSB7b2lkfQogTk9USUNFOiAg Y2hlY2tpbmcgcGdfYXR0cmlidXRlIHthdHRjb2xsYXRpb259ID0+IHBnX2NvbGxhdGlvbiB7 b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfY2xhc3Mge3JlbG5hbWVzcGFjZX0gPT4gcGdf bmFtZXNwYWNlIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19jbGFzcyB7cmVsdHlwZX0g PT4gcGdfdHlwZSB7b2lkfQpAQCAtMjY2LDMgKzI2OCw3IEBAIE5PVElDRTogIGNoZWNraW5n IHBnX3N1YnNjcmlwdGlvbiB7c3ViZGJpZH0gPT4gcGdfZGF0YWJhc2Uge29pZH0KIE5PVElD RTogIGNoZWNraW5nIHBnX3N1YnNjcmlwdGlvbiB7c3Vib3duZXJ9ID0+IHBnX2F1dGhpZCB7 b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfc3Vic2NyaXB0aW9uX3JlbCB7c3JzdWJpZH0g PT4gcGdfc3Vic2NyaXB0aW9uIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19zdWJzY3Jp cHRpb25fcmVsIHtzcnJlbGlkfSA9PiBwZ19jbGFzcyB7b2lkfQorTk9USUNFOiAgY2hlY2tp bmcgcGdfY29sbWFzdGVya2V5IHtjbWtvd25lcn0gPT4gcGdfYXV0aGlkIHtvaWR9CitOT1RJ Q0U6ICBjaGVja2luZyBwZ19jb2xlbmNrZXkge2Nla293bmVyfSA9PiBwZ19hdXRoaWQge29p ZH0KK05PVElDRTogIGNoZWNraW5nIHBnX2NvbGVuY2tleWRhdGEge2NrZGNla2lkfSA9PiBw Z19jb2xlbmNrZXkge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX2NvbGVuY2tleWRhdGEg e2NrZGNta2lkfSA9PiBwZ19jb2xtYXN0ZXJrZXkge29pZH0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IDg2ZDc1NWFhNDQuLjRhMzY2MDc0ZGEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMTc1 LDEzICsxNzUsMTQgQEAgV0hFUkUgcDEub2lkICE9IHAyLm9pZCBBTkQKIE9SREVSIEJZIDEs IDI7CiAgICAgICAgICBwcm9hcmd0eXBlcyAgICAgICAgIHwgICAgICAgcHJvYXJndHlwZXMg ICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBieXRlYSAgICAgICAgICAgICAgICAgICAgICAgfCBwZ19lbmNyeXB0 ZWRfZGV0CiAgYmlnaW50ICAgICAgICAgICAgICAgICAgICAgIHwgeGlkOAogIHRleHQgICAg ICAgICAgICAgICAgICAgICAgICB8IGNoYXJhY3RlcgogIHRleHQgICAgICAgICAgICAgICAg ICAgICAgICB8IGNoYXJhY3RlciB2YXJ5aW5nCiAgdGltZXN0YW1wIHdpdGhvdXQgdGltZSB6 b25lIHwgdGltZXN0YW1wIHdpdGggdGltZSB6b25lCiAgYml0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgYml0IHZhcnlpbmcKICB0eGlkX3NuYXBzaG90ICAgICAgICAgICAgICAgfCBw Z19zbmFwc2hvdAotKDYgcm93cykKKyg3IHJvd3MpCiAKIFNFTEVDVCBESVNUSU5DVCBwMS5w cm9hcmd0eXBlc1sxXTo6cmVndHlwZSwgcDIucHJvYXJndHlwZXNbMV06OnJlZ3R5cGUKIEZS T00gcGdfcHJvYyBBUyBwMSwgcGdfcHJvYyBBUyBwMgpAQCAtMTk3LDEyICsxOTgsMTMgQEAg V0hFUkUgcDEub2lkICE9IHAyLm9pZCBBTkQKIE9SREVSIEJZIDEsIDI7CiAgICAgICAgICBw cm9hcmd0eXBlcyAgICAgICAgIHwgICAgICAgcHJvYXJndHlwZXMgICAgICAgIAogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBi eXRlYSAgICAgICAgICAgICAgICAgICAgICAgfCBwZ19lbmNyeXB0ZWRfZGV0CiAgaW50ZWdl ciAgICAgICAgICAgICAgICAgICAgIHwgeGlkCiAgdGltZXN0YW1wIHdpdGhvdXQgdGltZSB6 b25lIHwgdGltZXN0YW1wIHdpdGggdGltZSB6b25lCiAgYml0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgYml0IHZhcnlpbmcKICB0eGlkX3NuYXBzaG90ICAgICAgICAgICAgICAgfCBw Z19zbmFwc2hvdAogIGFueXJhbmdlICAgICAgICAgICAgICAgICAgICB8IGFueW11bHRpcmFu Z2UKLSg1IHJvd3MpCisoNiByb3dzKQogCiBTRUxFQ1QgRElTVElOQ1QgcDEucHJvYXJndHlw ZXNbMl06OnJlZ3R5cGUsIHAyLnByb2FyZ3R5cGVzWzJdOjpyZWd0eXBlCiBGUk9NIHBnX3By b2MgQVMgcDEsIHBnX3Byb2MgQVMgcDIKQEAgLTg0MSw2ICs4NDMsOCBAQCB4aWQ4Z2UoeGlk OCx4aWQ4KQogeGlkOGVxKHhpZDgseGlkOCkKIHhpZDhuZSh4aWQ4LHhpZDgpCiB4aWQ4Y21w KHhpZDgseGlkOCkKK3BnX2VuY3J5cHRlZF9kZXRfZXEocGdfZW5jcnlwdGVkX2RldCxwZ19l bmNyeXB0ZWRfZGV0KQorcGdfZW5jcnlwdGVkX2RldF9uZShwZ19lbmNyeXB0ZWRfZGV0LHBn X2VuY3J5cHRlZF9kZXQpCiAtLSByZXN0b3JlIG5vcm1hbCBvdXRwdXQgbW9kZQogXGFcdAog LS0gTGlzdCBvZiBmdW5jdGlvbnMgdXNlZCBieSBsaWJwcSdzIGZlLWxvYmouYwpAQCAtOTg4 LDcgKzk5Miw5IEBAIFdIRVJFIGMuY2FzdG1ldGhvZCA9ICdiJyBBTkQKICB4bWwgICAgICAg ICAgICAgICB8IHRleHQgICAgICAgICAgICAgIHwgICAgICAgIDAgfCBhCiAgeG1sICAgICAg ICAgICAgICAgfCBjaGFyYWN0ZXIgdmFyeWluZyB8ICAgICAgICAwIHwgYQogIHhtbCAgICAg ICAgICAgICAgIHwgY2hhcmFjdGVyICAgICAgICAgfCAgICAgICAgMCB8IGEKLSgxMCByb3dz KQorIGJ5dGVhICAgICAgICAgICAgIHwgcGdfZW5jcnlwdGVkX2RldCAgfCAgICAgICAgMCB8 IGUKKyBieXRlYSAgICAgICAgICAgICB8IHBnX2VuY3J5cHRlZF9ybmQgIHwgICAgICAgIDAg fCBlCisoMTIgcm93cykKIAogLS0gKioqKioqKioqKioqKioqKiBwZ19jb252ZXJzaW9uICoq KioqKioqKioqKioqKioKIC0tIExvb2sgZm9yIGlsbGVnYWwgdmFsdWVzIGluIHBnX2NvbnZl cnNpb24gZmllbGRzLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w cmVwYXJlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJlcGFyZS5vdXQKaW5k ZXggNTgxNWUxN2IzOS4uNDQ4MmE2NWQyNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wcmVwYXJlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3ByZXBhcmUub3V0CkBAIC0xNjIsMjYgKzE2MiwyNiBAQCBQUkVQQVJFIHE3KHVua25vd24p IEFTCiAtLSBETUwgc3RhdGVtZW50cwogUFJFUEFSRSBxOCBBUwogICAgIFVQREFURSB0ZW5r MSBTRVQgc3RyaW5ndTEgPSAkMiBXSEVSRSB1bmlxdWUxID0gJDE7Ci1TRUxFQ1QgbmFtZSwg c3RhdGVtZW50LCBwYXJhbWV0ZXJfdHlwZXMsIHJlc3VsdF90eXBlcyBGUk9NIHBnX3ByZXBh cmVkX3N0YXRlbWVudHMKK1NFTEVDVCBuYW1lLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcl90eXBl cywgcGFyYW1ldGVyX29yaWdfdGFibGVzLCBwYXJhbWV0ZXJfb3JpZ19jb2x1bW5zLCByZXN1 bHRfdHlwZXMgRlJPTSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnRzCiAgICAgT1JERVIgQlkgbmFt ZTsKLSBuYW1lIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyX3R5 cGVzICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGVzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gcTIgICB8IFBSRVBBUkUgcTIodGV4dCkgQVMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCB7dGV4dH0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHtuYW1lLGJvb2xlYW4s Ym9vbGVhbn0KLSAgICAgIHwgICAgICAgICBTRUxFQ1QgZGF0bmFtZSwgZGF0aXN0ZW1wbGF0 ZSwgZGF0YWxsb3djb25uICAgICAgICAgICAgICt8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCi0gICAgICB8ICAgICAgICAgRlJPTSBw Z19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJDE7ICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAot IHEzICAgfCBQUkVQQVJFIHEzKHRleHQsIGludCwgZmxvYXQsIGJvb2xlYW4sIHNtYWxsaW50 KSBBUyAgICAgICAgICAgICAgK3wge3RleHQsaW50ZWdlciwiZG91YmxlIHByZWNpc2lvbiIs Ym9vbGVhbixzbWFsbGludH0gfCB7aW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixp bnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2Vy LGludGVnZXIsaW50ZWdlcixuYW1lLG5hbWUsbmFtZX0KLSAgICAgIHwgICAgICAgICBTRUxF Q1QgKiBGUk9NIHRlbmsxIFdIRVJFIHN0cmluZzQgPSAkMSBBTkQgKGZvdXIgPSAkMiBPUit8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg Ci0gICAgICB8ICAgICAgICAgdGVuID0gJDM6OmJpZ2ludCBPUiB0cnVlID0gJDQgT1Igb2Rk ID0gJDU6OmludCkgICAgICAgICArfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IAotICAgICAgfCAgICAgICAgIE9SREVSIEJZIHVuaXF1 ZTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKLSBxNSAgIHwg UFJFUEFSRSBxNShpbnQsIHRleHQpIEFTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICt8IHtpbnRlZ2VyLHRleHR9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwge2ludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixp bnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2Vy LGludGVnZXIsbmFtZSxuYW1lLG5hbWV9Ci0gICAgICB8ICAgICAgICAgU0VMRUNUICogRlJP TSB0ZW5rMSBXSEVSRSB1bmlxdWUxID0gJDEgT1Igc3RyaW5ndTEgPSAkMiArfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAotICAgICAg fCAgICAgICAgIE9SREVSIEJZIHVuaXF1ZTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAKLSBxNiAgIHwgUFJFUEFSRSBxNiBBUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IHtpbnRlZ2VyLG5hbWV9ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwge2ludGVnZXIsaW50ZWdlcixp bnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2Vy LGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsbmFtZSxuYW1lLG5hbWV9Ci0gICAg ICB8ICAgICBTRUxFQ1QgKiBGUk9NIHRlbmsxIFdIRVJFIHVuaXF1ZTEgPSAkMSBBTkQgc3Ry aW5ndTEgPSAkMjsgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IAotIHE3ICAgfCBQUkVQQVJFIHE3KHVua25vd24pIEFTICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wge3BhdGh9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7dGV4dCxwYXRofQotICAg ICAgfCAgICAgU0VMRUNUICogRlJPTSByb2FkIFdIRVJFIHRoZXBhdGggPSAkMTsgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAKLSBxOCAgIHwgUFJFUEFSRSBxOCBBUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IHtpbnRlZ2VyLG5hbWV9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCi0gICAgICB8ICAgICBV UERBVEUgdGVuazEgU0VUIHN0cmluZ3UxID0gJDIgV0hFUkUgdW5pcXVlMSA9ICQxOyAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IAorIG5hbWUgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICBwYXJhbWV0 ZXJfdHlwZXMgICAgICAgICAgICAgICAgICAgfCBwYXJhbWV0ZXJfb3JpZ190YWJsZXMgfCBw YXJhbWV0ZXJfb3JpZ19jb2x1bW5zIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGVzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHEyICAgfCBQUkVQQVJFIHEyKHRleHQpIEFTICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wge3RleHR9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7LX0gICAgICAgICAgICAgICAg ICAgfCB7MH0gICAgICAgICAgICAgICAgICAgIHwge25hbWUsYm9vbGVhbixib29sZWFufQor ICAgICAgfCAgICAgICAgIFNFTEVDVCBkYXRuYW1lLCBkYXRpc3RlbXBsYXRlLCBkYXRhbGxv d2Nvbm4gICAgICAgICAgICAgK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHwgCisgICAgICB8ICAgICAgICAgRlJPTSBwZ19kYXRhYmFzZSBXSEVS RSBkYXRuYW1lID0gJDE7ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBxMyAgIHwgUFJFUEFSRSBxMyh0 ZXh0LCBpbnQsIGZsb2F0LCBib29sZWFuLCBzbWFsbGludCkgQVMgICAgICAgICAgICAgICt8 IHt0ZXh0LGludGVnZXIsImRvdWJsZSBwcmVjaXNpb24iLGJvb2xlYW4sc21hbGxpbnR9IHwg ey0sLSwtLC0sLX0gICAgICAgICAgIHwgezAsMCwwLDAsMH0gICAgICAgICAgICB8IHtpbnRl Z2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGlu dGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLG5hbWUsbmFt ZSxuYW1lfQorICAgICAgfCAgICAgICAgIFNFTEVDVCAqIEZST00gdGVuazEgV0hFUkUgc3Ry aW5nNCA9ICQxIEFORCAoZm91ciA9ICQyIE9SK3wgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHwgCisgICAgICB8ICAgICAgICAgdGVuID0gJDM6OmJp Z2ludCBPUiB0cnVlID0gJDQgT1Igb2RkID0gJDU6OmludCkgICAgICAgICArfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyAgICAgIHwgICAg ICAgICBPUkRFUiBCWSB1bmlxdWUxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB8IAorIHE1ICAgfCBQUkVQQVJFIHE1KGludCwgdGV4dCkgQVMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgK3wge2ludGVnZXIsdGV4dH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB7LSwtfSAgICAgICAgICAgICAgICAgfCB7MCww fSAgICAgICAgICAgICAgICAgIHwge2ludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIs aW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdl cixpbnRlZ2VyLGludGVnZXIsbmFtZSxuYW1lLG5hbWV9CisgICAgICB8ICAgICAgICAgU0VM RUNUICogRlJPTSB0ZW5rMSBXSEVSRSB1bmlxdWUxID0gJDEgT1Igc3RyaW5ndTEgPSAkMiAr fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyAg ICAgIHwgICAgICAgICBPUkRFUiBCWSB1bmlxdWUxOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB8IAorIHE2ICAgfCBQUkVQQVJFIHE2IEFTICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wge2ludGVnZXIsbmFtZX0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7LSwtfSAgICAgICAgICAgICAg ICAgfCB7MCwwfSAgICAgICAgICAgICAgICAgIHwge2ludGVnZXIsaW50ZWdlcixpbnRlZ2Vy LGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsaW50ZWdlcixpbnRlZ2VyLGludGVn ZXIsaW50ZWdlcixpbnRlZ2VyLGludGVnZXIsbmFtZSxuYW1lLG5hbWV9CisgICAgICB8ICAg ICBTRUxFQ1QgKiBGUk9NIHRlbmsxIFdIRVJFIHVuaXF1ZTEgPSAkMSBBTkQgc3RyaW5ndTEg PSAkMjsgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgfCAKKyBxNyAgIHwgUFJFUEFSRSBxNyh1bmtub3duKSBBUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICt8IHtwYXRofSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgey19ICAgICAgICAgICAgICAgICAgIHwgezB9 ICAgICAgICAgICAgICAgICAgICB8IHt0ZXh0LHBhdGh9CisgICAgICB8ICAgICBTRUxFQ1Qg KiBGUk9NIHJvYWQgV0hFUkUgdGhlcGF0aCA9ICQxOyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBx OCAgIHwgUFJFUEFSRSBxOCBBUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICt8IHtpbnRlZ2VyLG5hbWV9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgey0sdGVuazF9ICAgICAgICAgICAgIHwgezAsMTR9ICAgICAg ICAgICAgICAgICB8IAorICAgICAgfCAgICAgVVBEQVRFIHRlbmsxIFNFVCBzdHJpbmd1MSA9 ICQyIFdIRVJFIHVuaXF1ZTEgPSAkMTsgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgCiAoNiByb3dzKQogCiAtLSB0ZXN0IERF QUxMT0NBVEUgQUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggNjBh Y2JkMTI0MS4uMzM5NTZmNjk5MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CkBAIC0yMzcsNiArMjM3LDMxIEBAIFNFTEVDVCAzIEFTIHgsICdIZWxsbycsIDQgQVMgeSwg dHJ1ZSBBUyAiZGlydHlcbmFtZSIgXGdkZXNjIFxnCiAgMyB8IEhlbGxvICAgIHwgNCB8IHQK ICgxIHJvdykKIAorLS0gXGdlbmNyCistLSAoVGhpcyBqdXN0IHRlc3RzIHRoZSBwYXJhbWV0 ZXIgcGFzc2luZzsgdGhlcmUgaXMgbm8gZW5jcnlwdGlvbiBoZXJlLikKK0NSRUFURSBUQUJM RSB0ZXN0X2dlbmNyIChhIGludCwgYiB0ZXh0KTsKK0lOU0VSVCBJTlRPIHRlc3RfZ2VuY3Ig VkFMVUVTICgxLCAnb25lJykgXGdlbmNyCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ2VuY3IgV0hF UkUgYSA9IDEgXGdlbmNyCisgYSB8ICBiICAKKy0tLSstLS0tLQorIDEgfCBvbmUKKygxIHJv dykKKworSU5TRVJUIElOVE8gdGVzdF9nZW5jciBWQUxVRVMgKCQxLCAkMikgXGdlbmNyIDIg J3R3bycKK1NFTEVDVCAqIEZST00gdGVzdF9nZW5jciBXSEVSRSBhIElOICgkMSwgJDIpIFxn ZW5jciAyIDMKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMiB8IHR3bworKDEgcm93KQorCist LSB0ZXN0IHBhcnNlIGVycm9yCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ2VuY3IgV0hFUkUgYSA9 IHggXGdlbmNyCitFUlJPUjogIGNvbHVtbiAieCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTog U0VMRUNUICogRlJPTSB0ZXN0X2dlbmNyIFdIRVJFIGEgPSB4IAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHRlc3QgYmluZCBlcnJvcgorU0VM RUNUICogRlJPTSB0ZXN0X2dlbmNyIFdIRVJFIGEgPSAkMSBcZ2VuY3IKK0VSUk9SOiAgYmlu ZCBtZXNzYWdlIHN1cHBsaWVzIDAgcGFyYW1ldGVycywgYnV0IHByZXBhcmVkIHN0YXRlbWVu dCAiIiByZXF1aXJlcyAxCiAtLSBcZ2V4ZWMKIGNyZWF0ZSB0ZW1wb3JhcnkgdGFibGUgZ2V4 ZWNfdGVzdChhIGludCwgYiB0ZXh0LCBjIGRhdGUsIGQgZmxvYXQpOwogc2VsZWN0IGZvcm1h dCgnY3JlYXRlIGluZGV4IG9uIGdleGVjX3Rlc3QoJUkpJywgYXR0bmFtZSkKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggN2VjM2QyNjg4Zi4uNDJlMzhkNjZkMSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE0MjMsMTEgKzE0MjMs MTMgQEAgcGdfcHJlcGFyZWRfc3RhdGVtZW50c3wgU0VMRUNUIHAubmFtZSwKICAgICBwLnN0 YXRlbWVudCwKICAgICBwLnByZXBhcmVfdGltZSwKICAgICBwLnBhcmFtZXRlcl90eXBlcywK KyAgICBwLnBhcmFtZXRlcl9vcmlnX3RhYmxlcywKKyAgICBwLnBhcmFtZXRlcl9vcmlnX2Nv bHVtbnMsCiAgICAgcC5yZXN1bHRfdHlwZXMsCiAgICAgcC5mcm9tX3NxbCwKICAgICBwLmdl bmVyaWNfcGxhbnMsCiAgICAgcC5jdXN0b21fcGxhbnMKLSAgIEZST00gcGdfcHJlcGFyZWRf c3RhdGVtZW50KCkgcChuYW1lLCBzdGF0ZW1lbnQsIHByZXBhcmVfdGltZSwgcGFyYW1ldGVy X3R5cGVzLCByZXN1bHRfdHlwZXMsIGZyb21fc3FsLCBnZW5lcmljX3BsYW5zLCBjdXN0b21f cGxhbnMpOworICAgRlJPTSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnQoKSBwKG5hbWUsIHN0YXRl bWVudCwgcHJlcGFyZV90aW1lLCBwYXJhbWV0ZXJfdHlwZXMsIHBhcmFtZXRlcl9vcmlnX3Rh YmxlcywgcGFyYW1ldGVyX29yaWdfY29sdW1ucywgcmVzdWx0X3R5cGVzLCBmcm9tX3NxbCwg Z2VuZXJpY19wbGFucywgY3VzdG9tX3BsYW5zKTsKIHBnX3ByZXBhcmVkX3hhY3RzfCBTRUxF Q1QgcC50cmFuc2FjdGlvbiwKICAgICBwLmdpZCwKICAgICBwLnByZXBhcmVkLApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90eXBlX3Nhbml0eS5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R5cGVfc2FuaXR5Lm91dAppbmRleCBkM2FjMDhjOWVl Li5mYzBjNTg5NmU0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R5 cGVfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R5cGVfc2Fu aXR5Lm91dApAQCAtMTcsNyArMTcsNyBAQCBTRUxFQ1QgdDEub2lkLCB0MS50eXBuYW1lCiBG Uk9NIHBnX3R5cGUgYXMgdDEKIFdIRVJFIHQxLnR5cG5hbWVzcGFjZSA9IDAgT1IKICAgICAo dDEudHlwbGVuIDw9IDAgQU5EIHQxLnR5cGxlbiAhPSAtMSBBTkQgdDEudHlwbGVuICE9IC0y KSBPUgotICAgICh0MS50eXB0eXBlIG5vdCBpbiAoJ2InLCAnYycsICdkJywgJ2UnLCAnbScs ICdwJywgJ3InKSkgT1IKKyAgICAodDEudHlwdHlwZSBub3QgaW4gKCdiJywgJ2MnLCAnZCcs ICdlJywgJ20nLCAncCcsICdyJywgJ3knKSkgT1IKICAgICBOT1QgdDEudHlwaXNkZWZpbmVk IE9SCiAgICAgKHQxLnR5cGFsaWduIG5vdCBpbiAoJ2MnLCAncycsICdpJywgJ2QnKSkgT1IK ICAgICAodDEudHlwc3RvcmFnZSBub3QgaW4gKCdwJywgJ3gnLCAnZScsICdtJykpOwpAQCAt NzUsNyArNzUsOSBAQCBPUkRFUiBCWSB0MS5vaWQ7CiAgNDYwMCB8IHBnX2JyaW5fYmxvb21f c3VtbWFyeQogIDQ2MDEgfCBwZ19icmluX21pbm1heF9tdWx0aV9zdW1tYXJ5CiAgNTAxNyB8 IHBnX21jdl9saXN0Ci0oNiByb3dzKQorIDgyNDMgfCBwZ19lbmNyeXB0ZWRfZGV0CisgODI0 NCB8IHBnX2VuY3J5cHRlZF9ybmQKKyg4IHJvd3MpCiAKIC0tIE1ha2Ugc3VyZSB0eXBhcnJh eSBwb2ludHMgdG8gYSAidHJ1ZSIgYXJyYXkgdHlwZSBvZiBvdXIgb3duIGJhc2UKIFNFTEVD VCB0MS5vaWQsIHQxLnR5cG5hbWUgYXMgYmFzZXR5cGUsIHQyLnR5cG5hbWUgYXMgYXJyYXl0 eXBlLApAQCAtMjEwLDcgKzIxMiw4IEBAIE9SREVSIEJZIDE7CiAgZSAgICAgICB8IGVudW1f aW4KICBtICAgICAgIHwgbXVsdGlyYW5nZV9pbgogIHIgICAgICAgfCByYW5nZV9pbgotKDUg cm93cykKKyB5ICAgICAgIHwgYnl0ZWFpbgorKDYgcm93cykKIAogLS0gQ2hlY2sgZm9yIGJv Z3VzIHR5cG91dHB1dCByb3V0aW5lcwogLS0gQXMgb2YgOC4wLCB0aGlzIGNoZWNrIGZpbmRz IHJlZmN1cnNvciwgd2hpY2ggaXMgYm9ycm93aW5nCkBAIC0yNTUsNyArMjU4LDggQEAgT1JE RVIgQlkgMTsKICBlICAgICAgIHwgZW51bV9vdXQKICBtICAgICAgIHwgbXVsdGlyYW5nZV9v dXQKICByICAgICAgIHwgcmFuZ2Vfb3V0Ci0oNCByb3dzKQorIHkgICAgICAgfCBieXRlYW91 dAorKDUgcm93cykKIAogLS0gRG9tYWlucyBzaG91bGQgaGF2ZSBzYW1lIHR5cG91dHB1dCBh cyB0aGVpciBiYXNlIHR5cGVzCiBTRUxFQ1QgdDEub2lkLCB0MS50eXBuYW1lLCB0Mi5vaWQs IHQyLnR5cG5hbWUKQEAgLTMzNSw3ICszMzksOCBAQCBPUkRFUiBCWSAxOwogIGUgICAgICAg fCBlbnVtX3JlY3YKICBtICAgICAgIHwgbXVsdGlyYW5nZV9yZWN2CiAgciAgICAgICB8IHJh bmdlX3JlY3YKLSg1IHJvd3MpCisgeSAgICAgICB8IGJ5dGVhcmVjdgorKDYgcm93cykKIAog LS0gQ2hlY2sgZm9yIGJvZ3VzIHR5cHNlbmQgcm91dGluZXMKIC0tIEFzIG9mIDcuNCwgdGhp cyBjaGVjayBmaW5kcyByZWZjdXJzb3IsIHdoaWNoIGlzIGJvcnJvd2luZwpAQCAtMzgwLDcg KzM4NSw4IEBAIE9SREVSIEJZIDE7CiAgZSAgICAgICB8IGVudW1fc2VuZAogIG0gICAgICAg fCBtdWx0aXJhbmdlX3NlbmQKICByICAgICAgIHwgcmFuZ2Vfc2VuZAotKDQgcm93cykKKyB5 ICAgICAgIHwgYnl0ZWFzZW5kCisoNSByb3dzKQogCiAtLSBEb21haW5zIHNob3VsZCBoYXZl IHNhbWUgdHlwc2VuZCBhcyB0aGVpciBiYXNlIHR5cGVzCiBTRUxFQ1QgdDEub2lkLCB0MS50 eXBuYW1lLCB0Mi5vaWQsIHQyLnR5cG5hbWUKQEAgLTcwNyw2ICs3MTMsOCBAQCBDUkVBVEUg VEFCTEUgdGFiX2NvcmVfdHlwZXMgQVMgU0VMRUNUCiAgICd0eHQnOjp0ZXh0LAogICB0cnVl Ojpib29sLAogICBFJ1xceERFQURCRUVGJzo6Ynl0ZWEsCisgIEUnXFx4REVBREJFRUYnOjpw Z19lbmNyeXB0ZWRfcm5kLAorICBFJ1xceERFQURCRUVGJzo6cGdfZW5jcnlwdGVkX2RldCwK ICAgQicxMDAwMSc6OmJpdCwKICAgQicxMDAwMSc6OnZhcmJpdCBBUyB2YXJiaXQsCiAgICcx Mi4zNCc6Om1vbmV5LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMTAz ZTExNDgzZC4uZmZjYTIwNmM2ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CkBAIC0xMjksNiArMTI5LDkgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29w eTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgLS0t LS0tLS0tLQogdGVzdDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlv bnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2lu Zm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cwogCisjIFdJ UAordGVzdDogY29sdW1uX2VuY3J5cHRpb24KKwogIyBldmVudF90cmlnZ2VyIGNhbm5vdCBy dW4gY29uY3VycmVudGx5IHdpdGggYW55IHRlc3QgdGhhdCBydW5zIERETAogIyBvaWRqb2lu cyBpcyByZWFkLW9ubHksIHRob3VnaCwgYW5kIHNob3VsZCBydW4gbGF0ZSBmb3IgYmVzdCBj b3ZlcmFnZQogdGVzdDogZXZlbnRfdHJpZ2dlciBvaWRqb2lucwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNzX21haW4uYyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGdf cmVncmVzc19tYWluLmMKaW5kZXggYTRiMzU0YzllNi4uOGFkMWY0NThkNSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNzX21haW4uYworKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3BnX3JlZ3Jlc3NfbWFpbi5jCkBAIC04Miw3ICs4Miw3IEBAIHBzcWxfc3RhcnRf dGVzdChjb25zdCBjaGFyICp0ZXN0bmFtZSwKIAkJCQkJICAgYmluZGlyID8gYmluZGlyIDog IiIsCiAJCQkJCSAgIGJpbmRpciA/ICIvIiA6ICIiLAogCQkJCQkgICBkYmxpc3QtPnN0ciwK LQkJCQkJICAgIi12IEhJREVfVEFCTEVBTT1vbiAtdiBISURFX1RPQVNUX0NPTVBSRVNTSU9O PW9uIiwKKwkJCQkJICAgIi12IEhJREVfVEFCTEVBTT1vbiAtdiBISURFX1RPQVNUX0NPTVBS RVNTSU9OPW9uIC12IEhJREVfQ09MVU1OX0VOQ1JZUFRJT049b24iLAogCQkJCQkgICBpbmZp bGUsCiAJCQkJCSAgIG91dGZpbGUpOwogCWlmIChvZmZzZXQgPj0gc2l6ZW9mKHBzcWxfY21k KSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbHVtbl9lbmNyeXB0aW9u LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbHVtbl9lbmNyeXB0aW9uLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zN2YwYjIzZDEwCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sdW1uX2VuY3J5cHRpb24uc3Fs CkBAIC0wLDAgKzEsNTAgQEAKK1xzZXQgSElERV9DT0xVTU5fRU5DUllQVElPTiBmYWxzZQor CisvKiBJbWFnaW5lOgorQ1JFQVRFIENPTFVNTiBNQVNURVIgS0VZIGNtazEgKAorICAgIHJl YWxtID0gJ3Rlc3QnCispOworKi8KK0lOU0VSVCBJTlRPIHBnX2NvbG1hc3RlcmtleSAob2lk LCBjbWtuYW1lLCBjbWtvd25lciwgY21rcmVhbG0pIFZBTFVFUyAoCisgICAgcGdfbmV4dG9p ZCgncGdfY2F0YWxvZy5wZ19jb2xtYXN0ZXJrZXknLCAnb2lkJywgJ3BnX2NhdGFsb2cucGdf Y29sbWFzdGVya2V5X29pZF9pbmRleCcpLAorICAgICdjbWsxJywKKyAgICAoc2VsZWN0IG9p ZCBmcm9tIHBnX3JvbGVzIHdoZXJlIHJvbG5hbWUgPSBjdXJyZW50X3VzZXIpLAorICAgICd0 ZXN0JworKTsKKworLyogSW1hZ2luZToKK0NSRUFURSBDT0xVTU4gRU5DUllQVElPTiBLRVkg Y2VrMSAoCisgICAgY29sdW1uX21hc3Rlcl9rZXkgPSBjbWsxLAorICAgIGFsZ29yaXRobSA9 ICcuLi4nLAorICAgIGVuY3J5cHRlZF92YWx1ZSA9ICcuLi4nCispOworKi8KK0lOU0VSVCBJ TlRPIHBnX2NvbGVuY2tleSAob2lkLCBjZWtuYW1lLCBjZWtvd25lcikgVkFMVUVTICgKKyAg ICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleScsICdvaWQnLCAncGdfY2F0 YWxvZy5wZ19jb2xlbmNrZXlfb2lkX2luZGV4JyksCisgICAgJ2NlazEnLAorICAgIChzZWxl Y3Qgb2lkIGZyb20gcGdfcm9sZXMgd2hlcmUgcm9sbmFtZSA9IGN1cnJlbnRfdXNlcikKKyk7 CitJTlNFUlQgSU5UTyBwZ19jb2xlbmNrZXlkYXRhIChvaWQsIGNrZGNla2lkLCBja2RjbWtp ZCwgY2tkY21rYWxnLCBja2RlbmN2YWwpIFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdf Y2F0YWxvZy5wZ19jb2xlbmNrZXlkYXRhJywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbGVu Y2tleWRhdGFfb2lkX2luZGV4JyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xlbmNr ZXkgV0hFUkUgY2VrbmFtZSA9ICdjZWsxJyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19j b2xtYXN0ZXJrZXkgV0hFUkUgY21rbmFtZSA9ICdjbWsxJyksCisgICAgMSwKKyAgICAnXHhE RUFEQkVFRicKKyk7CisKK0NSRUFURSBUQUJMRSB0YmxfZmFpbCAoCisgICAgYSBpbnQsCisg ICAgYiB0ZXh0LAorICAgIGMgdGV4dCBFTkNSWVBURUQgV0lUSCAoY29sdW1uX2VuY3J5cHRp b25fa2V5ID0gbm90ZXhpc3QpCispOworCitDUkVBVEUgVEFCTEUgdGJsXzI5ZjMgKAorICAg IGEgaW50LAorICAgIGIgdGV4dCwKKyAgICBjIHRleHQgRU5DUllQVEVEIFdJVEggKGNvbHVt bl9lbmNyeXB0aW9uX2tleSA9IGNlazEpCispOworCitcZCB0YmxfMjlmMworXGQrIHRibF8y OWYzCisKK0RST1AgVEFCTEUgdGJsXzI5ZjM7ICAtLSBGSVhNRTogbmVlZHMgcGdfZHVtcCBz dXBwb3J0IGZvciBwZ191cGdyYWRlIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wcmVwYXJlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBhcmUuc3Fs CmluZGV4IGM2MDk4ZGM5NWMuLjdkYjc4ODczNWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3ByZXBhcmUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBh cmUuc3FsCkBAIC03NSw3ICs3NSw3IEBAIENSRUFURSBURU1QT1JBUlkgVEFCTEUgcTVfcHJl cF9ub2RhdGEgQVMgRVhFQ1VURSBxNSgyMDAsICdEVEFBQUEnKQogUFJFUEFSRSBxOCBBUwog ICAgIFVQREFURSB0ZW5rMSBTRVQgc3RyaW5ndTEgPSAkMiBXSEVSRSB1bmlxdWUxID0gJDE7 CiAKLVNFTEVDVCBuYW1lLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcl90eXBlcywgcmVzdWx0X3R5 cGVzIEZST00gcGdfcHJlcGFyZWRfc3RhdGVtZW50cworU0VMRUNUIG5hbWUsIHN0YXRlbWVu dCwgcGFyYW1ldGVyX3R5cGVzLCBwYXJhbWV0ZXJfb3JpZ190YWJsZXMsIHBhcmFtZXRlcl9v cmlnX2NvbHVtbnMsIHJlc3VsdF90eXBlcyBGUk9NIHBnX3ByZXBhcmVkX3N0YXRlbWVudHMK ICAgICBPUkRFUiBCWSBuYW1lOwogCiAtLSB0ZXN0IERFQUxMT0NBVEUgQUxMOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wc3FsLnNxbAppbmRleCAxMTQ5YzZhODM5Li5lODhjNzBkMzAyIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wc3FsLnNxbApAQCAtMTE5LDYgKzExOSwyMyBAQCBDUkVBVEUgVEFCTEUgYnVidWJ1 KGEgaW50KSBcZ2Rlc2MKIC0tIGFsbCBvbiBvbmUgbGluZQogU0VMRUNUIDMgQVMgeCwgJ0hl bGxvJywgNCBBUyB5LCB0cnVlIEFTICJkaXJ0eVxuYW1lIiBcZ2Rlc2MgXGcKIAorCistLSBc Z2VuY3IKKy0tIChUaGlzIGp1c3QgdGVzdHMgdGhlIHBhcmFtZXRlciBwYXNzaW5nOyB0aGVy ZSBpcyBubyBlbmNyeXB0aW9uIGhlcmUuKQorCitDUkVBVEUgVEFCTEUgdGVzdF9nZW5jciAo YSBpbnQsIGIgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X2dlbmNyIFZBTFVFUyAoMSwgJ29u ZScpIFxnZW5jcgorU0VMRUNUICogRlJPTSB0ZXN0X2dlbmNyIFdIRVJFIGEgPSAxIFxnZW5j cgorCitJTlNFUlQgSU5UTyB0ZXN0X2dlbmNyIFZBTFVFUyAoJDEsICQyKSBcZ2VuY3IgMiAn dHdvJworU0VMRUNUICogRlJPTSB0ZXN0X2dlbmNyIFdIRVJFIGEgSU4gKCQxLCAkMikgXGdl bmNyIDIgMworCistLSB0ZXN0IHBhcnNlIGVycm9yCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ2Vu Y3IgV0hFUkUgYSA9IHggXGdlbmNyCistLSB0ZXN0IGJpbmQgZXJyb3IKK1NFTEVDVCAqIEZS T00gdGVzdF9nZW5jciBXSEVSRSBhID0gJDEgXGdlbmNyCisKKwogLS0gXGdleGVjCiAKIGNy ZWF0ZSB0ZW1wb3JhcnkgdGFibGUgZ2V4ZWNfdGVzdChhIGludCwgYiB0ZXh0LCBjIGRhdGUs IGQgZmxvYXQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHlwZV9zYW5p dHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHlwZV9zYW5pdHkuc3FsCmluZGV4IDVl ZGMxZjFmNmUuLjM0ZGQxOTQ1NmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3R5cGVfc2FuaXR5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90eXBlX3Nhbml0 eS5zcWwKQEAgLTIwLDcgKzIwLDcgQEAKIEZST00gcGdfdHlwZSBhcyB0MQogV0hFUkUgdDEu dHlwbmFtZXNwYWNlID0gMCBPUgogICAgICh0MS50eXBsZW4gPD0gMCBBTkQgdDEudHlwbGVu ICE9IC0xIEFORCB0MS50eXBsZW4gIT0gLTIpIE9SCi0gICAgKHQxLnR5cHR5cGUgbm90IGlu ICgnYicsICdjJywgJ2QnLCAnZScsICdtJywgJ3AnLCAncicpKSBPUgorICAgICh0MS50eXB0 eXBlIG5vdCBpbiAoJ2InLCAnYycsICdkJywgJ2UnLCAnbScsICdwJywgJ3InLCAneScpKSBP UgogICAgIE5PVCB0MS50eXBpc2RlZmluZWQgT1IKICAgICAodDEudHlwYWxpZ24gbm90IGlu ICgnYycsICdzJywgJ2knLCAnZCcpKSBPUgogICAgICh0MS50eXBzdG9yYWdlIG5vdCBpbiAo J3AnLCAneCcsICdlJywgJ20nKSk7CkBAIC01MjksNiArNTI5LDggQEAgQ1JFQVRFIFRBQkxF IHRhYl9jb3JlX3R5cGVzIEFTIFNFTEVDVAogICAndHh0Jzo6dGV4dCwKICAgdHJ1ZTo6Ym9v bCwKICAgRSdcXHhERUFEQkVFRic6OmJ5dGVhLAorICBFJ1xceERFQURCRUVGJzo6cGdfZW5j cnlwdGVkX3JuZCwKKyAgRSdcXHhERUFEQkVFRic6OnBnX2VuY3J5cHRlZF9kZXQsCiAgIEIn MTAwMDEnOjpiaXQsCiAgIEInMTAwMDEnOjp2YXJiaXQgQVMgdmFyYml0LAogICAnMTIuMzQn Ojptb25leSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wcmludHR1cC5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVwLmgKaW5kZXggOTcxYTc0Y2YyMi4uZGIxZjNi ODgxMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVwLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVwLmgKQEAgLTIwLDYgKzIwLDggQEAgZXh0ZXJu IERlc3RSZWNlaXZlciAqcHJpbnR0dXBfY3JlYXRlX0RSKENvbW1hbmREZXN0IGRlc3QpOwog CiBleHRlcm4gdm9pZCBTZXRSZW1vdGVEZXN0UmVjZWl2ZXJQYXJhbXMoRGVzdFJlY2VpdmVy ICpzZWxmLCBQb3J0YWwgcG9ydGFsKTsKIAorZXh0ZXJuIHZvaWQgTWF5YmVTZW5kQ29sdW1u RW5jcnlwdGlvbktleU1lc3NhZ2UoT2lkIGF0dGNlayk7CisKIGV4dGVybiB2b2lkIFNlbmRS b3dEZXNjcmlwdGlvbk1lc3NhZ2UoU3RyaW5nSW5mbyBidWYsCiAJCQkJCQkJCQkgIFR1cGxl RGVzYyB0eXBlaW5mbywgTGlzdCAqdGFyZ2V0bGlzdCwgaW50MTYgKmZvcm1hdHMpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuZGF0IGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbW9wLmRhdAppbmRleCA2MWNkNTkxNDMwLi5hMGJkNzA4MTMyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuZGF0CisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQKQEAgLTEwMjgsNiArMTAyOCwxMSBAQAogICBh bW9wcmlnaHR0eXBlID0+ICdieXRlYScsIGFtb3BzdHJhdGVneSA9PiAnMScsIGFtb3BvcHIg PT4gJz0oYnl0ZWEsYnl0ZWEpJywKICAgYW1vcG1ldGhvZCA9PiAnaGFzaCcgfSwKIAorIyBw Z19lbmNyeXB0ZWRfZGV0X29wcworeyBhbW9wZmFtaWx5ID0+ICdoYXNoL3BnX2VuY3J5cHRl ZF9kZXRfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdwZ19lbmNyeXB0ZWRfZGV0JywKKyAgYW1v cHJpZ2h0dHlwZSA9PiAncGdfZW5jcnlwdGVkX2RldCcsIGFtb3BzdHJhdGVneSA9PiAnMScs IGFtb3BvcHIgPT4gJz0ocGdfZW5jcnlwdGVkX2RldCxwZ19lbmNyeXB0ZWRfZGV0KScsCisg IGFtb3BtZXRob2QgPT4gJ2hhc2gnIH0sCisKICMgeGlkX29wcwogeyBhbW9wZmFtaWx5ID0+ ICdoYXNoL3hpZF9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ3hpZCcsIGFtb3ByaWdodHR5cGUg PT4gJ3hpZCcsCiAgIGFtb3BzdHJhdGVneSA9PiAnMScsIGFtb3BvcHIgPT4gJz0oeGlkLHhp ZCknLCBhbW9wbWV0aG9kID0+ICdoYXNoJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2Mu ZGF0CmluZGV4IDRjYzEyOWJlYmQuLmRkZGIyNzExM2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2FtcHJvYy5kYXQKQEAgLTQwMiw2ICs0MDIsMTEgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdo YXNoL2J5dGVhX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2NudW0gPT4gJzInLAogICBhbXByb2MgPT4gJ2hh c2h2YXJsZW5hZXh0ZW5kZWQnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnaGFzaC9wZ19lbmNy eXB0ZWRfZGV0X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19lbmNyeXB0ZWRfZGV0JywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICdwZ19lbmNyeXB0ZWRfZGV0JywgYW1wcm9jbnVtID0+ ICcxJywgYW1wcm9jID0+ICdoYXNodmFybGVuYScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdo YXNoL3BnX2VuY3J5cHRlZF9kZXRfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2VuY3J5 cHRlZF9kZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3BnX2VuY3J5cHRlZF9kZXQnLCBh bXByb2NudW0gPT4gJzInLAorICBhbXByb2MgPT4gJ2hhc2h2YXJsZW5hZXh0ZW5kZWQnIH0s CiB7IGFtcHJvY2ZhbWlseSA9PiAnaGFzaC94aWRfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3hpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAneGlkJywgYW1wcm9jbnVtID0+ICcxJywg YW1wcm9jID0+ICdoYXNoaW50NCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdoYXNoL3hpZF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAneGlkJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfYXR0cmlidXRlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F0dHJp YnV0ZS5oCmluZGV4IDA1MzI5NGM5OWYuLjU1MGE1MzY0OWIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19hdHRyaWJ1dGUuaApAQCAtMTY0LDYgKzE2NCwxNSBAQCBDQVRBTE9HKHBnX2F0dHJp YnV0ZSwxMjQ5LEF0dHJpYnV0ZVJlbGF0aW9uSWQpIEJLSV9CT09UU1RSQVAgQktJX1JPV1RZ UEVfT0lEKDc1LAogCSAqLwogCWJvb2wJCWF0dGlzbG9jYWwgQktJX0RFRkFVTFQodCk7CiAK KwkvKiBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgKi8KKwlPaWQJCQlhdHRjZWsgQktJX0RFRkFV TFQoMCkgQktJX0xPT0tVUF9PUFQocGdfY29sZW5ja2V5KTsKKworCS8qIHJlYWwgdHlwZSBp ZiBlbmNyeXB0ZWQgKi8KKwlPaWQJCQlhdHRyZWFsdHlwaWQgQktJX0RFRkFVTFQoMCkgQktJ X0xPT0tVUF9PUFQocGdfdHlwZSk7CisKKwkvKiBlbmNyeXB0aW9uIGFsZ29yaXRobSAoUEdf Q0VLXyogdmFsdWVzKSAqLworCWludDE2CQlhdHRlbmNhbGcgQktJX0RFRkFVTFQoMCk7CisK IAkvKiBOdW1iZXIgb2YgdGltZXMgaW5oZXJpdGVkIGZyb20gZGlyZWN0IHBhcmVudCByZWxh dGlvbihzKSAqLwogCWludDMyCQlhdHRpbmhjb3VudCBCS0lfREVGQVVMVCgwKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jYXN0LmRhdCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY2FzdC5kYXQKaW5kZXggNDQ3MWViNmJiZS4uODc4YjBiY2JiZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jYXN0LmRhdAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2Nhc3QuZGF0CkBAIC01NDYsNCArNTQ2LDEwIEBACiB7IGNhc3Rz b3VyY2UgPT4gJ3RzdHpyYW5nZScsIGNhc3R0YXJnZXQgPT4gJ3RzdHptdWx0aXJhbmdlJywK ICAgY2FzdGZ1bmMgPT4gJ3RzdHptdWx0aXJhbmdlKHRzdHpyYW5nZSknLCBjYXN0Y29udGV4 dCA9PiAnZScsCiAgIGNhc3RtZXRob2QgPT4gJ2YnIH0sCisKK3sgY2FzdHNvdXJjZSA9PiAn Ynl0ZWEnLCBjYXN0dGFyZ2V0ID0+ICdwZ19lbmNyeXB0ZWRfZGV0JywgY2FzdGZ1bmMgPT4g JzAnLAorICBjYXN0Y29udGV4dCA9PiAnZScsIGNhc3RtZXRob2QgPT4gJ2InIH0sCit7IGNh c3Rzb3VyY2UgPT4gJ2J5dGVhJywgY2FzdHRhcmdldCA9PiAncGdfZW5jcnlwdGVkX3JuZCcs IGNhc3RmdW5jID0+ICcwJywKKyAgY2FzdGNvbnRleHQgPT4gJ2UnLCBjYXN0bWV0aG9kID0+ ICdiJyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVu Y2tleS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xlbmNrZXkuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wOTVlZDcxMmIwCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xlbmNrZXkuaApAQCAtMCwwICsxLDU1 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jb2xlbmNrZXkuaAorICoJ ICBkZWZpbml0aW9uIG9mIHRoZSAiY29sdW1uIGVuY3J5cHRpb24ga2V5IiBzeXN0ZW0gY2F0 YWxvZworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVua2V5LmgKKyAqCisgKiBOT1RFUworICoJ ICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNj aGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2lmbmRlZiBQR19DT0xFTkNLRVlfSAorI2RlZmluZSBQR19DT0xFTkNLRVlfSAorCisj aW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGVu Y2tleV9kLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ19jb2xlbmNrZXkgZGVm aW5pdGlvbi4gY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1E YXRhX3BnX2NvbGVuY2tleQorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBn X2NvbGVuY2tleSw4MjM0LENvbHVtbkVuY0tleVJlbGF0aW9uSWQpCit7CisJT2lkCQkJb2lk OworCU5hbWVEYXRhCWNla25hbWU7CisJT2lkCQkJY2Vrb3duZXIgQktJX0xPT0tVUChwZ19h dXRoaWQpOworfSBGb3JtRGF0YV9wZ19jb2xlbmNrZXk7CisKK3R5cGVkZWYgRm9ybURhdGFf cGdfY29sZW5ja2V5ICpGb3JtX3BnX2NvbGVuY2tleTsKKworREVDTEFSRV9VTklRVUVfSU5E RVhfUEtFWShwZ19jb2xlbmNrZXlfb2lkX2luZGV4LCA4MjQwLCBDb2x1bW5FbmNLZXlPaWRJ bmRleElkLCBvbiBwZ19jb2xlbmNrZXkgdXNpbmcgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RF Q0xBUkVfVU5JUVVFX0lOREVYKHBnX2NvbGVuY2tleV9jZWtuYW1lX2luZGV4LCA4MjQyLCBD b2x1bW5FbmNLZXlOYW1lSW5kZXhJZCwgb24gcGdfY29sZW5ja2V5IHVzaW5nIGJ0cmVlKGNl a25hbWUgbmFtZV9vcHMpKTsKKworLyoKKyAqIENvbnN0YW50cyBmb3IgQ01LIGFuZCBDRUsg YWxnb3JpdGhtcy4gIE5vdGUgdGhhdCB0aGVzZSBhcmUgcGFydCBvZiB0aGUKKyAqIHByb3Rv Y29sLiAgRm9yIGNsYXJpdHksIHRoZSBhc3NpZ25lZCBudW1iZXJzIGFyZSBub3QgcmV1c2Vk IGJldHdlZW4gQ01LcworICogYW5kIENFS3MsIGJ1dCB0aGF0IGlzIG5vdCB0ZWNobmljYWxs eSByZXF1aXJlZC4gIEluIGVpdGhlciBjYXNlLCBkb24ndAorICogYXNzaWduIHplcm8sIHNv IHRoYXQgdGhhdCBjYW4gYmUgdXNlZCBhcyBhbiBpbnZhbGlkIHZhbHVlLgorICovCisKKyNk ZWZpbmUgUEdfQ01LX1JTQUVTX09BRVBfU0hBXzEJCQkxCisjZGVmaW5lIFBHX0NNS19SU0FF U19PQUVQX1NIQV8yNTYJCTIKKworI2RlZmluZSBQR19DRUtfQUVBRF9BRVNfMTI4X0NCQ19I TUFDX1NIQV8yNTYJMTMwCisjZGVmaW5lIFBHX0NFS19BRUFEX0FFU18xOTJfQ0JDX0hNQUNf U0hBXzM4NAkxMzEKKyNkZWZpbmUgUEdfQ0VLX0FFQURfQUVTXzI1Nl9DQkNfSE1BQ19TSEFf Mzg0CTEzMgorI2RlZmluZSBQR19DRUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV81MTIJ MTMzCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xl bmNrZXlkYXRhLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVuY2tleWRhdGEuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zZTRkZWE3MjE4Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xlbmNrZXlkYXRhLmgK QEAgLTAsMCArMSw0NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfY29s ZW5ja2V5ZGF0YS5oCisgKgkgIGRlZmluaXRpb24gb2YgdGhlICJjb2x1bW4gZW5jcnlwdGlv biBrZXkgZGF0YSIgc3lzdGVtIGNhdGFsb2cKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xlbmtl eWRhdGEuaAorICoKKyAqIE5PVEVTCisgKgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSByZWFk cyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisgKgkgIGluZm9ybWF0aW9uLgorICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX0NPTEVOQ0tFWURBVEFf SAorI2RlZmluZSBQR19DT0xFTkNLRVlEQVRBX0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2Vu YmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xlbmNrZXlkYXRhX2QuaCIKKworLyog LS0tLS0tLS0tLS0tLS0tLQorICoJCXBnX2NvbGVuY2tleWRhdGEgZGVmaW5pdGlvbi4gY3Bw IHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX2NvbGVu Y2tleWRhdGEKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhwZ19jb2xlbmNr ZXlkYXRhLDgyNTAsQ29sdW1uRW5jS2V5RGF0YVJlbGF0aW9uSWQpCit7CisJT2lkCQkJb2lk OworCU9pZAkJCWNrZGNla2lkIEJLSV9MT09LVVAocGdfY29sZW5ja2V5KTsKKwlPaWQJCQlj a2RjbWtpZCBCS0lfTE9PS1VQKHBnX2NvbG1hc3RlcmtleSk7CisJaW50MTYJCWNrZGNta2Fs ZzsJCS8qIFBHX0NNS18qIHZhbHVlcyAqLworI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyog dmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCisJYnl0ZWEJCWNrZGVuY3Zh bCBCS0lfRk9SQ0VfTk9UX05VTEw7CisjZW5kaWYKK30gRm9ybURhdGFfcGdfY29sZW5ja2V5 ZGF0YTsKKwordHlwZWRlZiBGb3JtRGF0YV9wZ19jb2xlbmNrZXlkYXRhICpGb3JtX3BnX2Nv bGVuY2tleWRhdGE7CisKK0RFQ0xBUkVfVE9BU1QocGdfY29sZW5ja2V5ZGF0YSwgODIzNywg ODIzOCk7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfY29sZW5ja2V5ZGF0YV9v aWRfaW5kZXgsIDgyNTEsIENvbHVtbkVuY0tleURhdGFPaWRJbmRleElkLCBvbiBwZ19jb2xl bmNrZXlkYXRhIHVzaW5nIGJ0cmVlKG9pZCBvaWRfb3BzKSk7CitERUNMQVJFX1VOSVFVRV9J TkRFWChwZ19jb2xlbmNrZXlkYXRhX2NrZGNla2lkX2NrZGNta2lkX2luZGV4LCA4MjUyLCBD b2x1bW5FbmNLZXlDZWtpZENta2lkSW5kZXhJZCwgb24gcGdfY29sZW5ja2V5ZGF0YSB1c2lu ZyBidHJlZShja2RjZWtpZCBvaWRfb3BzLCBja2RjbWtpZCBvaWRfb3BzKSk7CisKKyNlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xtYXN0ZXJrZXkuaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbWFzdGVya2V5LmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDM0NGNjNDIwMQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbWFzdGVya2V5LmgKQEAgLTAsMCArMSw0NSBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfY29sbWFzdGVya2V5LmgKKyAq CSAgZGVmaW5pdGlvbiBvZiB0aGUgImNvbHVtbiBtYXN0ZXIga2V5IiBzeXN0ZW0gY2F0YWxv ZworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbG1hc3RlcmtleS5oCisgKgorICogTk9URVMKKyAq CSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmlsZSBhbmQgZGVyaXZlcyBz Y2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKyNpZm5kZWYgUEdfQ09MTUFTVEVSS0VZX0gKKyNkZWZpbmUgUEdfQ09MTUFTVEVSS0VZ X0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xtYXN0ZXJrZXlfZC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfY29s bWFzdGVya2V5IGRlZmluaXRpb24uIGNwcCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVm IHN0cnVjdCBGb3JtRGF0YV9wZ19jb2xtYXN0ZXJrZXkKKyAqIC0tLS0tLS0tLS0tLS0tLS0K KyAqLworQ0FUQUxPRyhwZ19jb2xtYXN0ZXJrZXksODIzMyxDb2x1bW5NYXN0ZXJLZXlSZWxh dGlvbklkKQoreworCU9pZAkJCW9pZDsKKwlOYW1lRGF0YQljbWtuYW1lOworCU9pZAkJCWNt a293bmVyIEJLSV9MT09LVVAocGdfYXV0aGlkKTsKKyNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJ CS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLworCXRleHQJCWNta3Jl YWxtIEJLSV9GT1JDRV9OT1RfTlVMTDsKKyNlbmRpZgorfSBGb3JtRGF0YV9wZ19jb2xtYXN0 ZXJrZXk7CisKK3R5cGVkZWYgRm9ybURhdGFfcGdfY29sbWFzdGVya2V5ICpGb3JtX3BnX2Nv bG1hc3RlcmtleTsKKworREVDTEFSRV9UT0FTVChwZ19jb2xtYXN0ZXJrZXksIDgyMzUsIDgy MzYpOworCitERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX2NvbG1hc3RlcmtleV9vaWRf aW5kZXgsIDgyMzksIENvbHVtbk1hc3RlcktleU9pZEluZGV4SWQsIG9uIHBnX2NvbG1hc3Rl cmtleSB1c2luZyBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgo cGdfY29sbWFzdGVya2V5X2Nta25hbWVfaW5kZXgsIDgyNDEsIENvbHVtbk1hc3RlcktleU5h bWVJbmRleElkLCBvbiBwZ19jb2xtYXN0ZXJrZXkgdXNpbmcgYnRyZWUoY21rbmFtZSBuYW1l X29wcykpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf b3BjbGFzcy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CmluZGV4 IGRiY2FlN2ZmZGQuLjBjYTQwMWZmZTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfb3BjbGFzcy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNz LmRhdApAQCAtMTY2LDYgKzE2Niw4IEBACiAgIG9wY2ludHlwZSA9PiAnYm9vbCcgfSwKIHsg b3BjbWV0aG9kID0+ICdoYXNoJywgb3BjbmFtZSA9PiAnYnl0ZWFfb3BzJywgb3BjZmFtaWx5 ID0+ICdoYXNoL2J5dGVhX29wcycsCiAgIG9wY2ludHlwZSA9PiAnYnl0ZWEnIH0sCit7IG9w Y21ldGhvZCA9PiAnaGFzaCcsIG9wY25hbWUgPT4gJ3BnX2VuY3J5cHRlZF9kZXRfb3BzJywg b3BjZmFtaWx5ID0+ICdoYXNoL3BnX2VuY3J5cHRlZF9kZXRfb3BzJywKKyAgb3BjaW50eXBl ID0+ICdwZ19lbmNyeXB0ZWRfZGV0JyB9LAogeyBvcGNtZXRob2QgPT4gJ2J0cmVlJywgb3Bj bmFtZSA9PiAndGlkX29wcycsIG9wY2ZhbWlseSA9PiAnYnRyZWUvdGlkX29wcycsCiAgIG9w Y2ludHlwZSA9PiAndGlkJyB9LAogeyBvcGNtZXRob2QgPT4gJ2hhc2gnLCBvcGNuYW1lID0+ ICd4aWRfb3BzJywgb3BjZmFtaWx5ID0+ICdoYXNoL3hpZF9vcHMnLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVyYXRvci5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX29wZXJhdG9yLmRhdAppbmRleCBiYzVmODIxM2YzLi40NzM3YTdmOWVkIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdApAQCAtMzQ1OCw0ICszNDU4LDE0IEBA CiAgIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2VfYWZ0ZXJfbXVsdGlyYW5nZScsIG9wcnJlc3Qg PT4gJ211bHRpcmFuZ2VzZWwnLAogICBvcHJqb2luID0+ICdzY2FsYXJndGpvaW5zZWwnIH0s CiAKK3sgb2lkID0+ICc4MjQ3JywgZGVzY3IgPT4gJ2VxdWFsJywKKyAgb3BybmFtZSA9PiAn PScsIG9wcmNhbm1lcmdlID0+ICdmJywgb3ByY2FuaGFzaCA9PiAndCcsIG9wcmxlZnQgPT4g J3BnX2VuY3J5cHRlZF9kZXQnLAorICBvcHJyaWdodCA9PiAncGdfZW5jcnlwdGVkX2RldCcs IG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPShwZ19lbmNyeXB0ZWRfZGV0LHBn X2VuY3J5cHRlZF9kZXQpJywKKyAgb3BybmVnYXRlID0+ICc8PihwZ19lbmNyeXB0ZWRfZGV0 LHBnX2VuY3J5cHRlZF9kZXQpJywgb3ByY29kZSA9PiAncGdfZW5jcnlwdGVkX2RldF9lcScs IG9wcnJlc3QgPT4gJ2Vxc2VsJywKKyAgb3Byam9pbiA9PiAnZXFqb2luc2VsJyB9LAoreyBv aWQgPT4gJzgyNDgnLCBkZXNjciA9PiAnbm90IGVxdWFsJywKKyAgb3BybmFtZSA9PiAnPD4n LCBvcHJsZWZ0ID0+ICdwZ19lbmNyeXB0ZWRfZGV0Jywgb3BycmlnaHQgPT4gJ3BnX2VuY3J5 cHRlZF9kZXQnLCBvcHJyZXN1bHQgPT4gJ2Jvb2wnLAorICBvcHJjb20gPT4gJzw+KHBnX2Vu Y3J5cHRlZF9kZXQscGdfZW5jcnlwdGVkX2RldCknLCBvcHJuZWdhdGUgPT4gJz0ocGdfZW5j cnlwdGVkX2RldCxwZ19lbmNyeXB0ZWRfZGV0KScsCisgIG9wcmNvZGUgPT4gJ3BnX2VuY3J5 cHRlZF9kZXRfbmUnLCBvcHJyZXN0ID0+ICduZXFzZWwnLCBvcHJqb2luID0+ICduZXFqb2lu c2VsJyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFt aWx5LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0CmluZGV4IGIz YjZhN2U2MTYuLjUzNDM1ODBiMDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfb3BmYW1pbHkuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHku ZGF0CkBAIC0xMDgsNiArMTA4LDggQEAKICAgb3BmbWV0aG9kID0+ICdoYXNoJywgb3BmbmFt ZSA9PiAnYm9vbF9vcHMnIH0sCiB7IG9pZCA9PiAnMjIyMycsCiAgIG9wZm1ldGhvZCA9PiAn aGFzaCcsIG9wZm5hbWUgPT4gJ2J5dGVhX29wcycgfSwKK3sgb2lkID0+ICc4MjQ5JywKKyAg b3BmbWV0aG9kID0+ICdoYXNoJywgb3BmbmFtZSA9PiAncGdfZW5jcnlwdGVkX2RldF9vcHMn IH0sCiB7IG9pZCA9PiAnMjc4OScsCiAgIG9wZm1ldGhvZCA9PiAnYnRyZWUnLCBvcGZuYW1l ID0+ICd0aWRfb3BzJyB9LAogeyBvaWQgPT4gJzIyMjUnLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggMmU0MWY0ZDllOC4uMmZhMjZhMjIyMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC04MDI1LDkgKzgwMjUsOSBAQAogICBwcm9uYW1lID0+ICdwZ19wcmVw YXJlZF9zdGF0ZW1lbnQnLCBwcm9yb3dzID0+ICcxMDAwJywgcHJvcmV0c2V0ID0+ICd0JywK ICAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUg PT4gJ3JlY29yZCcsCiAgIHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9 PiAne3RleHQsdGV4dCx0aW1lc3RhbXB0eixfcmVndHlwZSxfcmVndHlwZSxib29sLGludDgs aW50OH0nLAotICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sb30nLAotICBwcm9h cmduYW1lcyA9PiAne25hbWUsc3RhdGVtZW50LHByZXBhcmVfdGltZSxwYXJhbWV0ZXJfdHlw ZXMscmVzdWx0X3R5cGVzLGZyb21fc3FsLGdlbmVyaWNfcGxhbnMsY3VzdG9tX3BsYW5zfScs CisgIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCx0ZXh0LHRpbWVzdGFtcHR6LF9yZWd0eXBl LF9yZWdjbGFzcyxfaW50MixfcmVndHlwZSxib29sLGludDgsaW50OH0nLAorICBwcm9hcmdt b2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tu YW1lLHN0YXRlbWVudCxwcmVwYXJlX3RpbWUscGFyYW1ldGVyX3R5cGVzLHBhcmFtZXRlcl9v cmlnX3RhYmxlcyxwYXJhbWV0ZXJfb3JpZ19jb2x1bW5zLHJlc3VsdF90eXBlcyxmcm9tX3Nx bCxnZW5lcmljX3BsYW5zLGN1c3RvbV9wbGFuc30nLAogICBwcm9zcmMgPT4gJ3BnX3ByZXBh cmVkX3N0YXRlbWVudCcgfSwKIHsgb2lkID0+ICcyNTExJywgZGVzY3IgPT4gJ2dldCB0aGUg b3BlbiBjdXJzb3JzIGZvciB0aGlzIHNlc3Npb24nLAogICBwcm9uYW1lID0+ICdwZ19jdXJz b3InLCBwcm9yb3dzID0+ICcxMDAwJywgcHJvcmV0c2V0ID0+ICd0JywKQEAgLTExODg2LDQg KzExODg2LDExIEBACiAgIHByb3JldHR5cGUgPT4gJ2J5dGVhJywgcHJvYXJndHlwZXMgPT4g J3BnX2JyaW5fbWlubWF4X211bHRpX3N1bW1hcnknLAogICBwcm9zcmMgPT4gJ2JyaW5fbWlu bWF4X211bHRpX3N1bW1hcnlfc2VuZCcgfSwKIAoreyBvaWQgPT4gJzgyNDUnLAorICBwcm9u YW1lID0+ICdwZ19lbmNyeXB0ZWRfZGV0X2VxJywgcHJvbGVha3Byb29mID0+ICd0JywgcHJv cmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdwZ19lbmNyeXB0ZWRfZGV0 IHBnX2VuY3J5cHRlZF9kZXQnLCBwcm9zcmMgPT4gJ2J5dGVhZXEnIH0sCit7IG9pZCA9PiAn ODI0NicsCisgIHByb25hbWUgPT4gJ3BnX2VuY3J5cHRlZF9kZXRfbmUnLCBwcm9sZWFrcHJv b2YgPT4gJ3QnLCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ3Bn X2VuY3J5cHRlZF9kZXQgcGdfZW5jcnlwdGVkX2RldCcsIHByb3NyYyA9PiAnYnl0ZWFuZScg fSwKKwogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190eXBlLmRhdCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdHlwZS5kYXQKaW5kZXggZGY0NTg3OTQ2My4uZGYx ZmEzZTM5MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190eXBlLmRhdAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3R5cGUuZGF0CkBAIC02OTIsNCArNjkyLDE2 IEBACiAgIHR5cHJlY2VpdmUgPT4gJ2JyaW5fbWlubWF4X211bHRpX3N1bW1hcnlfcmVjdics CiAgIHR5cHNlbmQgPT4gJ2JyaW5fbWlubWF4X211bHRpX3N1bW1hcnlfc2VuZCcsIHR5cGFs aWduID0+ICdpJywKICAgdHlwc3RvcmFnZSA9PiAneCcsIHR5cGNvbGxhdGlvbiA9PiAnZGVm YXVsdCcgfSwKKworeyBvaWQgPT4gJzgyNDMnLCBkZXNjciA9PiAnZW5jcnlwdGVkIGNvbHVt biAoZGV0ZXJtaW5pc3RpYyknLAorICB0eXBuYW1lID0+ICdwZ19lbmNyeXB0ZWRfZGV0Jywg dHlwbGVuID0+ICctMScsIHR5cGJ5dmFsID0+ICdmJywgdHlwdHlwZSA9PiAneScsCisgIHR5 cGNhdGVnb3J5ID0+ICdZJywgdHlwaW5wdXQgPT4gJ2J5dGVhaW4nLCB0eXBvdXRwdXQgPT4g J2J5dGVhb3V0JywKKyAgdHlwcmVjZWl2ZSA9PiAnYnl0ZWFyZWN2JywgdHlwc2VuZCA9PiAn Ynl0ZWFzZW5kJywgdHlwYWxpZ24gPT4gJ2knLAorICB0eXBzdG9yYWdlID0+ICdlJyB9LAor eyBvaWQgPT4gJzgyNDQnLCBkZXNjciA9PiAnZW5jcnlwdGVkIGNvbHVtbiAocmFuZG9taXpl ZCknLAorICB0eXBuYW1lID0+ICdwZ19lbmNyeXB0ZWRfcm5kJywgdHlwbGVuID0+ICctMScs IHR5cGJ5dmFsID0+ICdmJywgdHlwdHlwZSA9PiAneScsCisgIHR5cGNhdGVnb3J5ID0+ICdZ JywgdHlwaW5wdXQgPT4gJ2J5dGVhaW4nLCB0eXBvdXRwdXQgPT4gJ2J5dGVhb3V0JywKKyAg dHlwcmVjZWl2ZSA9PiAnYnl0ZWFyZWN2JywgdHlwc2VuZCA9PiAnYnl0ZWFzZW5kJywgdHlw YWxpZ24gPT4gJ2knLAorICB0eXBzdG9yYWdlID0+ICdlJyB9LAorCiBdCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3R5cGUuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfdHlwZS5oCmluZGV4IDQ4YTI1NTkxMzcuLjExYWZmOWZmODMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfdHlwZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfdHlwZS5oCkBAIC0yNzcsNiArMjc3LDcgQEAgREVDTEFSRV9VTklRVUVfSU5ERVgocGdf dHlwZV90eXBuYW1lX25zcF9pbmRleCwgMjcwNCwgVHlwZU5hbWVOc3BJbmRleElkLCBvbiBw Z18KICNkZWZpbmUgIFRZUFRZUEVfTVVMVElSQU5HRQknbScgLyogbXVsdGlyYW5nZSB0eXBl ICovCiAjZGVmaW5lICBUWVBUWVBFX1BTRVVETwkJJ3AnIC8qIHBzZXVkby10eXBlICovCiAj ZGVmaW5lICBUWVBUWVBFX1JBTkdFCQkncicgLyogcmFuZ2UgdHlwZSAqLworI2RlZmluZSAg VFlQVFlQRV9FTkNSWVBURUQJJ3knIC8qIGVuY3J5cHRlZCBjb2x1bW4gdmFsdWUgKi8KIAog I2RlZmluZSAgVFlQQ0FURUdPUllfSU5WQUxJRAknXDAnCS8qIG5vdCBhbiBhbGxvd2VkIGNh dGVnb3J5ICovCiAjZGVmaW5lICBUWVBDQVRFR09SWV9BUlJBWQkJJ0EnCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKaW5kZXggZjkzZDg2NjU0OC4uOGMwOGJkODQ1ZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaApAQCAtNjc5LDYgKzY3OSw3IEBAIHR5cGVkZWYgc3RydWN0IENvbHVt bkRlZgogCWNoYXIJICAgKmNvbG5hbWU7CQkvKiBuYW1lIG9mIGNvbHVtbiAqLwogCVR5cGVO YW1lICAgKnR5cGVOYW1lOwkJLyogdHlwZSBvZiBjb2x1bW4gKi8KIAljaGFyCSAgICpjb21w cmVzc2lvbjsJLyogY29tcHJlc3Npb24gbWV0aG9kIGZvciBjb2x1bW4gKi8KKwlMaXN0CSAg ICplbmNyeXB0aW9uOwkJLyogZW5jcnlwdGlvbiBpbmZvIGZvciBjb2x1bW4gKi8KIAlpbnQJ CQlpbmhjb3VudDsJCS8qIG51bWJlciBvZiB0aW1lcyBjb2x1bW4gaXMgaW5oZXJpdGVkICov CiAJYm9vbAkJaXNfbG9jYWw7CQkvKiBjb2x1bW4gaGFzIGxvY2FsIChub24taW5oZXJpdGVk KSBkZWYnbiAqLwogCWJvb2wJCWlzX25vdF9udWxsOwkvKiBOT1QgTlVMTCBjb25zdHJhaW50 IHNwZWNpZmllZD8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXpl LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCmluZGV4IGRjMzc5NTQ3YzcuLmMz MTBlMTI0ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaApAQCAtMjgsNyArMjgsOSBAQCBleHRl cm4gUEdETExJTVBPUlQgcG9zdF9wYXJzZV9hbmFseXplX2hvb2tfdHlwZSBwb3N0X3BhcnNl X2FuYWx5emVfaG9vazsKIGV4dGVybiBRdWVyeSAqcGFyc2VfYW5hbHl6ZV9maXhlZHBhcmFt cyhSYXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJ CQkJY29uc3QgT2lkICpwYXJhbVR5cGVzLCBpbnQgbnVtUGFyYW1zLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudik7CiBleHRlcm4gUXVlcnkgKnBhcnNlX2FuYWx5emVfdmFycGFyYW1z KFJhd1N0bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCQkJCQkJ CSAgT2lkICoqcGFyYW1UeXBlcywgaW50ICpudW1QYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKKwkJCQkJCQkJCSAgT2lkICoqcGFyYW1UeXBlcywgaW50ICpudW1QYXJh bXMsCisJCQkJCQkJCQkgIE9pZCAqKnBhcmFtT3JpZ1RibHMsIEF0dHJOdW1iZXIgKipwYXJh bU9yaWdDb2xzLAorCQkJCQkJCQkJICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBl eHRlcm4gUXVlcnkgKnBhcnNlX2FuYWx5emVfd2l0aGNiKFJhd1N0bXQgKnBhcnNlVHJlZSwg Y29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICAgUGFyc2VyU2V0dXBIb29rIHBh cnNlclNldHVwLAogCQkJCQkJCQkgICB2b2lkICpwYXJzZXJTZXR1cEFyZywKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJz ZXIvcGFyc2Vfbm9kZS5oCmluZGV4IGNmOWM3NTkwMjUuLjIyNWEyYTg3MzMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaApAQCAtOTMsNiArOTMsNyBAQCB0eXBlZGVmIE5vZGUgKigq UGFyc2VQYXJhbVJlZkhvb2spIChQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtUmVmICpwcmVm KTsKIHR5cGVkZWYgTm9kZSAqKCpDb2VyY2VQYXJhbUhvb2spIChQYXJzZVN0YXRlICpwc3Rh dGUsIFBhcmFtICpwYXJhbSwKIAkJCQkJCQkJICBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0 YXJnZXRUeXBlTW9kLAogCQkJCQkJCQkgIGludCBsb2NhdGlvbik7Cit0eXBlZGVmIHZvaWQg KCpQYXJhbUFzc2lnbk9yaWdIb29rKSAoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJhbSAqcGFy YW0sIE9pZCBvcmlndGJsLCBBdHRyTnVtYmVyIG9yaWdjb2wpOwogCiAKIC8qCkBAIC0yMjIs NiArMjIzLDcgQEAgc3RydWN0IFBhcnNlU3RhdGUKIAlQb3N0UGFyc2VDb2x1bW5SZWZIb29r IHBfcG9zdF9jb2x1bW5yZWZfaG9vazsKIAlQYXJzZVBhcmFtUmVmSG9vayBwX3BhcmFtcmVm X2hvb2s7CiAJQ29lcmNlUGFyYW1Ib29rIHBfY29lcmNlX3BhcmFtX2hvb2s7CisJUGFyYW1B c3NpZ25PcmlnSG9vayBwX3BhcmFtX2Fzc2lnbl9vcmlnX2hvb2s7CiAJdm9pZAkgICAqcF9y ZWZfaG9va19zdGF0ZTsJLyogY29tbW9uIHBhc3N0aHJvdWdoIGxpbmsgZm9yIGFib3ZlICov CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcGFyYW0uaCBi L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9wYXJhbS5oCmluZGV4IGRmMWVlNjYwZDguLmRh MjAyYjI4YTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9wYXJhbS5o CisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9wYXJhbS5oCkBAIC0xOCw3ICsxOCw4 IEBACiBleHRlcm4gdm9pZCBzZXR1cF9wYXJzZV9maXhlZF9wYXJhbWV0ZXJzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgY29uc3QgT2lkICpwYXJhbVR5cGVzLCBpbnQgbnVt UGFyYW1zKTsKIGV4dGVybiB2b2lkIHNldHVwX3BhcnNlX3ZhcmlhYmxlX3BhcmFtZXRlcnMo UGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCQkJCQlPaWQgKipwYXJhbVR5cGVzLCBpbnQg Km51bVBhcmFtcyk7CisJCQkJCQkJCQkJCU9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVtUGFy YW1zLAorCQkJCQkJCQkJCQlPaWQgKipwYXJhbU9yaWdUYmxzLCBBdHRyTnVtYmVyICoqcGFy YW1PcmlnQ29scyk7CiBleHRlcm4gdm9pZCBjaGVja192YXJpYWJsZV9wYXJhbWV0ZXJzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgUXVlcnkgKnF1ZXJ5KTsKIGV4dGVybiBib29sIHF1ZXJ5X2Nv bnRhaW5zX2V4dGVybl9wYXJhbXMoUXVlcnkgKnF1ZXJ5KTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5o CmluZGV4IDcwZDlkYWIyNWIuLjMwMzhjZWI1MjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKQEAg LTUzLDYgKzUzLDggQEAgZXh0ZXJuIExpc3QgKnBnX2FuYWx5emVfYW5kX3Jld3JpdGVfdmFy cGFyYW1zKFJhd1N0bXQgKnBhcnNldHJlZSwKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICpx dWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJCSAgT2lkICoqcGFyYW1UeXBlcywKIAkJCQkJCQkJ CQkJICBpbnQgKm51bVBhcmFtcywKKwkJCQkJCQkJCQkJICBPaWQgKipwYXJhbU9yaWdUYmxz LAorCQkJCQkJCQkJCQkgIEF0dHJOdW1iZXIgKipwYXJhbU9yaWdDb2xzLAogCQkJCQkJCQkJ CQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIGV4dGVybiBMaXN0ICpwZ19hbmFs eXplX2FuZF9yZXdyaXRlX3dpdGhjYihSYXdTdG10ICpwYXJzZXRyZWUsCiAJCQkJCQkJCQkJ ICAgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRl eCAwNDk5NjM1ZjU5Li45YTdjZjc5NGNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAt MTAxLDYgKzEwMSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuU291cmNlCiAJQ29t bWFuZFRhZwljb21tYW5kVGFnOwkJLyogJ251ZmYgc2FpZCAqLwogCU9pZAkJICAgKnBhcmFt X3R5cGVzOwkvKiBhcnJheSBvZiBwYXJhbWV0ZXIgdHlwZSBPSURzLCBvciBOVUxMICovCiAJ aW50CQkJbnVtX3BhcmFtczsJCS8qIGxlbmd0aCBvZiBwYXJhbV90eXBlcyBhcnJheSAqLwor CU9pZAkJICAgKnBhcmFtX29yaWd0YmxzOyAvKiBhcnJheSBvZiB1bmRlcmx5aW5nIHRhYmxl cyBvZiBwYXJhbWV0ZXJzLAorCQkJCQkJCQkgKiBvciBOVUxMICovCisJQXR0ck51bWJlciAq cGFyYW1fb3JpZ2NvbHM7IC8qIGFycmF5IG9mIHVuZGVybHlpbmcgY29sdW1ucyBvZiBwYXJh bWV0ZXJzLAorCQkJCQkJCQkgKiBvciBOVUxMICovCiAJUGFyc2VyU2V0dXBIb29rIHBhcnNl clNldHVwOwkvKiBhbHRlcm5hdGl2ZSBwYXJhbWV0ZXIgc3BlYyBtZXRob2QgKi8KIAl2b2lk CSAgICpwYXJzZXJTZXR1cEFyZzsKIAlpbnQJCQljdXJzb3Jfb3B0aW9uczsgLyogY3Vyc29y IG9wdGlvbnMgdXNlZCBmb3IgcGxhbm5pbmcgKi8KQEAgLTE5OSw2ICsyMDMsOCBAQCBleHRl cm4gdm9pZCBDb21wbGV0ZUNhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSwKIAkJCQkJCQkgICBNZW1vcnlDb250ZXh0IHF1ZXJ5dHJlZV9jb250ZXh0LAogCQkJCQkJ CSAgIE9pZCAqcGFyYW1fdHlwZXMsCiAJCQkJCQkJICAgaW50IG51bV9wYXJhbXMsCisJCQkJ CQkJICAgT2lkICpwYXJhbV9vcmlndGJscywKKwkJCQkJCQkgICBBdHRyTnVtYmVyICpwYXJh bV9vcmlnY29scywKIAkJCQkJCQkgICBQYXJzZXJTZXR1cEhvb2sgcGFyc2VyU2V0dXAsCiAJ CQkJCQkJICAgdm9pZCAqcGFyc2VyU2V0dXBBcmcsCiAJCQkJCQkJICAgaW50IGN1cnNvcl9v cHRpb25zLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKaW5kZXggNDQ2M2VhNjZiZS4uNGU4YTk0MDU5 MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCkBAIC00NCw4ICs0NCwxMiBAQCBlbnVtIFN5c0Nh Y2hlSWRlbnRpZmllcgogCUFVVEhOQU1FLAogCUFVVEhPSUQsCiAJQ0FTVFNPVVJDRVRBUkdF VCwKKwlDRUtEQVRBT0lELAorCUNFS05BTUUsCisJQ0VLT0lELAogCUNMQUFNTkFNRU5TUCwK IAlDTEFPSUQsCisJQ01LT0lELAogCUNPTExOQU1FRU5DTlNQLAogCUNPTExPSUQsCiAJQ09O REVGQVVMVCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnRz aW1wbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnRzaW1wbGUuYwppbmRl eCBlOTlhYTI3OWY2Li43OTE1NGY4YWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3ByaW50c2ltcGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9wcmludHNpbXBsZS5jCkBAIC00Niw2ICs0Niw4IEBAIHByaW50c2ltcGxlX3N0YXJ0dXAo RGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBUdXBsZURlc2MgdHVwZGVzYykK IAkJcHFfc2VuZGludDE2KCZidWYsIGF0dHItPmF0dGxlbik7CiAJCXBxX3NlbmRpbnQzMigm YnVmLCBhdHRyLT5hdHR0eXBtb2QpOwogCQlwcV9zZW5kaW50MTYoJmJ1ZiwgMCk7CS8qIGZv cm1hdCBjb2RlICovCisJCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsJLyogQ0VLICovCisJCXBx X3NlbmRpbnQxNigmYnVmLCAwKTsJLyogQ0VLIGFsZyAqLwogCX0KIAogCXBxX2VuZG1lc3Nh Z2UoJmJ1Zik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3ByaW50 dHVwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3ByaW50dHVwLmMKaW5kZXggZDJm M2I1NzI4OC4uMjhiNDM3ZTVjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi9wcmludHR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnR0 dXAuYwpAQCAtMTUsMTMgKzE1LDI2IEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgog CisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3ByaW50dHVw LmgiCisjaW5jbHVkZSAiYWNjZXNzL3NrZXkuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGVuY2tleS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfY29sZW5ja2V5ZGF0YS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbWFzdGVy a2V5LmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZv cm1hdC5oIgogI2luY2x1ZGUgInRjb3AvcHF1ZXJ5LmgiCisjaW5jbHVkZSAidXRpbHMvYXJy YXkuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheWFjY2Vzcy5oIgorI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCiAKIHN0 YXRpYyB2b2lkIHByaW50dHVwX3N0YXJ0dXAoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3Bl cmF0aW9uLApAQCAtMTUxLDYgKzE2NCwxMzUgQEAgcHJpbnR0dXBfc3RhcnR1cChEZXN0UmVj ZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVzYyB0eXBlaW5mbykKIAkgKi8K IH0KIAorLyoKKyAqIFNlbmQgQ29sdW1uTWFzdGVyS2V5IG1lc3NhZ2UsIHVubGVzcyBpdCdz IGFscmVhZHkgYmVlbiBzZW50IGluIHRoaXMgc2Vzc2lvbgorICogZm9yIHRoaXMga2V5Lgor ICovCitMaXN0CSAgICpjbWtfc2VudCA9IE5JTDsKKworc3RhdGljIHZvaWQKK2Nta19jaGFu Z2VfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwls aXN0X2ZyZWUoY21rX3NlbnQpOworCWNta19zZW50ID0gTklMOworfQorCitzdGF0aWMgdm9p ZAorTWF5YmVTZW5kQ29sdW1uTWFzdGVyS2V5TWVzc2FnZShPaWQgY21raWQpCit7CisJSGVh cFR1cGxlCXR1cGxlOworCUZvcm1fcGdfY29sbWFzdGVya2V5IGNta2Zvcm07CisJRGF0dW0J CWRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJc3RhdGlj IGJvb2wgcmVnaXN0ZXJlZF9pbnZhbCA9IGZhbHNlOworCU1lbW9yeUNvbnRleHQgb2xkY29u dGV4dDsKKworCWlmIChsaXN0X21lbWJlcl9vaWQoY21rX3NlbnQsIGNta2lkKSkKKwkJcmV0 dXJuOworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoQ01LT0lELCBPYmplY3RJZEdldERh dHVtKGNta2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbHVtbiBtYXN0ZXIga2V5ICV1Iiwg Y21raWQpOworCWNta2Zvcm0gPSAoRm9ybV9wZ19jb2xtYXN0ZXJrZXkpIEdFVFNUUlVDVCh0 dXBsZSk7CisKKwlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgJ3knKTsgLyogQ29sdW1uTWFzdGVy S2V5ICovCisJcHFfc2VuZGludDMyKCZidWYsIGNta2Zvcm0tPm9pZCk7CisJcHFfc2VuZHN0 cmluZygmYnVmLCBOYW1lU3RyKGNta2Zvcm0tPmNta25hbWUpKTsKKwlkYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0cihDTUtPSUQsIHR1cGxlLCBBbnVtX3BnX2NvbG1hc3RlcmtleV9jbWtyZWFs bSwgJmlzbnVsbCk7CisJQXNzZXJ0KCFpc251bGwpOworCXBxX3NlbmRzdHJpbmcoJmJ1Ziwg VGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSkpOworCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CisK KwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJaWYgKCFyZWdpc3RlcmVkX2ludmFsKQor CXsKKwkJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soQ01LT0lELCBjbWtfY2hhbmdl X2NiLCAoRGF0dW0pIDApOworCQlyZWdpc3RlcmVkX2ludmFsID0gdHJ1ZTsKKwl9CisKKwlv bGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQpOwor CWNta19zZW50ID0gbGFwcGVuZF9vaWQoY21rX3NlbnQsIGNta2lkKTsKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Cit9CisKKy8qCisgKiBTZW5kIENvbHVtbkVuY3J5 cHRpb25LZXkgbWVzc2FnZSwgdW5sZXNzIGl0J3MgYWxyZWFkeSBiZWVuIHNlbnQgaW4gdGhp cworICogc2Vzc2lvbiBmb3IgdGhpcyBrZXkuCisgKi8KK0xpc3QJICAgKmNla19zZW50ID0g TklMOworCitzdGF0aWMgdm9pZAorY2VrX2NoYW5nZV9jYihEYXR1bSBhcmcsIGludCBjYWNo ZWlkLCB1aW50MzIgaGFzaHZhbHVlKQoreworCWxpc3RfZnJlZShjZWtfc2VudCk7CisJY2Vr X3NlbnQgPSBOSUw7Cit9CisKK3ZvaWQKK01heWJlU2VuZENvbHVtbkVuY3J5cHRpb25LZXlN ZXNzYWdlKE9pZCBhdHRjZWspCit7CisJSGVhcFR1cGxlCXR1cGxlOworCVNjYW5LZXlEYXRh IHNrZXlbMV07CisJU3lzU2NhbkRlc2Mgc2Q7CisJUmVsYXRpb24JcmVsOworCWJvb2wJCWZv dW5kID0gZmFsc2U7CisJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9pbnZhbCA9IGZhbHNlOwor CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCWlmIChsaXN0X21lbWJlcl9vaWQoY2Vr X3NlbnQsIGF0dGNlaykpCisJCXJldHVybjsKKworCVNjYW5LZXlJbml0KCZza2V5WzBdLAor CQkJCUFudW1fcGdfY29sZW5ja2V5ZGF0YV9ja2RjZWtpZCwKKwkJCQlCVEVxdWFsU3RyYXRl Z3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShhdHRjZWspKTsKKwly ZWwgPSB0YWJsZV9vcGVuKENvbHVtbkVuY0tleURhdGFSZWxhdGlvbklkLCBBY2Nlc3NTaGFy ZUxvY2spOworCXNkID0gc3lzdGFibGVfYmVnaW5zY2FuKHJlbCwgQ29sdW1uRW5jS2V5Q2Vr aWRDbWtpZEluZGV4SWQsIHRydWUsIE5VTEwsIDEsIHNrZXkpOworCisJd2hpbGUgKCh0dXBs ZSA9IHN5c3RhYmxlX2dldG5leHQoc2QpKSkKKwl7CisJCUZvcm1fcGdfY29sZW5ja2V5ZGF0 YSBja2Rmb3JtID0gKEZvcm1fcGdfY29sZW5ja2V5ZGF0YSkgR0VUU1RSVUNUKHR1cGxlKTsK KwkJRGF0dW0JCWRhdHVtOworCQlib29sCQlpc251bGw7CisJCWJ5dGVhCSAgICpiYTsKKwkJ U3RyaW5nSW5mb0RhdGEgYnVmOworCisJCU1heWJlU2VuZENvbHVtbk1hc3RlcktleU1lc3Nh Z2UoY2tkZm9ybS0+Y2tkY21raWQpOworCisJCWRhdHVtID0gaGVhcF9nZXRhdHRyKHR1cGxl LCBBbnVtX3BnX2NvbGVuY2tleWRhdGFfY2tkZW5jdmFsLCBSZWxhdGlvbkdldERlc2NyKHJl bCksICZpc251bGwpOworCQlBc3NlcnQoIWlzbnVsbCk7CisJCWJhID0gcGdfZGV0b2FzdF9k YXR1bV9wYWNrZWQoKGJ5dGVhICopIERhdHVtR2V0UG9pbnRlcihkYXR1bSkpOworCisJCXBx X2JlZ2lubWVzc2FnZSgmYnVmLCAnWScpOyAvKiBDb2x1bW5FbmNyeXB0aW9uS2V5ICovCisJ CXBxX3NlbmRpbnQzMigmYnVmLCBja2Rmb3JtLT5ja2RjZWtpZCk7CisJCXBxX3NlbmRpbnQz MigmYnVmLCBja2Rmb3JtLT5ja2RjbWtpZCk7CisJCXBxX3NlbmRpbnQxNigmYnVmLCBja2Rm b3JtLT5ja2RjbWthbGcpOworCQlwcV9zZW5kaW50MzIoJmJ1ZiwgVkFSU0laRV9BTllfRVhI RFIoYmEpKTsKKwkJcHFfc2VuZGJ5dGVzKCZidWYsIFZBUkRBVEFfQU5ZKGJhKSwgVkFSU0la RV9BTllfRVhIRFIoYmEpKTsKKwkJcHFfZW5kbWVzc2FnZSgmYnVmKTsKKworCQlmb3VuZCA9 IHRydWU7CisJfQorCisJaWYgKCFmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImxvb2t1cCBmYWls ZWQgZm9yIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBkYXRhICV1IiwgYXR0Y2VrKTsKKworCXN5 c3RhYmxlX2VuZHNjYW4oc2QpOworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCWlm ICghcmVnaXN0ZXJlZF9pbnZhbCkKKwl7CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxi YWNrKENFS0RBVEFPSUQsIGNla19jaGFuZ2VfY2IsIChEYXR1bSkgMCk7CisJCXJlZ2lzdGVy ZWRfaW52YWwgPSB0cnVlOworCX0KKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7CisJY2VrX3NlbnQgPSBsYXBwZW5kX29pZChjZWtf c2VudCwgYXR0Y2VrKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Cit9 CisKIC8qCiAgKiBTZW5kUm93RGVzY3JpcHRpb25NZXNzYWdlIC0tLSBzZW5kIGEgUm93RGVz Y3JpcHRpb24gbWVzc2FnZSB0byB0aGUgZnJvbnRlbmQKICAqCkBAIC0yMDAsNiArMzQyLDgg QEAgU2VuZFJvd0Rlc2NyaXB0aW9uTWVzc2FnZShTdHJpbmdJbmZvIGJ1ZiwgVHVwbGVEZXNj IHR5cGVpbmZvLAogCQlPaWQJCQlyZXNvcmlndGJsOwogCQlBdHRyTnVtYmVyCXJlc29yaWdj b2w7CiAJCWludDE2CQlmb3JtYXQ7CisJCU9pZAkJCWF0dGNla2lkID0gSW52YWxpZE9pZDsK KwkJaW50MTYJCWF0dGVuY2FsZyA9IDA7CiAKIAkJLyoKIAkJICogSWYgY29sdW1uIGlzIGEg ZG9tYWluLCBzZW5kIHRoZSBiYXNlIHR5cGUgYW5kIHR5cG1vZCBpbnN0ZWFkLgpAQCAtMjMx LDYgKzM3NSwyMiBAQCBTZW5kUm93RGVzY3JpcHRpb25NZXNzYWdlKFN0cmluZ0luZm8gYnVm LCBUdXBsZURlc2MgdHlwZWluZm8sCiAJCWVsc2UKIAkJCWZvcm1hdCA9IDA7CiAKKwkJaWYg KGdldF90eXB0eXBlKGF0dHR5cGlkKSA9PSBUWVBUWVBFX0VOQ1JZUFRFRCkKKwkJeworCQkJ SGVhcFR1cGxlCXRwOworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgb3JpZ19hdHQ7CisKKwkJCXRw ID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5VTSwgT2JqZWN0SWRHZXREYXR1bShyZXNvcmlndGJs KSwgSW50MTZHZXREYXR1bShyZXNvcmlnY29sKSk7CisJCQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQodHApKQorCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBhdHRy aWJ1dGUgJWQgb2YgcmVsYXRpb24gJXUiLCByZXNvcmlnY29sLCByZXNvcmlndGJsKTsKKwkJ CW9yaWdfYXR0ID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QodHApOworCQkJTWF5 YmVTZW5kQ29sdW1uRW5jcnlwdGlvbktleU1lc3NhZ2Uob3JpZ19hdHQtPmF0dGNlayk7CisJ CQlhdHR0eXBpZCA9IG9yaWdfYXR0LT5hdHRyZWFsdHlwaWQ7CisJCQlhdHRjZWtpZCA9IG9y aWdfYXR0LT5hdHRjZWs7CisJCQlhdHRlbmNhbGcgPSBvcmlnX2F0dC0+YXR0ZW5jYWxnOwor CQkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJfQorCiAJCXBxX3dyaXRlc3RyaW5nKGJ1Ziwg TmFtZVN0cihhdHQtPmF0dG5hbWUpKTsKIAkJcHFfd3JpdGVpbnQzMihidWYsIHJlc29yaWd0 YmwpOwogCQlwcV93cml0ZWludDE2KGJ1ZiwgcmVzb3JpZ2NvbCk7CkBAIC0yMzgsNiArMzk4 LDggQEAgU2VuZFJvd0Rlc2NyaXB0aW9uTWVzc2FnZShTdHJpbmdJbmZvIGJ1ZiwgVHVwbGVE ZXNjIHR5cGVpbmZvLAogCQlwcV93cml0ZWludDE2KGJ1ZiwgYXR0LT5hdHRsZW4pOwogCQlw cV93cml0ZWludDMyKGJ1ZiwgYXR0dHlwbW9kKTsKIAkJcHFfd3JpdGVpbnQxNihidWYsIGZv cm1hdCk7CisJCXBxX3dyaXRlaW50MzIoYnVmLCBhdHRjZWtpZCk7CisJCXBxX3dyaXRlaW50 MTYoYnVmLCBhdHRlbmNhbGcpOwogCX0KIAogCXBxX2VuZG1lc3NhZ2VfcmV1c2UoYnVmKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKaW5kZXggZDZmYjI2MWUyMC4uZTNl Y2M2NGVhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNj LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKQEAgLTQ1OSw2 ICs0NTksMTIgQEAgZXF1YWxUdXBsZURlc2NzKFR1cGxlRGVzYyB0dXBkZXNjMSwgVHVwbGVE ZXNjIHR1cGRlc2MyKQogCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoYXR0cjEtPmF0dGlzbG9j YWwgIT0gYXR0cjItPmF0dGlzbG9jYWwpCiAJCQlyZXR1cm4gZmFsc2U7CisJCWlmIChhdHRy MS0+YXR0Y2VrICE9IGF0dHIyLT5hdHRjZWspCisJCQlyZXR1cm4gZmFsc2U7CisJCWlmIChh dHRyMS0+YXR0cmVhbHR5cGlkICE9IGF0dHIyLT5hdHRyZWFsdHlwaWQpCisJCQlyZXR1cm4g ZmFsc2U7CisJCWlmIChhdHRyMS0+YXR0ZW5jYWxnICE9IGF0dHIyLT5hdHRlbmNhbGcpCisJ CQlyZXR1cm4gZmFsc2U7CiAJCWlmIChhdHRyMS0+YXR0aW5oY291bnQgIT0gYXR0cjItPmF0 dGluaGNvdW50KQogCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoYXR0cjEtPmF0dGNvbGxhdGlv biAhPSBhdHRyMi0+YXR0Y29sbGF0aW9uKQpAQCAtNjI5LDYgKzYzNSw5IEBAIFR1cGxlRGVz Y0luaXRFbnRyeShUdXBsZURlc2MgZGVzYywKIAlhdHQtPmF0dGdlbmVyYXRlZCA9ICdcMCc7 CiAJYXR0LT5hdHRpc2Ryb3BwZWQgPSBmYWxzZTsKIAlhdHQtPmF0dGlzbG9jYWwgPSB0cnVl OworCWF0dC0+YXR0Y2VrID0gMDsKKwlhdHQtPmF0dHJlYWx0eXBpZCA9IDA7CisJYXR0LT5h dHRlbmNhbGcgPSAwOwogCWF0dC0+YXR0aW5oY291bnQgPSAwOwogCS8qIHZhcmlhYmxlLWxl bmd0aCBmaWVsZHMgYXJlIG5vdCBwcmVzZW50IGluIHR1cGxlZGVzY3MgKi8KIApAQCAtNjkw LDYgKzY5OSw5IEBAIFR1cGxlRGVzY0luaXRCdWlsdGluRW50cnkoVHVwbGVEZXNjIGRlc2Ms CiAJYXR0LT5hdHRnZW5lcmF0ZWQgPSAnXDAnOwogCWF0dC0+YXR0aXNkcm9wcGVkID0gZmFs c2U7CiAJYXR0LT5hdHRpc2xvY2FsID0gdHJ1ZTsKKwlhdHQtPmF0dGNlayA9IDA7CisJYXR0 LT5hdHRyZWFsdHlwaWQgPSAwOworCWF0dC0+YXR0ZW5jYWxnID0gMDsKIAlhdHQtPmF0dGlu aGNvdW50ID0gMDsKIAkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIGFyZSBub3QgcHJlc2Vu dCBpbiB0dXBsZWRlc2NzICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2h2YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHZhbGlk YXRlLmMKaW5kZXggMTBiZjI2Y2U3Yy4uY2VhOTFkNGE4OCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaHZhbGlkYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaHZhbGlkYXRlLmMKQEAgLTMzMSw3ICszMzEsNyBAQCBjaGVja19oYXNo X2Z1bmNfc2lnbmF0dXJlKE9pZCBmdW5jaWQsIGludDE2IGFtcHJvY251bSwgT2lkIGFyZ3R5 cGUpCiAJCQkJIGFyZ3R5cGUgPT0gQk9PTE9JRCkKIAkJCSAvKiBva2F5LCBhbGxvd2VkIHVz ZSBvZiBoYXNoY2hhcigpICovIDsKIAkJZWxzZSBpZiAoKGZ1bmNpZCA9PSBGX0hBU0hWQVJM RU5BIHx8IGZ1bmNpZCA9PSBGX0hBU0hWQVJMRU5BRVhURU5ERUQpICYmCi0JCQkJIGFyZ3R5 cGUgPT0gQllURUFPSUQpCisJCQkJIChhcmd0eXBlID09IEJZVEVBT0lEIHx8IGFyZ3R5cGUg PT0gUEdfRU5DUllQVEVEX0RFVE9JRCkpCiAJCQkgLyogb2theSwgYWxsb3dlZCB1c2Ugb2Yg aGFzaHZhcmxlbmEoKSAqLyA7CiAJCWVsc2UKIAkJCXJlc3VsdCA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvTWFrZWZpbGUKaW5kZXggODlhMDIyMWVjOS4uN2UxYTkxYjk3NCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L01ha2VmaWxlCkBAIC03Miw3ICs3Miw4IEBAIENBVEFMT0dfSEVBREVSUyA6PSBcCiAJcGdf Y29sbGF0aW9uLmggcGdfcGFyYW1ldGVyX2FjbC5oIHBnX3BhcnRpdGlvbmVkX3RhYmxlLmgg XAogCXBnX3JhbmdlLmggcGdfdHJhbnNmb3JtLmggXAogCXBnX3NlcXVlbmNlLmggcGdfcHVi bGljYXRpb24uaCBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaCBcCi0JcGdfcHVibGljYXRp b25fcmVsLmggcGdfc3Vic2NyaXB0aW9uLmggcGdfc3Vic2NyaXB0aW9uX3JlbC5oCisJcGdf cHVibGljYXRpb25fcmVsLmggcGdfc3Vic2NyaXB0aW9uLmggcGdfc3Vic2NyaXB0aW9uX3Jl bC5oIFwKKwlwZ19jb2xtYXN0ZXJrZXkuaCBwZ19jb2xlbmNrZXkuaCBwZ19jb2xlbmNrZXlk YXRhLmgKIAogR0VORVJBVEVEX0hFQURFUlMgOj0gJChDQVRBTE9HX0hFQURFUlM6JS5oPSVf ZC5oKSBzY2hlbWFwZy5oIHN5c3RlbV9ma19pbmZvLmgKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRl eCAxODAzMTk0ZGI5Li4wZWE1ODIzOWI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtNzQ2LDYg Kzc0Niw5IEBAIEluc2VydFBnQXR0cmlidXRlVHVwbGVzKFJlbGF0aW9uIHBnX2F0dHJpYnV0 ZV9yZWwsCiAJCXNsb3Rbc2xvdENvdW50XS0+dHRzX3ZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0 ZV9hdHRnZW5lcmF0ZWQgLSAxXSA9IENoYXJHZXREYXR1bShhdHRycy0+YXR0Z2VuZXJhdGVk KTsKIAkJc2xvdFtzbG90Q291bnRdLT50dHNfdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0 dGlzZHJvcHBlZCAtIDFdID0gQm9vbEdldERhdHVtKGF0dHJzLT5hdHRpc2Ryb3BwZWQpOwog CQlzbG90W3Nsb3RDb3VudF0tPnR0c192YWx1ZXNbQW51bV9wZ19hdHRyaWJ1dGVfYXR0aXNs b2NhbCAtIDFdID0gQm9vbEdldERhdHVtKGF0dHJzLT5hdHRpc2xvY2FsKTsKKwkJc2xvdFtz bG90Q291bnRdLT50dHNfdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGNlayAtIDFdID0g T2JqZWN0SWRHZXREYXR1bShhdHRycy0+YXR0Y2VrKTsKKwkJc2xvdFtzbG90Q291bnRdLT50 dHNfdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dHJlYWx0eXBpZCAtIDFdID0gT2JqZWN0 SWRHZXREYXR1bShhdHRycy0+YXR0cmVhbHR5cGlkKTsKKwkJc2xvdFtzbG90Q291bnRdLT50 dHNfdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGVuY2FsZyAtIDFdID0gSW50MTZHZXRE YXR1bShhdHRycy0+YXR0ZW5jYWxnKTsKIAkJc2xvdFtzbG90Q291bnRdLT50dHNfdmFsdWVz W0FudW1fcGdfYXR0cmlidXRlX2F0dGluaGNvdW50IC0gMV0gPSBJbnQzMkdldERhdHVtKGF0 dHJzLT5hdHRpbmhjb3VudCk7CiAJCXNsb3Rbc2xvdENvdW50XS0+dHRzX3ZhbHVlc1tBbnVt X3BnX2F0dHJpYnV0ZV9hdHRjb2xsYXRpb24gLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oYXR0 cnMtPmF0dGNvbGxhdGlvbik7CiAJCWlmIChhdHRvcHRpb25zICYmIGF0dG9wdGlvbnNbbmF0 dHNdICE9IChEYXR1bSkgMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAyMzMzYWFl NDY3Li45NDU3ODM1MGJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVw YXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC01MCw3ICs1 MCw2IEBAIHN0YXRpYyB2b2lkIEluaXRRdWVyeUhhc2hUYWJsZSh2b2lkKTsKIHN0YXRpYyBQ YXJhbUxpc3RJbmZvIEV2YWx1YXRlUGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJ CQkJCVByZXBhcmVkU3RhdGVtZW50ICpwc3RtdCwgTGlzdCAqcGFyYW1zLAogCQkJCQkJCQkJ RVN0YXRlICplc3RhdGUpOwotc3RhdGljIERhdHVtIGJ1aWxkX3JlZ3R5cGVfYXJyYXkoT2lk ICpwYXJhbV90eXBlcywgaW50IG51bV9wYXJhbXMpOwogCiAvKgogICogSW1wbGVtZW50cyB0 aGUgJ1BSRVBBUkUnIHV0aWxpdHkgc3RhdGVtZW50LgpAQCAtNjIsNiArNjEsOCBAQCBQcmVw YXJlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlU3RtdCAqc3RtdCwKIAlSYXdT dG10ICAgICpyYXdzdG10OwogCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CiAJT2lk CQkgICAqYXJndHlwZXMgPSBOVUxMOworCU9pZAkJICAgKmFyZ29yaWd0YmxzID0gTlVMTDsK KwlBdHRyTnVtYmVyICphcmdvcmlnY29scyA9IE5VTEw7CiAJaW50CQkJbmFyZ3M7CiAJTGlz dAkgICAqcXVlcnlfbGlzdDsKIApAQCAtMTA4LDYgKzEwOSw5IEBAIFByZXBhcmVRdWVyeShQ YXJzZVN0YXRlICpwc3RhdGUsIFByZXBhcmVTdG10ICpzdG10LAogCiAJCQlhcmd0eXBlc1tp KytdID0gdG9pZDsKIAkJfQorCisJCWFyZ29yaWd0YmxzID0gKE9pZCAqKSBwYWxsb2MwKG5h cmdzICogc2l6ZW9mKE9pZCkpOworCQlhcmdvcmlnY29scyA9IChBdHRyTnVtYmVyICopIHBh bGxvYzAobmFyZ3MgKiBzaXplb2YoQXR0ck51bWJlcikpOwogCX0KIAogCS8qCkBAIC0xMTcs NyArMTIxLDkgQEAgUHJlcGFyZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUHJlcGFyZVN0 bXQgKnN0bXQsCiAJICogUmV3cml0ZSB0aGUgcXVlcnkuIFRoZSByZXN1bHQgY291bGQgYmUg MCwgMSwgb3IgbWFueSBxdWVyaWVzLgogCSAqLwogCXF1ZXJ5X2xpc3QgPSBwZ19hbmFseXpl X2FuZF9yZXdyaXRlX3ZhcnBhcmFtcyhyYXdzdG10LCBwc3RhdGUtPnBfc291cmNldGV4dCwK LQkJCQkJCQkJCQkJCSAgJmFyZ3R5cGVzLCAmbmFyZ3MsIE5VTEwpOworCQkJCQkJCQkJCQkJ ICAmYXJndHlwZXMsICZuYXJncywKKwkJCQkJCQkJCQkJCSAgJmFyZ29yaWd0YmxzLCAmYXJn b3JpZ2NvbHMsCisJCQkJCQkJCQkJCQkgIE5VTEwpOwogCiAJLyogRmluaXNoIGZpbGxpbmcg aW4gdGhlIENhY2hlZFBsYW5Tb3VyY2UgKi8KIAlDb21wbGV0ZUNhY2hlZFBsYW4ocGxhbnNv dXJjZSwKQEAgLTEyNSw2ICsxMzEsOCBAQCBQcmVwYXJlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBQcmVwYXJlU3RtdCAqc3RtdCwKIAkJCQkJICAgTlVMTCwKIAkJCQkJICAgYXJndHlw ZXMsCiAJCQkJCSAgIG5hcmdzLAorCQkJCQkgICBhcmdvcmlndGJscywKKwkJCQkJICAgYXJn b3JpZ2NvbHMsCiAJCQkJCSAgIE5VTEwsCiAJCQkJCSAgIE5VTEwsCiAJCQkJCSAgIENVUlNP Ul9PUFRfUEFSQUxMRUxfT0ssCS8qIGFsbG93IHBhcmFsbGVsIG1vZGUgKi8KQEAgLTY4Myw5 ICs2OTEsMTEgQEAgcGdfcHJlcGFyZWRfc3RhdGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwcmVwYXJlZF9xdWVyaWVzKTsKIAkJd2hpbGUg KChwcmVwX3N0bXQgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKIAkJ eworCQkJaW50CQkJbnVtX3BhcmFtcyA9IHByZXBfc3RtdC0+cGxhbnNvdXJjZS0+bnVtX3Bh cmFtczsKIAkJCVR1cGxlRGVzYwlyZXN1bHRfZGVzYzsKLQkJCURhdHVtCQl2YWx1ZXNbOF07 Ci0JCQlib29sCQludWxsc1s4XTsKKwkJCURhdHVtCSAgICp0bXBfYXJ5OworCQkJRGF0dW0J CXZhbHVlc1sxMF07CisJCQlib29sCQludWxsc1sxMF07CiAKIAkJCXJlc3VsdF9kZXNjID0g cHJlcF9zdG10LT5wbGFuc291cmNlLT5yZXN1bHREZXNjOwogCkBAIC02OTQsMjUgKzcwNCwz OCBAQCBwZ19wcmVwYXJlZF9zdGF0ZW1lbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCXZhbHVl c1swXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0ocHJlcF9zdG10LT5zdG10X25hbWUpOwogCQkJ dmFsdWVzWzFdID0gQ1N0cmluZ0dldFRleHREYXR1bShwcmVwX3N0bXQtPnBsYW5zb3VyY2Ut PnF1ZXJ5X3N0cmluZyk7CiAJCQl2YWx1ZXNbMl0gPSBUaW1lc3RhbXBUekdldERhdHVtKHBy ZXBfc3RtdC0+cHJlcGFyZV90aW1lKTsKLQkJCXZhbHVlc1szXSA9IGJ1aWxkX3JlZ3R5cGVf YXJyYXkocHJlcF9zdG10LT5wbGFuc291cmNlLT5wYXJhbV90eXBlcywKLQkJCQkJCQkJCQkJ cHJlcF9zdG10LT5wbGFuc291cmNlLT5udW1fcGFyYW1zKTsKKworCQkJdG1wX2FyeSA9IChE YXR1bSAqKSBwYWxsb2MobnVtX3BhcmFtcyAqIHNpemVvZihEYXR1bSkpOworCQkJZm9yIChp bnQgaSA9IDA7IGkgPCBudW1fcGFyYW1zOyBpKyspCisJCQkJdG1wX2FyeVtpXSA9IE9iamVj dElkR2V0RGF0dW0ocHJlcF9zdG10LT5wbGFuc291cmNlLT5wYXJhbV90eXBlc1tpXSk7CisJ CQl2YWx1ZXNbM10gPSBQb2ludGVyR2V0RGF0dW0oY29uc3RydWN0X2FycmF5X2J1aWx0aW4o dG1wX2FyeSwgbnVtX3BhcmFtcywgUkVHVFlQRU9JRCkpOworCisJCQl0bXBfYXJ5ID0gKERh dHVtICopIHBhbGxvYyhudW1fcGFyYW1zICogc2l6ZW9mKERhdHVtKSk7CisJCQlmb3IgKGlu dCBpID0gMDsgaSA8IG51bV9wYXJhbXM7IGkrKykKKwkJCQl0bXBfYXJ5W2ldID0gT2JqZWN0 SWRHZXREYXR1bShwcmVwX3N0bXQtPnBsYW5zb3VyY2UtPnBhcmFtX29yaWd0YmxzW2ldKTsK KwkJCXZhbHVlc1s0XSA9IFBvaW50ZXJHZXREYXR1bShjb25zdHJ1Y3RfYXJyYXlfYnVpbHRp bih0bXBfYXJ5LCBudW1fcGFyYW1zLCBSRUdDTEFTU09JRCkpOworCisJCQl0bXBfYXJ5ID0g KERhdHVtICopIHBhbGxvYyhudW1fcGFyYW1zICogc2l6ZW9mKERhdHVtKSk7CisJCQlmb3Ig KGludCBpID0gMDsgaSA8IG51bV9wYXJhbXM7IGkrKykKKwkJCQl0bXBfYXJ5W2ldID0gSW50 MTZHZXREYXR1bShwcmVwX3N0bXQtPnBsYW5zb3VyY2UtPnBhcmFtX29yaWdjb2xzW2ldKTsK KwkJCXZhbHVlc1s1XSA9IFBvaW50ZXJHZXREYXR1bShjb25zdHJ1Y3RfYXJyYXlfYnVpbHRp bih0bXBfYXJ5LCBudW1fcGFyYW1zLCBJTlQyT0lEKSk7CisKIAkJCWlmIChyZXN1bHRfZGVz YykKIAkJCXsKLQkJCQlPaWQJCSAgICpyZXN1bHRfdHlwZXM7Ci0KLQkJCQlyZXN1bHRfdHlw ZXMgPSAoT2lkICopIHBhbGxvYyhyZXN1bHRfZGVzYy0+bmF0dHMgKiBzaXplb2YoT2lkKSk7 CisJCQkJdG1wX2FyeSA9IChEYXR1bSAqKSBwYWxsb2MocmVzdWx0X2Rlc2MtPm5hdHRzICog c2l6ZW9mKERhdHVtKSk7CiAJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHRfZGVzYy0+ bmF0dHM7IGkrKykKLQkJCQkJcmVzdWx0X3R5cGVzW2ldID0gcmVzdWx0X2Rlc2MtPmF0dHJz W2ldLmF0dHR5cGlkOwotCQkJCXZhbHVlc1s0XSA9IGJ1aWxkX3JlZ3R5cGVfYXJyYXkocmVz dWx0X3R5cGVzLCByZXN1bHRfZGVzYy0+bmF0dHMpOworCQkJCQl0bXBfYXJ5W2ldID0gT2Jq ZWN0SWRHZXREYXR1bShyZXN1bHRfZGVzYy0+YXR0cnNbaV0uYXR0dHlwaWQpOworCQkJCXZh bHVlc1s2XSA9IFBvaW50ZXJHZXREYXR1bShjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbih0bXBf YXJ5LCByZXN1bHRfZGVzYy0+bmF0dHMsIFJFR1RZUEVPSUQpKTsKIAkJCX0KIAkJCWVsc2UK IAkJCXsKIAkJCQkvKiBubyByZXN1bHQgZGVzY3JpcHRvciAoZm9yIGV4YW1wbGUsIERNTCBz dGF0ZW1lbnQpICovCi0JCQkJbnVsbHNbNF0gPSB0cnVlOworCQkJCW51bGxzWzZdID0gdHJ1 ZTsKIAkJCX0KLQkJCXZhbHVlc1s1XSA9IEJvb2xHZXREYXR1bShwcmVwX3N0bXQtPmZyb21f c3FsKTsKLQkJCXZhbHVlc1s2XSA9IEludDY0R2V0RGF0dW1GYXN0KHByZXBfc3RtdC0+cGxh bnNvdXJjZS0+bnVtX2dlbmVyaWNfcGxhbnMpOwotCQkJdmFsdWVzWzddID0gSW50NjRHZXRE YXR1bUZhc3QocHJlcF9zdG10LT5wbGFuc291cmNlLT5udW1fY3VzdG9tX3BsYW5zKTsKKwor CQkJdmFsdWVzWzddID0gQm9vbEdldERhdHVtKHByZXBfc3RtdC0+ZnJvbV9zcWwpOworCQkJ dmFsdWVzWzhdID0gSW50NjRHZXREYXR1bUZhc3QocHJlcF9zdG10LT5wbGFuc291cmNlLT5u dW1fZ2VuZXJpY19wbGFucyk7CisJCQl2YWx1ZXNbOV0gPSBJbnQ2NEdldERhdHVtRmFzdChw cmVwX3N0bXQtPnBsYW5zb3VyY2UtPm51bV9jdXN0b21fcGxhbnMpOwogCiAJCQl0dXBsZXN0 b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJ CQkJCQkgdmFsdWVzLCBudWxscyk7CkBAIC03MjEsMjQgKzc0NCwzIEBAIHBnX3ByZXBhcmVk X3N0YXRlbWVudChQR19GVU5DVElPTl9BUkdTKQogCiAJcmV0dXJuIChEYXR1bSkgMDsKIH0K LQotLyoKLSAqIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiB0YWtlcyBhIEMgYXJyYXkgb2YgT2lk cywgYW5kIHJldHVybnMgYSBEYXR1bQotICogcG9pbnRpbmcgdG8gYSBvbmUtZGltZW5zaW9u YWwgUG9zdGdyZXMgYXJyYXkgb2YgcmVndHlwZXMuIEFuIGVtcHR5Ci0gKiBhcnJheSBpcyBy ZXR1cm5lZCBhcyBhIHplcm8tZWxlbWVudCBhcnJheSwgbm90IE5VTEwuCi0gKi8KLXN0YXRp YyBEYXR1bQotYnVpbGRfcmVndHlwZV9hcnJheShPaWQgKnBhcmFtX3R5cGVzLCBpbnQgbnVt X3BhcmFtcykKLXsKLQlEYXR1bQkgICAqdG1wX2FyeTsKLQlBcnJheVR5cGUgICpyZXN1bHQ7 Ci0JaW50CQkJaTsKLQotCXRtcF9hcnkgPSAoRGF0dW0gKikgcGFsbG9jKG51bV9wYXJhbXMg KiBzaXplb2YoRGF0dW0pKTsKLQotCWZvciAoaSA9IDA7IGkgPCBudW1fcGFyYW1zOyBpKysp Ci0JCXRtcF9hcnlbaV0gPSBPYmplY3RJZEdldERhdHVtKHBhcmFtX3R5cGVzW2ldKTsKLQot CXJlc3VsdCA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKHRtcF9hcnksIG51bV9wYXJhbXMs IFJFR1RZUEVPSUQpOwotCXJldHVybiBQb2ludGVyR2V0RGF0dW0ocmVzdWx0KTsKLX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMmRlMGViYWNlYy4uYTBhOWM2YjU5YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2F0dHJkZWYuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X2NvbGVuY2tleS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19k ZXBlbmQuaCIKQEAgLTkzMSw2ICs5MzIsNzYgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3Rt dCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAkJaWYgKGNvbERlZi0+Y29t cHJlc3Npb24pCiAJCQlhdHRyLT5hdHRjb21wcmVzc2lvbiA9IEdldEF0dHJpYnV0ZUNvbXBy ZXNzaW9uKGF0dHItPmF0dHR5cGlkLAogCQkJCQkJCQkJCQkJCQkgICBjb2xEZWYtPmNvbXBy ZXNzaW9uKTsKKworCQlpZiAoY29sRGVmLT5lbmNyeXB0aW9uKQorCQl7CisJCQlMaXN0Q2Vs bCAgICpsYzsKKwkJCWNoYXIJICAgKmNlayA9IE5VTEw7CisJCQlPaWQJCQljZWtvaWQ7CisJ CQlib29sCQllbmNkZXQgPSBmYWxzZTsKKwkJCWludAkJCWFsZyA9IFBHX0NFS19BRUFEX0FF U18xMjhfQ0JDX0hNQUNfU0hBXzI1NjsKKworCQkJZm9yZWFjaChsYywgY29sRGVmLT5lbmNy eXB0aW9uKQorCQkJeworCQkJCURlZkVsZW0gICAgKmVsID0gbGZpcnN0X25vZGUoRGVmRWxl bSwgbGMpOworCisJCQkJaWYgKHN0cmNtcChlbC0+ZGVmbmFtZSwgImNvbHVtbl9lbmNyeXB0 aW9uX2tleSIpID09IDApCisJCQkJCWNlayA9IHN0clZhbChsaW5pdGlhbChjYXN0Tm9kZShU eXBlTmFtZSwgZWwtPmFyZyktPm5hbWVzKSk7CisJCQkJZWxzZSBpZiAoc3RyY21wKGVsLT5k ZWZuYW1lLCAiZW5jcnlwdGlvbl90eXBlIikgPT0gMCkKKwkJCQl7CisJCQkJCWNoYXIJICAg KnZhbCA9IHN0clZhbChsaW5pdGlhbChjYXN0Tm9kZShUeXBlTmFtZSwgZWwtPmFyZyktPm5h bWVzKSk7CisKKwkJCQkJaWYgKHN0cmNtcCh2YWwsICJkZXRlcm1pbmlzdGljIikgPT0gMCkK KwkJCQkJCWVuY2RldCA9IHRydWU7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCh2YWwsICJyYW5k b21pemVkIikgPT0gMCkKKwkJCQkJCWVuY2RldCA9IGZhbHNlOworCQkJCQllbHNlCisJCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAorCQkJCQkJCQllcnJtc2coInVucmVjb2duaXplZCBlbmNyeXB0aW9u IHR5cGU6ICVzIiwgdmFsKSk7CisJCQkJfQorCQkJCWVsc2UgaWYgKHN0cmNtcChlbC0+ZGVm bmFtZSwgImFsZ29yaXRobSIpID09IDApCisJCQkJeworCQkJCQljaGFyCSAgICp2YWwgPSBz dHJWYWwoZWwtPmFyZyk7CisKKwkJCQkJaWYgKHN0cmNtcCh2YWwsICJBRUFEX0FFU18xMjhf Q0JDX0hNQUNfU0hBXzI1NiIpID09IDApCisJCQkJCQlhbGcgPSBQR19DRUtfQUVBRF9BRVNf MTI4X0NCQ19ITUFDX1NIQV8yNTY7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCh2YWwsICJBRUFE X0FFU18xOTJfQ0JDX0hNQUNfU0hBXzM4NCIpID09IDApCisJCQkJCQlhbGcgPSBQR19DRUtf QUVBRF9BRVNfMTkyX0NCQ19ITUFDX1NIQV8zODQ7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCh2 YWwsICJBRUFEX0FFU18yNTZfQ0JDX0hNQUNfU0hBXzM4NCIpID09IDApCisJCQkJCQlhbGcg PSBQR19DRUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV8zODQ7CisJCQkJCWVsc2UgaWYg KHN0cmNtcCh2YWwsICJBRUFEX0FFU18yNTZfQ0JDX0hNQUNfU0hBXzUxMiIpID09IDApCisJ CQkJCQlhbGcgPSBQR19DRUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV81MTI7CisJCQkJ CWVsc2UKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkJCWVycm1zZygidW5yZWNvZ25pemVk IGVuY3J5cHRpb24gYWxnb3JpdGhtOiAlcyIsIHZhbCkpOworCQkJCX0KKwkJCQllbHNlCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJCQllcnJtc2coInVucmVjb2duaXplZCBjb2x1bW4gZW5j cnlwdGlvbiBwYXJhbWV0ZXI6ICVzIiwgZWwtPmRlZm5hbWUpKTsKKwkJCX0KKworCQkJaWYg KCFjZWspCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX0NPTFVNTl9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygiY29sdW1uIGVuY3J5cHRp b24ga2V5IG11c3QgYmUgc3BlY2lmaWVkIikpOworCisJCQljZWtvaWQgPSBHZXRTeXNDYWNo ZU9pZDEoQ0VLTkFNRSwgQW51bV9wZ19jb2xlbmNrZXlfb2lkLCBQb2ludGVyR2V0RGF0dW0o Y2VrKSk7CisJCQlpZiAoIWNla29pZCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkJZXJybXNnKCJjb2x1bW4g ZW5jcnlwdGlvbiBrZXkgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgY2VrKSk7CisKKwkJCWF0 dHItPmF0dGNlayA9IGNla29pZDsKKwkJCWF0dHItPmF0dHJlYWx0eXBpZCA9IGF0dHItPmF0 dHR5cGlkOworCQkJaWYgKGVuY2RldCkKKwkJCQlhdHRyLT5hdHR0eXBpZCA9IFBHX0VOQ1JZ UFRFRF9ERVRPSUQ7CisJCQllbHNlCisJCQkJYXR0ci0+YXR0dHlwaWQgPSBQR19FTkNSWVBU RURfUk5ET0lEOworCQkJYXR0ci0+YXR0ZW5jYWxnID0gYWxnOworCQl9CiAJfQogCiAJLyoK QEAgLTY4MjksNiArNjkwMCw5IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlhdHRyaWJ1dGUuYXR0Z2Vu ZXJhdGVkID0gY29sRGVmLT5nZW5lcmF0ZWQ7CiAJYXR0cmlidXRlLmF0dGlzZHJvcHBlZCA9 IGZhbHNlOwogCWF0dHJpYnV0ZS5hdHRpc2xvY2FsID0gY29sRGVmLT5pc19sb2NhbDsKKwlh dHRyaWJ1dGUuYXR0Y2VrID0gMDsgLy8gVE9ETworCWF0dHJpYnV0ZS5hdHRyZWFsdHlwaWQg PSAwOyAvLyBUT0RPCisJYXR0cmlidXRlLmF0dGVuY2FsZyA9IDA7IC8vIFRPRE8KIAlhdHRy aWJ1dGUuYXR0aW5oY291bnQgPSBjb2xEZWYtPmluaGNvdW50OwogCWF0dHJpYnV0ZS5hdHRj b2xsYXRpb24gPSBjb2xsT2lkOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDI5YmMyNjY2OWIu LmNkZTViMGUwODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0yMjc5LDYgKzIyNzksOCBAQCBf U1BJX3ByZXBhcmVfcGxhbihjb25zdCBjaGFyICpzcmMsIFNQSVBsYW5QdHIgcGxhbikKIAkJ CQkJCSAgIE5VTEwsCiAJCQkJCQkgICBwbGFuLT5hcmd0eXBlcywKIAkJCQkJCSAgIHBsYW4t Pm5hcmdzLAorCQkJCQkJICAgTlVMTCwKKwkJCQkJCSAgIE5VTEwsCiAJCQkJCQkgICBwbGFu LT5wYXJzZXJTZXR1cCwKIAkJCQkJCSAgIHBsYW4tPnBhcnNlclNldHVwQXJnLAogCQkJCQkJ ICAgcGxhbi0+Y3Vyc29yX29wdGlvbnMsCkBAIC0yNTE2LDYgKzI1MTgsOCBAQCBfU1BJX2V4 ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpv cHRpb25zLAogCQkJCQkJCSAgIE5VTEwsCiAJCQkJCQkJICAgcGxhbi0+YXJndHlwZXMsCiAJ CQkJCQkJICAgcGxhbi0+bmFyZ3MsCisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBOVUxM LAogCQkJCQkJCSAgIHBsYW4tPnBhcnNlclNldHVwLAogCQkJCQkJCSAgIHBsYW4tPnBhcnNl clNldHVwQXJnLAogCQkJCQkJCSAgIHBsYW4tPmN1cnNvcl9vcHRpb25zLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYwppbmRleCA1MWQ2MzBmYTg5Li5jOTAxY2ZiYjg2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYwpAQCAtMzU1NSw2ICszNTU1LDcgQEAgX2NvcHlDb2x1bW5EZWYoY29uc3Qg Q29sdW1uRGVmICpmcm9tKQogCUNPUFlfU1RSSU5HX0ZJRUxEKGNvbG5hbWUpOwogCUNPUFlf Tk9ERV9GSUVMRCh0eXBlTmFtZSk7CiAJQ09QWV9TVFJJTkdfRklFTEQoY29tcHJlc3Npb24p OworCUNPUFlfTk9ERV9GSUVMRChlbmNyeXB0aW9uKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChp bmhjb3VudCk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaXNfbG9jYWwpOwogCUNPUFlfU0NBTEFS X0ZJRUxEKGlzX25vdF9udWxsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2Vx dWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBlNzQ3 ZTE2NjdkLi42OWEzYWRlZTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVh bGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0zMDQ1 LDYgKzMwNDUsNyBAQCBfZXF1YWxDb2x1bW5EZWYoY29uc3QgQ29sdW1uRGVmICphLCBjb25z dCBDb2x1bW5EZWYgKmIpCiAJQ09NUEFSRV9TVFJJTkdfRklFTEQoY29sbmFtZSk7CiAJQ09N UEFSRV9OT0RFX0ZJRUxEKHR5cGVOYW1lKTsKIAlDT01QQVJFX1NUUklOR19GSUVMRChjb21w cmVzc2lvbik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGVuY3J5cHRpb24pOwogCUNPTVBBUkVf U0NBTEFSX0ZJRUxEKGluaGNvdW50KTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChpc19sb2Nh bCk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaXNfbm90X251bGwpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYwppbmRleCA0Y2IxNzQ0ZGE2Li44ZmJlMGY1ZjhmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYwpAQCAtNDI4OCw2ICs0Mjg4LDggQEAgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxr ZXIoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJaWYgKHdhbGtlcihjb2xk ZWYtPmNvbXByZXNzaW9uLCBjb250ZXh0KSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYg KHdhbGtlcihjb2xkZWYtPmVuY3J5cHRpb24sIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKIAkJCQlpZiAod2Fsa2VyKGNvbGRlZi0+cmF3X2RlZmF1bHQsIGNvbnRleHQpKQogCQkJ CQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAod2Fsa2VyKGNvbGRlZi0+Y29sbENsYXVzZSwgY29u dGV4dCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA0MzE1YzUzMDgwLi43NzdlYWM3ZjYy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTMxMTYsNiArMzExNiw3IEBAIF9vdXRDb2x1 bW5EZWYoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbHVtbkRlZiAqbm9kZSkKIAlXUklURV9T VFJJTkdfRklFTEQoY29sbmFtZSk7CiAJV1JJVEVfTk9ERV9GSUVMRCh0eXBlTmFtZSk7CiAJ V1JJVEVfU1RSSU5HX0ZJRUxEKGNvbXByZXNzaW9uKTsKKwlXUklURV9OT0RFX0ZJRUxEKGVu Y3J5cHRpb24pOwogCVdSSVRFX0lOVF9GSUVMRChpbmhjb3VudCk7CiAJV1JJVEVfQk9PTF9G SUVMRChpc19sb2NhbCk7CiAJV1JJVEVfQk9PTF9GSUVMRChpc19ub3RfbnVsbCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL2FuYWx5emUuYwppbmRleCAxYmNiODc1NTA3Li5lZGM5ZmI0YTI4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMKQEAgLTE0NSw2ICsxNDUsNyBAQCBwYXJzZV9hbmFseXplX2ZpeGVkcGFy YW1zKFJhd1N0bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIFF1ZXJ5 ICoKIHBhcnNlX2FuYWx5emVfdmFycGFyYW1zKFJhd1N0bXQgKnBhcnNlVHJlZSwgY29uc3Qg Y2hhciAqc291cmNlVGV4dCwKIAkJCQkJCU9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVtUGFy YW1zLAorCQkJCQkJT2lkICoqcGFyYW1PcmlnVGJscywgQXR0ck51bWJlciAqKnBhcmFtT3Jp Z0NvbHMsCiAJCQkJCQlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKIHsKIAlQYXJzZVN0 YXRlICpwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CkBAIC0xNTUsNyArMTU2LDcg QEAgcGFyc2VfYW5hbHl6ZV92YXJwYXJhbXMoUmF3U3RtdCAqcGFyc2VUcmVlLCBjb25zdCBj aGFyICpzb3VyY2VUZXh0LAogCiAJcHN0YXRlLT5wX3NvdXJjZXRleHQgPSBzb3VyY2VUZXh0 OwogCi0Jc2V0dXBfcGFyc2VfdmFyaWFibGVfcGFyYW1ldGVycyhwc3RhdGUsIHBhcmFtVHlw ZXMsIG51bVBhcmFtcyk7CisJc2V0dXBfcGFyc2VfdmFyaWFibGVfcGFyYW1ldGVycyhwc3Rh dGUsIHBhcmFtVHlwZXMsIG51bVBhcmFtcywgcGFyYW1PcmlnVGJscywgcGFyYW1PcmlnQ29s cyk7CiAKIAlwc3RhdGUtPnBfcXVlcnlFbnYgPSBxdWVyeUVudjsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK aW5kZXggOTY5YzljMTU4Zi4uYTkxOGVhZjQyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01OTYs NiArNTk2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPglU YWJsZUNvbnN0cmFpbnQgVGFibGVMaWtlQ2xhdXNlCiAldHlwZSA8aXZhbD4JVGFibGVMaWtl T3B0aW9uTGlzdCBUYWJsZUxpa2VPcHRpb24KICV0eXBlIDxzdHI+CQljb2x1bW5fY29tcHJl c3Npb24gb3B0X2NvbHVtbl9jb21wcmVzc2lvbgorJXR5cGUgPGxpc3Q+CW9wdF9jb2x1bW5f ZW5jcnlwdGlvbgogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CiAldHlwZSA8bm9kZT4JQ29s Q29uc3RyYWludCBDb2xDb25zdHJhaW50RWxlbSBDb25zdHJhaW50QXR0cgogJXR5cGUgPGl2 YWw+CWtleV9tYXRjaApAQCAtMzc3OCwxMyArMzc3OSwxNCBAQCBUeXBlZFRhYmxlRWxlbWVu dDoKIAkJCXwgVGFibGVDb25zdHJhaW50CQkJCQl7ICQkID0gJDE7IH0KIAkJOwogCi1jb2x1 bW5EZWY6CUNvbElkIFR5cGVuYW1lIG9wdF9jb2x1bW5fY29tcHJlc3Npb24gY3JlYXRlX2dl bmVyaWNfb3B0aW9ucyBDb2xRdWFsTGlzdAorY29sdW1uRGVmOglDb2xJZCBUeXBlbmFtZSBv cHRfY29sdW1uX2NvbXByZXNzaW9uIG9wdF9jb2x1bW5fZW5jcnlwdGlvbiBjcmVhdGVfZ2Vu ZXJpY19vcHRpb25zIENvbFF1YWxMaXN0CiAJCQkJewogCQkJCQlDb2x1bW5EZWYgKm4gPSBt YWtlTm9kZShDb2x1bW5EZWYpOwogCiAJCQkJCW4tPmNvbG5hbWUgPSAkMTsKIAkJCQkJbi0+ dHlwZU5hbWUgPSAkMjsKIAkJCQkJbi0+Y29tcHJlc3Npb24gPSAkMzsKKwkJCQkJbi0+ZW5j cnlwdGlvbiA9ICQ0OwogCQkJCQluLT5pbmhjb3VudCA9IDA7CiAJCQkJCW4tPmlzX2xvY2Fs ID0gdHJ1ZTsKIAkJCQkJbi0+aXNfbm90X251bGwgPSBmYWxzZTsKQEAgLTM3OTMsOCArMzc5 NSw4IEBAIGNvbHVtbkRlZjoJQ29sSWQgVHlwZW5hbWUgb3B0X2NvbHVtbl9jb21wcmVzc2lv biBjcmVhdGVfZ2VuZXJpY19vcHRpb25zIENvbFF1YWxMCiAJCQkJCW4tPnJhd19kZWZhdWx0 ID0gTlVMTDsKIAkJCQkJbi0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOwogCQkJCQluLT5jb2xs T2lkID0gSW52YWxpZE9pZDsKLQkJCQkJbi0+ZmR3b3B0aW9ucyA9ICQ0OwotCQkJCQlTcGxp dENvbFF1YWxMaXN0KCQ1LCAmbi0+Y29uc3RyYWludHMsICZuLT5jb2xsQ2xhdXNlLAorCQkJ CQluLT5mZHdvcHRpb25zID0gJDU7CisJCQkJCVNwbGl0Q29sUXVhbExpc3QoJDYsICZuLT5j b25zdHJhaW50cywgJm4tPmNvbGxDbGF1c2UsCiAJCQkJCQkJCQkgeXlzY2FubmVyKTsKIAkJ CQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAtMzg1MSw2 ICszODUzLDExIEBAIG9wdF9jb2x1bW5fY29tcHJlc3Npb246CiAJCQl8IC8qRU1QVFkqLwkJ CQkJCQkJeyAkJCA9IE5VTEw7IH0KIAkJOwogCitvcHRfY29sdW1uX2VuY3J5cHRpb246CisJ CQlFTkNSWVBURUQgV0lUSCAnKCcgZGVmX2xpc3QgJyknCQkJeyAkJCA9ICQ0OyB9CisJCQl8 IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiBDb2xRdWFsTGlzdDoK IAkJCUNvbFF1YWxMaXN0IENvbENvbnN0cmFpbnQJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQy KTsgfQogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOSUw7IH0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9wYXJhbS5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3BhcmFtLmMKaW5kZXggZjY2OGFiZmNiMy4uYjQ1YmY0YzQzOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3BhcmFtLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3BhcmFtLmMKQEAgLTQ5LDYgKzQ5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg VmFyUGFyYW1TdGF0ZQogewogCU9pZAkJICAqKnBhcmFtVHlwZXM7CQkvKiBhcnJheSBvZiBw YXJhbWV0ZXIgdHlwZSBPSURzICovCiAJaW50CQkgICAqbnVtUGFyYW1zOwkJLyogbnVtYmVy IG9mIGFycmF5IGVudHJpZXMgKi8KKwlPaWQJCSAgKipwYXJhbU9yaWdUYmxzOwkvKiB1bmRl cmx5aW5nIHRhYmxlcyAoMCBpZiBub25lKSAqLworCUF0dHJOdW1iZXIgKipwYXJhbU9yaWdD b2xzOyAvKiB1bmRlcmx5aW5nIGNvbHVtbnMgKDAgaWYgbm9uZSkgKi8KIH0gVmFyUGFyYW1T dGF0ZTsKIAogc3RhdGljIE5vZGUgKmZpeGVkX3BhcmFtcmVmX2hvb2soUGFyc2VTdGF0ZSAq cHN0YXRlLCBQYXJhbVJlZiAqcHJlZik7CkBAIC01Niw2ICs1OCw3IEBAIHN0YXRpYyBOb2Rl ICp2YXJpYWJsZV9wYXJhbXJlZl9ob29rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYg KnByZWYpOwogc3RhdGljIE5vZGUgKnZhcmlhYmxlX2NvZXJjZV9wYXJhbV9ob29rKFBhcnNl U3RhdGUgKnBzdGF0ZSwgUGFyYW0gKnBhcmFtLAogCQkJCQkJCQkJCU9pZCB0YXJnZXRUeXBl SWQsIGludDMyIHRhcmdldFR5cGVNb2QsCiAJCQkJCQkJCQkJaW50IGxvY2F0aW9uKTsKK3N0 YXRpYyB2b2lkIHZhcmlhYmxlX3BhcmFtX2Fzc2lnbl9vcmlnX2hvb2soUGFyc2VTdGF0ZSAq cHN0YXRlLCBQYXJhbSAqcGFyYW0sIE9pZCBvcmlndGJsLCBBdHRyTnVtYmVyIG9yaWdjb2wp Owogc3RhdGljIGJvb2wgY2hlY2tfcGFyYW1ldGVyX3Jlc29sdXRpb25fd2Fsa2VyKE5vZGUg Km5vZGUsIFBhcnNlU3RhdGUgKnBzdGF0ZSk7CiBzdGF0aWMgYm9vbCBxdWVyeV9jb250YWlu c19leHRlcm5fcGFyYW1zX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIApA QCAtODEsMTUgKzg0LDE5IEBAIHNldHVwX3BhcnNlX2ZpeGVkX3BhcmFtZXRlcnMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogICovCiB2b2lkCiBzZXR1cF9wYXJzZV92YXJpYWJsZV9wYXJhbWV0 ZXJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKLQkJCQkJCQkJT2lkICoqcGFyYW1UeXBlcywgaW50 ICpudW1QYXJhbXMpCisJCQkJCQkJCU9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVtUGFyYW1z LAorCQkJCQkJCQlPaWQgKipwYXJhbU9yaWdUYmxzLCBBdHRyTnVtYmVyICoqcGFyYW1Pcmln Q29scykKIHsKIAlWYXJQYXJhbVN0YXRlICpwYXJzdGF0ZSA9IHBhbGxvYyhzaXplb2YoVmFy UGFyYW1TdGF0ZSkpOwogCiAJcGFyc3RhdGUtPnBhcmFtVHlwZXMgPSBwYXJhbVR5cGVzOwog CXBhcnN0YXRlLT5udW1QYXJhbXMgPSBudW1QYXJhbXM7CisJcGFyc3RhdGUtPnBhcmFtT3Jp Z1RibHMgPSBwYXJhbU9yaWdUYmxzOworCXBhcnN0YXRlLT5wYXJhbU9yaWdDb2xzID0gcGFy YW1PcmlnQ29sczsKIAlwc3RhdGUtPnBfcmVmX2hvb2tfc3RhdGUgPSAodm9pZCAqKSBwYXJz dGF0ZTsKIAlwc3RhdGUtPnBfcGFyYW1yZWZfaG9vayA9IHZhcmlhYmxlX3BhcmFtcmVmX2hv b2s7CiAJcHN0YXRlLT5wX2NvZXJjZV9wYXJhbV9ob29rID0gdmFyaWFibGVfY29lcmNlX3Bh cmFtX2hvb2s7CisJcHN0YXRlLT5wX3BhcmFtX2Fzc2lnbl9vcmlnX2hvb2sgPSB2YXJpYWJs ZV9wYXJhbV9hc3NpZ25fb3JpZ19ob29rOwogfQogCiAvKgpAQCAtMTQ1LDE0ICsxNTIsMzYg QEAgdmFyaWFibGVfcGFyYW1yZWZfaG9vayhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtUmVm ICpwcmVmKQogCXsKIAkJLyogTmVlZCB0byBlbmxhcmdlIHBhcmFtIGFycmF5ICovCiAJCWlm ICgqcGFyc3RhdGUtPnBhcmFtVHlwZXMpCisJCXsKIAkJCSpwYXJzdGF0ZS0+cGFyYW1UeXBl cyA9IChPaWQgKikgcmVwYWxsb2MoKnBhcnN0YXRlLT5wYXJhbVR5cGVzLAogCQkJCQkJCQkJ CQkJCSBwYXJhbW5vICogc2l6ZW9mKE9pZCkpOworCQkJaWYgKHBhcnN0YXRlLT5wYXJhbU9y aWdUYmxzKQorCQkJCSpwYXJzdGF0ZS0+cGFyYW1PcmlnVGJscyA9IHJlcGFsbG9jKCpwYXJz dGF0ZS0+cGFyYW1PcmlnVGJscywKKwkJCQkJCQkJCQkJCQlwYXJhbW5vICogc2l6ZW9mKE9p ZCkpOworCQkJaWYgKHBhcnN0YXRlLT5wYXJhbU9yaWdDb2xzKQorCQkJCSpwYXJzdGF0ZS0+ cGFyYW1PcmlnQ29scyA9IHJlcGFsbG9jKCpwYXJzdGF0ZS0+cGFyYW1PcmlnQ29scywKKwkJ CQkJCQkJCQkJCQlwYXJhbW5vICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKKwkJfQogCQllbHNl CisJCXsKIAkJCSpwYXJzdGF0ZS0+cGFyYW1UeXBlcyA9IChPaWQgKikgcGFsbG9jKHBhcmFt bm8gKiBzaXplb2YoT2lkKSk7CisJCQlpZiAocGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMpCisJ CQkJKnBhcnN0YXRlLT5wYXJhbU9yaWdUYmxzID0gcGFsbG9jKHBhcmFtbm8gKiBzaXplb2Yo T2lkKSk7CisJCQlpZiAocGFyc3RhdGUtPnBhcmFtT3JpZ0NvbHMpCisJCQkJKnBhcnN0YXRl LT5wYXJhbU9yaWdDb2xzID0gcGFsbG9jKHBhcmFtbm8gKiBzaXplb2YoQXR0ck51bWJlcikp OworCQl9CiAJCS8qIFplcm8gb3V0IHRoZSBwcmV2aW91c2x5LXVucmVmZXJlbmNlZCBzbG90 cyAqLwogCQlNZW1TZXQoKnBhcnN0YXRlLT5wYXJhbVR5cGVzICsgKnBhcnN0YXRlLT5udW1Q YXJhbXMsCiAJCQkgICAwLAogCQkJICAgKHBhcmFtbm8gLSAqcGFyc3RhdGUtPm51bVBhcmFt cykgKiBzaXplb2YoT2lkKSk7CisJCWlmIChwYXJzdGF0ZS0+cGFyYW1PcmlnVGJscykKKwkJ CU1lbVNldCgqcGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMgKyAqcGFyc3RhdGUtPm51bVBhcmFt cywKKwkJCQkgICAwLAorCQkJCSAgIChwYXJhbW5vIC0gKnBhcnN0YXRlLT5udW1QYXJhbXMp ICogc2l6ZW9mKE9pZCkpOworCQlpZiAocGFyc3RhdGUtPnBhcmFtT3JpZ0NvbHMpCisJCQlN ZW1TZXQoKnBhcnN0YXRlLT5wYXJhbU9yaWdDb2xzICsgKnBhcnN0YXRlLT5udW1QYXJhbXMs CisJCQkJICAgMCwKKwkJCQkgICAocGFyYW1ubyAtICpwYXJzdGF0ZS0+bnVtUGFyYW1zKSAq IHNpemVvZihBdHRyTnVtYmVyKSk7CiAJCSpwYXJzdGF0ZS0+bnVtUGFyYW1zID0gcGFyYW1u bzsKIAl9CiAKQEAgLTI2MCw2ICsyODksMTggQEAgdmFyaWFibGVfY29lcmNlX3BhcmFtX2hv b2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJhbSAqcGFyYW0sCiAJcmV0dXJuIE5VTEw7CiB9 CiAKK3N0YXRpYyB2b2lkCit2YXJpYWJsZV9wYXJhbV9hc3NpZ25fb3JpZ19ob29rKFBhcnNl U3RhdGUgKnBzdGF0ZSwgUGFyYW0gKnBhcmFtLCBPaWQgb3JpZ3RibCwgQXR0ck51bWJlciBv cmlnY29sKQoreworCVZhclBhcmFtU3RhdGUgKnBhcnN0YXRlID0gKFZhclBhcmFtU3RhdGUg KikgcHN0YXRlLT5wX3JlZl9ob29rX3N0YXRlOworCWludAkJCXBhcmFtbm8gPSBwYXJhbS0+ cGFyYW1pZDsKKworCWlmIChwYXJzdGF0ZS0+cGFyYW1PcmlnVGJscykKKwkJKCpwYXJzdGF0 ZS0+cGFyYW1PcmlnVGJscylbcGFyYW1ubyAtIDFdID0gb3JpZ3RibDsKKwlpZiAocGFyc3Rh dGUtPnBhcmFtT3JpZ0NvbHMpCisJCSgqcGFyc3RhdGUtPnBhcmFtT3JpZ0NvbHMpW3BhcmFt bm8gLSAxXSA9IG9yaWdjb2w7Cit9CisKIC8qCiAgKiBDaGVjayBmb3IgY29uc2lzdGVudCBh c3NpZ25tZW50IG9mIHZhcmlhYmxlIHBhcmFtZXRlcnMgYWZ0ZXIgY29tcGxldGlvbgogICog b2YgcGFyc2luZyB3aXRoIHBhcnNlX3ZhcmlhYmxlX3BhcmFtZXRlcnMuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggMmExZDQ0YjgxMy4uYjk2NDA4ODA0NCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAtNTk1LDYgKzU5NSwxMiBAQCB0cmFuc2Zv cm1Bc3NpZ25lZEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKG9yaWdfZXhwcikpKSk7CiAJfQogCisJaWYg KElzQShleHByLCBQYXJhbSkpCisJeworCQlpZiAocHN0YXRlLT5wX3BhcmFtX2Fzc2lnbl9v cmlnX2hvb2spCisJCQlwc3RhdGUtPnBfcGFyYW1fYXNzaWduX29yaWdfaG9vayhwc3RhdGUs IGNhc3ROb2RlKFBhcmFtLCBleHByKSwgUmVsYXRpb25HZXRSZWxpZChwc3RhdGUtPnBfdGFy Z2V0X3JlbGF0aW9uKSwgYXR0cm5vKTsKKwl9CisKIAlwc3RhdGUtPnBfZXhwcl9raW5kID0g c3ZfZXhwcl9raW5kOwogCiAJcmV0dXJuIGV4cHI7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXgg NDk1Y2JmMjAwNi4uODIxNjgyMzVlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtNzksNiAr NzksNyBAQAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMv cHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0 aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUg InV0aWxzL3RpbWVzdGFtcC5oIgogCkBAIC02ODAsNiArNjgxLDggQEAgcGdfYW5hbHl6ZV9h bmRfcmV3cml0ZV92YXJwYXJhbXMoUmF3U3RtdCAqcGFyc2V0cmVlLAogCQkJCQkJCQkgY29u c3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJCQkJCQkgT2lkICoqcGFyYW1UeXBlcywKIAkJ CQkJCQkJIGludCAqbnVtUGFyYW1zLAorCQkJCQkJCQkgT2lkICoqcGFyYW1PcmlnVGJscywK KwkJCQkJCQkJIEF0dHJOdW1iZXIgKipwYXJhbU9yaWdDb2xzLAogCQkJCQkJCQkgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CiAJUXVlcnkJICAgKnF1ZXJ5OwpAQCAtNjk0LDcg KzY5Nyw3IEBAIHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfdmFycGFyYW1zKFJhd1N0bXQgKnBh cnNldHJlZSwKIAkJUmVzZXRVc2FnZSgpOwogCiAJcXVlcnkgPSBwYXJzZV9hbmFseXplX3Zh cnBhcmFtcyhwYXJzZXRyZWUsIHF1ZXJ5X3N0cmluZywgcGFyYW1UeXBlcywgbnVtUGFyYW1z LAotCQkJCQkJCQkJcXVlcnlFbnYpOworCQkJCQkJCQkJcGFyYW1PcmlnVGJscywgcGFyYW1P cmlnQ29scywgcXVlcnlFbnYpOwogCiAJLyoKIAkgKiBDaGVjayBhbGwgcGFyYW1ldGVyIHR5 cGVzIGdvdCBkZXRlcm1pbmVkLgpAQCAtMTM3MSw2ICsxMzc0LDggQEAgZXhlY19wYXJzZV9t ZXNzYWdlKGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywJLyogc3RyaW5nIHRvIGV4ZWN1dGUg Ki8KIAlib29sCQlpc19uYW1lZDsKIAlib29sCQlzYXZlX2xvZ19zdGF0ZW1lbnRfc3RhdHMg PSBsb2dfc3RhdGVtZW50X3N0YXRzOwogCWNoYXIJCW1zZWNfc3RyWzMyXTsKKwlPaWQJCSAg ICpwYXJhbU9yaWdUYmxzID0gcGFsbG9jKG51bVBhcmFtcyAqIHNpemVvZihPaWQpKTsKKwlB dHRyTnVtYmVyICpwYXJhbU9yaWdDb2xzID0gcGFsbG9jKG51bVBhcmFtcyAqIHNpemVvZihB dHRyTnVtYmVyKSk7CiAKIAkvKgogCSAqIFJlcG9ydCBxdWVyeSB0byB2YXJpb3VzIG1vbml0 b3JpbmcgZmFjaWxpdGllcy4KQEAgLTE0OTEsNiArMTQ5Niw4IEBAIGV4ZWNfcGFyc2VfbWVz c2FnZShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCS8qIHN0cmluZyB0byBleGVjdXRlICov CiAJCQkJCQkJCQkJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCQkJCQkgICZwYXJh bVR5cGVzLAogCQkJCQkJCQkJCQkJCQkgICZudW1QYXJhbXMsCisJCQkJCQkJCQkJCQkJCSAg JnBhcmFtT3JpZ1RibHMsCisJCQkJCQkJCQkJCQkJCSAgJnBhcmFtT3JpZ0NvbHMsCiAJCQkJ CQkJCQkJCQkJCSAgTlVMTCk7CiAKIAkJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2Vk IGZvciBwYXJzaW5nICovCkBAIC0xNTIxLDYgKzE1MjgsOCBAQCBleGVjX3BhcnNlX21lc3Nh Z2UoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAkvKiBzdHJpbmcgdG8gZXhlY3V0ZSAqLwog CQkJCQkgICB1bm5hbWVkX3N0bXRfY29udGV4dCwKIAkJCQkJICAgcGFyYW1UeXBlcywKIAkJ CQkJICAgbnVtUGFyYW1zLAorCQkJCQkgICBwYXJhbU9yaWdUYmxzLAorCQkJCQkgICBwYXJh bU9yaWdDb2xzLAogCQkJCQkgICBOVUxMLAogCQkJCQkgICBOVUxMLAogCQkJCQkgICBDVVJT T1JfT1BUX1BBUkFMTEVMX09LLAkvKiBhbGxvdyBwYXJhbGxlbCBtb2RlICovCkBAIC0xODE4 LDYgKzE4MjcsMTYgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNz YWdlKQogCQkJZWxzZQogCQkJCXBmb3JtYXQgPSAwOwkvKiBkZWZhdWx0ID0gdGV4dCAqLwog CisJCQlpZiAoZ2V0X3R5cHR5cGUocHR5cGUpID09IFRZUFRZUEVfRU5DUllQVEVEKQorCQkJ eworCQkJCWlmIChwZm9ybWF0ICYgMHhGMCkKKwkJCQkJcGZvcm1hdCAmPSB+MHhGMDsKKwkJ CQllbHNlCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9Q Uk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCQkJCSBlcnJtc2coInBhcmFtZXRlciBjb3JyZXNw b25kcyB0byBhbiBlbmNyeXB0ZWQgY29sdW1uLCBidXQgdGhlIHBhcmFtZXRlciB2YWx1ZSB3 YXMgbm90IGVuY3J5cHRlZCIpKSk7CisJCQl9CisKIAkJCWlmIChwZm9ybWF0ID09IDApCS8q IHRleHQgbW9kZSAqLwogCQkJewogCQkJCU9pZAkJCXR5cGlucHV0OwpAQCAtMjYxNCw4ICsy NjMzLDQxIEBAIGV4ZWNfZGVzY3JpYmVfc3RhdGVtZW50X21lc3NhZ2UoY29uc3QgY2hhciAq c3RtdF9uYW1lKQogCWZvciAoaW50IGkgPSAwOyBpIDwgcHNyYy0+bnVtX3BhcmFtczsgaSsr KQogCXsKIAkJT2lkCQkJcHR5cGUgPSBwc3JjLT5wYXJhbV90eXBlc1tpXTsKKwkJT2lkCQkJ cGNla2lkID0gSW52YWxpZE9pZDsKKwkJaW50CQkJcGNla2FsZyA9IDA7CisJCWludDE2CQlw ZmxhZ3MgPSAwOworCisJCWlmIChnZXRfdHlwdHlwZShwdHlwZSkgPT0gVFlQVFlQRV9FTkNS WVBURUQpCisJCXsKKwkJCU9pZAkJCXBvcmlndGJsID0gcHNyYy0+cGFyYW1fb3JpZ3RibHNb aV07CisJCQlBdHRyTnVtYmVyCXBvcmlnY29sID0gcHNyYy0+cGFyYW1fb3JpZ2NvbHNbaV07 CisJCQlIZWFwVHVwbGUJdHA7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBvcmlnX2F0dDsKKwor CQkJaWYgKHBvcmlndGJsID09IEludmFsaWRPaWQgfHwgcG9yaWdjb2wgPD0gMCkKKwkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQkJIGVycm1zZygicGFyYW1ldGVyICVkIGNvcnJlc3BvbmRzIHRvIGFu IGVuY3J5cHRlZCBjb2x1bW4sIGJ1dCBhbiB1bmRlcmx5aW5nIHRhYmxlIGFuZCBjb2x1bW4g Y291bGQgbm90IGJlIGRldGVybWluZWQiLCBpKSkpOworCisJCQl0cCA9IFNlYXJjaFN5c0Nh Y2hlMihBVFROVU0sIE9iamVjdElkR2V0RGF0dW0ocG9yaWd0YmwpLCBJbnQxNkdldERhdHVt KHBvcmlnY29sKSk7CisJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQkJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRp b24gJXUiLCBwb3JpZ2NvbCwgcG9yaWd0YmwpOworCQkJb3JpZ19hdHQgPSAoRm9ybV9wZ19h dHRyaWJ1dGUpIEdFVFNUUlVDVCh0cCk7CisJCQlwdHlwZSA9IG9yaWdfYXR0LT5hdHRyZWFs dHlwaWQ7CisJCQlwY2VraWQgPSBvcmlnX2F0dC0+YXR0Y2VrOworCQkJcGNla2FsZyA9IG9y aWdfYXR0LT5hdHRlbmNhbGc7CisJCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCisJCQlpZiAo cHNyYy0+cGFyYW1fdHlwZXNbaV0gPT0gUEdfRU5DUllQVEVEX0RFVE9JRCkKKwkJCQlwZmxh Z3MgfD0gMHgwMTsKKworCQkJTWF5YmVTZW5kQ29sdW1uRW5jcnlwdGlvbktleU1lc3NhZ2Uo cGNla2lkKTsKKwkJfQogCiAJCXBxX3NlbmRpbnQzMigmcm93X2Rlc2NyaXB0aW9uX2J1Ziwg KGludCkgcHR5cGUpOworCQlwcV9zZW5kaW50MzIoJnJvd19kZXNjcmlwdGlvbl9idWYsIChp bnQpIHBjZWtpZCk7CisJCXBxX3NlbmRpbnQxNigmcm93X2Rlc2NyaXB0aW9uX2J1ZiwgcGNl a2FsZyk7CisJCXBxX3NlbmRpbnQxNigmcm93X2Rlc2NyaXB0aW9uX2J1ZiwgcGZsYWdzKTsK IAl9CiAJcHFfZW5kbWVzc2FnZV9yZXVzZSgmcm93X2Rlc2NyaXB0aW9uX2J1Zik7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCmluZGV4IGIwYzM3ZWRlODcuLjU2ODM3MzEx ODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwpAQCAtMzM4Nyw2ICszMzg3 LDcgQEAgY29uc3RydWN0X2FycmF5X2J1aWx0aW4oRGF0dW0gKmVsZW1zLCBpbnQgbmVsZW1z LCBPaWQgZWxtdHlwZSkKIAkJCWJyZWFrOwogCiAJCWNhc2UgT0lET0lEOgorCQljYXNlIFJF R0NMQVNTT0lEOgogCQljYXNlIFJFR1RZUEVPSUQ6CiAJCQllbG1sZW4gPSBzaXplb2YoT2lk KTsKIAkJCWVsbWJ5dmFsID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hl LmMKaW5kZXggMGQ2YTI5NTY3NC4uZjY4OTNkZDhiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGxhbmNhY2hlLmMKQEAgLTM0MCw2ICszNDAsOCBAQCBDb21wbGV0ZUNhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkgICBNZW1vcnlDb250ZXh0IHF1 ZXJ5dHJlZV9jb250ZXh0LAogCQkJCSAgIE9pZCAqcGFyYW1fdHlwZXMsCiAJCQkJICAgaW50 IG51bV9wYXJhbXMsCisJCQkJICAgT2lkICpwYXJhbV9vcmlndGJscywKKwkJCQkgICBBdHRy TnVtYmVyICpwYXJhbV9vcmlnY29scywKIAkJCQkgICBQYXJzZXJTZXR1cEhvb2sgcGFyc2Vy U2V0dXAsCiAJCQkJICAgdm9pZCAqcGFyc2VyU2V0dXBBcmcsCiAJCQkJICAgaW50IGN1cnNv cl9vcHRpb25zLApAQCAtNDE5LDYgKzQyMSwxNCBAQCBDb21wbGV0ZUNhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAl7CiAJCXBsYW5zb3VyY2UtPnBhcmFtX3R5 cGVzID0gKE9pZCAqKSBwYWxsb2MobnVtX3BhcmFtcyAqIHNpemVvZihPaWQpKTsKIAkJbWVt Y3B5KHBsYW5zb3VyY2UtPnBhcmFtX3R5cGVzLCBwYXJhbV90eXBlcywgbnVtX3BhcmFtcyAq IHNpemVvZihPaWQpKTsKKworCQlwbGFuc291cmNlLT5wYXJhbV9vcmlndGJscyA9IChPaWQg KikgcGFsbG9jMChudW1fcGFyYW1zICogc2l6ZW9mKE9pZCkpOworCQlpZiAocGFyYW1fb3Jp Z3RibHMpCisJCQltZW1jcHkocGxhbnNvdXJjZS0+cGFyYW1fb3JpZ3RibHMsIHBhcmFtX29y aWd0YmxzLCBudW1fcGFyYW1zICogc2l6ZW9mKE9pZCkpOworCisJCXBsYW5zb3VyY2UtPnBh cmFtX29yaWdjb2xzID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jMChudW1fcGFyYW1zICogc2l6 ZW9mKEF0dHJOdW1iZXIpKTsKKwkJaWYgKHBhcmFtX29yaWdjb2xzKQorCQkJbWVtY3B5KHBs YW5zb3VyY2UtPnBhcmFtX29yaWdjb2xzLCBwYXJhbV9vcmlnY29scywgbnVtX3BhcmFtcyAq IHNpemVvZihBdHRyTnVtYmVyKSk7CiAJfQogCWVsc2UKIAkJcGxhbnNvdXJjZS0+cGFyYW1f dHlwZXMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lz Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKaW5kZXggMTkx MmIxMjE0Ni4uNDY4YTY4NzNlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5j CkBAIC0yOSw3ICsyOSwxMCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aF9tZW1iZXJz LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX2Nhc3QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGVuY2tleS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfY29sZW5ja2V5ZGF0YS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf Y29sbGF0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xtYXN0ZXJrZXkuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2NvbnZlcnNpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCkBAIC0y NjcsNiArMjcwLDMzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVkZXNjIGNhY2hlaW5m b1tdID0gewogCQl9LAogCQkyNTYKIAl9LAorCXsKKwkJQ29sdW1uRW5jS2V5RGF0YVJlbGF0 aW9uSWQsIC8qIENFS0RBVEFPSUQgKi8KKwkJQ29sdW1uRW5jS2V5RGF0YU9pZEluZGV4SWQs CisJCTEsCisJCXsKKwkJCUFudW1fcGdfY29sZW5ja2V5ZGF0YV9vaWQsCisJCX0sCisJCTgK Kwl9LAorCXsKKwkJQ29sdW1uRW5jS2V5UmVsYXRpb25JZCwgLyogQ0VLTkFNRSAqLworCQlD b2x1bW5FbmNLZXlOYW1lSW5kZXhJZCwKKwkJMSwKKwkJeworCQkJQW51bV9wZ19jb2xlbmNr ZXlfY2VrbmFtZSwKKwkJfSwKKwkJOAorCX0sCisJeworCQlDb2x1bW5FbmNLZXlSZWxhdGlv bklkLCAvKiBDRUtPSUQgKi8KKwkJQ29sdW1uRW5jS2V5T2lkSW5kZXhJZCwKKwkJMSwKKwkJ eworCQkJQW51bV9wZ19jb2xlbmNrZXlfb2lkLAorCQl9LAorCQk4CisJfSwKIAl7T3BlcmF0 b3JDbGFzc1JlbGF0aW9uSWQsCS8qIENMQUFNTkFNRU5TUCAqLwogCQlPcGNsYXNzQW1OYW1l TnNwSW5kZXhJZCwKIAkJMywKQEAgLTI4OSw2ICszMTksMTUgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCX0sCiAJCTgKIAl9LAorCXsKKwkJ Q29sdW1uTWFzdGVyS2V5UmVsYXRpb25JZCwJLyogQ01LT0lEICovCisJCUNvbHVtbk1hc3Rl cktleU9pZEluZGV4SWQsCisJCTEsCisJCXsKKwkJCUFudW1fcGdfY29sbWFzdGVya2V5X29p ZCwKKwkJfSwKKwkJOAorCX0sCiAJe0NvbGxhdGlvblJlbGF0aW9uSWQsCQkvKiBDT0xMTkFN RUVOQ05TUCAqLwogCQlDb2xsYXRpb25OYW1lRW5jTnNwSW5kZXhJZCwKIAkJMywKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCmluZGV4IGM4NzFjYjcyN2QuLjk2Mjk0N2M3OGQgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpA QCAtODA2Niw2ICs4MDY2LDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJs ZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJaW50CQkJaV90eXBzdG9yYWdlOwog CWludAkJCWlfYXR0aWRlbnRpdHk7CiAJaW50CQkJaV9hdHRnZW5lcmF0ZWQ7CisJaW50CQkJ aV9hdHRjZWtuYW1lOwogCWludAkJCWlfYXR0aXNkcm9wcGVkOwogCWludAkJCWlfYXR0bGVu OwogCWludAkJCWlfYXR0YWxpZ247CkBAIC04MTc1LDE3ICs4MTc2LDI0IEBAIGdldFRhYmxl QXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVz KQogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTIwMDAwKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxLAotCQkJCQkJCSAiYS5hdHRnZW5lcmF0ZWRcbiIpOworCQkJCQkJCSAi YS5hdHRnZW5lcmF0ZWQsXG4iKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEs Ci0JCQkJCQkJICInJyBBUyBhdHRnZW5lcmF0ZWRcbiIpOworCQkJCQkJCSAiJycgQVMgYXR0 Z2VuZXJhdGVkLFxuIik7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDAp CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsCisJCQkJCQkJICIoU0VMRUNUIGNla25hbWUg RlJPTSBwZ19jb2xlbmNrZXkgY2VrIFdIRVJFIGNlay5vaWQgPSBhLmF0dGNlayApIEFTIGF0 dGNla25hbWVcbiIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwKKwkJCQkJ CQkgIk5VTEwgQVMgYXR0Y2VrbmFtZVxuIik7CiAKIAkvKiBuZWVkIGxlZnQgam9pbiB0byBw Z190eXBlIHRvIG5vdCBmYWlsIG9uIGRyb3BwZWQgY29sdW1ucyAuLi4gKi8KIAlhcHBlbmRQ UUV4cEJ1ZmZlcihxLAogCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9p ZFtdKSBBUyBzcmModGJsb2lkKVxuIgogCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfYXR0 cmlidXRlIGEgT04gKHNyYy50YmxvaWQgPSBhLmF0dHJlbGlkKSAiCiAJCQkJCSAgIkxFRlQg Sk9JTiBwZ19jYXRhbG9nLnBnX3R5cGUgdCAiCi0JCQkJCSAgIk9OIChhLmF0dHR5cGlkID0g dC5vaWQpXG4iCisJCQkJCSAgIk9OIChDQVNFIFdIRU4gYS5hdHRyZWFsdHlwaWQgPD4gMCBU SEVOIGEuYXR0cmVhbHR5cGlkIEVMU0UgYS5hdHR0eXBpZCBFTkQgPSB0Lm9pZClcbiIKIAkJ CQkJICAiV0hFUkUgYS5hdHRudW0gPiAwOjpwZ19jYXRhbG9nLmludDJcbiIKIAkJCQkJICAi T1JERVIgQlkgYS5hdHRyZWxpZCwgYS5hdHRudW0iLAogCQkJCQkgIHRibG9pZHMtPmRhdGEp OwpAQCAtODIwNCw2ICs4MjEyLDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJaV90eXBzdG9yYWdlID0gUFFm bnVtYmVyKHJlcywgInR5cHN0b3JhZ2UiKTsKIAlpX2F0dGlkZW50aXR5ID0gUFFmbnVtYmVy KHJlcywgImF0dGlkZW50aXR5Iik7CiAJaV9hdHRnZW5lcmF0ZWQgPSBQUWZudW1iZXIocmVz LCAiYXR0Z2VuZXJhdGVkIik7CisJaV9hdHRjZWtuYW1lID0gUFFmbnVtYmVyKHJlcywgImF0 dGNla25hbWUiKTsKIAlpX2F0dGlzZHJvcHBlZCA9IFBRZm51bWJlcihyZXMsICJhdHRpc2Ry b3BwZWQiKTsKIAlpX2F0dGxlbiA9IFBRZm51bWJlcihyZXMsICJhdHRsZW4iKTsKIAlpX2F0 dGFsaWduID0gUFFmbnVtYmVyKHJlcywgImF0dGFsaWduIik7CkBAIC04MjY1LDYgKzgyNzQs NyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywg aW50IG51bVRhYmxlcykKIAkJdGJpbmZvLT50eXBzdG9yYWdlID0gKGNoYXIgKikgcGdfbWFs bG9jKG51bWF0dHMgKiBzaXplb2YoY2hhcikpOwogCQl0YmluZm8tPmF0dGlkZW50aXR5ID0g KGNoYXIgKikgcGdfbWFsbG9jKG51bWF0dHMgKiBzaXplb2YoY2hhcikpOwogCQl0YmluZm8t PmF0dGdlbmVyYXRlZCA9IChjaGFyICopIHBnX21hbGxvYyhudW1hdHRzICogc2l6ZW9mKGNo YXIpKTsKKwkJdGJpbmZvLT5hdHRjZWtuYW1lID0gKGNoYXIgKiopIHBnX21hbGxvYyhudW1h dHRzICogc2l6ZW9mKGNoYXIgKikpOwogCQl0YmluZm8tPmF0dGlzZHJvcHBlZCA9IChib29s ICopIHBnX21hbGxvYyhudW1hdHRzICogc2l6ZW9mKGJvb2wpKTsKIAkJdGJpbmZvLT5hdHRs ZW4gPSAoaW50ICopIHBnX21hbGxvYyhudW1hdHRzICogc2l6ZW9mKGludCkpOwogCQl0Ymlu Zm8tPmF0dGFsaWduID0gKGNoYXIgKikgcGdfbWFsbG9jKG51bWF0dHMgKiBzaXplb2YoY2hh cikpOwpAQCAtODI5Myw2ICs4MzAzLDEwIEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91 dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJdGJpbmZvLT5hdHRp ZGVudGl0eVtqXSA9ICooUFFnZXR2YWx1ZShyZXMsIHIsIGlfYXR0aWRlbnRpdHkpKTsKIAkJ CXRiaW5mby0+YXR0Z2VuZXJhdGVkW2pdID0gKihQUWdldHZhbHVlKHJlcywgciwgaV9hdHRn ZW5lcmF0ZWQpKTsKIAkJCXRiaW5mby0+bmVlZHNfb3ZlcnJpZGUgPSB0YmluZm8tPm5lZWRz X292ZXJyaWRlIHx8ICh0YmluZm8tPmF0dGlkZW50aXR5W2pdID09IEFUVFJJQlVURV9JREVO VElUWV9BTFdBWVMpOworCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIHIsIGlfYXR0Y2VrbmFt ZSkpCisJCQkJdGJpbmZvLT5hdHRjZWtuYW1lW2pdID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUo cmVzLCByLCBpX2F0dGNla25hbWUpKTsKKwkJCWVsc2UKKwkJCQl0YmluZm8tPmF0dGNla25h bWVbal0gPSBOVUxMOwogCQkJdGJpbmZvLT5hdHRpc2Ryb3BwZWRbal0gPSAoUFFnZXR2YWx1 ZShyZXMsIHIsIGlfYXR0aXNkcm9wcGVkKVswXSA9PSAndCcpOwogCQkJdGJpbmZvLT5hdHRs ZW5bal0gPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCByLCBpX2F0dGxlbikpOwogCQkJdGJpbmZv LT5hdHRhbGlnbltqXSA9ICooUFFnZXR2YWx1ZShyZXMsIHIsIGlfYXR0YWxpZ24pKTsKQEAg LTE1MjYwLDYgKzE1Mjc0LDEyIEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBj b25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJCQkJCQkJCQkgIHRiaW5mby0+YXR0dHlwbmFt ZXNbal0pOwogCQkJCQl9CiAKKwkJCQkJaWYgKHRiaW5mby0+YXR0Y2VrbmFtZVtqXSkKKwkJ CQkJeworCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBFTkNSWVBURUQgV0lUSCAoY29s dW1uX2VuY3J5cHRpb25fa2V5ID0gJXMpIiwKKwkJCQkJCQkJCQkgIGZtdElkKHRiaW5mby0+ YXR0Y2VrbmFtZVtqXSkpOworCQkJCQl9CisKIAkJCQkJaWYgKHByaW50X2RlZmF1bHQpCiAJ CQkJCXsKIAkJCQkJCWlmICh0YmluZm8tPmF0dGdlbmVyYXRlZFtqXSA9PSBBVFRSSUJVVEVf R0VORVJBVEVEX1NUT1JFRCkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDFkMjFjMjkwNmYuLjJjMTc2 ZWQxM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtMzMzLDYgKzMzMyw3IEBAIHR5cGVkZWYgc3Ry dWN0IF90YWJsZUluZm8KIAlib29sCSAgICphdHRpc2Ryb3BwZWQ7CS8qIHRydWUgaWYgYXR0 ciBpcyBkcm9wcGVkOyBkb24ndCBkdW1wIGl0ICovCiAJY2hhcgkgICAqYXR0aWRlbnRpdHk7 CiAJY2hhcgkgICAqYXR0Z2VuZXJhdGVkOworCWNoYXIJICAqKmF0dGNla25hbWU7CiAJaW50 CQkgICAqYXR0bGVuOwkJCS8qIGF0dHJpYnV0ZSBsZW5ndGgsIHVzZWQgYnkgYmluYXJ5X3Vw Z3JhZGUgKi8KIAljaGFyCSAgICphdHRhbGlnbjsJCS8qIGF0dHJpYnV0ZSBhbGlnbiwgdXNl ZCBieSBiaW5hcnlfdXBncmFkZSAqLwogCWJvb2wJICAgKmF0dGlzbG9jYWw7CQkvKiB0cnVl IGlmIGF0dHIgaGFzIGxvY2FsIGRlZmluaXRpb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IGM1NjJjMDRh ZmUuLjcyZTk3M2QyZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysr IGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtOTgsNiArOTgsNyBAQCBzdGF0aWMgYmFj a3NsYXNoUmVzdWx0IHByb2Nlc3NfY29tbWFuZF9nX29wdGlvbnMoY2hhciAqZmlyc3Rfb3B0 aW9uLAogCQkJCQkJCQkJCQkJIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAkJCQkJCQkJCQkJCSBj b25zdCBjaGFyICpjbWQpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRf Z2Rlc2MoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwor c3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZ2VuY3IoUHNxbFNjYW5TdGF0 ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJl c3VsdCBleGVjX2NvbW1hbmRfZ2V0ZW52KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9v bCBhY3RpdmVfYnJhbmNoLAogCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmNtZCk7CiBzdGF0 aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9nZXhlYyhQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CkBAIC0zNTAsNiArMzUxLDggQEAgZXhl Y19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2co c2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwgY21kKTsKIAllbHNlIGlmIChzdHJjbXAoY21k LCAiZ2Rlc2MiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZ2Rlc2Moc2Nhbl9z dGF0ZSwgYWN0aXZlX2JyYW5jaCk7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgImdlbmNyIikg PT0gMCkKKwkJc3RhdHVzID0gZXhlY19jb21tYW5kX2dlbmNyKHNjYW5fc3RhdGUsIGFjdGl2 ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJnZXRlbnYiKSA9PSAwKQogCQlz dGF0dXMgPSBleGVjX2NvbW1hbmRfZ2V0ZW52KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gs IGNtZCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImdleGVjIikgPT0gMCkKQEAgLTE0OTIs NiArMTQ5NSwzNCBAQCBleGVjX2NvbW1hbmRfZ2Rlc2MoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0 YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpCiAJcmV0dXJuIHN0YXR1czsKIH0KIAorLyoKKyAq IFxnZW5jciAtLSBzZW5kIHF1ZXJ5LCB3aXRoIHN1cHBvcnQgZm9yIHBhcmFtZXRlciBlbmNy eXB0aW9uCisgKi8KK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQKK2V4ZWNfY29tbWFuZF9nZW5j cihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK3sKKwli YWNrc2xhc2hSZXN1bHQgc3RhdHVzID0gUFNRTF9DTURfU0tJUF9MSU5FOworCWNoYXIJICAg KmFwOworCisJcHNldC5udW1fcGFyYW1zID0gMDsKKwlwc2V0LnBhcmFtcyA9IE5VTEw7CisJ d2hpbGUgKChhcCA9IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oc2Nhbl9zdGF0ZSwKKwkJCQkJ CQkJCQlPVF9OT1JNQUwsIE5VTEwsIHRydWUpKSAhPSBOVUxMKQorCXsKKwkJcHNldC5udW1f cGFyYW1zKys7CisJCXBzZXQucGFyYW1zID0gcGdfcmVhbGxvYyhwc2V0LnBhcmFtcywgcHNl dC5udW1fcGFyYW1zICogc2l6ZW9mKGNoYXIgKikpOworCQlwc2V0LnBhcmFtc1twc2V0Lm51 bV9wYXJhbXMgLSAxXSA9IGFwOworCX0KKworCWlmIChhY3RpdmVfYnJhbmNoKQorCXsKKwkJ cHNldC5nZW5jcl9mbGFnID0gdHJ1ZTsKKwkJc3RhdHVzID0gUFNRTF9DTURfU0VORDsKKwl9 CisKKwlyZXR1cm4gc3RhdHVzOworfQorCiAvKgogICogXGdldGVudiAtLSBzZXQgdmFyaWFi bGUgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZQogICovCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvY29tbW9uLmMgYi9zcmMvYmluL3BzcWwvY29tbW9uLmMKaW5kZXggOWY5NTg2OWVj YS4uOGZlMDU1ZmZlZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCisrKyBi L3NyYy9iaW4vcHNxbC9jb21tb24uYwpAQCAtMTI4NCw2ICsxMjg0LDE0IEBAIFNlbmRRdWVy eShjb25zdCBjaGFyICpxdWVyeSkKIAkvKiByZXNldCBcZ2Rlc2MgdHJpZ2dlciAqLwogCXBz ZXQuZ2Rlc2NfZmxhZyA9IGZhbHNlOwogCisJLyogcmVzZXQgXGdlbmNyIHRyaWdnZXIgKi8K Kwlwc2V0LmdlbmNyX2ZsYWcgPSBmYWxzZTsKKwlmb3IgKGludCBpID0gMDsgaSA8IHBzZXQu bnVtX3BhcmFtczsgaSsrKQorCQlwZ19mcmVlKHBzZXQucGFyYW1zW2ldKTsKKwlwZ19mcmVl KHBzZXQucGFyYW1zKTsKKwlwc2V0LnBhcmFtcyA9IE5VTEw7CisJcHNldC5udW1fcGFyYW1z ID0gMDsKKwogCS8qIHJlc2V0IFxnZXhlYyB0cmlnZ2VyICovCiAJcHNldC5nZXhlY19mbGFn ID0gZmFsc2U7CiAKQEAgLTE0NDgsNyArMTQ1NiwzNiBAQCBFeGVjUXVlcnlBbmRQcm9jZXNz UmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICplbGFwc2VkX21zZWMsIGJvb2wg KnN2cHRfZwogCWlmICh0aW1pbmcpCiAJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoYmVmb3Jl KTsKIAotCXN1Y2Nlc3MgPSBQUXNlbmRRdWVyeShwc2V0LmRiLCBxdWVyeSk7CisJaWYgKHBz ZXQuZ2VuY3JfZmxhZykKKwl7CisJCVBHcmVzdWx0ICAgKnJlczEsCisJCQkJICAgKnJlczI7 CisKKwkJcmVzMSA9IFBRcHJlcGFyZShwc2V0LmRiLCAiIiwgcXVlcnksIHBzZXQubnVtX3Bh cmFtcywgTlVMTCk7CisJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMxKSAhPSBQR1JFU19DT01N QU5EX09LKQorCQl7CisJCQlwZ19sb2dfaW5mbygiJXMiLCBQUWVycm9yTWVzc2FnZShwc2V0 LmRiKSk7CisJCQlDbGVhck9yU2F2ZVJlc3VsdChyZXMxKTsKKwkJCXJldHVybiAtMTsKKwkJ fQorCQlQUWNsZWFyKHJlczEpOworCisJCXJlczIgPSBQUWRlc2NyaWJlUHJlcGFyZWQocHNl dC5kYiwgIiIpOworCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzMikgIT0gUEdSRVNfQ09NTUFO RF9PSykKKwkJeworCQkJcGdfbG9nX2luZm8oIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5k YikpOworCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzMik7CisJCQlyZXR1cm4gLTE7CisJCX0K KworCQlzdWNjZXNzID0gUFFzZW5kUXVlcnlQcmVwYXJlZDIocHNldC5kYiwgIiIsIHBzZXQu bnVtX3BhcmFtcywgKGNvbnN0IGNoYXIgKmNvbnN0ICopIHBzZXQucGFyYW1zLCBOVUxMLCBO VUxMLCBOVUxMLCAwLCByZXMyKTsKKworCQlQUWNsZWFyKHJlczIpOworCX0KKwllbHNlCisJ eworCQlzdWNjZXNzID0gUFFzZW5kUXVlcnkocHNldC5kYiwgcXVlcnkpOworCX0KIAogCWlm ICghc3VjY2VzcykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDg4ZDkyYTA4YWUuLmZlODE1NDdiMjkg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCWJvb2wJCXByaW50VGFibGVJbml0aWFs aXplZCA9IGZhbHNlOwogCWludAkJCWk7CiAJY2hhcgkgICAqdmlld19kZWYgPSBOVUxMOwot CWNoYXIJICAgKmhlYWRlcnNbMTJdOworCWNoYXIJICAgKmhlYWRlcnNbMTNdOwogCVBRRXhw QnVmZmVyRGF0YSB0aXRsZTsKIAlQUUV4cEJ1ZmZlckRhdGEgdG1wYnVmOwogCWludAkJCWNv bHM7CkBAIC0xNTE0LDYgKzE1MTQsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25z dCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCWZkd29wdHNfY29sID0gLTEsCiAJCQkJYXR0c3Rv cmFnZV9jb2wgPSAtMSwKIAkJCQlhdHRjb21wcmVzc2lvbl9jb2wgPSAtMSwKKwkJCQlhdHRj ZWtuYW1lX2NvbCA9IC0xLAogCQkJCWF0dHN0YXR0YXJnZXRfY29sID0gLTEsCiAJCQkJYXR0 ZGVzY3JfY29sID0gLTE7CiAJaW50CQkJbnVtcm93czsKQEAgLTE4MTIsNyArMTgxMyw3IEBA IGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJY29s cyA9IDA7CiAJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBhLmF0dG5hbWUiKTsK IAlhdHRuYW1lX2NvbCA9IGNvbHMrKzsKLQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAi LFxuICBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKGEuYXR0dHlwaWQsIGEuYXR0dHlwbW9kKSIp OworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsXG4gIHBnX2NhdGFsb2cuZm9ybWF0 X3R5cGUoQ0FTRSBXSEVOIGEuYXR0cmVhbHR5cGlkIDw+IDAgVEhFTiBhLmF0dHJlYWx0eXBp ZCBFTFNFIGEuYXR0dHlwaWQgRU5ELCBhLmF0dHR5cG1vZCkiKTsKIAlhdHR0eXBlX2NvbCA9 IGNvbHMrKzsKIAogCWlmIChzaG93X2NvbHVtbl9kZXRhaWxzKQpAQCAtMTgyNiw3ICsxODI3 LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwK IAkJYXR0cmRlZl9jb2wgPSBjb2xzKys7CiAJCWF0dG5vdG51bGxfY29sID0gY29scysrOwog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxuICAoU0VMRUNUIGMuY29sbG5hbWUg RlJPTSBwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbiBjLCBwZ19jYXRhbG9nLnBnX3R5cGUgdFxu IgotCQkJCQkJCSAiICAgV0hFUkUgYy5vaWQgPSBhLmF0dGNvbGxhdGlvbiBBTkQgdC5vaWQg PSBhLmF0dHR5cGlkIEFORCBhLmF0dGNvbGxhdGlvbiA8PiB0LnR5cGNvbGxhdGlvbikgQVMg YXR0Y29sbGF0aW9uIik7CisJCQkJCQkJICIgICBXSEVSRSBjLm9pZCA9IGEuYXR0Y29sbGF0 aW9uIEFORCB0Lm9pZCA9IChDQVNFIFdIRU4gYS5hdHRyZWFsdHlwaWQgPD4gMCBUSEVOIGEu YXR0cmVhbHR5cGlkIEVMU0UgYS5hdHR0eXBpZCBFTkQpIEFORCBhLmF0dGNvbGxhdGlvbiA8 PiB0LnR5cGNvbGxhdGlvbikgQVMgYXR0Y29sbGF0aW9uIik7CiAJCWF0dGNvbGxfY29sID0g Y29scysrOwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCiAJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmYnVmLCAiLFxuICBhLmF0dGlkZW50aXR5Iik7CkBAIC0xODc3LDYgKzE4 NzgsMTUgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFt ZSwKIAkJCWF0dGNvbXByZXNzaW9uX2NvbCA9IGNvbHMrKzsKIAkJfQogCisJCS8qIGVuY3J5 cHRpb24gaW5mbyAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDAgJiYKKwkJCSFw c2V0LmhpZGVfY29sdW1uX2VuY3J5cHRpb24gJiYKKwkJCSh0YWJsZWluZm8ucmVsa2luZCA9 PSBSRUxLSU5EX1JFTEFUSU9OKSkKKwkJeworCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1 ZiwgIixcbiAgKFNFTEVDVCBjZWtuYW1lIEZST00gcGdfY29sZW5ja2V5IGNlayBXSEVSRSBj ZWsub2lkID0gYS5hdHRjZWspIEFTIGF0dGNla25hbWUiKTsKKwkJCWF0dGNla25hbWVfY29s ID0gY29scysrOworCQl9CisKIAkJLyogc3RhdHMgdGFyZ2V0LCBpZiByZWxldmFudCB0byBy ZWxraW5kICovCiAJCWlmICh0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9O IHx8CiAJCQl0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX0lOREVYIHx8CkBAIC0yMDAw LDYgKzIwMTAsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hl bWFuYW1lLAogCQloZWFkZXJzW2NvbHMrK10gPSBnZXR0ZXh0X25vb3AoIlN0b3JhZ2UiKTsK IAlpZiAoYXR0Y29tcHJlc3Npb25fY29sID49IDApCiAJCWhlYWRlcnNbY29scysrXSA9IGdl dHRleHRfbm9vcCgiQ29tcHJlc3Npb24iKTsKKwlpZiAoYXR0Y2VrbmFtZV9jb2wgPj0gMCkK KwkJaGVhZGVyc1tjb2xzKytdID0gZ2V0dGV4dF9ub29wKCJFbmNyeXB0aW9uIik7CiAJaWYg KGF0dHN0YXR0YXJnZXRfY29sID49IDApCiAJCWhlYWRlcnNbY29scysrXSA9IGdldHRleHRf bm9vcCgiU3RhdHMgdGFyZ2V0Iik7CiAJaWYgKGF0dGRlc2NyX2NvbCA+PSAwKQpAQCAtMjA5 Miw2ICsyMTA0LDE3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCiAJCQkJCQkJICBmYWxzZSwgZmFsc2UpOwogCQl9CiAKKwkJLyogQ29sdW1u IGVuY3J5cHRpb24gKi8KKwkJaWYgKGF0dGNla25hbWVfY29sID49IDApCisJCXsKKwkJCWlm ICghUFFnZXRpc251bGwocmVzLCBpLCBhdHRjZWtuYW1lX2NvbCkpCisJCQkJcHJpbnRUYWJs ZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCBhdHRjZWtuYW1lX2NvbCksCisJ CQkJCQkJCSAgZmFsc2UsIGZhbHNlKTsKKwkJCWVsc2UKKwkJCQlwcmludFRhYmxlQWRkQ2Vs bCgmY29udCwgIiIsCisJCQkJCQkJCSAgZmFsc2UsIGZhbHNlKTsKKwkJfQorCiAJCS8qIFN0 YXRpc3RpY3MgdGFyZ2V0LCBpZiB0aGUgcmVsa2luZCBzdXBwb3J0cyB0aGlzIGZlYXR1cmUg Ki8KIAkJaWYgKGF0dHN0YXR0YXJnZXRfY29sID49IDApCiAJCQlwcmludFRhYmxlQWRkQ2Vs bCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIGF0dHN0YXR0YXJnZXRfY29sKSwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmluZGV4 IGY4Y2UxYTA3MDYuLjlmNGZjZTI2ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxw LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMTk1LDYgKzE5NSw3IEBAIHNsYXNo VXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCUhFTFAwKCIgIFxcZyBbKE9QVElP TlMpXSBbRklMRV0gIGV4ZWN1dGUgcXVlcnkgKGFuZCBzZW5kIHJlc3VsdCB0byBmaWxlIG9y IHxwaXBlKTtcbiIKIAkJICAiICAgICAgICAgICAgICAgICAgICAgICAgIFxcZyB3aXRoIG5v IGFyZ3VtZW50cyBpcyBlcXVpdmFsZW50IHRvIGEgc2VtaWNvbG9uXG4iKTsKIAlIRUxQMCgi ICBcXGdkZXNjICAgICAgICAgICAgICAgICBkZXNjcmliZSByZXN1bHQgb2YgcXVlcnksIHdp dGhvdXQgZXhlY3V0aW5nIGl0XG4iKTsKKwlIRUxQMCgiICBcXGdlbmNyIFtQQVJBTV0uLi4g ICAgICBleGVjdXRlIHF1ZXJ5LCB3aXRoIHN1cHBvcnQgZm9yIHBhcmFtZXRlciBlbmNyeXB0 aW9uXG4iKTsKIAlIRUxQMCgiICBcXGdleGVjICAgICAgICAgICAgICAgICBleGVjdXRlIHF1 ZXJ5LCB0aGVuIGV4ZWN1dGUgZWFjaCB2YWx1ZSBpbiBpdHMgcmVzdWx0XG4iKTsKIAlIRUxQ MCgiICBcXGdzZXQgW1BSRUZJWF0gICAgICAgICBleGVjdXRlIHF1ZXJ5IGFuZCBzdG9yZSBy ZXN1bHQgaW4gcHNxbCB2YXJpYWJsZXNcbiIpOwogCUhFTFAwKCIgIFxcZ3ggWyhPUFRJT05T KV0gW0ZJTEVdIGFzIFxcZywgYnV0IGZvcmNlcyBleHBhbmRlZCBvdXRwdXQgbW9kZVxuIik7 CkBAIC00MTIsNiArNDEzLDggQEAgaGVscFZhcmlhYmxlcyh1bnNpZ25lZCBzaG9ydCBpbnQg cGFnZXIpCiAJCSAgIiAgICB0cnVlIGlmIGxhc3QgcXVlcnkgZmFpbGVkLCBlbHNlIGZhbHNl XG4iKTsKIAlIRUxQMCgiICBGRVRDSF9DT1VOVFxuIgogCQkgICIgICAgdGhlIG51bWJlciBv ZiByZXN1bHQgcm93cyB0byBmZXRjaCBhbmQgZGlzcGxheSBhdCBhIHRpbWUgKDAgPSB1bmxp bWl0ZWQpXG4iKTsKKwlIRUxQMCgiICBISURFX0NPTFVNTl9FTkNSWVBUSU9OXG4iCisJCSAg IiAgICBpZiBzZXQsIGNvbHVtbiBlbmNyeXB0aW9uIGRldGFpbHMgYXJlIG5vdCBkaXNwbGF5 ZWRcbiIpOwogCUhFTFAwKCIgIEhJREVfVEFCTEVBTVxuIgogCQkgICIgICAgaWYgc2V0LCB0 YWJsZSBhY2Nlc3MgbWV0aG9kcyBhcmUgbm90IGRpc3BsYXllZFxuIik7CiAJSEVMUDAoIiAg SElERV9UT0FTVF9DT01QUkVTU0lPTlxuIgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3Nl dHRpbmdzLmggYi9zcmMvYmluL3BzcWwvc2V0dGluZ3MuaAppbmRleCAyMzk5Y2ZmYTNmLi42 MzY3MjlkZjFkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvc2V0dGluZ3MuaAorKysgYi9z cmMvYmluL3BzcWwvc2V0dGluZ3MuaApAQCAtOTUsNiArOTUsMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgX3BzcWxTZXR0aW5ncwogCiAJY2hhcgkgICAqZ3NldF9wcmVmaXg7CS8qIG9uZS1zaG90 IHByZWZpeCBhcmd1bWVudCBmb3IgXGdzZXQgKi8KIAlib29sCQlnZGVzY19mbGFnOwkJLyog b25lLXNob3QgcmVxdWVzdCB0byBkZXNjcmliZSBxdWVyeSByZXN1bHQgKi8KKwlib29sCQln ZW5jcl9mbGFnOwkJLyogb25lLXNob3QgcmVxdWVzdCB0byBzZW5kIHF1ZXJ5IHdpdGggc3Vw cG9ydAorCQkJCQkJCQkgKiBmb3IgcGFyYW1ldGVyIGVuY3J5cHRpb24gKi8KKwlpbnQJCQlu dW1fcGFyYW1zOwkJLyogbnVtYmVyIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgKi8KKwljaGFyCSAg KipwYXJhbXM7CQkJLyogcXVlcnkgcGFyYW1ldGVycyAqLwogCWJvb2wJCWdleGVjX2ZsYWc7 CQkvKiBvbmUtc2hvdCByZXF1ZXN0IHRvIGV4ZWN1dGUgcXVlcnkgcmVzdWx0ICovCiAJYm9v bAkJY3Jvc3N0YWJfZmxhZzsJLyogb25lLXNob3QgcmVxdWVzdCB0byBjcm9zc3RhYiByZXN1 bHQgKi8KIAljaGFyCSAgICpjdHZfYXJnc1s0XTsJLyogXGNyb3NzdGFidmlldyBhcmd1bWVu dHMgKi8KQEAgLTEzNCw2ICsxMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBfcHNxbFNldHRpbmdz CiAJYm9vbAkJcXVpZXQ7CiAJYm9vbAkJc2luZ2xlbGluZTsKIAlib29sCQlzaW5nbGVzdGVw OworCWJvb2wJCWhpZGVfY29sdW1uX2VuY3J5cHRpb247CiAJYm9vbAkJaGlkZV9jb21wcmVz c2lvbjsKIAlib29sCQloaWRlX3RhYmxlYW07CiAJaW50CQkJZmV0Y2hfY291bnQ7CmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvc3RhcnR1cC5jIGIvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAu YwppbmRleCA3YzJmNTU1ZjE1Li5jOTU1MjIyYTUwIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvc3RhcnR1cC5jCisrKyBiL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKQEAgLTExODgsNiAr MTE4OCwxMyBAQCBoaWRlX2NvbXByZXNzaW9uX2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQog CQkJCQkJCSAmcHNldC5oaWRlX2NvbXByZXNzaW9uKTsKIH0KIAorc3RhdGljIGJvb2wKK2hp ZGVfY29sdW1uX2VuY3J5cHRpb25faG9vayhjb25zdCBjaGFyICpuZXd2YWwpCit7CisJcmV0 dXJuIFBhcnNlVmFyaWFibGVCb29sKG5ld3ZhbCwgIkhJREVfQ09MVU1OX0VOQ1JZUFRJT04i LAorCQkJCQkJCSAmcHNldC5oaWRlX2NvbHVtbl9lbmNyeXB0aW9uKTsKK30KKwogc3RhdGlj IGJvb2wKIGhpZGVfdGFibGVhbV9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKQEAgLTEy NTksNiArMTI2Niw5IEBAIEVzdGFibGlzaFZhcmlhYmxlU3BhY2Uodm9pZCkKIAlTZXRWYXJp YWJsZUhvb2tzKHBzZXQudmFycywgIlNIT1dfQ09OVEVYVCIsCiAJCQkJCSBzaG93X2NvbnRl eHRfc3Vic3RpdHV0ZV9ob29rLAogCQkJCQkgc2hvd19jb250ZXh0X2hvb2spOworCVNldFZh cmlhYmxlSG9va3MocHNldC52YXJzLCAiSElERV9DT0xVTU5fRU5DUllQVElPTiIsCisJCQkJ CSBib29sX3N1YnN0aXR1dGVfaG9vaywKKwkJCQkJIGhpZGVfY29sdW1uX2VuY3J5cHRpb25f aG9vayk7CiAJU2V0VmFyaWFibGVIb29rcyhwc2V0LnZhcnMsICJISURFX1RPQVNUX0NPTVBS RVNTSU9OIiwKIAkJCQkJIGJvb2xfc3Vic3RpdHV0ZV9ob29rLAogCQkJCQkgaGlkZV9jb21w cmVzc2lvbl9ob29rKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCBjNWNhZmU2ZjRiLi5kNTg3 N2RjNWEzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC0xNjkyLDcgKzE2OTIsNyBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQki XFxlY2hvIiwgIlxcZWRpdCIsICJcXGVmIiwgIlxcZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNv ZGluZyIsCiAJCSJcXGVuZGlmIiwgIlxcZXJydmVyYm9zZSIsICJcXGV2IiwKIAkJIlxcZiIs Ci0JCSJcXGciLCAiXFxnZGVzYyIsICJcXGdldGVudiIsICJcXGdleGVjIiwgIlxcZ3NldCIs ICJcXGd4IiwKKwkJIlxcZyIsICJcXGdkZXNjIiwgIlxcZ2VuY3IiLCAiXFxnZXRlbnYiLCAi XFxnZXhlYyIsICJcXGdzZXQiLCAiXFxneCIsCiAJCSJcXGhlbHAiLCAiXFxodG1sIiwKIAkJ IlxcaWYiLCAiXFxpbmNsdWRlIiwgIlxcaW5jbHVkZV9yZWxhdGl2ZSIsICJcXGlyIiwKIAkJ IlxcbGlzdCIsICJcXGxvX2ltcG9ydCIsICJcXGxvX2V4cG9ydCIsICJcXGxvX2xpc3QiLCAi XFxsb191bmxpbmsiLApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZp bGUgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQppbmRleCBiNWZkNzJhNGFjLi41 YTA2NWViODBiIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQor KysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQpAQCAtNTQsNiArNTQsNyBAQCBl bmRpZgogCiBpZmVxICgkKHdpdGhfc3NsKSxvcGVuc3NsKQogT0JKUyArPSBcCisJZmUtZW5j cnlwdC1vcGVuc3NsLm8gXAogCWZlLXNlY3VyZS1vcGVuc3NsLm8KIGVuZGlmCiAKZGlmZiAt LWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0IGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZXhwb3J0cy50eHQKaW5kZXggZThiY2M4ODM3MC4uZmFiYWQzOGFjMCAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTE4NiwzICsxODYsNyBAQCBQUXBpcGVs aW5lU3RhdHVzICAgICAgICAgIDE4MwogUFFzZXRUcmFjZUZsYWdzICAgICAgICAgICAxODQK IFBRbWJsZW5Cb3VuZGVkICAgICAgICAgICAgMTg1CiBQUXNlbmRGbHVzaFJlcXVlc3QgICAg ICAgIDE4NgorUFFleGVjUHJlcGFyZWQyICAgICAgICAgICAxODcKK1BRc2VuZFF1ZXJ5UHJl cGFyZWQyICAgICAgMTg4CitQUWZpc2VuY3J5cHRlZCAgICAgICAgICAgIDE4OQorUFFwYXJh bWlzZW5jcnlwdGVkICAgICAgICAxOTAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWNvbm5lY3QuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpp bmRleCBkYzQ5Mzg3ZDZjLi5mM2MxNWVjZTRkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1jb25uZWN0LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29u bmVjdC5jCkBAIC0zNDQsNiArMzQ0LDEwIEBAIHN0YXRpYyBjb25zdCBpbnRlcm5hbFBRY29u bmluZm9PcHRpb24gUFFjb25uaW5mb09wdGlvbnNbXSA9IHsKIAkJIlRhcmdldC1TZXNzaW9u LUF0dHJzIiwgIiIsIDE1LCAvKiBzaXplb2YoInByZWZlci1zdGFuZGJ5IikgPSAxNSAqLwog CW9mZnNldG9mKHN0cnVjdCBwZ19jb25uLCB0YXJnZXRfc2Vzc2lvbl9hdHRycyl9LAogCisJ eyJjbWtsb29rdXAiLCAiUEdDTUtMT09LVVAiLCAiIiwgTlVMTCwKKwkJIkNNSy1Mb29rdXAi LCAiIiwgNjQsCisJb2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIGNta2xvb2t1cCl9LAorCiAJ LyogVGVybWluYXRpbmcgZW50cnkgLS0tIE1VU1QgQkUgTEFTVCAqLwogCXtOVUxMLCBOVUxM LCBOVUxMLCBOVUxMLAogCU5VTEwsIE5VTEwsIDB9CkBAIC00MDk3LDYgKzQxMDEsMjIgQEAg ZnJlZVBHY29ubihQR2Nvbm4gKmNvbm4pCiAJZnJlZShjb25uLT5rcmJzcnZuYW1lKTsKIAlm cmVlKGNvbm4tPmdzc2xpYik7CiAJZnJlZShjb25uLT5jb25uaXApOworCWZyZWUoY29ubi0+ Y21rbG9va3VwKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGNvbm4tPm5jbWtzOyBpKyspCisJ eworCQlmcmVlKGNvbm4tPmNta3NbaV0uY21rbmFtZSk7CisJCWZyZWUoY29ubi0+Y21rc1tp XS5jbWtyZWFsbSk7CisJfQorCWZyZWUoY29ubi0+Y21rcyk7CisJZm9yIChpbnQgaSA9IDA7 IGkgPCBjb25uLT5uY2VrczsgaSsrKQorCXsKKwkJaWYgKGNvbm4tPmNla3NbaV0uY2VrZGF0 YSkKKwkJeworCQkJZXhwbGljaXRfYnplcm8oY29ubi0+Y2Vrc1tpXS5jZWtkYXRhLCBjb25u LT5jZWtzW2ldLmNla2RhdGFsZW4pOworCQkJZnJlZShjb25uLT5jZWtzW2ldLmNla2RhdGEp OworCQl9CisJfQorCWZyZWUoY29ubi0+Y2Vrcyk7CiAJLyogTm90ZSB0aGF0IGNvbm4tPlBm ZGVidWcgaXMgbm90IG91cnMgdG8gY2xvc2Ugb3IgZnJlZSAqLwogCWZyZWUoY29ubi0+d3Jp dGVfZXJyX21zZyk7CiAJZnJlZShjb25uLT5pbkJ1ZmZlcik7CmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LW9wZW5zc2wuYyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWVuY3J5cHQtb3BlbnNzbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjUyNGJhOGEwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1lbmNyeXB0LW9wZW5zc2wuYwpAQCAtMCwwICsxLDc1OCBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZmUtZW5jcnlwdC1vcGVuc3NsLmMKKyAqCSAg ZW5jcnlwdGlvbiBzdXBwb3J0IHVzaW5nIE9wZW5TU0wKKyAqCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgor ICoJICBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LW9wZW5zc2wuYworICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgor CisjaW5jbHVkZSAiZmUtZW5jcnlwdC5oIgorI2luY2x1ZGUgImxpYnBxLWludC5oIgorCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xlbmNrZXkuaCIKKyNpbmNsdWRlICJwb3J0L3BnX2Jz d2FwLmgiCisKKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisKKyNpZmRlZiBURVNUX0VO Q1JZUFQKKworLyoKKyAqIFRlc3QgZGF0YSBmcm9tCisgKiA8aHR0cHM6Ly9kYXRhdHJhY2tl ci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1tY2dyZXctYWVhZC1hZXMtY2JjLWhtYWMtc2hh Mi0wNSNzZWN0aW9uLTU+CisgKi8KKworLyoKKyAqIFRoZSBkaWZmZXJlbnQgdGVzdCBjYXNl cyBqdXN0IHVzZSBkaWZmZXJlbnQgcHJlZml4ZXMgb2YgSywgc28gb25lIGNvbnN0YW50Cisg KiBpcyBlbm91Z2ggaGVyZS4KKyAqLworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgS1td ID0geworCTB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcs IDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYsCisJMHgx MCwgMHgxMSwgMHgxMiwgMHgxMywgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNywgMHgxOCwgMHgx OSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZiwKKwkweDIwLCAweDIxLCAw eDIyLCAweDIzLCAweDI0LCAweDI1LCAweDI2LCAweDI3LCAweDI4LCAweDI5LCAweDJhLCAw eDJiLCAweDJjLCAweDJkLCAweDJlLCAweDJmLAorCTB4MzAsIDB4MzEsIDB4MzIsIDB4MzMs IDB4MzQsIDB4MzUsIDB4MzYsIDB4MzcsIDB4MzgsIDB4MzksIDB4M2EsIDB4M2IsIDB4M2Ms IDB4M2QsIDB4M2UsIDB4M2YsCit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBQ W10gPSB7CisJMHg0MSwgMHgyMCwgMHg2MywgMHg2OSwgMHg3MCwgMHg2OCwgMHg2NSwgMHg3 MiwgMHgyMCwgMHg3MywgMHg3OSwgMHg3MywgMHg3NCwgMHg2NSwgMHg2ZCwgMHgyMCwKKwkw eDZkLCAweDc1LCAweDczLCAweDc0LCAweDIwLCAweDZlLCAweDZmLCAweDc0LCAweDIwLCAw eDYyLCAweDY1LCAweDIwLCAweDcyLCAweDY1LCAweDcxLCAweDc1LAorCTB4NjksIDB4NzIs IDB4NjUsIDB4NjQsIDB4MjAsIDB4NzQsIDB4NmYsIDB4MjAsIDB4NjIsIDB4NjUsIDB4MjAs IDB4NzMsIDB4NjUsIDB4NjMsIDB4NzIsIDB4NjUsCisJMHg3NCwgMHgyYywgMHgyMCwgMHg2 MSwgMHg2ZSwgMHg2NCwgMHgyMCwgMHg2OSwgMHg3NCwgMHgyMCwgMHg2ZCwgMHg3NSwgMHg3 MywgMHg3NCwgMHgyMCwgMHg2MiwKKwkweDY1LCAweDIwLCAweDYxLCAweDYyLCAweDZjLCAw eDY1LCAweDIwLCAweDc0LCAweDZmLCAweDIwLCAweDY2LCAweDYxLCAweDZjLCAweDZjLCAw eDIwLCAweDY5LAorCTB4NmUsIDB4NzQsIDB4NmYsIDB4MjAsIDB4NzQsIDB4NjgsIDB4NjUs IDB4MjAsIDB4NjgsIDB4NjEsIDB4NmUsIDB4NjQsIDB4NzMsIDB4MjAsIDB4NmYsIDB4NjYs CisJMHgyMCwgMHg3NCwgMHg2OCwgMHg2NSwgMHgyMCwgMHg2NSwgMHg2ZSwgMHg2NSwgMHg2 ZCwgMHg3OSwgMHgyMCwgMHg3NywgMHg2OSwgMHg3NCwgMHg2OCwgMHg2ZiwKKwkweDc1LCAw eDc0LCAweDIwLCAweDY5LCAweDZlLCAweDYzLCAweDZmLCAweDZlLCAweDc2LCAweDY1LCAw eDZlLCAweDY5LCAweDY1LCAweDZlLCAweDYzLCAweDY1LAorfTsKKworc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgdGVzdF9JVltdID0geworCTB4MWEsIDB4ZjMsIDB4OGMsIDB4MmQs IDB4YzIsIDB4YjksIDB4NmYsIDB4ZmQsIDB4ZDgsIDB4NjYsIDB4OTQsIDB4MDksIDB4MjMs IDB4NDEsIDB4YmMsIDB4MDQsCit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB0 ZXN0X0FbXSA9IHsKKwkweDU0LCAweDY4LCAweDY1LCAweDIwLCAweDczLCAweDY1LCAweDYz LCAweDZmLCAweDZlLCAweDY0LCAweDIwLCAweDcwLCAweDcyLCAweDY5LCAweDZlLCAweDYz LAorCTB4NjksIDB4NzAsIDB4NmMsIDB4NjUsIDB4MjAsIDB4NmYsIDB4NjYsIDB4MjAsIDB4 NDEsIDB4NzUsIDB4NjcsIDB4NzUsIDB4NzMsIDB4NzQsIDB4NjUsIDB4MjAsCisJMHg0Yiwg MHg2NSwgMHg3MiwgMHg2MywgMHg2YiwgMHg2OCwgMHg2ZiwgMHg2NiwgMHg2NiwgMHg3MywK K307CisKKworI2RlZmluZSBsaWJwcV9nZXR0ZXh0KHgpICh4KQorCisjZW5kaWYJCQkJCQkJ LyogVEVTVF9FTkNSWVBUICovCisKKwordW5zaWduZWQgY2hhciAqCitkZWNyeXB0X2Nla19m cm9tX2ZpbGUoUEdjb25uICpjb25uLCBGSUxFICpmcCwgaW50IGNta2FsZywKKwkJCQkJICBp bnQgZnJvbWxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKKwkJCQkJICBpbnQgKnRv bGVuKQoreworCWNvbnN0IEVWUF9NRCAqbWQgPSBOVUxMOworCUVWUF9QS0VZICAgKmtleSA9 IE5VTEw7CisJUlNBCQkgICAqcnNhID0gTlVMTDsKKwlFVlBfUEtFWV9DVFggKmN0eCA9IE5V TEw7CisJdW5zaWduZWQgY2hhciAqb3V0ID0gTlVMTDsKKwlzaXplX3QJCW91dGxlbjsKKwor CXN3aXRjaCAoY21rYWxnKQorCXsKKwkJY2FzZSBQR19DTUtfUlNBRVNfT0FFUF9TSEFfMToK KwkJCW1kID0gRVZQX3NoYTEoKTsKKwkJCWJyZWFrOworCQljYXNlIFBHX0NNS19SU0FFU19P QUVQX1NIQV8yNTY6CisJCQltZCA9IEVWUF9zaGEyNTYoKTsKKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJ CQkgIGxpYnBxX2dldHRleHQoInVuc3VwcG9ydGVkIENNSyBhbGdvcml0aG0gSUQ6ICVkXG4i KSwgY21rYWxnKTsKKwkJCWdvdG8gZmFpbDsKKwl9CisKKwlyc2EgPSBSU0FfbmV3KCk7CisJ aWYgKCFyc2EpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgYWxsb2NhdGUgUlNBIHN0cnVj dHVyZTogJXNcbiIpLAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0 X2Vycm9yKCkpKTsKKwkJZ290byBmYWlsOworCX0KKwlyc2EgPSBQRU1fcmVhZF9SU0FQcml2 YXRlS2V5KGZwLCAmcnNhLCBOVUxMLCBOVUxMKTsKKwlpZiAoIXJzYSkKKwl7CisJCWFwcGVu ZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRl eHQoImNvdWxkIG5vdCByZWFkIFJTQSBwcml2YXRlIGtleTogJXNcbiIpLAorCQkJCQkJICBF UlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJZ290byBmYWls OworCX0KKworCWtleSA9IEVWUF9QS0VZX25ldygpOworCWlmICgha2V5KQorCXsKKwkJYXBw ZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiY291bGQgbm90IGFsbG9jYXRlIHByaXZhdGUga2V5IHN0cnVjdHVyZTogJXNcbiIp LAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsK KwkJZ290byBmYWlsOworCX0KKworCWlmICghRVZQX1BLRVlfYXNzaWduX1JTQShrZXksIHJz YSkpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgYXNzaWduIHByaXZhdGUga2V5OiAlc1xu IiksCisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkp OworCQlnb3RvIGZhaWw7CisJfQorCisJY3R4ID0gRVZQX1BLRVlfQ1RYX25ldyhrZXksIE5V TEwpOworCWlmICghY3R4KQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IGFsbG9jYXRlIHB1 YmxpYyBrZXkgYWxnb3JpdGhtIGNvbnRleHQ6ICVzXG4iKSwKKwkJCQkJCSAgRVJSX3JlYXNv bl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCWdvdG8gZmFpbDsKKwl9CisK KwlpZiAoRVZQX1BLRVlfZGVjcnlwdF9pbml0KGN0eCkgPD0gMCkKKwl7CisJCWFwcGVuZFBR RXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQo ImRlY3J5cHRpb24gaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAlc1xuIiksCisJCQkJCQkgIEVS Ul9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQlnb3RvIGZhaWw7 CisJfQorCisJaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3BhZGRpbmcoY3R4LCBSU0FfUEtD UzFfT0FFUF9QQURESU5HKSA8PSAwIHx8CisJCUVWUF9QS0VZX0NUWF9zZXRfcnNhX21nZjFf bWQoY3R4LCBtZCkgPD0gMCB8fAorCQlFVlBfUEtFWV9DVFhfc2V0X3JzYV9vYWVwX21kKGN0 eCwgbWQpIDw9IDApCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNz YWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3Qgc2V0IFJTQSBwYXJhbWV0 ZXI6ICVzXG4iKSwKKwkJCQkJCSAgRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9l cnJvcigpKSk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlpZiAoRVZQX1BLRVlfZGVjcnlwdChj dHgsIE5VTEwsICZvdXRsZW4sIGZyb20sIGZyb21sZW4pIDw9IDApCisJeworCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJSU0EgZGVjcnlwdGlvbiBmYWlsZWQ6ICVzXG4iKSwKKwkJCQkJCSAgRVJSX3JlYXNvbl9l cnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlv dXQgPSBtYWxsb2Mob3V0bGVuKTsKKwlpZiAoIW91dCkKKwl7CisJCWFwcGVuZFBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoIm91dCBv ZiBtZW1vcnlcbiIpKTsKKwkJZ290byBmYWlsOworCX0KKworCWlmIChFVlBfUEtFWV9kZWNy eXB0KGN0eCwgb3V0LCAmb3V0bGVuLCBmcm9tLCBmcm9tbGVuKSA8PSAwKQorCXsKKwkJYXBw ZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiUlNBIGRlY3J5cHRpb24gZmFpbGVkOiAlc1xuIiksCisJCQkJCQkgIEVSUl9yZWFz b25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQlmcmVlKG91dCk7CisJCW91 dCA9IE5VTEw7CisJCWdvdG8gZmFpbDsKKwl9CisKKwkqdG9sZW4gPSBvdXRsZW47CisKK2Zh aWw6CisJRVZQX1BLRVlfQ1RYX2ZyZWUoY3R4KTsKKwlFVlBfUEtFWV9mcmVlKGtleSk7CisK KwlyZXR1cm4gb3V0OworfQorCitzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiAqCitwZ19jZWth bGdfdG9fb3BlbnNzbF9jaXBoZXIoaW50IGNla2FsZykKK3sKKwljb25zdCBFVlBfQ0lQSEVS ICpjaXBoZXI7CisKKwlzd2l0Y2ggKGNla2FsZykKKwl7CisJCWNhc2UgUEdfQ0VLX0FFQURf QUVTXzEyOF9DQkNfSE1BQ19TSEFfMjU2OgorCQkJY2lwaGVyID0gRVZQX2Flc18xMjhfY2Jj KCk7CisJCQlicmVhazsKKwkJY2FzZSBQR19DRUtfQUVBRF9BRVNfMTkyX0NCQ19ITUFDX1NI QV8zODQ6CisJCQljaXBoZXIgPSBFVlBfYWVzXzE5Ml9jYmMoKTsKKwkJCWJyZWFrOworCQlj YXNlIFBHX0NFS19BRUFEX0FFU18yNTZfQ0JDX0hNQUNfU0hBXzM4NDoKKwkJY2FzZSBQR19D RUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV81MTI6CisJCQljaXBoZXIgPSBFVlBfYWVz XzI1Nl9jYmMoKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJY2lwaGVyID0gTlVMTDsK Kwl9CisKKwlyZXR1cm4gY2lwaGVyOworfQorCitzdGF0aWMgY29uc3QgRVZQX01EICoKK3Bn X2Nla2FsZ190b19vcGVuc3NsX21kKGludCBjZWthbGcpCit7CisJY29uc3QgRVZQX01EICpt ZDsKKworCXN3aXRjaCAoY2VrYWxnKQorCXsKKwkJY2FzZSBQR19DRUtfQUVBRF9BRVNfMTI4 X0NCQ19ITUFDX1NIQV8yNTY6CisJCQltZCA9IEVWUF9zaGEyNTYoKTsKKwkJCWJyZWFrOwor CQljYXNlIFBHX0NFS19BRUFEX0FFU18xOTJfQ0JDX0hNQUNfU0hBXzM4NDoKKwkJY2FzZSBQ R19DRUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV8zODQ6CisJCQltZCA9IEVWUF9zaGEz ODQoKTsKKwkJCWJyZWFrOworCQljYXNlIFBHX0NFS19BRUFEX0FFU18yNTZfQ0JDX0hNQUNf U0hBXzUxMjoKKwkJCW1kID0gRVZQX3NoYTUxMigpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQltZCA9IE5VTEw7CisJfQorCisJcmV0dXJuIG1kOworfQorCitzdGF0aWMgaW50Citt ZF9rZXlfbGVuZ3RoKGNvbnN0IEVWUF9NRCAqbWQpCit7CisJaWYgKG1kID09IEVWUF9zaGEy NTYoKSkKKwkJcmV0dXJuIDE2OworCWVsc2UgaWYgKG1kID09IEVWUF9zaGEzODQoKSkKKwkJ cmV0dXJuIDI0OworCWVsc2UgaWYgKG1kID09IEVWUF9zaGE1MTIoKSkKKwkJcmV0dXJuIDMy OworCWVsc2UKKwkJcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50CittZF9oYXNoX2xlbmd0 aChjb25zdCBFVlBfTUQgKm1kKQoreworCWlmIChtZCA9PSBFVlBfc2hhMjU2KCkpCisJCXJl dHVybiAzMjsKKwllbHNlIGlmIChtZCA9PSBFVlBfc2hhMzg0KCkpCisJCXJldHVybiA0ODsK KwllbHNlIGlmIChtZCA9PSBFVlBfc2hhNTEyKCkpCisJCXJldHVybiA2NDsKKwllbHNlCisJ CXJldHVybiAtMTsKK30KKworI2lmbmRlZiBURVNUX0VOQ1JZUFQKKyNkZWZpbmUgUEdfQURf TEVOIDQKKyNlbHNlCisjZGVmaW5lIFBHX0FEX0xFTiBzaXplb2YodGVzdF9BKQorI2VuZGlm CisKK3N0YXRpYyBib29sCitnZXRfbWVzc2FnZV9hdXRoX3RhZyhjb25zdCBFVlBfTUQgKm1k LAorCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqbWFjX2tleSwgaW50IG1hY19rZXlfbGVu LAorCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqZW5jciwgaW50IGVuY3JsZW4sCisJCQkJ CSBpbnQgY2VrYWxnLAorCQkJCQkgdW5zaWduZWQgY2hhciAqbWRfdmFsdWUsIHNpemVfdCAq bWRfbGVuX3AsCisJCQkJCSBjb25zdCBjaGFyICoqZXJybXNncCkKK3sKKwlzdGF0aWMgY2hh ciBtc2didWZbMTAyNF07CisJRVZQX01EX0NUWCAqZXZwX21kX2N0eCA9IE5VTEw7CisJRVZQ X1BLRVkgICAqcGtleSA9IE5VTEw7CisJc2l6ZV90CQlidWZzaXplOworCXVuc2lnbmVkIGNo YXIgKmJ1ZiA9IE5VTEw7CisJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CisKKwlldnBfbWRfY3R4 ID0gRVZQX01EX0NUWF9uZXcoKTsKKworCXBrZXkgPSBFVlBfUEtFWV9uZXdfcmF3X3ByaXZh dGVfa2V5KEVWUF9QS0VZX0hNQUMsIE5VTEwsIG1hY19rZXksIG1hY19rZXlfbGVuKTsKKwlp ZiAoIXBrZXkpCisJeworCQlzbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAorCQkJ CSBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgYWxsb2NhdGUga2V5IGZvciBITUFDOiAlcyIp LAorCQkJCSBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJ KmVycm1zZ3AgPSBtc2didWY7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlidWZzaXplID0gUEdf QURfTEVOICsgZW5jcmxlbiArIHNpemVvZihpbnQ2NCk7CisJYnVmID0gbWFsbG9jKGJ1ZnNp emUpOworCWlmICghYnVmKQorCXsKKwkJKmVycm1zZ3AgPSBsaWJwcV9nZXR0ZXh0KCJvdXQg b3V0IG1lbW9yeSIpOworCQlnb3RvIGZhaWw7CisJfQorI2lmbmRlZiBURVNUX0VOQ1JZUFQK KwlidWZbMF0gPSAnUCc7CisJYnVmWzFdID0gJ0cnOworCSooaW50MTYgKikgKGJ1ZiArIDIp ID0gcGdfaHRvbjE2KGNla2FsZyk7CisjZWxzZQorCW1lbWNweShidWYsIHRlc3RfQSwgc2l6 ZW9mKHRlc3RfQSkpOworI2VuZGlmCisJbWVtY3B5KGJ1ZiArIFBHX0FEX0xFTiwgZW5jciwg ZW5jcmxlbik7CisJKihpbnQ2NCAqKSAoYnVmICsgUEdfQURfTEVOICsgZW5jcmxlbikgPSBw Z19odG9uNjQoUEdfQURfTEVOICogOCk7CisKKwlpZiAoIUVWUF9EaWdlc3RTaWduSW5pdChl dnBfbWRfY3R4LCBOVUxMLCBtZCwgTlVMTCwgcGtleSkpCisJeworCQlzbnByaW50Zihtc2di dWYsIHNpemVvZihtc2didWYpLAorCQkJCSBsaWJwcV9nZXR0ZXh0KCJkaWdlc3QgaW5pdGlh bGl6YXRpb24gZmFpbGVkOiAlcyIpLAorCQkJCSBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhF UlJfZ2V0X2Vycm9yKCkpKTsKKwkJKmVycm1zZ3AgPSBtc2didWY7CisJCWdvdG8gZmFpbDsK Kwl9CisKKwlpZiAoIUVWUF9EaWdlc3RTaWduVXBkYXRlKGV2cF9tZF9jdHgsIGJ1ZiwgYnVm c2l6ZSkpCisJeworCQlzbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAorCQkJCSBs aWJwcV9nZXR0ZXh0KCJkaWdlc3Qgc2lnbmluZyBmYWlsZWQ6ICVzIiksCisJCQkJIEVSUl9y ZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQkqZXJybXNncCA9IG1z Z2J1ZjsKKwkJZ290byBmYWlsOworCX0KKworCWlmICghRVZQX0RpZ2VzdFNpZ25GaW5hbChl dnBfbWRfY3R4LCBtZF92YWx1ZSwgbWRfbGVuX3ApKQorCXsKKwkJc25wcmludGYobXNnYnVm LCBzaXplb2YobXNnYnVmKSwKKwkJCQkgbGlicHFfZ2V0dGV4dCgiZGlnZXN0IHNpZ25pbmcg ZmFpbGVkOiAlcyIpLAorCQkJCSBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vy cm9yKCkpKTsKKwkJKmVycm1zZ3AgPSBtc2didWY7CisJCWdvdG8gZmFpbDsKKwl9CisJQXNz ZXJ0KCptZF9sZW5fcCA9PSBtZF9oYXNoX2xlbmd0aChtZCkpOworCisJLyogdHJ1bmNhdGUg b3V0cHV0IHRvIGhhbGYgdGhlIGxlbmd0aCwgcGVyIHNwZWMgKi8KKwkqbWRfbGVuX3AgLz0g MjsKKworCXJlc3VsdCA9IHRydWU7CitmYWlsOgorCWZyZWUoYnVmKTsKKwlFVlBfUEtFWV9m cmVlKHBrZXkpOworCUVWUF9NRF9DVFhfZnJlZShldnBfbWRfY3R4KTsKKwlyZXR1cm4gcmVz dWx0OworfQorCit1bnNpZ25lZCBjaGFyICoKK2RlY3J5cHRfdmFsdWUoUEdyZXN1bHQgKnJl cywgY29uc3QgUEdDRUsgKmNlaywgaW50IGNla2FsZywgY29uc3QgdW5zaWduZWQgY2hhciAq aW5wdXQsIGludCBpbnB1dGxlbiwgY29uc3QgY2hhciAqKmVycm1zZ3ApCit7CisJc3RhdGlj IGNoYXIgbXNnYnVmWzEwMjRdOworCisJY29uc3QgdW5zaWduZWQgY2hhciAqaXYgPSBOVUxM OworCXNpemVfdAkJaXZsZW47CisKKwljb25zdCBFVlBfQ0lQSEVSICpjaXBoZXI7CisJY29u c3QgRVZQX01EICptZDsKKwlFVlBfQ0lQSEVSX0NUWCAqZXZwX2NpcGhlcl9jdHggPSBOVUxM OworCWludAkJCWVuY19rZXlfbGVuOworCWludAkJCW1hY19rZXlfbGVuOworCWludAkJCWtl eV9sZW47CisJY29uc3QgdW5zaWduZWQgY2hhciAqZW5jX2tleTsKKwljb25zdCB1bnNpZ25l ZCBjaGFyICptYWNfa2V5OworCXVuc2lnbmVkIGNoYXIgbWRfdmFsdWVbRVZQX01BWF9NRF9T SVpFXTsKKwlzaXplX3QJCW1kX2xlbiA9IHNpemVvZihtZF92YWx1ZSk7CisJc2l6ZV90CQli dWZzaXplOworCXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEw7CisJdW5zaWduZWQgY2hhciAq ZGVjcjsKKwlpbnQJCQlkZWNybGVuLAorCQkJCWRlY3JsZW4yOworCisJdW5zaWduZWQgY2hh ciAqcmVzdWx0ID0gTlVMTDsKKworCWNpcGhlciA9IHBnX2Nla2FsZ190b19vcGVuc3NsX2Np cGhlcihjZWthbGcpOworCWlmICghY2lwaGVyKQorCXsKKwkJc25wcmludGYobXNnYnVmLCBz aXplb2YobXNnYnVmKSwKKwkJCQkgbGlicHFfZ2V0dGV4dCgidW5yZWNvZ25pemVkIGVuY3J5 cHRpb24gYWxnb3JpdGhtIGlkZW50aWZpZXI6ICVkIiksIGNla2FsZyk7CisJCSplcnJtc2dw ID0gbXNnYnVmOworCQlnb3RvIGZhaWw7CisJfQorCisJbWQgPSBwZ19jZWthbGdfdG9fb3Bl bnNzbF9tZChjZWthbGcpOworCWlmICghbWQpCisJeworCQlzbnByaW50Zihtc2didWYsIHNp emVvZihtc2didWYpLAorCQkJCSBsaWJwcV9nZXR0ZXh0KCJ1bnJlY29nbml6ZWQgZGlnZXN0 IGFsZ29yaXRobSBpZGVudGlmaWVyOiAlZCIpLCBjZWthbGcpOworCQkqZXJybXNncCA9IG1z Z2J1ZjsKKwkJZ290byBmYWlsOworCX0KKworCWV2cF9jaXBoZXJfY3R4ID0gRVZQX0NJUEhF Ul9DVFhfbmV3KCk7CisKKwlpZiAoIUVWUF9EZWNyeXB0SW5pdF9leChldnBfY2lwaGVyX2N0 eCwgY2lwaGVyLCBOVUxMLCBOVUxMLCBOVUxMKSkKKwl7CisJCXNucHJpbnRmKG1zZ2J1Ziwg c2l6ZW9mKG1zZ2J1ZiksCisJCQkJIGxpYnBxX2dldHRleHQoImRlY3J5cHRpb24gaW5pdGlh bGl6YXRpb24gZmFpbGVkOiAlcyIpLAorCQkJCSBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhF UlJfZ2V0X2Vycm9yKCkpKTsKKwkJKmVycm1zZ3AgPSBtc2didWY7CisJCWdvdG8gZmFpbDsK Kwl9CisKKwllbmNfa2V5X2xlbiA9IEVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGgoZXZwX2Np cGhlcl9jdHgpOworCW1hY19rZXlfbGVuID0gbWRfa2V5X2xlbmd0aChtZCk7CisJa2V5X2xl biA9IG1hY19rZXlfbGVuICsgZW5jX2tleV9sZW47CisKKwlpZiAoY2VrLT5jZWtkYXRhbGVu ICE9IGtleV9sZW4pCisJeworCQlzbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAor CQkJCSBsaWJwcV9nZXR0ZXh0KCJjb2x1bW4gZW5jcnlwdGlvbiBrZXkgaGFzIHdyb25nIGxl bmd0aCBmb3IgYWxnb3JpdGhtIChoYXM6ICV6dSwgcmVxdWlyZWQ6ICVkKSIpLAorCQkJCSBj ZWstPmNla2RhdGFsZW4sIGtleV9sZW4pOworCQkqZXJybXNncCA9IG1zZ2J1ZjsKKwkJZ290 byBmYWlsOworCX0KKworCWVuY19rZXkgPSBjZWstPmNla2RhdGEgKyBtYWNfa2V5X2xlbjsK KwltYWNfa2V5ID0gY2VrLT5jZWtkYXRhOworCisJaWYgKCFnZXRfbWVzc2FnZV9hdXRoX3Rh ZyhtZCwgbWFjX2tleSwgbWFjX2tleV9sZW4sCisJCQkJCQkJICBpbnB1dCwgaW5wdXRsZW4g LSAobWRfaGFzaF9sZW5ndGgobWQpIC8gMiksCisJCQkJCQkJICBjZWthbGcsCisJCQkJCQkJ ICBtZF92YWx1ZSwgJm1kX2xlbiwKKwkJCQkJCQkgIGVycm1zZ3ApKQorCXsKKwkJZ290byBm YWlsOworCX0KKworCWlmIChtZW1jbXAoaW5wdXQgKyAoaW5wdXRsZW4gLSBtZF9sZW4pLCBt ZF92YWx1ZSwgbWRfbGVuKSAhPSAwKQorCXsKKwkJKmVycm1zZ3AgPSBsaWJwcV9nZXR0ZXh0 KCJNQUMgbWlzbWF0Y2giKTsKKwkJZ290byBmYWlsOworCX0KKworCWl2bGVuID0gRVZQX0NJ UEhFUl9DVFhfaXZfbGVuZ3RoKGV2cF9jaXBoZXJfY3R4KTsKKwlpdiA9IGlucHV0OworCWlu cHV0ICs9IGl2bGVuOworCWlucHV0bGVuIC09IGl2bGVuOworCWlmICghRVZQX0RlY3J5cHRJ bml0X2V4KGV2cF9jaXBoZXJfY3R4LCBOVUxMLCBOVUxMLCBlbmNfa2V5LCBpdikpCisJewor CQlzbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAorCQkJCSBsaWJwcV9nZXR0ZXh0 KCJkZWNyeXB0aW9uIGluaXRpYWxpemF0aW9uIGZhaWxlZDogJXMiKSwKKwkJCQkgRVJSX3Jl YXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCSplcnJtc2dwID0gbXNn YnVmOworCQlnb3RvIGZhaWw7CisJfQorCisJYnVmc2l6ZSA9IGlucHV0bGVuICsgRVZQX0NJ UEhFUl9DVFhfYmxvY2tfc2l6ZShldnBfY2lwaGVyX2N0eCkgKyAxOworI2lmbmRlZiBURVNU X0VOQ1JZUFQKKwlidWYgPSBwcVJlc3VsdEFsbG9jKHJlcywgYnVmc2l6ZSwgZmFsc2UpOwor I2Vsc2UKKwlidWYgPSBtYWxsb2MoYnVmc2l6ZSk7CisjZW5kaWYKKwlpZiAoIWJ1ZikKKwl7 CisJCSplcnJtc2dwID0gbGlicHFfZ2V0dGV4dCgib3V0IG91dCBtZW1vcnkiKTsKKwkJZ290 byBmYWlsOworCX0KKwlkZWNyID0gYnVmOworCWlmICghRVZQX0RlY3J5cHRVcGRhdGUoZXZw X2NpcGhlcl9jdHgsIGRlY3IsICZkZWNybGVuLCBpbnB1dCwgaW5wdXRsZW4gLSBtZF9sZW4p KQorCXsKKwkJc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKKwkJCQkgbGlicHFf Z2V0dGV4dCgiZGVjcnlwdGlvbiBmYWlsZWQ6ICVzIiksCisJCQkJIEVSUl9yZWFzb25fZXJy b3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQkqZXJybXNncCA9IG1zZ2J1ZjsKKwkJ Z290byBmYWlsOworCX0KKwlpZiAoIUVWUF9EZWNyeXB0RmluYWxfZXgoZXZwX2NpcGhlcl9j dHgsIGRlY3IgKyBkZWNybGVuLCAmZGVjcmxlbjIpKQorCXsKKwkJc25wcmludGYobXNnYnVm LCBzaXplb2YobXNnYnVmKSwKKwkJCQkgbGlicHFfZ2V0dGV4dCgiZGVjcnlwdGlvbiBmYWls ZWQ6ICVzIiksCisJCQkJIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3Io KSkpOworCQkqZXJybXNncCA9IG1zZ2J1ZjsKKwkJZ290byBmYWlsOworCX0KKwlkZWNybGVu ICs9IGRlY3JsZW4yOworCUFzc2VydChkZWNybGVuIDwgYnVmc2l6ZSk7CisJZGVjcltkZWNy bGVuXSA9ICdcMCc7CisJcmVzdWx0ID0gZGVjcjsKKworZmFpbDoKKwlFVlBfQ0lQSEVSX0NU WF9mcmVlKGV2cF9jaXBoZXJfY3R4KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKyNpZm5k ZWYgVEVTVF9FTkNSWVBUCitzdGF0aWMgYm9vbAorbWFrZV9zaXYoUEdjb25uICpjb25uLAor CQkgdW5zaWduZWQgY2hhciAqaXYsIHNpemVfdCBpdmxlbiwKKwkJIGNvbnN0IEVWUF9NRCAq bWQsCisJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppdl9rZXksIGludCBpdl9rZXlfbGVuLAor CQkgY29uc3QgdW5zaWduZWQgY2hhciAqcGxhaW50ZXh0LCBpbnQgcGxhaW50ZXh0X2xlbikK K3sKKwlFVlBfTURfQ1RYICpldnBfbWRfY3R4ID0gTlVMTDsKKwlFVlBfUEtFWSAgICpwa2V5 ID0gTlVMTDsKKwl1bnNpZ25lZCBjaGFyIG1kX3ZhbHVlW0VWUF9NQVhfTURfU0laRV07CisJ c2l6ZV90CQltZF9sZW4gPSBzaXplb2YobWRfdmFsdWUpOworCWJvb2wJCXJlc3VsdCA9IGZh bHNlOworCisJZXZwX21kX2N0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisKKwlwa2V5ID0gRVZQ X1BLRVlfbmV3X3Jhd19wcml2YXRlX2tleShFVlBfUEtFWV9ITUFDLCBOVUxMLCBpdl9rZXks IGl2X2tleV9sZW4pOworCWlmICghcGtleSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBh bGxvY2F0ZSBrZXkgZm9yIEhNQUM6ICVzXG4iKSwKKwkJCQkJCSAgRVJSX3JlYXNvbl9lcnJv cl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlpZiAo IUVWUF9EaWdlc3RTaWduSW5pdChldnBfbWRfY3R4LCBOVUxMLCBtZCwgTlVMTCwgcGtleSkp CisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJ ICBsaWJwcV9nZXR0ZXh0KCJkaWdlc3QgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAlc1xuIiks CisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOwor CQlnb3RvIGZhaWw7CisJfQorCisJaWYgKCFFVlBfRGlnZXN0U2lnblVwZGF0ZShldnBfbWRf Y3R4LCBwbGFpbnRleHQsIHBsYWludGV4dF9sZW4pKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZm ZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiZGlnZXN0 IHNpZ25pbmcgZmFpbGVkOiAlc1xuIiksCisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3Ry aW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQlnb3RvIGZhaWw7CisJfQorCisJaWYgKCFFVlBf RGlnZXN0U2lnbkZpbmFsKGV2cF9tZF9jdHgsIG1kX3ZhbHVlLCAmbWRfbGVuKSkKKwl7CisJ CWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBx X2dldHRleHQoImRpZ2VzdCBzaWduaW5nIGZhaWxlZDogJXMiKSwKKwkJCQkJCSAgRVJSX3Jl YXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCWdvdG8gZmFpbDsKKwl9 CisJQXNzZXJ0KG1kX2xlbiA9PSBtZF9oYXNoX2xlbmd0aChtZCkpOworCW1lbWNweShpdiwg bWRfdmFsdWUsIGl2bGVuKTsKKworCXJlc3VsdCA9IHRydWU7CitmYWlsOgorCUVWUF9QS0VZ X2ZyZWUocGtleSk7CisJRVZQX01EX0NUWF9mcmVlKGV2cF9tZF9jdHgpOworCXJldHVybiBy ZXN1bHQ7Cit9CisjZW5kaWYJCQkJCQkJLyogVEVTVF9FTkNSWVBUICovCisKK3Vuc2lnbmVk IGNoYXIgKgorZW5jcnlwdF92YWx1ZShQR2Nvbm4gKmNvbm4sIGNvbnN0IFBHQ0VLICpjZWss IGludCBjZWthbGcsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnZhbHVlLCBpbnQgKm5ieXRlc3As IGJvb2wgZW5jX2RldCkKK3sKKwlpbnQJCQluYnl0ZXMgPSAqbmJ5dGVzcDsKKwl1bnNpZ25l ZCBjaGFyIGl2W0VWUF9NQVhfSVZfTEVOR1RIXTsKKwlzaXplX3QJCWl2bGVuOworCWNvbnN0 IEVWUF9DSVBIRVIgKmNpcGhlcjsKKwljb25zdCBFVlBfTUQgKm1kOworCUVWUF9DSVBIRVJf Q1RYICpldnBfY2lwaGVyX2N0eCA9IE5VTEw7CisJaW50CQkJZW5jX2tleV9sZW47CisJaW50 CQkJbWFjX2tleV9sZW47CisJaW50CQkJa2V5X2xlbjsKKwljb25zdCB1bnNpZ25lZCBjaGFy ICplbmNfa2V5OworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKm1hY19rZXk7CisJc2l6ZV90CQli dWZzaXplOworCXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEw7CisJdW5zaWduZWQgY2hhciAq ZW5jcjsKKwlpbnQJCQllbmNybGVuLAorCQkJCWVuY3JsZW4yOworCisJY29uc3QgY2hhciAq ZXJybXNnOworCXVuc2lnbmVkIGNoYXIgbWRfdmFsdWVbRVZQX01BWF9NRF9TSVpFXTsKKwlz aXplX3QJCW1kX2xlbiA9IHNpemVvZihtZF92YWx1ZSk7CisJc2l6ZV90CQlidWYyc2l6ZTsK Kwl1bnNpZ25lZCBjaGFyICpidWYyID0gTlVMTDsKKworCXVuc2lnbmVkIGNoYXIgKnJlc3Vs dCA9IE5VTEw7CisKKwljaXBoZXIgPSBwZ19jZWthbGdfdG9fb3BlbnNzbF9jaXBoZXIoY2Vr YWxnKTsKKwlpZiAoIWNpcGhlcikKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5l cnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoInVucmVjb2duaXplZCBlbmNy eXB0aW9uIGFsZ29yaXRobSBpZGVudGlmaWVyOiAlZFxuIiksIGNla2FsZyk7CisJCWdvdG8g ZmFpbDsKKwl9CisKKwltZCA9IHBnX2Nla2FsZ190b19vcGVuc3NsX21kKGNla2FsZyk7CisJ aWYgKCFtZCkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2Us CisJCQkJCQkgIGxpYnBxX2dldHRleHQoInVucmVjb2duaXplZCBkaWdlc3QgYWxnb3JpdGht IGlkZW50aWZpZXI6ICVkXG4iKSwgY2VrYWxnKTsKKwkJZ290byBmYWlsOworCX0KKworCWV2 cF9jaXBoZXJfY3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7CisKKwlpZiAoIUVWUF9FbmNy eXB0SW5pdF9leChldnBfY2lwaGVyX2N0eCwgY2lwaGVyLCBOVUxMLCBOVUxMLCBOVUxMKSkK Kwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkg IGxpYnBxX2dldHRleHQoImVuY3J5cHRpb24gaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAlc1xu IiksCisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkp OworCQlnb3RvIGZhaWw7CisJfQorCisJZW5jX2tleV9sZW4gPSBFVlBfQ0lQSEVSX0NUWF9r ZXlfbGVuZ3RoKGV2cF9jaXBoZXJfY3R4KTsKKwltYWNfa2V5X2xlbiA9IG1kX2tleV9sZW5n dGgobWQpOworCWtleV9sZW4gPSBtYWNfa2V5X2xlbiArIGVuY19rZXlfbGVuOworCisJaWYg KGNlay0+Y2VrZGF0YWxlbiAhPSBrZXlfbGVuKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY29sdW1uIGVu Y3J5cHRpb24ga2V5IGhhcyB3cm9uZyBsZW5ndGggZm9yIGFsZ29yaXRobSAoaGFzOiAlenUs IHJlcXVpcmVkOiAlZClcbiIpLAorCQkJCQkJICBjZWstPmNla2RhdGFsZW4sIGtleV9sZW4p OworCQlnb3RvIGZhaWw7CisJfQorCisJZW5jX2tleSA9IGNlay0+Y2VrZGF0YSArIG1hY19r ZXlfbGVuOworCW1hY19rZXkgPSBjZWstPmNla2RhdGE7CisKKwlpdmxlbiA9IEVWUF9DSVBI RVJfQ1RYX2l2X2xlbmd0aChldnBfY2lwaGVyX2N0eCk7CisJQXNzZXJ0KGl2bGVuIDw9IHNp emVvZihpdikpOworCWlmIChlbmNfZGV0KQorCXsKKyNpZm5kZWYgVEVTVF9FTkNSWVBUCisJ CW1ha2Vfc2l2KGNvbm4sIGl2LCBpdmxlbiwgbWQsIG1hY19rZXksIG1hY19rZXlfbGVuLCB2 YWx1ZSwgbmJ5dGVzKTsKKyNlbHNlCisJCW1lbWNweShpdiwgdGVzdF9JViwgaXZsZW4pOwor I2VuZGlmCisJfQorCWVsc2UKKwkJcGdfc3Ryb25nX3JhbmRvbShpdiwgaXZsZW4pOworCWlm ICghRVZQX0VuY3J5cHRJbml0X2V4KGV2cF9jaXBoZXJfY3R4LCBOVUxMLCBOVUxMLCBlbmNf a2V5LCBpdikpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJlbmNyeXB0aW9uIGluaXRpYWxpemF0aW9uIGZh aWxlZDogJXNcbiIpLAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0 X2Vycm9yKCkpKTsKKwkJZ290byBmYWlsOworCX0KKworCWJ1ZnNpemUgPSBpdmxlbiArIChu Ynl0ZXMgKyAyICogRVZQX0NJUEhFUl9DVFhfYmxvY2tfc2l6ZShldnBfY2lwaGVyX2N0eCkg LSAxKTsKKwlidWYgPSBtYWxsb2MoYnVmc2l6ZSk7CisJaWYgKCFidWYpCisJeworCQlhcHBl bmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0 ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCWdvdG8gZmFpbDsKKwl9CisJbWVtY3B5KGJ1 ZiwgaXYsIGl2bGVuKTsKKwllbmNyID0gYnVmICsgaXZsZW47CisJaWYgKCFFVlBfRW5jcnlw dFVwZGF0ZShldnBfY2lwaGVyX2N0eCwgZW5jciwgJmVuY3JsZW4sIHZhbHVlLCBuYnl0ZXMp KQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJ CSAgbGlicHFfZ2V0dGV4dCgiZW5jcnlwdGlvbiBmYWlsZWQ6ICVzXG4iKSwKKwkJCQkJCSAg RVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCWdvdG8gZmFp bDsKKwl9CisJaWYgKCFFVlBfRW5jcnlwdEZpbmFsX2V4KGV2cF9jaXBoZXJfY3R4LCBlbmNy ICsgZW5jcmxlbiwgJmVuY3JsZW4yKSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25u LT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoImVuY3J5cHRpb24gZmFp bGVkOiAlc1xuIiksCisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRf ZXJyb3IoKSkpOworCQlnb3RvIGZhaWw7CisJfQorCWVuY3JsZW4gKz0gZW5jcmxlbjI7CisK KwllbmNyIC09IGl2bGVuOworCWVuY3JsZW4gKz0gaXZsZW47CisKKwlBc3NlcnQoZW5jcmxl biA8PSBidWZzaXplKTsKKworCWlmICghZ2V0X21lc3NhZ2VfYXV0aF90YWcobWQsIG1hY19r ZXksIG1hY19rZXlfbGVuLAorCQkJCQkJCSAgZW5jciwgZW5jcmxlbiwKKwkJCQkJCQkgIGNl a2FsZywKKwkJCQkJCQkgIG1kX3ZhbHVlLCAmbWRfbGVuLAorCQkJCQkJCSAgJmVycm1zZykp CisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLCAiJXNcbiIs IGVycm1zZyk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlidWYyc2l6ZSA9IGVuY3JsZW4gKyBt ZF9sZW47CisJYnVmMiA9IG1hbGxvYyhidWYyc2l6ZSk7CisJaWYgKCFidWYyKQorCXsKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFf Z2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlnb3RvIGZhaWw7CisJfQorCW1lbWNw eShidWYyLCBlbmNyLCBlbmNybGVuKTsKKwltZW1jcHkoYnVmMiArIGVuY3JsZW4sIG1kX3Zh bHVlLCBtZF9sZW4pOworCisJcmVzdWx0ID0gYnVmMjsKKwluYnl0ZXMgPSBidWYyc2l6ZTsK KworZmFpbDoKKwlmcmVlKGJ1Zik7CisJRVZQX0NJUEhFUl9DVFhfZnJlZShldnBfY2lwaGVy X2N0eCk7CisKKwkqbmJ5dGVzcCA9IG5ieXRlczsKKwlyZXR1cm4gcmVzdWx0OworfQorCisK Ky8qCisgKiBSdW4gdGVzdCBjYXNlcworICovCisjaWZkZWYgVEVTVF9FTkNSWVBUCisKK3N0 YXRpYyB2b2lkCitkZWJ1Z19wcmludF9oZXgoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgdW5z aWduZWQgY2hhciAqdmFsLCBpbnQgbGVuKQoreworCXByaW50ZigiJXMgPSIsIG5hbWUpOwor CWZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspCisJeworCQlpZiAoaSAlIDE2ID09IDAp CisJCQlwcmludGYoIlxuIik7CisJCWVsc2UKKwkJCXByaW50ZigiICIpOworCQlwcmludGYo IiUwMngiLCB2YWxbaV0pOworCX0KKwlwcmludGYoIlxuIik7Cit9CisKK3N0YXRpYyB2b2lk Cit0ZXN0X2Nhc2UoaW50IGFsZywgY29uc3QgdW5zaWduZWQgY2hhciAqSywgc2l6ZV90IEtf bGVuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpQLCBzaXplX3QgUF9sZW4pCit7CisJdW5zaWdu ZWQgY2hhciAqQzsKKwlpbnQJCQluYnl0ZXM7CisJUEdDRUsJCWNlazsKKworCW5ieXRlcyA9 IFBfbGVuOworCWNlay5jZWtkYXRhID0gdW5jb25zdGlmeSh1bnNpZ25lZCBjaGFyICosIEsp OworCWNlay5jZWtkYXRhbGVuID0gS19sZW47CisKKwlDID0gZW5jcnlwdF92YWx1ZShOVUxM LCAmY2VrLCBhbGcsIFAsICZuYnl0ZXMsIHRydWUpOworCWRlYnVnX3ByaW50X2hleCgiQyIs IEMsIG5ieXRlcyk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7 CisJcHJpbnRmKCI1LjFcbiIpOworCXRlc3RfY2FzZShQR19DRUtfQUVBRF9BRVNfMTI4X0NC Q19ITUFDX1NIQV8yNTYsIEssIDMyLCBQLCBzaXplb2YoUCkpOworCXByaW50ZigiNS4yXG4i KTsKKwl0ZXN0X2Nhc2UoUEdfQ0VLX0FFQURfQUVTXzE5Ml9DQkNfSE1BQ19TSEFfMzg0LCBL LCA0OCwgUCwgc2l6ZW9mKFApKTsKKwlwcmludGYoIjUuM1xuIik7CisJdGVzdF9jYXNlKFBH X0NFS19BRUFEX0FFU18yNTZfQ0JDX0hNQUNfU0hBXzM4NCwgSywgNTYsIFAsIHNpemVvZihQ KSk7CisJcHJpbnRmKCI1LjRcbiIpOworCXRlc3RfY2FzZShQR19DRUtfQUVBRF9BRVNfMjU2 X0NCQ19ITUFDX1NIQV81MTIsIEssIDY0LCBQLCBzaXplb2YoUCkpOworCisJcmV0dXJuIDA7 Cit9CisKKyNlbmRpZgkJCQkJCQkvKiBURVNUX0VOQ1JZUFQgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWVuY3J5cHQuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWVuY3J5cHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5i MDA5M2RjNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt ZW5jcnlwdC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIGZlLWVuY3J5cHQuaAorICoKKyAqIGVuY3J5cHRpb24gc3VwcG9ydAorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRz IG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElP TgorICoJICBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LmgKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZuZGVmIEZFX0VOQ1JZUFRfSAorI2RlZmluZSBG RV9FTkNSWVBUX0gKKworI2luY2x1ZGUgImxpYnBxLWZlLmgiCisjaW5jbHVkZSAibGlicHEt aW50LmgiCisKK2V4dGVybiB1bnNpZ25lZCBjaGFyICpkZWNyeXB0X2Nla19mcm9tX2ZpbGUo UEdjb25uICpjb25uLCBGSUxFICpmcCwgaW50IGNta2FsZywKKwkJCQkJCQkJCQkJaW50IGZy b21sZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyb20sCisJCQkJCQkJCQkJCWludCAqdG9s ZW4pOworCitleHRlcm4gdW5zaWduZWQgY2hhciAqZGVjcnlwdF92YWx1ZShQR3Jlc3VsdCAq cmVzLCBjb25zdCBQR0NFSyAqY2VrLCBpbnQgY2VrYWxnLAorCQkJCQkJCQkJY29uc3QgdW5z aWduZWQgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwKKwkJCQkJCQkJCWNvbnN0IGNoYXIg KiplcnJtc2dwKTsKKworZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKmVuY3J5cHRfdmFsdWUoUEdj b25uICpjb25uLCBjb25zdCBQR0NFSyAqY2VrLCBpbnQgY2VrYWxnLAorCQkJCQkJCQkJY29u c3QgdW5zaWduZWQgY2hhciAqdmFsdWUsIGludCAqbmJ5dGVzcCwgYm9vbCBlbmNfZGV0KTsK KworI2VuZGlmCQkJCQkJCS8qIEZFX0VOQ1JZUFRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhl Yy5jCmluZGV4IDUxZTlhMzYyZjYuLjJlM2MwMjk1ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1l eGVjLmMKQEAgLTI0LDYgKzI0LDkgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgog CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xlbmNrZXkuaCIKKyNpbmNsdWRlICJjb21tb24v YmFzZTY0LmgiCisjaW5jbHVkZSAiZmUtZW5jcnlwdC5oIgogI2luY2x1ZGUgImxpYnBxLWZl LmgiCiAjaW5jbHVkZSAibGlicHEtaW50LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIK QEAgLTcyLDcgKzc1LDkgQEAgc3RhdGljIGludAlQUXNlbmRRdWVyeUd1dHMoUEdjb25uICpj b25uLAogCQkJCQkJCWNvbnN0IGNoYXIgKmNvbnN0ICpwYXJhbVZhbHVlcywKIAkJCQkJCQlj b25zdCBpbnQgKnBhcmFtTGVuZ3RocywKIAkJCQkJCQljb25zdCBpbnQgKnBhcmFtRm9ybWF0 cywKLQkJCQkJCQlpbnQgcmVzdWx0Rm9ybWF0KTsKKwkJCQkJCQljb25zdCBpbnQgKnBhcmFt Rm9yY2VDb2x1bW5FbmNyeXB0aW9ucywKKwkJCQkJCQlpbnQgcmVzdWx0Rm9ybWF0LAorCQkJ CQkJCVBHcmVzdWx0ICpwYXJhbURlc2MpOwogc3RhdGljIHZvaWQgcGFyc2VJbnB1dChQR2Nv bm4gKmNvbm4pOwogc3RhdGljIFBHcmVzdWx0ICpnZXRDb3B5UmVzdWx0KFBHY29ubiAqY29u biwgRXhlY1N0YXR1c1R5cGUgY29weXR5cGUpOwogc3RhdGljIGJvb2wgUFFleGVjU3RhcnQo UEdjb25uICpjb25uKTsKQEAgLTExODUsNiArMTE5MCwzODEgQEAgcHFTYXZlUGFyYW1ldGVy U3RhdHVzKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFs dWUpCiAJfQogfQogCitpbnQKK3BxU2F2ZUNvbHVtbk1hc3RlcktleShQR2Nvbm4gKmNvbm4s IGludCBrZXlpZCwgY29uc3QgY2hhciAqa2V5bmFtZSwKKwkJCQkJICBjb25zdCBjaGFyICpr ZXlyZWFsbSkKK3sKKwljaGFyCSAgICprZXluYW1lX2NvcHk7CisJY2hhcgkgICAqa2V5cmVh bG1fY29weTsKKwlib29sCQlmb3VuZDsKKworCWtleW5hbWVfY29weSA9IHN0cmR1cChrZXlu YW1lKTsKKwlpZiAoIWtleW5hbWVfY29weSkKKwkJcmV0dXJuIEVPRjsKKwlrZXlyZWFsbV9j b3B5ID0gc3RyZHVwKGtleXJlYWxtKTsKKwlpZiAoIWtleXJlYWxtX2NvcHkpCisJeworCQlm cmVlKGtleW5hbWVfY29weSk7CisJCXJldHVybiBFT0Y7CisJfQorCisJZm91bmQgPSBmYWxz ZTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGNvbm4tPm5jbWtzOyBpKyspCisJeworCQlzdHJ1 Y3QgcGdfY21rICpjaGVja2NtayA9ICZjb25uLT5jbWtzW2ldOworCisJCS8qIHJlcGxhY2Ug ZXhpc3Rpbmc/ICovCisJCWlmIChjaGVja2Ntay0+Y21raWQgPT0ga2V5aWQpCisJCXsKKwkJ CWZyZWUoY2hlY2tjbWstPmNta25hbWUpOworCQkJZnJlZShjaGVja2Ntay0+Y21rcmVhbG0p OworCQkJY2hlY2tjbWstPmNta25hbWUgPSBrZXluYW1lX2NvcHk7CisJCQljaGVja2Ntay0+ Y21rcmVhbG0gPSBrZXlyZWFsbV9jb3B5OworCQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7 CisJCX0KKwl9CisKKwkvKiBhcHBlbmQgbmV3PyAqLworCWlmICghZm91bmQpCisJeworCQlp bnQJCQluZXduY21rczsKKwkJc3RydWN0IHBnX2NtayAqbmV3Y21rczsKKwkJc3RydWN0IHBn X2NtayAqbmV3Y21rOworCisJCW5ld25jbWtzID0gY29ubi0+bmNta3MgKyAxOworCQlpZiAo bmV3bmNta3MgPD0gMCkKKwkJCXJldHVybiBFT0Y7CisJCW5ld2Nta3MgPSByZWFsbG9jKGNv bm4tPmNta3MsIG5ld25jbWtzICogc2l6ZW9mKHN0cnVjdCBwZ19jbWspKTsKKwkJaWYgKCFu ZXdjbWtzKQorCQl7CisJCQlmcmVlKGtleW5hbWVfY29weSk7CisJCQlmcmVlKGtleXJlYWxt X2NvcHkpOworCQkJcmV0dXJuIEVPRjsKKwkJfQorCisJCW5ld2NtayA9ICZuZXdjbWtzW25l d25jbWtzIC0gMV07CisJCW5ld2Ntay0+Y21raWQgPSBrZXlpZDsKKwkJbmV3Y21rLT5jbWtu YW1lID0ga2V5bmFtZV9jb3B5OworCQluZXdjbWstPmNta3JlYWxtID0ga2V5cmVhbG1fY29w eTsKKworCQljb25uLT5uY21rcyA9IG5ld25jbWtzOworCQljb25uLT5jbWtzID0gbmV3Y21r czsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFJlcGxhY2UgcGxhY2Vob2xkZXJz IGluIGlucHV0IHN0cmluZy4gIFJldHVybiB2YWx1ZSBtYWxsb2MnZWQuCisgKi8KK3N0YXRp YyBjaGFyICoKK3JlcGxhY2VfY21rX3BsYWNlaG9sZGVycyhjb25zdCBjaGFyICppbiwgY29u c3QgY2hhciAqY21rbmFtZSwgY29uc3QgY2hhciAqY21rcmVhbG0sIGludCBjbWthbGcsIGNv bnN0IGNoYXIgKmI2NGRhdGEpCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKworCWluaXRQ UUV4cEJ1ZmZlcigmYnVmKTsKKworCWZvciAoY29uc3QgY2hhciAqcCA9IGluOyAqcDsgcCsr KQorCXsKKwkJaWYgKHBbMF0gPT0gJyUnKQorCQl7CisJCQlzd2l0Y2ggKHBbMV0pCisJCQl7 CisJCQkJY2FzZSAnYSc6CisJCQkJCXsKKwkJCQkJCWNvbnN0IGNoYXIgKnM7CisKKwkJCQkJ CXN3aXRjaCAoY21rYWxnKQorCQkJCQkJeworCQkJCQkJCWNhc2UgUEdfQ01LX1JTQUVTX09B RVBfU0hBXzE6CisJCQkJCQkJCXMgPSAiUlNBRVNfT0FFUF9TSEFfMSI7CisJCQkJCQkJCWJy ZWFrOworCQkJCQkJCWNhc2UgUEdfQ01LX1JTQUVTX09BRVBfU0hBXzI1NjoKKwkJCQkJCQkJ cyA9ICJSU0FFU19PQUVQX1NIQV8yNTYiOworCQkJCQkJCQlicmVhazsKKwkJCQkJCQlkZWZh dWx0OgorCQkJCQkJCQlzID0gIklOVkFMSUQiOworCQkJCQkJfQorCQkJCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmJ1Ziwgcyk7CisJCQkJCX0KKwkJCQkJcCsrOworCQkJCQlicmVhazsK KwkJCQljYXNlICdiJzoKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgYjY0ZGF0 YSk7CisJCQkJCXArKzsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnayc6CisJCQkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsIGNta25hbWUpOworCQkJCQlwKys7CisJCQkJCWJyZWFr OworCQkJCWNhc2UgJ3InOgorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCBjbWty ZWFsbSk7CisJCQkJCXArKzsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJYXBw ZW5kUFFFeHBCdWZmZXJDaGFyKCZidWYsIHBbMF0pOworCQkJfQorCQl9CisJCWVsc2UKKwkJ CWFwcGVuZFBRRXhwQnVmZmVyQ2hhcigmYnVmLCBwWzBdKTsKKwl9CisKKwlyZXR1cm4gYnVm LmRhdGE7Cit9CisKKyNpZm5kZWYgVVNFX1NTTAorLyoKKyAqIER1bW15IGltcGxlbWVudGF0 aW9uIGZvciBub24tU1NMIGJ1aWxkcworICovCit1bnNpZ25lZCBjaGFyICoKK2RlY3J5cHRf Y2VrX2Zyb21fZmlsZShQR2Nvbm4gKmNvbm4sIEZJTEUgKmZwLCBpbnQgY21rYWxnLAorCQkJ CQkgIGludCBmcm9tbGVuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tLAorCQkJCQkgIGlu dCAqdG9sZW4pCit7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK KwkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb2x1bW4gZW5jcnlwdGlvbiBub3Qgc3VwcG9ydGVk IGJ5IHRoaXMgYnVpbGRcbiIpKTsKKwlyZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCisvKgor ICogRGVjcnlwdCBhIENFSyB1c2luZyB0aGUgZ2l2ZW4gQ01LLiAgVGhlIGNpcGhlcnRleHQg aXMgcGFzc2VkIGluCisgKiAiZnJvbSIgYW5kICJmcm9tbGVuIi4gIFJldHVybiB0aGUgZGVj cnlwdGVkIHZhbHVlIGluIGEgbWFsbG9jJ2VkIGFyZWEsIGl0cworICogbGVuZ3RoIHZpYSAi dG9sZW4iLiAgUmV0dXJuIE5VTEwgb24gZXJyb3I7IGFkZCBlcnJvciBtZXNzYWdlcyBkaXJl Y3RseSB0bworICogImNvbm4iLgorICovCitzdGF0aWMgdW5zaWduZWQgY2hhciAqCitkZWNy eXB0X2NlayhQR2Nvbm4gKmNvbm4sIGNvbnN0IFBHQ01LICpjbWssIGludCBjbWthbGcsCisJ CQlpbnQgZnJvbWxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKKwkJCWludCAqdG9s ZW4pCit7CisJY2hhcgkgICAqY21rbG9va3VwOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJ dW5zaWduZWQgY2hhciAqcmVzdWx0ID0gTlVMTDsKKworCWNta2xvb2t1cCA9IHN0cmR1cChj b25uLT5jbWtsb29rdXAgPyBjb25uLT5jbWtsb29rdXAgOiAiIik7CisKKwlpZiAoIWNta2xv b2t1cCkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsIGxp YnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsKKwkJcmV0dXJuIE5VTEw7CisJfQor CisJLyoKKwkgKiBBbmFseXplIHNlbWljb2xvbi1zZXBhcmF0ZWQgbGlzdAorCSAqLworCWZv ciAoY2hhciAqcyA9IHN0cnRvayhjbWtsb29rdXAsICI7Iik7IHM7IHMgPSBzdHJ0b2soTlVM TCwgIjsiKSkKKwl7CisJCWNoYXIJICAgKnNlcDsKKworCQkvKiBzcGxpdCBmb3VuZCB0b2tl biBhdCAnPScgKi8KKwkJc2VwID0gc3RyY2hyKHMsICc9Jyk7CisJCWlmICghc2VwKQorCQl7 CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAg bGlicHFfZ2V0dGV4dCgic3ludGF4IGVycm9yIGluIENNSyBsb29rdXAgc3BlY2lmaWNhdGlv biwgbWlzc2luZyBcIiVjXCI6ICVzXG4iKSwgJz0nLCBzKTsKKwkJCWJyZWFrOworCQl9CisK KwkJLyogbWF0Y2hpbmcgcmVhbG0/ICovCisJCWlmIChzdHJuY21wKHMsICIqIiwgc2VwIC0g cykgPT0gMCB8fCBzdHJuY21wKHMsIGNtay0+Y21rcmVhbG0sIHNlcCAtIHMpID09IDApCisJ CXsKKwkJCWNoYXIJICAgKnNlcDI7CisKKwkJCWZvdW5kID0gdHJ1ZTsKKworCQkJc2VwMiA9 IHN0cmNocihzZXAsICc6Jyk7CisJCQlpZiAoIXNlcDIpCisJCQl7CisJCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJzeW50YXggZXJyb3IgaW4gQ01LIGxvb2t1cCBzcGVjaWZpY2F0aW9uLCBtaXNzaW5nIFwi JWNcIjogJXNcbiIpLCAnOicsIHMpOworCQkJCWdvdG8gZmFpbDsKKwkJCX0KKworCQkJaWYg KHN0cm5jbXAoc2VwICsgMSwgImZpbGUiLCBzZXAyIC0gKHNlcCArIDEpKSA9PSAwKQorCQkJ eworCQkJCWNoYXIJICAgKmNta2ZpbGVuYW1lOworCQkJCUZJTEUJICAgKmZwOworCisJCQkJ Y21rZmlsZW5hbWUgPSByZXBsYWNlX2Nta19wbGFjZWhvbGRlcnMoc2VwMiArIDEsIGNtay0+ Y21rbmFtZSwgY21rLT5jbWtyZWFsbSwgY21rYWxnLCAiSU5WQUxJRCIpOworCQkJCWZwID0g Zm9wZW4oY21rZmlsZW5hbWUsICJyYiIpOworCQkJCWlmIChmcCkKKwkJCQl7CisJCQkJCXJl c3VsdCA9IGRlY3J5cHRfY2VrX2Zyb21fZmlsZShjb25uLCBmcCwgY21rYWxnLCBmcm9tbGVu LCBmcm9tLCB0b2xlbik7CisJCQkJCWZjbG9zZShmcCk7CisJCQkJfQorCQkJCWVsc2UKKwkJ CQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJ CQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbVxu IiksIGNta2ZpbGVuYW1lKTsKKwkJCQkJZnJlZShjbWtmaWxlbmFtZSk7CisJCQkJCWdvdG8g ZmFpbDsKKwkJCQl9CisJCQkJZnJlZShjbWtmaWxlbmFtZSk7CisJCQl9CisJCQllbHNlIGlm IChzdHJuY21wKHNlcCArIDEsICJydW4iLCBzZXAyIC0gKHNlcCArIDEpKSA9PSAwKQorCQkJ eworCQkJCWludAkJCWVuY2xlbjsKKwkJCQljaGFyCSAgICplbmM7CisJCQkJY2hhcgkgICAq Y29tbWFuZDsKKwkJCQlGSUxFCSAgICpmcDsKKwkJCQljaGFyCQlidWZbNDA5Nl07CisKKwkJ CQllbmNsZW4gPSBwZ19iNjRfZW5jX2xlbihmcm9tbGVuKTsKKwkJCQllbmMgPSBtYWxsb2Mo ZW5jbGVuICsgMSk7CisJCQkJaWYgKCFlbmMpCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLCBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5 XG4iKSk7CisJCQkJCWdvdG8gZmFpbDsKKwkJCQl9CisJCQkJZW5jbGVuID0gcGdfYjY0X2Vu Y29kZSgoY29uc3QgY2hhciAqKSBmcm9tLCBmcm9tbGVuLCBlbmMsIGVuY2xlbik7CisJCQkJ aWYgKGVuY2xlbiA8IDApCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ ZXJyb3JNZXNzYWdlLCBsaWJwcV9nZXR0ZXh0KCJiYXNlNjQgZW5jb2RpbmcgZmFpbGVkXG4i KSk7CisJCQkJCWZyZWUoZW5jKTsKKwkJCQkJZ290byBmYWlsOworCQkJCX0KKwkJCQljb21t YW5kID0gcmVwbGFjZV9jbWtfcGxhY2Vob2xkZXJzKHNlcDIgKyAxLCBjbWstPmNta25hbWUs IGNtay0+Y21rcmVhbG0sIGNta2FsZywgZW5jKTsKKwkJCQlmcmVlKGVuYyk7CisJCQkJZnAg PSBwb3Blbihjb21tYW5kLCAiciIpOworCQkJCWZyZWUoY29tbWFuZCk7CisJCQkJaWYgKCFm cCkKKwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2Us CisJCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBydW4gY29tbWFuZCBcIiVz XCI6ICVtXG4iKSwgY29tbWFuZCk7CisJCQkJCWdvdG8gZmFpbDsKKwkJCQl9CisJCQkJaWYg KGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSkKKwkJCQl7CisJCQkJCWludAkJCWxpbmVs ZW47CisJCQkJCWludAkJCWRlY2xlbjsKKwkJCQkJY2hhcgkgICAqZGVjOworCisJCQkJCWxp bmVsZW4gPSBzdHJsZW4oYnVmKTsKKwkJCQkJaWYgKGJ1ZltsaW5lbGVuIC0gMV0gPT0gJ1xu JykKKwkJCQkJeworCQkJCQkJYnVmW2xpbmVsZW4gLSAxXSA9ICdcMCc7CisJCQkJCQlsaW5l bGVuLS07CisJCQkJCX0KKwkJCQkJZGVjbGVuID0gcGdfYjY0X2RlY19sZW4obGluZWxlbik7 CisJCQkJCWRlYyA9IG1hbGxvYyhkZWNsZW4pOworCQkJCQlpZiAoIWRlYykKKwkJCQkJewor CQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwgbGlicHFfZ2V0 dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQkJCQkJZ290byBmYWlsOworCQkJCQl9CisJ CQkJCWRlY2xlbiA9IHBnX2I2NF9kZWNvZGUoYnVmLCBsaW5lbGVuLCBkZWMsIGRlY2xlbik7 CisJCQkJCWlmIChkZWNsZW4gPCAwKQorCQkJCQl7CisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl cigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiYmFz ZTY0IGRlY29kaW5nIGZhaWxlZFxuIikpOworCQkJCQkJZnJlZShkZWMpOworCQkJCQkJZ290 byBmYWlsOworCQkJCQl9CisJCQkJCXJlc3VsdCA9ICh1bnNpZ25lZCBjaGFyICopIGRlYzsK KwkJCQkJKnRvbGVuID0gZGVjbGVuOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJICBsaWJw cV9nZXR0ZXh0KCJjb3VsZCBub3QgcmVhZCBmcm9tIGNvbW1hbmQ6ICVtXG4iKSk7CisJCQkJ CXBjbG9zZShmcCk7CisJCQkJCWdvdG8gZmFpbDsKKwkJCQl9CisJCQkJcGNsb3NlKGZwKTsK KwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJy b3JNZXNzYWdlLAorCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoIkNNSyBsb29rdXAgc2NoZW1l IFwiJXNcIiBub3QgcmVjb2duaXplZFxuIiksIHNlcCArIDEpOworCQkJCWdvdG8gZmFpbDsK KwkJCX0KKwkJfQorCX0KKworCWlmICghZm91bmQpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZl cigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJubyBDTUsg bG9va3VwIGZvdW5kIGZvciByZWFsbSBcIiVzXCJcbiIpLCBjbWstPmNta3JlYWxtKTsKKwl9 CisKK2ZhaWw6CisJZnJlZShjbWtsb29rdXApOworCXJldHVybiByZXN1bHQ7Cit9CisKK2lu dAorcHFTYXZlQ29sdW1uRW5jcnlwdGlvbktleShQR2Nvbm4gKmNvbm4sIGludCBrZXlpZCwg aW50IGNta2lkLCBpbnQgY21rYWxnLCBjb25zdCB1bnNpZ25lZCBjaGFyICp2YWx1ZSwgaW50 IGxlbikKK3sKKwlQR0NNSwkgICAqY21rID0gTlVMTDsKKwl1bnNpZ25lZCBjaGFyICpwbGFp bnZhbCA9IE5VTEw7CisJaW50CQkJcGxhaW52YWxsZW4gPSAwOworCWJvb2wJCWZvdW5kOwor CisJZm9yIChpbnQgaSA9IDA7IGkgPCBjb25uLT5uY21rczsgaSsrKQorCXsKKwkJaWYgKGNv bm4tPmNta3NbaV0uY21raWQgPT0gY21raWQpCisJCXsKKwkJCWNtayA9ICZjb25uLT5jbWtz W2ldOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoIWNtaykKKwkJcmV0dXJuIEVPRjsK KworCXBsYWludmFsID0gZGVjcnlwdF9jZWsoY29ubiwgY21rLCBjbWthbGcsIGxlbiwgdmFs dWUsICZwbGFpbnZhbGxlbik7CisJaWYgKCFwbGFpbnZhbCkKKwkJcmV0dXJuIEVPRjsKKwor CWZvdW5kID0gZmFsc2U7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBjb25uLT5uY2VrczsgaSsr KQorCXsKKwkJc3RydWN0IHBnX2NlayAqY2hlY2tjZWsgPSAmY29ubi0+Y2Vrc1tpXTsKKwor CQkvKiByZXBsYWNlIGV4aXN0aW5nPyAqLworCQlpZiAoY2hlY2tjZWstPmNla2lkID09IGtl eWlkKQorCQl7CisJCQlmcmVlKGNoZWNrY2VrLT5jZWtkYXRhKTsKKwkJCWNoZWNrY2VrLT5j ZWtkYXRhID0gcGxhaW52YWw7CisJCQljaGVja2Nlay0+Y2VrZGF0YWxlbiA9IHBsYWludmFs bGVuOworCQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKiBhcHBl bmQgbmV3PyAqLworCWlmICghZm91bmQpCisJeworCQlpbnQJCQluZXduY2VrczsKKwkJc3Ry dWN0IHBnX2NlayAqbmV3Y2VrczsKKwkJc3RydWN0IHBnX2NlayAqbmV3Y2VrOworCisJCW5l d25jZWtzID0gY29ubi0+bmNla3MgKyAxOworCQlpZiAobmV3bmNla3MgPD0gMCkKKwkJewor CQkJZnJlZShwbGFpbnZhbCk7CisJCQlyZXR1cm4gRU9GOworCQl9CisJCW5ld2Nla3MgPSBy ZWFsbG9jKGNvbm4tPmNla3MsIG5ld25jZWtzICogc2l6ZW9mKHN0cnVjdCBwZ19jZWspKTsK KwkJaWYgKCFuZXdjZWtzKQorCQl7CisJCQlmcmVlKHBsYWludmFsKTsKKwkJCXJldHVybiBF T0Y7CisJCX0KKworCQluZXdjZWsgPSAmbmV3Y2Vrc1tuZXduY2VrcyAtIDFdOworCQluZXdj ZWstPmNla2lkID0ga2V5aWQ7CisJCW5ld2Nlay0+Y2VrZGF0YSA9IHBsYWludmFsOworCQlu ZXdjZWstPmNla2RhdGFsZW4gPSBwbGFpbnZhbGxlbjsKKworCQljb25uLT5uY2VrcyA9IG5l d25jZWtzOworCQljb25uLT5jZWtzID0gbmV3Y2VrczsKKwl9CisKKwlyZXR1cm4gMDsKK30K IAogLyoKICAqIHBxUm93UHJvY2Vzc29yCkBAIC0xMjUwLDkgKzE2MzAsNTggQEAgcHFSb3dQ cm9jZXNzb3IoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICoqZXJybXNncCkKIAkJfQogCQll bHNlCiAJCXsKLQkJCWJvb2wJCWlzYmluYXJ5ID0gKHJlcy0+YXR0RGVzY3NbaV0uZm9ybWF0 ICE9IDApOworCQkJYm9vbAkJaXNiaW5hcnkgPSAoKHJlcy0+YXR0RGVzY3NbaV0uZm9ybWF0 ICYgMHgwRikgIT0gMCk7CiAJCQljaGFyCSAgICp2YWw7CiAKKwkJCWlmIChyZXMtPmF0dERl c2NzW2ldLmNla2lkKQorCQkJeworI2lmZGVmIFVTRV9TU0wKKwkJCQlQR0NFSwkgICAqY2Vr ID0gTlVMTDsKKworCQkJCWZvciAoaW50IGogPSAwOyBqIDwgY29ubi0+bmNla3M7IGorKykK KwkJCQl7CisJCQkJCWlmIChjb25uLT5jZWtzW2pdLmNla2lkID09IHJlcy0+YXR0RGVzY3Nb aV0uY2VraWQpCisJCQkJCXsKKwkJCQkJCWNlayA9ICZjb25uLT5jZWtzW2pdOworCQkJCQkJ YnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJaWYgKCFjZWspCisJCQkJeworCQkJCQkqZXJy bXNncCA9IGxpYnBxX2dldHRleHQoImNvbHVtbiBlbmNyeXB0aW9uIGtleSBub3QgZm91bmQi KTsKKwkJCQkJZ290byBmYWlsOworCQkJCX0KKworCQkJCWlmIChpc2JpbmFyeSkKKwkJCQl7 CisJCQkJCXZhbCA9IChjaGFyICopIGRlY3J5cHRfdmFsdWUocmVzLCBjZWssIHJlcy0+YXR0 RGVzY3NbaV0uY2VrYWxnLAorCQkJCQkJCQkJCQkJIChjb25zdCB1bnNpZ25lZCBjaGFyICop IGNvbHVtbnNbaV0udmFsdWUsIGNsZW4sIGVycm1zZ3ApOworCQkJCX0KKwkJCQllbHNlCisJ CQkJeworCQkJCQl1bnNpZ25lZCBjaGFyICpidWY7CisJCQkJCXVuc2lnbmVkIGNoYXIgKmVu Y2NvbHZhbDsKKwkJCQkJc2l6ZV90CQllbmNjb2x2YWxsZW47CisKKwkJCQkJYnVmID0gbWFs bG9jKGNsZW4gKyAxKTsKKwkJCQkJbWVtY3B5KGJ1ZiwgY29sdW1uc1tpXS52YWx1ZSwgY2xl bik7CisJCQkJCWJ1ZltjbGVuXSA9ICdcMCc7CisJCQkJCWVuY2NvbHZhbCA9IFBRdW5lc2Nh cGVCeXRlYShidWYsICZlbmNjb2x2YWxsZW4pOworCQkJCQl2YWwgPSAoY2hhciAqKSBkZWNy eXB0X3ZhbHVlKHJlcywgY2VrLCByZXMtPmF0dERlc2NzW2ldLmNla2FsZywKKwkJCQkJCQkJ CQkJCSBlbmNjb2x2YWwsIGVuY2NvbHZhbGxlbiwgZXJybXNncCk7CisJCQkJCWZyZWUoZW5j Y29sdmFsKTsKKwkJCQkJZnJlZShidWYpOworCQkJCX0KKworCQkJCWlmICh2YWwgPT0gTlVM TCkKKwkJCQkJZ290byBmYWlsOworI2Vsc2UKKwkJCQkqZXJybXNncCA9IGxpYnBxX2dldHRl eHQoImNvbHVtbiBlbmNyeXB0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIpOwor CQkJCWdvdG8gZmFpbDsKKyNlbmRpZgorCQkJfQorCQkJZWxzZQorCQkJewogCQkJdmFsID0g KGNoYXIgKikgcHFSZXN1bHRBbGxvYyhyZXMsIGNsZW4gKyAxLCBpc2JpbmFyeSk7CiAJCQlp ZiAodmFsID09IE5VTEwpCiAJCQkJZ290byBmYWlsOwpAQCAtMTI2MCw2ICsxNjg5LDcgQEAg cHFSb3dQcm9jZXNzb3IoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICoqZXJybXNncCkKIAkJ CS8qIGNvcHkgYW5kIHplcm8tdGVybWluYXRlIHRoZSBkYXRhIChldmVuIGlmIGl0J3MgYmlu YXJ5KSAqLwogCQkJbWVtY3B5KHZhbCwgY29sdW1uc1tpXS52YWx1ZSwgY2xlbik7CiAJCQl2 YWxbY2xlbl0gPSAnXDAnOworCQkJfQogCiAJCQl0dXBbaV0ubGVuID0gY2xlbjsKIAkJCXR1 cFtpXS52YWx1ZSA9IHZhbDsKQEAgLTE1NjQsNyArMTk5NCw5IEBAIFBRc2VuZFF1ZXJ5UGFy YW1zKFBHY29ubiAqY29ubiwKIAkJCQkJCSAgIHBhcmFtVmFsdWVzLAogCQkJCQkJICAgcGFy YW1MZW5ndGhzLAogCQkJCQkJICAgcGFyYW1Gb3JtYXRzLAotCQkJCQkJICAgcmVzdWx0Rm9y bWF0KTsKKwkJCQkJCSAgIE5VTEwsCisJCQkJCQkgICByZXN1bHRGb3JtYXQsCisJCQkJCQkg ICBOVUxMKTsKIH0KIAogLyoKQEAgLTE2ODIsNiArMjExNCwyMCBAQCBQUXNlbmRRdWVyeVBy ZXBhcmVkKFBHY29ubiAqY29ubiwKIAkJCQkJY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJ CQkJCWNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAogCQkJCQlpbnQgcmVzdWx0Rm9ybWF0KQor eworCXJldHVybiBQUXNlbmRRdWVyeVByZXBhcmVkMihjb25uLCBzdG10TmFtZSwgblBhcmFt cywgcGFyYW1WYWx1ZXMsIHBhcmFtTGVuZ3RocywgcGFyYW1Gb3JtYXRzLCBOVUxMLCByZXN1 bHRGb3JtYXQsIE5VTEwpOworfQorCitpbnQKK1BRc2VuZFF1ZXJ5UHJlcGFyZWQyKFBHY29u biAqY29ubiwKKwkJCQkJIGNvbnN0IGNoYXIgKnN0bXROYW1lLAorCQkJCQkgaW50IG5QYXJh bXMsCisJCQkJCSBjb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMsCisJCQkJCSBjb25z dCBpbnQgKnBhcmFtTGVuZ3RocywKKwkJCQkJIGNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAor CQkJCQkgY29uc3QgaW50ICpwYXJhbUZvcmNlQ29sdW1uRW5jcnlwdGlvbnMsCisJCQkJCSBp bnQgcmVzdWx0Rm9ybWF0LAorCQkJCQkgUEdyZXN1bHQgKnBhcmFtRGVzYykKIHsKIAlpZiAo IVBRc2VuZFF1ZXJ5U3RhcnQoY29ubiwgdHJ1ZSkpCiAJCXJldHVybiAwOwpAQCAtMTcwOSw3 ICsyMTU1LDkgQEAgUFFzZW5kUXVlcnlQcmVwYXJlZChQR2Nvbm4gKmNvbm4sCiAJCQkJCQkg ICBwYXJhbVZhbHVlcywKIAkJCQkJCSAgIHBhcmFtTGVuZ3RocywKIAkJCQkJCSAgIHBhcmFt Rm9ybWF0cywKLQkJCQkJCSAgIHJlc3VsdEZvcm1hdCk7CisJCQkJCQkgICBwYXJhbUZvcmNl Q29sdW1uRW5jcnlwdGlvbnMsCisJCQkJCQkgICByZXN1bHRGb3JtYXQsCisJCQkJCQkgICBw YXJhbURlc2MpOwogfQogCiAvKgpAQCAtMTgwOCw3ICsyMjU2LDkgQEAgUFFzZW5kUXVlcnlH dXRzKFBHY29ubiAqY29ubiwKIAkJCQljb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMs CiAJCQkJY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJCQkJY29uc3QgaW50ICpwYXJhbUZv cm1hdHMsCi0JCQkJaW50IHJlc3VsdEZvcm1hdCkKKwkJCQljb25zdCBpbnQgKnBhcmFtRm9y Y2VDb2x1bW5FbmNyeXB0aW9ucywKKwkJCQlpbnQgcmVzdWx0Rm9ybWF0LAorCQkJCVBHcmVz dWx0ICpwYXJhbURlc2MpCiB7CiAJaW50CQkJaTsKIAlQR2NtZFF1ZXVlRW50cnkgKmVudHJ5 OwpAQCAtMTg1NSwxNCArMjMwNSw1MyBAQCBQUXNlbmRRdWVyeUd1dHMoUEdjb25uICpjb25u LAogCQlwcVB1dHMoc3RtdE5hbWUsIGNvbm4pIDwgMCkKIAkJZ290byBzZW5kRmFpbGVkOwog CisJLyogQ2hlY2sgZm9yY2UgY29sdW1uIGVuY3J5cHRpb24gKi8KKwlpZiAoblBhcmFtcyA+ IDAgJiYgcGFyYW1Gb3JjZUNvbHVtbkVuY3J5cHRpb25zKQorCXsKKwkJZm9yIChpID0gMDsg aSA8IG5QYXJhbXM7IGkrKykKKwkJeworCQkJaWYgKHBhcmFtRm9yY2VDb2x1bW5FbmNyeXB0 aW9uc1tpXSkKKwkJCXsKKwkJCQlpZiAoIShwYXJhbURlc2MgJiYKKwkJCQkJICBwYXJhbURl c2MtPnBhcmFtRGVzY3MgJiYKKwkJCQkJICBwYXJhbURlc2MtPnBhcmFtRGVzY3NbaV0uY2Vr aWQpKQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVz c2FnZSwKKwkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgicGFyYW1ldGVyIHdpdGggZm9yY2Vk IGVuY3J5cHRpb24gaXMgbm90IHRvIGJlIGVuY3J5cHRlZFxuIikpOworCQkJCQlnb3RvIHNl bmRGYWlsZWQ7CisJCQkJfQorCQkJfQorCQl9CisJfQorCiAJLyogU2VuZCBwYXJhbWV0ZXIg Zm9ybWF0cyAqLwotCWlmIChuUGFyYW1zID4gMCAmJiBwYXJhbUZvcm1hdHMpCisJaWYgKG5Q YXJhbXMgPiAwICYmIChwYXJhbUZvcm1hdHMgfHwgKHBhcmFtRGVzYyAmJiBwYXJhbURlc2Mt PnBhcmFtRGVzY3MpKSkKIAl7CiAJCWlmIChwcVB1dEludChuUGFyYW1zLCAyLCBjb25uKSA8 IDApCiAJCQlnb3RvIHNlbmRGYWlsZWQ7CisKIAkJZm9yIChpID0gMDsgaSA8IG5QYXJhbXM7 IGkrKykKIAkJewotCQkJaWYgKHBxUHV0SW50KHBhcmFtRm9ybWF0c1tpXSwgMiwgY29ubikg PCAwKQorCQkJaW50CQkJZm9ybWF0ID0gcGFyYW1Gb3JtYXRzID8gcGFyYW1Gb3JtYXRzW2ld IDogMDsKKworCQkJaWYgKHBhcmFtRGVzYyAmJiBwYXJhbURlc2MtPnBhcmFtRGVzY3MpCisJ CQl7CisJCQkJUEdyZXNQYXJhbURlc2MgKnBkID0gJnBhcmFtRGVzYy0+cGFyYW1EZXNjc1tp XTsKKworCQkJCWlmIChwZC0+Y2VraWQpCisJCQkJeworCQkJCQlpZiAoZm9ybWF0ICE9IDAp CisJCQkJCXsKKwkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3Nh Z2UsCisJCQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJmb3JtYXQgbXVzdCBiZSB0ZXh0IGZv ciBlbmNyeXB0ZWQgcGFyYW1ldGVyXG4iKSk7CisJCQkJCQlnb3RvIHNlbmRGYWlsZWQ7CisJ CQkJCX0KKwkJCQkJZm9ybWF0ID0gMTsKKwkJCQkJZm9ybWF0IHw9IDB4MTA7CisJCQkJfQor CQkJfQorCisJCQlpZiAocHFQdXRJbnQoZm9ybWF0LCAyLCBjb25uKSA8IDApCiAJCQkJZ290 byBzZW5kRmFpbGVkOwogCQl9CiAJfQpAQCAtMTg4MSw2ICsyMzcwLDcgQEAgUFFzZW5kUXVl cnlHdXRzKFBHY29ubiAqY29ubiwKIAkJaWYgKHBhcmFtVmFsdWVzICYmIHBhcmFtVmFsdWVz W2ldKQogCQl7CiAJCQlpbnQJCQluYnl0ZXM7CisJCQljb25zdCBjaGFyICpwYXJhbVZhbHVl OwogCiAJCQlpZiAocGFyYW1Gb3JtYXRzICYmIHBhcmFtRm9ybWF0c1tpXSAhPSAwKQogCQkJ ewpAQCAtMTg5OSw5ICsyMzg5LDU0IEBAIFBRc2VuZFF1ZXJ5R3V0cyhQR2Nvbm4gKmNvbm4s CiAJCQkJLyogdGV4dCBwYXJhbWV0ZXIsIGRvIG5vdCB1c2UgcGFyYW1MZW5ndGhzICovCiAJ CQkJbmJ5dGVzID0gc3RybGVuKHBhcmFtVmFsdWVzW2ldKTsKIAkJCX0KKworCQkJcGFyYW1W YWx1ZSA9IHBhcmFtVmFsdWVzW2ldOworCisJCQlpZiAocGFyYW1EZXNjICYmIHBhcmFtRGVz Yy0+cGFyYW1EZXNjcyAmJiBwYXJhbURlc2MtPnBhcmFtRGVzY3NbaV0uY2VraWQpCisJCQl7 CisjaWZkZWYgVVNFX1NTTAorCQkJCWJvb2wJCWVuY19kZXQgPSAocGFyYW1EZXNjLT5wYXJh bURlc2NzW2ldLmZsYWdzICYgMHgwMSkgIT0gMDsKKwkJCQlQR0NFSwkgICAqY2VrID0gTlVM TDsKKwkJCQljaGFyCSAgICplbmNfcGFyYW1WYWx1ZTsKKwkJCQlpbnQJCQllbmNfbmJ5dGVz ID0gbmJ5dGVzOworCisJCQkJZm9yIChpbnQgaiA9IDA7IGogPCBjb25uLT5uY2Vrczsgaisr KQorCQkJCXsKKwkJCQkJaWYgKGNvbm4tPmNla3Nbal0uY2VraWQgPT0gcGFyYW1EZXNjLT5w YXJhbURlc2NzW2ldLmNla2lkKQorCQkJCQl7CisJCQkJCQljZWsgPSAmY29ubi0+Y2Vrc1tq XTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJCWlmICghY2VrKQorCQkJCXsK KwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJ CSAgbGlicHFfZ2V0dGV4dCgiY29sdW1uIGVuY3J5cHRpb24ga2V5IG5vdCBmb3VuZFxuIikp OworCQkJCQlnb3RvIHNlbmRGYWlsZWQ7CisJCQkJfQorCisJCQkJZW5jX3BhcmFtVmFsdWUg PSAoY2hhciAqKSBlbmNyeXB0X3ZhbHVlKGNvbm4sIGNlaywgcGFyYW1EZXNjLT5wYXJhbURl c2NzW2ldLmNla2FsZywKKwkJCQkJCQkJCQkJCQkJKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikg cGFyYW1WYWx1ZSwgJmVuY19uYnl0ZXMsIGVuY19kZXQpOworCQkJCWlmICghZW5jX3BhcmFt VmFsdWUpCisJCQkJCWdvdG8gc2VuZEZhaWxlZDsKKworCQkJCWlmIChwcVB1dEludChlbmNf bmJ5dGVzLCA0LCBjb25uKSA8IDAgfHwKKwkJCQkJcHFQdXRuY2hhcihlbmNfcGFyYW1WYWx1 ZSwgZW5jX25ieXRlcywgY29ubikgPCAwKQorCQkJCQlnb3RvIHNlbmRGYWlsZWQ7CisKKwkJ CQlmcmVlKGVuY19wYXJhbVZhbHVlKTsKKyNlbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb2x1bW4g ZW5jcnlwdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGRcbiIpKTsKKwkJCQlnb3Rv IHNlbmRGYWlsZWQ7CisjZW5kaWYKKwkJCX0KKwkJCWVsc2UKKwkJCXsKIAkJCWlmIChwcVB1 dEludChuYnl0ZXMsIDQsIGNvbm4pIDwgMCB8fAotCQkJCXBxUHV0bmNoYXIocGFyYW1WYWx1 ZXNbaV0sIG5ieXRlcywgY29ubikgPCAwKQorCQkJCXBxUHV0bmNoYXIocGFyYW1WYWx1ZSwg bmJ5dGVzLCBjb25uKSA8IDApCiAJCQkJZ290byBzZW5kRmFpbGVkOworCQkJfQogCQl9CiAJ CWVsc2UKIAkJewpAQCAtMjMzNCwxMiArMjg2OSwyNyBAQCBQUWV4ZWNQcmVwYXJlZChQR2Nv bm4gKmNvbm4sCiAJCQkgICBjb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKIAkJCSAgIGNvbnN0 IGludCAqcGFyYW1Gb3JtYXRzLAogCQkJICAgaW50IHJlc3VsdEZvcm1hdCkKK3sKKwlyZXR1 cm4gUFFleGVjUHJlcGFyZWQyKGNvbm4sIHN0bXROYW1lLCBuUGFyYW1zLCBwYXJhbVZhbHVl cywgcGFyYW1MZW5ndGhzLCBwYXJhbUZvcm1hdHMsIE5VTEwsIHJlc3VsdEZvcm1hdCwgTlVM TCk7Cit9CisKK1BHcmVzdWx0ICoKK1BRZXhlY1ByZXBhcmVkMihQR2Nvbm4gKmNvbm4sCisJ CQkJY29uc3QgY2hhciAqc3RtdE5hbWUsCisJCQkJaW50IG5QYXJhbXMsCisJCQkJY29uc3Qg Y2hhciAqY29uc3QgKnBhcmFtVmFsdWVzLAorCQkJCWNvbnN0IGludCAqcGFyYW1MZW5ndGhz LAorCQkJCWNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAorCQkJCWNvbnN0IGludCAqcGFyYW1G b3JjZUNvbHVtbkVuY3J5cHRpb25zLAorCQkJCWludCByZXN1bHRGb3JtYXQsCisJCQkJUEdy ZXN1bHQgKnBhcmFtRGVzYykKIHsKIAlpZiAoIVBRZXhlY1N0YXJ0KGNvbm4pKQogCQlyZXR1 cm4gTlVMTDsKLQlpZiAoIVBRc2VuZFF1ZXJ5UHJlcGFyZWQoY29ubiwgc3RtdE5hbWUsCi0J CQkJCQkJIG5QYXJhbXMsIHBhcmFtVmFsdWVzLCBwYXJhbUxlbmd0aHMsCi0JCQkJCQkJIHBh cmFtRm9ybWF0cywgcmVzdWx0Rm9ybWF0KSkKKwlpZiAoIVBRc2VuZFF1ZXJ5UHJlcGFyZWQy KGNvbm4sIHN0bXROYW1lLAorCQkJCQkJCSAgblBhcmFtcywgcGFyYW1WYWx1ZXMsIHBhcmFt TGVuZ3RocywKKwkJCQkJCQkgIHBhcmFtRm9ybWF0cywgcGFyYW1Gb3JjZUNvbHVtbkVuY3J5 cHRpb25zLAorCQkJCQkJCSAgcmVzdWx0Rm9ybWF0LCBwYXJhbURlc2MpKQogCQlyZXR1cm4g TlVMTDsKIAlyZXR1cm4gUFFleGVjRmluaXNoKGNvbm4pOwogfQpAQCAtMzYwMiw2ICs0MTUy LDE3IEBAIFBRZm1vZChjb25zdCBQR3Jlc3VsdCAqcmVzLCBpbnQgZmllbGRfbnVtKQogCQly ZXR1cm4gMDsKIH0KIAoraW50CitQUWZpc2VuY3J5cHRlZChjb25zdCBQR3Jlc3VsdCAqcmVz LCBpbnQgZmllbGRfbnVtKQoreworCWlmICghY2hlY2tfZmllbGRfbnVtYmVyKHJlcywgZmll bGRfbnVtKSkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChyZXMtPmF0dERlc2NzKQorCQlyZXR1 cm4gKHJlcy0+YXR0RGVzY3NbZmllbGRfbnVtXS5jZWtpZCAhPSAwKTsKKwllbHNlCisJCXJl dHVybiBmYWxzZTsKK30KKwogY2hhciAqCiBQUWNtZFN0YXR1cyhQR3Jlc3VsdCAqcmVzKQog ewpAQCAtMzc4Nyw2ICs0MzQ4LDE3IEBAIFBRcGFyYW10eXBlKGNvbnN0IFBHcmVzdWx0ICpy ZXMsIGludCBwYXJhbV9udW0pCiAJCXJldHVybiBJbnZhbGlkT2lkOwogfQogCitpbnQKK1BR cGFyYW1pc2VuY3J5cHRlZChjb25zdCBQR3Jlc3VsdCAqcmVzLCBpbnQgcGFyYW1fbnVtKQor eworCWlmICghY2hlY2tfcGFyYW1fbnVtYmVyKHJlcywgcGFyYW1fbnVtKSkKKwkJcmV0dXJu IGZhbHNlOworCWlmIChyZXMtPnBhcmFtRGVzY3MpCisJCXJldHVybiAocmVzLT5wYXJhbURl c2NzW3BhcmFtX251bV0uY2VraWQgIT0gMCk7CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9 CisKIAogLyogUFFzZXRub25ibG9ja2luZzoKICAqCXNldHMgdGhlIFBHY29ubidzIGRhdGFi YXNlIGNvbm5lY3Rpb24gbm9uLWJsb2NraW5nIGlmIHRoZSBhcmcgaXMgdHJ1ZQpkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYwppbmRleCAxMGM3NmRhZjZlLi45NDYxYzA0YmJl IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYworKysg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYwpAQCAtNDUsNiArNDUsOCBA QCBzdGF0aWMgaW50CWdldFJvd0Rlc2NyaXB0aW9ucyhQR2Nvbm4gKmNvbm4sIGludCBtc2dM ZW5ndGgpOwogc3RhdGljIGludAlnZXRQYXJhbURlc2NyaXB0aW9ucyhQR2Nvbm4gKmNvbm4s IGludCBtc2dMZW5ndGgpOwogc3RhdGljIGludAlnZXRBbm90aGVyVHVwbGUoUEdjb25uICpj b25uLCBpbnQgbXNnTGVuZ3RoKTsKIHN0YXRpYyBpbnQJZ2V0UGFyYW1ldGVyU3RhdHVzKFBH Y29ubiAqY29ubik7CitzdGF0aWMgaW50CWdldENvbHVtbk1hc3RlcktleShQR2Nvbm4gKmNv bm4pOworc3RhdGljIGludAlnZXRDb2x1bW5FbmNyeXB0aW9uS2V5KFBHY29ubiAqY29ubik7 CiBzdGF0aWMgaW50CWdldE5vdGlmeShQR2Nvbm4gKmNvbm4pOwogc3RhdGljIGludAlnZXRD b3B5U3RhcnQoUEdjb25uICpjb25uLCBFeGVjU3RhdHVzVHlwZSBjb3B5dHlwZSk7CiBzdGF0 aWMgaW50CWdldFJlYWR5Rm9yUXVlcnkoUEdjb25uICpjb25uKTsKQEAgLTMxNSw2ICszMTcs MjIgQEAgcHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4pCiAJCQkJCWlmIChwcUdldEludCgm KGNvbm4tPmJlX2tleSksIDQsIGNvbm4pKQogCQkJCQkJcmV0dXJuOwogCQkJCQlicmVhazsK KwkJCQljYXNlICd5JzoJCS8qIENvbHVtbiBNYXN0ZXIgS2V5ICovCisJCQkJCWlmIChnZXRD b2x1bW5NYXN0ZXJLZXkoY29ubikpCisJCQkJCXsKKwkJCQkJCS8vIFRPRE86IHJldmlldyBl cnJvciBoYW5kbGluZyBoZXJlCisJCQkJCQlwcVNhdmVFcnJvclJlc3VsdChjb25uKTsKKwkJ CQkJCXBxSW50ZXJuYWxOb3RpY2UoJmNvbm4tPm5vdGljZUhvb2tzLCAiJXMiLCBjb25uLT5l cnJvck1lc3NhZ2UuZGF0YSk7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnWSc6 CQkvKiBDb2x1bW4gRW5jcnlwdGlvbiBLZXkgKi8KKwkJCQkJaWYgKGdldENvbHVtbkVuY3J5 cHRpb25LZXkoY29ubikpCisJCQkJCXsKKwkJCQkJCS8vIFRPRE86IHJldmlldyBlcnJvciBo YW5kbGluZyBoZXJlCisJCQkJCQlwcVNhdmVFcnJvclJlc3VsdChjb25uKTsKKwkJCQkJCXBx SW50ZXJuYWxOb3RpY2UoJmNvbm4tPm5vdGljZUhvb2tzLCAiJXMiLCBjb25uLT5lcnJvck1l c3NhZ2UuZGF0YSk7CisJCQkJCX0KKwkJCQkJYnJlYWs7CiAJCQkJY2FzZSAnVCc6CQkvKiBS b3cgRGVzY3JpcHRpb24gKi8KIAkJCQkJaWYgKGNvbm4tPmVycm9yX3Jlc3VsdCB8fAogCQkJ CQkJKGNvbm4tPnJlc3VsdCAhPSBOVUxMICYmCkBAIC01NzIsNiArNTkwLDggQEAgZ2V0Um93 RGVzY3JpcHRpb25zKFBHY29ubiAqY29ubiwgaW50IG1zZ0xlbmd0aCkKIAkJaW50CQkJdHlw bGVuOwogCQlpbnQJCQlhdHR0eXBtb2Q7CiAJCWludAkJCWZvcm1hdDsKKwkJaW50CQkJY2Vr aWQ7CisJCWludAkJCWNla2FsZzsKIAogCQlpZiAocHFHZXRzKCZjb25uLT53b3JrQnVmZmVy LCBjb25uKSB8fAogCQkJcHFHZXRJbnQoJnRhYmxlaWQsIDQsIGNvbm4pIHx8CkBAIC01Nzks NyArNTk5LDkgQEAgZ2V0Um93RGVzY3JpcHRpb25zKFBHY29ubiAqY29ubiwgaW50IG1zZ0xl bmd0aCkKIAkJCXBxR2V0SW50KCZ0eXBpZCwgNCwgY29ubikgfHwKIAkJCXBxR2V0SW50KCZ0 eXBsZW4sIDIsIGNvbm4pIHx8CiAJCQlwcUdldEludCgmYXR0dHlwbW9kLCA0LCBjb25uKSB8 fAotCQkJcHFHZXRJbnQoJmZvcm1hdCwgMiwgY29ubikpCisJCQlwcUdldEludCgmZm9ybWF0 LCAyLCBjb25uKSB8fAorCQkJcHFHZXRJbnQoJmNla2lkLCA0LCBjb25uKSB8fAorCQkJcHFH ZXRJbnQoJmNla2FsZywgMiwgY29ubikpCiAJCXsKIAkJCS8qIFdlIHNob3VsZCBub3QgcnVu IG91dCBvZiBkYXRhIGhlcmUsIHNvIGNvbXBsYWluICovCiAJCQllcnJtc2cgPSBsaWJwcV9n ZXR0ZXh0KCJpbnN1ZmZpY2llbnQgZGF0YSBpbiBcIlRcIiBtZXNzYWdlIik7CkBAIC02MDcs OCArNjI5LDEwIEBAIGdldFJvd0Rlc2NyaXB0aW9ucyhQR2Nvbm4gKmNvbm4sIGludCBtc2dM ZW5ndGgpCiAJCXJlc3VsdC0+YXR0RGVzY3NbaV0udHlwaWQgPSB0eXBpZDsKIAkJcmVzdWx0 LT5hdHREZXNjc1tpXS50eXBsZW4gPSB0eXBsZW47CiAJCXJlc3VsdC0+YXR0RGVzY3NbaV0u YXR0dHlwbW9kID0gYXR0dHlwbW9kOworCQlyZXN1bHQtPmF0dERlc2NzW2ldLmNla2lkID0g Y2VraWQ7CisJCXJlc3VsdC0+YXR0RGVzY3NbaV0uY2VrYWxnID0gY2VrYWxnOwogCi0JCWlm IChmb3JtYXQgIT0gMSkKKwkJaWYgKChmb3JtYXQgJiAweDBGKSAhPSAxKQogCQkJcmVzdWx0 LT5iaW5hcnkgPSAwOwogCX0KIApAQCAtNzEwLDEwICs3MzQsMjIgQEAgZ2V0UGFyYW1EZXNj cmlwdGlvbnMoUEdjb25uICpjb25uLCBpbnQgbXNnTGVuZ3RoKQogCWZvciAoaSA9IDA7IGkg PCBucGFyYW1zOyBpKyspCiAJewogCQlpbnQJCQl0eXBpZDsKKwkJaW50CQkJY2VraWQ7CisJ CWludAkJCWNla2FsZzsKKwkJaW50CQkJZmxhZ3M7CiAKIAkJaWYgKHBxR2V0SW50KCZ0eXBp ZCwgNCwgY29ubikpCiAJCQlnb3RvIG5vdF9lbm91Z2hfZGF0YTsKIAkJcmVzdWx0LT5wYXJh bURlc2NzW2ldLnR5cGlkID0gdHlwaWQ7CisJCWlmIChwcUdldEludCgmY2VraWQsIDQsIGNv bm4pKQorCQkJZ290byBub3RfZW5vdWdoX2RhdGE7CisJCXJlc3VsdC0+cGFyYW1EZXNjc1tp XS5jZWtpZCA9IGNla2lkOworCQlpZiAocHFHZXRJbnQoJmNla2FsZywgMiwgY29ubikpCisJ CQlnb3RvIG5vdF9lbm91Z2hfZGF0YTsKKwkJcmVzdWx0LT5wYXJhbURlc2NzW2ldLmNla2Fs ZyA9IGNla2FsZzsKKwkJaWYgKHBxR2V0SW50KCZmbGFncywgMiwgY29ubikpCisJCQlnb3Rv IG5vdF9lbm91Z2hfZGF0YTsKKwkJcmVzdWx0LT5wYXJhbURlc2NzW2ldLmZsYWdzID0gZmxh Z3M7CiAJfQogCiAJLyogU3VjY2VzcyEgKi8KQEAgLTE0MzksNiArMTQ3NSw4OSBAQCBnZXRQ YXJhbWV0ZXJTdGF0dXMoUEdjb25uICpjb25uKQogCXJldHVybiAwOwogfQogCisvKgorICog QXR0ZW1wdCB0byByZWFkIGEgQ29sdW1uTWFzdGVyS2V5IG1lc3NhZ2UuCisgKiBFbnRyeTog J3knIG1lc3NhZ2UgdHlwZSBhbmQgbGVuZ3RoIGhhdmUgYWxyZWFkeSBiZWVuIGNvbnN1bWVk LgorICogRXhpdDogcmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWxseSBjb25zdW1lZCBtZXNzYWdl LgorICoJCSByZXR1cm5zIEVPRiBpZiBub3QgZW5vdWdoIGRhdGEuCisgKi8KK3N0YXRpYyBp bnQKK2dldENvbHVtbk1hc3RlcktleShQR2Nvbm4gKmNvbm4pCit7CisJaW50CQkJa2V5aWQ7 CisJY2hhcgkgICAqa2V5bmFtZTsKKwljaGFyCSAgICprZXlyZWFsbTsKKwlpbnQJCQlyZXQ7 CisKKwkvKiBHZXQgdGhlIGtleSBJRCAqLworCWlmIChwcUdldEludCgma2V5aWQsIDQsIGNv bm4pICE9IDApCisJCXJldHVybiBFT0Y7CisJLyogR2V0IHRoZSBrZXkgbmFtZSAqLworCWlm IChwcUdldHMoJmNvbm4tPndvcmtCdWZmZXIsIGNvbm4pICE9IDApCisJCXJldHVybiBFT0Y7 CisJa2V5bmFtZSA9IHN0cmR1cChjb25uLT53b3JrQnVmZmVyLmRhdGEpOworCWlmICgha2V5 bmFtZSkKKwkJcmV0dXJuIEVPRjsKKwkvKiBHZXQgdGhlIGtleSByZWFsbSAqLworCWlmIChw cUdldHMoJmNvbm4tPndvcmtCdWZmZXIsIGNvbm4pICE9IDApCisJCXJldHVybiBFT0Y7CisJ a2V5cmVhbG0gPSBzdHJkdXAoY29ubi0+d29ya0J1ZmZlci5kYXRhKTsKKwlpZiAoIWtleXJl YWxtKQorCQlyZXR1cm4gRU9GOworCS8qIEFuZCBzYXZlIGl0ICovCisJcmV0ID0gcHFTYXZl Q29sdW1uTWFzdGVyS2V5KGNvbm4sIGtleWlkLCBrZXluYW1lLCBrZXlyZWFsbSk7CisKKwlm cmVlKGtleW5hbWUpOworCWZyZWUoa2V5cmVhbG0pOworCisJcmV0dXJuIHJldDsKK30KKwor LyoKKyAqIEF0dGVtcHQgdG8gcmVhZCBhIENvbHVtbkVuY3J5cHRpb25LZXkgbWVzc2FnZS4K KyAqIEVudHJ5OiAnWScgbWVzc2FnZSB0eXBlIGFuZCBsZW5ndGggaGF2ZSBhbHJlYWR5IGJl ZW4gY29uc3VtZWQuCisgKiBFeGl0OiByZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bGx5IGNvbnN1 bWVkIG1lc3NhZ2UuCisgKgkJIHJldHVybnMgRU9GIGlmIG5vdCBlbm91Z2ggZGF0YS4KKyAq Lworc3RhdGljIGludAorZ2V0Q29sdW1uRW5jcnlwdGlvbktleShQR2Nvbm4gKmNvbm4pCit7 CisJaW50CQkJa2V5aWQ7CisJaW50CQkJY21raWQ7CisJaW50CQkJY21rYWxnOworCWNoYXIJ ICAgKmJ1ZjsKKwlpbnQJCQl2YWxsZW47CisKKwkvKiBHZXQgdGhlIGtleSBJRCAqLworCWlm IChwcUdldEludCgma2V5aWQsIDQsIGNvbm4pICE9IDApCisJCXJldHVybiBFT0Y7CisJLyog R2V0IHRoZSBDTUsgSUQgKi8KKwlpZiAocHFHZXRJbnQoJmNta2lkLCA0LCBjb25uKSAhPSAw KQorCQlyZXR1cm4gRU9GOworCS8qIEdldCB0aGUgQ01LIGFsZ29yaXRobSAqLworCWlmIChw cUdldEludCgmY21rYWxnLCAyLCBjb25uKSAhPSAwKQorCQlyZXR1cm4gRU9GOworCS8qIEdl dCB0aGUga2V5IGRhdGEgbGVuICovCisJaWYgKHBxR2V0SW50KCZ2YWxsZW4sIDQsIGNvbm4p ICE9IDApCisJCXJldHVybiBFT0Y7CisJLyogR2V0IHRoZSBrZXkgZGF0YSAqLworCWJ1ZiA9 IG1hbGxvYyh2YWxsZW4pOworCWlmICghYnVmKQorCQlyZXR1cm4gRU9GOworCWlmIChwcUdl dG5jaGFyKGJ1ZiwgdmFsbGVuLCBjb25uKSAhPSAwKQorCXsKKwkJZnJlZShidWYpOworCQly ZXR1cm4gRU9GOworCX0KKwkvKiBBbmQgc2F2ZSBpdCAqLworCWlmIChwcVNhdmVDb2x1bW5F bmNyeXB0aW9uS2V5KGNvbm4sIGtleWlkLCBjbWtpZCwgY21rYWxnLCAodW5zaWduZWQgY2hh ciAqKSBidWYsIHZhbGxlbikgIT0gMCkKKwl7CisJCWZyZWUoYnVmKTsKKwkJcmV0dXJuIEVP RjsKKwl9CisJZnJlZShidWYpOworCXJldHVybiAwOworfQogCiAvKgogICogQXR0ZW1wdCB0 byByZWFkIGEgTm90aWZ5IHJlc3BvbnNlIG1lc3NhZ2UuCmRpZmYgLS1naXQgYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS10cmFjZS5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtdHJh Y2UuYwppbmRleCA1ZDY4Y2YyZWIzLi5lMDhjYmNmZjMzIDEwMDY0NAotLS0gYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS10cmFjZS5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LXRyYWNlLmMKQEAgLTQ1OCw3ICs0NTgsMTIgQEAgcHFUcmFjZU91dHB1dHQoRklMRSAqZiwg Y29uc3QgY2hhciAqbWVzc2FnZSwgaW50ICpjdXJzb3IsIGJvb2wgcmVncmVzcykKIAluZmll bGRzID0gcHFUcmFjZU91dHB1dEludDE2KGYsIG1lc3NhZ2UsIGN1cnNvcik7CiAKIAlmb3Ig KGludCBpID0gMDsgaSA8IG5maWVsZHM7IGkrKykKKwl7CisJCXBxVHJhY2VPdXRwdXRJbnQz MihmLCBtZXNzYWdlLCBjdXJzb3IsIHJlZ3Jlc3MpOwogCQlwcVRyYWNlT3V0cHV0SW50MzIo ZiwgbWVzc2FnZSwgY3Vyc29yLCByZWdyZXNzKTsKKwkJcHFUcmFjZU91dHB1dEludDE2KGYs IG1lc3NhZ2UsIGN1cnNvcik7CisJCXBxVHJhY2VPdXRwdXRJbnQxNihmLCBtZXNzYWdlLCBj dXJzb3IpOworCX0KIH0KIAogLyogUm93RGVzY3JpcHRpb24gKi8KQEAgLTQ3OSw2ICs0ODQs OCBAQCBwcVRyYWNlT3V0cHV0VChGSUxFICpmLCBjb25zdCBjaGFyICptZXNzYWdlLCBpbnQg KmN1cnNvciwgYm9vbCByZWdyZXNzKQogCQlwcVRyYWNlT3V0cHV0SW50MTYoZiwgbWVzc2Fn ZSwgY3Vyc29yKTsKIAkJcHFUcmFjZU91dHB1dEludDMyKGYsIG1lc3NhZ2UsIGN1cnNvciwg ZmFsc2UpOwogCQlwcVRyYWNlT3V0cHV0SW50MTYoZiwgbWVzc2FnZSwgY3Vyc29yKTsKKwkJ cHFUcmFjZU91dHB1dEludDMyKGYsIG1lc3NhZ2UsIGN1cnNvciwgcmVncmVzcyk7CisJCXBx VHJhY2VPdXRwdXRJbnQxNihmLCBtZXNzYWdlLCBjdXJzb3IpOwogCX0KIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2xpYnBxLWZlLmgKaW5kZXggNzk4NjQ0NWYxYS4uNDJmYmUwY2Q0OSAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaAorKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9saWJwcS1mZS5oCkBAIC0yNjcsNiArMjY3LDggQEAgdHlwZWRlZiBzdHJ1 Y3QgcGdyZXNBdHREZXNjCiAJT2lkCQkJdHlwaWQ7CQkJLyogdHlwZSBpZCAqLwogCWludAkJ CXR5cGxlbjsJCQkvKiB0eXBlIHNpemUgKi8KIAlpbnQJCQlhdHR0eXBtb2Q7CQkvKiB0eXBl LXNwZWNpZmljIG1vZGlmaWVyIGluZm8gKi8KKwlPaWQJCQljZWtpZDsKKwlpbnQJCQljZWth bGc7CiB9IFBHcmVzQXR0RGVzYzsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDM4LDYg KzQ0MCwxNSBAQCBleHRlcm4gUEdyZXN1bHQgKlBRZXhlY1ByZXBhcmVkKFBHY29ubiAqY29u biwKIAkJCQkJCQkJY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJCQkJCQkJCWNvbnN0IGlu dCAqcGFyYW1Gb3JtYXRzLAogCQkJCQkJCQlpbnQgcmVzdWx0Rm9ybWF0KTsKK2V4dGVybiBQ R3Jlc3VsdCAqUFFleGVjUHJlcGFyZWQyKFBHY29ubiAqY29ubiwKKwkJCQkJCQkJIGNvbnN0 IGNoYXIgKnN0bXROYW1lLAorCQkJCQkJCQkgaW50IG5QYXJhbXMsCisJCQkJCQkJCSBjb25z dCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMsCisJCQkJCQkJCSBjb25zdCBpbnQgKnBhcmFt TGVuZ3RocywKKwkJCQkJCQkJIGNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAorCQkJCQkJCQkg Y29uc3QgaW50ICpwYXJhbUZvcmNlQ29sdW1uRW5jcnlwdGlvbnMsCisJCQkJCQkJCSBpbnQg cmVzdWx0Rm9ybWF0LAorCQkJCQkJCQkgUEdyZXN1bHQgKnBhcmFtRGVzYyk7CiAKIC8qIElu dGVyZmFjZSBmb3IgbXVsdGlwbGUtcmVzdWx0IG9yIGFzeW5jaHJvbm91cyBxdWVyaWVzICov CiAjZGVmaW5lIFBRX1FVRVJZX1BBUkFNX01BWF9MSU1JVCA2NTUzNQpAQCAtNDYxLDYgKzQ3 MiwxNSBAQCBleHRlcm4gaW50CVBRc2VuZFF1ZXJ5UHJlcGFyZWQoUEdjb25uICpjb25uLAog CQkJCQkJCQljb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKIAkJCQkJCQkJY29uc3QgaW50ICpw YXJhbUZvcm1hdHMsCiAJCQkJCQkJCWludCByZXN1bHRGb3JtYXQpOworZXh0ZXJuIGludAlQ UXNlbmRRdWVyeVByZXBhcmVkMihQR2Nvbm4gKmNvbm4sCisJCQkJCQkJCSBjb25zdCBjaGFy ICpzdG10TmFtZSwKKwkJCQkJCQkJIGludCBuUGFyYW1zLAorCQkJCQkJCQkgY29uc3QgY2hh ciAqY29uc3QgKnBhcmFtVmFsdWVzLAorCQkJCQkJCQkgY29uc3QgaW50ICpwYXJhbUxlbmd0 aHMsCisJCQkJCQkJCSBjb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQkJCQkJIGNvbnN0 IGludCAqcGFyYW1Gb3JjZUNvbHVtbkVuY3J5cHRpb25zLAorCQkJCQkJCQkgaW50IHJlc3Vs dEZvcm1hdCwKKwkJCQkJCQkJIFBHcmVzdWx0ICpwYXJhbURlc2MpOwogZXh0ZXJuIGludAlQ UXNldFNpbmdsZVJvd01vZGUoUEdjb25uICpjb25uKTsKIGV4dGVybiBQR3Jlc3VsdCAqUFFn ZXRSZXN1bHQoUEdjb25uICpjb25uKTsKIApAQCAtNTMxLDYgKzU1MSw3IEBAIGV4dGVybiBp bnQJUFFmZm9ybWF0KGNvbnN0IFBHcmVzdWx0ICpyZXMsIGludCBmaWVsZF9udW0pOwogZXh0 ZXJuIE9pZAlQUWZ0eXBlKGNvbnN0IFBHcmVzdWx0ICpyZXMsIGludCBmaWVsZF9udW0pOwog ZXh0ZXJuIGludAlQUWZzaXplKGNvbnN0IFBHcmVzdWx0ICpyZXMsIGludCBmaWVsZF9udW0p OwogZXh0ZXJuIGludAlQUWZtb2QoY29uc3QgUEdyZXN1bHQgKnJlcywgaW50IGZpZWxkX251 bSk7CitleHRlcm4gaW50CVBRZmlzZW5jcnlwdGVkKGNvbnN0IFBHcmVzdWx0ICpyZXMsIGlu dCBmaWVsZF9udW0pOwogZXh0ZXJuIGNoYXIgKlBRY21kU3RhdHVzKFBHcmVzdWx0ICpyZXMp OwogZXh0ZXJuIGNoYXIgKlBRb2lkU3RhdHVzKGNvbnN0IFBHcmVzdWx0ICpyZXMpOwkvKiBv bGQgYW5kIHVnbHkgKi8KIGV4dGVybiBPaWQJUFFvaWRWYWx1ZShjb25zdCBQR3Jlc3VsdCAq cmVzKTsJLyogbmV3IGFuZCBpbXByb3ZlZCAqLwpAQCAtNTQwLDYgKzU2MSw3IEBAIGV4dGVy biBpbnQJUFFnZXRsZW5ndGgoY29uc3QgUEdyZXN1bHQgKnJlcywgaW50IHR1cF9udW0sIGlu dCBmaWVsZF9udW0pOwogZXh0ZXJuIGludAlQUWdldGlzbnVsbChjb25zdCBQR3Jlc3VsdCAq cmVzLCBpbnQgdHVwX251bSwgaW50IGZpZWxkX251bSk7CiBleHRlcm4gaW50CVBRbnBhcmFt cyhjb25zdCBQR3Jlc3VsdCAqcmVzKTsKIGV4dGVybiBPaWQJUFFwYXJhbXR5cGUoY29uc3Qg UEdyZXN1bHQgKnJlcywgaW50IHBhcmFtX251bSk7CitleHRlcm4gaW50CVBRcGFyYW1pc2Vu Y3J5cHRlZChjb25zdCBQR3Jlc3VsdCAqcmVzLCBpbnQgcGFyYW1fbnVtKTsKIAogLyogRGVz Y3JpYmUgcHJlcGFyZWQgc3RhdGVtZW50cyBhbmQgcG9ydGFscyAqLwogZXh0ZXJuIFBHcmVz dWx0ICpQUWRlc2NyaWJlUHJlcGFyZWQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzdG10 KTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKaW5kZXggM2RiNmExN2RiNC4uMGE0YzAx MmFhNiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTExMSw2ICsxMTEsOSBA QCB1bmlvbiBwZ3Jlc3VsdF9kYXRhCiB0eXBlZGVmIHN0cnVjdCBwZ3Jlc1BhcmFtRGVzYwog ewogCU9pZAkJCXR5cGlkOwkJCS8qIHR5cGUgaWQgKi8KKwlPaWQJCQljZWtpZDsKKwlpbnQJ CQljZWthbGc7CisJaW50CQkJZmxhZ3M7CiB9IFBHcmVzUGFyYW1EZXNjOwogCiAvKgpAQCAt MzQwLDYgKzM0MywyNiBAQCB0eXBlZGVmIHN0cnVjdCBwZ19jb25uX2hvc3QKIAkJCQkJCQkJ ICogZm91bmQgaW4gcGFzc3dvcmQgZmlsZS4gKi8KIH0gcGdfY29ubl9ob3N0OwogCisvKgor ICogQ29sdW1uIGVuY3J5cHRpb24gc3VwcG9ydCBkYXRhCisgKi8KKworLyogY29sdW1uIG1h c3RlciBrZXkgKi8KK3R5cGVkZWYgc3RydWN0IHBnX2NtaworeworCU9pZAkJCWNta2lkOwor CWNoYXIJICAgKmNta25hbWU7CisJY2hhcgkgICAqY21rcmVhbG07Cit9IFBHQ01LOworCisv KiBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgKi8KK3R5cGVkZWYgc3RydWN0IHBnX2Nlaworewor CU9pZAkJCWNla2lkOworCXVuc2lnbmVkIGNoYXIgKmNla2RhdGE7CQkvKiAoZGVjcnlwdGVk KSAqLworCXNpemVfdAkJY2VrZGF0YWxlbjsKK30gUEdDRUs7CisKIC8qCiAgKiBQR2Nvbm4g c3RvcmVzIGFsbCB0aGUgc3RhdGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgY29u bmVjdGlvbgogICogdG8gYSBiYWNrZW5kLgpAQCAtMzkzLDYgKzQxNiw3IEBAIHN0cnVjdCBw Z19jb25uCiAJY2hhcgkgICAqc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uOwkvKiBtaW5pbXVt IFRMUyBwcm90b2NvbCB2ZXJzaW9uICovCiAJY2hhcgkgICAqc3NsX21heF9wcm90b2NvbF92 ZXJzaW9uOwkvKiBtYXhpbXVtIFRMUyBwcm90b2NvbCB2ZXJzaW9uICovCiAJY2hhcgkgICAq dGFyZ2V0X3Nlc3Npb25fYXR0cnM7CS8qIGRlc2lyZWQgc2Vzc2lvbiBwcm9wZXJ0aWVzICov CisJY2hhcgkgICAqY21rbG9va3VwOwkJLyogQ01LIGxvb2t1cCBzcGVjaWZpY2F0aW9uICov CiAKIAkvKiBPcHRpb25hbCBmaWxlIHRvIHdyaXRlIHRyYWNlIGluZm8gdG8gKi8KIAlGSUxF CSAgICpQZmRlYnVnOwpAQCAtNDc1LDYgKzQ5OSwxMiBAQCBzdHJ1Y3QgcGdfY29ubgogCVBH Q29udGV4dFZpc2liaWxpdHkgc2hvd19jb250ZXh0OwkvKiB3aGV0aGVyIHRvIHNob3cgQ09O VEVYVCBmaWVsZCAqLwogCVBHbG9iamZ1bmNzICpsb2JqZnVuY3M7CQkvKiBwcml2YXRlIHN0 YXRlIGZvciBsYXJnZS1vYmplY3QgYWNjZXNzIGZucyAqLwogCisJLyogQ29sdW1uIGVuY3J5 cHRpb24gc3VwcG9ydCBkYXRhICovCisJaW50CQkJbmNta3M7CisJUEdDTUsJICAgKmNta3M7 CisJaW50CQkJbmNla3M7CisJUEdDRUsJICAgKmNla3M7CisKIAkvKiBCdWZmZXIgZm9yIGRh dGEgcmVjZWl2ZWQgZnJvbSBiYWNrZW5kIGFuZCBub3QgeWV0IHByb2Nlc3NlZCAqLwogCWNo YXIJICAgKmluQnVmZmVyOwkJLyogY3VycmVudGx5IGFsbG9jYXRlZCBidWZmZXIgKi8KIAlp bnQJCQlpbkJ1ZlNpemU7CQkvKiBhbGxvY2F0ZWQgc2l6ZSBvZiBidWZmZXIgKi8KQEAgLTY3 MCw2ICs3MDAsMTAgQEAgZXh0ZXJuIHZvaWQgcHFTYXZlTWVzc2FnZUZpZWxkKFBHcmVzdWx0 ICpyZXMsIGNoYXIgY29kZSwKIAkJCQkJCQkgICBjb25zdCBjaGFyICp2YWx1ZSk7CiBleHRl cm4gdm9pZCBwcVNhdmVQYXJhbWV0ZXJTdGF0dXMoUEdjb25uICpjb25uLCBjb25zdCBjaGFy ICpuYW1lLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnZhbHVlKTsKK2V4dGVybiBpbnQJcHFT YXZlQ29sdW1uTWFzdGVyS2V5KFBHY29ubiAqY29ubiwgaW50IGtleWlkLCBjb25zdCBjaGFy ICprZXluYW1lLAorCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmtleXJlYWxtKTsKK2V4dGVybiBp bnQJcHFTYXZlQ29sdW1uRW5jcnlwdGlvbktleShQR2Nvbm4gKmNvbm4sIGludCBrZXlpZCwg aW50IGNta2lkLCBpbnQgY21rYWxnLAorCQkJCQkJCQkJICBjb25zdCB1bnNpZ25lZCBjaGFy ICp2YWx1ZSwgaW50IGxlbik7CiBleHRlcm4gaW50CXBxUm93UHJvY2Vzc29yKFBHY29ubiAq Y29ubiwgY29uc3QgY2hhciAqKmVycm1zZ3ApOwogZXh0ZXJuIHZvaWQgcHFDb21tYW5kUXVl dWVBZHZhbmNlKFBHY29ubiAqY29ubik7CiBleHRlcm4gaW50CVBRc2VuZFF1ZXJ5Q29udGlu dWUoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSk7CmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9ubHMubWsgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9ubHMubWsK aW5kZXggMWY2MmJhMWI1Ny4uODQ0ZTA4NWU2ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvbmxzLm1rCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL25scy5tawpAQCAt MSw2ICsxLDYgQEAKICMgc3JjL2ludGVyZmFjZXMvbGlicHEvbmxzLm1rCiBDQVRBTE9HX05B TUUgICAgID0gbGlicHEKIEFWQUlMX0xBTkdVQUdFUyAgPSBjcyBkZSBlbCBlcyBmciBoZSBp dCBqYSBrbyBwbCBwdF9CUiBydSBzdiB0ciB1ayB6aF9DTiB6aF9UVwotR0VUVEVYVF9GSUxF UyAgICA9IGZlLWF1dGguYyBmZS1hdXRoLXNjcmFtLmMgZmUtY29ubmVjdC5jIGZlLWV4ZWMu YyBmZS1nc3NhcGktY29tbW9uLmMgZmUtbG9iai5jIGZlLW1pc2MuYyBmZS1wcm90b2NvbDMu YyBmZS1zZWN1cmUuYyBmZS1zZWN1cmUtY29tbW9uLmMgZmUtc2VjdXJlLWdzc2FwaS5jIGZl LXNlY3VyZS1vcGVuc3NsLmMgd2luMzIuYyAuLi8uLi9wb3J0L3RocmVhZC5jCitHRVRURVhU X0ZJTEVTICAgID0gZmUtYXV0aC5jIGZlLWF1dGgtc2NyYW0uYyBmZS1jb25uZWN0LmMgZmUt ZW5jcnlwdC1vcGVuc3NsLmMgZmUtZXhlYy5jIGZlLWdzc2FwaS1jb21tb24uYyBmZS1sb2Jq LmMgZmUtbWlzYy5jIGZlLXByb3RvY29sMy5jIGZlLXNlY3VyZS5jIGZlLXNlY3VyZS1jb21t b24uYyBmZS1zZWN1cmUtZ3NzYXBpLmMgZmUtc2VjdXJlLW9wZW5zc2wuYyB3aW4zMi5jIC4u Ly4uL3BvcnQvdGhyZWFkLmMKIEdFVFRFWFRfVFJJR0dFUlMgPSBsaWJwcV9nZXR0ZXh0IHBx SW50ZXJuYWxOb3RpY2U6MgogR0VUVEVYVF9GTEFHUyAgICA9IGxpYnBxX2dldHRleHQ6MTpw YXNzLWMtZm9ybWF0IHBxSW50ZXJuYWxOb3RpY2U6MjpjLWZvcm1hdApkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvdGVzdC8uZ2l0aWdub3JlIGIvc3JjL2ludGVyZmFjZXMv bGlicHEvdGVzdC8uZ2l0aWdub3JlCmluZGV4IDZiYTc4YWRiNjcuLjE4NDY1OTRlYzUgMTAw NjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3Rlc3QvLmdpdGlnbm9yZQorKysgYi9z cmMvaW50ZXJmYWNlcy9saWJwcS90ZXN0Ly5naXRpZ25vcmUKQEAgLTEsMiArMSwzIEBACisv bGlicHFfdGVzdF9lbmNyeXB0CiAvbGlicHFfdGVzdGNsaWVudAogL2xpYnBxX3VyaV9yZWdy ZXNzCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS90ZXN0L01ha2VmaWxlIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvdGVzdC9NYWtlZmlsZQppbmRleCA3NWFjMDhmOTQzLi5i MWViYWI5MGQ0IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS90ZXN0L01ha2Vm aWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3Rlc3QvTWFrZWZpbGUKQEAgLTE1LDEw ICsxNSwxNyBAQCBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQobGlicHFfc3JjZGlyKSAkKENQ UEZMQUdTKQogTERGTEFHU19JTlRFUk5BTCArPSAkKGxpYnBxX3BncG9ydCkKIAogUFJPR1Mg PSBsaWJwcV90ZXN0Y2xpZW50IGxpYnBxX3VyaV9yZWdyZXNzCitpZmVxICgkKHdpdGhfc3Ns KSxvcGVuc3NsKQorUFJPR1MgKz0gbGlicHFfdGVzdF9lbmNyeXB0CitlbmRpZgorCiAKIGFs bDogJChQUk9HUykKIAogJChQUk9HUyk6ICQoV0lOMzJSRVMpCiAKK2xpYnBxX3Rlc3RfZW5j cnlwdDogLi4vZmUtZW5jcnlwdC1vcGVuc3NsLmMKKwkkKENDKSAkKENQUEZMQUdTKSAtRFRF U1RfRU5DUllQVCAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoTElC UykgLW8gJEAkKFgpCisKIGNsZWFuIGRpc3RjbGVhbiBtYWludGFpbmVyLWNsZWFuOgogCXJt IC1mICQoUFJPR1MpICoubwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhw ZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVk L3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggNDQ0NTdmOTMwYy4uYzVmMzE1MzA5NCAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBA IC05NTI5LDcgKzk1MjksNyBAQCBETyAkZCQKICAgICBFTkQ7CiAkZCQ7CiBFUlJPUjogIGlu dmFsaWQgb3B0aW9uICJwYXNzd29yZCIKLUhJTlQ6ICBWYWxpZCBvcHRpb25zIGluIHRoaXMg Y29udGV4dCBhcmU6IHNlcnZpY2UsIHBhc3NmaWxlLCBjaGFubmVsX2JpbmRpbmcsIGNvbm5l Y3RfdGltZW91dCwgZGJuYW1lLCBob3N0LCBob3N0YWRkciwgcG9ydCwgb3B0aW9ucywgYXBw bGljYXRpb25fbmFtZSwga2VlcGFsaXZlcywga2VlcGFsaXZlc19pZGxlLCBrZWVwYWxpdmVz X2ludGVydmFsLCBrZWVwYWxpdmVzX2NvdW50LCB0Y3BfdXNlcl90aW1lb3V0LCBzc2xtb2Rl LCBzc2xjb21wcmVzc2lvbiwgc3NsY2VydCwgc3Nsa2V5LCBzc2xyb290Y2VydCwgc3NsY3Js LCBzc2xjcmxkaXIsIHNzbHNuaSwgcmVxdWlyZXBlZXIsIHNzbF9taW5fcHJvdG9jb2xfdmVy c2lvbiwgc3NsX21heF9wcm90b2NvbF92ZXJzaW9uLCBnc3NlbmNtb2RlLCBrcmJzcnZuYW1l LCBnc3NsaWIsIHRhcmdldF9zZXNzaW9uX2F0dHJzLCB1c2VfcmVtb3RlX2VzdGltYXRlLCBm ZHdfc3RhcnR1cF9jb3N0LCBmZHdfdHVwbGVfY29zdCwgZXh0ZW5zaW9ucywgdXBkYXRhYmxl LCB0cnVuY2F0YWJsZSwgZmV0Y2hfc2l6ZSwgYmF0Y2hfc2l6ZSwgYXN5bmNfY2FwYWJsZSwg cGFyYWxsZWxfY29tbWl0LCBrZWVwX2Nvbm5lY3Rpb25zCitISU5UOiAgVmFsaWQgb3B0aW9u cyBpbiB0aGlzIGNvbnRleHQgYXJlOiBzZXJ2aWNlLCBwYXNzZmlsZSwgY2hhbm5lbF9iaW5k aW5nLCBjb25uZWN0X3RpbWVvdXQsIGRibmFtZSwgaG9zdCwgaG9zdGFkZHIsIHBvcnQsIG9w dGlvbnMsIGFwcGxpY2F0aW9uX25hbWUsIGtlZXBhbGl2ZXMsIGtlZXBhbGl2ZXNfaWRsZSwg a2VlcGFsaXZlc19pbnRlcnZhbCwga2VlcGFsaXZlc19jb3VudCwgdGNwX3VzZXJfdGltZW91 dCwgc3NsbW9kZSwgc3NsY29tcHJlc3Npb24sIHNzbGNlcnQsIHNzbGtleSwgc3Nscm9vdGNl cnQsIHNzbGNybCwgc3NsY3JsZGlyLCBzc2xzbmksIHJlcXVpcmVwZWVyLCBzc2xfbWluX3By b3RvY29sX3ZlcnNpb24sIHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiwgZ3NzZW5jbW9kZSwg a3Jic3J2bmFtZSwgZ3NzbGliLCB0YXJnZXRfc2Vzc2lvbl9hdHRycywgY21rbG9va3VwLCB1 c2VfcmVtb3RlX2VzdGltYXRlLCBmZHdfc3RhcnR1cF9jb3N0LCBmZHdfdHVwbGVfY29zdCwg ZXh0ZW5zaW9ucywgdXBkYXRhYmxlLCB0cnVuY2F0YWJsZSwgZmV0Y2hfc2l6ZSwgYmF0Y2hf c2l6ZSwgYXN5bmNfY2FwYWJsZSwgcGFyYWxsZWxfY29tbWl0LCBrZWVwX2Nvbm5lY3Rpb25z CiBDT05URVhUOiAgU1FMIHN0YXRlbWVudCAiQUxURVIgU0VSVkVSIGxvb3BiYWNrX25vcHcg T1BUSU9OUyAoQUREIHBhc3N3b3JkICdkdW1teXB3JykiCiBQTC9wZ1NRTCBmdW5jdGlvbiBp bmxpbmVfY29kZV9ibG9jayBsaW5lIDMgYXQgRVhFQ1VURQogLS0gSWYgd2UgYWRkIGEgcGFz c3dvcmQgZm9yIG91ciB1c2VyIG1hcHBpbmcgaW5zdGVhZCwgd2Ugc2hvdWxkIGdldCBhIGRp ZmZlcmVudAoKYmFzZS1jb21taXQ6IDZmZmZmMGZkMjI1NDMyZmUyYWU0YmQ1YWJiN2ZmNjEx M2UyNTU0MTgKLS0gCjIuMzYuMQoK --------------yyXS9RW1ewvmcEGajBn6MQpX--