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 1mtGAd-0004Wi-ED for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Dec 2021 21:32:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mtGAb-0001uh-JM for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Dec 2021 21:32:41 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mtGAb-0001uM-1A for pgsql-hackers@lists.postgresql.org; Fri, 03 Dec 2021 21:32:41 +0000 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mtGAP-0005LC-Bn for pgsql-hackers@postgresql.org; Fri, 03 Dec 2021 21:32:40 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 077E332006F2 for ; Fri, 3 Dec 2021 16:32:24 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Fri, 03 Dec 2021 16:32:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=0kJM5dFUMcvDPxpsv2o/geD2SvX3t YiUj4CVLEj5W1k=; b=Sr/Sa3jKCogXfN3iwwZq4WUUdqIG5nl5Mqf4WQ6VSYPui iMa3IvWIiUOUFHfJMz6iZ8G7f/ZrT9Yuep7KqSMViracxQlwKk00/E5N+7bUMaXQ /SDO/D2OAC9v3PCUMv8ozjY8VbeJ2+R7tMmshDUVT/UT4cd9HrkiaIonVLCV+te2 UNjUxMcmjy+NnN2hvgO/KON/iox365qbyhV3np4JHtY297g+miOUgfarK3sBki0/ aRMDu8CY8wxohzYuBoVExrxWZXTNrf2OpxQaP355cO1NsWTuyURZgc/vGtpozf4Q WlxOwZPKhB08AfIwvVsDVOmW7peGgOYLRlHgdSbzw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddrieejgdduheefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfhffuvfesmhdtreertd efjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghi shgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvg hrnhepteevuedvieekieeghfevfffhhfdvjeevleelfeeikeeikedvffegteekuddtfeel necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvth gvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Fri, 3 Dec 2021 16:32:23 -0500 (EST) Content-Type: multipart/mixed; boundary="------------rO2wFieE9Zpnb4ktWsIUflBn" Message-ID: <89157929-c2b6-817b-6025-8e4b2d89d88f@enterprisedb.com> Date: Fri, 3 Dec 2021 22:32:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Content-Language: en-US From: Peter Eisentraut Subject: Transparent column encryption To: pgsql-hackers 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. --------------rO2wFieE9Zpnb4ktWsIUflBn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit 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. --------------rO2wFieE9Zpnb4ktWsIUflBn Content-Type: text/plain; charset=UTF-8; name="v1-0001-Transparent-column-encryption.patch" Content-Disposition: attachment; filename="v1-0001-Transparent-column-encryption.patch" Content-Transfer-Encoding: base64 RnJvbSA4NDI4MWE1MjJiZWRjMWI4M2JmNGZiZWE1MzkwYjhiMWYxNTkxMTUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAzIERlYyAyMDIxIDIyOjA3OjUyICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2MV0gVHJhbnNwYXJlbnQgY29sdW1uIGVuY3J5cHRpb24KCi0tLQogZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgMjI3ICsrKysrKysr KysrCiBkb2Mvc3JjL3NnbWwvZGF0YXR5cGUuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAg NDcgKysrCiBkb2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAg fCAgNjUgKysrKwogZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAg ICAgIHwgIDc5ICsrKysKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAg ICAgICAgICB8IDIyMCArKysrKysrKysrLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbCAgICAgICAgICAgIHwgIDQyICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9wcmludHR1cC5jICAgICAgICAgIHwgMTUwICsrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3R1cGRlc2MuYyAgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaHZhbGlkYXRlLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5k L2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgNTEgKystCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgNjIgKysrCiBzcmMv YmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3Jj L2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICAgICAgICAgICB8ICAgNSAr LQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDEz ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcGFyYW0uYyAgICAgICAgICAgICAgfCAg NDMgKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgICAgICAgICAgICAg fCAgIDYgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAg IHwgIDU4ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgICAgICAg ICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMgICAgICAg ICAgICB8ICAyOSArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVwLmggICAgICAgICAg ICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQgICAgICAg ICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQgICAg ICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaCAg ICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2FzdC5kYXQgICAg ICAgICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVuY2tleS5o ICAgICAgICAgICAgfCAgMTggKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xlbmNrZXlk YXRhLmggICAgICAgIHwgIDI1ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbG1hc3Rl cmtleS5oICAgICAgICAgfCAgMjQgKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFz cy5kYXQgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJh dG9yLmRhdCAgICAgICAgICAgfCAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZh bWlseS5kYXQgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190 eXBlLmRhdCAgICAgICAgICAgICAgIHwgIDEyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf dHlwZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2Fu YWx5emUuaCAgICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX3BhcmFtLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS91dGls cy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvdXRp bHMvc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbnRlcmZhY2Vz L2xpYnBxL2V4cG9ydHMudHh0ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1jb25uZWN0LmMgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtZXhlYy5jICAgICAgICAgICAgICAgIHwgMzUyICsrKysrKysrKysrKysr KysrLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMgICAgICAgICAgIHwg IDgzICsrKystCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS10cmFjZS5jICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCAgICAgICAgICAg ICAgIHwgIDE2ICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oICAgICAgICAg ICAgICB8ICAxMyArCiBzcmMvdGVzdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uLy5naXRpZ25vcmUg ICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi9NYWtlZmlsZSAg ICAgICAgICAgfCAgMjAgKwogLi4uL3QvMDAxX2NvbHVtbl9lbmNyeXB0aW9uLnBsICAgICAg ICAgICAgICAgIHwgMTM1ICsrKysrKysKIHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL3Rl c3RfY2xpZW50LmMgICAgICB8IDE1NSArKysrKysrKwogLi4uL2xpYnBxX3BpcGVsaW5lL3Ry YWNlcy9wcmVwYXJlZC50cmFjZSAgICAgIHwgICAyICstCiAuLi4vcmVncmVzcy9leHBlY3Rl ZC9jb2x1bW5fZW5jcnlwdGlvbi5vdXQgICAgfCAgNDcgKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL29pZGpvaW5zLm91dCAgICAgICAgfCAgIDQgKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCAgICAgIHwgIDEyICstCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3ByZXBhcmUub3V0ICAgICAgICAgfCAgNDEgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgICB8ICAgNiArLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0ICAgIHwgICAzICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvdHlwZV9zYW5pdHkub3V0ICAgICB8ICAyMCArLQogc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAzICsKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbHVtbl9lbmNyeXB0aW9uLnNxbCAgICB8ICA0NCArKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBhcmUuc3FsICAgICAgICAgICAgICB8ICAgNiArLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvdHlwZV9zYW5pdHkuc3FsICAgICAgICAgIHwgICA0ICst CiA2OSBmaWxlcyBjaGFuZ2VkLCAyMTk2IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sZW5ja2V5 LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVuY2tl eWRhdGEuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29s bWFzdGVya2V5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9jb2x1bW5fZW5jcnlw dGlvbi8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvY29sdW1uX2Vu Y3J5cHRpb24vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9jb2x1bW5f ZW5jcnlwdGlvbi90LzAwMV9jb2x1bW5fZW5jcnlwdGlvbi5wbAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL3Rlc3RfY2xpZW50LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbHVtbl9lbmNyeXB0aW9u Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbHVtbl9l bmNyeXB0aW9uLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s IGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggYzFkMTFiZTczZi4uYTIyMGFh NGRkMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTEwNSw2ICsxMDUsMjEgQEAgPHRpdGxlPlN5 c3RlbSBDYXRhbG9nczwvdGl0bGU+CiAgICAgICA8ZW50cnk+Y29sbGF0aW9ucyAobG9jYWxl IGluZm9ybWF0aW9uKTwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jb2xlbmNrZXkiPjxzdHJ1Y3Ru YW1lPnBnX2NvbGVuY2tleTwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT5jb2x1bW4gZW5jcnlwdGlvbiBrZXlzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWNvbGVu Y2tleWRhdGEiPjxzdHJ1Y3RuYW1lPnBnX2NvbGVuY2tleWRhdGE8L3N0cnVjdG5hbWU+PC9s aW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+Y29sdW1uIGVuY3J5cHRpb24ga2V5IGRhdGE8 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctY29sbWFzdGVya2V5Ij48c3RydWN0bmFtZT5wZ19jb2xt YXN0ZXJrZXk8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+Y29s dW1uIG1hc3RlciBrZXlzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAg ICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWNvbnN0cmFpbnQiPjxzdHJ1 Y3RuYW1lPnBnX2NvbnN0cmFpbnQ8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAg ICA8ZW50cnk+Y2hlY2sgY29uc3RyYWludHMsIHVuaXF1ZSBjb25zdHJhaW50cywgcHJpbWFy eSBrZXkgY29uc3RyYWludHMsIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzPC9lbnRyeT4KQEAg LTI0MjMsNiArMjQzOCwyMTggQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlvbjwv c3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCisg PHNlY3QxIGlkPSJjYXRhbG9nLXBnLWNvbGVuY2tleSI+CisgIDx0aXRsZT48c3RydWN0bmFt ZT5wZ19jb2xlbmNrZXk8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpv bmU9ImNhdGFsb2ctcGctY29sZW5ja2V5Ij4KKyAgIDxwcmltYXJ5PnBnX2NvbGVuY2tleTwv cHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgY2F0YWxvZyA8 c3RydWN0bmFtZT5wZ19jb2xlbmNrZXk8L3N0cnVjdG5hbWU+IGNvbnRhaW5zIGluZm9ybWF0 aW9uCisgICBhYm91dCB0aGUgY29sdW1uIGVuY3J5cHRpb24ga2V5cyBpbiB0aGUgZGF0YWJh c2UuICBUaGUgYWN0dWFsIGtleSBtYXRlcmlhbAorICAgb2YgdGhlIGNvbHVtbiBlbmNyeXB0 aW9uIGtleXMgaXMgaW4gdGhlIGNhdGFsb2cgPGxpbmsKKyAgIGxpbmtlbmQ9ImNhdGFsb2ct cGctY29sZW5ja2V5ZGF0YSI+PHN0cnVjdG5hbWU+cGdfY29sZW5ja2V5ZGF0YTwvc3RydWN0 bmFtZT48L2xpbms+LgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxzdHJ1 Y3RuYW1lPnBnX2NvbGVuY2tleTwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8 dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBl Pm9pZDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBp ZGVudGlmaWVyCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNla25hbWU8 L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgQ29sdW1uIGVuY3J5cHRpb24ga2V5IG5hbWUKKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+Cisg IDwvdGFibGU+CisgPC9zZWN0MT4KKworIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1jb2xlbmNr ZXlkYXRhIj4KKyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGVuY2tleWRhdGE8L3N0cnVj dG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctY29sZW5j a2V5ZGF0YSI+CisgICA8cHJpbWFyeT5wZ19jb2xlbmNrZXlkYXRhPC9wcmltYXJ5PgorICA8 L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFRoZSBjYXRhbG9nIDxzdHJ1Y3RuYW1lPnBn X2NvbGVuY2tleWRhdGE8L3N0cnVjdG5hbWU+IGNvbnRhaW5zIHRoZSBrZXkKKyAgIG1hdGVy aWFsIG9mIGNvbHVtbiBlbmNyeXB0aW9uIGtleXMuICBFYWNoIGNvbHVtbiBlbmNyeXB0aW9u IGtleSBvYmplY3QgY2FuCisgICBjb250YWluIHNldmVyYWwgdmVyc2lvbnMgb2YgdGhlIGtl eSBtYXRlcmlhbCwgZWFjaCBlbmNyeXB0ZWQgd2l0aCBhCisgICBkaWZmZXJlbnQgY29sdW1u IG1hc3RlciBrZXkuICBUaGF0IGFsbG93cyB0aGUgZ3JhZHVhbCByb3RhdGlvbiBvZiB0aGUK KyAgIGNvbHVtbiBtYXN0ZXIga2V5cy4gIFRodXMsIDxsaXRlcmFsPihja2RjZWtpZCwgY2tk Y21raWQpPC9saXRlcmFsPiBpcyBhCisgICB1bmlxdWUga2V5IG9mIHRoaXMgdGFibGUuCisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSBrZXkgbWF0ZXJpYWwgb2YgY29sdW1uIGVu Y3J5cHRpb24ga2V5cyBzaG91bGQgbmV2ZXIgYmUgZGVjcnlwdGVkIGluc2lkZQorICAgdGhl IGRhdGFiYXNlIGluc3RhbmNlLiAgSXQgaXMgbWVhbnQgdG8gYmUgc2VudCBhcy1pcyB0byB0 aGUgY2xpZW50LCB3aGVyZQorICAgaXQgaXMgZGVjcnlwdGVkIHVzaW5nIHRoZSBhc3NvY2lh dGVkIGNvbHVtbiBtYXN0ZXIga2V5LCBhbmQgdGhlbiB1c2VkIHRvCisgICBlbmNyeXB0IG9y IGRlY3J5cHQgY29sdW1uIHZhbHVlcy4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0 aXRsZT48c3RydWN0bmFtZT5wZ19jb2xlbmNrZXlkYXRhPC9zdHJ1Y3RuYW1lPiBDb2x1bW5z PC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+b2lkPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgUm93IGlkZW50aWZpZXIKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+Y2tkY2VraWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAg KHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jb2xlbmNrZXkiPjxzdHJ1 Y3RuYW1lPnBnX2NvbGVuY2tleTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5v aWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgdGhpcyBlbnRyeSBiZWxvbmdzIHRvCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNrZGNta2lkPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNh dGFsb2ctcGctY29sbWFzdGVya2V5Ij48c3RydWN0bmFtZT5wZ19jb2xtYXN0ZXJrZXk8L3N0 cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgY29sdW1uIG1hc3RlciBrZXkg dGhhdCB0aGUga2V5IG1hdGVyaWFsIGlzIGVuY3J5cHRlZCB3aXRoCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPmNrZGNta2FsZzwvc3RydWN0ZmllbGQ+IDx0eXBlPnRl eHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgZW5j cnlwdGlvbiBhbGdvcml0aG0gdXNlZCBmb3IgZW5jcnlwdGluZyB0aGUga2V5IG1hdGVyaWFs CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNrZGVuY3ZhbDwvc3RydWN0 ZmllbGQ+IDx0eXBlPmJ5dGVhPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhlIGtleSBtYXRlcmlhbCBvZiB0aGlzIGNvbHVtbiBlbmNyeXB0aW9uIGtl eSwgZW5jcnlwdGVkIHVzaW5nIHRoZQorICAgICAgIHJlZmVyZW5jZWQgY29sdW1uIG1hc3Rl ciBrZXkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5 PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworIDxzZWN0MSBpZD0i Y2F0YWxvZy1wZy1jb2xtYXN0ZXJrZXkiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfY29s bWFzdGVya2V5PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJj YXRhbG9nLXBnLWNvbG1hc3RlcmtleSI+CisgICA8cHJpbWFyeT5wZ19jb2xtYXN0ZXJrZXk8 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIGNhdGFsb2cg PHN0cnVjdG5hbWU+cGdfY29sbWFzdGVya2V5PC9zdHJ1Y3RuYW1lPiBjb250YWlucyBpbmZv cm1hdGlvbgorICAgYWJvdXQgY29sdW1uIG1hc3RlciBrZXlzLiAgVGhlIGtleXMgdGhlbXNl bHZlcyBhcmUgbm90IHN0b3JlZCBpbiB0aGUKKyAgIGRhdGFiYXNlLiAgVGhlIGNhdGFsb2cg ZW50cnkgb25seSBjb250YWlucyBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzZWQgYnkKKyAgIGNs aWVudHMgdG8gbG9jYXRlIHRoZSBrZXlzLCBmb3IgZXhhbXBsZSBpbiBhIGZpbGUgb3IgaW4g YSBrZXkgbWFuYWdlbWVudAorICAgc3lzdGVtLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgor ICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbG1hc3RlcmtleTwvc3RydWN0bmFtZT4gQ29s dW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm9pZDwv c3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPmNta25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgQ29sdW1uIG1hc3RlciBrZXkgbmFt ZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jbWtwcm92aWRlcjwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBUaGUgcHJvdmlkZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29sdW1uIG1h c3RlciBrZXkuICBUaGlzIGlzIHVzZWQgYnkKKyAgICAgICBjbGllbnRzIHRvIGRldGVybWlu ZSBob3cgdG8gbG9vayB1cCB0aGUga2V5LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5jbWtvcHRpb25zPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dFtdPC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJvdmlkZXItc3BlY2lmaWMg b3B0aW9ucywgc3VjaCBhcyBhIGZpbGUgbmFtZSBvciBhIFVSTC4KKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwv dGFibGU+CisgPC9zZWN0MT4KKwogIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1jb25zdHJhaW50 Ij4KICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbnN0cmFpbnQ8L3N0cnVjdG5hbWU+PC90 aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RhdGF0eXBlLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZGF0YXR5cGUuc2dtbAppbmRleCA2OTI5ZjNiYjE4Li5iY2RhMjQ5MTc5IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGF0YXR5cGUuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZGF0YXR5cGUuc2dtbApAQCAtNTM0MSw0ICs1MzQxLDUxIEBAIDx0aXRsZT5Qc2V1ZG8t VHlwZXM8L3RpdGxlPgogCiAgIDwvc2VjdDE+CiAKKyAgPHNlY3QxIGlkPSJkYXRhdHlwZS1l bmNyeXB0ZWQiPgorICAgPHRpdGxlPlR5cGVzIFJlbGF0ZWQgdG8gRW5jcnlwdGlvbjwvdGl0 bGU+CisKKyAgIDxwYXJhPgorICAgIEFuIGVuY3J5cHRlZCBjb2x1bW4gdmFsdWUgKHNlZSA8 eHJlZiBsaW5rZW5kPSJkZGwtY29sdW1uLWVuY3J5cHRpb24iLz4pIGlzCisgICAgaW50ZXJu YWxseSBzdG9yZWQgdXNpbmcgdGhlIHR5cGVzCisgICAgPHR5cGU+ZW5jcnlwdGVkcjwvdHlw ZT4gKGZvciByYW5kb21pemVkIGVuY3J5cHRpb24pIG9yCisgICAgPHR5cGU+ZW5jcnlwdGVk ZDwvdHlwZT4gKGZvciBkZXRlcm1pbmlzdGljIGVuY3J5cHRpb24pOyBzZWUgPHhyZWYKKyAg ICBsaW5rZW5kPSJkYXRhdHlwZS1lbmNyeXB0ZWQtdGFibGUiLz4uICBNb3N0IG9mIHRoZSBk YXRhYmFzZSBzeXN0ZW0gdHJlYXRzCisgICAgdGhpcyBhcyBub3JtYWwgdHlwZXMuICBGb3Ig ZXhhbXBsZSwgdGhlIHR5cGUgPHR5cGU+ZW5jcnlwdGVkZDwvdHlwZT4gaGFzCisgICAgYW4g ZXF1YWxzIG9wZXJhdG9yIHRoYXQgYWxsb3dzIGxvb2t1cCBvZiBlbmNyeXB0ZWQgdmFsdWVz LiAgVGhlIGV4dGVybmFsCisgICAgcmVwcmVzZW50YXRpb24gb2YgdGhlc2UgdHlwZXMgaXMg dGhlIHNhbWUgYXMgdGhlIDx0eXBlPmJ5dGVhPC90eXBlPiB0eXBlLgorICAgIFRodXMsIGNs aWVudHMgdGhhdCBkb24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGNvbHVtbiBlbmNyeXB0aW9u IG9yIGhhdmUKKyAgICBkaXNhYmxlZCBpdCB3aWxsIHNlZSB0aGUgZW5jcnlwdGVkIHZhbHVl cyBhcyBieXRlIGFycmF5cy4gIENsaWVudHMgdGhhdAorICAgIHN1cHBvcnQgdHJhbnNwYXJl bnQgZGF0YSBlbmNyeXB0aW9uIHdpbGwgbm90IHNlZSB0aGVzZSB0eXBlcyBpbiByZXN1bHQK KyAgICBzZXRzLCBhcyB0aGUgcHJvdG9jb2wgbGF5ZXIgd2lsbCB0cmFuc2xhdGUgdGhlbSBi YWNrIHRvIGRlY2xhcmVkCisgICAgdW5kZXJseWluZyB0eXBlIGluIHRoZSB0YWJsZSBkZWZp bml0aW9uLgorICAgPC9wYXJhPgorCisgICAgPHRhYmxlIGlkPSJkYXRhdHlwZS1lbmNyeXB0 ZWQtdGFibGUiPgorICAgICA8dGl0bGU+VHlwZXMgUmVsYXRlZCB0byBFbmNyeXB0aW9uPC90 aXRsZT4KKyAgICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICAgIDxjb2xzcGVjIGNvbG5hbWU9 ImNvbDEiIGNvbHdpZHRoPSIxKiIvPgorICAgICAgPGNvbHNwZWMgY29sbmFtZT0iY29sMiIg Y29sd2lkdGg9IjMqIi8+CisgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wzIiBjb2x3aWR0 aD0iMioiLz4KKyAgICAgIDx0aGVhZD4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+ TmFtZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5TdG9yYWdlIFNpemU8L2VudHJ5PgorICAg ICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg PC90aGVhZD4KKyAgICAgIDx0Ym9keT4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+ PHR5cGU+ZW5jcnlwdGVkZDwvdHlwZT48L2VudHJ5PgorICAgICAgICA8ZW50cnk+MSBvciA0 IGJ5dGVzIHBsdXMgdGhlIGFjdHVhbCBiaW5hcnkgc3RyaW5nPC9lbnRyeT4KKyAgICAgICAg PGVudHJ5PmVuY3J5cHRlZCBjb2x1bW4gdmFsdWUsIGRldGVybWluaXN0aWMgZW5jcnlwdGlv bjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 Pjx0eXBlPmVuY3J5cHRlZHI8L3R5cGU+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PjEgb3Ig NCBieXRlcyBwbHVzIHRoZSBhY3R1YWwgYmluYXJ5IHN0cmluZzwvZW50cnk+CisgICAgICAg IDxlbnRyeT5lbmNyeXB0ZWQgY29sdW1uIHZhbHVlLCByYW5kb21pemVkIGVuY3J5cHRpb248 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgPC90Ym9keT4KKyAgICAgPC90Z3JvdXA+ CisgICAgPC90YWJsZT4KKyAgPC9zZWN0MT4KICA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggNjQy ZWEyYTcwZC4uYjBjMjY5NThhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAtMTE2MSw2ICsxMTYxLDcxIEBAIDx0 aXRsZT5FeGNsdXNpb24gQ29uc3RyYWludHM8L3RpdGxlPgogICA8L3NlY3QyPgogIDwvc2Vj dDE+CiAKKyA8c2VjdDEgaWQ9ImRkbC1jb2x1bW4tZW5jcnlwdGlvbiI+CisgIDx0aXRsZT5U cmFuc3BhcmVudCBDb2x1bW4gRW5jcnlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBX aXRoIDxmaXJzdHRlcm0+dHJhbnNwYXJlbnQgY29sdW1uIGVuY3J5cHRpb248L2ZpcnN0dGVy bT4sIGNvbHVtbnMgY2FuIGJlCisgICBzdG9yZWQgZW5jcnlwdGVkIGluIHRoZSBkYXRhYmFz ZS4gIFRoZSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIGhhcHBlbnMgb24KKyAgIHRoZSBj bGllbnQsIHNvIHRoYXQgdGhlIHBsYWludGV4dCB2YWx1ZSBpcyBuZXZlciBzZWVuIGluIHRo ZSBkYXRhYmFzZQorICAgaW5zdGFuY2Ugb3Igb24gdGhlIHNlcnZlciBob3N0aW5nIHRoZSBk YXRhYmFzZS4gIFRoZSBkcmF3YmFjayBpcyB0aGF0IG1vc3QKKyAgIG9wZXJhdGlvbnMsIHN1 Y2ggYXMgZnVuY3Rpb24gY2FsbHMgb3Igc29ydGluZywgYXJlIG5vdCBwb3NzaWJsZSBvbgor ICAgZW5jcnlwdGVkIHZhbHVlcy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVHJhbnBh cmVudCBjb2x1bW4gZW5jcnlwdGlvbiB1c2VzIHR3byBsZXZlbHMgb2YgY3J5cHRvZ3JhcGhp YyBrZXlzLiAgVGhlCisgICBhY3R1YWwgY29sdW1uIHZhbHVlIGlzIGVuY3J5cHRlZCB1c2lu ZyBhIHN5bW1ldHJpYyBhbGdvcml0aG0sIHN1Y2ggYXMgQUVTLAorICAgdXNpbmcgYSA8Zmly c3R0ZXJtPmNvbHVtbiBlbmNyeXB0aW9uIGtleTwvZmlyc3R0ZXJtPgorICAgKDxhY3Jvbnlt PkNFSzwvYWNyb255bT4pLiAgVGhlIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBpcyBpbiB0dXJu IGVuY3J5cHRlZAorICAgdXNpbmcgYW4gYXNzeW1tZXRyaWMgYWxnb3JpdGhtLCBzdWNoIGFz IFJTQSwgdXNpbmcgYSA8Zmlyc3R0ZXJtPmNvbHVtbgorICAgbWFzdGVyIGtleTwvZmlyc3R0 ZXJtPiAoPGFjcm9ueW0+Q01LPC9hY3JvbnltPikuICBUaGUgZW5jcnlwdGVkIENFSyBpcwor ICAgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSBzeXN0ZW0uICBUaGUgQ01LIGlzIG5vdCBzdG9y ZWQgaW4gdGhlIGRhdGFiYXNlCisgICBzeXN0ZW07IGl0IGlzIHN0b3JlZCBvbiB0aGUgY2xp ZW50IG9yIHNvbWV3aGVyZSB3aGVyZSB0aGUgY2xpZW50IGNhbiBhY2Nlc3MKKyAgIGl0LCBz dWNoIGFzIGluIGEgbG9jYWwgZmlsZSBvciBpbiBhIGtleSBtYW5hZ2VtZW50IHN5c3RlbS4g IFRoZSBkYXRhYmFzZQorICAgc3lzdGVtIG9ubHkgcmVjb3JkcyB3aGVyZSB0aGUgQ01LIGlz IHN0b3JlZCBhbmQgcHJvdmlkZXMgdGhpcyBpbmZvcm1hdGlvbgorICAgdG8gdGhlIGNsaWVu dC4gIFdoZW4gcm93cyBjb250YWluaW5nIGVuY3J5cHRlZCBjb2x1bW5zIGFyZSBzZW50IHRv IHRoZQorICAgY2xpZW50LCB0aGUgc2VydmVyIGZpcnN0IHNlbmRzIGFueSBuZWNlc3Nhcnkg Q01LIGluZm9ybWF0aW9uLCBmb2xsb3dlZCBieQorICAgYW55IHJlcXVpcmVkIENFSy4gIFRo ZSBjbGllbnQgdGhlbiBsb29rcyB1cCB0aGUgQ01LIGFuZCB1c2VzIHRoYXQgdG8KKyAgIGRl Y3J5cHQgdGhlIENFSy4gIFRoZW4gaXQgZGVjcnlwdHMgaW5jb21pbmcgcm93IGRhdGEgdXNp bmcgdGhlIENFSyBhbmQKKyAgIHByb3ZpZGVzIHRoZSBkZWNyeXB0ZWQgcm93IGRhdGEgdG8g dGhlIGFwcGxpY2F0aW9uLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBIZXJlIGlzIGFu IGV4YW1wbGUgZGVjbGFyaW5nIGEgY29sdW1uIGFzIGVuY3J5cHRlZDoKKzxwcm9ncmFtbGlz dGluZz4KK0NSRUFURSBUQUJMRSBjdXN0b21lcnMgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBuYW1lIHRleHQgTk9UIE5VTEwsCisgICAgLi4uCisgICAgY3JlZGl0Y2FyZF9u dW0gdGV4dCA8ZW1waGFzaXM+RU5DUllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9uX2tl eSA9IGNlazEpPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+ CisKKyAgPHBhcmE+CisgICBDb2x1bW4gZW5jcnlwdGlvbiBzdXBwb3J0cyA8Zmlyc3R0ZXJt PnJhbmRvbWl6ZWQ8L2ZpcnN0dGVybT4gYW5kCisgICA8Zmlyc3R0ZXJtPmRldGVybWluaXN0 aWM8L2ZpcnN0dGVybT4gZW5jcnlwdGlvbi4gIFRoZSBhYm92ZSBleGFtcGxlIHVzZXMKKyAg IHJhbmRvbWl6ZWQgZW5jcnlwdGlvbiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuICBSYW5kb21p emVkIGVuY3J5cHRpb24gdXNlcyBhCisgICByYW5kb20gaW5pdGlhbGl6YXRpb24gdmVjdG9y IGZvciBlYWNoIGVuY3J5cHRpb24sIHNvIHRoYXQgZXZlbiBpZiB0aGUKKyAgIHBsYWludGV4 dCBvZiB0d28gcm93cyBpcyBlcXVhbCwgdGhlIGVuY3J5cHRlZCB2YWx1ZXMgd2lsbCBiZSBk aWZmZXJlbnQuCisgICBUaGlzIHByZXZlbnRzIHNvbWVvbmUgd2l0aCBkaXJlY3QgYWNjZXNz IHRvIHRoZSBkYXRhYmFzZSBzZXJ2ZXIgdG8gbWFrZQorICAgY29tcHV0YXRpb25zIHN1Y2gg YXMgZGlzdGluY3QgY291bnRzIG9uIHRoZSBlbmNyeXB0ZWQgdmFsdWVzLgorICAgRGV0ZXJt aW5pc3RpYyBlbmNyeXB0aW9uIHVzZXMgYSBmaXhlZCBpbml0aWFsaXphdGlvbiB2ZWN0b3Iu ICBUaGlzIHJlZHVjZXMKKyAgIHNlY3VyaXR5LCBidXQgaXQgYWxsb3dzIGVxdWFsaXR5IHNl YXJjaGVzIG9uIGVuY3J5cHRlZCB2YWx1ZXMuICBUaGUKKyAgIGZvbGxvd2luZyBleGFtcGxl IGRlY2xhcmVzIGEgY29sdW1uIHdpdGggZGV0ZXJtaW5pc3RpYyBlbmNyeXB0aW9uOgorPHBy b2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxFIGVtcGxveWVlcyAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKyAgICAuLi4KKyAgICBzc24g dGV4dCBFTkNSWVBURUQgV0lUSCAoCisgICAgICAgIGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9 IGNlazEsIDxlbXBoYXNpcz5lbmNyeXB0aW9uX3R5cGUgPSBkZXRlcm1pbmlzdGljPC9lbXBo YXNpcz4pCispOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvc2VjdDE+CisK ICA8c2VjdDEgaWQ9ImRkbC1zeXN0ZW0tY29sdW1ucyI+CiAgIDx0aXRsZT5TeXN0ZW0gQ29s dW1uczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sIGIv ZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKaW5kZXggYzE3ZDMzYTU0Zi4uZjFiYjVlOWRmNSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2xpYnBxLnNnbWwKQEAgLTMwMTIsNiArMzAxMiw0NCBAQCA8dGl0bGU+TWFpbiBGdW5jdGlv bnM8L3RpdGxlPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFleGVjUHJlcGFyZWQyIj4KKyAgICAg IDx0ZXJtPjxmdW5jdGlvbj5QUWV4ZWNQcmVwYXJlZDI8L2Z1bmN0aW9uPjxpbmRleHRlcm0+ PHByaW1hcnk+UFFleGVjUHJlcGFyZWQyPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4K KworICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTZW5kcyBhIHJl cXVlc3QgdG8gZXhlY3V0ZSBhIHByZXBhcmVkIHN0YXRlbWVudCB3aXRoIGdpdmVuCisgICAg ICAgIHBhcmFtZXRlcnMsIGFuZCB3YWl0cyBmb3IgdGhlIHJlc3VsdCwgd2l0aCBzdXBwb3J0 IGZvciBlbmNyeXB0ZWQgY29sdW1ucy4KKzxzeW5vcHNpcz4KK1BHcmVzdWx0ICpQUWV4ZWNQ cmVwYXJlZDIoUEdjb25uICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKnN0bXROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuUGFyYW1z LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqcGFyYW1W YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUxlbmd0 aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUZvcm1hdHMs CisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc3VsdEZvcm1hdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICBQR3Jlc3VsdCAqcGFyYW1EZXNjKTsKKzwvc3lub3BzaXM+Cisg ICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIDx4cmVmIGxpbmtlbmQ9 ImxpYnBxLVBRZXhlY1ByZXBhcmVkMiIvPiBpcyBsaWtlIDx4cmVmCisgICAgICAgIGxpbmtl bmQ9ImxpYnBxLVBRZXhlY1ByZXBhcmVkIi8+IHdpdGggYWRkaXRpb25hbCBzdXBwb3J0IGZv ciBlbmNyeXB0ZWQKKyAgICAgICAgY29sdW1ucy4gIFRoZSBwYXJhbWV0ZXIgPHBhcmFtZXRl cj5wYXJhbURlc2M8L3BhcmFtZXRlcj4gbXVzdCBiZSBhCisgICAgICAgIHJlc3VsdCBzZXQg b2J0YWluZWQgZnJvbSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWRlc2NyaWJlUHJlcGFyZWQi Lz4gb24KKyAgICAgICAgdGhlIHNhbWUgcHJlcGFyZWQgc3RhdGVtZW50LgorICAgICAgIDwv cGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUg dXNlZCBpZiBhIHN0YXRlbWVudCBwYXJhbWV0ZXIgY29ycmVzcG9uZHMgdG8gYW4KKyAgICAg ICAgdW5kZXJseWluZyBlbmNyeXB0ZWQgY29sdW1uLiAgSW4gdGhhdCBzaXR1YXRpb24sIHRo ZSBwcmVwYXJlZAorICAgICAgICBzdGF0ZW1lbnQgbmVlZHMgdG8gYmUgZGVzY3JpYmVkIGZp cnN0IHNvIHRoYXQgbGlicHEgY2FuIG9idGFpbiB0aGUKKyAgICAgICAgbmVjZXNzYXJ5IGtl eSBhbmQgb3RoZXIgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2VydmVyLiAgV2hlbiB0aGF0IGlz CisgICAgICAgIGRvbmUsIHRoZSBwYXJhbWV0ZXJzIGNvcnJlc3BvbmRpbmcgdG8gZW5jcnlw dGVkIGNvbHVtbnMgYXJlCisgICAgICAgIGF1dG9tYXRpY2FsbHkgZW5jcnlwdGVkIGFwcHJv cHJpYXRlbHkgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdGhlIHNlcnZlci4KKyAgICAgICA8L3Bh cmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8 dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWRlc2NyaWJlUHJlcGFyZWQiPgogICAgICAgPHRl cm0+PGZ1bmN0aW9uPlBRZGVzY3JpYmVQcmVwYXJlZDwvZnVuY3Rpb24+PGluZGV4dGVybT48 cHJpbWFyeT5QUWRlc2NyaWJlUHJlcGFyZWQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJt PgogCkBAIC00NTYzLDYgKzQ2MDEsNyBAQCA8dGl0bGU+QXN5bmNocm9ub3VzIENvbW1hbmQg UHJvY2Vzc2luZzwvdGl0bGU+CiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRRdWVy eVBhcmFtcyIvPiwKICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZFByZXBhcmUiLz4s CiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRRdWVyeVByZXBhcmVkIi8+LAorICAg PHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kUXVlcnlQcmVwYXJlZDIiLz4sCiAgICA8eHJl ZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmREZXNjcmliZVByZXBhcmVkIi8+LCBhbmQKICAgIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZERlc2NyaWJlUG9ydGFsIi8+LAogICAgd2hpY2gg Y2FuIGJlIHVzZWQgd2l0aCA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWdldFJlc3VsdCIvPiB0 byBkdXBsaWNhdGUKQEAgLTQ1NzAsNiArNDYwOSw3IEBAIDx0aXRsZT5Bc3luY2hyb25vdXMg Q29tbWFuZCBQcm9jZXNzaW5nPC90aXRsZT4KICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBR ZXhlY1BhcmFtcyIvPiwKICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRcHJlcGFyZSIvPiwK ICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZXhlY1ByZXBhcmVkIi8+LAorICAgPHhyZWYg bGlua2VuZD0ibGlicHEtUFFleGVjUHJlcGFyZWQyIi8+LAogICAgPHhyZWYgbGlua2VuZD0i bGlicHEtUFFkZXNjcmliZVByZXBhcmVkIi8+LCBhbmQKICAgIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLVBRZGVzY3JpYmVQb3J0YWwiLz4KICAgIHJlc3BlY3RpdmVseS4KQEAgLTQ2ODEsNiAr NDcyMSw0NCBAQCA8dGl0bGU+QXN5bmNocm9ub3VzIENvbW1hbmQgUHJvY2Vzc2luZzwvdGl0 bGU+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFy bGlzdGVudHJ5IGlkPSJsaWJwcS1QUXNlbmRRdWVyeVByZXBhcmVkMiI+CisgICAgIDx0ZXJt PjxmdW5jdGlvbj5QUXNlbmRRdWVyeVByZXBhcmVkMjwvZnVuY3Rpb24+PGluZGV4dGVybT48 cHJpbWFyeT5QUXNlbmRRdWVyeVByZXBhcmVkMjwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rl cm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgU2VuZHMgYSBy ZXF1ZXN0IHRvIGV4ZWN1dGUgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgd2l0aCBnaXZlbgorICAg ICAgIHBhcmFtZXRlcnMsIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIHJlc3VsdChzKSwgd2l0 aCBzdXBwb3J0IGZvciBlbmNyeXB0ZWQgY29sdW1ucy4KKzxzeW5vcHNpcz4KK2ludCBQUXNl bmRRdWVyeVByZXBhcmVkKFBHY29ubiAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKnN0bXROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5Q YXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKnBh cmFtVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUxl bmd0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnBhcmFtRm9ybWF0 cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXN1bHRGb3JtYXQsCisgICAgICAg ICAgICAgICAgICAgICAgICBQR3Jlc3VsdCAqcGFyYW1EZXNjKTsKKzwvc3lub3BzaXM+Cisg ICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLVBRc2VuZFF1ZXJ5UHJlcGFyZWQyIi8+IGlzIGxpa2UgPHhyZWYKKyAgICAgICBsaW5r ZW5kPSJsaWJwcS1QUXNlbmRRdWVyeVByZXBhcmVkIi8+IHdpdGggYWRkaXRpb25hbCBzdXBw b3J0IGZvciBlbmNyeXB0ZWQKKyAgICAgICBjb2x1bW5zLiAgVGhlIHBhcmFtZXRlciA8cGFy YW1ldGVyPnBhcmFtRGVzYzwvcGFyYW1ldGVyPiBtdXN0IGJlIGEKKyAgICAgICByZXN1bHQg c2V0IG9idGFpbmVkIGZyb20gPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kRGVzY3JpYmVQ cmVwYXJlZCIvPiBvbgorICAgICAgIHRoZSBzYW1lIHByZXBhcmVkIHN0YXRlbWVudC4KKyAg ICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0 IGJlIHVzZWQgaWYgYSBzdGF0ZW1lbnQgcGFyYW1ldGVyIGNvcnJlc3BvbmRzIHRvIGFuCisg ICAgICAgdW5kZXJseWluZyBlbmNyeXB0ZWQgY29sdW1uLiAgSW4gdGhhdCBzaXR1YXRpb24s IHRoZSBwcmVwYXJlZAorICAgICAgIHN0YXRlbWVudCBuZWVkcyB0byBiZSBkZXNjcmliZWQg Zmlyc3Qgc28gdGhhdCBsaWJwcSBjYW4gb2J0YWluIHRoZQorICAgICAgIG5lY2Vzc2FyeSBr ZXkgYW5kIG90aGVyIGluZm9ybWF0aW9uIGZyb20gdGhlIHNlcnZlci4gIFdoZW4gdGhhdCBp cworICAgICAgIGRvbmUsIHRoZSBwYXJhbWV0ZXJzIGNvcnJlc3BvbmRpbmcgdG8gZW5jcnlw dGVkIGNvbHVtbnMgYXJlCisgICAgICAgYXV0b21hdGljYWxseSBlbmNyeXB0ZWQgYXBwcm9w cmlhdGVseSBiZWZvcmUgYmVpbmcgc2VudCB0byB0aGUgc2VydmVyLgorICAgICAgPC9wYXJh PgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgPHZhcmxp c3RlbnRyeSBpZD0ibGlicHEtUFFzZW5kRGVzY3JpYmVQcmVwYXJlZCI+CiAgICAgIDx0ZXJt PjxmdW5jdGlvbj5QUXNlbmREZXNjcmliZVByZXBhcmVkPC9mdW5jdGlvbj48aW5kZXh0ZXJt PjxwcmltYXJ5PlBRc2VuZERlc2NyaWJlUHJlcGFyZWQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+ PC90ZXJtPgogCkBAIC00NzMxLDYgKzQ4MDksNyBAQCA8dGl0bGU+QXN5bmNocm9ub3VzIENv bW1hbmQgUHJvY2Vzc2luZzwvdGl0bGU+CiAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFzZW5kUXVlcnlQYXJhbXMiLz4sCiAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFz ZW5kUHJlcGFyZSIvPiwKICAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRRdWVy eVByZXBhcmVkIi8+LAorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZFF1ZXJ5 UHJlcGFyZWQyIi8+LAogICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZERlc2Ny aWJlUHJlcGFyZWQiLz4sCiAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzZW5kRGVz Y3JpYmVQb3J0YWwiLz4sIG9yCiAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFwaXBl bGluZVN5bmMiLz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggMzRhNzAzNDI4Mi4uOWNiOGFhZDhk NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTEwNTAsNiArMTA1MCw0NyBAQCA8dGl0bGU+RXh0 ZW5kZWQgUXVlcnk8L3RpdGxlPgogICAgPC9ub3RlPgogICA8L3NlY3QyPgogCisgIDxzZWN0 Mj4KKyAgIDx0aXRsZT5UcmFuc3BhcmVudCBDb2x1bW4gRW5jcnlwdGlvbjwvdGl0bGU+CisK KyAgIDxwYXJhPgorICAgIFdoZW4gdHJhbnNwYXJlbnQgY29sdW1uIGVuY3J5cHRpb24gaXMg ZW5hYmxlZCwgdGhlIG1lc3NhZ2VzCisgICAgQ29sdW1uTWFzdGVyS2V5IGFuZCBDb2x1bW5F bmNyeXB0aW9uS2V5IGNhbiBhcHBlYXIgYmVmb3JlIFJvd0Rlc2NyaXB0aW9uCisgICAgYW5k IFBhcmFtZXRlckRlc2NyaXB0aW9uIG1lc3NhZ2VzLiAgQ2xpZW50cyBzaG91bGQgY29sbGVj dCB0aGUgaW5mb3JtYXRpb24KKyAgICBpbiB0aGVzZSBtZXNzYWdlcyBhbmQga2VlcCB0aGVt IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNvbm5lY3Rpb24uICBBCisgICAgc2VydmVyIGlz IG5vdCByZXF1aXJlZCB0byByZXNlbmQgdGhlIGtleSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBz dGF0ZW1lbnQKKyAgICBjeWNsZSBpZiBpdCB3YXMgYWxyZWFkeSBzZW50IGR1cmluZyB0aGlz IGNvbm5lY3Rpb24uICBJZiBhIHNlcnZlciByZXNlbmRzCisgICAgYSBrZXkgdGhhdCB0aGUg Y2xpZW50IGhhcyBhbHJlYWR5IHN0b3JlZCAodGhhdCBpcywgYSBrZXkgaGF2aW5nIGEgbmFt ZQorICAgIGVxdWFsIHRvIG9uZSBhbHJlYWR5IHN0b3JlZCksIHRoZSBuZXcgaW5mb3JtYXRp b24gc2hvdWxkIHJlcGxhY2UgdGhlIG9sZC4KKyAgICAoVGhpcyBjb3VsZCBoYXBwZW4sIGZv ciBleGFtcGxlLCBpZiB0aGUga2V5IHdhcyBhbHRlcmVkIGJ5IHNlcnZlci1zaWRlIERETAor ICAgIGNvbW1hbmRzLikKKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgQSBjbGllbnQg c3VwcG9ydGluZyB0cmFuc3BhcmVudCBjb2x1bW4gZW5jcnlwdGlvbiBzaG91bGQgYXV0b21h dGljYWxseQorICAgIGRlY3J5cHQgdGhlIGNvbHVtbiB2YWx1ZSBmaWVsZHMgb2YgRGF0YVJv dyBtZXNzYWdlcyBjb3JyZXNwb25kaW5nIHRvCisgICAgZW5jcnlwdGVkIGNvbHVtbnMsIGFu ZCBpdCBzaG91bGQgYXV0b21hdGljYWxseSBlbmNyeXB0IHRoZSBwYXJhbWV0ZXIgdmFsdWUK KyAgICBmaWVsZHMgb2YgQmluZCBtZXNzYWdlcyBjb3JyZXNwb25kaW5nIHRvIGVuY3J5cHRl ZCBjb2x1bW5zLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBXaGVuIGNvbHVtbiBl bmNyeXB0aW9uIGlzIHVzZWQsIHRoZSBwbGFpbnRleHQgaXMgYWx3YXlzIGluIHRleHQgZm9y bWF0CisgICAgKG5vdCBiaW5hcnkgZm9ybWF0KS4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+ CisgICAgV2hlbiBkZXRlcm1pbmlzdGljIGVuY3J5cHRpb24gaXMgdXNlZCwgY2xpZW50cyBu ZWVkIHRvIHRha2UgY2FyZSB0bworICAgIHJlcHJlc2VudCBwbGFpbnRleHQgdG8gYmUgZW5j cnlwdGVkIGluIGEgY29uc2lzdGVudCBmb3JtLiAgRm9yIGV4YW1wbGUsCisgICAgZW5jcnlw dGluZyBhbiBpbnRlZ2VyIHJlcHJlc2VudGVkIGJ5IHRoZSBzdHJpbmcgPGxpdGVyYWw+MTAw PC9saXRlcmFsPiBhbmQKKyAgICBhbiBpbnRlZ2VyIHJlcHJlc2VudGVkIGJ5IHRoZSBzdHJp bmcgPGxpdGVyYWw+KzEwMDwvbGl0ZXJhbD4gd291bGQgcmVzdWx0CisgICAgaW4gdHdvIGRp ZmZlcmVudCBjaXBoZXJ0ZXh0cywgdGh1cyBkZWZlYXRpbmcgdGhlIG1haW4gcG9pbnQgb2YK KyAgICBkZXRlcm1pbmlzdGljIGVuY3J5cHRpb24uICBUaGlzIHByb3RvY29sIHNwZWNpZmlj YXRpb24gcmVxdWlyZXMgdGhlCisgICAgcGxhaW50ZXh0IHRvIGJlIGluIDxxdW90ZT5jYW5v bmljYWw8L3F1b3RlPiBmb3JtLCB3aGljaCBpcyB0aGUgZm9ybSB0aGF0CisgICAgaXMgcHJv ZHVjZWQgYnkgdGhlIHNlcnZlciB3aGVuIGl0IG91dHB1dHMgYSBwYXJ0aWN1bGFyIHZhbHVl IGluIHRleHQKKyAgICBmb3JtYXQuCisgICA8L3BhcmE+CisgIDwvc2VjdDI+CisKICAgPHNl Y3QyPgogICAgPHRpdGxlPkZ1bmN0aW9uIENhbGw8L3RpdGxlPgogCkBAIC00MDgzLDYgKzQx MjQsMTU5IEBAIDx0aXRsZT5NZXNzYWdlIEZvcm1hdHM8L3RpdGxlPgogPC92YXJsaXN0ZW50 cnk+CiAKIAorPHZhcmxpc3RlbnRyeT4KKzx0ZXJtPgorQ29sdW1uRW5jcnlwdGlvbktleSAo QikKKzwvdGVybT4KKzxsaXN0aXRlbT4KKzxwYXJhPgorCis8dmFyaWFibGVsaXN0PgorPHZh cmxpc3RlbnRyeT4KKzx0ZXJtPgorICAgICAgICBCeXRlMSgnWScpCis8L3Rlcm0+Cis8bGlz dGl0ZW0+Cis8cGFyYT4KKyAgICAgICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBtZXNzYWdl IGFzIGEgY29sdW1uIGVuY3J5cHRpb24ga2V5IG1lc3NhZ2UuCis8L3BhcmE+Cis8L2xpc3Rp dGVtPgorPC92YXJsaXN0ZW50cnk+Cis8dmFybGlzdGVudHJ5PgorPHRlcm0+CisgICAgICAg IEludDMyCis8L3Rlcm0+Cis8bGlzdGl0ZW0+Cis8cGFyYT4KKyAgICAgICAgICAgICAgICBM ZW5ndGggb2YgbWVzc2FnZSBjb250ZW50cyBpbiBieXRlcywgaW5jbHVkaW5nIHNlbGYuCis8 L3BhcmE+Cis8L2xpc3RpdGVtPgorPC92YXJsaXN0ZW50cnk+Cis8dmFybGlzdGVudHJ5Pgor PHRlcm0+CisgICAgICAgIFN0cmluZworPC90ZXJtPgorPGxpc3RpdGVtPgorPHBhcmE+Cisg ICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGtleS4KKzwvcGFyYT4KKzwvbGlzdGl0 ZW0+Cis8L3Zhcmxpc3RlbnRyeT4KKzx2YXJsaXN0ZW50cnk+Cis8dGVybT4KKyAgICAgICAg SW50MzIKKzwvdGVybT4KKzxsaXN0aXRlbT4KKzxwYXJhPgorICAgICAgICAgICAgICAgIFRo ZSBsZW5ndGggb2YgdGhlIGZvbGxvd2luZyBrZXkgbWF0ZXJpYWwuCis8L3BhcmE+Cis8L2xp c3RpdGVtPgorPC92YXJsaXN0ZW50cnk+Cis8dmFybGlzdGVudHJ5PgorPHRlcm0+CisgICAg ICAgIEJ5dGU8cmVwbGFjZWFibGU+bjwvcmVwbGFjZWFibGU+Cis8L3Rlcm0+Cis8bGlzdGl0 ZW0+Cis8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUga2V5IG1hdGVyaWFsLgorPC9wYXJh PgorPC9saXN0aXRlbT4KKzwvdmFybGlzdGVudHJ5PgorPC92YXJpYWJsZWxpc3Q+CisKKzwv cGFyYT4KKzwvbGlzdGl0ZW0+Cis8L3Zhcmxpc3RlbnRyeT4KKworCis8dmFybGlzdGVudHJ5 PgorPHRlcm0+CitDb2x1bW5NYXN0ZXJLZXkgKEIpCis8L3Rlcm0+Cis8bGlzdGl0ZW0+Cis8 cGFyYT4KKworPHZhcmlhYmxlbGlzdD4KKzx2YXJsaXN0ZW50cnk+Cis8dGVybT4KKyAgICAg ICAgQnl0ZTEoJ3knKQorPC90ZXJtPgorPGxpc3RpdGVtPgorPHBhcmE+CisgICAgICAgICAg ICAgICAgSWRlbnRpZmllcyB0aGUgbWVzc2FnZSBhcyBhIGNvbHVtbiBtYXN0ZXIga2V5IG1l c3NhZ2UuCis8L3BhcmE+Cis8L2xpc3RpdGVtPgorPC92YXJsaXN0ZW50cnk+Cis8dmFybGlz dGVudHJ5PgorPHRlcm0+CisgICAgICAgIEludDMyCis8L3Rlcm0+Cis8bGlzdGl0ZW0+Cis8 cGFyYT4KKyAgICAgICAgICAgICAgICBMZW5ndGggb2YgbWVzc2FnZSBjb250ZW50cyBpbiBi eXRlcywgaW5jbHVkaW5nIHNlbGYuCis8L3BhcmE+Cis8L2xpc3RpdGVtPgorPC92YXJsaXN0 ZW50cnk+Cis8dmFybGlzdGVudHJ5PgorPHRlcm0+CisgICAgICAgIFN0cmluZworPC90ZXJt PgorPGxpc3RpdGVtPgorPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhl IGtleS4KKzwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8L3Zhcmxpc3RlbnRyeT4KKzx2YXJsaXN0 ZW50cnk+Cis8dGVybT4KKyAgICAgICAgU3RyaW5nCis8L3Rlcm0+Cis8bGlzdGl0ZW0+Cis8 cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUga2V5IHByb3ZpZGVyLgor PC9wYXJhPgorPC9saXN0aXRlbT4KKzwvdmFybGlzdGVudHJ5PgorPHZhcmxpc3RlbnRyeT4K Kzx0ZXJtPgorICAgICAgICBJbnQxNgorPC90ZXJtPgorPGxpc3RpdGVtPgorPHBhcmE+Cisg ICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBvcHRpb25zIHRvIGZvbGxvdy4KKzwvcGFy YT4KKzwvbGlzdGl0ZW0+Cis8L3Zhcmxpc3RlbnRyeT4KKzwvdmFyaWFibGVsaXN0PgorICAg ICAgICBOZXh0LCB0aGUgZm9sbG93aW5nIGZpZWxkcyBmb2xsb3cgZm9yIGVhY2ggb3B0aW9u OgorPHZhcmlhYmxlbGlzdD4KKzx2YXJsaXN0ZW50cnk+Cis8dGVybT4KKyAgICAgICAgU3Ry aW5nCis8L3Rlcm0+Cis8bGlzdGl0ZW0+Cis8cGFyYT4KKyAgICAgICAgICAgICAgICBPcHRp b24gbmFtZQorPC9wYXJhPgorPC9saXN0aXRlbT4KKzwvdmFybGlzdGVudHJ5PgorPHZhcmxp c3RlbnRyeT4KKzx0ZXJtPgorICAgICAgICBTdHJpbmcKKzwvdGVybT4KKzxsaXN0aXRlbT4K KzxwYXJhPgorICAgICAgICAgICAgICAgIE9wdGlvbiB2YWx1ZQorPC9wYXJhPgorPC9saXN0 aXRlbT4KKzwvdmFybGlzdGVudHJ5PgorPC92YXJpYWJsZWxpc3Q+CisKKzwvcGFyYT4KKzwv bGlzdGl0ZW0+Cis8L3Zhcmxpc3RlbnRyeT4KKworCiA8dmFybGlzdGVudHJ5PgogPHRlcm0+ CiBDb21tYW5kQ29tcGxldGUgKEIpCkBAIC01NDA4LDYgKzU2MDIsMjMgQEAgPHRpdGxlPk1l c3NhZ2UgRm9ybWF0czwvdGl0bGU+CiA8L3BhcmE+CiA8L2xpc3RpdGVtPgogPC92YXJsaXN0 ZW50cnk+Cis8L3ZhcmlhYmxlbGlzdD4KKyAgICAgICAgQW5kIHRoZW4sIGZvciBlYWNoIHBh cmFtZXRlciwgdGhlcmUgaXMgdGhlIGZvbGxvd2luZzoKKzx2YXJpYWJsZWxpc3Q+Cis8dmFy bGlzdGVudHJ5PgorPHRlcm0+CisgICAgICAgIEludDE2Cis8L3Rlcm0+Cis8bGlzdGl0ZW0+ Cis8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGZvcm1hdCBjb2RlLiAgVGhpcyBpcyB1c2Vk IGFzIGEgYml0IGZpZWxkLiAgSWYgYml0IDB4MTAgaXMKKyAgICAgICAgICAgICAgICBzZXQs IHRoZSBwYXJhbWV0ZXIgY29ycmVzcG9uZHMgdG8gYW4gZW5jcnlwdGVkIGNvbHVtbiBhbmQg bXVzdAorICAgICAgICAgICAgICAgIGJlIHNlbnQgZW5jcnlwdGVkLiAgSWYgYml0IDB4MjAg aXMgc2V0IGluIGFkZGl0aW9uLCB0aGUgY29sdW1uCisgICAgICAgICAgICAgICAgdXNlcyBk ZXRlcm1pbmlzdGljIGVuY3J5cHRpb24sIG90aGVyd2lzZSByYW5kb21pemVkCisgICAgICAg ICAgICAgICAgZW5jcnlwdGlvbi4KKzwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8L3Zhcmxpc3Rl bnRyeT4KIDwvdmFyaWFibGVsaXN0PgogPC9wYXJhPgogPC9saXN0aXRlbT4KQEAgLTU4NzYs MTAgKzYwODcsMTEgQEAgPHRpdGxlPk1lc3NhZ2UgRm9ybWF0czwvdGl0bGU+CiA8L3Rlcm0+ CiA8bGlzdGl0ZW0+CiA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9ybWF0IGNvZGUg YmVpbmcgdXNlZCBmb3IgdGhlIGZpZWxkLiAgQ3VycmVudGx5IHdpbGwKLSAgICAgICAgICAg ICAgICBiZSB6ZXJvICh0ZXh0KSBvciBvbmUgKGJpbmFyeSkuICBJbiBhIFJvd0Rlc2NyaXB0 aW9uCi0gICAgICAgICAgICAgICAgcmV0dXJuZWQgZnJvbSB0aGUgc3RhdGVtZW50IHZhcmlh bnQgb2YgRGVzY3JpYmUsIHRoZQotICAgICAgICAgICAgICAgIGZvcm1hdCBjb2RlIGlzIG5v dCB5ZXQga25vd24gYW5kIHdpbGwgYWx3YXlzIGJlIHplcm8uCisgICAgICAgICAgICAgICAg VGhlIGZvcm1hdCBjb2RlIGJlaW5nIHVzZWQgZm9yIHRoZSBmaWVsZC4gIFRoZSBsb3dlciBi eXRlIHdpbGwKKyAgICAgICAgICAgICAgICBiZSB6ZXJvICh0ZXh0KSBvciBvbmUgKGJpbmFy eSkuICBUaGUgdXBwZXIgYnl0ZSB3aWxsIGJlIDEgaWYKKyAgICAgICAgICAgICAgICB0aGUg Y29sdW1uIGlzIGVuY3J5cHRlZC4gIEluIGEgUm93RGVzY3JpcHRpb24gcmV0dXJuZWQgZnJv bQorICAgICAgICAgICAgICAgIHRoZSBzdGF0ZW1lbnQgdmFyaWFudCBvZiBEZXNjcmliZSwg dGhlIGZvcm1hdCBjb2RlIGlzIG5vdCB5ZXQKKyAgICAgICAgICAgICAgICBrbm93biwgc28g dGhlIGxvd2VyIGJ5dGUgd2lsbCBhbHdheXMgYmUgemVyby4KIDwvcGFyYT4KIDwvbGlzdGl0 ZW0+CiA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmlu ZGV4IDU3ZDUxYTY3NmEuLmQ3MjA0M2QyYjcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbApAQCAtMjIsNyArMjIsNyBAQAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNp cz4KIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8 IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiAoIFsKLSAgeyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gWyBD T01QUkVTU0lPTiA8cmVwbGFjZWFibGU+Y29tcHJlc3Npb25fbWV0aG9kPC9yZXBsYWNlYWJs ZT4gXSBbIENPTExBVEUgPHJlcGxhY2VhYmxlPmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0g WyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3Jl cGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gWyBDT01QUkVTU0lPTiA8cmVwbGFjZWFi bGU+Y29tcHJlc3Npb25fbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSBbIEVOQ1JZUFRFRCBXSVRI ICggPHJlcGxhY2VhYmxlPmVuY3J5cHRpb25fb3B0aW9uczwvcmVwbGFjZWFibGU+ICkgXSBb IENPTExBVEUgPHJlcGxhY2VhYmxlPmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2Vh YmxlPiBbIC4uLiBdIF0KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9y ZXBsYWNlYWJsZT4KICAgICB8IExJS0UgPHJlcGxhY2VhYmxlPnNvdXJjZV90YWJsZTwvcmVw bGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmxpa2Vfb3B0aW9uPC9yZXBsYWNlYWJsZT4gLi4u IF0gfQogICAgIFssIC4uLiBdCkBAIC0zMTcsNiArMzE3LDQ2IEBAIDx0aXRsZT5QYXJhbWV0 ZXJzPC90aXRsZT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+RU5DUllQVEVEIFdJVEggKCA8 cmVwbGFjZWFibGU+ZW5jcnlwdGlvbl9vcHRpb25zPC9yZXBsYWNlYWJsZT4gKTwvbGl0ZXJh bD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEVuYWJsZXMg dHJhbnNwYXJlbnQgY29sdW1uIGVuY3J5cHRpb24gZm9yIHRoZSBjb2x1bW4uCisgICAgICA8 cmVwbGFjZWFibGU+ZW5jcnlwdGlvbl9vcHRpb25zPC9yZXBsYWNlYWJsZT4gYXJlIGNvbW1h LXNlcGFyYXRlZAorICAgICAgPGxpdGVyYWw+a2V5PXZhbHVlPC9saXRlcmFsPiBzcGVjaWZp Y2F0aW9ucy4gIFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUKKyAgICAgIGF2YWlsYWJsZToK KyAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAg PHRlcm0+PGxpdGVyYWw+Y29sdW1uX2VuY3J5cHRpb25fa2V5PC9saXRlcmFsPjwvdGVybT4K KyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgU3BlY2lm aWVzIHRoZSBuYW1lIG9mIHRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgdG8gdXNlLiAgU3Bl Y2lmeWluZworICAgICAgICAgIHRoaXMgaXMgbWFuZGF0b3J5LgorICAgICAgICAgPC9wYXJh PgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAg IDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmVuY3J5cHRpb25fdHlw ZTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJh PgorICAgICAgICAgIDxsaXRlcmFsPnJhbmRvbWl6ZWQ8L2xpdGVyYWw+ICh0aGUgZGVmYXVs dCkgb3IgPGxpdGVyYWw+ZGV0ZXJtaW5pc3RpYzwvbGl0ZXJhbD4KKyAgICAgICAgIDwvcGFy YT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48bGl0ZXJhbD5hbGdvcml0aG08L2xp dGVyYWw+PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBUaGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gdG8gdXNlLiAgVGhlIGRlZmF1bHQg aXMKKyAgICAgICAgICA8bGl0ZXJhbD5BRVMtQ0JDLTEyODwvbGl0ZXJhbD4uCisgICAgICAg ICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC92YXJsaXN0ZW50cnk+ CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48 bGl0ZXJhbD5JTkhFUklUUyAoIDxyZXBsYWNlYWJsZT5wYXJlbnRfdGFibGU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3ByaW50dHVwLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvY29tbW9uL3ByaW50dHVwLmMKaW5kZXggNTRiNTM5ZjZmYi4uMTlhMjcz MjVkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9wcmludHR1cC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnR0dXAuYwpAQCAtMTUsMTMg KzE1LDI1IEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNj ZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3ByaW50dHVwLmgiCisjaW5jbHVkZSAi YWNjZXNzL3NrZXkuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX2NvbGVuY2tleS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sZW5ja2V5 ZGF0YS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbWFzdGVya2V5LmgiCiAjaW5jbHVk ZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1 ZGUgInRjb3AvcHF1ZXJ5LmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRl ICJ1dGlscy9hcnJheWFjY2Vzcy5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisj aW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKIAogCiBzdGF0aWMgdm9pZCBwcmludHR1cF9zdGFydHVwKERlc3RSZWNlaXZlciAq c2VsZiwgaW50IG9wZXJhdGlvbiwKQEAgLTE1MSw2ICsxNjMsMTI3IEBAIHByaW50dHVwX3N0 YXJ0dXAoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBUdXBsZURlc2MgdHlw ZWluZm8pCiAJICovCiB9CiAKK0xpc3QgKmNta19zZW50ID0gTklMOworCitzdGF0aWMgdm9p ZAorTWF5YmVTZW5kQ29sdW1uTWFzdGVyS2V5TWVzc2FnZShPaWQgY21raWQpCit7CisJSGVh cFR1cGxlCXR1cGxlOworCUZvcm1fcGdfY29sbWFzdGVya2V5IGNta2Zvcm07CisJRGF0dW0J CWRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlpbnQJCQluOworCUFueUFycmF5VHlwZSAqYXJy OworCWFycmF5X2l0ZXIJaXRlcjsKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0OworCisJaWYgKGxpc3RfbWVtYmVyX29pZChjbWtfc2VudCwgY21r aWQpKQorCQlyZXR1cm47CisKKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShDTUtPSUQsIE9i amVjdElkR2V0RGF0dW0oY21raWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUp KQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29sdW1uIG1hc3Rl ciBrZXkgJXUiLCBjbWtpZCk7CisJY21rZm9ybSA9IChGb3JtX3BnX2NvbG1hc3RlcmtleSkg R0VUU1RSVUNUKHR1cGxlKTsKKworCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCAneScpOyAvKiBD b2x1bW5NYXN0ZXJLZXkgKi8KKwlwcV9zZW5kc3RyaW5nKCZidWYsIE5hbWVTdHIoY21rZm9y bS0+Y21rbmFtZSkpOworCisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ01LT0lELCB0dXBs ZSwgQW51bV9wZ19jb2xtYXN0ZXJrZXlfY21rcHJvdmlkZXIsICZpc251bGwpOworCUFzc2Vy dCghaXNudWxsKTsKKwlwcV9zZW5kc3RyaW5nKCZidWYsIFRleHREYXR1bUdldENTdHJpbmco ZGF0dW0pKTsKKworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENNS09JRCwgdHVwbGUsIEFu dW1fcGdfY29sbWFzdGVya2V5X2Nta29wdGlvbnMsICZpc251bGwpOworCUFzc2VydCghaXNu dWxsKTsKKwlhcnIgPSBEYXR1bUdldEFueUFycmF5UChkYXR1bSk7CisJQXNzZXJ0KEFSUl9O RElNKChBcnJheVR5cGUgKikgYXJyKSA9PSAxKTsKKwluID0gQVJSX0RJTVMoKEFycmF5VHlw ZSAqKSBhcnIpWzBdOworCUFzc2VydChuICUgMiA9PSAwKTsKKwlwcV9zZW5kaW50MTYoJmJ1 ZiwgbiAvIDIpOworCisJYXJyYXlfaXRlcl9zZXR1cCgmaXRlciwgYXJyKTsKKworCWZvciAo aW50IGkgPSAwOyBpIDwgbjsgaSsrKQorCXsKKwkJZGF0dW0gPSBhcnJheV9pdGVyX25leHQo Jml0ZXIsICZpc251bGwsIGksIC0xLCBmYWxzZSwgJ2knKTsKKwkJQXNzZXJ0KCFpc251bGwp OworCQlwcV9zZW5kc3RyaW5nKCZidWYsIFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsK Kwl9CisKKwlwcV9lbmRtZXNzYWdlKCZidWYpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxl KTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29u dGV4dCk7CisJY21rX3NlbnQgPSBsYXBwZW5kX29pZChjbWtfc2VudCwgY21raWQpOworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKworTGlzdCAqY2VrX3NlbnQg PSBOSUw7CisKK3ZvaWQKK01heWJlU2VuZENvbHVtbkVuY3J5cHRpb25LZXlNZXNzYWdlKE9p ZCBhdHRjZWspCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUhlYXBUdXBsZQl0dXBsZTI7CisJ Rm9ybV9wZ19jb2xlbmNrZXkgY2VrZm9ybTsKKwlTY2FuS2V5RGF0YQlza2V5WzFdOworCVN5 c1NjYW5EZXNjCXNkOworCVJlbGF0aW9uCXJlbDsKKwlib29sCQlmb3VuZCA9IGZhbHNlOwor CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCWlmIChsaXN0X21lbWJlcl9vaWQoY2Vr X3NlbnQsIGF0dGNlaykpCisJCXJldHVybjsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUx KENFS09JRCwgT2JqZWN0SWRHZXREYXR1bShhdHRjZWspKTsKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig Y29sdW1uIGVuY3J5cHRpb24ga2V5ICV1IiwgYXR0Y2VrKTsKKwljZWtmb3JtID0gKEZvcm1f cGdfY29sZW5ja2V5KSBHRVRTVFJVQ1QodHVwbGUpOworCisJU2NhbktleUluaXQoJnNrZXlb MF0sCisJCQkJQW51bV9wZ19jb2xlbmNrZXlkYXRhX2NrZGNla2lkLAorCQkJCUJURXF1YWxT dHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKGF0dGNlaykp OworCXJlbCA9IHRhYmxlX29wZW4oQ29sdW1uRW5jS2V5RGF0YVJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJc2QgPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBDb2x1bW5FbmNL ZXlDZWtpZENta2lkSW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMSwgc2tleSk7CisKKwl3aGlsZSAo KHR1cGxlMiA9IHN5c3RhYmxlX2dldG5leHQoc2QpKSkKKwl7CisJCUZvcm1fcGdfY29sZW5j a2V5ZGF0YSBja2Rmb3JtID0gKEZvcm1fcGdfY29sZW5ja2V5ZGF0YSkgR0VUU1RSVUNUKHR1 cGxlMik7CisJCURhdHVtCQlkYXR1bTsKKwkJYm9vbAkJaXNudWxsOworCQlieXRlYQkgICAq YmE7CisJCVN0cmluZ0luZm9EYXRhIGJ1ZjsKKworCQlNYXliZVNlbmRDb2x1bW5NYXN0ZXJL ZXlNZXNzYWdlKGNrZGZvcm0tPmNrZGNta2lkKTsKKworCQlkYXR1bSA9IGhlYXBfZ2V0YXR0 cih0dXBsZTIsIEFudW1fcGdfY29sZW5ja2V5ZGF0YV9ja2RlbmN2YWwsIFJlbGF0aW9uR2V0 RGVzY3IocmVsKSwgJmlzbnVsbCk7CisJCUFzc2VydCghaXNudWxsKTsKKwkJYmEgPSBwZ19k ZXRvYXN0X2RhdHVtX3BhY2tlZCgoYnl0ZWEgKikgRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7 CisKKwkJcHFfYmVnaW5tZXNzYWdlKCZidWYsICdZJyk7IC8qIENvbHVtbkVuY3J5cHRpb25L ZXkgKi8KKwkJcHFfc2VuZHN0cmluZygmYnVmLCBOYW1lU3RyKGNla2Zvcm0tPmNla25hbWUp KTsKKwkJcHFfc2VuZGludDMyKCZidWYsIFZBUlNJWkVfQU5ZX0VYSERSKGJhKSk7CisJCXBx X3NlbmRieXRlcygmYnVmLCBWQVJEQVRBX0FOWShiYSksIFZBUlNJWkVfQU5ZX0VYSERSKGJh KSk7CisJCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CisKKwkJZm91bmQgPSB0cnVlOworCX0KKwor CWlmICghZm91bmQpCisJCWVsb2coRVJST1IsICJsb29rdXAgZmFpbGVkIGZvciBjb2x1bW4g ZW5jcnlwdGlvbiBrZXkgZGF0YSAldSIsIGF0dGNlayk7CisKKwlzeXN0YWJsZV9lbmRzY2Fu KHNkKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlSZWxlYXNlU3lzQ2FjaGUo dHVwbGUpOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1v cnlDb250ZXh0KTsKKwljZWtfc2VudCA9IGxhcHBlbmRfb2lkKGNla19zZW50LCBhdHRjZWsp OworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKwogLyoKICAqIFNl bmRSb3dEZXNjcmlwdGlvbk1lc3NhZ2UgLS0tIHNlbmQgYSBSb3dEZXNjcmlwdGlvbiBtZXNz YWdlIHRvIHRoZSBmcm9udGVuZAogICoKQEAgLTIzMSw2ICszNjQsMjMgQEAgU2VuZFJvd0Rl c2NyaXB0aW9uTWVzc2FnZShTdHJpbmdJbmZvIGJ1ZiwgVHVwbGVEZXNjIHR5cGVpbmZvLAog CQllbHNlCiAJCQlmb3JtYXQgPSAwOwogCisJCWlmIChnZXRfdHlwdHlwZShhdHR0eXBpZCkg PT0gVFlQVFlQRV9FTkNSWVBURUQpCisJCXsKKwkJCUhlYXBUdXBsZQl0cDsKKwkJCUZvcm1f cGdfYXR0cmlidXRlIG9yaWdfYXR0OworCisJCQl0cCA9IFNlYXJjaFN5c0NhY2hlMihBVFRO VU0sIE9iamVjdElkR2V0RGF0dW0ocmVzb3JpZ3RibCksIEludDE2R2V0RGF0dW0ocmVzb3Jp Z2NvbCkpOworCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgYXR0cmlidXRlICVkIG9mIHJlbGF0aW9uICV1 IiwgcmVzb3JpZ2NvbCwgcmVzb3JpZ3RibCk7CisJCQlvcmlnX2F0dCA9IChGb3JtX3BnX2F0 dHJpYnV0ZSkgR0VUU1RSVUNUKHRwKTsKKwkJCU1heWJlU2VuZENvbHVtbkVuY3J5cHRpb25L ZXlNZXNzYWdlKG9yaWdfYXR0LT5hdHRjZWspOworCQkJYXR0dHlwaWQgPSBvcmlnX2F0dC0+ YXR0cmVhbHR5cGlkOworCisJCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCisJCQlmb3JtYXQg fD0gMHgxMDsKKwkJfQorCiAJCXBxX3dyaXRlc3RyaW5nKGJ1ZiwgTmFtZVN0cihhdHQtPmF0 dG5hbWUpKTsKIAkJcHFfd3JpdGVpbnQzMihidWYsIHJlc29yaWd0YmwpOwogCQlwcV93cml0 ZWludDE2KGJ1ZiwgcmVzb3JpZ2NvbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3R1cGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVz Yy5jCmluZGV4IDliNTA2NDcxZmUuLjYwMmU5ZTEwYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdHVwZGVzYy5jCkBAIC00NTksNiArNDU5LDEwIEBAIGVxdWFsVHVwbGVEZXNjcyhU dXBsZURlc2MgdHVwZGVzYzEsIFR1cGxlRGVzYyB0dXBkZXNjMikKIAkJCXJldHVybiBmYWxz ZTsKIAkJaWYgKGF0dHIxLT5hdHRpc2xvY2FsICE9IGF0dHIyLT5hdHRpc2xvY2FsKQogCQkJ cmV0dXJuIGZhbHNlOworCQlpZiAoYXR0cjEtPmF0dGNlayAhPSBhdHRyMi0+YXR0Y2VrKQor CQkJcmV0dXJuIGZhbHNlOworCQlpZiAoYXR0cjEtPmF0dHJlYWx0eXBpZCAhPSBhdHRyMi0+ YXR0cmVhbHR5cGlkKQorCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoYXR0cjEtPmF0dGluaGNv dW50ICE9IGF0dHIyLT5hdHRpbmhjb3VudCkKIAkJCXJldHVybiBmYWxzZTsKIAkJaWYgKGF0 dHIxLT5hdHRjb2xsYXRpb24gIT0gYXR0cjItPmF0dGNvbGxhdGlvbikKQEAgLTYyOSw2ICs2 MzMsOCBAQCBUdXBsZURlc2NJbml0RW50cnkoVHVwbGVEZXNjIGRlc2MsCiAJYXR0LT5hdHRn ZW5lcmF0ZWQgPSAnXDAnOwogCWF0dC0+YXR0aXNkcm9wcGVkID0gZmFsc2U7CiAJYXR0LT5h dHRpc2xvY2FsID0gdHJ1ZTsKKwlhdHQtPmF0dGNlayA9IDA7CisJYXR0LT5hdHRyZWFsdHlw aWQgPSAwOwogCWF0dC0+YXR0aW5oY291bnQgPSAwOwogCS8qIHZhcmlhYmxlLWxlbmd0aCBm aWVsZHMgYXJlIG5vdCBwcmVzZW50IGluIHR1cGxlZGVzY3MgKi8KIApAQCAtNjkwLDYgKzY5 Niw4IEBAIFR1cGxlRGVzY0luaXRCdWlsdGluRW50cnkoVHVwbGVEZXNjIGRlc2MsCiAJYXR0 LT5hdHRnZW5lcmF0ZWQgPSAnXDAnOwogCWF0dC0+YXR0aXNkcm9wcGVkID0gZmFsc2U7CiAJ YXR0LT5hdHRpc2xvY2FsID0gdHJ1ZTsKKwlhdHQtPmF0dGNlayA9IDA7CisJYXR0LT5hdHRy ZWFsdHlwaWQgPSAwOwogCWF0dC0+YXR0aW5oY291bnQgPSAwOwogCS8qIHZhcmlhYmxlLWxl bmd0aCBmaWVsZHMgYXJlIG5vdCBwcmVzZW50IGluIHR1cGxlZGVzY3MgKi8KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHZhbGlkYXRlLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNodmFsaWRhdGUuYwppbmRleCAxZTM0M2RmMGFmLi4zYzNk ZWU1YzM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNodmFsaWRh dGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNodmFsaWRhdGUuYwpAQCAt MzMxLDcgKzMzMSw3IEBAIGNoZWNrX2hhc2hfZnVuY19zaWduYXR1cmUoT2lkIGZ1bmNpZCwg aW50MTYgYW1wcm9jbnVtLCBPaWQgYXJndHlwZSkKIAkJCQkgYXJndHlwZSA9PSBCT09MT0lE KQogCQkJIC8qIG9rYXksIGFsbG93ZWQgdXNlIG9mIGhhc2hjaGFyKCkgKi8gOwogCQllbHNl IGlmICgoZnVuY2lkID09IEZfSEFTSFZBUkxFTkEgfHwgZnVuY2lkID09IEZfSEFTSFZBUkxF TkFFWFRFTkRFRCkgJiYKLQkJCQkgYXJndHlwZSA9PSBCWVRFQU9JRCkKKwkJCQkgKGFyZ3R5 cGUgPT0gQllURUFPSUQgfHwgYXJndHlwZSA9PSBFTkNSWVBURURET0lEKSkKIAkJCSAvKiBv a2F5LCBhbGxvd2VkIHVzZSBvZiBoYXNodmFybGVuYSgpICovIDsKIAkJZWxzZQogCQkJcmVz dWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxl IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCA0ZTZlZmRhOTdmLi44NWQ2 ZWU3NmU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKQEAgLTY5LDcgKzY5LDggQEAgQ0FUQUxP R19IRUFERVJTIDo9IFwKIAlwZ19kZWZhdWx0X2FjbC5oIHBnX2luaXRfcHJpdnMuaCBwZ19z ZWNsYWJlbC5oIHBnX3Noc2VjbGFiZWwuaCBcCiAJcGdfY29sbGF0aW9uLmggcGdfcGFydGl0 aW9uZWRfdGFibGUuaCBwZ19yYW5nZS5oIHBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5j ZS5oIHBnX3B1YmxpY2F0aW9uLmggcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmggXAotCXBn X3B1YmxpY2F0aW9uX3JlbC5oIHBnX3N1YnNjcmlwdGlvbi5oIHBnX3N1YnNjcmlwdGlvbl9y ZWwuaAorCXBnX3B1YmxpY2F0aW9uX3JlbC5oIHBnX3N1YnNjcmlwdGlvbi5oIHBnX3N1YnNj cmlwdGlvbl9yZWwuaCBcCisJcGdfY29sbWFzdGVya2V5LmggcGdfY29sZW5ja2V5LmggcGdf Y29sZW5ja2V5ZGF0YS5oCiAKIEdFTkVSQVRFRF9IRUFERVJTIDo9ICQoQ0FUQUxPR19IRUFE RVJTOiUuaD0lX2QuaCkgc2NoZW1hcGcuaCBzeXN0ZW1fZmtfaW5mby5oCiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9o ZWFwLmMKaW5kZXggOGJiZjIzZTQ1Mi4uM2I4ZTBiOTJhMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK QEAgLTc5Miw2ICs3OTIsOSBAQCBJbnNlcnRQZ0F0dHJpYnV0ZVR1cGxlcyhSZWxhdGlvbiBw Z19hdHRyaWJ1dGVfcmVsLAogCQlzbG90W3Nsb3RDb3VudF0tPnR0c192YWx1ZXNbQW51bV9w Z19hdHRyaWJ1dGVfYXR0Z2VuZXJhdGVkIC0gMV0gPSBDaGFyR2V0RGF0dW0oYXR0cnMtPmF0 dGdlbmVyYXRlZCk7CiAJCXNsb3Rbc2xvdENvdW50XS0+dHRzX3ZhbHVlc1tBbnVtX3BnX2F0 dHJpYnV0ZV9hdHRpc2Ryb3BwZWQgLSAxXSA9IEJvb2xHZXREYXR1bShhdHRycy0+YXR0aXNk cm9wcGVkKTsKIAkJc2xvdFtzbG90Q291bnRdLT50dHNfdmFsdWVzW0FudW1fcGdfYXR0cmli dXRlX2F0dGlzbG9jYWwgLSAxXSA9IEJvb2xHZXREYXR1bShhdHRycy0+YXR0aXNsb2NhbCk7 CisJCXNsb3Rbc2xvdENvdW50XS0+dHRzX3ZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRj ZWsgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oYXR0cnMtPmF0dGNlayk7CisJCXNsb3Rbc2xv dENvdW50XS0+dHRzX3ZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRyZWFsdHlwaWQgLSAx XSA9IE9iamVjdElkR2V0RGF0dW0oYXR0cnMtPmF0dHJlYWx0eXBpZCk7CisJCXNsb3Rbc2xv dENvdW50XS0+dHRzX3ZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRlbmNhbGcgLSAxXSA9 IEludDMyR2V0RGF0dW0oYXR0cnMtPmF0dGVuY2FsZyk7CiAJCXNsb3Rbc2xvdENvdW50XS0+ dHRzX3ZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRpbmhjb3VudCAtIDFdID0gSW50MzJH ZXREYXR1bShhdHRycy0+YXR0aW5oY291bnQpOwogCQlzbG90W3Nsb3RDb3VudF0tPnR0c192 YWx1ZXNbQW51bV9wZ19hdHRyaWJ1dGVfYXR0Y29sbGF0aW9uIC0gMV0gPSBPYmplY3RJZEdl dERhdHVtKGF0dHJzLT5hdHRjb2xsYXRpb24pOwogCQlpZiAoYXR0b3B0aW9ucyAmJiBhdHRv cHRpb25zW25hdHRzXSAhPSAoRGF0dW0pIDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5k ZXggNWUwM2M3YzVhYS4uNzkyNTAwN2M0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpA QCAtNjEsNiArNjEsOCBAQCBQcmVwYXJlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVw YXJlU3RtdCAqc3RtdCwKIAlSYXdTdG10ICAgICpyYXdzdG10OwogCUNhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2U7CiAJT2lkCQkgICAqYXJndHlwZXMgPSBOVUxMOworCU9pZAkJICAg KmFyZ29yaWd0YmxzID0gTlVMTDsKKwlBdHRyTnVtYmVyICphcmdvcmlnY29scyA9IE5VTEw7 CiAJaW50CQkJbmFyZ3M7CiAJUXVlcnkJICAgKnF1ZXJ5OwogCUxpc3QJICAgKnF1ZXJ5X2xp c3Q7CkBAIC0xMDgsNiArMTEwLDkgQEAgUHJlcGFyZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgUHJlcGFyZVN0bXQgKnN0bXQsCiAKIAkJCWFyZ3R5cGVzW2krK10gPSB0b2lkOwogCQl9 CisKKwkJYXJnb3JpZ3RibHMgPSAoT2lkICopIHBhbGxvYzAobmFyZ3MgKiBzaXplb2YoT2lk KSk7CisJCWFyZ29yaWdjb2xzID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jMChuYXJncyAqIHNp emVvZihBdHRyTnVtYmVyKSk7CiAJfQogCiAJLyoKQEAgLTExNiw3ICsxMjEsNyBAQCBQcmVw YXJlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlU3RtdCAqc3RtdCwKIAkgKiBp bmZvcm1hdGlvbiBhYm91dCB1bmtub3duIHBhcmFtZXRlcnMgdG8gYmUgZGVkdWNlZCBmcm9t IGNvbnRleHQuCiAJICovCiAJcXVlcnkgPSBwYXJzZV9hbmFseXplX3ZhcnBhcmFtcyhyYXdz dG10LCBwc3RhdGUtPnBfc291cmNldGV4dCwKLQkJCQkJCQkJCSZhcmd0eXBlcywgJm5hcmdz KTsKKwkJCQkJCQkJCSZhcmd0eXBlcywgJm5hcmdzLCAmYXJnb3JpZ3RibHMsICZhcmdvcmln Y29scyk7CiAKIAkvKgogCSAqIENoZWNrIHRoYXQgYWxsIHBhcmFtZXRlciB0eXBlcyB3ZXJl IGRldGVybWluZWQuCkBAIC0xNTksNiArMTY0LDggQEAgUHJlcGFyZVF1ZXJ5KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgUHJlcGFyZVN0bXQgKnN0bXQsCiAJCQkJCSAgIE5VTEwsCiAJCQkJCSAg IGFyZ3R5cGVzLAogCQkJCQkgICBuYXJncywKKwkJCQkJICAgYXJnb3JpZ3RibHMsCisJCQkJ CSAgIGFyZ29yaWdjb2xzLAogCQkJCQkgICBOVUxMLAogCQkJCQkgICBOVUxMLAogCQkJCQkg ICBDVVJTT1JfT1BUX1BBUkFMTEVMX09LLAkvKiBhbGxvdyBwYXJhbGxlbCBtb2RlICovCkBA IC03MjQsNyArNzMxLDcgQEAgcGdfcHJlcGFyZWRfc3RhdGVtZW50KFBHX0ZVTkNUSU9OX0FS R1MpCiAJICogYnVpbGQgdHVwZGVzYyBmb3IgcmVzdWx0IHR1cGxlcy4gVGhpcyBtdXN0IG1h dGNoIHRoZSBkZWZpbml0aW9uIG9mIHRoZQogCSAqIHBnX3ByZXBhcmVkX3N0YXRlbWVudHMg dmlldyBpbiBzeXN0ZW1fdmlld3Muc3FsCiAJICovCi0JdHVwZGVzYyA9IENyZWF0ZVRlbXBs YXRlVHVwbGVEZXNjKDcpOworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyg5 KTsKIAlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJuYW1l IiwKIAkJCQkJICAgVEVYVE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBk ZXNjLCAoQXR0ck51bWJlcikgMiwgInN0YXRlbWVudCIsCkBAIC03MzksNiArNzQ2LDEwIEBA IHBnX3ByZXBhcmVkX3N0YXRlbWVudChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBJTlQ4 T0lELCAtMSwgMCk7CiAJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVy KSA3LCAiY3VzdG9tX3BsYW5zIiwKIAkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgOCwgInBhcmFtZXRlcl9vcmln X3RhYmxlcyIsCisJCQkJCSAgIFJFR0NMQVNTQVJSQVlPSUQsIC0xLCAwKTsKKwlUdXBsZURl c2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDksICJwYXJhbWV0ZXJfb3JpZ19j b2x1bW5zIiwKKwkJCQkJICAgSU5UMkFSUkFZT0lELCAtMSwgMCk7CiAKIAkvKgogCSAqIFdl IHB1dCBhbGwgdGhlIHR1cGxlcyBpbnRvIGEgdHVwbGVzdG9yZSBpbiBvbmUgc2NhbiBvZiB0 aGUgaGFzaHRhYmxlLgpAQCAtNzYwLDggKzc3MSw4IEBAIHBnX3ByZXBhcmVkX3N0YXRlbWVu dChQR19GVU5DVElPTl9BUkdTKQogCQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcHJlcGFy ZWRfcXVlcmllcyk7CiAJCXdoaWxlICgocHJlcF9zdG10ID0gaGFzaF9zZXFfc2VhcmNoKCZo YXNoX3NlcSkpICE9IE5VTEwpCiAJCXsKLQkJCURhdHVtCQl2YWx1ZXNbN107Ci0JCQlib29s CQludWxsc1s3XTsKKwkJCURhdHVtCQl2YWx1ZXNbOV07CisJCQlib29sCQludWxsc1s5XTsK IAogCQkJTWVtU2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKIApAQCAtNzczLDYgKzc4 NCwzOCBAQCBwZ19wcmVwYXJlZF9zdGF0ZW1lbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCXZh bHVlc1s0XSA9IEJvb2xHZXREYXR1bShwcmVwX3N0bXQtPmZyb21fc3FsKTsKIAkJCXZhbHVl c1s1XSA9IEludDY0R2V0RGF0dW1GYXN0KHByZXBfc3RtdC0+cGxhbnNvdXJjZS0+bnVtX2dl bmVyaWNfcGxhbnMpOwogCQkJdmFsdWVzWzZdID0gSW50NjRHZXREYXR1bUZhc3QocHJlcF9z dG10LT5wbGFuc291cmNlLT5udW1fY3VzdG9tX3BsYW5zKTsKKwkJCXsKKwkJCQlpbnQJCQlu dW1fcGFyYW1zID0gcHJlcF9zdG10LT5wbGFuc291cmNlLT5udW1fcGFyYW1zOworCQkJCURh dHVtICAgICAgKnRtcF9hcnk7CisJCQkJQXJyYXlUeXBlICAqcmVzdWx0OworCQkJCWludCAg ICAgICAgIGk7CisKKwkJCQl0bXBfYXJ5ID0gKERhdHVtICopIHBhbGxvYyhudW1fcGFyYW1z ICogc2l6ZW9mKERhdHVtKSk7CisKKwkJCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhcmFtczsg aSsrKQorCQkJCQl0bXBfYXJ5W2ldID0gT2JqZWN0SWRHZXREYXR1bShwcmVwX3N0bXQtPnBs YW5zb3VyY2UtPnBhcmFtX29yaWd0YmxzW2ldKTsKKworCQkJCS8qIFhYWDogdGhpcyBoYXJk Y29kZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJlZ2NsYXNzIHR5cGUgKi8KKwkJCQlyZXN1 bHQgPSBjb25zdHJ1Y3RfYXJyYXkodG1wX2FyeSwgbnVtX3BhcmFtcywgUkVHQ0xBU1NPSUQs CisJCQkJCQkJCQkJIDQsIHRydWUsIFRZUEFMSUdOX0lOVCk7CisJCQkJdmFsdWVzWzddID0g UG9pbnRlckdldERhdHVtKHJlc3VsdCk7CisJCQl9CisJCQl7CisJCQkJaW50CQkJbnVtX3Bh cmFtcyA9IHByZXBfc3RtdC0+cGxhbnNvdXJjZS0+bnVtX3BhcmFtczsKKwkJCQlEYXR1bSAg ICAgICp0bXBfYXJ5OworCQkJCUFycmF5VHlwZSAgKnJlc3VsdDsKKwkJCQlpbnQgICAgICAg ICBpOworCisJCQkJdG1wX2FyeSA9IChEYXR1bSAqKSBwYWxsb2MobnVtX3BhcmFtcyAqIHNp emVvZihEYXR1bSkpOworCisJCQkJZm9yIChpID0gMDsgaSA8IG51bV9wYXJhbXM7IGkrKykK KwkJCQkJdG1wX2FyeVtpXSA9IEludDE2R2V0RGF0dW0ocHJlcF9zdG10LT5wbGFuc291cmNl LT5wYXJhbV9vcmlnY29sc1tpXSk7CisKKwkJCQkvKiBYWFg6IHRoaXMgaGFyZGNvZGVzIGFz c3VtcHRpb25zIGFib3V0IHRoZSBpbnQyIHR5cGUgKi8KKwkJCQlyZXN1bHQgPSBjb25zdHJ1 Y3RfYXJyYXkodG1wX2FyeSwgbnVtX3BhcmFtcywgSU5UMk9JRCwKKwkJCQkJCQkJCQkgMiwg dHJ1ZSwgVFlQQUxJR05fU0hPUlQpOworCQkJCXZhbHVlc1s4XSA9IFBvaW50ZXJHZXREYXR1 bShyZXN1bHQpOworCQkJfQogCiAJCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyh0dXBzdG9yZSwg dHVwZGVzYywgdmFsdWVzLCBudWxscyk7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKaW5kZXggYzM1ZjA5OTk4Yy4uOGRlYTZmYWZkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFj Y2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19hbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sZW5ja2V5LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RlcGVuZC5oIgpAQCAtOTAwLDYg KzkwMSw2NCBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtp bmQsIE9pZCBvd25lcklkLAogCQlpZiAoY29sRGVmLT5jb21wcmVzc2lvbikKIAkJCWF0dHIt PmF0dGNvbXByZXNzaW9uID0gR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oYXR0ci0+YXR0dHlw aWQsCiAJCQkJCQkJCQkJCQkJCSAgIGNvbERlZi0+Y29tcHJlc3Npb24pOworCisJCWlmIChj b2xEZWYtPmVuY3J5cHRpb24pCisJCXsKKwkJCUxpc3RDZWxsICpsYzsKKwkJCWNoYXIgKmNl ayA9IE5VTEw7CisJCQlPaWQgY2Vrb2lkOworCQkJYm9vbCBlbmNkZXQgPSBmYWxzZTsKKwkJ CWludCBhbGcgPSAxOworCisJCQlmb3JlYWNoKGxjLCBjb2xEZWYtPmVuY3J5cHRpb24pCisJ CQl7CisJCQkJRGVmRWxlbSAqZWwgPSBsZmlyc3Rfbm9kZShEZWZFbGVtLCBsYyk7CisKKwkJ CQlpZiAoc3RyY21wKGVsLT5kZWZuYW1lLCAiY29sdW1uX2VuY3J5cHRpb25fa2V5IikgPT0g MCkKKwkJCQkJY2VrID0gc3RyVmFsKGxpbml0aWFsKGNhc3ROb2RlKFR5cGVOYW1lLCBlbC0+ YXJnKS0+bmFtZXMpKTsKKwkJCQllbHNlIGlmIChzdHJjbXAoZWwtPmRlZm5hbWUsICJlbmNy eXB0aW9uX3R5cGUiKSA9PSAwKQorCQkJCXsKKwkJCQkJY2hhciAqdmFsID0gc3RyVmFsKGxp bml0aWFsKGNhc3ROb2RlKFR5cGVOYW1lLCBlbC0+YXJnKS0+bmFtZXMpKTsKKworCQkJCQlp ZiAoc3RyY21wKHZhbCwgImRldGVybWluaXN0aWMiKSA9PSAwKQorCQkJCQkJZW5jZGV0ID0g dHJ1ZTsKKwkJCQkJZWxzZSBpZiAoc3RyY21wKHZhbCwgInJhbmRvbWl6ZWQiKSA9PSAwKQor CQkJCQkJZW5jZGV0ID0gZmFsc2U7CisJCQkJCWVsc2UKKwkJCQkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgZW5jcnlwdGlvbiB0eXBlOiAlcyIsIHZhbCk7CisJCQkJfQorCQkJCWVs c2UgaWYgKHN0cmNtcChlbC0+ZGVmbmFtZSwgImFsZ29yaXRobSIpID09IDApCisJCQkJewor CQkJCQljaGFyICp2YWwgPSBzdHJWYWwobGluaXRpYWwoY2FzdE5vZGUoVHlwZU5hbWUsIGVs LT5hcmcpLT5uYW1lcykpOworCisJCQkJCWlmIChzdHJjbXAodmFsLCAiQUVTLUNCQy0xMjgi KSA9PSAwKQorCQkJCQkJYWxnID0gMTsKKwkJCQkJaWYgKHN0cmNtcCh2YWwsICJBRVMtQ0JD LTE5MiIpID09IDApCisJCQkJCQlhbGcgPSAyOworCQkJCQlpZiAoc3RyY21wKHZhbCwgIkFF Uy1DQkMtMjU2IikgPT0gMCkKKwkJCQkJCWFsZyA9IDM7CisJCQkJCWVsc2UKKwkJCQkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG06ICVzIiwgdmFs KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNv bHVtbiBlbmNyeXB0aW9uIHBhcmFtZXRlcjogJXMiLCBlbC0+ZGVmbmFtZSk7CisJCQl9CisK KwkJCWlmICghY2VrKQorCQkJCWVsb2coRVJST1IsICJjb2x1bW4gZW5jcnlwdGlvbiBrZXkg bXVzdCBiZSBzcGVjaWZpZWQiKTsKKworCQkJY2Vrb2lkID0gR2V0U3lzQ2FjaGVPaWQxKENF S05BTUUsIEFudW1fcGdfY29sZW5ja2V5X29pZCwgUG9pbnRlckdldERhdHVtKGNlaykpOwor CQkJaWYgKCFjZWtvaWQpCisJCQkJZWxvZyhFUlJPUiwgImNvbHVtbiBlbmNyeXB0aW9uIGtl eSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLCBjZWspOworCisJCQlhdHRyLT5hdHRjZWsgPSBj ZWtvaWQ7CisJCQlhdHRyLT5hdHRyZWFsdHlwaWQgPSBhdHRyLT5hdHR0eXBpZDsKKwkJCWlm IChlbmNkZXQpCisJCQkJYXR0ci0+YXR0dHlwaWQgPSBFTkNSWVBURURET0lEOworCQkJZWxz ZQorCQkJCWF0dHItPmF0dHR5cGlkID0gRU5DUllQVEVEUk9JRDsKKwkJCWF0dHItPmF0dGVu Y2FsZyA9IGFsZzsKKwkJfQogCX0KIAogCS8qCkBAIC02NzU4LDYgKzY4MTcsOSBAQCBBVEV4 ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxh dGlvbiByZWwsCiAJYXR0cmlidXRlLmF0dGdlbmVyYXRlZCA9IGNvbERlZi0+Z2VuZXJhdGVk OwogCWF0dHJpYnV0ZS5hdHRpc2Ryb3BwZWQgPSBmYWxzZTsKIAlhdHRyaWJ1dGUuYXR0aXNs b2NhbCA9IGNvbERlZi0+aXNfbG9jYWw7CisJYXR0cmlidXRlLmF0dGNlayA9IDA7IC8vIFRP RE8KKwlhdHRyaWJ1dGUuYXR0cmVhbHR5cGlkID0gMDsgLy8gVE9ETworCWF0dHJpYnV0ZS5h dHRlbmNhbGcgPSAwOyAvLyBUT0RPCiAJYXR0cmlidXRlLmF0dGluaGNvdW50ID0gY29sRGVm LT5pbmhjb3VudDsKIAlhdHRyaWJ1dGUuYXR0Y29sbGF0aW9uID0gY29sbE9pZDsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9zcGkuYwppbmRleCAwNTY4YWUxMjNmLi5iMWJmZTEyZWFiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYwpAQCAtMjE4Niw2ICsyMTg2LDggQEAgX1NQSV9wcmVwYXJlX3BsYW4oY29uc3QgY2hh ciAqc3JjLCBTUElQbGFuUHRyIHBsYW4pCiAJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcGxh bi0+YXJndHlwZXMsCiAJCQkJCQkgICBwbGFuLT5uYXJncywKKwkJCQkJCSAgIE5VTEwsCisJ CQkJCQkgICBOVUxMLAogCQkJCQkJICAgcGxhbi0+cGFyc2VyU2V0dXAsCiAJCQkJCQkgICBw bGFuLT5wYXJzZXJTZXR1cEFyZywKIAkJCQkJCSAgIHBsYW4tPmN1cnNvcl9vcHRpb25zLApA QCAtMjQyMyw2ICsyNDI1LDggQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFu LCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJCQkgICBOVUxMLAog CQkJCQkJCSAgIHBsYW4tPmFyZ3R5cGVzLAogCQkJCQkJCSAgIHBsYW4tPm5hcmdzLAorCQkJ CQkJCSAgIE5VTEwsCisJCQkJCQkJICAgTlVMTCwKIAkJCQkJCQkgICBwbGFuLT5wYXJzZXJT ZXR1cCwKIAkJCQkJCQkgICBwbGFuLT5wYXJzZXJTZXR1cEFyZywKIAkJCQkJCQkgICBwbGFu LT5jdXJzb3Jfb3B0aW9ucywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlm dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggMjk3YjZlZTcx NS4uNGY2MjU1YmFhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTMwMzUsNiArMzAz NSw3IEBAIF9jb3B5Q29sdW1uRGVmKGNvbnN0IENvbHVtbkRlZiAqZnJvbSkKIAlDT1BZX1NU UklOR19GSUVMRChjb2xuYW1lKTsKIAlDT1BZX05PREVfRklFTEQodHlwZU5hbWUpOwogCUNP UFlfU1RSSU5HX0ZJRUxEKGNvbXByZXNzaW9uKTsKKwlDT1BZX05PREVfRklFTEQoZW5jcnlw dGlvbik7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaW5oY291bnQpOwogCUNPUFlfU0NBTEFSX0ZJ RUxEKGlzX2xvY2FsKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChpc19ub3RfbnVsbCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggZjUzN2QzZWI5Ni4uY2YwYTIzYTJjNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMjY3OSw2ICsyNjc5LDcgQEAgX2VxdWFsQ29sdW1u RGVmKGNvbnN0IENvbHVtbkRlZiAqYSwgY29uc3QgQ29sdW1uRGVmICpiKQogCUNPTVBBUkVf U1RSSU5HX0ZJRUxEKGNvbG5hbWUpOwogCUNPTVBBUkVfTk9ERV9GSUVMRCh0eXBlTmFtZSk7 CiAJQ09NUEFSRV9TVFJJTkdfRklFTEQoY29tcHJlc3Npb24pOworCUNPTVBBUkVfTk9ERV9G SUVMRChlbmNyeXB0aW9uKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChpbmhjb3VudCk7CiAJ Q09NUEFSRV9TQ0FMQVJfRklFTEQoaXNfbG9jYWwpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KGlzX25vdF9udWxsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggZTI3NjI2NDg4Mi4u MzM2MjExNDFmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTM5MTcsNiArMzkxNyw4 IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVy biB0cnVlOwogCQkJCWlmICh3YWxrZXIoY29sZGVmLT5jb21wcmVzc2lvbiwgY29udGV4dCkp CiAJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoY29sZGVmLT5lbmNyeXB0aW9u LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CiAJCQkJaWYgKHdhbGtlcihjb2xkZWYt PnJhd19kZWZhdWx0LCBjb250ZXh0KSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJaWYgKHdh bGtlcihjb2xkZWYtPmNvbGxDbGF1c2UsIGNvbnRleHQpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK aW5kZXggMzYwMGM5ZmEzNi4uZWNkMmU4NmFiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBA IC0yOTUzLDYgKzI5NTMsNyBAQCBfb3V0Q29sdW1uRGVmKFN0cmluZ0luZm8gc3RyLCBjb25z dCBDb2x1bW5EZWYgKm5vZGUpCiAJV1JJVEVfU1RSSU5HX0ZJRUxEKGNvbG5hbWUpOwogCVdS SVRFX05PREVfRklFTEQodHlwZU5hbWUpOwogCVdSSVRFX1NUUklOR19GSUVMRChjb21wcmVz c2lvbik7CisJV1JJVEVfTk9ERV9GSUVMRChlbmNyeXB0aW9uKTsKIAlXUklURV9JTlRfRklF TEQoaW5oY291bnQpOwogCVdSSVRFX0JPT0xfRklFTEQoaXNfbG9jYWwpOwogCVdSSVRFX0JP T0xfRklFTEQoaXNfbm90X251bGwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggMTQ2ZWU4 ZGQxZS4uNDExYzQ3NGE4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5 emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0xNDgsNyArMTQ4 LDggQEAgcGFyc2VfYW5hbHl6ZShSYXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNv dXJjZVRleHQsCiAgKi8KIFF1ZXJ5ICoKIHBhcnNlX2FuYWx5emVfdmFycGFyYW1zKFJhd1N0 bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCQkJCU9pZCAqKnBh cmFtVHlwZXMsIGludCAqbnVtUGFyYW1zKQorCQkJCQkJT2lkICoqcGFyYW1UeXBlcywgaW50 ICpudW1QYXJhbXMsCisJCQkJCQlPaWQgKipwYXJhbU9yaWdUYmxzLCBBdHRyTnVtYmVyICoq cGFyYW1PcmlnQ29scykKIHsKIAlQYXJzZVN0YXRlICpwc3RhdGUgPSBtYWtlX3BhcnNlc3Rh dGUoTlVMTCk7CiAJUXVlcnkJICAgKnF1ZXJ5OwpAQCAtMTU4LDcgKzE1OSw3IEBAIHBhcnNl X2FuYWx5emVfdmFycGFyYW1zKFJhd1N0bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291 cmNlVGV4dCwKIAogCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0ID0gc291cmNlVGV4dDsKIAotCXBh cnNlX3ZhcmlhYmxlX3BhcmFtZXRlcnMocHN0YXRlLCBwYXJhbVR5cGVzLCBudW1QYXJhbXMp OworCXBhcnNlX3ZhcmlhYmxlX3BhcmFtZXRlcnMocHN0YXRlLCBwYXJhbVR5cGVzLCBudW1Q YXJhbXMsIHBhcmFtT3JpZ1RibHMsIHBhcmFtT3JpZ0NvbHMpOwogCiAJcXVlcnkgPSB0cmFu c2Zvcm1Ub3BMZXZlbFN0bXQocHN0YXRlLCBwYXJzZVRyZWUpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpp bmRleCA4NmNlMzNiZDk3Li40NDlkYzRlOWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTU2OCw2 ICs1NjgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CVRh YmxlQ29uc3RyYWludCBUYWJsZUxpa2VDbGF1c2UKICV0eXBlIDxpdmFsPglUYWJsZUxpa2VP cHRpb25MaXN0IFRhYmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4JCWNvbHVtbl9jb21wcmVz c2lvbiBvcHRfY29sdW1uX2NvbXByZXNzaW9uCisldHlwZSA8bGlzdD4Jb3B0X2NvbHVtbl9l bmNyeXB0aW9uCiAldHlwZSA8bGlzdD4JQ29sUXVhbExpc3QKICV0eXBlIDxub2RlPglDb2xD b25zdHJhaW50IENvbENvbnN0cmFpbnRFbGVtIENvbnN0cmFpbnRBdHRyCiAldHlwZSA8aXZh bD4Ja2V5X2FjdGlvbnMga2V5X2RlbGV0ZSBrZXlfbWF0Y2gga2V5X3VwZGF0ZSBrZXlfYWN0 aW9uCkBAIC0zNDc2LDEyICszNDc3LDEzIEBAIFR5cGVkVGFibGVFbGVtZW50OgogCQkJfCBU YWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKLWNvbHVtbkRlZjoJQ29s SWQgVHlwZW5hbWUgb3B0X2NvbHVtbl9jb21wcmVzc2lvbiBjcmVhdGVfZ2VuZXJpY19vcHRp b25zIENvbFF1YWxMaXN0Citjb2x1bW5EZWY6CUNvbElkIFR5cGVuYW1lIG9wdF9jb2x1bW5f Y29tcHJlc3Npb24gb3B0X2NvbHVtbl9lbmNyeXB0aW9uIGNyZWF0ZV9nZW5lcmljX29wdGlv bnMgQ29sUXVhbExpc3QKIAkJCQl7CiAJCQkJCUNvbHVtbkRlZiAqbiA9IG1ha2VOb2RlKENv bHVtbkRlZik7CiAJCQkJCW4tPmNvbG5hbWUgPSAkMTsKIAkJCQkJbi0+dHlwZU5hbWUgPSAk MjsKIAkJCQkJbi0+Y29tcHJlc3Npb24gPSAkMzsKKwkJCQkJbi0+ZW5jcnlwdGlvbiA9ICQ0 OwogCQkJCQluLT5pbmhjb3VudCA9IDA7CiAJCQkJCW4tPmlzX2xvY2FsID0gdHJ1ZTsKIAkJ CQkJbi0+aXNfbm90X251bGwgPSBmYWxzZTsKQEAgLTM0OTAsOCArMzQ5Miw4IEBAIGNvbHVt bkRlZjoJQ29sSWQgVHlwZW5hbWUgb3B0X2NvbHVtbl9jb21wcmVzc2lvbiBjcmVhdGVfZ2Vu ZXJpY19vcHRpb25zIENvbFF1YWxMCiAJCQkJCW4tPnJhd19kZWZhdWx0ID0gTlVMTDsKIAkJ CQkJbi0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOwogCQkJCQluLT5jb2xsT2lkID0gSW52YWxp ZE9pZDsKLQkJCQkJbi0+ZmR3b3B0aW9ucyA9ICQ0OwotCQkJCQlTcGxpdENvbFF1YWxMaXN0 KCQ1LCAmbi0+Y29uc3RyYWludHMsICZuLT5jb2xsQ2xhdXNlLAorCQkJCQluLT5mZHdvcHRp b25zID0gJDU7CisJCQkJCVNwbGl0Q29sUXVhbExpc3QoJDYsICZuLT5jb25zdHJhaW50cywg Jm4tPmNvbGxDbGF1c2UsCiAJCQkJCQkJCQkgeXlzY2FubmVyKTsKIAkJCQkJbi0+bG9jYXRp b24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CkBAIC0zNTQ2LDYgKzM1NDgsMTEgQEAg b3B0X2NvbHVtbl9jb21wcmVzc2lvbjoKIAkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0g TlVMTDsgfQogCQk7CiAKK29wdF9jb2x1bW5fZW5jcnlwdGlvbjoKKwkJCUVOQ1JZUFRFRCBX SVRIICcoJyBkZWZfbGlzdCAnKScJCQl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJ CQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKIENvbFF1YWxMaXN0OgogCQkJQ29sUXVhbExp c3QgQ29sQ29uc3RyYWludAkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDIpOyB9CiAJCQl8IC8q RU1QVFkqLwkJCQkJCQkJeyAkJCA9IE5JTDsgfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3BhcmFtLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcGFyYW0u YwppbmRleCA2OGE1NTM0MzkzLi40ZmQ1Y2IxNDQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfcGFyYW0uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf cGFyYW0uYwpAQCAtNDksNiArNDksOCBAQCB0eXBlZGVmIHN0cnVjdCBWYXJQYXJhbVN0YXRl CiB7CiAJT2lkCQkgICoqcGFyYW1UeXBlczsJCS8qIGFycmF5IG9mIHBhcmFtZXRlciB0eXBl IE9JRHMgKi8KIAlpbnQJCSAgICpudW1QYXJhbXM7CQkvKiBudW1iZXIgb2YgYXJyYXkgZW50 cmllcyAqLworCU9pZAkJICAqKnBhcmFtT3JpZ1RibHM7CisJQXR0ck51bWJlciAqKnBhcmFt T3JpZ0NvbHM7CiB9IFZhclBhcmFtU3RhdGU7CiAKIHN0YXRpYyBOb2RlICpmaXhlZF9wYXJh bXJlZl9ob29rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpOwpAQCAtNTYs NiArNTgsNyBAQCBzdGF0aWMgTm9kZSAqdmFyaWFibGVfcGFyYW1yZWZfaG9vayhQYXJzZVN0 YXRlICpwc3RhdGUsIFBhcmFtUmVmICpwcmVmKTsKIHN0YXRpYyBOb2RlICp2YXJpYWJsZV9j b2VyY2VfcGFyYW1faG9vayhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtICpwYXJhbSwKIAkJ CQkJCQkJCQlPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9kLAogCQkJCQkJ CQkJCWludCBsb2NhdGlvbik7CitzdGF0aWMgdm9pZCB2YXJpYWJsZV9wYXJhbV9hc3NpZ25f b3JpZ19ob29rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW0gKnBhcmFtLCBPaWQgb3JpZ3Ri bCwgQXR0ck51bWJlciBvcmlnY29sKTsKIHN0YXRpYyBib29sIGNoZWNrX3BhcmFtZXRlcl9y ZXNvbHV0aW9uX3dhbGtlcihOb2RlICpub2RlLCBQYXJzZVN0YXRlICpwc3RhdGUpOwogc3Rh dGljIGJvb2wgcXVlcnlfY29udGFpbnNfZXh0ZXJuX3BhcmFtc193YWxrZXIoTm9kZSAqbm9k ZSwgdm9pZCAqY29udGV4dCk7CiAKQEAgLTgxLDE1ICs4NCwxOSBAQCBwYXJzZV9maXhlZF9w YXJhbWV0ZXJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKICAqLwogdm9pZAogcGFyc2VfdmFyaWFi bGVfcGFyYW1ldGVycyhQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkgIE9pZCAqKnBhcmFt VHlwZXMsIGludCAqbnVtUGFyYW1zKQorCQkJCQkJICBPaWQgKipwYXJhbVR5cGVzLCBpbnQg Km51bVBhcmFtcywKKwkJCQkJCSAgT2lkICoqcGFyYW1PcmlnVGJscywgQXR0ck51bWJlciAq KnBhcmFtT3JpZ0NvbHMpCiB7CiAJVmFyUGFyYW1TdGF0ZSAqcGFyc3RhdGUgPSBwYWxsb2Mo c2l6ZW9mKFZhclBhcmFtU3RhdGUpKTsKIAogCXBhcnN0YXRlLT5wYXJhbVR5cGVzID0gcGFy YW1UeXBlczsKIAlwYXJzdGF0ZS0+bnVtUGFyYW1zID0gbnVtUGFyYW1zOworCXBhcnN0YXRl LT5wYXJhbU9yaWdUYmxzID0gcGFyYW1PcmlnVGJsczsKKwlwYXJzdGF0ZS0+cGFyYW1Pcmln Q29scyA9IHBhcmFtT3JpZ0NvbHM7CiAJcHN0YXRlLT5wX3JlZl9ob29rX3N0YXRlID0gKHZv aWQgKikgcGFyc3RhdGU7CiAJcHN0YXRlLT5wX3BhcmFtcmVmX2hvb2sgPSB2YXJpYWJsZV9w YXJhbXJlZl9ob29rOwogCXBzdGF0ZS0+cF9jb2VyY2VfcGFyYW1faG9vayA9IHZhcmlhYmxl X2NvZXJjZV9wYXJhbV9ob29rOworCXBzdGF0ZS0+cF9wYXJhbV9hc3NpZ25fb3JpZ19ob29r ID0gdmFyaWFibGVfcGFyYW1fYXNzaWduX29yaWdfaG9vazsKIH0KIAogLyoKQEAgLTE0NSwx NCArMTUyLDM2IEBAIHZhcmlhYmxlX3BhcmFtcmVmX2hvb2soUGFyc2VTdGF0ZSAqcHN0YXRl LCBQYXJhbVJlZiAqcHJlZikKIAl7CiAJCS8qIE5lZWQgdG8gZW5sYXJnZSBwYXJhbSBhcnJh eSAqLwogCQlpZiAoKnBhcnN0YXRlLT5wYXJhbVR5cGVzKQorCQl7CiAJCQkqcGFyc3RhdGUt PnBhcmFtVHlwZXMgPSAoT2lkICopIHJlcGFsbG9jKCpwYXJzdGF0ZS0+cGFyYW1UeXBlcywK IAkJCQkJCQkJCQkJCQkgcGFyYW1ubyAqIHNpemVvZihPaWQpKTsKKwkJCWlmIChwYXJzdGF0 ZS0+cGFyYW1PcmlnVGJscykKKwkJCQkqcGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMgPSByZXBh bGxvYygqcGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMsCisJCQkJCQkJCQkJCQkJcGFyYW1ubyAq IHNpemVvZihPaWQpKTsKKwkJCWlmIChwYXJzdGF0ZS0+cGFyYW1PcmlnQ29scykKKwkJCQkq cGFyc3RhdGUtPnBhcmFtT3JpZ0NvbHMgPSByZXBhbGxvYygqcGFyc3RhdGUtPnBhcmFtT3Jp Z0NvbHMsCisJCQkJCQkJCQkJCQkJcGFyYW1ubyAqIHNpemVvZihBdHRyTnVtYmVyKSk7CisJ CX0KIAkJZWxzZQorCQl7CiAJCQkqcGFyc3RhdGUtPnBhcmFtVHlwZXMgPSAoT2lkICopIHBh bGxvYyhwYXJhbW5vICogc2l6ZW9mKE9pZCkpOworCQkJaWYgKHBhcnN0YXRlLT5wYXJhbU9y aWdUYmxzKQorCQkJCSpwYXJzdGF0ZS0+cGFyYW1PcmlnVGJscyA9IHBhbGxvYyhwYXJhbW5v ICogc2l6ZW9mKE9pZCkpOworCQkJaWYgKHBhcnN0YXRlLT5wYXJhbU9yaWdDb2xzKQorCQkJ CSpwYXJzdGF0ZS0+cGFyYW1PcmlnQ29scyA9IHBhbGxvYyhwYXJhbW5vICogc2l6ZW9mKEF0 dHJOdW1iZXIpKTsKKwkJfQogCQkvKiBaZXJvIG91dCB0aGUgcHJldmlvdXNseS11bnJlZmVy ZW5jZWQgc2xvdHMgKi8KIAkJTWVtU2V0KCpwYXJzdGF0ZS0+cGFyYW1UeXBlcyArICpwYXJz dGF0ZS0+bnVtUGFyYW1zLAogCQkJICAgMCwKIAkJCSAgIChwYXJhbW5vIC0gKnBhcnN0YXRl LT5udW1QYXJhbXMpICogc2l6ZW9mKE9pZCkpOworCQlpZiAocGFyc3RhdGUtPnBhcmFtT3Jp Z1RibHMpCisJCQlNZW1TZXQoKnBhcnN0YXRlLT5wYXJhbU9yaWdUYmxzICsgKnBhcnN0YXRl LT5udW1QYXJhbXMsCisJCQkJICAgMCwKKwkJCQkgICAocGFyYW1ubyAtICpwYXJzdGF0ZS0+ bnVtUGFyYW1zKSAqIHNpemVvZihPaWQpKTsKKwkJaWYgKHBhcnN0YXRlLT5wYXJhbU9yaWdD b2xzKQorCQkJTWVtU2V0KCpwYXJzdGF0ZS0+cGFyYW1PcmlnQ29scyArICpwYXJzdGF0ZS0+ bnVtUGFyYW1zLAorCQkJCSAgIDAsCisJCQkJICAgKHBhcmFtbm8gLSAqcGFyc3RhdGUtPm51 bVBhcmFtcykgKiBzaXplb2YoQXR0ck51bWJlcikpOwogCQkqcGFyc3RhdGUtPm51bVBhcmFt cyA9IHBhcmFtbm87CiAJfQogCkBAIC0yNjAsNiArMjg5LDE4IEBAIHZhcmlhYmxlX2NvZXJj ZV9wYXJhbV9ob29rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW0gKnBhcmFtLAogCXJldHVy biBOVUxMOwogfQogCitzdGF0aWMgdm9pZAordmFyaWFibGVfcGFyYW1fYXNzaWduX29yaWdf aG9vayhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtICpwYXJhbSwgT2lkIG9yaWd0YmwsIEF0 dHJOdW1iZXIgb3JpZ2NvbCkKK3sKKwlWYXJQYXJhbVN0YXRlICpwYXJzdGF0ZSA9IChWYXJQ YXJhbVN0YXRlICopIHBzdGF0ZS0+cF9yZWZfaG9va19zdGF0ZTsKKwlpbnQJCQlwYXJhbW5v ID0gcGFyYW0tPnBhcmFtaWQ7CisKKwlpZiAocGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMpCisJ CSgqcGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMpW3BhcmFtbm8gLSAxXSA9IG9yaWd0Ymw7CisJ aWYgKHBhcnN0YXRlLT5wYXJhbU9yaWdDb2xzKQorCQkoKnBhcnN0YXRlLT5wYXJhbU9yaWdD b2xzKVtwYXJhbW5vIC0gMV0gPSBvcmlnY29sOworfQorCiAvKgogICogQ2hlY2sgZm9yIGNv bnNpc3RlbnQgYXNzaWdubWVudCBvZiB2YXJpYWJsZSBwYXJhbWV0ZXJzIGFmdGVyIGNvbXBs ZXRpb24KICAqIG9mIHBhcnNpbmcgd2l0aCBwYXJzZV92YXJpYWJsZV9wYXJhbWV0ZXJzLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDljZTNhMGRlOTYuLjVkMDA5M2Q3 YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTU5NSw2ICs1OTUsMTIg QEAgdHJhbnNmb3JtQXNzaWduZWRFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihvcmlnX2V4cHIpKSkpOwog CX0KIAorCWlmIChJc0EoZXhwciwgUGFyYW0pKQorCXsKKwkJaWYgKHBzdGF0ZS0+cF9wYXJh bV9hc3NpZ25fb3JpZ19ob29rKQorCQkJcHN0YXRlLT5wX3BhcmFtX2Fzc2lnbl9vcmlnX2hv b2socHN0YXRlLCBjYXN0Tm9kZShQYXJhbSwgZXhwciksIFJlbGF0aW9uR2V0UmVsaWQocHN0 YXRlLT5wX3RhcmdldF9yZWxhdGlvbiksIGF0dHJubyk7CisJfQorCiAJcHN0YXRlLT5wX2V4 cHJfa2luZCA9IHN2X2V4cHJfa2luZDsKIAogCXJldHVybiBleHByOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IDgyZGUwMWNkYzYuLmRhN2FiOWQ2OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK QEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNp bmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVvdXQuaCIK ICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIApAQCAtMTMzNiw2ICsxMzM3LDggQEAg ZXhlY19wYXJzZV9tZXNzYWdlKGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywJLyogc3RyaW5n IHRvIGV4ZWN1dGUgKi8KIAlib29sCQlpc19uYW1lZDsKIAlib29sCQlzYXZlX2xvZ19zdGF0 ZW1lbnRfc3RhdHMgPSBsb2dfc3RhdGVtZW50X3N0YXRzOwogCWNoYXIJCW1zZWNfc3RyWzMy XTsKKwlPaWQJCSAgICpwYXJhbU9yaWdUYmxzID0gcGFsbG9jKG51bVBhcmFtcyAqIHNpemVv ZihPaWQpKTsKKwlBdHRyTnVtYmVyICpwYXJhbU9yaWdDb2xzID0gcGFsbG9jKG51bVBhcmFt cyAqIHNpemVvZihBdHRyTnVtYmVyKSk7CiAKIAkvKgogCSAqIFJlcG9ydCBxdWVyeSB0byB2 YXJpb3VzIG1vbml0b3JpbmcgZmFjaWxpdGllcy4KQEAgLTE0NTksNyArMTQ2Miw5IEBAIGV4 ZWNfcGFyc2VfbWVzc2FnZShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCS8qIHN0cmluZyB0 byBleGVjdXRlICovCiAJCXF1ZXJ5ID0gcGFyc2VfYW5hbHl6ZV92YXJwYXJhbXMocmF3X3Bh cnNlX3RyZWUsCiAJCQkJCQkJCQkJcXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCSZwYXJhbVR5 cGVzLAotCQkJCQkJCQkJCSZudW1QYXJhbXMpOworCQkJCQkJCQkJCSZudW1QYXJhbXMsCisJ CQkJCQkJCQkJJnBhcmFtT3JpZ1RibHMsCisJCQkJCQkJCQkJJnBhcmFtT3JpZ0NvbHMpOwog CiAJCS8qCiAJCSAqIENoZWNrIGFsbCBwYXJhbWV0ZXIgdHlwZXMgZ290IGRldGVybWluZWQu CkBAIC0xNTA4LDYgKzE1MTMsOCBAQCBleGVjX3BhcnNlX21lc3NhZ2UoY29uc3QgY2hhciAq cXVlcnlfc3RyaW5nLAkvKiBzdHJpbmcgdG8gZXhlY3V0ZSAqLwogCQkJCQkgICB1bm5hbWVk X3N0bXRfY29udGV4dCwKIAkJCQkJICAgcGFyYW1UeXBlcywKIAkJCQkJICAgbnVtUGFyYW1z LAorCQkJCQkgICBwYXJhbU9yaWdUYmxzLAorCQkJCQkgICBwYXJhbU9yaWdDb2xzLAogCQkJ CQkgICBOVUxMLAogCQkJCQkgICBOVUxMLAogCQkJCQkgICBDVVJTT1JfT1BUX1BBUkFMTEVM X09LLAkvKiBhbGxvdyBwYXJhbGxlbCBtb2RlICovCkBAIC0xODA1LDYgKzE4MTIsMTYgQEAg ZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJZWxzZQog CQkJCXBmb3JtYXQgPSAwOwkvKiBkZWZhdWx0ID0gdGV4dCAqLwogCisJCQlpZiAoZ2V0X3R5 cHR5cGUocHR5cGUpID09IFRZUFRZUEVfRU5DUllQVEVEKQorCQkJeworCQkJCWlmIChwZm9y bWF0ICYgMHhGMCkKKwkJCQkJcGZvcm1hdCAmPSB+MHhGMDsKKwkJCQllbHNlCisJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJ T04pLAorCQkJCQkJCSBlcnJtc2coInBhcmFtZXRlciBjb3JyZXNwb25kcyB0byBhbiBlbmNy eXB0ZWQgY29sdW1uLCBidXQgdGhlIHBhcmFtZXRlciB2YWx1ZSB3YXMgbm90IGVuY3J5cHRl ZCIpKSk7CisJCQl9CisKIAkJCWlmIChwZm9ybWF0ID09IDApCS8qIHRleHQgbW9kZSAqLwog CQkJewogCQkJCU9pZAkJCXR5cGlucHV0OwpAQCAtMjYwMiw4ICsyNjE5LDQ3IEBAIGV4ZWNf ZGVzY3JpYmVfc3RhdGVtZW50X21lc3NhZ2UoY29uc3QgY2hhciAqc3RtdF9uYW1lKQogCXsK IAkJT2lkCQkJcHR5cGUgPSBwc3JjLT5wYXJhbV90eXBlc1tpXTsKIAorCQlpZiAoZ2V0X3R5 cHR5cGUocHR5cGUpID09IFRZUFRZUEVfRU5DUllQVEVEKQorCQl7CisJCQlPaWQJCQlwb3Jp Z3RibCA9IHBzcmMtPnBhcmFtX29yaWd0YmxzW2ldOworCQkJQXR0ck51bWJlcglwb3JpZ2Nv bCA9IHBzcmMtPnBhcmFtX29yaWdjb2xzW2ldOworCQkJSGVhcFR1cGxlICAgdHA7CisJCQlG b3JtX3BnX2F0dHJpYnV0ZSBvcmlnX2F0dDsKKworCQkJaWYgKHBvcmlndGJsID09IEludmFs aWRPaWQgfHwgcG9yaWdjb2wgPD0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygi cGFyYW1ldGVyICVkIGNvcnJlc3BvbmRzIHRvIGFuIGVuY3J5cHRlZCBjb2x1bW4sIGJ1dCBh biB1bmRlcmx5aW5nIHRhYmxlIGFuZCBjb2x1bW4gY291bGQgbm90IGJlIGRldGVybWluZWQi LCBpKSkpOworCisJCQl0cCA9IFNlYXJjaFN5c0NhY2hlMihBVFROVU0sIE9iamVjdElkR2V0 RGF0dW0ocG9yaWd0YmwpLCBJbnQxNkdldERhdHVtKHBvcmlnY29sKSk7CisJCQlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHApKQorCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRpb24gJXUiLCBwb3JpZ2NvbCwgcG9yaWd0 YmwpOworCQkJb3JpZ19hdHQgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCh0cCk7 CisJCQlNYXliZVNlbmRDb2x1bW5FbmNyeXB0aW9uS2V5TWVzc2FnZShvcmlnX2F0dC0+YXR0 Y2VrKTsKKwkJCXB0eXBlID0gb3JpZ19hdHQtPmF0dHJlYWx0eXBpZDsKKworCQkJUmVsZWFz ZVN5c0NhY2hlKHRwKTsKKwkJfQorCiAJCXBxX3NlbmRpbnQzMigmcm93X2Rlc2NyaXB0aW9u X2J1ZiwgKGludCkgcHR5cGUpOwogCX0KKworCWZvciAoaW50IGkgPSAwOyBpIDwgcHNyYy0+ bnVtX3BhcmFtczsgaSsrKQorCXsKKwkJaW50MTYJCXBmb3JtYXQ7CisKKwkJaWYgKGdldF90 eXB0eXBlKHBzcmMtPnBhcmFtX3R5cGVzW2ldKSA9PSBUWVBUWVBFX0VOQ1JZUFRFRCkKKwkJ eworCQkJcGZvcm1hdCA9IDB4MTA7CisJCQlpZiAocHNyYy0+cGFyYW1fdHlwZXNbaV0gPT0g RU5DUllQVEVERE9JRCkKKwkJCQlwZm9ybWF0IHw9IDB4MjA7CisJCX0KKwkJZWxzZQorCQkJ cGZvcm1hdCA9IDA7CisKKwkJcHFfc2VuZGludDE2KCZyb3dfZGVzY3JpcHRpb25fYnVmLCBw Zm9ybWF0KTsKKwl9CisKIAlwcV9lbmRtZXNzYWdlX3JldXNlKCZyb3dfZGVzY3JpcHRpb25f YnVmKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFu Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDY3 NjdlYWU4ZjIuLjg2OWYzN2IyNmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jCkBAIC0zNDAsNiArMzQwLDggQEAgQ29tcGxldGVDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJICAgTWVtb3J5Q29udGV4dCBxdWVyeXRyZWVfY29u dGV4dCwKIAkJCQkgICBPaWQgKnBhcmFtX3R5cGVzLAogCQkJCSAgIGludCBudW1fcGFyYW1z LAorCQkJCSAgIE9pZCAqcGFyYW1fb3JpZ3RibHMsCisJCQkJICAgQXR0ck51bWJlciAqcGFy YW1fb3JpZ2NvbHMsCiAJCQkJICAgUGFyc2VyU2V0dXBIb29rIHBhcnNlclNldHVwLAogCQkJ CSAgIHZvaWQgKnBhcnNlclNldHVwQXJnLAogCQkJCSAgIGludCBjdXJzb3Jfb3B0aW9ucywK QEAgLTQxOSw2ICs0MjEsMTQgQEAgQ29tcGxldGVDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsCiAJewogCQlwbGFuc291cmNlLT5wYXJhbV90eXBlcyA9IChPaWQg KikgcGFsbG9jKG51bV9wYXJhbXMgKiBzaXplb2YoT2lkKSk7CiAJCW1lbWNweShwbGFuc291 cmNlLT5wYXJhbV90eXBlcywgcGFyYW1fdHlwZXMsIG51bV9wYXJhbXMgKiBzaXplb2YoT2lk KSk7CisKKwkJcGxhbnNvdXJjZS0+cGFyYW1fb3JpZ3RibHMgPSAoT2lkICopIHBhbGxvYzAo bnVtX3BhcmFtcyAqIHNpemVvZihPaWQpKTsKKwkJaWYgKHBhcmFtX29yaWd0YmxzKQorCQkJ bWVtY3B5KHBsYW5zb3VyY2UtPnBhcmFtX29yaWd0YmxzLCBwYXJhbV9vcmlndGJscywgbnVt X3BhcmFtcyAqIHNpemVvZihPaWQpKTsKKworCQlwbGFuc291cmNlLT5wYXJhbV9vcmlnY29s cyA9IChBdHRyTnVtYmVyICopIHBhbGxvYzAobnVtX3BhcmFtcyAqIHNpemVvZihBdHRyTnVt YmVyKSk7CisJCWlmIChwYXJhbV9vcmlnY29scykKKwkJCW1lbWNweShwbGFuc291cmNlLT5w YXJhbV9vcmlnY29scywgcGFyYW1fb3JpZ2NvbHMsIG51bV9wYXJhbXMgKiBzaXplb2YoQXR0 ck51bWJlcikpOwogCX0KIAllbHNlCiAJCXBsYW5zb3VyY2UtPnBhcmFtX3R5cGVzID0gTlVM TDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCmluZGV4IDU2ODcwYjQ2ZTQuLjVj M2Y5YjAwNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwpAQCAtMjksNyAr MjksOSBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aF9tZW1iZXJzLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Nhc3QuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGVuY2tleS5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfY29sbGF0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xtYXN0ZXJrZXkuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX2NvbnZlcnNpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCkBA IC0yNjYsNiArMjY4LDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVkZXNjIGNhY2hl aW5mb1tdID0gewogCQl9LAogCQkyNTYKIAl9LAorCXsKKwkJQ29sdW1uRW5jS2V5UmVsYXRp b25JZCwJLyogQ0VLTkFNRSAqLworCQlDb2x1bW5FbmNLZXlOYW1lSW5kZXhJZCwKKwkJMSwK KwkJeworCQkJQW51bV9wZ19jb2xlbmNrZXlfY2VrbmFtZSwKKwkJfSwKKwkJOAorCX0sCisJ eworCQlDb2x1bW5FbmNLZXlSZWxhdGlvbklkLAkvKiBDRUtPSUQgKi8KKwkJQ29sdW1uRW5j S2V5T2lkSW5kZXhJZCwKKwkJMSwKKwkJeworCQkJQW51bV9wZ19jb2xlbmNrZXlfb2lkLAor CQl9LAorCQk4CisJfSwKIAl7T3BlcmF0b3JDbGFzc1JlbGF0aW9uSWQsCS8qIENMQUFNTkFN RU5TUCAqLwogCQlPcGNsYXNzQW1OYW1lTnNwSW5kZXhJZCwKIAkJMywKQEAgLTI4OCw2ICsz MDgsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7 CiAJCX0sCiAJCTgKIAl9LAorCXsKKwkJQ29sdW1uTWFzdGVyS2V5UmVsYXRpb25JZCwJLyog Q01LT0lEICovCisJCUNvbHVtbk1hc3RlcktleU9pZEluZGV4SWQsCisJCTEsCisJCXsKKwkJ CUFudW1fcGdfY29sbWFzdGVya2V5X29pZCwKKwkJfSwKKwkJOAorCX0sCiAJe0NvbGxhdGlv blJlbGF0aW9uSWQsCQkvKiBDT0xMTkFNRUVOQ05TUCAqLwogCQlDb2xsYXRpb25OYW1lRW5j TnNwSW5kZXhJZCwKIAkJMywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wcmlu dHR1cC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVwLmgKaW5kZXggYzliMzc1Mzhh MC4uOTBkOGM5MzU2NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVw LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVwLmgKQEAgLTIwLDYgKzIwLDgg QEAgZXh0ZXJuIERlc3RSZWNlaXZlciAqcHJpbnR0dXBfY3JlYXRlX0RSKENvbW1hbmREZXN0 IGRlc3QpOwogCiBleHRlcm4gdm9pZCBTZXRSZW1vdGVEZXN0UmVjZWl2ZXJQYXJhbXMoRGVz dFJlY2VpdmVyICpzZWxmLCBQb3J0YWwgcG9ydGFsKTsKIAorZXh0ZXJuIHZvaWQgTWF5YmVT ZW5kQ29sdW1uRW5jcnlwdGlvbktleU1lc3NhZ2UoT2lkIGF0dGNlayk7CisKIGV4dGVybiB2 b2lkIFNlbmRSb3dEZXNjcmlwdGlvbk1lc3NhZ2UoU3RyaW5nSW5mbyBidWYsCiAJCQkJCQkJ CQkgIFR1cGxlRGVzYyB0eXBlaW5mbywgTGlzdCAqdGFyZ2V0bGlzdCwgaW50MTYgKmZvcm1h dHMpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmRhdAppbmRleCA4MTM1ODU0MTYzLi44MTVj ZGFjMGFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuZGF0Cisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQKQEAgLTEwMjgsNiArMTAyOCwx MSBAQAogICBhbW9wcmlnaHR0eXBlID0+ICdieXRlYScsIGFtb3BzdHJhdGVneSA9PiAnMScs IGFtb3BvcHIgPT4gJz0oYnl0ZWEsYnl0ZWEpJywKICAgYW1vcG1ldGhvZCA9PiAnaGFzaCcg fSwKIAorIyBlbmNyeXB0ZWRkX29wcworeyBhbW9wZmFtaWx5ID0+ICdoYXNoL2VuY3J5cHRl ZGRfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdlbmNyeXB0ZWRkJywKKyAgYW1vcHJpZ2h0dHlw ZSA9PiAnZW5jcnlwdGVkZCcsIGFtb3BzdHJhdGVneSA9PiAnMScsIGFtb3BvcHIgPT4gJz0o ZW5jcnlwdGVkZCxlbmNyeXB0ZWRkKScsCisgIGFtb3BtZXRob2QgPT4gJ2hhc2gnIH0sCisK ICMgeGlkX29wcwogeyBhbW9wZmFtaWx5ID0+ICdoYXNoL3hpZF9vcHMnLCBhbW9wbGVmdHR5 cGUgPT4gJ3hpZCcsIGFtb3ByaWdodHR5cGUgPT4gJ3hpZCcsCiAgIGFtb3BzdHJhdGVneSA9 PiAnMScsIGFtb3BvcHIgPT4gJz0oeGlkLHhpZCknLCBhbW9wbWV0aG9kID0+ICdoYXNoJyB9 LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CmluZGV4IDU0NjBhYTI0MjIuLmEzNjk4 ZWVhMGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTQwMiw2ICs0MDIs MTEgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdoYXNoL2J5dGVhX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdieXRlYScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2Nu dW0gPT4gJzInLAogICBhbXByb2MgPT4gJ2hhc2h2YXJsZW5hZXh0ZW5kZWQnIH0sCit7IGFt cHJvY2ZhbWlseSA9PiAnaGFzaC9lbmNyeXB0ZWRkX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdlbmNyeXB0ZWRkJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdlbmNyeXB0ZWRkJywgYW1w cm9jbnVtID0+ICcxJywgYW1wcm9jID0+ICdoYXNodmFybGVuYScgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdoYXNoL2VuY3J5cHRlZGRfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2VuY3J5 cHRlZGQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2VuY3J5cHRlZGQnLCBhbXByb2NudW0g PT4gJzInLAorICBhbXByb2MgPT4gJ2hhc2h2YXJsZW5hZXh0ZW5kZWQnIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnaGFzaC94aWRfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3hpZCcsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAneGlkJywgYW1wcm9jbnVtID0+ICcxJywgYW1wcm9jID0+ ICdoYXNoaW50NCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdoYXNoL3hpZF9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAneGlkJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfYXR0cmlidXRlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F0dHJpYnV0ZS5oCmlu ZGV4IDVjMWVjOTMxM2UuLjQ4Yzc3NGMwNTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYXR0cmlidXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hdHRy aWJ1dGUuaApAQCAtMTY0LDYgKzE2NCwxNSBAQCBDQVRBTE9HKHBnX2F0dHJpYnV0ZSwxMjQ5 LEF0dHJpYnV0ZVJlbGF0aW9uSWQpIEJLSV9CT09UU1RSQVAgQktJX1JPV1RZUEVfT0lEKDc1 LAogCSAqLwogCWJvb2wJCWF0dGlzbG9jYWwgQktJX0RFRkFVTFQodCk7CiAKKwkvKiBjb2x1 bW4gZW5jcnlwdGlvbiBrZXkgKi8KKwlPaWQJCQlhdHRjZWsgQktJX0RFRkFVTFQoMCkgQktJ X0xPT0tVUF9PUFQocGdfY29sZW5ja2V5KTsKKworCS8qIHJlYWwgdHlwZSBpZiBlbmNyeXB0 ZWQgKi8KKwlPaWQJCQlhdHRyZWFsdHlwaWQgQktJX0RFRkFVTFQoMCkgQktJX0xPT0tVUF9P UFQocGdfdHlwZSk7CisKKwkvKiBlbmNyeXB0aW9uIGFsZ29yaXRobSAqLworCWludDMyCQlh dHRlbmNhbGcgQktJX0RFRkFVTFQoMCk7CisKIAkvKiBOdW1iZXIgb2YgdGltZXMgaW5oZXJp dGVkIGZyb20gZGlyZWN0IHBhcmVudCByZWxhdGlvbihzKSAqLwogCWludDMyCQlhdHRpbmhj b3VudCBCS0lfREVGQVVMVCgwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jYXN0LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2FzdC5kYXQKaW5kZXgg NjdmNzNjYjZmYi4uMjJmZjlkNWMwYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jYXN0LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nhc3QuZGF0CkBA IC01NDgsNCArNTQ4LDEwIEBACiB7IGNhc3Rzb3VyY2UgPT4gJ3RzdHpyYW5nZScsIGNhc3R0 YXJnZXQgPT4gJ3RzdHptdWx0aXJhbmdlJywKICAgY2FzdGZ1bmMgPT4gJ3RzdHptdWx0aXJh bmdlKHRzdHpyYW5nZSknLCBjYXN0Y29udGV4dCA9PiAnZScsCiAgIGNhc3RtZXRob2QgPT4g J2YnIH0sCisKK3sgY2FzdHNvdXJjZSA9PiAnYnl0ZWEnLCBjYXN0dGFyZ2V0ID0+ICdlbmNy eXB0ZWRkJywgY2FzdGZ1bmMgPT4gJzAnLAorICBjYXN0Y29udGV4dCA9PiAnZScsIGNhc3Rt ZXRob2QgPT4gJ2InIH0sCit7IGNhc3Rzb3VyY2UgPT4gJ2J5dGVhJywgY2FzdHRhcmdldCA9 PiAnZW5jcnlwdGVkcicsIGNhc3RmdW5jID0+ICcwJywKKyAgY2FzdGNvbnRleHQgPT4gJ2Un LCBjYXN0bWV0aG9kID0+ICdiJyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2NvbGVuY2tleS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xlbmNr ZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hNTlhYmMzYTE2 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xlbmNrZXku aApAQCAtMCwwICsxLDE4IEBACisjaWZuZGVmIFBHX0NPTEVOQ0tFWV9ICisjZGVmaW5lIFBH X0NPTEVOQ0tFWV9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfY29sZW5ja2V5X2QuaCIKKworQ0FUQUxPRyhwZ19jb2xlbmNrZXksODIz NCxDb2x1bW5FbmNLZXlSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsKKwlOYW1lRGF0YQlj ZWtuYW1lOworfSBGb3JtRGF0YV9wZ19jb2xlbmNrZXk7CisKK3R5cGVkZWYgRm9ybURhdGFf cGdfY29sZW5ja2V5ICpGb3JtX3BnX2NvbGVuY2tleTsKKworREVDTEFSRV9VTklRVUVfSU5E RVhfUEtFWShwZ19jb2xlbmNrZXlfb2lkX2luZGV4LCA4MjQwLCBDb2x1bW5FbmNLZXlPaWRJ bmRleElkLCBvbiBwZ19jb2xlbmNrZXkgdXNpbmcgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RF Q0xBUkVfVU5JUVVFX0lOREVYKHBnX2NvbGVuY2tleV9jZWtuYW1lX2luZGV4LCA4MjQyLCBD b2x1bW5FbmNLZXlOYW1lSW5kZXhJZCwgb24gcGdfY29sZW5ja2V5IHVzaW5nIGJ0cmVlKGNl a25hbWUgbmFtZV9vcHMpKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2NvbGVuY2tleWRhdGEuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29s ZW5ja2V5ZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmNk MTliMDUwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bGVuY2tleWRhdGEuaApAQCAtMCwwICsxLDI1IEBACisjaWZuZGVmIFBHX0NPTEVOQ0tFWURB VEFfSAorI2RlZmluZSBQR19DT0xFTkNLRVlEQVRBX0gKKworI2luY2x1ZGUgImNhdGFsb2cv Z2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xlbmNrZXlkYXRhX2QuaCIKKwor Q0FUQUxPRyhwZ19jb2xlbmNrZXlkYXRhLDgyNTAsQ29sdW1uRW5jS2V5RGF0YVJlbGF0aW9u SWQpCit7CisJT2lkCQkJb2lkOworCU9pZAkJCWNrZGNla2lkIEJLSV9MT09LVVAocGdfY29s ZW5ja2V5KTsKKwlPaWQJCQlja2RjbWtpZCBCS0lfTE9PS1VQKHBnX2NvbG1hc3RlcmtleSk7 CisjaWZkZWYgQ0FUQUxPR19WQVJMRU4gICAgICAgICAgIC8qIHZhcmlhYmxlLWxlbmd0aCBm aWVsZHMgc3RhcnQgaGVyZSAqLworCXRleHQJCWNrZGNta2FsZyBCS0lfRk9SQ0VfTk9UX05V TEw7CisJYnl0ZWEJCWNrZGVuY3ZhbCBCS0lfRk9SQ0VfTk9UX05VTEw7CisjZW5kaWYKK30g Rm9ybURhdGFfcGdfY29sZW5ja2V5ZGF0YTsKKwordHlwZWRlZiBGb3JtRGF0YV9wZ19jb2xl bmNrZXlkYXRhICpGb3JtX3BnX2NvbGVuY2tleWRhdGE7CisKK0RFQ0xBUkVfVE9BU1QocGdf Y29sZW5ja2V5ZGF0YSwgODIzNywgODIzOCk7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BL RVkocGdfY29sZW5ja2V5ZGF0YV9vaWRfaW5kZXgsIDgyNTEsIENvbHVtbkVuY0tleURhdGFP aWRJbmRleElkLCBvbiBwZ19jb2xlbmNrZXlkYXRhIHVzaW5nIGJ0cmVlKG9pZCBvaWRfb3Bz KSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19jb2xlbmNrZXlkYXRhX2NrZGNla2lkX2Nr ZGNta2lkX2luZGV4LCA4MjUyLCBDb2x1bW5FbmNLZXlDZWtpZENta2lkSW5kZXhJZCwgb24g cGdfY29sZW5ja2V5ZGF0YSB1c2luZyBidHJlZShja2RjZWtpZCBvaWRfb3BzLCBja2RjbWtp ZCBvaWRfb3BzKSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jb2xtYXN0ZXJrZXkuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbWFzdGVy a2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTUyOTJiMGI2 MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbWFzdGVy a2V5LmgKQEAgLTAsMCArMSwyNCBAQAorI2lmbmRlZiBQR19DT0xNQVNURVJLRVlfSAorI2Rl ZmluZSBQR19DT0xNQVNURVJLRVlfSAorCisjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbG1hc3RlcmtleV9kLmgiCisKK0NBVEFMT0cocGdf Y29sbWFzdGVya2V5LDgyMzMsQ29sdW1uTWFzdGVyS2V5UmVsYXRpb25JZCkKK3sKKwlPaWQJ CQlvaWQ7CisJTmFtZURhdGEJY21rbmFtZTsKKyNpZmRlZiBDQVRBTE9HX1ZBUkxFTiAgICAg ICAgICAgLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCisJdGV4dAkJ Y21rcHJvdmlkZXIgQktJX0ZPUkNFX05PVF9OVUxMOworCXRleHQJCWNta29wdGlvbnNbMV0g QktJX0ZPUkNFX05PVF9OVUxMOworI2VuZGlmCit9IEZvcm1EYXRhX3BnX2NvbG1hc3Rlcmtl eTsKKwordHlwZWRlZiBGb3JtRGF0YV9wZ19jb2xtYXN0ZXJrZXkgKkZvcm1fcGdfY29sbWFz dGVya2V5OworCitERUNMQVJFX1RPQVNUKHBnX2NvbG1hc3RlcmtleSwgODIzNSwgODIzNik7 CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfY29sbWFzdGVya2V5X29pZF9pbmRl eCwgODIzOSwgQ29sdW1uTWFzdGVyS2V5T2lkSW5kZXhJZCwgb24gcGdfY29sbWFzdGVya2V5 IHVzaW5nIGJ0cmVlKG9pZCBvaWRfb3BzKSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19j b2xtYXN0ZXJrZXlfY21rbmFtZV9pbmRleCwgODI0MSwgQ29sdW1uTWFzdGVyS2V5TmFtZUlu ZGV4SWQsIG9uIHBnX2NvbG1hc3RlcmtleSB1c2luZyBidHJlZShjbWtuYW1lIG5hbWVfb3Bz KSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNs YXNzLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQKaW5kZXggNDg0 NzI3YTJmYy4uZDQxZTJhYWMyYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19vcGNsYXNzLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0 CkBAIC0xNjYsNiArMTY2LDggQEAKICAgb3BjaW50eXBlID0+ICdib29sJyB9LAogeyBvcGNt ZXRob2QgPT4gJ2hhc2gnLCBvcGNuYW1lID0+ICdieXRlYV9vcHMnLCBvcGNmYW1pbHkgPT4g J2hhc2gvYnl0ZWFfb3BzJywKICAgb3BjaW50eXBlID0+ICdieXRlYScgfSwKK3sgb3BjbWV0 aG9kID0+ICdoYXNoJywgb3BjbmFtZSA9PiAnZW5jcnlwdGVkZF9vcHMnLCBvcGNmYW1pbHkg PT4gJ2hhc2gvZW5jcnlwdGVkZF9vcHMnLAorICBvcGNpbnR5cGUgPT4gJ2VuY3J5cHRlZGQn IH0sCiB7IG9wY21ldGhvZCA9PiAnYnRyZWUnLCBvcGNuYW1lID0+ICd0aWRfb3BzJywgb3Bj ZmFtaWx5ID0+ICdidHJlZS90aWRfb3BzJywKICAgb3BjaW50eXBlID0+ICd0aWQnIH0sCiB7 IG9wY21ldGhvZCA9PiAnaGFzaCcsIG9wY25hbWUgPT4gJ3hpZF9vcHMnLCBvcGNmYW1pbHkg PT4gJ2hhc2gveGlkX29wcycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X29wZXJhdG9yLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0Cmlu ZGV4IDAwNzVhMDJmMzIuLjlmYjk4OTA1MjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfb3BlcmF0b3IuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3Bl cmF0b3IuZGF0CkBAIC0zNDc1LDQgKzM0NzUsMTQgQEAKICAgb3ByY29kZSA9PiAnbXVsdGly YW5nZV9hZnRlcl9tdWx0aXJhbmdlJywgb3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCiAg IG9wcmpvaW4gPT4gJ3NjYWxhcmd0am9pbnNlbCcgfSwKIAoreyBvaWQgPT4gJzgyNDcnLCBk ZXNjciA9PiAnZXF1YWwnLAorICBvcHJuYW1lID0+ICc9Jywgb3ByY2FubWVyZ2UgPT4gJ2Yn LCBvcHJjYW5oYXNoID0+ICd0Jywgb3BybGVmdCA9PiAnZW5jcnlwdGVkZCcsCisgIG9wcnJp Z2h0ID0+ICdlbmNyeXB0ZWRkJywgb3BycmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc9 KGVuY3J5cHRlZGQsZW5jcnlwdGVkZCknLAorICBvcHJuZWdhdGUgPT4gJzw+KGVuY3J5cHRl ZGQsZW5jcnlwdGVkZCknLCBvcHJjb2RlID0+ICdlbmNyeXB0ZWRkZXEnLCBvcHJyZXN0ID0+ ICdlcXNlbCcsCisgIG9wcmpvaW4gPT4gJ2Vxam9pbnNlbCcgfSwKK3sgb2lkID0+ICc4MjQ4 JywgZGVzY3IgPT4gJ25vdCBlcXVhbCcsCisgIG9wcm5hbWUgPT4gJzw+Jywgb3BybGVmdCA9 PiAnZW5jcnlwdGVkZCcsIG9wcnJpZ2h0ID0+ICdlbmNyeXB0ZWRkJywgb3BycmVzdWx0ID0+ ICdib29sJywKKyAgb3ByY29tID0+ICc8PihlbmNyeXB0ZWRkLGVuY3J5cHRlZGQpJywgb3By bmVnYXRlID0+ICc9KGVuY3J5cHRlZGQsZW5jcnlwdGVkZCknLAorICBvcHJjb2RlID0+ICdl bmNyeXB0ZWRkbmUnLCBvcHJyZXN0ID0+ICduZXFzZWwnLCBvcHJqb2luID0+ICduZXFqb2lu c2VsJyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFt aWx5LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0CmluZGV4IDhl NDgwZWZkMjguLmRjZjk4MzllNDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfb3BmYW1pbHkuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHku ZGF0CkBAIC0xMDgsNiArMTA4LDggQEAKICAgb3BmbWV0aG9kID0+ICdoYXNoJywgb3BmbmFt ZSA9PiAnYm9vbF9vcHMnIH0sCiB7IG9pZCA9PiAnMjIyMycsCiAgIG9wZm1ldGhvZCA9PiAn aGFzaCcsIG9wZm5hbWUgPT4gJ2J5dGVhX29wcycgfSwKK3sgb2lkID0+ICc4MjQ5JywKKyAg b3BmbWV0aG9kID0+ICdoYXNoJywgb3BmbmFtZSA9PiAnZW5jcnlwdGVkZF9vcHMnIH0sCiB7 IG9pZCA9PiAnMjc4OScsCiAgIG9wZm1ldGhvZCA9PiAnYnRyZWUnLCBvcGZuYW1lID0+ICd0 aWRfb3BzJyB9LAogeyBvaWQgPT4gJzIyMjUnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggNzlkNzg3Y2QyNi4uNDRhODIyYWNhNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CkBAIC03OTkyLDkgKzc5OTIsOSBAQAogICBwcm9uYW1lID0+ICdwZ19wcmVwYXJlZF9z dGF0ZW1lbnQnLCBwcm9yb3dzID0+ICcxMDAwJywgcHJvcmV0c2V0ID0+ICd0JywKICAgcHJv dm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ3Jl Y29yZCcsCiAgIHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne3Rl eHQsdGV4dCx0aW1lc3RhbXB0eixfcmVndHlwZSxib29sLGludDgsaW50OH0nLAotICBwcm9h cmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1l LHN0YXRlbWVudCxwcmVwYXJlX3RpbWUscGFyYW1ldGVyX3R5cGVzLGZyb21fc3FsLGdlbmVy aWNfcGxhbnMsY3VzdG9tX3BsYW5zfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCx0 ZXh0LHRpbWVzdGFtcHR6LF9yZWd0eXBlLGJvb2wsaW50OCxpbnQ4LF9yZWdjbGFzcyxfaW50 Mn0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2Fy Z25hbWVzID0+ICd7bmFtZSxzdGF0ZW1lbnQscHJlcGFyZV90aW1lLHBhcmFtZXRlcl90eXBl cyxmcm9tX3NxbCxnZW5lcmljX3BsYW5zLGN1c3RvbV9wbGFucyxwYXJhbWV0ZXJfb3JpZ190 YWJsZXMscGFyYW1ldGVyX29yaWdfY29sdW1uc30nLAogICBwcm9zcmMgPT4gJ3BnX3ByZXBh cmVkX3N0YXRlbWVudCcgfSwKIHsgb2lkID0+ICcyNTExJywgZGVzY3IgPT4gJ2dldCB0aGUg b3BlbiBjdXJzb3JzIGZvciB0aGlzIHNlc3Npb24nLAogICBwcm9uYW1lID0+ICdwZ19jdXJz b3InLCBwcm9yb3dzID0+ICcxMDAwJywgcHJvcmV0c2V0ID0+ICd0JywKQEAgLTExNzMzLDQg KzExNzMzLDExIEBACiAgIHByb3JldHR5cGUgPT4gJ2J5dGVhJywgcHJvYXJndHlwZXMgPT4g J3BnX2JyaW5fbWlubWF4X211bHRpX3N1bW1hcnknLAogICBwcm9zcmMgPT4gJ2JyaW5fbWlu bWF4X211bHRpX3N1bW1hcnlfc2VuZCcgfSwKIAoreyBvaWQgPT4gJzgyNDUnLAorICBwcm9u YW1lID0+ICdlbmNyeXB0ZWRkZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBl ID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ2VuY3J5cHRlZGQgZW5jcnlwdGVkZCcs IHByb3NyYyA9PiAnYnl0ZWFlcScgfSwKK3sgb2lkID0+ICc4MjQ2JywKKyAgcHJvbmFtZSA9 PiAnZW5jcnlwdGVkZG5lJywgcHJvbGVha3Byb29mID0+ICd0JywgcHJvcmV0dHlwZSA9PiAn Ym9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdlbmNyeXB0ZWRkIGVuY3J5cHRlZGQnLCBwcm9z cmMgPT4gJ2J5dGVhbmUnIH0sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfdHlwZS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3R5cGUuZGF0CmluZGV4 IDQxMDc0Yzk5NGIuLjM2ZTJlMmMyNjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfdHlwZS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190eXBlLmRhdApA QCAtNjkyLDQgKzY5MiwxNiBAQAogICB0eXByZWNlaXZlID0+ICdicmluX21pbm1heF9tdWx0 aV9zdW1tYXJ5X3JlY3YnLAogICB0eXBzZW5kID0+ICdicmluX21pbm1heF9tdWx0aV9zdW1t YXJ5X3NlbmQnLCB0eXBhbGlnbiA9PiAnaScsCiAgIHR5cHN0b3JhZ2UgPT4gJ3gnLCB0eXBj b2xsYXRpb24gPT4gJ2RlZmF1bHQnIH0sCisKK3sgb2lkID0+ICc4MjQzJywgZGVzY3IgPT4g J2VuY3J5cHRlZCBjb2x1bW4gKGRldGVybWluaXN0aWMpJywKKyAgdHlwbmFtZSA9PiAnZW5j cnlwdGVkZCcsIHR5cGxlbiA9PiAnLTEnLCB0eXBieXZhbCA9PiAnZicsIHR5cHR5cGUgPT4g J3knLAorICB0eXBjYXRlZ29yeSA9PiAnWScsIHR5cGlucHV0ID0+ICdieXRlYWluJywgdHlw b3V0cHV0ID0+ICdieXRlYW91dCcsCisgIHR5cHJlY2VpdmUgPT4gJ2J5dGVhcmVjdicsIHR5 cHNlbmQgPT4gJ2J5dGVhc2VuZCcsIHR5cGFsaWduID0+ICdpJywKKyAgdHlwc3RvcmFnZSA9 PiAneCcgfSwKK3sgb2lkID0+ICc4MjQ0JywgZGVzY3IgPT4gJ2VuY3J5cHRlZCBjb2x1bW4g KHJhbmRvbWl6ZWQpJywKKyAgdHlwbmFtZSA9PiAnZW5jcnlwdGVkcicsIHR5cGxlbiA9PiAn LTEnLCB0eXBieXZhbCA9PiAnZicsIHR5cHR5cGUgPT4gJ3knLAorICB0eXBjYXRlZ29yeSA9 PiAnWScsIHR5cGlucHV0ID0+ICdieXRlYWluJywgdHlwb3V0cHV0ID0+ICdieXRlYW91dCcs CisgIHR5cHJlY2VpdmUgPT4gJ2J5dGVhcmVjdicsIHR5cHNlbmQgPT4gJ2J5dGVhc2VuZCcs IHR5cGFsaWduID0+ICdpJywKKyAgdHlwc3RvcmFnZSA9PiAneCcgfSwKKwogXQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190eXBlLmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3R5cGUuaAppbmRleCBlNTY4ZTIxZGVlLi45OTk3MjBmYjU0IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3R5cGUuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3R5cGUuaApAQCAtMjc3LDYgKzI3Nyw3IEBAIERFQ0xBUkVfVU5JUVVFX0lOREVY KHBnX3R5cGVfdHlwbmFtZV9uc3BfaW5kZXgsIDI3MDQsIFR5cGVOYW1lTnNwSW5kZXhJZCwg b24gcGdfCiAjZGVmaW5lICBUWVBUWVBFX01VTFRJUkFOR0UJJ20nIC8qIG11bHRpcmFuZ2Ug dHlwZSAqLwogI2RlZmluZSAgVFlQVFlQRV9QU0VVRE8JCSdwJyAvKiBwc2V1ZG8tdHlwZSAq LwogI2RlZmluZSAgVFlQVFlQRV9SQU5HRQkJJ3InIC8qIHJhbmdlIHR5cGUgKi8KKyNkZWZp bmUgIFRZUFRZUEVfRU5DUllQVEVECSd5JwkvKiBlbmNyeXB0ZWQgY29sdW1uIHZhbHVlICov CiAKICNkZWZpbmUgIFRZUENBVEVHT1JZX0lOVkFMSUQJJ1wwJwkvKiBub3QgYW4gYWxsb3dl ZCBjYXRlZ29yeSAqLwogI2RlZmluZSAgVFlQQ0FURUdPUllfQVJSQVkJCSdBJwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDA2NzEzOGU2YjUuLjA0ZTZlMzEwZWQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTY3MCw2ICs2NzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBD b2x1bW5EZWYKIAljaGFyCSAgICpjb2xuYW1lOwkJLyogbmFtZSBvZiBjb2x1bW4gKi8KIAlU eXBlTmFtZSAgICp0eXBlTmFtZTsJCS8qIHR5cGUgb2YgY29sdW1uICovCiAJY2hhcgkgICAq Y29tcHJlc3Npb247CS8qIGNvbXByZXNzaW9uIG1ldGhvZCBmb3IgY29sdW1uICovCisJTGlz dAkgICAqZW5jcnlwdGlvbjsJCS8qIGVuY3J5cHRpb24gaW5mbyBmb3IgY29sdW1uICovCiAJ aW50CQkJaW5oY291bnQ7CQkvKiBudW1iZXIgb2YgdGltZXMgY29sdW1uIGlzIGluaGVyaXRl ZCAqLwogCWJvb2wJCWlzX2xvY2FsOwkJLyogY29sdW1uIGhhcyBsb2NhbCAobm9uLWluaGVy aXRlZCkgZGVmJ24gKi8KIAlib29sCQlpc19ub3RfbnVsbDsJLyogTk9UIE5VTEwgY29uc3Ry YWludCBzcGVjaWZpZWQ/ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5h bHl6ZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAppbmRleCBhMGYwYmQzOGQ3 Li5jMWI4Zjc2MTdhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5o CisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKQEAgLTI3LDcgKzI3LDggQEAg ZXh0ZXJuIFBHRExMSU1QT1JUIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rX3R5cGUgcG9zdF9w YXJzZV9hbmFseXplX2hvb2s7CiBleHRlcm4gUXVlcnkgKnBhcnNlX2FuYWx5emUoUmF3U3Rt dCAqcGFyc2VUcmVlLCBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCU9pZCAqcGFy YW1UeXBlcywgaW50IG51bVBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwog ZXh0ZXJuIFF1ZXJ5ICpwYXJzZV9hbmFseXplX3ZhcnBhcmFtcyhSYXdTdG10ICpwYXJzZVRy ZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCi0JCQkJCQkJCQkgIE9pZCAqKnBhcmFtVHlw ZXMsIGludCAqbnVtUGFyYW1zKTsKKwkJCQkJCQkJCSAgT2lkICoqcGFyYW1UeXBlcywgaW50 ICpudW1QYXJhbXMsCisJCQkJCQkJCQkgIE9pZCAqKnBhcmFtT3JpZ1RibHMsIEF0dHJOdW1i ZXIgKipwYXJhbU9yaWdDb2xzKTsKIAogZXh0ZXJuIFF1ZXJ5ICpwYXJzZV9zdWJfYW5hbHl6 ZShOb2RlICpwYXJzZVRyZWUsIFBhcnNlU3RhdGUgKnBhcmVudFBhcnNlU3RhdGUsCiAJCQkJ CQkJCUNvbW1vblRhYmxlRXhwciAqcGFyZW50Q1RFLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmgKaW5kZXggZWUxNzkwODJjZS4uMDExMTYyYTYzZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oCkBAIC05Miw2ICs5Miw3IEBAIHR5cGVkZWYgTm9kZSAqKCpQYXJzZVBhcmFtUmVm SG9vaykgKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpOwogdHlwZWRlZiBO b2RlICooKkNvZXJjZVBhcmFtSG9vaykgKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW0gKnBh cmFtLAogCQkJCQkJCQkgIE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cGVNb2Qs CiAJCQkJCQkJCSAgaW50IGxvY2F0aW9uKTsKK3R5cGVkZWYgdm9pZCAoKlBhcmFtQXNzaWdu T3JpZ0hvb2spIChQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtICpwYXJhbSwgT2lkIG9yaWd0 YmwsIEF0dHJOdW1iZXIgb3JpZ2NvbCk7CiAKIAogLyoKQEAgLTIyMSw2ICsyMjIsNyBAQCBz dHJ1Y3QgUGFyc2VTdGF0ZQogCVBvc3RQYXJzZUNvbHVtblJlZkhvb2sgcF9wb3N0X2NvbHVt bnJlZl9ob29rOwogCVBhcnNlUGFyYW1SZWZIb29rIHBfcGFyYW1yZWZfaG9vazsKIAlDb2Vy Y2VQYXJhbUhvb2sgcF9jb2VyY2VfcGFyYW1faG9vazsKKwlQYXJhbUFzc2lnbk9yaWdIb29r IHBfcGFyYW1fYXNzaWduX29yaWdfaG9vazsKIAl2b2lkCSAgICpwX3JlZl9ob29rX3N0YXRl OwkvKiBjb21tb24gcGFzc3Rocm91Z2ggbGluayBmb3IgYWJvdmUgKi8KIH07CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9wYXJhbS5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX3BhcmFtLmgKaW5kZXggYjQyZmZmMjk2Yy4uYjkwYTMxNWU5YyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3BhcmFtLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX3BhcmFtLmgKQEAgLTE4LDcgKzE4LDggQEAKIGV4dGVybiB2 b2lkIHBhcnNlX2ZpeGVkX3BhcmFtZXRlcnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJ CQkgICBPaWQgKnBhcmFtVHlwZXMsIGludCBudW1QYXJhbXMpOwogZXh0ZXJuIHZvaWQgcGFy c2VfdmFyaWFibGVfcGFyYW1ldGVycyhQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJCQkg IE9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVtUGFyYW1zKTsKKwkJCQkJCQkJCSAgT2lkICoq cGFyYW1UeXBlcywgaW50ICpudW1QYXJhbXMsCisJCQkJCQkJCQkgIE9pZCAqKnBhcmFtT3Jp Z1RibHMsIEF0dHJOdW1iZXIgKipwYXJhbU9yaWdDb2xzKTsKIGV4dGVybiB2b2lkIGNoZWNr X3ZhcmlhYmxlX3BhcmFtZXRlcnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXVlcnkp OwogZXh0ZXJuIGJvb2wgcXVlcnlfY29udGFpbnNfZXh0ZXJuX3BhcmFtcyhRdWVyeSAqcXVl cnkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IGZmMDljNjNhMDIuLmVhYzkwYWE4 MjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xMDEsNiArMTAxLDggQEAgdHlwZWRl ZiBzdHJ1Y3QgQ2FjaGVkUGxhblNvdXJjZQogCUNvbW1hbmRUYWcJY29tbWFuZFRhZzsJCS8q ICdudWZmIHNhaWQgKi8KIAlPaWQJCSAgICpwYXJhbV90eXBlczsJLyogYXJyYXkgb2YgcGFy YW1ldGVyIHR5cGUgT0lEcywgb3IgTlVMTCAqLwogCWludAkJCW51bV9wYXJhbXM7CQkvKiBs ZW5ndGggb2YgcGFyYW1fdHlwZXMgYXJyYXkgKi8KKwlPaWQJCSAgICpwYXJhbV9vcmlndGJs czsKKwlBdHRyTnVtYmVyICpwYXJhbV9vcmlnY29sczsKIAlQYXJzZXJTZXR1cEhvb2sgcGFy c2VyU2V0dXA7CS8qIGFsdGVybmF0aXZlIHBhcmFtZXRlciBzcGVjIG1ldGhvZCAqLwogCXZv aWQJICAgKnBhcnNlclNldHVwQXJnOwogCWludAkJCWN1cnNvcl9vcHRpb25zOyAvKiBjdXJz b3Igb3B0aW9ucyB1c2VkIGZvciBwbGFubmluZyAqLwpAQCAtMTk5LDYgKzIwMSw4IEBAIGV4 dGVybiB2b2lkIENvbXBsZXRlQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogCQkJCQkJCSAgIE1lbW9yeUNvbnRleHQgcXVlcnl0cmVlX2NvbnRleHQsCiAJCQkJ CQkJICAgT2lkICpwYXJhbV90eXBlcywKIAkJCQkJCQkgICBpbnQgbnVtX3BhcmFtcywKKwkJ CQkJCQkgICBPaWQgKnBhcmFtX29yaWd0YmxzLAorCQkJCQkJCSAgIEF0dHJOdW1iZXIgKnBh cmFtX29yaWdjb2xzLAogCQkJCQkJCSAgIFBhcnNlclNldHVwSG9vayBwYXJzZXJTZXR1cCwK IAkJCQkJCQkgICB2b2lkICpwYXJzZXJTZXR1cEFyZywKIAkJCQkJCQkgICBpbnQgY3Vyc29y X29wdGlvbnMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaAppbmRleCBjOGNmYmMzMGY2Li4yNDIwYzlh ODE4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKQEAgLTQ0LDggKzQ0LDExIEBAIGVudW0gU3lz Q2FjaGVJZGVudGlmaWVyCiAJQVVUSE5BTUUsCiAJQVVUSE9JRCwKIAlDQVNUU09VUkNFVEFS R0VULAorCUNFS05BTUUsCisJQ0VLT0lELAogCUNMQUFNTkFNRU5TUCwKIAlDTEFPSUQsCisJ Q01LT0lELAogCUNPTExOQU1FRU5DTlNQLAogCUNPTExPSUQsCiAJQ09OREVGQVVMVCwKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0IGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKaW5kZXggZThiY2M4ODM3MC4uN2RhY2M5M2UwYiAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKKysrIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTE4NiwzICsxODYsNSBAQCBQUXBp cGVsaW5lU3RhdHVzICAgICAgICAgIDE4MwogUFFzZXRUcmFjZUZsYWdzICAgICAgICAgICAx ODQKIFBRbWJsZW5Cb3VuZGVkICAgICAgICAgICAgMTg1CiBQUXNlbmRGbHVzaFJlcXVlc3Qg ICAgICAgIDE4NgorUFFleGVjUHJlcGFyZWQyICAgICAgICAgICAxODcKK1BRc2VuZFF1ZXJ5 UHJlcGFyZWQyICAgICAgMTg4CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKaW5kZXgg OWI2YTY5MzlmMC4uYmMxYjQ5MjU1NyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3Qu YwpAQCAtNDE1MSw2ICs0MTUxLDExIEBAIGZyZWVQR2Nvbm4oUEdjb25uICpjb25uKQogCQlm cmVlKGNvbm4tPmdzc2xpYik7CiAJaWYgKGNvbm4tPmNvbm5pcCkKIAkJZnJlZShjb25uLT5j b25uaXApOworCWlmIChjb25uLT5jZWtkYXRhKQorCXsKKwkJZXhwbGljaXRfYnplcm8oY29u bi0+Y2VrZGF0YSwgY29ubi0+Y2VrZGF0YWxlbik7CisJCWZyZWUoY29ubi0+Y2VrZGF0YSk7 CisJfQogCS8qIE5vdGUgdGhhdCBjb25uLT5QZmRlYnVnIGlzIG5vdCBvdXJzIHRvIGNsb3Nl IG9yIGZyZWUgKi8KIAlpZiAoY29ubi0+d3JpdGVfZXJyX21zZykKIAkJZnJlZShjb25uLT53 cml0ZV9lcnJfbXNnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4 ZWMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwppbmRleCA2YzdiM2RmMDEy Li4wZTk0MzFmMzYwIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVj LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCkBAIC0yOCw2ICsyOCw5 IEBACiAjaW5jbHVkZSAibGlicHEtaW50LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIK IAorLyogVE9ETzogbW92ZSBPcGVuU1NMLXNwZWNpZmljIHBhcnRzIHRvIHNlcGFyYXRlIGZp bGUgKi8KKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCiAvKiBrZWVwIHRoaXMgaW4gc2Ft ZSBvcmRlciBhcyBFeGVjU3RhdHVzVHlwZSBpbiBsaWJwcS1mZS5oICovCiBjaGFyCSAgICpj b25zdCBwZ3Jlc1N0YXR1c1tdID0gewogCSJQR1JFU19FTVBUWV9RVUVSWSIsCkBAIC02NSw3 ICs2OCw4IEBAIHN0YXRpYyBpbnQJUFFzZW5kUXVlcnlHdXRzKFBHY29ubiAqY29ubiwKIAkJ CQkJCQljb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMsCiAJCQkJCQkJY29uc3QgaW50 ICpwYXJhbUxlbmd0aHMsCiAJCQkJCQkJY29uc3QgaW50ICpwYXJhbUZvcm1hdHMsCi0JCQkJ CQkJaW50IHJlc3VsdEZvcm1hdCk7CisJCQkJCQkJaW50IHJlc3VsdEZvcm1hdCwKKwkJCQkJ CQlQR3Jlc3VsdCAqcGFyYW1EZXNjKTsKIHN0YXRpYyB2b2lkIHBhcnNlSW5wdXQoUEdjb25u ICpjb25uKTsKIHN0YXRpYyBQR3Jlc3VsdCAqZ2V0Q29weVJlc3VsdChQR2Nvbm4gKmNvbm4s IEV4ZWNTdGF0dXNUeXBlIGNvcHl0eXBlKTsKIHN0YXRpYyBib29sIFBRZXhlY1N0YXJ0KFBH Y29ubiAqY29ubik7CkBAIC0xMDg5LDYgKzEwOTMsMTEzIEBAIHBxU2F2ZVBhcmFtZXRlclN0 YXR1cyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVl KQogCX0KIH0KIAordm9pZAorcHFTYXZlQ29sdW1uTWFzdGVyS2V5KFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcHJvdmlkZXIsCisJCQkJCQkJCSAgY29u c3QgY2hhciAqb3B0bmFtZTEsIGNvbnN0IGNoYXIgKm9wdHZhbDEpCit7CisJZnJlZShjb25u LT5jbWtuYW1lKTsKKwljb25uLT5jbWtuYW1lID0gc3RyZHVwKG5hbWUpOworCWZyZWUoY29u bi0+Y21rcHJvdmlkZXIpOworCWNvbm4tPmNta3Byb3ZpZGVyID0gc3RyZHVwKHByb3ZpZGVy KTsKKwlmcmVlKGNvbm4tPmNta29wdG5hbWUxKTsKKwljb25uLT5jbWtvcHRuYW1lMSA9IHN0 cmR1cChvcHRuYW1lMSk7CisJZnJlZShjb25uLT5jbWtvcHR2YWwxKTsKKwljb25uLT5jbWtv cHR2YWwxID0gc3RyZHVwKG9wdHZhbDEpOworfQorCisvKgorICogYSBkaWZmZXJlbnQga2V5 IHByb3ZpZGVyIHdvdWxkIHJlcGxhY2UgdGhpcyBmdW5jdGlvbgorICovCitzdGF0aWMgdW5z aWduZWQgY2hhciAqCitkZWNyeXB0X2Nla19maWxlKFBHY29ubiAqY29ubiwKKwkJCQkgaW50 IGZyb21sZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyb20sCisJCQkJIGludCAqdG9sZW4p Cit7CisJUlNBICpyc2E7CisJY2hhciAqY21rZmlsZW5hbWUgPSBjb25uLT5jbWtvcHR2YWwx OworCUZJTEUgKmZwOworCXVuc2lnbmVkIGNoYXIgKnRvOworCWludCBydjsKKworCS8qCisJ ICogc2V0dXAsIGxvYWQga2V5cworCSAqLworCisJaWYgKCFjbWtmaWxlbmFtZSkKKwl7CisJ CWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBx X2dldHRleHQoIm5vIENNSyBmaWxlIHNldFxuIikpOworCQlnb3RvIGZhaWw7CisJfQorCXJz YSA9IFJTQV9uZXcoKTsKKwlmcCA9IGZvcGVuKGNta2ZpbGVuYW1lLCAicmIiKTsKKwlpZiAo IWZwKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJ CQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVtXG4i KSwgY21rZmlsZW5hbWUpOworCQlnb3RvIGZhaWw7CisJfQorCXJzYSA9IFBFTV9yZWFkX1JT QVByaXZhdGVLZXkoZnAsICZyc2EsIE5VTEwsIE5VTEwpOworCWlmICghcnNhKQorCXsKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFf Z2V0dGV4dCgiUEVNX3JlYWRfUlNBUHJpdmF0ZUtleSgpIGZhaWxlZDogJXNcbiIpLAorCQkJ CQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJZ290 byBmYWlsOworCX0KKwlmY2xvc2UoZnApOworCisJLyoKKwkgKiBkZWNyeXB0CisJICovCisK Kwl0byA9IG1hbGxvYyhSU0Ffc2l6ZShyc2EpKTsKKworCXJ2ID0gUlNBX3ByaXZhdGVfZGVj cnlwdChmcm9tbGVuLCBmcm9tLCB0bywgcnNhLCBSU0FfUEtDUzFfT0FFUF9QQURESU5HKTsK KwlpZiAocnYgPCAwKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVz c2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiUlNBX3ByaXZhdGVfZGVjcnlwdCgpIGZh aWxlZDogJXNcbiIpLAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0 X2Vycm9yKCkpKTsKKwkJZ290byBmYWlsOworCX0KKworCVJTQV9mcmVlKHJzYSk7CisKKwkq dG9sZW4gPSBydjsKKwlyZXR1cm4gdG87CisKK2ZhaWw6CisJcmV0dXJuIGZhbHNlOworfQor CitzdGF0aWMgdW5zaWduZWQgY2hhciAqCitkZWNyeXB0X2NlayhQR2Nvbm4gKmNvbm4sCisJ CQlpbnQgZnJvbWxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKKwkJCWludCAqdG9s ZW4pCit7CisJaWYgKHN0cmNtcChjb25uLT5jbWtwcm92aWRlciwgImZpbGUiKSA9PSAwKQor CQlyZXR1cm4gZGVjcnlwdF9jZWtfZmlsZShjb25uLCBmcm9tbGVuLCBmcm9tLCB0b2xlbik7 CisJZWxzZQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK KwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiQ01LIHByb3ZpZGVyIFwiJXNcIiBub3QgcmVjb2du aXplZFxuIiksIGNvbm4tPmNta3Byb3ZpZGVyKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorfQor Cit2b2lkCitwcVNhdmVDb2x1bW5FbmNyeXB0aW9uS2V5KFBHY29ubiAqY29ubiwgY29uc3Qg Y2hhciAqbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqdmFsdWUsIGludCBsZW4pCit7CisJ dW5zaWduZWQgY2hhciAqbmV3dmFsID0gTlVMTDsKKwlpbnQgbmV3dmFsbGVuID0gMDsKKwor CW5ld3ZhbCA9IGRlY3J5cHRfY2VrKGNvbm4sIGxlbiwgdmFsdWUsICZuZXd2YWxsZW4pOwor CisJZnJlZShjb25uLT5jZWtkYXRhKTsKKwljb25uLT5jZWtkYXRhID0gbmV3dmFsOworCWNv bm4tPmNla2RhdGFsZW4gPSBuZXd2YWxsZW47Cit9CiAKIC8qCiAgKiBwcVJvd1Byb2Nlc3Nv cgpAQCAtMTE1Myw5ICsxMjY0LDEwMyBAQCBwcVJvd1Byb2Nlc3NvcihQR2Nvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKiplcnJtc2dwKQogCQl9CiAJCWVsc2UKIAkJewotCQkJYm9vbAkJaXNi aW5hcnkgPSAocmVzLT5hdHREZXNjc1tpXS5mb3JtYXQgIT0gMCk7CisJCQlib29sCQlpc2Jp bmFyeSA9ICgocmVzLT5hdHREZXNjc1tpXS5mb3JtYXQgJiAweDBGKSAhPSAwKTsKKwkJCWJv b2wJCWlzZW5jcnlwdGVkID0gKChyZXMtPmF0dERlc2NzW2ldLmZvcm1hdCAmIDB4RjApICE9 IDApOwogCQkJY2hhcgkgICAqdmFsOwogCisJCQlpZiAoaXNlbmNyeXB0ZWQpCisJCQl7CisJ CQkJdW5zaWduZWQgY2hhciAqdjsKKwkJCQlzaXplX3QgbDsKKwkJCQl1bnNpZ25lZCBjaGFy ICppdjsKKwkJCQlzaXplX3QgaXZsZW47CisKKwkJCQlFVlBfQ0lQSEVSX0NUWCAqZXZwX2N0 eDsKKwkJCQljb25zdCBFVlBfQ0lQSEVSICpjaXBoZXI7CisJCQkJdW5zaWduZWQgY2hhciAq ZGVjcjsKKwkJCQlpbnQgZGVjcmxlbiwgZGVjcmxlbjI7CisKKwkJCQljaXBoZXIgPSBFVlBf Z2V0X2NpcGhlcmJ5bmFtZSgiQUVTLTEyOC1DQkMiKTsKKwkJCQlpZiAoIWNpcGhlcikKKwkJ CQl7CisJCQkJCSplcnJtc2dwID0gbGlicHFfZ2V0dGV4dCgiRVZQX2dldF9jaXBoZXJieW5h bWUoKSBmYWlsZWQiKTsKKwkJCQkJZ290byBmYWlsOworCQkJCX0KKworCQkJCWV2cF9jdHgg PSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKworCQkJCWlmICghaXNiaW5hcnkpCisJCQkJewor CQkJCQl1bnNpZ25lZCBjaGFyICp4OworCQkJCQl4ID0gbWFsbG9jKGNsZW4gKyAxKTsKKwkJ CQkJbWVtY3B5KHgsIGNvbHVtbnNbaV0udmFsdWUsIGNsZW4pOworCQkJCQl4W2NsZW5dID0g J1wwJzsKKwkJCQkJdiA9IFBRdW5lc2NhcGVCeXRlYSh4LCAmbCk7CisJCQkJfQorCQkJCWVs c2UKKwkJCQl7CisJCQkJCXYgPSB1bmNvbnN0aWZ5KHVuc2lnbmVkIGNoYXIgKiwgKGNvbnN0 IHVuc2lnbmVkIGNoYXIgKikgY29sdW1uc1tpXS52YWx1ZSk7CisJCQkJCWwgPSBjbGVuOwor CQkJCX0KKworCQkJCWlmICghRVZQX0RlY3J5cHRJbml0X2V4KGV2cF9jdHgsIGNpcGhlciwg TlVMTCwgTlVMTCwgTlVMTCkpCisJCQkJeworCQkJCQlzdGF0aWMgY2hhciBlcnJtc2dbMTAw XTsKKwkJCQkJc25wcmludGYoZXJybXNnLCBzaXplb2YoZXJybXNnKSwgbGlicHFfZ2V0dGV4 dCgiRVZQX0RlY3J5cHRJbml0X2V4KCkgZmFpbGVkOiAlcyIpLAorCQkJCQkJCUVSUl9yZWFz b25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQkJCQkqZXJybXNncCA9IGVy cm1zZzsKKwkJCQkJZ290byBmYWlsOworCQkJCX0KKworCQkJCWlmIChjb25uLT5jZWtkYXRh bGVuICE9IEVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGgoZXZwX2N0eCkpCisJCQkJeworCQkJ CQlzdGF0aWMgY2hhciBlcnJtc2dbMTAwXTsKKwkJCQkJc25wcmludGYoZXJybXNnLCBzaXpl b2YoZXJybXNnKSwgbGlicHFfZ2V0dGV4dCgiY29sdW1uIGVuY3J5cHRpb24ga2V5IGhhcyB3 cm9uZyBrZXkgbGVuZ3RoIGZvciBjaXBoZXIgKGhhczogJXp1LCByZXF1aXJlZDogJWQpIiks CisJCQkJCQkJIGNvbm4tPmNla2RhdGFsZW4sIEVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGgo ZXZwX2N0eCkpOworCQkJCQkqZXJybXNncCA9IGVycm1zZzsKKwkJCQkJZ290byBmYWlsOwor CQkJCX0KKworCQkJCWl2bGVuID0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKGV2cF9jdHgp OworCQkJCWl2ID0gdjsKKwkJCQl2ICs9IGl2bGVuOworCQkJCWwgLT0gaXZsZW47CisJCQkJ aWYgKCFFVlBfRGVjcnlwdEluaXRfZXgoZXZwX2N0eCwgTlVMTCwgTlVMTCwgY29ubi0+Y2Vr ZGF0YSwgaXYpKQorCQkJCXsKKwkJCQkJc3RhdGljIGNoYXIgZXJybXNnWzEwMF07CisJCQkJ CXNucHJpbnRmKGVycm1zZywgc2l6ZW9mKGVycm1zZyksIGxpYnBxX2dldHRleHQoIkVWUF9E ZWNyeXB0SW5pdF9leCgpIGZhaWxlZDogJXMiKSwKKwkJCQkJCQlFUlJfcmVhc29uX2Vycm9y X3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJCQkJKmVycm1zZ3AgPSBlcnJtc2c7CisJ CQkJCWdvdG8gZmFpbDsKKwkJCQl9CisKKwkJCQlkZWNyID0gbWFsbG9jKGwgKyBFVlBfQ0lQ SEVSX0NUWF9ibG9ja19zaXplKGV2cF9jdHgpICsgMSk7CisJCQkJaWYgKCFFVlBfRGVjcnlw dFVwZGF0ZShldnBfY3R4LCBkZWNyLCAmZGVjcmxlbiwgdiwgbCkpCisJCQkJeworCQkJCQlz dGF0aWMgY2hhciBlcnJtc2dbMTAwXTsKKwkJCQkJc25wcmludGYoZXJybXNnLCBzaXplb2Yo ZXJybXNnKSwgbGlicHFfZ2V0dGV4dCgiRVZQX0RlY3J5cHRVcGRhdGUoKSBmYWlsZWQ6ICVz IiksCisJCQkJCQkJRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7 CisJCQkJCSplcnJtc2dwID0gZXJybXNnOworCQkJCQlnb3RvIGZhaWw7CisJCQkJfQorCQkJ CWlmICghRVZQX0RlY3J5cHRGaW5hbF9leChldnBfY3R4LCBkZWNyICsgZGVjcmxlbiwgJmRl Y3JsZW4yKSkKKwkJCQl7CisJCQkJCXN0YXRpYyBjaGFyIGVycm1zZ1sxMDBdOworCQkJCQlz bnByaW50ZihlcnJtc2csIHNpemVvZihlcnJtc2cpLCBsaWJwcV9nZXR0ZXh0KCJFVlBfRGVj cnlwdEZpbmFsX2V4KCkgZmFpbGVkOiAlcyIpLAorCQkJCQkJCUVSUl9yZWFzb25fZXJyb3Jf c3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQkJCQkqZXJybXNncCA9IGVycm1zZzsKKwkJ CQkJZ290byBmYWlsOworCQkJCX0KKwkJCQlkZWNybGVuICs9IGRlY3JsZW4yOworCQkJCWRl Y3JbZGVjcmxlbl0gPSAnXDAnOworCQkJCXZhbCA9IChjaGFyICopIGRlY3I7CisJCQkJY2xl biA9IGRlY3JsZW4gKyAxOworCisJCQkJRVZQX0NJUEhFUl9DVFhfZnJlZShldnBfY3R4KTsK KwkJCQlmcmVlKGl2KTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKIAkJCXZhbCA9IChjaGFyICop IHBxUmVzdWx0QWxsb2MocmVzLCBjbGVuICsgMSwgaXNiaW5hcnkpOwogCQkJaWYgKHZhbCA9 PSBOVUxMKQogCQkJCWdvdG8gZmFpbDsKQEAgLTExNjMsNiArMTM2OCw3IEBAIHBxUm93UHJv Y2Vzc29yKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqKmVycm1zZ3ApCiAJCQkvKiBjb3B5 IGFuZCB6ZXJvLXRlcm1pbmF0ZSB0aGUgZGF0YSAoZXZlbiBpZiBpdCdzIGJpbmFyeSkgKi8K IAkJCW1lbWNweSh2YWwsIGNvbHVtbnNbaV0udmFsdWUsIGNsZW4pOwogCQkJdmFsW2NsZW5d ID0gJ1wwJzsKKwkJCX0KIAogCQkJdHVwW2ldLmxlbiA9IGNsZW47CiAJCQl0dXBbaV0udmFs dWUgPSB2YWw7CkBAIC0xNDcwLDcgKzE2NzYsOCBAQCBQUXNlbmRRdWVyeVBhcmFtcyhQR2Nv bm4gKmNvbm4sCiAJCQkJCQkgICBwYXJhbVZhbHVlcywKIAkJCQkJCSAgIHBhcmFtTGVuZ3Ro cywKIAkJCQkJCSAgIHBhcmFtRm9ybWF0cywKLQkJCQkJCSAgIHJlc3VsdEZvcm1hdCk7CisJ CQkJCQkgICByZXN1bHRGb3JtYXQsCisJCQkJCQkgICBOVUxMKTsKIH0KIAogLyoKQEAgLTE1 ODgsNiArMTc5NSwxOSBAQCBQUXNlbmRRdWVyeVByZXBhcmVkKFBHY29ubiAqY29ubiwKIAkJ CQkJY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJCQkJCWNvbnN0IGludCAqcGFyYW1Gb3Jt YXRzLAogCQkJCQlpbnQgcmVzdWx0Rm9ybWF0KQoreworCXJldHVybiBQUXNlbmRRdWVyeVBy ZXBhcmVkMihjb25uLCBzdG10TmFtZSwgblBhcmFtcywgcGFyYW1WYWx1ZXMsIHBhcmFtTGVu Z3RocywgcGFyYW1Gb3JtYXRzLCByZXN1bHRGb3JtYXQsIE5VTEwpOworfQorCitpbnQKK1BR c2VuZFF1ZXJ5UHJlcGFyZWQyKFBHY29ubiAqY29ubiwKKwkJCQkJIGNvbnN0IGNoYXIgKnN0 bXROYW1lLAorCQkJCQkgaW50IG5QYXJhbXMsCisJCQkJCSBjb25zdCBjaGFyICpjb25zdCAq cGFyYW1WYWx1ZXMsCisJCQkJCSBjb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKKwkJCQkJIGNv bnN0IGludCAqcGFyYW1Gb3JtYXRzLAorCQkJCQkgaW50IHJlc3VsdEZvcm1hdCwKKwkJCQkJ IFBHcmVzdWx0ICpwYXJhbURlc2MpCiB7CiAJaWYgKCFQUXNlbmRRdWVyeVN0YXJ0KGNvbm4s IHRydWUpKQogCQlyZXR1cm4gMDsKQEAgLTE2MTUsNyArMTgzNSw4IEBAIFBRc2VuZFF1ZXJ5 UHJlcGFyZWQoUEdjb25uICpjb25uLAogCQkJCQkJICAgcGFyYW1WYWx1ZXMsCiAJCQkJCQkg ICBwYXJhbUxlbmd0aHMsCiAJCQkJCQkgICBwYXJhbUZvcm1hdHMsCi0JCQkJCQkgICByZXN1 bHRGb3JtYXQpOworCQkJCQkJICAgcmVzdWx0Rm9ybWF0LAorCQkJCQkJICAgcGFyYW1EZXNj KTsKIH0KIAogLyoKQEAgLTE3MTIsNyArMTkzMyw4IEBAIFBRc2VuZFF1ZXJ5R3V0cyhQR2Nv bm4gKmNvbm4sCiAJCQkJY29uc3QgY2hhciAqY29uc3QgKnBhcmFtVmFsdWVzLAogCQkJCWNv bnN0IGludCAqcGFyYW1MZW5ndGhzLAogCQkJCWNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAot CQkJCWludCByZXN1bHRGb3JtYXQpCisJCQkJaW50IHJlc3VsdEZvcm1hdCwKKwkJCQlQR3Jl c3VsdCAqcGFyYW1EZXNjKQogewogCWludAkJCWk7CiAJUEdjbWRRdWV1ZUVudHJ5ICplbnRy eTsKQEAgLTE3NjAsMTMgKzE5ODIsMjQgQEAgUFFzZW5kUXVlcnlHdXRzKFBHY29ubiAqY29u biwKIAkJZ290byBzZW5kRmFpbGVkOwogCiAJLyogU2VuZCBwYXJhbWV0ZXIgZm9ybWF0cyAq LwotCWlmIChuUGFyYW1zID4gMCAmJiBwYXJhbUZvcm1hdHMpCisJaWYgKG5QYXJhbXMgPiAw ICYmIChwYXJhbUZvcm1hdHMgfHwgKHBhcmFtRGVzYyAmJiBwYXJhbURlc2MtPnBhcmFtRGVz Y3MpKSkKIAl7CiAJCWlmIChwcVB1dEludChuUGFyYW1zLCAyLCBjb25uKSA8IDApCiAJCQln b3RvIHNlbmRGYWlsZWQ7CisKIAkJZm9yIChpID0gMDsgaSA8IG5QYXJhbXM7IGkrKykKIAkJ ewotCQkJaWYgKHBxUHV0SW50KHBhcmFtRm9ybWF0c1tpXSwgMiwgY29ubikgPCAwKQorCQkJ aW50IGZvcm1hdCA9IHBhcmFtRm9ybWF0cyA/IHBhcmFtRm9ybWF0c1tpXSA6IDA7CisKKwkJ CWlmIChwYXJhbURlc2MgJiYgcGFyYW1EZXNjLT5wYXJhbURlc2NzKQorCQkJeworCQkJCVBH cmVzUGFyYW1EZXNjICpwZCA9ICZwYXJhbURlc2MtPnBhcmFtRGVzY3NbaV07CisKKwkJCQlp ZiAocGQtPmZvcm1hdCAmIDB4MTApCisJCQkJCWZvcm1hdCB8PSAweDEwOworCQkJfQorCisJ CQlpZiAocHFQdXRJbnQoZm9ybWF0LCAyLCBjb25uKSA8IDApCiAJCQkJZ290byBzZW5kRmFp bGVkOwogCQl9CiAJfQpAQCAtMTc4NSw2ICsyMDE4LDcgQEAgUFFzZW5kUXVlcnlHdXRzKFBH Y29ubiAqY29ubiwKIAkJaWYgKHBhcmFtVmFsdWVzICYmIHBhcmFtVmFsdWVzW2ldKQogCQl7 CiAJCQlpbnQJCQluYnl0ZXM7CisJCQljb25zdCBjaGFyICpwYXJhbVZhbHVlOwogCiAJCQlp ZiAocGFyYW1Gb3JtYXRzICYmIHBhcmFtRm9ybWF0c1tpXSAhPSAwKQogCQkJewpAQCAtMTgw Myw4ICsyMDM3LDkzIEBAIFBRc2VuZFF1ZXJ5R3V0cyhQR2Nvbm4gKmNvbm4sCiAJCQkJLyog dGV4dCBwYXJhbWV0ZXIsIGRvIG5vdCB1c2UgcGFyYW1MZW5ndGhzICovCiAJCQkJbmJ5dGVz ID0gc3RybGVuKHBhcmFtVmFsdWVzW2ldKTsKIAkJCX0KKworCQkJcGFyYW1WYWx1ZSA9IHBh cmFtVmFsdWVzW2ldOworCisJCQlpZiAocGFyYW1EZXNjICYmIHBhcmFtRGVzYy0+cGFyYW1E ZXNjcyAmJiBwYXJhbURlc2MtPnBhcmFtRGVzY3NbaV0uZm9ybWF0ICYgMHgxMCkKKwkJCXsK KwkJCQlib29sIGVuY19kZXQgPSAocGFyYW1EZXNjLT5wYXJhbURlc2NzW2ldLmZvcm1hdCAm IDB4MjApICE9IDA7CisJCQkJdW5zaWduZWQgY2hhciAqdjsKKwkJCQl1bnNpZ25lZCBjaGFy ICppdjsKKwkJCQlzaXplX3QgaXZsZW47CisJCQkJRVZQX0NJUEhFUl9DVFggKmV2cF9jdHg7 CisJCQkJY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyOworCQkJCXVuc2lnbmVkIGNoYXIgKmVu Y3I7CisJCQkJaW50IGVuY3JsZW4sIGVuY3JsZW4yOworCQkJCXVuc2lnbmVkIGNoYXIgKmVz YzsKKwkJCQlzaXplX3QgZXNjbGVuOworCisJCQkJdiA9IHVuY29uc3RpZnkodW5zaWduZWQg Y2hhciAqLCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBwYXJhbVZhbHVlKTsKKworCQkJCWNp cGhlciA9IEVWUF9nZXRfY2lwaGVyYnluYW1lKCJBRVMtMTI4LUNCQyIpOworCQkJCWlmICgh Y2lwaGVyKQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVz c2FnZSwKKwkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiRVZQX2dldF9jaXBoZXJieW5hbWUo KSBmYWlsZWRcbiIpKTsKKwkJCQkJZ290byBzZW5kRmFpbGVkOworCQkJCX0KKworCQkJCWV2 cF9jdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKworCQkJCWlmICghRVZQX0VuY3J5cHRJ bml0X2V4KGV2cF9jdHgsIGNpcGhlciwgTlVMTCwgTlVMTCwgTlVMTCkpCisJCQkJeworCQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJICBs aWJwcV9nZXR0ZXh0KCJFVlBfRW5jcnlwdEluaXRfZXgoKSBmYWlsZWQ6ICVzXG4iKSwKKwkJ CQkJCQkJCSAgRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJ CQkJCWdvdG8gc2VuZEZhaWxlZDsKKwkJCQl9CisKKwkJCQlpZiAoY29ubi0+Y2VrZGF0YWxl biAhPSBFVlBfQ0lQSEVSX0NUWF9rZXlfbGVuZ3RoKGV2cF9jdHgpKQorCQkJCXsKKwkJCQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJCSAgbGli cHFfZ2V0dGV4dCgiY29sdW1uIGVuY3J5cHRpb24ga2V5IGhhcyB3cm9uZyBrZXkgbGVuZ3Ro IGZvciBjaXBoZXIgKGhhczogJXp1LCByZXF1aXJlZDogJWQpIiksCisJCQkJCQkJCQkgIGNv bm4tPmNla2RhdGFsZW4sIEVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGgoZXZwX2N0eCkpOwor CQkJCQlnb3RvIHNlbmRGYWlsZWQ7CisJCQkJfQorCisJCQkJaXZsZW4gPSBFVlBfQ0lQSEVS X0NUWF9pdl9sZW5ndGgoZXZwX2N0eCk7CisJCQkJaXYgPSBtYWxsb2MoaXZsZW4pOworCQkJ CWlmIChlbmNfZGV0KQorCQkJCQltZW1zZXQoaXYsIGl2bGVuLCAwKTsKKwkJCQllbHNlCisJ CQkJCXBnX3N0cm9uZ19yYW5kb20oaXYsIGl2bGVuKTsKKwkJCQlpZiAoIUVWUF9FbmNyeXB0 SW5pdF9leChldnBfY3R4LCBOVUxMLCBOVUxMLCBjb25uLT5jZWtkYXRhLCBpdikpCisJCQkJ eworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJFVlBfRW5jcnlwdEluaXRfZXgoKSBmYWlsZWQ6ICVzXG4i KSwKKwkJCQkJCQkJCSAgRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigp KSk7CisJCQkJCWdvdG8gc2VuZEZhaWxlZDsKKwkJCQl9CisKKwkJCQllbmNyID0gbWFsbG9j KGl2bGVuICsgbmJ5dGVzICsgRVZQX0NJUEhFUl9DVFhfYmxvY2tfc2l6ZShldnBfY3R4KSAr IDEpOworCQkJCW1lbWNweShlbmNyLCBpdiwgaXZsZW4pOworCQkJCWVuY3IgKz0gaXZsZW47 CisJCQkJaWYgKCFFVlBfRW5jcnlwdFVwZGF0ZShldnBfY3R4LCBlbmNyLCAmZW5jcmxlbiwg diwgbmJ5dGVzKSkKKwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCisJCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoIkVWUF9FbmNyeXB0VXBkYXRl KCkgZmFpbGVkOiAlc1xuIiksCisJCQkJCQkJCQkJCQkJRVJSX3JlYXNvbl9lcnJvcl9zdHJp bmcoRVJSX2dldF9lcnJvcigpKSk7CisJCQkJCWdvdG8gc2VuZEZhaWxlZDsKKwkJCQl9CisJ CQkJaWYgKCFFVlBfRW5jcnlwdEZpbmFsX2V4KGV2cF9jdHgsIGVuY3IgKyBlbmNybGVuLCAm ZW5jcmxlbjIpKQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKKwkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiRVZQX0VuY3J5cHRGaW5hbF9l eCgpIGZhaWxlZDogJXNcbiIpLAorCQkJCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmlu ZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJCQkJZ290byBzZW5kRmFpbGVkOworCQkJCX0KKwkJ CQllbmNybGVuICs9IGVuY3JsZW4yOworCisJCQkJRVZQX0NJUEhFUl9DVFhfZnJlZShldnBf Y3R4KTsKKwkJCQlmcmVlKGl2KTsKKworCQkJCWVzYyA9IFBRZXNjYXBlQnl0ZWFDb25uKGNv bm4sIGVuY3IgLSBpdmxlbiwgZW5jcmxlbiArIGl2bGVuLCAmZXNjbGVuKTsKKwkJCQluYnl0 ZXMgPSBlc2NsZW4gLSAxOworCQkJCXBhcmFtVmFsdWUgPSAoY2hhciAqKSBlc2M7CisJCQl9 CisKIAkJCWlmIChwcVB1dEludChuYnl0ZXMsIDQsIGNvbm4pIDwgMCB8fAotCQkJCXBxUHV0 bmNoYXIocGFyYW1WYWx1ZXNbaV0sIG5ieXRlcywgY29ubikgPCAwKQorCQkJCXBxUHV0bmNo YXIocGFyYW1WYWx1ZSwgbmJ5dGVzLCBjb25uKSA8IDApCiAJCQkJZ290byBzZW5kRmFpbGVk OwogCQl9CiAJCWVsc2UKQEAgLTIyNTgsMTIgKzI1NzcsMjUgQEAgUFFleGVjUHJlcGFyZWQo UEdjb25uICpjb25uLAogCQkJICAgY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJCQkgICBj b25zdCBpbnQgKnBhcmFtRm9ybWF0cywKIAkJCSAgIGludCByZXN1bHRGb3JtYXQpCit7CisJ cmV0dXJuIFBRZXhlY1ByZXBhcmVkMihjb25uLCBzdG10TmFtZSwgblBhcmFtcywgcGFyYW1W YWx1ZXMsIHBhcmFtTGVuZ3RocywgcGFyYW1Gb3JtYXRzLCByZXN1bHRGb3JtYXQsIE5VTEwp OworfQorCitQR3Jlc3VsdCAqCitQUWV4ZWNQcmVwYXJlZDIoUEdjb25uICpjb25uLAorCQkJ CWNvbnN0IGNoYXIgKnN0bXROYW1lLAorCQkJCWludCBuUGFyYW1zLAorCQkJCWNvbnN0IGNo YXIgKmNvbnN0ICpwYXJhbVZhbHVlcywKKwkJCQljb25zdCBpbnQgKnBhcmFtTGVuZ3RocywK KwkJCQljb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQlpbnQgcmVzdWx0Rm9ybWF0LAor CQkJCVBHcmVzdWx0ICpwYXJhbURlc2MpCiB7CiAJaWYgKCFQUWV4ZWNTdGFydChjb25uKSkK IAkJcmV0dXJuIE5VTEw7Ci0JaWYgKCFQUXNlbmRRdWVyeVByZXBhcmVkKGNvbm4sIHN0bXRO YW1lLAorCWlmICghUFFzZW5kUXVlcnlQcmVwYXJlZDIoY29ubiwgc3RtdE5hbWUsCiAJCQkJ CQkJIG5QYXJhbXMsIHBhcmFtVmFsdWVzLCBwYXJhbUxlbmd0aHMsCi0JCQkJCQkJIHBhcmFt Rm9ybWF0cywgcmVzdWx0Rm9ybWF0KSkKKwkJCQkJCQkgcGFyYW1Gb3JtYXRzLCByZXN1bHRG b3JtYXQsIHBhcmFtRGVzYykpCiAJCXJldHVybiBOVUxMOwogCXJldHVybiBQUWV4ZWNGaW5p c2goY29ubik7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90 b2NvbDMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCmluZGV4IDlh YjNiZjFmY2IuLmM0MDU1MGNkZjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLXByb3RvY29sMy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29s My5jCkBAIC00NSw2ICs0NSw4IEBAIHN0YXRpYyBpbnQJZ2V0Um93RGVzY3JpcHRpb25zKFBH Y29ubiAqY29ubiwgaW50IG1zZ0xlbmd0aCk7CiBzdGF0aWMgaW50CWdldFBhcmFtRGVzY3Jp cHRpb25zKFBHY29ubiAqY29ubiwgaW50IG1zZ0xlbmd0aCk7CiBzdGF0aWMgaW50CWdldEFu b3RoZXJUdXBsZShQR2Nvbm4gKmNvbm4sIGludCBtc2dMZW5ndGgpOwogc3RhdGljIGludAln ZXRQYXJhbWV0ZXJTdGF0dXMoUEdjb25uICpjb25uKTsKK3N0YXRpYyBpbnQJZ2V0Q29sdW1u TWFzdGVyS2V5KFBHY29ubiAqY29ubik7CitzdGF0aWMgaW50CWdldENvbHVtbkVuY3J5cHRp b25LZXkoUEdjb25uICpjb25uKTsKIHN0YXRpYyBpbnQJZ2V0Tm90aWZ5KFBHY29ubiAqY29u bik7CiBzdGF0aWMgaW50CWdldENvcHlTdGFydChQR2Nvbm4gKmNvbm4sIEV4ZWNTdGF0dXNU eXBlIGNvcHl0eXBlKTsKIHN0YXRpYyBpbnQJZ2V0UmVhZHlGb3JRdWVyeShQR2Nvbm4gKmNv bm4pOwpAQCAtMzE1LDYgKzMxNywxNCBAQCBwcVBhcnNlSW5wdXQzKFBHY29ubiAqY29ubikK IAkJCQkJaWYgKHBxR2V0SW50KCYoY29ubi0+YmVfa2V5KSwgNCwgY29ubikpCiAJCQkJCQly ZXR1cm47CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgJ3knOgkJLyogQ29sdW1uIE1hc3RlciBL ZXkgKi8KKwkJCQkJaWYgKGdldENvbHVtbk1hc3RlcktleShjb25uKSkKKwkJCQkJCXJldHVy bjsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnWSc6CQkvKiBDb2x1bW4gRW5jcnlwdGlvbiBL ZXkgKi8KKwkJCQkJaWYgKGdldENvbHVtbkVuY3J5cHRpb25LZXkoY29ubikpCisJCQkJCQly ZXR1cm47CisJCQkJCWJyZWFrOwogCQkJCWNhc2UgJ1QnOgkJLyogUm93IERlc2NyaXB0aW9u ICovCiAJCQkJCWlmIChjb25uLT5yZXN1bHQgIT0gTlVMTCAmJgogCQkJCQkJY29ubi0+cmVz dWx0LT5yZXN1bHRTdGF0dXMgPT0gUEdSRVNfRkFUQUxfRVJST1IpCkBAIC02MDYsNyArNjE2 LDcgQEAgZ2V0Um93RGVzY3JpcHRpb25zKFBHY29ubiAqY29ubiwgaW50IG1zZ0xlbmd0aCkK IAkJcmVzdWx0LT5hdHREZXNjc1tpXS50eXBsZW4gPSB0eXBsZW47CiAJCXJlc3VsdC0+YXR0 RGVzY3NbaV0uYXR0dHlwbW9kID0gYXR0dHlwbW9kOwogCi0JCWlmIChmb3JtYXQgIT0gMSkK KwkJaWYgKChmb3JtYXQgJiAweDBGKSAhPSAxKQogCQkJcmVzdWx0LT5iaW5hcnkgPSAwOwog CX0KIApAQCAtNzEzLDYgKzcyMywxNCBAQCBnZXRQYXJhbURlc2NyaXB0aW9ucyhQR2Nvbm4g KmNvbm4sIGludCBtc2dMZW5ndGgpCiAJCQlnb3RvIG5vdF9lbm91Z2hfZGF0YTsKIAkJcmVz dWx0LT5wYXJhbURlc2NzW2ldLnR5cGlkID0gdHlwaWQ7CiAJfQorCWZvciAoaSA9IDA7IGkg PCBucGFyYW1zOyBpKyspCisJeworCQlpbnQJCQlmb3JtYXQ7CisKKwkJaWYgKHBxR2V0SW50 KCZmb3JtYXQsIDIsIGNvbm4pKQorCQkJZ290byBub3RfZW5vdWdoX2RhdGE7CisJCXJlc3Vs dC0+cGFyYW1EZXNjc1tpXS5mb3JtYXQgPSBmb3JtYXQ7CisJfQogCiAJLyogU3VjY2VzcyEg Ki8KIAljb25uLT5yZXN1bHQgPSByZXN1bHQ7CkBAIC0xNDI5LDYgKzE0NDcsNjkgQEAgZ2V0 UGFyYW1ldGVyU3RhdHVzKFBHY29ubiAqY29ubikKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGlj IGludAorZ2V0Q29sdW1uTWFzdGVyS2V5KFBHY29ubiAqY29ubikKK3sKKwljaGFyICprZXlu YW1lOworCWNoYXIgKmtleXByb3Y7CisJaW50IG5vcHRpb25zOworCWNoYXIgKm9wdG5hbWUg PSBOVUxMOworCWNoYXIgKm9wdHZhbCA9IE5VTEw7CisKKwkvKiBHZXQgdGhlIGtleSBuYW1l ICovCisJaWYgKHBxR2V0cygmY29ubi0+d29ya0J1ZmZlciwgY29ubikgIT0gMCkKKwkJcmV0 dXJuIEVPRjsKKwlrZXluYW1lID0gc3RyZHVwKGNvbm4tPndvcmtCdWZmZXIuZGF0YSk7CisJ LyogR2V0IHRoZSBrZXkgcHJvdmlkZXIgKi8KKwlpZiAocHFHZXRzKCZjb25uLT53b3JrQnVm ZmVyLCBjb25uKSAhPSAwKQorCQlyZXR1cm4gRU9GOworCWtleXByb3YgPSBzdHJkdXAoY29u bi0+d29ya0J1ZmZlci5kYXRhKTsKKwkvKiBHZXQgdGhlIG9wdGlvbnMgKi8KKwlpZiAocHFH ZXRJbnQoJm5vcHRpb25zLCAyLCBjb25uKSAhPSAwKQorCQlyZXR1cm4gRU9GOworCWZvciAo aW50IGkgPSAwOyBpIDwgbm9wdGlvbnM7IGkrKykKKwl7CisJCWlmIChwcUdldHMoJmNvbm4t PndvcmtCdWZmZXIsIGNvbm4pICE9IDApCisJCQlyZXR1cm4gRU9GOworCQlvcHRuYW1lID0g c3RyZHVwKGNvbm4tPndvcmtCdWZmZXIuZGF0YSk7CisJCWlmIChwcUdldHMoJmNvbm4tPndv cmtCdWZmZXIsIGNvbm4pICE9IDApCisJCQlyZXR1cm4gRU9GOworCQlvcHR2YWwgPSBzdHJk dXAoY29ubi0+d29ya0J1ZmZlci5kYXRhKTsKKwl9CisJLyogQW5kIHNhdmUgaXQgKi8KKwlw cVNhdmVDb2x1bW5NYXN0ZXJLZXkoY29ubiwga2V5bmFtZSwga2V5cHJvdiwgb3B0bmFtZSwg b3B0dmFsKTsKKworCWZyZWUoa2V5bmFtZSk7CisJZnJlZShrZXlwcm92KTsKKwlmcmVlKG9w dG5hbWUpOworCWZyZWUob3B0dmFsKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAor Z2V0Q29sdW1uRW5jcnlwdGlvbktleShQR2Nvbm4gKmNvbm4pCit7CisJY2hhciAqYnVmOwor CWludCB2YWxsZW47CisKKwkvKiBHZXQgdGhlIGtleSBuYW1lICovCisJaWYgKHBxR2V0cygm Y29ubi0+d29ya0J1ZmZlciwgY29ubikgIT0gMCkKKwkJcmV0dXJuIEVPRjsKKwkvKiBHZXQg dGhlIGtleSBkYXRhIGxlbiAqLworCWlmIChwcUdldEludCgmdmFsbGVuLCA0LCBjb25uKSAh PSAwKQorCQlyZXR1cm4gRU9GOworCS8qIEdldCB0aGUga2V5IGRhdGEgKi8KKwlidWYgPSBt YWxsb2ModmFsbGVuKTsKKwlpZiAocHFHZXRuY2hhcihidWYsIHZhbGxlbiwgY29ubikgIT0g MCkKKwl7CisJCWZyZWUoYnVmKTsKKwkJcmV0dXJuIEVPRjsKKwl9CisJLyogQW5kIHNhdmUg aXQgKi8KKwlwcVNhdmVDb2x1bW5FbmNyeXB0aW9uS2V5KGNvbm4sIGNvbm4tPndvcmtCdWZm ZXIuZGF0YSwgKHVuc2lnbmVkIGNoYXIgKikgYnVmLCB2YWxsZW4pOworCWZyZWUoYnVmKTsK KwlyZXR1cm4gMDsKK30KIAogLyoKICAqIEF0dGVtcHQgdG8gcmVhZCBhIE5vdGlmeSByZXNw b25zZSBtZXNzYWdlLgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtdHJh Y2UuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXRyYWNlLmMKaW5kZXggODY2MGQyNzky Ni4uZTk5YTVkMTVhZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtdHJh Y2UuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS10cmFjZS5jCkBAIC00NTksNiAr NDU5LDggQEAgcHFUcmFjZU91dHB1dHQoRklMRSAqZiwgY29uc3QgY2hhciAqbWVzc2FnZSwg aW50ICpjdXJzb3IsIGJvb2wgcmVncmVzcykKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgbmZp ZWxkczsgaSsrKQogCQlwcVRyYWNlT3V0cHV0SW50MzIoZiwgbWVzc2FnZSwgY3Vyc29yLCBy ZWdyZXNzKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5maWVsZHM7IGkrKykKKwkJcHFUcmFj ZU91dHB1dEludDE2KGYsIG1lc3NhZ2UsIGN1cnNvcik7CiB9CiAKIC8qIFJvd0Rlc2NyaXB0 aW9uICovCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaAppbmRleCBhNmZkNjlhY2ViLi5hNmM4 ZWM5NzRhIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCisr KyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKQEAgLTQzNiw2ICs0MzYsMTQg QEAgZXh0ZXJuIFBHcmVzdWx0ICpQUWV4ZWNQcmVwYXJlZChQR2Nvbm4gKmNvbm4sCiAJCQkJ CQkJCWNvbnN0IGludCAqcGFyYW1MZW5ndGhzLAogCQkJCQkJCQljb25zdCBpbnQgKnBhcmFt Rm9ybWF0cywKIAkJCQkJCQkJaW50IHJlc3VsdEZvcm1hdCk7CitleHRlcm4gUEdyZXN1bHQg KlBRZXhlY1ByZXBhcmVkMihQR2Nvbm4gKmNvbm4sCisJCQkJCQkJCSBjb25zdCBjaGFyICpz dG10TmFtZSwKKwkJCQkJCQkJIGludCBuUGFyYW1zLAorCQkJCQkJCQkgY29uc3QgY2hhciAq Y29uc3QgKnBhcmFtVmFsdWVzLAorCQkJCQkJCQkgY29uc3QgaW50ICpwYXJhbUxlbmd0aHMs CisJCQkJCQkJCSBjb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQkJCQkJIGludCByZXN1 bHRGb3JtYXQsCisJCQkJCQkJCSBQR3Jlc3VsdCAqcGFyYW1EZXNjKTsKIAogLyogSW50ZXJm YWNlIGZvciBtdWx0aXBsZS1yZXN1bHQgb3IgYXN5bmNocm9ub3VzIHF1ZXJpZXMgKi8KICNk ZWZpbmUgUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlUIDY1NTM1CkBAIC00NTksNiArNDY3LDE0 IEBAIGV4dGVybiBpbnQJUFFzZW5kUXVlcnlQcmVwYXJlZChQR2Nvbm4gKmNvbm4sCiAJCQkJ CQkJCWNvbnN0IGludCAqcGFyYW1MZW5ndGhzLAogCQkJCQkJCQljb25zdCBpbnQgKnBhcmFt Rm9ybWF0cywKIAkJCQkJCQkJaW50IHJlc3VsdEZvcm1hdCk7CitleHRlcm4gaW50CVBRc2Vu ZFF1ZXJ5UHJlcGFyZWQyKFBHY29ubiAqY29ubiwKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKnN0 bXROYW1lLAorCQkJCQkJCQkgaW50IG5QYXJhbXMsCisJCQkJCQkJCSBjb25zdCBjaGFyICpj b25zdCAqcGFyYW1WYWx1ZXMsCisJCQkJCQkJCSBjb25zdCBpbnQgKnBhcmFtTGVuZ3RocywK KwkJCQkJCQkJIGNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAorCQkJCQkJCQkgaW50IHJlc3Vs dEZvcm1hdCwKKwkJCQkJCQkJIFBHcmVzdWx0ICpwYXJhbURlc2MpOwogZXh0ZXJuIGludAlQ UXNldFNpbmdsZVJvd01vZGUoUEdjb25uICpjb25uKTsKIGV4dGVybiBQR3Jlc3VsdCAqUFFn ZXRSZXN1bHQoUEdjb25uICpjb25uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv bGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaApp bmRleCA0OTA0NThhZGVmLi5hYTBmMmVlYzJjIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1p bnQuaApAQCAtMTExLDYgKzExMSw3IEBAIHVuaW9uIHBncmVzdWx0X2RhdGEKIHR5cGVkZWYg c3RydWN0IHBncmVzUGFyYW1EZXNjCiB7CiAJT2lkCQkJdHlwaWQ7CQkJLyogdHlwZSBpZCAq LworCWludAkJCWZvcm1hdDsJCQkvKiBlbmNyeXB0ZWQgcGFyYW1ldGVyPyAqLwogfSBQR3Jl c1BhcmFtRGVzYzsKIAogLyoKQEAgLTQ3NSw2ICs0NzYsMTQgQEAgc3RydWN0IHBnX2Nvbm4K IAlQR0NvbnRleHRWaXNpYmlsaXR5IHNob3dfY29udGV4dDsJLyogd2hldGhlciB0byBzaG93 IENPTlRFWFQgZmllbGQgKi8KIAlQR2xvYmpmdW5jcyAqbG9iamZ1bmNzOwkJLyogcHJpdmF0 ZSBzdGF0ZSBmb3IgbGFyZ2Utb2JqZWN0IGFjY2VzcyBmbnMgKi8KIAorCS8qIEVuY3J5cHRp b24gc3R1ZmYgKi8KKwljaGFyCSAgICpjbWtuYW1lOworCWNoYXIJICAgKmNta3Byb3ZpZGVy OworCWNoYXIJICAgKmNta29wdG5hbWUxOwkvKiBYWFggb25seSBvbmUgb3B0aW9uIHJpZ2h0 IG5vdyAqLworCWNoYXIJICAgKmNta29wdHZhbDE7CisJdW5zaWduZWQgY2hhciAqY2VrZGF0 YTsJCS8qIGNvbHVtbiBlbmNyeXB0aW9uIGtleSAoZGVjcnlwdGVkKSAqLworCXNpemVfdAkJ Y2VrZGF0YWxlbjsKKwogCS8qIEJ1ZmZlciBmb3IgZGF0YSByZWNlaXZlZCBmcm9tIGJhY2tl bmQgYW5kIG5vdCB5ZXQgcHJvY2Vzc2VkICovCiAJY2hhcgkgICAqaW5CdWZmZXI7CQkvKiBj dXJyZW50bHkgYWxsb2NhdGVkIGJ1ZmZlciAqLwogCWludAkJCWluQnVmU2l6ZTsJCS8qIGFs bG9jYXRlZCBzaXplIG9mIGJ1ZmZlciAqLwpAQCAtNjQ4LDYgKzY1NywxMCBAQCBleHRlcm4g dm9pZCBwcVNhdmVNZXNzYWdlRmllbGQoUEdyZXN1bHQgKnJlcywgY2hhciBjb2RlLAogCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKnZhbHVlKTsKIGV4dGVybiB2b2lkIHBxU2F2ZVBhcmFtZXRl clN0YXR1cyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJCQkJCSAgY29u c3QgY2hhciAqdmFsdWUpOworZXh0ZXJuIHZvaWQgcHFTYXZlQ29sdW1uTWFzdGVyS2V5KFBH Y29ubiAqY29ubiwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcHJvdmlkZXIsCisJ CQkJCQkJCSAgY29uc3QgY2hhciAqb3B0bmFtZTEsIGNvbnN0IGNoYXIgKm9wdHZhbDEpOwor ZXh0ZXJuIHZvaWQgcHFTYXZlQ29sdW1uRW5jcnlwdGlvbktleShQR2Nvbm4gKmNvbm4sIGNv bnN0IGNoYXIgKm5hbWUsCisJCQkJCQkJCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnZhbHVl LCBpbnQgbGVuKTsKIGV4dGVybiBpbnQJcHFSb3dQcm9jZXNzb3IoUEdjb25uICpjb25uLCBj b25zdCBjaGFyICoqZXJybXNncCk7CiBleHRlcm4gdm9pZCBwcUNvbW1hbmRRdWV1ZUFkdmFu Y2UoUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFzZW5kUXVlcnlDb250aW51ZShQR2Nv bm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L01h a2VmaWxlIGIvc3JjL3Rlc3QvTWFrZWZpbGUKaW5kZXggNDYyNzU5MTVmZi4uZTJjODE5YjA0 NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvTWFrZWZp bGUKQEAgLTI4LDYgKzI4LDcgQEAgU1VCRElSUyArPSBsZGFwCiBlbmRpZgogZW5kaWYKIGlm ZXEgKCQod2l0aF9zc2wpLG9wZW5zc2wpCitTVUJESVJTICs9IGNvbHVtbl9lbmNyeXB0aW9u CiBpZm5lcSAoLCQoZmlsdGVyIHNzbCwkKFBHX1RFU1RfRVhUUkEpKSkKIFNVQkRJUlMgKz0g c3NsCiBlbmRpZgpAQCAtMzcsNyArMzgsNyBAQCBlbmRpZgogIyBjbGVhbiIgZXRjIHRvIHJl Y3Vyc2UgaW50byB0aGVtLiAgKFdlIG11c3QgZmlsdGVyIG91dCB0aG9zZSB0aGF0IHdlCiAj IGhhdmUgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBpbnRvIFNVQkRJUlMgYWJvdmUsIGVsc2Ug dGhlcmUgd2lsbCBiZQogIyBtYWtlIGNvbmZ1c2lvbi4pCi1BTFdBWVNfU1VCRElSUyA9ICQo ZmlsdGVyLW91dCAkKFNVQkRJUlMpLGV4YW1wbGVzIGtlcmJlcm9zIGxkYXAgc3NsKQorQUxX QVlTX1NVQkRJUlMgPSAkKGZpbHRlci1vdXQgJChTVUJESVJTKSxleGFtcGxlcyBrZXJiZXJv cyBsZGFwIHNzbCBjb2x1bW5fZW5jcnlwdGlvbikKIAogIyBXZSB3YW50IHRvIHJlY3Vyc2Ug dG8gYWxsIHN1YmRpcnMgZm9yIGFsbCBzdGFuZGFyZCB0YXJnZXRzLCBleGNlcHQgdGhhdAog IyBpbnN0YWxsY2hlY2sgYW5kIGluc3RhbGwgc2hvdWxkIG5vdCByZWN1cnNlIGludG8gdGhl IHN1YmRpcmVjdG9yeSAibW9kdWxlcyIuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9jb2x1bW5f ZW5jcnlwdGlvbi8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vLmdp dGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40NTZkYmY2 OWQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vLmdp dGlnbm9yZQpAQCAtMCwwICsxLDMgQEAKKy90ZXN0X2NsaWVudAorIyBHZW5lcmF0ZWQgYnkg dGVzdCBzdWl0ZQorL3RtcF9jaGVjay8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2NvbHVtbl9l bmNyeXB0aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vTWFrZWZp bGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWI5YTVjNzJiZQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL01ha2VmaWxl CkBAIC0wLDAgKzEsMjAgQEAKK3N1YmRpciA9IHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9u Cit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3Jj L01ha2VmaWxlLmdsb2JhbAorCitvdmVycmlkZSBDUFBGTEFHUyArPSAtSSQobGlicHFfc3Jj ZGlyKQorTERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRp bHMgLWxwZ2ZldXRpbHMgJChsaWJwcV9wZ3BvcnQpCisKK2FsbDogdGVzdF9jbGllbnQKKwor RVhUUkFfSU5TVEFMTCA9IGNvbnRyaWIvcGdjcnlwdG8KKworY2hlY2s6IGFsbAorCSQocHJv dmVfY2hlY2spCisKK2luc3RhbGxjaGVjazoKKwkkKHByb3ZlX2luc3RhbGxjaGVjaykKKwor Y2xlYW4gZGlzdGNsZWFuIG1haW50YWluZXItY2xlYW46CisJcm0gLWYgdGVzdF9jbGllbnQu byB0ZXN0X2NsaWVudAorCXJtIC1yZiB0bXBfY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2NvbHVtbl9lbmNyeXB0aW9uL3QvMDAxX2NvbHVtbl9lbmNyeXB0aW9uLnBsIGIvc3JjL3Rl c3QvY29sdW1uX2VuY3J5cHRpb24vdC8wMDFfY29sdW1uX2VuY3J5cHRpb24ucGwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjRlYjczMjNiNQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL3QvMDAxX2NvbHVtbl9lbmNy eXB0aW9uLnBsCkBAIC0wLDAgKzEsMTM1IEBACit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAxMzsKKworbXkgJG5vZGUgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUnKTsKKyRub2RlLT5pbml0Owor JG5vZGUtPnN0YXJ0OworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxe0NSRUFU RSBFWFRFTlNJT04gcGdjcnlwdG99KTsKKworbXkgJGNta2ZpbGVuYW1lID0gIiR7UG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja30vY21rMS5wZW0iOworCisjIGdlbmVyYXRl IENNSworc3lzdGVtX29yX2JhaWwgJ29wZW5zc2wnLCAnZ2VucnNhJywgJy1vdXQnLCAkY21r ZmlsZW5hbWU7CisKKyMgZ2VuZXJhdGUgMTYgcmFuZG9tIGJ5dGVzIGZvciAxMjgtYml0IGtl eQorc3lzdGVtX29yX2JhaWwgJ29wZW5zc2wnLCAncmFuZCcsICctb3V0JywgIiR7UG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja30vY2VrMS5iaW4iLCAxNjsKKworIyBlbmNy eXB0IENFSyB1c2luZyBDTUsKK3N5c3RlbV9vcl9iYWlsICdvcGVuc3NsJywgJ3JzYXV0bCcs ICctZW5jcnlwdCcsICctb2FlcCcsCisgICctaW4nLCAiJHtQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczo6dG1wX2NoZWNrfS9jZWsxLmJpbiIsCisgICctaW5rZXknLCAkY21rZmlsZW5hbWUs CisgICctb3V0JywgIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja30vY2Vr MS5iaW4uZW5jIjsKKworIyBYWFggbWlnaHQgYXMgd2VsbCBjYXB0dXJlIHN0ZG91dCwgbm90 IGdvIHRocm91Z2ggZmlsZQorbXkgJGNla2JpbiA9IHNsdXJwX2ZpbGUgIiR7UG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja30vY2VrMS5iaW4iOworbXkgJGNla2hleCA9IHVu cGFjaygnSConLCAkY2VrYmluKTsKK215ICRjZWtlbmNiaW4gPSBzbHVycF9maWxlICIke1Bv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9L2NlazEuYmluLmVuYyI7CitteSAk Y2VrZW5jaGV4ID0gdW5wYWNrKCdIKicsICRjZWtlbmNiaW4pOworCisjIGNyZWF0ZSBDTUsg aW4gZGF0YWJhc2UKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CitJTlNFUlQg SU5UTyBwZ19jb2xtYXN0ZXJrZXkgKG9pZCwgY21rbmFtZSwgY21rcHJvdmlkZXIsIGNta29w dGlvbnMpIFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xtYXN0 ZXJrZXknLCAnb2lkJywgJ3BnX2NhdGFsb2cucGdfY29sbWFzdGVya2V5X29pZF9pbmRleCcp LAorICAgICdjbWsxJywgJ2ZpbGUnLCAneyJmaWxlbmFtZSIsICIkY21rZmlsZW5hbWUifSc6 OnRleHRbXQorKTsKK30pOworCisjIGNyZWF0ZSBDRUsgaW4gZGF0YWJhc2UKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CitJTlNFUlQgSU5UTyBwZ19jb2xlbmNrZXkgKG9p ZCwgY2VrbmFtZSkgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2Nv bGVuY2tleScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlfb2lkX2luZGV4Jyks CisgICAgJ2NlazEnCispOworfSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx eworSU5TRVJUIElOVE8gcGdfY29sZW5ja2V5ZGF0YSAob2lkLCBja2RjZWtpZCwgY2tkY21r aWQsIGNrZGNta2FsZywgY2tkZW5jdmFsKSBWQUxVRVMgKAorICAgIHBnX25leHRvaWQoJ3Bn X2NhdGFsb2cucGdfY29sZW5ja2V5ZGF0YScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xl bmNrZXlkYXRhX29pZF9pbmRleCcpLAorICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfY29sZW5j a2V5IFdIRVJFIGNla25hbWUgPSAnY2VrMScpLAorICAgIChTRUxFQ1Qgb2lkIEZST00gcGdf Y29sbWFzdGVya2V5IFdIRVJFIGNta25hbWUgPSAnY21rMScpLAorICAgICdSU0EtT0FFUCcs CisgICAgJ1xceCR7Y2VrZW5jaGV4fScKKyk7Cit9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcXsKK0NSRUFURSBUQUJMRSB0YmwxICgKKyAgICBhIGludCwKKyAgICBi IHRleHQgRU5DUllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9IGNlazEpCisp OworfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFC TEUgdGJsMiAoCisgICAgYSBpbnQsCisgICAgYiB0ZXh0IEVOQ1JZUFRFRCBXSVRIIChlbmNy eXB0aW9uX3R5cGUgPSBkZXRlcm1pbmlzdGljLCBjb2x1bW5fZW5jcnlwdGlvbl9rZXkgPSBj ZWsxKQorKTsKK30pOworCitteSAkaXZoZXggPSAnMDAnIHggMTY7Ciskbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHFxeworSU5TRVJUIElOVE8gdGJsMSAoYSwgYikgVkFMVUVTICgx LCAoJ1xceCR7aXZoZXh9Jzo6Ynl0ZWEgfHwgZW5jcnlwdF9pdigndmFsMScsICdcXHgke2Nl a2hleH0nLCAnXFx4JHtpdmhleH0nLCAnYWVzJykpOjplbmNyeXB0ZWRyKTsKK0lOU0VSVCBJ TlRPIHRibDEgKGEsIGIpIFZBTFVFUyAoMiwgKCdcXHgke2l2aGV4fSc6OmJ5dGVhIHx8IGVu Y3J5cHRfaXYoJ3ZhbDInLCAnXFx4JHtjZWtoZXh9JywgJ1xceCR7aXZoZXh9JywgJ2Flcycp KTo6ZW5jcnlwdGVkcik7Cit9KTsKKworbXkgJHJlc3VsdDsKKworJHJlc3VsdCA9ICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgYSwgYiBGUk9NIHRibDEgXGdkZXNj fSk7CitpcygkcmVzdWx0LAorCXEoYXxpbnRlZ2VyCitifHRleHQpLAorCSdxdWVyeSByZXN1 bHQgZGVzY3JpcHRpb24gaGFzIG9yaWdpbmFsIHR5cGUnKTsKKworJHJlc3VsdCA9ICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgYSwgYiBGUk9NIHRibDF9KTsKK2lz KCRyZXN1bHQsCisJcSgxfHZhbDEKKzJ8dmFsMiksCisJJ2RlY3J5cHRlZCBxdWVyeSByZXN1 bHQnKTsKKworCiskbm9kZS0+Y29tbWFuZF9mYWlsc19saWtlKFsndGVzdF9jbGllbnQnLCAn dGVzdDEnXSwgcXIvbm90IGVuY3J5cHRlZC8sICd0ZXN0IGNsaWVudCBmYWlscyBiZWNhdXNl IHBhcmFtZXRlcnMgbm90IGVuY3J5cHRlZCcpOworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBhLCBiIEZST00gdGJsMX0pOworaXMoJHJlc3Vs dCwKKwlxKDF8dmFsMQorMnx2YWwyKSwKKwknZGVjcnlwdGVkIHF1ZXJ5IHJlc3VsdCBhZnRl ciB0ZXN0IGNsaWVudCBpbnNlcnQnKTsKKworJG5vZGUtPmNvbW1hbmRfb2soWyd0ZXN0X2Ns aWVudCcsICd0ZXN0MiddLCAndGVzdCBjbGllbnQgdGVzdCAyJyk7CisKKyRyZXN1bHQgPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIGEsIGIgRlJPTSB0YmwxfSk7 CitpcygkcmVzdWx0LAorCXEoMXx2YWwxCisyfHZhbDIKKzN8dmFsMyksCisJJ2RlY3J5cHRl ZCBxdWVyeSByZXN1bHQgYWZ0ZXIgdGVzdCBjbGllbnQgaW5zZXJ0IDInKTsKKworbGlrZSgk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7Q09QWSAoU0VMRUNUICogRlJPTSB0Ymwx IFdIRVJFIGEgPSAzKSBUTyBTVERPVVR9KSwKKwlxci8zXHRcXFxceFswLTlhLXpdezMyfS8s CisJJ2luc2VydGVkIGRhdGEgaXMgZW5jcnlwdGVkJyk7CisKKyRub2RlLT5jb21tYW5kX29r KFsndGVzdF9jbGllbnQnLCAndGVzdDMnXSwgJ3Rlc3QgY2xpZW50IHRlc3QgMycpOworCisk cmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBhLCBiIEZS T00gdGJsMX0pOworaXMoJHJlc3VsdCwKKwlxKDF8dmFsMQorMnx2YWwyCiszfHZhbDN1cGQp LAorCSdkZWNyeXB0ZWQgcXVlcnkgcmVzdWx0IGFmdGVyIHRlc3QgY2xpZW50IGluc2VydCAz Jyk7CisKKyRub2RlLT5jb21tYW5kX29rKFsndGVzdF9jbGllbnQnLCAndGVzdDQnXSwgJ3Rl c3QgY2xpZW50IHRlc3QgNCcpOworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxe1NFTEVDVCBhLCBiIEZST00gdGJsMn0pOworaXMoJHJlc3VsdCwKKwlxKDF8 dmFsQQorMnx2YWxCCiszfHZhbEEpLAorCSdkZWNyeXB0ZWQgcXVlcnkgcmVzdWx0IGFmdGVy IHRlc3QgY2xpZW50IGluc2VydCA0Jyk7CisKK2lzKCRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXtTRUxFQ1QgYiwgY291bnQoKikgRlJPTSB0YmwyIEdST1VQIEJZIGIgT1JERVIg QlkgMn0pLAorCXEodmFsQnwxCit2YWxBfDIpLAorCSdncm91cCBieSBkZXRlcm1pbmlzdGlj YWxseSBlbmNyeXB0ZWQgY29sdW1uJyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9jb2x1bW5f ZW5jcnlwdGlvbi90ZXN0X2NsaWVudC5jIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24v dGVzdF9jbGllbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5i ZTM3YjUxMzA1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRp b24vdGVzdF9jbGllbnQuYwpAQCAtMCwwICsxLDE1NSBAQAorI2luY2x1ZGUgInBvc3RncmVz X2ZlLmgiCisKKyNpbmNsdWRlICJsaWJwcS1mZS5oIgorCisKK3N0YXRpYyBpbnQKK3Rlc3Qx KFBHY29ubiAqY29ubikKK3sKKwlQR3Jlc3VsdCAgICpyZXM7CisJY29uc3QgY2hhciAqdmFs dWVzW10gPSB7IjMiLCAidmFsMyJ9OworCisJcmVzID0gUFFleGVjUGFyYW1zKGNvbm4sICJJ TlNFUlQgSU5UTyB0YmwxIChhLCBiKSBWQUxVRVMgKCQxLCAkMikiLAorCQkJCQkgICAyLCBO VUxMLCB2YWx1ZXMsIE5VTEwsIE5VTEwsIDApOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMp ICE9IFBHUkVTX0NPTU1BTkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIlBRZXhlY1Bh cmFtcygpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQly ZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAordGVzdDIoUEdj b25uICpjb25uKQoreworCVBHcmVzdWx0ICAgKnJlcywgKnJlczI7CisJY29uc3QgY2hhciAq dmFsdWVzW10gPSB7IjMiLCAidmFsMyJ9OworCisJcmVzID0gUFFwcmVwYXJlKGNvbm4sICIi LCAiSU5TRVJUIElOVE8gdGJsMSAoYSwgYikgVkFMVUVTICgkMSwgJDIpIiwKKwkJCQkJMiwg TlVMTCk7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykK Kwl7CisJCWZwcmludGYoc3RkZXJyLCAiUFFwcmVwYXJlKCkgZmFpbGVkOiAlc1xuIiwKKwkJ CQlQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXJldHVybiAxOworCX0KKworCXJlczIgPSBQ UWRlc2NyaWJlUHJlcGFyZWQoY29ubiwgIiIpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMy KSAhPSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJQUWRlc2Ny aWJlUHJlcGFyZWQoKSBmYWlsZWQ6ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4p KTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmVzID0gUFFleGVjUHJlcGFyZWQyKGNvbm4sICIi LCAyLCB2YWx1ZXMsIE5VTEwsIE5VTEwsIDAsIHJlczIpOworCWlmIChQUXJlc3VsdFN0YXR1 cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIlBR ZXhlY1ByZXBhcmVkKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2FnZShjb25u KSk7CisJCXJldHVybiAxOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit0 ZXN0MyhQR2Nvbm4gKmNvbm4pCit7CisJUEdyZXN1bHQgICAqcmVzLCAqcmVzMjsKKwljb25z dCBjaGFyICp2YWx1ZXNbXSA9IHsiMyIsICJ2YWwzdXBkIn07CisKKwlyZXMgPSBQUXByZXBh cmUoY29ubiwgIiIsICJVUERBVEUgdGJsMSBTRVQgYiA9ICQyIFdIRVJFIGEgPSAkMSIsCisJ CQkJCTIsIE5VTEwpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1B TkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIlBRcHJlcGFyZSgpIGZhaWxlZDogJXNc biIsCisJCQkJUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwly ZXMyID0gUFFkZXNjcmliZVByZXBhcmVkKGNvbm4sICIiKTsKKwlpZiAoUFFyZXN1bHRTdGF0 dXMocmVzMikgIT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAi UFFkZXNjcmliZVByZXBhcmVkKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2Fn ZShjb25uKSk7CisJCXJldHVybiAxOworCX0KKworCXJlcyA9IFBRZXhlY1ByZXBhcmVkMihj b25uLCAiIiwgMiwgdmFsdWVzLCBOVUxMLCBOVUxMLCAwLCByZXMyKTsKKwlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRl cnIsICJQUWV4ZWNQcmVwYXJlZCgpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludAordGVzdDQoUEdjb25uICpjb25uKQoreworCVBHcmVzdWx0ICAgKnJlcywgKnJlczI7 CisJY29uc3QgY2hhciAqdmFsdWVzW10gPSB7IjEiLCAidmFsQSIsICIyIiwgInZhbEIiLCAi MyIsICJ2YWxBIn07CisKKwlyZXMgPSBQUXByZXBhcmUoY29ubiwgIiIsICJJTlNFUlQgSU5U TyB0YmwyIChhLCBiKSBWQUxVRVMgKCQxLCAkMiksICgkMywgJDQpLCAoJDUsICQ2KSIsCisJ CQkJCTYsIE5VTEwpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1B TkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIlBRcHJlcGFyZSgpIGZhaWxlZDogJXNc biIsCisJCQkJUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwly ZXMyID0gUFFkZXNjcmliZVByZXBhcmVkKGNvbm4sICIiKTsKKwlpZiAoUFFyZXN1bHRTdGF0 dXMocmVzMikgIT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAi UFFkZXNjcmliZVByZXBhcmVkKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2Fn ZShjb25uKSk7CisJCXJldHVybiAxOworCX0KKworCXJlcyA9IFBRZXhlY1ByZXBhcmVkMihj b25uLCAiIiwgNiwgdmFsdWVzLCBOVUxMLCBOVUxMLCAwLCByZXMyKTsKKwlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRl cnIsICJQUWV4ZWNQcmVwYXJlZCgpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50Citt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlQR2Nvbm4JICAgKmNvbm47CisJaW50 CQkJcmV0ID0gMDsKKworCWNvbm4gPSBQUWNvbm5lY3RkYigiIik7CisJaWYgKFBRc3RhdHVz KGNvbm4pICE9IENPTk5FQ1RJT05fT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIkNvbm5l Y3Rpb24gdG8gZGF0YWJhc2UgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2FnZShj b25uKSk7CisJCXJldHVybiAxOworCX0KKworCWlmIChhcmdjIDwgMiB8fCBhcmd2WzFdID09 IE5VTEwpCisJCXJldHVybiA4NzsKKwllbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInRlc3Qx IikgPT0gMCkKKwkJcmV0ID0gdGVzdDEoY29ubik7CisJZWxzZSBpZiAoc3RyY21wKGFyZ3Zb MV0sICJ0ZXN0MiIpID09IDApCisJCXJldCA9IHRlc3QyKGNvbm4pOworCWVsc2UgaWYgKHN0 cmNtcChhcmd2WzFdLCAidGVzdDMiKSA9PSAwKQorCQlyZXQgPSB0ZXN0Myhjb25uKTsKKwll bHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInRlc3Q0IikgPT0gMCkKKwkJcmV0ID0gdGVzdDQo Y29ubik7CisJZWxzZQorCQlyZXQgPSA4ODsKKworCVBRZmluaXNoKGNvbm4pOworCXJldHVy biByZXQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5l L3RyYWNlcy9wcmVwYXJlZC50cmFjZSBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxp bmUvdHJhY2VzL3ByZXBhcmVkLnRyYWNlCmluZGV4IDFhN2RlNWMzZTYuLmNlODRmMTk1NWIg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3By ZXBhcmVkLnRyYWNlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJh Y2VzL3ByZXBhcmVkLnRyYWNlCkBAIC0yLDcgKzIsNyBAQCBGCTY4CVBhcnNlCSAic2VsZWN0 X29uZSIgIlNFTEVDVCAkMSwgJzQyJywgJDE6Om51bWVyaWMsIGludGVydmFsICcxIHNlYyci IDEgTk5OTgogRgkxNglEZXNjcmliZQkgUyAic2VsZWN0X29uZSIKIEYJNAlTeW5jCiBCCTQJ UGFyc2VDb21wbGV0ZQotQgkxMAlQYXJhbWV0ZXJEZXNjcmlwdGlvbgkgMSBOTk5OCitCCTEy CVBhcmFtZXRlckRlc2NyaXB0aW9uCSAxIE5OTk4gMAogQgkxMTMJUm93RGVzY3JpcHRpb24J IDQgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0xIDAgIj9jb2x1bW4/IiBOTk5OIDAgTk5O TiA2NTUzNSAtMSAwICJudW1lcmljIiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAwICJpbnRlcnZh bCIgTk5OTiAwIE5OTk4gMTYgLTEgMAogQgk1CVJlYWR5Rm9yUXVlcnkJIEkKIEYJMTAJUXVl cnkJICJCRUdJTiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29s dW1uX2VuY3J5cHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2x1bW5f ZW5jcnlwdGlvbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u MWZlYzlmODkwMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29sdW1uX2VuY3J5cHRpb24ub3V0CkBAIC0wLDAgKzEsNDcgQEAKKy8qIEltYWdpbmU6 CitDUkVBVEUgQ09MVU1OIE1BU1RFUiBLRVkgY21rMSAoCisgICAgcHJvdmlkZXIgPSAndGVz dCcKKyk7CisqLworSU5TRVJUIElOVE8gcGdfY29sbWFzdGVya2V5IChvaWQsIGNta25hbWUs IGNta3Byb3ZpZGVyLCBjbWtvcHRpb25zKSBWQUxVRVMgKAorICAgIHBnX25leHRvaWQoJ3Bn X2NhdGFsb2cucGdfY29sbWFzdGVya2V5JywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbG1h c3RlcmtleV9vaWRfaW5kZXgnKSwKKyAgICAnY21rMScsICd0ZXN0JywgJ3t9Jzo6dGV4dFtd CispOworLyogSW1hZ2luZToKK0NSRUFURSBDT0xVTU4gRU5DUllQVElPTiBLRVkgY2VrMSAo CisgICAgY29sdW1uX21hc3Rlcl9rZXkgPSBjbWsxLAorICAgIGFsZ29yaXRobSA9ICcuLi4n LAorICAgIGVuY3J5cHRlZF92YWx1ZSA9ICcuLi4nCispOworKi8KK0lOU0VSVCBJTlRPIHBn X2NvbGVuY2tleSAob2lkLCBjZWtuYW1lKSBWQUxVRVMgKAorICAgIHBnX25leHRvaWQoJ3Bn X2NhdGFsb2cucGdfY29sZW5ja2V5JywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbGVuY2tl eV9vaWRfaW5kZXgnKSwKKyAgICAnY2VrMScKKyk7CitJTlNFUlQgSU5UTyBwZ19jb2xlbmNr ZXlkYXRhIChvaWQsIGNrZGNla2lkLCBja2RjbWtpZCwgY2tkY21rYWxnLCBja2RlbmN2YWwp IFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlkYXRh JywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleWRhdGFfb2lkX2luZGV4JyksCisg ICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xlbmNrZXkgV0hFUkUgY2VrbmFtZSA9ICdjZWsx JyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xtYXN0ZXJrZXkgV0hFUkUgY21rbmFt ZSA9ICdjbWsxJyksCisgICAgJzJST1QxMycsCisgICAgJ1x4REVBREJFRUYnCispOworQ1JF QVRFIFRBQkxFIHRibF9mYWlsICgKKyAgICBhIGludCwKKyAgICBiIHRleHQsCisgICAgYyB0 ZXh0IEVOQ1JZUFRFRCBXSVRIIChjb2x1bW5fZW5jcnlwdGlvbl9rZXkgPSBub3RleGlzdCkK Kyk7CitFUlJPUjogIGNvbHVtbiBlbmNyeXB0aW9uIGtleSAibm90ZXhpc3QiIGRvZXMgbm90 IGV4aXN0CitDUkVBVEUgVEFCTEUgdGJsXzI5ZjMgKAorICAgIGEgaW50LAorICAgIGIgdGV4 dCwKKyAgICBjIHRleHQgRU5DUllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9 IGNlazEpCispOworXGQgdGJsXzI5ZjMKKyAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMu dGJsXzI5ZjMiCisgQ29sdW1uIHwgICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8IAorIGIgICAgICB8IHRleHQgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorIGMgICAgICB8IGVuY3J5cHRlZHIgfCBkZWZhdWx0ICAgfCAgICAgICAgICB8IAorCitE Uk9QIFRBQkxFIHRibF8yOWYzOyAgLS0gRklYTUU6IG5lZWRzIHBnX2R1bXAgc3VwcG9ydCBm b3IgcGdfdXBncmFkZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vaWRqb2lucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5z Lm91dAppbmRleCAyMTVlYjg5OWJlLi5hYjY0MDVhNmMzIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL29pZGpvaW5zLm91dApAQCAtNzMsNiArNzMsOCBAQCBOT1RJQ0U6ICBjaGVj a2luZyBwZ190eXBlIHt0eXBiYXNldHlwZX0gPT4gcGdfdHlwZSB7b2lkfQogTk9USUNFOiAg Y2hlY2tpbmcgcGdfdHlwZSB7dHlwY29sbGF0aW9ufSA9PiBwZ19jb2xsYXRpb24ge29pZH0K IE5PVElDRTogIGNoZWNraW5nIHBnX2F0dHJpYnV0ZSB7YXR0cmVsaWR9ID0+IHBnX2NsYXNz IHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19hdHRyaWJ1dGUge2F0dHR5cGlkfSA9PiBw Z190eXBlIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ19hdHRyaWJ1dGUge2F0dGNla30g PT4gcGdfY29sZW5ja2V5IHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ19hdHRyaWJ1dGUg e2F0dHJlYWx0eXBpZH0gPT4gcGdfdHlwZSB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdf YXR0cmlidXRlIHthdHRjb2xsYXRpb259ID0+IHBnX2NvbGxhdGlvbiB7b2lkfQogTk9USUNF OiAgY2hlY2tpbmcgcGdfY2xhc3Mge3JlbG5hbWVzcGFjZX0gPT4gcGdfbmFtZXNwYWNlIHtv aWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19jbGFzcyB7cmVsdHlwZX0gPT4gcGdfdHlwZSB7 b2lkfQpAQCAtMjY2LDMgKzI2OCw1IEBAIE5PVElDRTogIGNoZWNraW5nIHBnX3N1YnNjcmlw dGlvbiB7c3ViZGJpZH0gPT4gcGdfZGF0YWJhc2Uge29pZH0KIE5PVElDRTogIGNoZWNraW5n IHBnX3N1YnNjcmlwdGlvbiB7c3Vib3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lkfQogTk9USUNF OiAgY2hlY2tpbmcgcGdfc3Vic2NyaXB0aW9uX3JlbCB7c3JzdWJpZH0gPT4gcGdfc3Vic2Ny aXB0aW9uIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19zdWJzY3JpcHRpb25fcmVsIHtz cnJlbGlkfSA9PiBwZ19jbGFzcyB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfY29sZW5j a2V5ZGF0YSB7Y2tkY2VraWR9ID0+IHBnX2NvbGVuY2tleSB7b2lkfQorTk9USUNFOiAgY2hl Y2tpbmcgcGdfY29sZW5ja2V5ZGF0YSB7Y2tkY21raWR9ID0+IHBnX2NvbG1hc3RlcmtleSB7 b2lkfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5 Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKaW5kZXgg NTYyYjU4NmQ4ZS4uZmMyYTA3OTcxZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9vcHJfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L29wcl9zYW5pdHkub3V0CkBAIC0xNzUsMTMgKzE3NSwxNCBAQCBXSEVSRSBwMS5vaWQgIT0g cDIub2lkIEFORAogT1JERVIgQlkgMSwgMjsKICAgICAgICAgIHByb2FyZ3R5cGVzICAgICAg ICAgfCAgICAgICBwcm9hcmd0eXBlcyAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGJ5dGVhICAgICAgICAgICAg ICAgICAgICAgICB8IGVuY3J5cHRlZGQKICBiaWdpbnQgICAgICAgICAgICAgICAgICAgICAg fCB4aWQ4CiAgdGV4dCAgICAgICAgICAgICAgICAgICAgICAgIHwgY2hhcmFjdGVyCiAgdGV4 dCAgICAgICAgICAgICAgICAgICAgICAgIHwgY2hhcmFjdGVyIHZhcnlpbmcKICB0aW1lc3Rh bXAgd2l0aG91dCB0aW1lIHpvbmUgfCB0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUKICBiaXQg ICAgICAgICAgICAgICAgICAgICAgICAgfCBiaXQgdmFyeWluZwogIHR4aWRfc25hcHNob3Qg ICAgICAgICAgICAgICB8IHBnX3NuYXBzaG90Ci0oNiByb3dzKQorKDcgcm93cykKIAogU0VM RUNUIERJU1RJTkNUIHAxLnByb2FyZ3R5cGVzWzFdOjpyZWd0eXBlLCBwMi5wcm9hcmd0eXBl c1sxXTo6cmVndHlwZQogRlJPTSBwZ19wcm9jIEFTIHAxLCBwZ19wcm9jIEFTIHAyCkBAIC0x OTcsMTEgKzE5OCwxMiBAQCBXSEVSRSBwMS5vaWQgIT0gcDIub2lkIEFORAogT1JERVIgQlkg MSwgMjsKICAgICAgICAgIHByb2FyZ3R5cGVzICAgICAgICAgfCAgICAgICBwcm9hcmd0eXBl cyAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIGJ5dGVhICAgICAgICAgICAgICAgICAgICAgICB8IGVuY3J5cHRl ZGQKICBpbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgfCB4aWQKICB0aW1lc3RhbXAgd2l0 aG91dCB0aW1lIHpvbmUgfCB0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUKICBiaXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBiaXQgdmFyeWluZwogIHR4aWRfc25hcHNob3QgICAgICAg ICAgICAgICB8IHBnX3NuYXBzaG90Ci0oNCByb3dzKQorKDUgcm93cykKIAogU0VMRUNUIERJ U1RJTkNUIHAxLnByb2FyZ3R5cGVzWzJdOjpyZWd0eXBlLCBwMi5wcm9hcmd0eXBlc1syXTo6 cmVndHlwZQogRlJPTSBwZ19wcm9jIEFTIHAxLCBwZ19wcm9jIEFTIHAyCkBAIC04NDAsNiAr ODQyLDggQEAgeGlkOGdlKHhpZDgseGlkOCkKIHhpZDhlcSh4aWQ4LHhpZDgpCiB4aWQ4bmUo eGlkOCx4aWQ4KQogeGlkOGNtcCh4aWQ4LHhpZDgpCitlbmNyeXB0ZWRkZXEoZW5jcnlwdGVk ZCxlbmNyeXB0ZWRkKQorZW5jcnlwdGVkZG5lKGVuY3J5cHRlZGQsZW5jcnlwdGVkZCkKIC0t IHJlc3RvcmUgbm9ybWFsIG91dHB1dCBtb2RlCiBcYVx0CiAtLSBMaXN0IG9mIGZ1bmN0aW9u cyB1c2VkIGJ5IGxpYnBxJ3MgZmUtbG9iai5jCkBAIC05ODcsNyArOTkxLDkgQEAgV0hFUkUg Yy5jYXN0bWV0aG9kID0gJ2InIEFORAogIHhtbCAgICAgICAgICAgICAgIHwgdGV4dCAgICAg ICAgICAgICAgfCAgICAgICAgMCB8IGEKICB4bWwgICAgICAgICAgICAgICB8IGNoYXJhY3Rl ciB2YXJ5aW5nIHwgICAgICAgIDAgfCBhCiAgeG1sICAgICAgICAgICAgICAgfCBjaGFyYWN0 ZXIgICAgICAgICB8ICAgICAgICAwIHwgYQotKDEwIHJvd3MpCisgYnl0ZWEgICAgICAgICAg ICAgfCBlbmNyeXB0ZWRkICAgICAgICB8ICAgICAgICAwIHwgZQorIGJ5dGVhICAgICAgICAg ICAgIHwgZW5jcnlwdGVkciAgICAgICAgfCAgICAgICAgMCB8IGUKKygxMiByb3dzKQogCiAt LSAqKioqKioqKioqKioqKioqIHBnX2NvbnZlcnNpb24gKioqKioqKioqKioqKioqKgogLS0g TG9vayBmb3IgaWxsZWdhbCB2YWx1ZXMgaW4gcGdfY29udmVyc2lvbiBmaWVsZHMuCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByZXBhcmUub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wcmVwYXJlLm91dAppbmRleCAzMzA2YzY5NmIxLi42NzU1 NTZjN2QxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByZXBhcmUu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJlcGFyZS5vdXQKQEAgLTE1 OSwyNSArMTU5LDMwIEBAIFBSRVBBUkUgcTYgQVMKICAgICBTRUxFQ1QgKiBGUk9NIHRlbmsx IFdIRVJFIHVuaXF1ZTEgPSAkMSBBTkQgc3RyaW5ndTEgPSAkMjsKIFBSRVBBUkUgcTcodW5r bm93bikgQVMKICAgICBTRUxFQ1QgKiBGUk9NIHJvYWQgV0hFUkUgdGhlcGF0aCA9ICQxOwot U0VMRUNUIG5hbWUsIHN0YXRlbWVudCwgcGFyYW1ldGVyX3R5cGVzIEZST00gcGdfcHJlcGFy ZWRfc3RhdGVtZW50cworLS0gRE1MIHN0YXRlbWVudHMKK1BSRVBBUkUgcTggQVMKKyAgICBV UERBVEUgdGVuazEgU0VUIHN0cmluZ3UxID0gJDIgV0hFUkUgdW5pcXVlMSA9ICQxOworU0VM RUNUIG5hbWUsIHN0YXRlbWVudCwgcGFyYW1ldGVyX3R5cGVzLCBwYXJhbWV0ZXJfb3JpZ190 YWJsZXMsIHBhcmFtZXRlcl9vcmlnX2NvbHVtbnMgRlJPTSBwZ19wcmVwYXJlZF9zdGF0ZW1l bnRzCiAgICAgT1JERVIgQlkgbmFtZTsKLSBuYW1lIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdGVtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgcGFyYW1ldGVyX3R5cGVzICAgICAgICAgICAgICAgICAgIAotLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gcTIgICB8IFBSRVBBUkUgcTIodGV4dCkgQVMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCB7dGV4dH0KLSAgICAgIHwgICAgICAg ICBTRUxFQ1QgZGF0bmFtZSwgZGF0aXN0ZW1wbGF0ZSwgZGF0YWxsb3djb25uICAgICAgICAg ICAgICt8IAotICAgICAgfCAgICAgICAgIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFt ZSA9ICQxOyAgICAgICAgICAgICAgICAgICAgIHwgCi0gcTMgICB8IFBSRVBBUkUgcTModGV4 dCwgaW50LCBmbG9hdCwgYm9vbGVhbiwgc21hbGxpbnQpIEFTICAgICAgICAgICAgICArfCB7 dGV4dCxpbnRlZ2VyLCJkb3VibGUgcHJlY2lzaW9uIixib29sZWFuLHNtYWxsaW50fQotICAg ICAgfCAgICAgICAgIFNFTEVDVCAqIEZST00gdGVuazEgV0hFUkUgc3RyaW5nNCA9ICQxIEFO RCAoZm91ciA9ICQyIE9SK3wgCi0gICAgICB8ICAgICAgICAgdGVuID0gJDM6OmJpZ2ludCBP UiB0cnVlID0gJDQgT1Igb2RkID0gJDU6OmludCkgICAgICAgICArfCAKLSAgICAgIHwgICAg ICAgICBPUkRFUiBCWSB1bmlxdWUxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IAotIHE1ICAgfCBQUkVQQVJFIHE1KGludCwgdGV4dCkgQVMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wge2ludGVnZXIsdGV4dH0KLSAgICAg IHwgICAgICAgICBTRUxFQ1QgKiBGUk9NIHRlbmsxIFdIRVJFIHVuaXF1ZTEgPSAkMSBPUiBz dHJpbmd1MSA9ICQyICt8IAotICAgICAgfCAgICAgICAgIE9SREVSIEJZIHVuaXF1ZTE7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCi0gcTYgICB8IFBSRVBB UkUgcTYgQVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArfCB7aW50ZWdlcixuYW1lfQotICAgICAgfCAgICAgU0VMRUNUICogRlJPTSB0ZW5r MSBXSEVSRSB1bmlxdWUxID0gJDEgQU5EIHN0cmluZ3UxID0gJDI7ICAgIHwgCi0gcTcgICB8 IFBSRVBBUkUgcTcodW5rbm93bikgQVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArfCB7cGF0aH0KLSAgICAgIHwgICAgIFNFTEVDVCAqIEZST00gcm9hZCBX SEVSRSB0aGVwYXRoID0gJDE7ICAgICAgICAgICAgICAgICAgICAgICB8IAotKDUgcm93cykK KyBuYW1lIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyX3R5cGVz ICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX29yaWdfdGFibGVzIHwgcGFyYW1ldGVy X29yaWdfY29sdW1ucyAKKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBxMiAgIHwgUFJFUEFSRSBxMih0ZXh0 KSBBUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IHt0 ZXh0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgey19 ICAgICAgICAgICAgICAgICAgIHwgezB9CisgICAgICB8ICAgICAgICAgU0VMRUNUIGRhdG5h bWUsIGRhdGlzdGVtcGxhdGUsIGRhdGFsbG93Y29ubiAgICAgICAgICAgICArfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICB8IAorICAgICAgfCAgICAgICAgIEZST00gcGdfZGF0YWJhc2UgV0hF UkUgZGF0bmFtZSA9ICQxOyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgfCAKKyBxMyAgIHwgUFJFUEFSRSBxMyh0ZXh0LCBpbnQsIGZsb2F0LCBib29sZWFu LCBzbWFsbGludCkgQVMgICAgICAgICAgICAgICt8IHt0ZXh0LGludGVnZXIsImRvdWJsZSBw cmVjaXNpb24iLGJvb2xlYW4sc21hbGxpbnR9IHwgey0sLSwtLC0sLX0gICAgICAgICAgIHwg ezAsMCwwLDAsMH0KKyAgICAgIHwgICAgICAgICBTRUxFQ1QgKiBGUk9NIHRlbmsxIFdIRVJF IHN0cmluZzQgPSAkMSBBTkQgKGZvdXIgPSAkMiBPUit8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg IHwgCisgICAgICB8ICAgICAgICAgdGVuID0gJDM6OmJpZ2ludCBPUiB0cnVlID0gJDQgT1Ig b2RkID0gJDU6OmludCkgICAgICAgICArfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8IAorICAg ICAgfCAgICAgICAgIE9SREVSIEJZIHVuaXF1ZTE7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBxNSAgIHwgUFJF UEFSRSBxNShpbnQsIHRleHQpIEFTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICt8IHtpbnRlZ2VyLHRleHR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgey0sLX0gICAgICAgICAgICAgICAgIHwgezAsMH0KKyAgICAgIHwgICAgICAg ICBTRUxFQ1QgKiBGUk9NIHRlbmsxIFdIRVJFIHVuaXF1ZTEgPSAkMSBPUiBzdHJpbmd1MSA9 ICQyICt8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgCisgICAgICB8ICAgICAgICAgT1JERVIg QlkgdW5pcXVlMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICB8IAorIHE2ICAgfCBQUkVQQVJFIHE2IEFTICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wge2ludGVnZXIs bmFtZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7LSwtfSAgICAg ICAgICAgICAgICAgfCB7MCwwfQorICAgICAgfCAgICAgU0VMRUNUICogRlJPTSB0ZW5rMSBX SEVSRSB1bmlxdWUxID0gJDEgQU5EIHN0cmluZ3UxID0gJDI7ICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgfCAKKyBxNyAgIHwgUFJFUEFSRSBxNyh1bmtub3duKSBBUyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IHtwYXRofSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgey19ICAgICAgICAgICAgICAgICAg IHwgezB9CisgICAgICB8ICAgICBTRUxFQ1QgKiBGUk9NIHJvYWQgV0hFUkUgdGhlcGF0aCA9 ICQxOyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8IAor IHE4ICAgfCBQUkVQQVJFIHE4IEFTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgK3wge2ludGVnZXIsbmFtZX0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCB7LSx0ZW5rMX0gICAgICAgICAgICAgfCB7MCwxNH0KKyAg ICAgIHwgICAgIFVQREFURSB0ZW5rMSBTRVQgc3RyaW5ndTEgPSAkMiBXSEVSRSB1bmlxdWUx ID0gJDE7ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgCisoNiByb3dzKQog CiAtLSB0ZXN0IERFQUxMT0NBVEUgQUxMOwogREVBTExPQ0FURSBBTEw7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IGI1OGIwNjJiMTAuLjc4ODNiYWY0YWIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNDQxLDggKzE0NDEsMTAg QEAgcGdfcHJlcGFyZWRfc3RhdGVtZW50c3wgU0VMRUNUIHAubmFtZSwKICAgICBwLnBhcmFt ZXRlcl90eXBlcywKICAgICBwLmZyb21fc3FsLAogICAgIHAuZ2VuZXJpY19wbGFucywKLSAg ICBwLmN1c3RvbV9wbGFucwotICAgRlJPTSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnQoKSBwKG5h bWUsIHN0YXRlbWVudCwgcHJlcGFyZV90aW1lLCBwYXJhbWV0ZXJfdHlwZXMsIGZyb21fc3Fs LCBnZW5lcmljX3BsYW5zLCBjdXN0b21fcGxhbnMpOworICAgIHAuY3VzdG9tX3BsYW5zLAor ICAgIHAucGFyYW1ldGVyX29yaWdfdGFibGVzLAorICAgIHAucGFyYW1ldGVyX29yaWdfY29s dW1ucworICAgRlJPTSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnQoKSBwKG5hbWUsIHN0YXRlbWVu dCwgcHJlcGFyZV90aW1lLCBwYXJhbWV0ZXJfdHlwZXMsIGZyb21fc3FsLCBnZW5lcmljX3Bs YW5zLCBjdXN0b21fcGxhbnMsIHBhcmFtZXRlcl9vcmlnX3RhYmxlcywgcGFyYW1ldGVyX29y aWdfY29sdW1ucyk7CiBwZ19wcmVwYXJlZF94YWN0c3wgU0VMRUNUIHAudHJhbnNhY3Rpb24s CiAgICAgcC5naWQsCiAgICAgcC5wcmVwYXJlZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc2FuaXR5X2NoZWNrLm91dAppbmRleCA2MzcwNmEyOGNjLi42N2EwZmNjOWEzIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CkBAIC0x MTIsNyArMTEyLDEwIEBAIHBnX2F1dGhfbWVtYmVyc3x0CiBwZ19hdXRoaWR8dAogcGdfY2Fz dHx0CiBwZ19jbGFzc3x0CitwZ19jb2xlbmNrZXl8dAorcGdfY29sZW5ja2V5ZGF0YXx0CiBw Z19jb2xsYXRpb258dAorcGdfY29sbWFzdGVya2V5fHQKIHBnX2NvbnN0cmFpbnR8dAogcGdf Y29udmVyc2lvbnx0CiBwZ19kYXRhYmFzZXx0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3R5cGVfc2FuaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdHlwZV9zYW5pdHkub3V0CmluZGV4IDI1N2I2Y2FjMTIuLjQwM2U5ZjVjMWUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHlwZV9zYW5pdHkub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHlwZV9zYW5pdHkub3V0CkBAIC0xNyw3ICsx Nyw3IEBAIFNFTEVDVCBwMS5vaWQsIHAxLnR5cG5hbWUKIEZST00gcGdfdHlwZSBhcyBwMQog V0hFUkUgcDEudHlwbmFtZXNwYWNlID0gMCBPUgogICAgIChwMS50eXBsZW4gPD0gMCBBTkQg cDEudHlwbGVuICE9IC0xIEFORCBwMS50eXBsZW4gIT0gLTIpIE9SCi0gICAgKHAxLnR5cHR5 cGUgbm90IGluICgnYicsICdjJywgJ2QnLCAnZScsICdwJywgJ3InLCAnbScpKSBPUgorICAg IChwMS50eXB0eXBlIG5vdCBpbiAoJ2InLCAnYycsICdkJywgJ2UnLCAnbScsICdwJywgJ3In LCAneScpKSBPUgogICAgIE5PVCBwMS50eXBpc2RlZmluZWQgT1IKICAgICAocDEudHlwYWxp Z24gbm90IGluICgnYycsICdzJywgJ2knLCAnZCcpKSBPUgogICAgIChwMS50eXBzdG9yYWdl IG5vdCBpbiAoJ3AnLCAneCcsICdlJywgJ20nKSk7CkBAIC03NSw3ICs3NSw5IEBAIE9SREVS IEJZIHAxLm9pZDsKICA0NjAwIHwgcGdfYnJpbl9ibG9vbV9zdW1tYXJ5CiAgNDYwMSB8IHBn X2JyaW5fbWlubWF4X211bHRpX3N1bW1hcnkKICA1MDE3IHwgcGdfbWN2X2xpc3QKLSg2IHJv d3MpCisgODI0MyB8IGVuY3J5cHRlZGQKKyA4MjQ0IHwgZW5jcnlwdGVkcgorKDggcm93cykK IAogLS0gTWFrZSBzdXJlIHR5cGFycmF5IHBvaW50cyB0byBhICJ0cnVlIiBhcnJheSB0eXBl IG9mIG91ciBvd24gYmFzZQogU0VMRUNUIHAxLm9pZCwgcDEudHlwbmFtZSBhcyBiYXNldHlw ZSwgcDIudHlwbmFtZSBhcyBhcnJheXR5cGUsCkBAIC0yMTAsNyArMjEyLDggQEAgT1JERVIg QlkgMTsKICBlICAgICAgIHwgZW51bV9pbgogIG0gICAgICAgfCBtdWx0aXJhbmdlX2luCiAg ciAgICAgICB8IHJhbmdlX2luCi0oNSByb3dzKQorIHkgICAgICAgfCBieXRlYWluCisoNiBy b3dzKQogCiAtLSBDaGVjayBmb3IgYm9ndXMgdHlwb3V0cHV0IHJvdXRpbmVzCiAtLSBBcyBv ZiA4LjAsIHRoaXMgY2hlY2sgZmluZHMgcmVmY3Vyc29yLCB3aGljaCBpcyBib3Jyb3dpbmcK QEAgLTI1NSw3ICsyNTgsOCBAQCBPUkRFUiBCWSAxOwogIGUgICAgICAgfCBlbnVtX291dAog IG0gICAgICAgfCBtdWx0aXJhbmdlX291dAogIHIgICAgICAgfCByYW5nZV9vdXQKLSg0IHJv d3MpCisgeSAgICAgICB8IGJ5dGVhb3V0CisoNSByb3dzKQogCiAtLSBEb21haW5zIHNob3Vs ZCBoYXZlIHNhbWUgdHlwb3V0cHV0IGFzIHRoZWlyIGJhc2UgdHlwZXMKIFNFTEVDVCBwMS5v aWQsIHAxLnR5cG5hbWUsIHAyLm9pZCwgcDIudHlwbmFtZQpAQCAtMzM1LDcgKzMzOSw4IEBA IE9SREVSIEJZIDE7CiAgZSAgICAgICB8IGVudW1fcmVjdgogIG0gICAgICAgfCBtdWx0aXJh bmdlX3JlY3YKICByICAgICAgIHwgcmFuZ2VfcmVjdgotKDUgcm93cykKKyB5ICAgICAgIHwg Ynl0ZWFyZWN2CisoNiByb3dzKQogCiAtLSBDaGVjayBmb3IgYm9ndXMgdHlwc2VuZCByb3V0 aW5lcwogLS0gQXMgb2YgNy40LCB0aGlzIGNoZWNrIGZpbmRzIHJlZmN1cnNvciwgd2hpY2gg aXMgYm9ycm93aW5nCkBAIC0zODAsNyArMzg1LDggQEAgT1JERVIgQlkgMTsKICBlICAgICAg IHwgZW51bV9zZW5kCiAgbSAgICAgICB8IG11bHRpcmFuZ2Vfc2VuZAogIHIgICAgICAgfCBy YW5nZV9zZW5kCi0oNCByb3dzKQorIHkgICAgICAgfCBieXRlYXNlbmQKKyg1IHJvd3MpCiAK IC0tIERvbWFpbnMgc2hvdWxkIGhhdmUgc2FtZSB0eXBzZW5kIGFzIHRoZWlyIGJhc2UgdHlw ZXMKIFNFTEVDVCBwMS5vaWQsIHAxLnR5cG5hbWUsIHAyLm9pZCwgcDIudHlwbmFtZQpAQCAt NzA3LDYgKzcxMyw4IEBAIENSRUFURSBUQUJMRSB0YWJfY29yZV90eXBlcyBBUyBTRUxFQ1QK ICAgJ3R4dCc6OnRleHQsCiAgIHRydWU6OmJvb2wsCiAgIEUnXFx4REVBREJFRUYnOjpieXRl YSwKKyAgRSdcXHhERUFEQkVFRic6OmVuY3J5cHRlZHIsCisgIEUnXFx4REVBREJFRUYnOjpl bmNyeXB0ZWRkLAogICBCJzEwMDAxJzo6Yml0LAogICBCJzEwMDAxJzo6dmFyYml0IEFTIHZh cmJpdCwKICAgJzEyLjM0Jzo6bW9uZXksCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZQppbmRleCAwMTdlOTYyZmVkLi5jZmM3YzRlNjlhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKQEAgLTEyMyw2ICsxMjMsOSBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQg cGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lv biB0cgogIyAtLS0tLS0tLS0tCiB0ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1 bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBw YXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplCiAK KyMgV0lQCit0ZXN0OiBjb2x1bW5fZW5jcnlwdGlvbgorCiAjIGV2ZW50IHRyaWdnZXJzIGNh bm5vdCBydW4gY29uY3VycmVudGx5IHdpdGggYW55IHRlc3QgdGhhdCBydW5zIERETAogIyBv aWRqb2lucyBpcyByZWFkLW9ubHksIHRob3VnaCwgYW5kIHNob3VsZCBydW4gbGF0ZSBmb3Ig YmVzdCBjb3ZlcmFnZQogdGVzdDogZXZlbnRfdHJpZ2dlciBvaWRqb2lucwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sdW1uX2VuY3J5cHRpb24uc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY29sdW1uX2VuY3J5cHRpb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjc0NWQ2YzJlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb2x1bW5fZW5jcnlwdGlvbi5zcWwKQEAgLTAsMCArMSw0 NCBAQAorLyogSW1hZ2luZToKK0NSRUFURSBDT0xVTU4gTUFTVEVSIEtFWSBjbWsxICgKKyAg ICBwcm92aWRlciA9ICd0ZXN0JworKTsKKyovCitJTlNFUlQgSU5UTyBwZ19jb2xtYXN0ZXJr ZXkgKG9pZCwgY21rbmFtZSwgY21rcHJvdmlkZXIsIGNta29wdGlvbnMpIFZBTFVFUyAoCisg ICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xtYXN0ZXJrZXknLCAnb2lkJywgJ3Bn X2NhdGFsb2cucGdfY29sbWFzdGVya2V5X29pZF9pbmRleCcpLAorICAgICdjbWsxJywgJ3Rl c3QnLCAne30nOjp0ZXh0W10KKyk7CisKKy8qIEltYWdpbmU6CitDUkVBVEUgQ09MVU1OIEVO Q1JZUFRJT04gS0VZIGNlazEgKAorICAgIGNvbHVtbl9tYXN0ZXJfa2V5ID0gY21rMSwKKyAg ICBhbGdvcml0aG0gPSAnLi4uJywKKyAgICBlbmNyeXB0ZWRfdmFsdWUgPSAnLi4uJworKTsK KyovCitJTlNFUlQgSU5UTyBwZ19jb2xlbmNrZXkgKG9pZCwgY2VrbmFtZSkgVkFMVUVTICgK KyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleScsICdvaWQnLCAncGdf Y2F0YWxvZy5wZ19jb2xlbmNrZXlfb2lkX2luZGV4JyksCisgICAgJ2NlazEnCispOworSU5T RVJUIElOVE8gcGdfY29sZW5ja2V5ZGF0YSAob2lkLCBja2RjZWtpZCwgY2tkY21raWQsIGNr ZGNta2FsZywgY2tkZW5jdmFsKSBWQUxVRVMgKAorICAgIHBnX25leHRvaWQoJ3BnX2NhdGFs b2cucGdfY29sZW5ja2V5ZGF0YScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlk YXRhX29pZF9pbmRleCcpLAorICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfY29sZW5ja2V5IFdI RVJFIGNla25hbWUgPSAnY2VrMScpLAorICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfY29sbWFz dGVya2V5IFdIRVJFIGNta25hbWUgPSAnY21rMScpLAorICAgICcyUk9UMTMnLAorICAgICdc eERFQURCRUVGJworKTsKKworQ1JFQVRFIFRBQkxFIHRibF9mYWlsICgKKyAgICBhIGludCwK KyAgICBiIHRleHQsCisgICAgYyB0ZXh0IEVOQ1JZUFRFRCBXSVRIIChjb2x1bW5fZW5jcnlw dGlvbl9rZXkgPSBub3RleGlzdCkKKyk7CisKK0NSRUFURSBUQUJMRSB0YmxfMjlmMyAoCisg ICAgYSBpbnQsCisgICAgYiB0ZXh0LAorICAgIGMgdGV4dCBFTkNSWVBURUQgV0lUSCAoY29s dW1uX2VuY3J5cHRpb25fa2V5ID0gY2VrMSkKKyk7CisKK1xkIHRibF8yOWYzCisKK0RST1Ag VEFCTEUgdGJsXzI5ZjM7ICAtLSBGSVhNRTogbmVlZHMgcGdfZHVtcCBzdXBwb3J0IGZvciBw Z191cGdyYWRlIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wcmVw YXJlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBhcmUuc3FsCmluZGV4IDk4NWQw ZjA1YzkuLmIyYWE5NmQzNzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3By ZXBhcmUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBhcmUuc3FsCkBAIC03 MSw3ICs3MSwxMSBAQCBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHE1X3ByZXBfbm9kYXRhIEFT IEVYRUNVVEUgcTUoMjAwLCAnRFRBQUFBJykKIFBSRVBBUkUgcTcodW5rbm93bikgQVMKICAg ICBTRUxFQ1QgKiBGUk9NIHJvYWQgV0hFUkUgdGhlcGF0aCA9ICQxOwogCi1TRUxFQ1QgbmFt ZSwgc3RhdGVtZW50LCBwYXJhbWV0ZXJfdHlwZXMgRlJPTSBwZ19wcmVwYXJlZF9zdGF0ZW1l bnRzCistLSBETUwgc3RhdGVtZW50cworUFJFUEFSRSBxOCBBUworICAgIFVQREFURSB0ZW5r MSBTRVQgc3RyaW5ndTEgPSAkMiBXSEVSRSB1bmlxdWUxID0gJDE7CisKK1NFTEVDVCBuYW1l LCBzdGF0ZW1lbnQsIHBhcmFtZXRlcl90eXBlcywgcGFyYW1ldGVyX29yaWdfdGFibGVzLCBw YXJhbWV0ZXJfb3JpZ19jb2x1bW5zIEZST00gcGdfcHJlcGFyZWRfc3RhdGVtZW50cwogICAg IE9SREVSIEJZIG5hbWU7CiAKIC0tIHRlc3QgREVBTExPQ0FURSBBTEw7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90eXBlX3Nhbml0eS5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC90eXBlX3Nhbml0eS5zcWwKaW5kZXggODI4MTA3NjQyMy4uZjMxZjlkYTEzOSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHlwZV9zYW5pdHkuc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3R5cGVfc2FuaXR5LnNxbApAQCAtMjAsNyArMjAsNyBA QAogRlJPTSBwZ190eXBlIGFzIHAxCiBXSEVSRSBwMS50eXBuYW1lc3BhY2UgPSAwIE9SCiAg ICAgKHAxLnR5cGxlbiA8PSAwIEFORCBwMS50eXBsZW4gIT0gLTEgQU5EIHAxLnR5cGxlbiAh PSAtMikgT1IKLSAgICAocDEudHlwdHlwZSBub3QgaW4gKCdiJywgJ2MnLCAnZCcsICdlJywg J3AnLCAncicsICdtJykpIE9SCisgICAgKHAxLnR5cHR5cGUgbm90IGluICgnYicsICdjJywg J2QnLCAnZScsICdtJywgJ3AnLCAncicsICd5JykpIE9SCiAgICAgTk9UIHAxLnR5cGlzZGVm aW5lZCBPUgogICAgIChwMS50eXBhbGlnbiBub3QgaW4gKCdjJywgJ3MnLCAnaScsICdkJykp IE9SCiAgICAgKHAxLnR5cHN0b3JhZ2Ugbm90IGluICgncCcsICd4JywgJ2UnLCAnbScpKTsK QEAgLTUyOSw2ICs1MjksOCBAQCBDUkVBVEUgVEFCTEUgdGFiX2NvcmVfdHlwZXMgQVMgU0VM RUNUCiAgICd0eHQnOjp0ZXh0LAogICB0cnVlOjpib29sLAogICBFJ1xceERFQURCRUVGJzo6 Ynl0ZWEsCisgIEUnXFx4REVBREJFRUYnOjplbmNyeXB0ZWRyLAorICBFJ1xceERFQURCRUVG Jzo6ZW5jcnlwdGVkZCwKICAgQicxMDAwMSc6OmJpdCwKICAgQicxMDAwMSc6OnZhcmJpdCBB UyB2YXJiaXQsCiAgICcxMi4zNCc6Om1vbmV5LAoKYmFzZS1jb21taXQ6IDQ5NDIyYWQwY2M4 OGM5MWEzODUyMmIyYTdiMjIyYzJmMmM5MzlmODIKLS0gCjIuMzQuMQoK --------------rO2wFieE9Zpnb4ktWsIUflBn--