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 1nRsVR-0005Ad-SZ for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Mar 2022 09:21:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nRsVP-00014j-U7 for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Mar 2022 09:21:15 +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 1nRsVO-00014a-PF for pgsql-hackers@lists.postgresql.org; Wed, 09 Mar 2022 09:21:15 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nRsVH-00024c-AY for pgsql-hackers@postgresql.org; Wed, 09 Mar 2022 09:21:14 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 98C9D3200BD2; Wed, 9 Mar 2022 04:21:02 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Wed, 09 Mar 2022 04:21:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=3uiKxqSn8rbOBZMx6 JnLLU1+arrnaRHMgyt5VdSwnjE=; b=E4gcOO2OC3L0gi+b3Mz9pNV3USUxIlYMd xUSsv4yG2YuNTr/+mIPMbL39okeByz2gAP3eKo5ETzidoYMc9UG+GIPcOp8xofSi RO2kLIG/ybgelxcr+HymRXdF1ma3FgX7mc8Mj+gC/DNDG2gur9l7cqNOErUMGIBK L6Khvd4hjaQGWZwsxTl83LHBiVXQhb6S1pPP8mG4curLACt1Gr6V/A1miySECDbg bGNEyYtDtOhANf5Wz4aKHAw9Xr0fc0Rk7UXNysQUuMjmKDjw9wdnp0iQ6/uGgPCx 3tq0fUo8H3BTjPVAQVuPSB+83H+eqTf34EBXZq1XQTspa3HYMNPEQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddruddukedgtddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfhfhfgjsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrh hprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrhhnpedutdevledtvedvteduvdef vdfhieetkeelvdfhhfejfeejvdeujeeggeefudegtdenucevlhhushhtvghrufhiiigvpe dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuthes vghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 9 Mar 2022 04:20:59 -0500 (EST) Content-Type: multipart/mixed; boundary="------------9jE0g1tyVxka1D2VUS2qcpj3" Message-ID: Date: Wed, 9 Mar 2022 10:20:57 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 Subject: Re: Column Filtering in Logical Replication Content-Language: en-US To: Tomas Vondra , Amit Kapila Cc: Alvaro Herrera , Justin Pryzby , "houzj.fnst@fujitsu.com" , Rahila Syed , Peter Smith , pgsql-hackers , shiy.fnst@fujitsu.com References: <202201120041.p24wvsfcsope@alvherre.pgsql> From: Peter Eisentraut In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------9jE0g1tyVxka1D2VUS2qcpj3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 07.03.22 16:18, Tomas Vondra wrote: > AFAICS these issues should be resolved by the adoption of the row-filter > approach (i.e. it should fail the same way as for row filter). The first two patches (additional testing for row filtering feature) look okay to me. Attached is a fixup patch for your main feature patch (the third one). It's a bit of code and documentation cleanup, but mainly I removed the term "column filter" from the patch. Half the code was using "column list" or similar and half the code "column filter", which was confusing. Also, there seemed to be a bit of copy-and-pasting from row-filter code going on, with some code comments not quite sensible, so I rewrote some of them. Also some code used "rf" and "cf" symbols which were a bit hard to tell apart. A few more letters can increase readability. Note in publicationcmds.c OpenTableList() the wrong if condition was used. I'm still confused about the intended replica identity handling. This patch still checks whether the column list contains the replica identity at DDL time. And then it also checks at execution time. I thought the latest understanding was that the DDL-time checking would be removed. I think it's basically useless now, since as the test cases show, you can subvert those checks by altering the replica identity later. --------------9jE0g1tyVxka1D2VUS2qcpj3 Content-Type: text/plain; charset=UTF-8; name="0001-fixup-Allow-specifying-column-filters-for-logical-re.patch" Content-Disposition: attachment; filename*0="0001-fixup-Allow-specifying-column-filters-for-logical-re.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkMGU5ZGY0Njc0Mzg5Y2RhOWY4OTFmNTY3OGY0NzZkMzUwOTVjNjE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA4IE1hciAyMDIyIDE2OjIzOjAxICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gZml4dXAhIEFsbG93IHNwZWNpZnlpbmcgY29sdW1uIGZpbHRlcnMgZm9yIGxv Z2ljYWwKIHJlcGxpY2F0aW9uCgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAg ICAgICAgICAgICAgICAgfCAgIDUgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbCAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jICAgICAgICB8ICAyMCArKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jICAgICAgfCAgODAgKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUmVwbGljYXRpb24uYyAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgIHwgIDIxICstLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyB8ICAxNiArLS0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgfCAgMjUgKystLQogc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmggICAgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICB8IDEzNCArKysrKysrKysrLS0tLS0tLS0t LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICB8ICA5MCAr KysrKystLS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjlfY29sdW1uX2xpc3Qu cGwgIHwgIDUwICsrKystLS0tCiAxNiBmaWxlcyBjaGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygr KSwgMjM3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMmI2MWY0MmI3MS4u YzA0M2RhMzdhZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTQzOTIsNyArNDM5Miw3IEBAIDx0 aXRsZT48c3RydWN0bmFtZT5wZ19pbmRleDwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+ CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaGlzIGlzIGFuIGFycmF5 IG9mIDxzdHJ1Y3RmaWVsZD5pbmRuYXR0czwvc3RydWN0ZmllbGQ+IHZhbHVlcyB0aGF0Ci0g ICAgICAgaW5kaWNhdGUgd2hpY2ggdGFibGUgY29sdW1ucyB0aGlzIGluZGV4IGluZGV4ZXMu ICBGb3IgZXhhbXBsZSBhIHZhbHVlCisgICAgICAgaW5kaWNhdGUgd2hpY2ggdGFibGUgY29s dW1ucyB0aGlzIGluZGV4IGluZGV4ZXMuICBGb3IgZXhhbXBsZSwgYSB2YWx1ZQogICAgICAg IG9mIDxsaXRlcmFsPjEgMzwvbGl0ZXJhbD4gd291bGQgbWVhbiB0aGF0IHRoZSBmaXJzdCBh bmQgdGhlIHRoaXJkIHRhYmxlCiAgICAgICAgY29sdW1ucyBtYWtlIHVwIHRoZSBpbmRleCBl bnRyaWVzLiAgS2V5IGNvbHVtbnMgY29tZSBiZWZvcmUgbm9uLWtleQogICAgICAgIChpbmNs dWRlZCkgY29sdW1ucy4gIEEgemVybyBpbiB0aGlzIGFycmF5IGluZGljYXRlcyB0aGF0IHRo ZQpAQCAtNjI3MSw3ICs2MjcxLDcgQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZTwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAgICAgICA8L3Bh cmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaGlzIGlzIGFuIGFycmF5IG9mIHZhbHVlcyB0 aGF0IGluZGljYXRlcyB3aGljaCB0YWJsZSBjb2x1bW5zIGFyZQotICAgICAgIHBhcnQgb2Yg dGhlIHB1YmxpY2F0aW9uLiAgRm9yIGV4YW1wbGUgYSB2YWx1ZSBvZiA8bGl0ZXJhbD4xIDM8 L2xpdGVyYWw+CisgICAgICAgcGFydCBvZiB0aGUgcHVibGljYXRpb24uICBGb3IgZXhhbXBs ZSwgYSB2YWx1ZSBvZiA8bGl0ZXJhbD4xIDM8L2xpdGVyYWw+CiAgICAgICAgd291bGQgbWVh biB0aGF0IHRoZSBmaXJzdCBhbmQgdGhlIHRoaXJkIHRhYmxlIGNvbHVtbnMgYXJlIHB1Ymxp c2hlZC4KICAgICAgICBBIG51bGwgdmFsdWUgaW5kaWNhdGVzIHRoYXQgYWxsIGNvbHVtbnMg YXJlIHB1Ymxpc2hlZC4KICAgICAgIDwvcGFyYT48L2VudHJ5PgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApp bmRleCA0OTY1OTMyMDFiLi42ZjRkNzZlZjdmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtNzAw NSw5ICs3MDA1LDggQEAgPHRpdGxlPkxvZ2ljYWwgUmVwbGljYXRpb24gTWVzc2FnZSBGb3Jt YXRzPC90aXRsZT4KIDwvbGlzdGl0ZW0+CiA8L3Zhcmxpc3RlbnRyeT4KIDwvdmFyaWFibGVs aXN0PgotICAgICAgICBOZXh0LCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UgcGFydCBhcHBlYXJz IGZvciBlYWNoIGNvbHVtbiAoZXhjZXB0Ci0gICAgICAgIGdlbmVyYXRlZCBjb2x1bW5zIGFu ZCBvdGhlciBjb2x1bW5zIHRoYXQgZG9uJ3QgYXBwZWFyIGluIHRoZSBjb2x1bW4KLSAgICAg ICAgZmlsdGVyIGxpc3QsIGZvciB0YWJsZXMgdGhhdCBoYXZlIG9uZSk6CisgICAgICAgIE5l eHQsIHRoZSBmb2xsb3dpbmcgbWVzc2FnZSBwYXJ0IGFwcGVhcnMgZm9yIGVhY2ggY29sdW1u IGluY2x1ZGVkIGluCisgICAgICAgIHRoZSBwdWJsaWNhdGlvbiAoZXhjZXB0IGdlbmVyYXRl ZCBjb2x1bW5zKToKIDx2YXJpYWJsZWxpc3Q+CiA8dmFybGlzdGVudHJ5PgogPHRlcm0+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggYWE2ODI3Yzk3 Ny4uNDcwZDUwYTI0NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJs aWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24u c2dtbApAQCAtMTE5LDEwICsxMTksMTQgQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgog ICAgICAgc3BlY2lmaWVkLCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudCB0YWJs ZXMgKGlmIGFueSkgYXJlCiAgICAgICBhZmZlY3RlZC4gIE9wdGlvbmFsbHksIDxsaXRlcmFs Pio8L2xpdGVyYWw+IGNhbiBiZSBzcGVjaWZpZWQgYWZ0ZXIgdGhlIHRhYmxlCiAgICAgICBu YW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBkZXNjZW5kYW50IHRhYmxlcyBhcmUg aW5jbHVkZWQuCisgICAgIDwvcGFyYT4KIAorICAgICA8cGFyYT4KICAgICAgIE9wdGlvbmFs bHksIGEgY29sdW1uIGxpc3QgY2FuIGJlIHNwZWNpZmllZC4gIFNlZSA8eHJlZgogICAgICAg bGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uIi8+IGZvciBkZXRhaWxzLgorICAgICA8 L3BhcmE+CiAKKyAgICAgPHBhcmE+CiAgICAgICBJZiB0aGUgb3B0aW9uYWwgPGxpdGVyYWw+ V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBpcyBzcGVjaWZpZWQsIHJvd3MgZm9yCiAgICAgICB3 aGljaCB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPgogICAgICAgZXZhbHVhdGVzIHRvIGZhbHNlIG9yIG51bGwgd2lsbCBub3Qg YmUgcHVibGlzaGVkLiBOb3RlIHRoYXQgcGFyZW50aGVzZXMKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYwppbmRleCA0ZGFiOTYyNjVmLi4zMjc1YTdjOGI5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0zMzMsNyArMzMzLDYgQEAgcHVi bGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpw cmksCiAJUHVibGljYXRpb24gKnB1YiA9IEdldFB1YmxpY2F0aW9uKHB1YmlkKTsKIAlBdHRy TnVtYmVyICphdHRhcnJheTsKIAlpbnQJCQluYXR0cyA9IDA7Ci0JaW50CQkJaTsKIAlPYmpl Y3RBZGRyZXNzIG15c2VsZiwKIAkJCQlyZWZlcmVuY2VkOwogCUxpc3QJICAgKnJlbGlkcyA9 IE5JTDsKQEAgLTM4MSw3ICszODAsNyBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lk IHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAl2YWx1ZXNbQW51bV9wZ19wdWJs aWNhdGlvbl9yZWxfcHJyZWxpZCAtIDFdID0KIAkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCk7 CiAKLQkvKiBBZGQgY29sdW1uIGZpbHRlciwgaWYgYXZhaWxhYmxlICovCisJLyogQWRkIGNv bHVtbiBsaXN0LCBpZiBhdmFpbGFibGUgKi8KIAlpZiAocHJpLT5jb2x1bW5zKQogCXsKIAkJ aW50MnZlY3RvciAqcHJhdHRyczsKQEAgLTQwOCw3ICs0MDcsNyBAQCBwdWJsaWNhdGlvbl9h ZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAlPYmpl Y3RBZGRyZXNzU2V0KG15c2VsZiwgUHVibGljYXRpb25SZWxSZWxhdGlvbklkLCBwdWJyZWxv aWQpOwogCiAJLyogQWRkIGRlcGVuZGVuY3kgb24gdGhlIGNvbHVtbnMsIGlmIGFueSBhcmUg bGlzdGVkICovCi0JZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJZm9yIChpbnQgaSA9 IDA7IGkgPCBuYXR0czsgaSsrKQogCXsKIAkJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVu Y2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIHJlbGlkLCBhdHRhcnJheVtpXSk7CiAJCXJlY29y ZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9BVVRPKTsK QEAgLTQ2MSw3ICs0NjAsNiBAQCBwdWJsaWNhdGlvbl9zZXRfdGFibGVfY29sdW1ucyhSZWxh dGlvbiBwdWJyZWwsIEhlYXBUdXBsZSBwdWJyZWx0dXAsCiAJYm9vbAkJbnVsbHNbTmF0dHNf cGdfcHVibGljYXRpb25fcmVsXTsKIAlib29sCQlyZXBsYWNlc1tOYXR0c19wZ19wdWJsaWNh dGlvbl9yZWxdOwogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25fcmVsXTsK LQlpbnQJCQlpOwogCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwogCW1l bXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOwpAQCAtNDgwLDE0ICs0NzgsMTQg QEAgcHVibGljYXRpb25fc2V0X3RhYmxlX2NvbHVtbnMoUmVsYXRpb24gcHVicmVsLCBIZWFw VHVwbGUgcHVicmVsdHVwLAogCX0KIAllbHNlCiAJewotCQlPYmplY3RBZGRyZXNzIAlteXNl bGYsCisJCU9iamVjdEFkZHJlc3MJbXlzZWxmLAogCQkJCQkJcmVmZXJlbmNlZDsKIAkJaW50 MnZlY3RvcgkgICAqcHJhdHRyczsKIAkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwJcHVicmVs OwogCiAJCXB1YmxpY2F0aW9uX3RyYW5zbGF0ZV9jb2x1bW5zKHRhcmdldHJlbCwgY29sdW1u cywgJm5hdHRzLCAmYXR0YXJyYXkpOwogCi0JCS8qIFhYWCAicHViIiBpcyBsZWFrZWQgaGVy ZSAqLworCQkvKiBYWFggInB1YiIgaXMgbGVha2VkIGhlcmUgPz8/ICovCiAKIAkJcHJhdHRy cyA9IGJ1aWxkaW50MnZlY3RvcihhdHRhcnJheSwgbmF0dHMpOwogCQl2YWx1ZXNbQW51bV9w Z19wdWJsaWNhdGlvbl9yZWxfcHJhdHRycyAtIDFdID0gUG9pbnRlckdldERhdHVtKHByYXR0 cnMpOwpAQCAtNDk2LDcgKzQ5NCw3IEBAIHB1YmxpY2F0aW9uX3NldF90YWJsZV9jb2x1bW5z KFJlbGF0aW9uIHB1YnJlbCwgSGVhcFR1cGxlIHB1YnJlbHR1cCwKIAkJcHVicmVsID0gKEZv cm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QocHVicmVsdHVwKTsKIAkJT2JqZWN0 QWRkcmVzc1NldChteXNlbGYsIFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgcHVicmVsLT5v aWQpOwogCi0JCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCQlmb3IgKGludCBpID0g MDsgaSA8IG5hdHRzOyBpKyspCiAJCXsKIAkJCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJl bmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLAogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGlkKHRh cmdldHJlbCksIGF0dGFycmF5W2ldKTsKQEAgLTcxMywxMSArNzExLDEwIEBAIEdldFJlbGF0 aW9uQ29sdW1uUGFydGlhbFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiB7CiAJQ2F0Q0xpc3Qg ICAqcHVicmVsbGlzdDsKIAlMaXN0CSAgICpwdWJzID0gTklMOwotCWludAkJCWk7CiAKIAlw dWJyZWxsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShQVUJMSUNBVElPTlJFTE1BUCwKIAkJ CQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7Ci0JZm9yIChpID0gMDsgaSA8IHB1 YnJlbGxpc3QtPm5fbWVtYmVyczsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgcHVicmVs bGlzdC0+bl9tZW1iZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnJlbGxp c3QtPm1lbWJlcnNbaV0tPnR1cGxlOwogCQlib29sCQlpc251bGw7CkBAIC03MjcsNyArNzI0 LDcgQEAgR2V0UmVsYXRpb25Db2x1bW5QYXJ0aWFsUHVibGljYXRpb25zKE9pZCByZWxpZCkK IAkJCQkJCQkgICBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLAogCQkJCQkJCSAg ICZpc251bGwpOwogCi0JCS8qIG5vIGNvbHVtbiBmaWx0ZXIgZm9yIHRoaXMgcHVibGljYXRp b25zL3JlbGF0aW9uICovCisJCS8qIG5vIGNvbHVtbiBsaXN0IGZvciB0aGlzIHB1YmxpY2F0 aW9ucy9yZWxhdGlvbiAqLwogCQlpZiAoaXNudWxsKQogCQkJY29udGludWU7CiAKQEAgLTc1 Niw3ICs3NTMsNiBAQCBHZXRSZWxhdGlvbkNvbHVtbkxpc3RJblB1YmxpY2F0aW9uKE9pZCBy ZWxpZCwgT2lkIHB1YmlkKQogCWludAkJCW5lbGVtczsKIAlpbnQxNgkgICAqZWxlbXM7CiAJ TGlzdAkgICAqYXR0bm9zID0gTklMOwotCWludAkJCWk7CiAKIAl0dXAgPSBTZWFyY2hTeXND YWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCiAJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocmVs aWQpLApAQCAtNzc0LDcgKzc3MCw3IEBAIEdldFJlbGF0aW9uQ29sdW1uTGlzdEluUHVibGlj YXRpb24oT2lkIHJlbGlkLCBPaWQgcHViaWQpCiAJbmVsZW1zID0gQVJSX0RJTVMoYXJyKVsw XTsKIAllbGVtcyA9IChpbnQxNiAqKSBBUlJfREFUQV9QVFIoYXJyKTsKIAotCWZvciAoaSA9 IDA7IGkgPCBuZWxlbXM7IGkrKykKKwlmb3IgKGludCBpID0gMDsgaSA8IG5lbGVtczsgaSsr KQogCQlhdHRub3MgPSBsYXBwZW5kX29pZChhdHRub3MsIGVsZW1zW2ldKTsKIAogCVJlbGVh c2VTeXNDYWNoZSh0dXApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YwppbmRleCBmYTE0NjJhZTU0Li5iMzJlYzI3NTU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMjk2LDcgKzI5Niw3IEBAIGNvbnRhaW5faW52YWxp ZF9yZmNvbHVtbl93YWxrZXIoTm9kZSAqbm9kZSwgcmZfY29udGV4dCAqY29udGV4dCkKICAq IFJldHVybnMgdHJ1ZSBpZiBhbnkgaW52YWxpZCBjb2x1bW4gaXMgZm91bmQuCiAgKi8KIGJv b2wKLWNvbnRhaW5faW52YWxpZF9yZmNvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0 aW9uLCBMaXN0ICphbmNlc3RvcnMsCitwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4o T2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCQkJ IGJvb2wgcHVidmlhcm9vdCkKIHsKIAlIZWFwVHVwbGUJcmZ0dXBsZTsKQEAgLTM2OCwyOCAr MzY4LDI4IEBAIGNvbnRhaW5faW52YWxpZF9yZmNvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9u IHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiB9CiAKIC8qCi0gKiBDaGVjayBpZiBhbGwg Y29sdW1ucyByZWZlcmVuY2VkIGluIHRoZSBjb2x1bW4gZmlsdGVyIGFyZSBwYXJ0IG9mIHRo ZQorICogQ2hlY2sgaWYgYWxsIGNvbHVtbnMgcmVmZXJlbmNlZCBpbiB0aGUgY29sdW1uIGxp c3QgYXJlIHBhcnQgb2YgdGhlCiAgKiBSRVBMSUNBIElERU5USVRZIGluZGV4IG9yIG5vdC4K ICAqCiAgKiBSZXR1cm5zIHRydWUgaWYgYW55IGludmFsaWQgY29sdW1uIGlzIGZvdW5kLgog ICovCiBib29sCi1jb250YWluX2ludmFsaWRfY2Zjb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlv biByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAorcHViX2NvbGxpc3RfY29udGFpbnNfaW52 YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0 b3JzLAogCQkJCQkJIGJvb2wgcHVidmlhcm9vdCkKIHsKLQlIZWFwVHVwbGUJY2Z0dXBsZTsK KwlIZWFwVHVwbGUJdHVwbGU7CiAJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJl bGF0aW9uKTsKIAlPaWQJCQlwdWJsaXNoX2FzX3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbik7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7Ci0JRGF0dW0JCWNmZGF0dW07Ci0J Ym9vbAkJY2Zpc251bGw7CisJRGF0dW0JCWRhdHVtOworCWJvb2wJCWlzbnVsbDsKIAogCS8q CiAJICogRm9yIGEgcGFydGl0aW9uLCBpZiBwdWJ2aWFyb290IGlzIHRydWUsIGZpbmQgdGhl IHRvcG1vc3QgYW5jZXN0b3IgdGhhdAotCSAqIGlzIHB1Ymxpc2hlZCB2aWEgdGhpcyBwdWJs aWNhdGlvbiBhcyB3ZSBuZWVkIHRvIHVzZSBpdHMgY29sdW1uIGZpbHRlcgorCSAqIGlzIHB1 Ymxpc2hlZCB2aWEgdGhpcyBwdWJsaWNhdGlvbiBhcyB3ZSBuZWVkIHRvIHVzZSBpdHMgY29s dW1uIGxpc3QKIAkgKiBmb3IgdGhlIGNoYW5nZXMuCiAJICoKLQkgKiBOb3RlIHRoYXQgZXZl biB0aG91Z2ggdGhlIGNvbHVtbiBmaWx0ZXIgdXNlZCBpcyBmb3IgYW4gYW5jZXN0b3IsIHRo ZQorCSAqIE5vdGUgdGhhdCBldmVuIHRob3VnaCB0aGUgY29sdW1uIGxpc3QgdXNlZCBpcyBm b3IgYW4gYW5jZXN0b3IsIHRoZQogCSAqIFJFUExJQ0EgSURFTlRJVFkgdXNlZCB3aWxsIGJl IGZvciB0aGUgYWN0dWFsIGNoaWxkIHRhYmxlLgogCSAqLwogCWlmIChwdWJ2aWFyb290ICYm IHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQpAQCAtNDAwLDI0ICs0MDAsMjQg QEAgY29udGFpbl9pbnZhbGlkX2NmY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRp b24sIExpc3QgKmFuY2VzdG9ycywKIAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKIAl9 CiAKLQljZnR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCXR1 cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAogCQkJCQkJCSAgT2Jq ZWN0SWRHZXREYXR1bShwdWJsaXNoX2FzX3JlbGlkKSwKIAkJCQkJCQkgIE9iamVjdElkR2V0 RGF0dW0ocHViaWQpKTsKIAotCWlmICghSGVhcFR1cGxlSXNWYWxpZChjZnR1cGxlKSkKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQljZmRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCBjZnR1cGxlLAorCWRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCB0dXBsZSwKIAkJCQkJ CQkgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMsCi0JCQkJCQkJICAmY2Zpc251 bGwpOworCQkJCQkJCSAgJmlzbnVsbCk7CiAKLQlpZiAoIWNmaXNudWxsKQorCWlmICghaXNu dWxsKQogCXsKIAkJaW50CXg7CiAJCUJpdG1hcHNldCAgKmlkYXR0cnM7CiAJCUJpdG1hcHNl dCAgKmNvbHVtbnMgPSBOVUxMOwogCi0JCS8qIFdpdGggUkVQTElDQSBJREVOVElUWSBGVUxM LCBubyBjb2x1bW4gZmlsdGVyIGlzIGFsbG93ZWQuICovCisJCS8qIFdpdGggUkVQTElDQSBJ REVOVElUWSBGVUxMLCBubyBjb2x1bW4gbGlzdCBpcyBhbGxvd2VkLiAqLwogCQlpZiAocmVs YXRpb24tPnJkX3JlbC0+cmVscmVwbGlkZW50ID09IFJFUExJQ0FfSURFTlRJVFlfRlVMTCkK IAkJCXJlc3VsdCA9IHRydWU7CiAKQEAgLTQyNiw3ICs0MjYsNyBAQCBjb250YWluX2ludmFs aWRfY2Zjb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0 b3JzLAogCQkJaW50CQkJbmVsZW1zOwogCQkJaW50MTYJICAgKmVsZW1zOwogCi0JCQlhcnIg PSBEYXR1bUdldEFycmF5VHlwZVAoY2ZkYXR1bSk7CisJCQlhcnIgPSBEYXR1bUdldEFycmF5 VHlwZVAoZGF0dW0pOwogCQkJbmVsZW1zID0gQVJSX0RJTVMoYXJyKVswXTsKIAkJCWVsZW1z ID0gKGludDE2ICopIEFSUl9EQVRBX1BUUihhcnIpOwogCkBAIC00NDEsNyArNDQxLDcgQEAg Y29udGFpbl9pbnZhbGlkX2NmY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24s IExpc3QgKmFuY2VzdG9ycywKIAogCQkvKgogCQkgKiBBdHRudW1zIGluIHRoZSBiaXRtYXAg cmV0dXJuZWQgYnkgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAgYXJlCi0JCSAqIG9mZnNl dCAodG8gaGFuZGxlIHN5c3RlbSBjb2x1bW5zIHRoZSB1c3VhbCB3YXkpLCB3aGlsZSBjb2x1 bW4gZmlsdGVyCisJCSAqIG9mZnNldCAodG8gaGFuZGxlIHN5c3RlbSBjb2x1bW5zIHRoZSB1 c3VhbCB3YXkpLCB3aGlsZSBjb2x1bW4gbGlzdAogCQkgKiBkb2VzIG5vdCB1c2Ugb2Zmc2V0 LCBzbyB3ZSBjYW4ndCBkbyBibXNfaXNfc3Vic2V0KCkuIEluc3RlYWQsIHdlIGhhdmUKIAkJ ICogdG8gbG9vcCBvdmVyIHRoZSBpZGF0dHJzIGFuZCBjaGVjayBhbGwgb2YgdGhlbSBhcmUg aW4gdGhlIGZpbHRlci4KIAkJICovCkBAIC00NzksNyArNDc5LDcgQEAgY29udGFpbl9pbnZh bGlkX2NmY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2Vz dG9ycywKIAkJYm1zX2ZyZWUoY29sdW1ucyk7CiAJfQogCi0JUmVsZWFzZVN5c0NhY2hlKGNm dHVwbGUpOworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CiAKIAlyZXR1cm4gcmVzdWx0Owog fQpAQCAtNzMzLDcgKzczMyw3IEBAIFRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhMaXN0ICp0 YWJsZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogICogWFhYIFRoZSBuYW1lIGlzIGEg Yml0IG1pc2xlYWRpbmcsIGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5IHRyYW5zZm9ybQogICog YW55dGhpbmcgaGVyZSAtIHdlIG1lcmVseSBjaGVjayB0aGUgY29sdW1uIGxpc3QgaXMgY29t cGF0aWJsZSB3aXRoIHRoZQogICogZGVmaW5pdGlvbiBvZiB0aGUgcHVibGljYXRpb24gKHdp dGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q9ZmFsc2UpCi0gKiB3ZSBvbmx5IGFsbG93 IGZpbHRlcnMgb24gdGhlIGxlYWYgcmVsYXRpb25zLiBTbyBtYXliZSByZW5hbWUgaXQ/Cisg KiB3ZSBvbmx5IGFsbG93IGNvbHVtbiBsaXN0cyBvbiB0aGUgbGVhZiByZWxhdGlvbnMuIFNv IG1heWJlIHJlbmFtZSBpdD8KICAqLwogc3RhdGljIHZvaWQKIFRyYW5zZm9ybVB1YkNvbHVt bkxpc3QoTGlzdCAqdGFibGVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKQEAgLTc1MCw3 ICs3NTAsNyBAQCBUcmFuc2Zvcm1QdWJDb2x1bW5MaXN0KExpc3QgKnRhYmxlcywgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAKIAkJLyoKIAkJICogSWYgdGhlIHB1YmxpY2F0aW9uIGRv ZXNuJ3QgcHVibGlzaCBjaGFuZ2VzIHZpYSB0aGUgcm9vdCBwYXJ0aXRpb25lZAotCQkgKiB0 YWJsZSwgdGhlIHBhcnRpdGlvbidzIGNvbHVtbiBmaWx0ZXIgd2lsbCBiZSB1c2VkLiBTbyBk aXNhbGxvdyB1c2luZworCQkgKiB0YWJsZSwgdGhlIHBhcnRpdGlvbidzIGNvbHVtbiBsaXN0 IHdpbGwgYmUgdXNlZC4gU28gZGlzYWxsb3cgdXNpbmcKIAkJICogdGhlIGNvbHVtbiBsaXN0 IG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIHRoaXMgY2FzZS4KIAkJICovCiAJCWlmICghcHVi dmlhcm9vdCAmJgpAQCAtOTg4LDggKzk4OCw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAKIAkv KgogCSAqIElmIHRoZSBwdWJsaWNhdGlvbiBkb2Vzbid0IHB1Ymxpc2ggY2hhbmdlcyB2aWEg dGhlIHJvb3QgcGFydGl0aW9uZWQKLQkgKiB0YWJsZSwgdGhlIHBhcnRpdGlvbidzIHJvdyBh bmQgY29sdW1uIGZpbHRlciB3aWxsIGJlIHVzZWQuIFNvIGRpc2FsbG93Ci0JICogdXNpbmcg V0hFUkUgY2xhdXNlIGFuZCBjb2x1bW4gZmlsdGVycyBvbiBwYXJ0aXRpb25lZCB0YWJsZSBp biB0aGlzIGNhc2UuCisJICogdGFibGUsIHRoZSBwYXJ0aXRpb24ncyByb3cgZmlsdGVyIGFu ZCBjb2x1bW4gbGlzdCB3aWxsIGJlIHVzZWQuIFNvIGRpc2FsbG93CisJICogdXNpbmcgV0hF UkUgY2xhdXNlIGFuZCBjb2x1bW4gbGlzdHMgb24gcGFydGl0aW9uZWQgdGFibGUgaW4gdGhp cyBjYXNlLgogCSAqLwogCWlmICghcHViZm9ybS0+cHViYWxsdGFibGVzICYmIHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290X2dpdmVuICYmCiAJCSFwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCkKQEAgLTk5Nyw3ICs5OTcsNyBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQkvKgogCQkg KiBMb2NrIHRoZSBwdWJsaWNhdGlvbiBzbyBub2JvZHkgZWxzZSBjYW4gZG8gYW55dGhpbmcg d2l0aCBpdC4gVGhpcwogCQkgKiBwcmV2ZW50cyBjb25jdXJyZW50IGFsdGVyIHRvIGFkZCBw YXJ0aXRpb25lZCB0YWJsZShzKSB3aXRoIFdIRVJFCi0JCSAqIGNsYXVzZShzKSBhbmQvb3Ig Y29sdW1uIGZpbHRlcnMgd2hpY2ggd2UgZG9uJ3QgYWxsb3cgd2hlbiBub3QKKwkJICogY2xh dXNlKHMpIGFuZC9vciBjb2x1bW4gbGlzdHMgd2hpY2ggd2UgZG9uJ3QgYWxsb3cgd2hlbiBu b3QKIAkJICogcHVibGlzaGluZyB2aWEgcm9vdC4KIAkJICovCiAJCUxvY2tEYXRhYmFzZU9i amVjdChQdWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1YmZvcm0tPm9pZCwgMCwKQEAgLTEwMTAs NyArMTAxMCw3IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCXsKIAkJCUhlYXBUdXBsZQlyZnR1 cGxlOwogCQkJT2lkCQkJcmVsaWQgPSBsZmlyc3Rfb2lkKGxjKTsKLQkJCWJvb2wJCWhhc19j b2x1bW5fZmlsdGVyOworCQkJYm9vbAkJaGFzX2NvbHVtbl9saXN0OwogCQkJYm9vbAkJaGFz X3Jvd19maWx0ZXI7CiAKIAkJCXJmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJ T05SRUxNQVAsCkBAIC0xMDIwLDExICsxMDIwLDExIEBAIEFsdGVyUHVibGljYXRpb25PcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJ CQloYXNfcm93X2ZpbHRlcgogCQkJCT0gIWhlYXBfYXR0aXNudWxsKHJmdHVwbGUsIEFudW1f cGdfcHVibGljYXRpb25fcmVsX3BycXVhbCwgTlVMTCk7CiAKLQkJCWhhc19jb2x1bW5fZmls dGVyCisJCQloYXNfY29sdW1uX2xpc3QKIAkJCQk9ICFoZWFwX2F0dGlzbnVsbChyZnR1cGxl LCBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLCBOVUxMKTsKIAogCQkJaWYgKEhl YXBUdXBsZUlzVmFsaWQocmZ0dXBsZSkgJiYKLQkJCQkoaGFzX3Jvd19maWx0ZXIgfHwgaGFz X2NvbHVtbl9maWx0ZXIpKQorCQkJCShoYXNfcm93X2ZpbHRlciB8fCBoYXNfY29sdW1uX2xp c3QpKQogCQkJewogCQkJCUhlYXBUdXBsZQl0dXBsZTsKIApAQCAtMTA0NiwxMyArMTA0Niwx MyBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10LAogCQkJCQkJCQkJCSAgICJwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCIpKSk7CiAKIAkJCQkJaWYgKChyZWxmb3JtLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUpICYmCi0JCQkJCQloYXNfY29sdW1uX2ZpbHRlcikKKwkJ CQkJCWhhc19jb2x1bW5fbGlzdCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkJCQkgZXJy bXNnKCJjYW5ub3Qgc2V0ICVzIGZvciBwdWJsaWNhdGlvbiBcIiVzXCIiLAogCQkJCQkJCQkJ CSJwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlIiwKIAkJCQkJCQkJCQlzdG10 LT5wdWJuYW1lKSwKLQkJCQkJCQkJIGVycmRldGFpbCgiVGhlIHB1YmxpY2F0aW9uIGNvbnRh aW5zIGEgY29sdW1uIGZpbHRlciBmb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIgIgor CQkJCQkJCQkgZXJyZGV0YWlsKCJUaGUgcHVibGljYXRpb24gY29udGFpbnMgYSBjb2x1bW4g bGlzdCBmb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIgIgogCQkJCQkJCQkJCSAgICJ3 aGljaCBpcyBub3QgYWxsb3dlZCB3aGVuICVzIGlzIGZhbHNlLiIsCiAJCQkJCQkJCQkJICAg TmFtZVN0cihyZWxmb3JtLT5yZWxuYW1lKSwKIAkJCQkJCQkJCQkgICAicHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QiKSkpOwpAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgQWx0ZXJQdWJsaWNh dGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwKIAogCS8qCiAJICogRklYTUUgY2hlY2sgcHViYWN0aW9ucyB2cy4gcmVwbGljYSBp ZGVudGl0eSwgdG8gZW5zdXJlIHRoZSByZXBsaWNhCi0JICogaWRlbnRpdHkgaXMgaW5jbHVk ZWQgaW4gdGhlIGNvbHVtbiBmaWx0ZXIuIE9ubHkgZG8gdGhpcyBmb3IgdXBkYXRlCisJICog aWRlbnRpdHkgaXMgaW5jbHVkZWQgaW4gdGhlIGNvbHVtbiBsaXN0LiBPbmx5IGRvIHRoaXMg Zm9yIHVwZGF0ZQogCSAqIGFuZCBkZWxldGUgcHVibGljYXRpb25zLiBTZWUgY2hlY2tfcHVi bGljYXRpb25fY29sdW1ucy4KIAkgKgogCSAqIFhYWCBUaGlzIGlzIG5lZWRlZCBiZWNhdXNl IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IG1heSBjaGFuZ2UsCkBAIC0xMjYxLDcgKzEy NjEsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LCBIZWFwVHVwbGUgdHVwLAogCiAJCQkvKgogCQkJICogU2VlIGlmIHRoZSBleGlzdGlu ZyByZWxhdGlvbiBjdXJyZW50bHkgaGFzIGEgV0hFUkUgY2xhdXNlIG9yIGEKLQkJCSAqIGNv bHVtbiBmaWx0ZXIuIFdlIG5lZWQgdG8gY29tcGFyZSB0aG9zZSB0b28uCisJCQkgKiBjb2x1 bW4gbGlzdC4gV2UgbmVlZCB0byBjb21wYXJlIHRob3NlIHRvby4KIAkJCSAqLwogCQkJaWYg KEhlYXBUdXBsZUlzVmFsaWQocmZ0dXBsZSkpCiAJCQl7CkBAIC0xMzEzLDcgKzEzMTMsNyBA QCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBI ZWFwVHVwbGUgdHVwLAogCQkJCW5ld3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChuZXdwdWJy ZWwtPnJlbGF0aW9uKTsKIAogCQkJCS8qCi0JCQkJICogSWYgdGhlIG5ldyBwdWJsaWNhdGlv biBoYXMgY29sdW1uIGZpbHRlciwgdHJhbnNmb3JtIGl0IHRvCisJCQkJICogSWYgdGhlIG5l dyBwdWJsaWNhdGlvbiBoYXMgY29sdW1uIGxpc3QsIHRyYW5zZm9ybSBpdCB0bwogCQkJCSAq IGEgYml0bWFwIHRvby4KIAkJCQkgKi8KIAkJCQlpZiAobmV3cHVicmVsLT5jb2x1bW5zKQpA QCAtMTcxMCw3ICsxNzEwLDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJTGlz dAkgICAqcmVscyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlMaXN0CSAgICpyZWxpZHNf d2l0aF9yZiA9IE5JTDsKLQlMaXN0CSAgICpyZWxpZHNfd2l0aF9jZiA9IE5JTDsKKwlMaXN0 CSAgICpyZWxpZHNfd2l0aF9jb2xsaXN0ID0gTklMOwogCiAJLyoKIAkgKiBPcGVuLCBzaGFy ZS1sb2NrLCBhbmQgY2hlY2sgYWxsIHRoZSBleHBsaWNpdGx5LXNwZWNpZmllZCByZWxhdGlv bnMKQEAgLTE3NDUsMTEgKzE3NDUsMTEgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMp CiAJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgV0hFUkUgY2xhdXNl cyBmb3IgdGFibGUgXCIlc1wiIiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKIAotCQkJLyogRGlzYWxsb3cgZHVwbGljYXRlIHRhYmxlcyBpZiB0aGVyZSBh cmUgYW55IHdpdGggY29sdW1uIGZpbHRlcnMuICovCi0JCQlpZiAodC0+Y29sdW1ucyB8fCBs aXN0X21lbWJlcl9vaWQocmVsaWRzX3dpdGhfY2YsIG15cmVsaWQpKQorCQkJLyogRGlzYWxs b3cgZHVwbGljYXRlIHRhYmxlcyBpZiB0aGVyZSBhcmUgYW55IHdpdGggY29sdW1uIGxpc3Rz LiAqLworCQkJaWYgKHQtPmNvbHVtbnMgfHwgbGlzdF9tZW1iZXJfb2lkKHJlbGlkc193aXRo X2NvbGxpc3QsIG15cmVsaWQpKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAotCQkJCQkJIGVycm1zZygiY29uZmxpY3Rp bmcgb3IgcmVkdW5kYW50IGNvbHVtbiBmaWx0ZXJzIGZvciB0YWJsZSBcIiVzXCIiLAorCQkJ CQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IGNvbHVtbiBsaXN0cyBmb3Ig dGFibGUgXCIlc1wiIiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkp KTsKIAogCQkJdGFibGVfY2xvc2UocmVsLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwpA QCAtMTc2Nyw3ICsxNzY3LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJCQly ZWxpZHNfd2l0aF9yZiA9IGxhcHBlbmRfb2lkKHJlbGlkc193aXRoX3JmLCBteXJlbGlkKTsK IAogCQlpZiAodC0+Y29sdW1ucykKLQkJCXJlbGlkc193aXRoX2NmID0gbGFwcGVuZF9vaWQo cmVsaWRzX3dpdGhfY2YsIG15cmVsaWQpOworCQkJcmVsaWRzX3dpdGhfY29sbGlzdCA9IGxh cHBlbmRfb2lkKHJlbGlkc193aXRoX2NvbGxpc3QsIG15cmVsaWQpOwogCiAJCS8qCiAJCSAq IEFkZCBjaGlsZHJlbiBvZiB0aGlzIHJlbCwgaWYgcmVxdWVzdGVkLCBzbyB0aGF0IHRoZXkg dG9vIGFyZSBhZGRlZApAQCAtMTgwOSwxNSArMTgwOSwxNSBAQCBPcGVuVGFibGVMaXN0KExp c3QgKnRhYmxlcykKIAkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkp OwogCiAJCQkJCS8qCi0JCQkJCSAqIFdlIGRvbid0IGFsbG93IHRvIHNwZWNpZnkgY29sdW1u IGZpbHRlciBmb3IgYm90aCBwYXJlbnQKKwkJCQkJICogV2UgZG9uJ3QgYWxsb3cgdG8gc3Bl Y2lmeSBjb2x1bW4gbGlzdCBmb3IgYm90aCBwYXJlbnQKIAkJCQkJICogYW5kIGNoaWxkIHRh YmxlIGF0IHRoZSBzYW1lIHRpbWUgYXMgaXQgaXMgbm90IHZlcnkKIAkJCQkJICogY2xlYXIg d2hpY2ggb25lIHNob3VsZCBiZSBnaXZlbiBwcmVmZXJlbmNlLgogCQkJCQkgKi8KIAkJCQkJ aWYgKGNoaWxkcmVsaWQgIT0gbXlyZWxpZCAmJgotCQkJCQkJKHQtPmNvbHVtbnMgfHwgbGlz dF9tZW1iZXJfb2lkKHJlbGlkc193aXRoX2NmLCBjaGlsZHJlbGlkKSkpCisJCQkJCQkodC0+ Y29sdW1ucyB8fCBsaXN0X21lbWJlcl9vaWQocmVsaWRzX3dpdGhfY29sbGlzdCwgY2hpbGRy ZWxpZCkpKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9EVVBMSUNBVEVfT0JKRUNUKSwKLQkJCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3Ig cmVkdW5kYW50IGNvbHVtbiBmaXRlcnMgZm9yIHRhYmxlIFwiJXNcIiIsCisJCQkJCQkJCSBl cnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBjb2x1bW4gbGlzdHMgZm9yIHRhYmxl IFwiJXNcIiIsCiAJCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsK IAogCQkJCQljb250aW51ZTsKQEAgLTE4MzcsOCArMTgzNyw4IEBAIE9wZW5UYWJsZUxpc3Qo TGlzdCAqdGFibGVzKQogCQkJCWlmICh0LT53aGVyZUNsYXVzZSkKIAkJCQkJcmVsaWRzX3dp dGhfcmYgPSBsYXBwZW5kX29pZChyZWxpZHNfd2l0aF9yZiwgY2hpbGRyZWxpZCk7CiAKLQkJ CQlpZiAodC0+d2hlcmVDbGF1c2UpCi0JCQkJCXJlbGlkc193aXRoX2NmID0gbGFwcGVuZF9v aWQocmVsaWRzX3dpdGhfY2YsIGNoaWxkcmVsaWQpOworCQkJCWlmICh0LT5jb2x1bW5zKQor CQkJCQlyZWxpZHNfd2l0aF9jb2xsaXN0ID0gbGFwcGVuZF9vaWQocmVsaWRzX3dpdGhfY29s bGlzdCwgY2hpbGRyZWxpZCk7CiAJCQl9CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4IDFkOGQ0YWYzNDEuLjNlMjgyZWQ5OWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC01OTIsMjQgKzU5Miwy NCBAQCBDaGVja0NtZFJlcGxpY2FJZGVudGl0eShSZWxhdGlvbiByZWwsIENtZFR5cGUgY21k KQogCQkJCSBlcnJtc2coImNhbm5vdCB1cGRhdGUgdGFibGUgXCIlc1wiIiwKIAkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAogCQkJCSBlcnJkZXRhaWwoIkNvbHVtbiB1 c2VkIGluIHRoZSBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIGlzIG5vdCBwYXJ0IG9m IHRoZSByZXBsaWNhIGlkZW50aXR5LiIpKSk7Ci0JZWxzZSBpZiAoY21kID09IENNRF9VUERB VEUgJiYgIXB1YmRlc2MuY2ZfdmFsaWRfZm9yX3VwZGF0ZSkKKwllbHNlIGlmIChjbWQgPT0g Q01EX1VQREFURSAmJiAhcHViZGVzYy5jb2xzX3ZhbGlkX2Zvcl91cGRhdGUpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVO Q0UpLAogCQkJCSBlcnJtc2coImNhbm5vdCB1cGRhdGUgdGFibGUgXCIlc1wiIiwKIAkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAotCQkJCSBlcnJkZXRhaWwoIkNvbHVt biBmaWx0ZXIgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJl cGxpY2EgaWRlbnRpdHkuIikpKTsKKwkJCQkgZXJyZGV0YWlsKCJDb2x1bW4gbGlzdCB1c2Vk IGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0 eS4iKSkpOwogCWVsc2UgaWYgKGNtZCA9PSBDTURfREVMRVRFICYmICFwdWJkZXNjLnJmX3Zh bGlkX2Zvcl9kZWxldGUpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAogCQkJCSBlcnJtc2coImNhbm5vdCBkZWxl dGUgZnJvbSB0YWJsZSBcIiVzXCIiLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSksCiAJCQkJIGVycmRldGFpbCgiQ29sdW1uIHVzZWQgaW4gdGhlIHB1YmxpY2F0aW9u IFdIRVJFIGV4cHJlc3Npb24gaXMgbm90IHBhcnQgb2YgdGhlIHJlcGxpY2EgaWRlbnRpdHku IikpKTsKLQllbHNlIGlmIChjbWQgPT0gQ01EX0RFTEVURSAmJiAhcHViZGVzYy5jZl92YWxp ZF9mb3JfZGVsZXRlKQorCWVsc2UgaWYgKGNtZCA9PSBDTURfREVMRVRFICYmICFwdWJkZXNj LmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCiAJCQkJIGVycm1zZygiY2Fu bm90IGRlbGV0ZSBmcm9tIHRhYmxlIFwiJXNcIiIsCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpKSwKLQkJCQkgZXJyZGV0YWlsKCJDb2x1bW4gZmlsdGVyIHVzZWQgYnkg dGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LiIp KSk7CisJCQkJIGVycmRldGFpbCgiQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRp b24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuIikpKTsKIAogCS8qIElm IHJlbGF0aW9uIGhhcyByZXBsaWNhIGlkZW50aXR5IHdlIGFyZSBhbHdheXMgZ29vZC4gKi8K IAlpZiAoT2lkSXNWYWxpZChSZWxhdGlvbkdldFJlcGxpY2FJbmRleChyZWwpKSkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCAxZTg3ODVmZjlhLi44 MTZkNDYxYWNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j CkBAIC00MCw4ICs0MCwxMiBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3JlYWRfdHVwbGUo U3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFR1cGxlRGF0YSAqdHVwbGUpOwogc3RhdGljIHZv aWQgbG9naWNhbHJlcF93cml0ZV9uYW1lc3BhY2UoU3RyaW5nSW5mbyBvdXQsIE9pZCBuc3Bp ZCk7CiBzdGF0aWMgY29uc3QgY2hhciAqbG9naWNhbHJlcF9yZWFkX25hbWVzcGFjZShTdHJp bmdJbmZvIGluKTsKIAotI2RlZmluZQlDb2x1bW5JbkZpbHRlcihjb2x1bW5zLCBhdHRudW0p IFwKLQkJKCgoY29sdW1ucykgPT0gTlVMTCkgfHwgKGJtc19pc19tZW1iZXIoKGF0dG51bSks IChjb2x1bW5zKSkpKQorCitzdGF0aWMgYm9vbAorY29sdW1uX2luX3NldChpbnQgYXR0bnVt LCBCaXRtYXBzZXQgKmNvbHVtbnMpCit7CisJcmV0dXJuIChjb2x1bW5zID09IE5VTEwgfHwg Ym1zX2lzX21lbWJlcihhdHRudW0sIGNvbHVtbnMpKTsKK30KIAogCiAvKgpAQCAtNzc0LDkg Kzc3OCw5IEBAIGxvZ2ljYWxyZXBfd3JpdGVfdHVwbGUoU3RyaW5nSW5mbyBvdXQsIFJlbGF0 aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCWlmIChhdHQtPmF0dGlzZHJvcHBl ZCB8fCBhdHQtPmF0dGdlbmVyYXRlZCkKIAkJCWNvbnRpbnVlOwogCi0JCS8qIHNraXAgY29s dW1ucyBub3QgaW5jbHVkZWQgaW4gdGhlIGNvbHVtbiBmaWx0ZXIgKi8KLQkJaWYgKCFDb2x1 bW5JbkZpbHRlcihjb2x1bW5zLCBhdHQtPmF0dG51bSkpCisJCWlmICghY29sdW1uX2luX3Nl dChhdHQtPmF0dG51bSwgY29sdW1ucykpCiAJCQljb250aW51ZTsKKwogCQlubGl2ZWF0dHMr KzsKIAl9CiAJcHFfc2VuZGludDE2KG91dCwgbmxpdmVhdHRzKTsKQEAgLTc5NSw4ICs3OTks NyBAQCBsb2dpY2FscmVwX3dyaXRlX3R1cGxlKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiBy ZWwsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwg YXR0LT5hdHRnZW5lcmF0ZWQpCiAJCQljb250aW51ZTsKIAotCQkvKiBza2lwIGNvbHVtbnMg bm90IGluY2x1ZGVkIGluIHRoZSBjb2x1bW4gZmlsdGVyICovCi0JCWlmICghQ29sdW1uSW5G aWx0ZXIoY29sdW1ucywgYXR0LT5hdHRudW0pKQorCQlpZiAoIWNvbHVtbl9pbl9zZXQoYXR0 LT5hdHRudW0sIGNvbHVtbnMpKQogCQkJY29udGludWU7CiAKIAkJaWYgKGlzbnVsbFtpXSkK QEAgLTkzOCw4ICs5NDEsNyBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8g b3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAkJaWYgKGF0dC0+YXR0 aXNkcm9wcGVkIHx8IGF0dC0+YXR0Z2VuZXJhdGVkKQogCQkJY29udGludWU7CiAKLQkJLyog c2tpcCBjb2x1bW5zIG5vdCBpbmNsdWRlZCBpbiB0aGUgY29sdW1uIGZpbHRlciAqLwotCQlp ZiAoIUNvbHVtbkluRmlsdGVyKGNvbHVtbnMsIGF0dC0+YXR0bnVtKSkKKwkJaWYgKCFjb2x1 bW5faW5fc2V0KGF0dC0+YXR0bnVtLCBjb2x1bW5zKSkKIAkJCWNvbnRpbnVlOwogCiAJCW5s aXZlYXR0cysrOwpAQCAtOTYwLDggKzk2Miw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMo U3RyaW5nSW5mbyBvdXQsIFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCQlp ZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCiAJCQljb250aW51 ZTsKIAotCQkvKiBza2lwIGNvbHVtbnMgbm90IGluY2x1ZGVkIGluIHRoZSBjb2x1bW4gZmls dGVyICovCi0JCWlmICghQ29sdW1uSW5GaWx0ZXIoY29sdW1ucywgYXR0LT5hdHRudW0pKQor CQlpZiAoIWNvbHVtbl9pbl9zZXQoYXR0LT5hdHRudW0sIGNvbHVtbnMpKQogCQkJY29udGlu dWU7CiAKIAkJLyogUkVQTElDQSBJREVOVElUWSBGVUxMIG1lYW5zIGFsbCBjb2x1bW5zIGFy ZSBzZW50IGFzIHBhcnQgb2Yga2V5LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggNDI3MDhkY2Y4Mi4uZDRkNTA0ZmUwMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC03 NTQsMTMgKzc1NCwxMyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1l LCBjaGFyICpyZWxuYW1lLAogCiAKIAkvKgotCSAqIEdldCByZWxhdGlvbidzIGNvbHVtbiBm aWx0ZXIgZXhwcmVzc2lvbnMuCisJICogR2V0IGNvbHVtbiBsaXN0cyBmb3IgZWFjaCByZWxh dGlvbi4KIAkgKgotCSAqIEZvciBpbml0aWFsIHN5bmNocm9uaXphdGlvbiwgY29sdW1uIGZp bHRlciBjYW4gYmUgaWdub3JlZCBpbiBmb2xsb3dpbmcKKwkgKiBGb3IgaW5pdGlhbCBzeW5j aHJvbml6YXRpb24sIGNvbHVtbiBsaXN0cyBjYW4gYmUgaWdub3JlZCBpbiBmb2xsb3dpbmcK IAkgKiBjYXNlczoKIAkgKgogCSAqIDEpIG9uZSBvZiB0aGUgc3Vic2NyaWJlZCBwdWJsaWNh dGlvbnMgZm9yIHRoZSB0YWJsZSBoYXNuJ3Qgc3BlY2lmaWVkCi0JICogYW55IGNvbHVtbiBm aWx0ZXIKKwkgKiBhbnkgY29sdW1uIGxpc3QKIAkgKgogCSAqIDIpIG9uZSBvZiB0aGUgc3Vi c2NyaWJlZCBwdWJsaWNhdGlvbnMgaGFzIHB1YmFsbHRhYmxlcyBzZXQgdG8gdHJ1ZQogCSAq CkBAIC03ODgsNyArNzg4LDcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNw bmFtZSwgY2hhciAqcmVsbmFtZSwKIAogCQkvKgogCQkgKiBGaXJzdCwgY2hlY2sgaWYgYW55 IG9mIHRoZSBwdWJsaWNhdGlvbnMgRk9SIEFMTCBUQUJMRVM/IElmIHllcywgd2UKLQkJICog c2hvdWxkIG5vdCB1c2UgYW55IGNvbHVtbiBmaWx0ZXIuIEl0J3MgZW5vdWdoIHRvIGZpbmQg YSBzaW5nbGUgc3VjaAorCQkgKiBzaG91bGQgbm90IHVzZSBhbnkgY29sdW1uIGxpc3QuIEl0 J3MgZW5vdWdoIHRvIGZpbmQgYSBzaW5nbGUgc3VjaAogCQkgKiBwdWJsaWNhdGlvbi4KIAkJ ICoKIAkJICogWFhYIE1heWJlIHdlIGNvdWxkIGNvbWJpbmUgYWxsIHRocmVlIHN0ZXBzIGlu dG8gYSBzaW5nbGUgcXVlcnksIGJ1dApAQCAtODIzLDcgKzgyMyw3IEBAIGZldGNoX3JlbW90 ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJCS8qCiAJCSAq IElmIHRoZXJlJ3Mgbm8gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24sIGxvb2sgZm9yIGEg Rk9SIEFMTCBUQUJMRVMKIAkJICogSU4gU0NIRU1BIHB1YmxpY2F0aW9uLCB3aXRoIHNjaGVt YSBvZiB0aGUgcmVtb3RlIHJlbGF0aW9uLiBUaGUgbG9naWMKLQkJICogaXMgdGhlIHNhbWUg LSBzdWNoIHB1YmxpY2F0aW9ucyBoYXZlIG5vIGNvbHVtbiBmaWx0ZXJzLgorCQkgKiBpcyB0 aGUgc2FtZSAtIHN1Y2ggcHVibGljYXRpb25zIGhhdmUgbm8gY29sdW1uIGxpc3RzLgogCQkg KgogCQkgKiBYWFggRG9lcyB0aGlzIG5lZWQgYW55IGhhbmRsaW5nIG9mIHBhcnRpdGlvbnMg LyBwdWJsaXNoX3ZpYV9wYXJ0X3Jvb3Q/CiAJCSAqLwpAQCAtODU5LDggKzg1OSw4IEBAIGZl dGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAK IAkJLyoKIAkJICogSWYgd2UgaGF2ZW4ndCBmb3VuZCBhbnkgRk9SIEFMTCBUQUJMRVMgW0lO IFNDSEVNQV0gcHVibGljYXRpb25zIGZvcgotCQkgKiB0aGUgdGFibGUsIHdlIGhhdmUgdG8g bG9vayBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIHNldCBmb3IgcmVsYXRpb25zLgotCQkgKiBG aXJzdCwgd2UgY2hlY2sgaWYgdGhlcmUncyBhIHB1YmxpY2F0aW9uIHdpdGggbm8gY29sdW1u IGZpbHRlciBmb3IKKwkJICogdGhlIHRhYmxlLCB3ZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBj b2x1bW4gbGlzdHMgZm9yIHJlbGF0aW9ucy4KKwkJICogRmlyc3QsIHdlIGNoZWNrIGlmIHRo ZXJlJ3MgYSBwdWJsaWNhdGlvbiB3aXRoIG5vIGNvbHVtbiBsaXN0IGZvcgogCQkgKiB0aGUg cmVsYXRpb24gLSB3aGljaCBtZWFucyBhbGwgY29sdW1ucyBuZWVkIHRvIGJlIHJlcGxpY2F0 ZWQuCiAJCSAqLwogCQlpZiAoIWFsbF9jb2x1bW5zKQpAQCAtOTA2LDcgKzkwNiw3IEBAIGZl dGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJ CX0KIAogCQkvKgotCQkgKiBBbGwgdGhhdCAKKwkJICogQWxsIHRoYXQgRklYTUUKIAkJICov CiAJCWlmICghYWxsX2NvbHVtbnMpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDA3Y2RmYzFkOGMuLmI0MjAzNzg4YjAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAt MTkzNiw3ICsxOTM2LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0 YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJCQlpZiAoaXNudWxsKQogCQkJCQkJewogCQkJ CQkJCS8qCi0JCQkJCQkJICogSWYgd2Ugc2VlIGEgcHVibGljYXRpb24gd2l0aCBubyBjb2x1 bW4gZmlsdGVyLCBpdAorCQkJCQkJCSAqIElmIHdlIHNlZSBhIHB1YmxpY2F0aW9uIHdpdGgg bm8gY29sdW1uIGxpc3QsIGl0CiAJCQkJCQkJICogbWVhbnMgd2UgbmVlZCB0byBwdWJsaXNo IGFsbCBjb2x1bW5zLCBzbyByZXNldCB0aGUKIAkJCQkJCQkgKiBsaXN0IGFuZCBpZ25vcmUg ZnVydGhlciBvbmVzLgogCQkJCQkJCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMKaW5kZXggODJlNTk1Mzk2ZS4uYTJkYTcyZjBkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCkBAIC01NTUzLDggKzU1NTMsOCBAQCBSZWxhdGlvbkJ1aWxkUHVibGlj YXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2Mp CiAJCW1lbXNldChwdWJkZXNjLCAwLCBzaXplb2YoUHVibGljYXRpb25EZXNjKSk7CiAJCXB1 YmRlc2MtPnJmX3ZhbGlkX2Zvcl91cGRhdGUgPSB0cnVlOwogCQlwdWJkZXNjLT5yZl92YWxp ZF9mb3JfZGVsZXRlID0gdHJ1ZTsKLQkJcHViZGVzYy0+Y2ZfdmFsaWRfZm9yX3VwZGF0ZSA9 IHRydWU7Ci0JCXB1YmRlc2MtPmNmX3ZhbGlkX2Zvcl9kZWxldGUgPSB0cnVlOworCQlwdWJk ZXNjLT5jb2xzX3ZhbGlkX2Zvcl91cGRhdGUgPSB0cnVlOworCQlwdWJkZXNjLT5jb2xzX3Zh bGlkX2Zvcl9kZWxldGUgPSB0cnVlOwogCQlyZXR1cm47CiAJfQogCkBAIC01NTY3LDggKzU1 NjcsOCBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9u LCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJbWVtc2V0KHB1YmRlc2MsIDAsIHNpemVv ZihQdWJsaWNhdGlvbkRlc2MpKTsKIAlwdWJkZXNjLT5yZl92YWxpZF9mb3JfdXBkYXRlID0g dHJ1ZTsKIAlwdWJkZXNjLT5yZl92YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsKLQlwdWJkZXNj LT5jZl92YWxpZF9mb3JfdXBkYXRlID0gdHJ1ZTsKLQlwdWJkZXNjLT5jZl92YWxpZF9mb3Jf ZGVsZXRlID0gdHJ1ZTsKKwlwdWJkZXNjLT5jb2xzX3ZhbGlkX2Zvcl91cGRhdGUgPSB0cnVl OworCXB1YmRlc2MtPmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSA9IHRydWU7CiAKIAkvKiBGZXRj aCB0aGUgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCXB1Ym9pZHMgPSBHZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCk7CkBAIC01NjIwLDcgKzU2MjAsNyBAQCBSZWxh dGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlv bkRlc2MgKnB1YmRlc2MpCiAJCSAqLwogCQlpZiAoIXB1YmZvcm0tPnB1YmFsbHRhYmxlcyAm JgogCQkJKHB1YmZvcm0tPnB1YnVwZGF0ZSB8fCBwdWJmb3JtLT5wdWJkZWxldGUpICYmCi0J CQljb250YWluX2ludmFsaWRfcmZjb2x1bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3RvcnMs CisJCQlwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4ocHViaWQsIHJlbGF0aW9uLCBh bmNlc3RvcnMsCiAJCQkJCQkJCQkgcHViZm9ybS0+cHVidmlhcm9vdCkpCiAJCXsKIAkJCWlm IChwdWJmb3JtLT5wdWJ1cGRhdGUpCkBAIC01NjMwLDIxICs1NjMwLDIwIEBAIFJlbGF0aW9u QnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVz YyAqcHViZGVzYykKIAkJfQogCiAJCS8qCi0JCSAqIENoZWNrIGlmIGFsbCBjb2x1bW5zIHJl ZmVyZW5jZWQgaW4gdGhlIGNvbHVtbiBmaWx0ZXIgYXJlIHBhcnQgb2YKLQkJICogdGhlIFJF UExJQ0EgSURFTlRJVFkgaW5kZXggb3Igbm90LgorCQkgKiBDaGVjayBpZiBhbGwgY29sdW1u cyBhcmUgcGFydCBvZiB0aGUgUkVQTElDQSBJREVOVElUWSBpbmRleCBvciBub3QuCiAJCSAq CiAJCSAqIElmIHRoZSBwdWJsaWNhdGlvbiBpcyBGT1IgQUxMIFRBQkxFUyB0aGVuIGl0IG1l YW5zIHRoZSB0YWJsZSBoYXMgbm8KLQkJICogY29sdW1uIGZpbHRlcnMgYW5kIHdlIGNhbiBz a2lwIHRoZSB2YWxpZGF0aW9uLgorCQkgKiBjb2x1bW4gbGlzdCBhbmQgd2UgY2FuIHNraXAg dGhlIHZhbGlkYXRpb24uCiAJCSAqLwogCQlpZiAoIXB1YmZvcm0tPnB1YmFsbHRhYmxlcyAm JgogCQkJKHB1YmZvcm0tPnB1YnVwZGF0ZSB8fCBwdWJmb3JtLT5wdWJkZWxldGUpICYmCi0J CQljb250YWluX2ludmFsaWRfY2Zjb2x1bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3RvcnMs CisJCQlwdWJfY29sbGlzdF9jb250YWluc19pbnZhbGlkX2NvbHVtbihwdWJpZCwgcmVsYXRp b24sIGFuY2VzdG9ycywKIAkJCQkJCQkJCSBwdWJmb3JtLT5wdWJ2aWFyb290KSkKIAkJewog CQkJaWYgKHB1YmZvcm0tPnB1YnVwZGF0ZSkKLQkJCQlwdWJkZXNjLT5jZl92YWxpZF9mb3Jf dXBkYXRlID0gZmFsc2U7CisJCQkJcHViZGVzYy0+Y29sc192YWxpZF9mb3JfdXBkYXRlID0g ZmFsc2U7CiAJCQlpZiAocHViZm9ybS0+cHViZGVsZXRlKQotCQkJCXB1YmRlc2MtPmNmX3Zh bGlkX2Zvcl9kZWxldGUgPSBmYWxzZTsKKwkJCQlwdWJkZXNjLT5jb2xzX3ZhbGlkX2Zvcl9k ZWxldGUgPSBmYWxzZTsKIAkJfQogCiAJCVJlbGVhc2VTeXNDYWNoZSh0dXApOwpAQCAtNTY2 MCwxMyArNTY1OSwxMyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9u IHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCQlicmVhazsKIAogCQkv KgotCQkgKiBJZiB3ZSBrbm93IGV2ZXJ5dGhpbmcgaXMgcmVwbGljYXRlZCBhbmQgdGhlIGNv bHVtbiBmaWx0ZXIgaXMgaW52YWxpZAorCQkgKiBJZiB3ZSBrbm93IGV2ZXJ5dGhpbmcgaXMg cmVwbGljYXRlZCBhbmQgdGhlIGNvbHVtbiBsaXN0IGlzIGludmFsaWQKIAkJICogZm9yIHVw ZGF0ZSBhbmQgZGVsZXRlLCB0aGVyZSBpcyBubyBwb2ludCB0byBjaGVjayBmb3Igb3RoZXIK IAkJICogcHVibGljYXRpb25zLgogCQkgKi8KIAkJaWYgKHB1YmRlc2MtPnB1YmFjdGlvbnMu cHViaW5zZXJ0ICYmIHB1YmRlc2MtPnB1YmFjdGlvbnMucHVidXBkYXRlICYmCiAJCQlwdWJk ZXNjLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSAmJiBwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YnRy dW5jYXRlICYmCi0JCQkhcHViZGVzYy0+Y2ZfdmFsaWRfZm9yX3VwZGF0ZSAmJiAhcHViZGVz Yy0+Y2ZfdmFsaWRfZm9yX2RlbGV0ZSkKKwkJCSFwdWJkZXNjLT5jb2xzX3ZhbGlkX2Zvcl91 cGRhdGUgJiYgIXB1YmRlc2MtPmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSkKIAkJCWJyZWFrOwog CX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYwppbmRleCBmYjE4Y2I4MmQ5Li5lNDYyY2NmYjc0IDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwpAQCAtMjk0MSw3ICsyOTQxLDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3Qg Y2hhciAqc2NoZW1hbmFtZSwKIAkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwi JXNcIiIsCiAJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKIAotCQkJCS8q IGNvbHVtbiBmaWx0ZXIgKGlmIGFueSkgKi8KKwkJCQkvKiBjb2x1bW4gbGlzdCAoaWYgYW55 KSAqLwogCQkJCWlmICghUFFnZXRpc251bGwocmVzdWx0LCBpLCAyKSkKIAkJCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwgIiAoJXMpIiwKIAkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1 bHQsIGksIDIpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCBi NThmODVlZGUyLi5hMDY3NDJhNjIwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCkBAIC04NywxMiArODcsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25E ZXNjCiAJYm9vbAkJcmZfdmFsaWRfZm9yX2RlbGV0ZTsKIAogCS8qCi0JICogdHJ1ZSBpZiB0 aGUgY29sdW1ucyByZWZlcmVuY2VkIGluIGNvbHVtbiBmaWx0ZXJzIHdoaWNoIGFyZSB1c2Vk IGZvciBVUERBVEUKLQkgKiBvciBERUxFVEUgYXJlIHBhcnQgb2YgdGhlIHJlcGxpY2EgaWRl bnRpdHkgb3IgdGhlIHB1YmxpY2F0aW9uIGFjdGlvbnMKKwkgKiB0cnVlIGlmIHRoZSBjb2x1 bW5zIGFyZSBwYXJ0IG9mIHRoZSByZXBsaWNhIGlkZW50aXR5IG9yIHRoZSBwdWJsaWNhdGlv biBhY3Rpb25zCiAJICogZG8gbm90IGluY2x1ZGUgVVBEQVRFIG9yIERFTEVURS4KIAkgKi8K LQlib29sCQljZl92YWxpZF9mb3JfdXBkYXRlOwotCWJvb2wJCWNmX3ZhbGlkX2Zvcl9kZWxl dGU7CisJYm9vbAkJY29sc192YWxpZF9mb3JfdXBkYXRlOworCWJvb2wJCWNvbHNfdmFsaWRf Zm9yX2RlbGV0ZTsKIH0gUHVibGljYXRpb25EZXNjOwogCiB0eXBlZGVmIHN0cnVjdCBQdWJs aWNhdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaAppbmRleCAw OGQxNGNhNzI0Li5hZTg3Y2FmMDg5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuaApAQCAtMzEsOSArMzEsOSBAQCBleHRlcm4gdm9pZCBSZW1vdmVQdWJsaWNh dGlvblNjaGVtYUJ5SWQoT2lkIHBzb2lkKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVy UHVibGljYXRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3T3duZXJJZCk7CiBl eHRlcm4gdm9pZCBBbHRlclB1YmxpY2F0aW9uT3duZXJfb2lkKE9pZCBwdWJpZCwgT2lkIG5l d093bmVySWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVscyhMaXN0 ICpyZWxpZHMpOwotZXh0ZXJuIGJvb2wgY29udGFpbl9pbnZhbGlkX3JmY29sdW1uKE9pZCBw dWJpZCwgUmVsYXRpb24gcmVsYXRpb24sCitleHRlcm4gYm9vbCBwdWJfcmZfY29udGFpbnNf aW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJ CSBMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9vdCk7Ci1leHRlcm4gYm9vbCBjb250 YWluX2ludmFsaWRfY2Zjb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKK2V4 dGVybiBib29sIHB1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJp ZCwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkgTGlzdCAqYW5jZXN0b3JzLCBib29s IHB1YnZpYXJvb3QpOwogCiAjZW5kaWYJCQkJCQkJLyogUFVCTElDQVRJT05DTURTX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMTUy ZjE5ZmI0Mi4uODAyMDJmODRmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQKQEAgLTY3OSwxNCArNjc5LDE0IEBAIERST1AgVEFCTEUgcmZfdGJs X2FiY2RfcGs7CiBEUk9QIFRBQkxFIHJmX3RibF9hYmNkX25vcGs7CiBEUk9QIFRBQkxFIHJm X3RibF9hYmNkX3BhcnRfcGs7CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGZhaWwgLSBkdXBsaWNhdGUgdGFibGVzIGFy ZSBub3QgYWxsb3dlZCBpZiB0aGF0IHRhYmxlIGhhcyBhbnkgY29sdW1uIGZpbHRlcnMKKy0t IGZhaWwgLSBkdXBsaWNhdGUgdGFibGVzIGFyZSBub3QgYWxsb3dlZCBpZiB0aGF0IHRhYmxl IGhhcyBhbnkgY29sdW1uIGxpc3RzCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJP Uic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kdXBzIEZPUiBUQUJMRSB0ZXN0cHVi X3RibDEgKGEpLCB0ZXN0cHViX3RibDEgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKLUVS Uk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IGNvbHVtbiBmaWx0ZXJzIGZvciB0YWJs ZSAidGVzdHB1Yl90YmwxIgorRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgY29s dW1uIGxpc3RzIGZvciB0YWJsZSAidGVzdHB1Yl90YmwxIgogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZHVwcyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDEgKGEp IFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7Ci1FUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJl ZHVuZGFudCBjb2x1bW4gZmlsdGVycyBmb3IgdGFibGUgInRlc3RwdWJfdGJsMSIKK0VSUk9S OiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IGNvbHVtbiBsaXN0cyBmb3IgdGFibGUgInRl c3RwdWJfdGJsMSIKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7Ci0tLSB0ZXN0IGZvciBj b2x1bW4gZmlsdGVycworLS0gdGVzdCBmb3IgY29sdW1uIGxpc3RzCiBTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0 YWJsZSBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGVfaW5zZXJ0IFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CkBAIC02OTYs MTYgKzY5NiwxNiBAQCBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymw1IChhIGludCBQUklNQVJZ IEtFWSwgYiB0ZXh0LCBjIHRleHQsCiAtLSBlcnJvcjogY29sdW1uICJ4IiBkb2VzIG5vdCBl eGlzdAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgVEFCTEUgdGVz dHB1Yl90Ymw1IChhLCB4KTsKIEVSUk9SOiAgY29sdW1uICJ4IiBvZiByZWxhdGlvbiAidGVz dHB1Yl90Ymw1IiBkb2VzIG5vdCBleGlzdAotLS0gZXJyb3I6IHJlcGxpY2EgaWRlbnRpdHkg ImEiIG5vdCBpbmNsdWRlZCBpbiB0aGUgY29sdW1uIGZpbHRlcgorLS0gZXJyb3I6IHJlcGxp Y2EgaWRlbnRpdHkgImEiIG5vdCBpbmNsdWRlZCBpbiB0aGUgY29sdW1uIGxpc3QKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAo YiwgYyk7CiBVUERBVEUgdGVzdHB1Yl90Ymw1IFNFVCBhID0gMTsKIEVSUk9SOiAgY2Fubm90 IHVwZGF0ZSB0YWJsZSAidGVzdHB1Yl90Ymw1IgotREVUQUlMOiAgQ29sdW1uIGZpbHRlciB1 c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVu dGl0eS4KK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRv ZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3J0YWJsZSBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsNTsKIC0tIGVycm9yOiBn ZW5lcmF0ZWQgY29sdW1uICJkIiBjYW4ndCBiZSBpbiBsaXN0CiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRSB0ZXN0cHViX3RibDUgKGEsIGQpOwogRVJS T1I6ICBjYW5ub3QgcmVmZXJlbmNlIGdlbmVyYXRlZCBjb2x1bW4gImQiIGluIHB1YmxpY2F0 aW9uIGNvbHVtbiBsaXN0Ci0tLSBlcnJvcjogc3lzdGVtIGF0dHJpYnV0ZXMgImN0aWQiIG5v dCBhbGxvd2VkIGluIGNvbHVtbiBmaWx0ZXIKKy0tIGVycm9yOiBzeXN0ZW0gYXR0cmlidXRl cyAiY3RpZCIgbm90IGFsbG93ZWQgaW4gY29sdW1uIGxpc3QKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYSwgY3RpZCk7CiBF UlJPUjogIGNhbm5vdCByZWZlcmVuY2Ugc3lzdGVtIGNvbHVtbiAiY3RpZCIgaW4gcHVibGlj YXRpb24gY29sdW1uIGxpc3QKIC0tIG9rCkBAIC03MTMsMjQgKzcxMywyNCBAQCBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRSB0ZXN0cHViX3RibDUgKGEs IGMpOwogQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw1IERST1AgQ09MVU1OIGM7CQktLSBubyBk aWNlCiBFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiAiYyIgYmVjYXVzZSBpdCBpcyBwYXJ0 IG9mIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIgogSElOVDogIFNwZWNpZnkgQ0FT Q0FERSBvciB1c2UgQUxURVIgUFVCTElDQVRJT04gdG8gcmVtb3ZlIHRoZSBjb2x1bW4gZnJv bSB0aGUgcHVibGljYXRpb24uCi0tLSBvazogZm9yIGluc2VydC1vbmx5IHB1YmxpY2F0aW9u LCB0aGUgZmlsdGVyIGlzIGFyYml0cmFyeQorLS0gb2s6IGZvciBpbnNlcnQtb25seSBwdWJs aWNhdGlvbiwgdGhlIGNvbHVtbiBsaXN0IGlzIGFyYml0cmFyeQogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZV9pbnNlcnQgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYiwg Yyk7CiAvKiBub3QgYWxsIHJlcGxpY2EgaWRlbnRpdGllcyBhcmUgZ29vZCBlbm91Z2ggKi8K IENSRUFURSBVTklRVUUgSU5ERVggdGVzdHB1Yl90Ymw1X2Jfa2V5IE9OIHRlc3RwdWJfdGJs NSAoYiwgYyk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDUgQUxURVIgYiBTRVQgTk9UIE5V TEwsIEFMVEVSIGMgU0VUIE5PVCBOVUxMOwogQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw1IFJF UExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGVzdHB1Yl90Ymw1X2Jfa2V5OwotLS0gZXJy b3I6IHJlcGxpY2EgaWRlbnRpdHkgKGIsYykgaXMgY292ZXJlZCBieSBjb2x1bW4gZmlsdGVy IChhLCBjKQorLS0gZXJyb3I6IHJlcGxpY2EgaWRlbnRpdHkgKGIsYykgaXMgY292ZXJlZCBi eSBjb2x1bW4gbGlzdCAoYSwgYykKIFVQREFURSB0ZXN0cHViX3RibDUgU0VUIGEgPSAxOwog RVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJ0ZXN0cHViX3RibDUiCi1ERVRBSUw6ICBD b2x1bW4gZmlsdGVyIHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRo ZSByZXBsaWNhIGlkZW50aXR5LgorREVUQUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUg cHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgVEFCTEUgdGVzdHB1Yl90Ymw1 OwotLS0gZXJyb3I6IGNoYW5nZSB0aGUgcmVwbGljYSBpZGVudGl0eSB0byAiYiIsIGFuZCB0 aGVuIGZpbHRlciAoYSwgYykgZmFpbHMKKy0tIGVycm9yOiBjaGFuZ2UgdGhlIHJlcGxpY2Eg aWRlbnRpdHkgdG8gImIiLCBhbmQgdGhlbiBjb2x1bW4gbGlzdCAoYSwgYykgZmFpbHMKIEFM VEVSIFRBQkxFIHRlc3RwdWJfdGJsNSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRl c3RwdWJfdGJsNV9iX2tleTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUg QUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYSwgYyk7Ci0tLSBlcnJvcjogcmVwbGljYSBpZGVu dGl0eSAoYixjKSBpcyBub3QgY292ZXJlZCBieSBjb2x1bW4gZmlsdGVyIChhLGMpCistLSBl cnJvcjogcmVwbGljYSBpZGVudGl0eSAoYixjKSBpcyBub3QgY292ZXJlZCBieSBjb2x1bW4g bGlzdCAoYSwgYykKIFVQREFURSB0ZXN0cHViX3RibDUgU0VUIGEgPSAxOwogRVJST1I6ICBj YW5ub3QgdXBkYXRlIHRhYmxlICJ0ZXN0cHViX3RibDUiCi1ERVRBSUw6ICBDb2x1bW4gZmls dGVyIHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNh IGlkZW50aXR5LgorREVUQUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRp b24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCiAvKiBCdXQgaWYgdXBk L2RlbCBhcmUgbm90IHB1Ymxpc2hlZCwgaXQgd29ya3MgT0sgKi8KIFNFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3RhYmxl X2lucyBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdHJ1bmNhdGUnKTsKQEAgLTc0NCwyMSAr NzQ0LDIxIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIEFERCBUQUJM RSB0ZXN0cHViX3RibDUgKGEpOwkJLS0gb2sKIFRhYmxlczoKICAgICAicHVibGljLnRlc3Rw dWJfdGJsNSIgKGEpCiAKLS0tIHdpdGggUkVQTElDQSBJREVOVElUWSBGVUxMLCBjb2x1bW4g ZmlsdGVycyBhcmUgbm90IGFsbG93ZWQKKy0tIHdpdGggUkVQTElDQSBJREVOVElUWSBGVUxM LCBjb2x1bW4gbGlzdHMgYXJlIG5vdCBhbGxvd2VkCiBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90 Ymw2IChhIGludCwgYiB0ZXh0LCBjIHRleHQpOwogQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw2 IFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y dGFibGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNiAoYSwgYiwgYyk7CiBVUERBVEUgdGVzdHB1 Yl90Ymw2IFNFVCBhID0gMTsKIEVSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAidGVzdHB1 Yl90Ymw2IgotREVUQUlMOiAgQ29sdW1uIGZpbHRlciB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlv biBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0RFVEFJTDogIENvbHVt biBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBs aWNhIGlkZW50aXR5LgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBEUk9Q IFRBQkxFIHRlc3RwdWJfdGJsNjsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFi bGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNjsgLS0gb2sKIFVQREFURSB0ZXN0cHViX3RibDYg U0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBTFRFUiBU QUJMRSB0ZXN0cHViX3RibDYgU0VUIENPTFVNTlMgKGEsIGIsIGMpOwogVVBEQVRFIHRlc3Rw dWJfdGJsNiBTRVQgYSA9IDE7CiBFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInRlc3Rw dWJfdGJsNiIKLURFVEFJTDogIENvbHVtbiBmaWx0ZXIgdXNlZCBieSB0aGUgcHVibGljYXRp b24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCi0tLSBtYWtlIHN1cmUg Y2hhbmdpbmcgdGhlIGNvbHVtbiBmaWx0ZXIgaXMgdXBkYXRlZCBpbiBTRVQgVEFCTEUKK0RF VEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNv dmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorLS0gbWFrZSBzdXJlIGNoYW5naW5nIHRoZSBj b2x1bW4gbGlzdCBpcyB1cGRhdGVkIGluIFNFVCBUQUJMRQogQ1JFQVRFIFRBQkxFIHRlc3Rw dWJfdGJsNyAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCwgYyB0ZXh0KTsKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNyAoYSwg Yik7CiBcZCsgdGVzdHB1Yl90Ymw3CkBAIC03ODcsNyArNzg3LDcgQEAgSW5kZXhlczoKIFB1 YmxpY2F0aW9uczoKICAgICAidGVzdHB1Yl9mb3J0YWJsZSIgKGEsIGIpCiAKLS0tIG9rOiB1 cGRhdGUgdGhlIGNvbHVtbiBmaWx0ZXIKKy0tIG9rOiB1cGRhdGUgdGhlIGNvbHVtbiBsaXN0 CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBUQUJMRSB0ZXN0cHVi X3RibDcgKGEsIGMpOwogXGQrIHRlc3RwdWJfdGJsNwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUYWJsZSAicHVibGljLnRlc3RwdWJfdGJsNyIKQEAgLTgwMSw3ICs4MDEs NyBAQCBJbmRleGVzOgogUHVibGljYXRpb25zOgogICAgICJ0ZXN0cHViX2ZvcnRhYmxlIiAo YSwgYykKIAotLS0gY29sdW1uIGZpbHRlciBmb3IgcGFydGl0aW9uZWQgdGFibGVzIGhhcyB0 byBjb3ZlciByZXBsaWNhIGlkZW50aXRpZXMgZm9yCistLSBjb2x1bW4gbGlzdCBmb3IgcGFy dGl0aW9uZWQgdGFibGVzIGhhcyB0byBjb3ZlciByZXBsaWNhIGlkZW50aXRpZXMgZm9yCiAt LSBhbGwgY2hpbGQgcmVsYXRpb25zCiBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymw4IChhIGlu dCwgYiB0ZXh0LCBjIHRleHQpIFBBUlRJVElPTiBCWSBIQVNIIChhKTsKIC0tIGZpcnN0IHBh cnRpdGlvbiBoYXMgcmVwbGljYSBpZGVudGl0eSAiYSIKQEAgLTgxMiw0OCArODEyLDQ4IEBA IEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8wIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5E RVggdGVzdHB1Yl90Ymw4XzBfcGtleTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDhfMSBQ QVJUSVRJT04gT0YgdGVzdHB1Yl90Ymw4IEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCBy ZW1haW5kZXIgMSk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDhfMSBBREQgUFJJTUFSWSBL RVkgKGIpOwogQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBV U0lORyBJTkRFWCB0ZXN0cHViX3RibDhfMV9wa2V5OwotLS0gb2s6IGNvbHVtbiBmaWx0ZXIg Y292ZXJzIGJvdGggImEiIGFuZCAiYiIKKy0tIG9rOiBjb2x1bW4gbGlzdCBjb3ZlcnMgYm90 aCAiYSIgYW5kICJiIgogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwotQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2ZpbHRlciBGT1IgVEFCTEUgdGVzdHB1Yl90 Ymw4IChhLCBiKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0cnVlJyk7 CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBGT1IgVEFCTEUgdGVzdHB1 Yl90Ymw4IChhLCBiKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0cnVl Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogLS0gb2s6IHRoZSBzYW1lIHRoaW5n LCBidXQgdHJ5IHBsYWluIEFERCBUQUJMRQotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9j b2xfZmlsdGVyIERST1AgVEFCTEUgdGVzdHB1Yl90Ymw4OwotQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9jb2xfZmlsdGVyIEFERCBUQUJMRSB0ZXN0cHViX3RibDggKGEsIGIpOworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBEUk9QIFRBQkxFIHRlc3RwdWJfdGJs ODsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2xpc3QgQUREIFRBQkxFIHRlc3Rw dWJfdGJsOCAoYSwgYik7CiBVUERBVEUgdGVzdHB1Yl90Ymw4IFNFVCBhID0gMTsKLS0tIGZh aWx1cmU6IGNvbHVtbiBmaWx0ZXIgZG9lcyBub3QgY292ZXIgcmVwbGljYSBpZGVudGl0eSBm b3IgdGhlIHNlY29uZCBwYXJ0aXRpb24KLUFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29s X2ZpbHRlciBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsODsKLUFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfY29sX2ZpbHRlciBBREQgVEFCTEUgdGVzdHB1Yl90Ymw4IChhLCBjKTsKKy0tIGZh aWx1cmU6IGNvbHVtbiBsaXN0IGRvZXMgbm90IGNvdmVyIHJlcGxpY2EgaWRlbnRpdHkgZm9y IHRoZSBzZWNvbmQgcGFydGl0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9s aXN0IERST1AgVEFCTEUgdGVzdHB1Yl90Ymw4OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9jb2xfbGlzdCBBREQgVEFCTEUgdGVzdHB1Yl90Ymw4IChhLCBjKTsKIFVQREFURSB0ZXN0 cHViX3RibDggU0VUIGEgPSAxOwogRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJ0ZXN0 cHViX3RibDhfMSIKLURFVEFJTDogIENvbHVtbiBmaWx0ZXIgdXNlZCBieSB0aGUgcHVibGlj YXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCi1BTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2NvbF9maWx0ZXIgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDg7CitE RVRBSUw6ICBDb2x1bW4gbGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBj b3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Y29sX2xpc3QgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDg7CiAtLSBmYWlsdXJlOiBvbmUgb2Yg dGhlIHBhcnRpdGlvbnMgaGFzIFJFUExJQ0EgSURFTlRJVFkgRlVMTAogQUxURVIgVEFCTEUg dGVzdHB1Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBGVUxMOwotQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9jb2xfZmlsdGVyIEFERCBUQUJMRSB0ZXN0cHViX3RibDggKGEsIGMpOwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBBREQgVEFCTEUgdGVzdHB1Yl90 Ymw4IChhLCBjKTsKIFVQREFURSB0ZXN0cHViX3RibDggU0VUIGEgPSAxOwogRVJST1I6ICBj YW5ub3QgdXBkYXRlIHRhYmxlICJ0ZXN0cHViX3RibDhfMSIKLURFVEFJTDogIENvbHVtbiBm aWx0ZXIgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxp Y2EgaWRlbnRpdHkuCi1BTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9maWx0ZXIgRFJP UCBUQUJMRSB0ZXN0cHViX3RibDg7CitERVRBSUw6ICBDb2x1bW4gbGlzdCB1c2VkIGJ5IHRo ZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2xpc3QgRFJPUCBUQUJMRSB0ZXN0cHViX3Ri bDg7CiAtLSBhZGQgdGFibGUgYW5kIHRoZW4gdHJ5IGNoYW5naW5nIHJlcGxpY2EgaWRlbnRp dHkKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8xIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcg SU5ERVggdGVzdHB1Yl90Ymw4XzFfcGtleTsKLUFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Y29sX2ZpbHRlciBBREQgVEFCTEUgdGVzdHB1Yl90Ymw4IChhLCBiKTsKLS0tIGZhaWx1cmU6 IHJlcGxpY2EgaWRlbnRpdHkgZnVsbCBjYW4ndCBiZSB1c2VkIHdpdGggYSBjb2x1bW4gZmls dGVyCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9saXN0IEFERCBUQUJMRSB0ZXN0 cHViX3RibDggKGEsIGIpOworLS0gZmFpbHVyZTogcmVwbGljYSBpZGVudGl0eSBmdWxsIGNh bid0IGJlIHVzZWQgd2l0aCBhIGNvbHVtbiBsaXN0CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3Ri bDhfMSBSRVBMSUNBIElERU5USVRZIEZVTEw7CiBVUERBVEUgdGVzdHB1Yl90Ymw4IFNFVCBh ID0gMTsKIEVSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAidGVzdHB1Yl90Ymw4XzEiCi1E RVRBSUw6ICBDb2x1bW4gZmlsdGVyIHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90 IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgotLS0gZmFpbHVyZTogcmVwbGljYSBpZGVu dGl0eSBoYXMgdG8gYmUgY292ZXJlZCBieSB0aGUgY29sdW1uIGZpbHRlcgorREVUQUlMOiAg Q29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhl IHJlcGxpY2EgaWRlbnRpdHkuCistLSBmYWlsdXJlOiByZXBsaWNhIGlkZW50aXR5IGhhcyB0 byBiZSBjb3ZlcmVkIGJ5IHRoZSBjb2x1bW4gbGlzdAogQUxURVIgVEFCTEUgdGVzdHB1Yl90 Ymw4XzEgRFJPUCBDT05TVFJBSU5UIHRlc3RwdWJfdGJsOF8xX3BrZXk7CiBBTFRFUiBUQUJM RSB0ZXN0cHViX3RibDhfMSBBREQgUFJJTUFSWSBLRVkgKGMpOwogQUxURVIgVEFCTEUgdGVz dHB1Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibDhf MV9wa2V5OwogVVBEQVRFIHRlc3RwdWJfdGJsOCBTRVQgYSA9IDE7CiBFUlJPUjogIGNhbm5v dCB1cGRhdGUgdGFibGUgInRlc3RwdWJfdGJsOF8xIgotREVUQUlMOiAgQ29sdW1uIGZpbHRl ciB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBp ZGVudGl0eS4KK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9u IGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgogRFJPUCBUQUJMRSB0ZXN0 cHViX3RibDg7Ci0tLSBjb2x1bW4gZmlsdGVyIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMgaGFz IHRvIGNvdmVyIHJlcGxpY2EgaWRlbnRpdGllcyBmb3IKKy0tIGNvbHVtbiBsaXN0IGZvciBw YXJ0aXRpb25lZCB0YWJsZXMgaGFzIHRvIGNvdmVyIHJlcGxpY2EgaWRlbnRpdGllcyBmb3IK IC0tIGFsbCBjaGlsZCByZWxhdGlvbnMKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDggKGEg aW50LCBiIHRleHQsIGMgdGV4dCkgUEFSVElUSU9OIEJZIEhBU0ggKGEpOwotQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9jb2xfZmlsdGVyIEFERCBUQUJMRSB0ZXN0cHViX3RibDggKGEs IGIpOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBBREQgVEFCTEUgdGVz dHB1Yl90Ymw4IChhLCBiKTsKIC0tIGZpcnN0IHBhcnRpdGlvbiBoYXMgcmVwbGljYSBpZGVu dGl0eSAiYSIKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDhfMCAoYSBpbnQsIGIgdGV4dCwg YyB0ZXh0KTsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8wIEFERCBQUklNQVJZIEtFWSAo YSk7CkBAIC04NjIsMjMgKzg2MiwyMyBAQCBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDhfMCBS RVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RwdWJfdGJsOF8wX3BrZXk7CiBDUkVB VEUgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgKGEgaW50LCBiIHRleHQsIGMgdGV4dCk7CiBBTFRF UiBUQUJMRSB0ZXN0cHViX3RibDhfMSBBREQgUFJJTUFSWSBLRVkgKGMpOwogQUxURVIgVEFC TEUgdGVzdHB1Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHVi X3RibDhfMV9wa2V5OwotLS0gb2s6IGF0dGFjaGluZyBmaXJzdCBwYXJ0aXRpb24gd29ya3Ms IGJlY2F1c2UgKGEpIGlzIGluIGNvbHVtbiBmaWx0ZXIKKy0tIG9rOiBhdHRhY2hpbmcgZmly c3QgcGFydGl0aW9uIHdvcmtzLCBiZWNhdXNlIChhKSBpcyBpbiBjb2x1bW4gbGlzdAogQUxU RVIgVEFCTEUgdGVzdHB1Yl90Ymw4IEFUVEFDSCBQQVJUSVRJT04gdGVzdHB1Yl90Ymw4XzAg Rk9SIFZBTFVFUyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAwKTsKLS0tIGZhaWx1cmU6 IHNlY29uZCBwYXJ0aXRpb24gaGFzIHJlcGxpY2EgaWRlbnRpdHkgKGMpLCB3aGljaCBzaSBu b3QgaW4gY29sdW1uIGZpbHRlcgorLS0gZmFpbHVyZTogc2Vjb25kIHBhcnRpdGlvbiBoYXMg cmVwbGljYSBpZGVudGl0eSAoYyksIHdoaWNoIHNpIG5vdCBpbiBjb2x1bW4gbGlzdAogQUxU RVIgVEFCTEUgdGVzdHB1Yl90Ymw4IEFUVEFDSCBQQVJUSVRJT04gdGVzdHB1Yl90Ymw4XzEg Rk9SIFZBTFVFUyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAxKTsKIFVQREFURSB0ZXN0 cHViX3RibDggU0VUIGEgPSAxOwogRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJ0ZXN0 cHViX3RibDhfMSIKLURFVEFJTDogIENvbHVtbiBmaWx0ZXIgdXNlZCBieSB0aGUgcHVibGlj YXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCitERVRBSUw6ICBD b2x1bW4gbGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUg cmVwbGljYSBpZGVudGl0eS4KIC0tIGZhaWx1cmU6IGNoYW5naW5nIHJlcGxpY2EgaWRlbnRp dHkgdG8gRlVMTCBmb3IgcGFydGl0aW9uIGZhaWxzLCBiZWNhdXNlCi0tLSBvZiB0aGUgY29s dW1uIGZpbHRlciBvbiB0aGUgcGFyZW50CistLSBvZiB0aGUgY29sdW1uIGxpc3Qgb24gdGhl IHBhcmVudAogQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzAgUkVQTElDQSBJREVOVElUWSBG VUxMOwogVVBEQVRFIHRlc3RwdWJfdGJsOCBTRVQgYSA9IDE7CiBFUlJPUjogIGNhbm5vdCB1 cGRhdGUgdGFibGUgInRlc3RwdWJfdGJsOF8wIgotREVUQUlMOiAgQ29sdW1uIGZpbHRlciB1 c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVu dGl0eS4KK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRv ZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgogRFJPUCBUQUJMRSB0ZXN0cHVi X3RibDUsIHRlc3RwdWJfdGJsNiwgdGVzdHB1Yl90Ymw3LCB0ZXN0cHViX3RibDgsIHRlc3Rw dWJfdGJsOF8xOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3RhYmxlX2lucywgdGVzdHB1 Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3J0YWJsZV9pbnNlcnQsIHRlc3RwdWJfY29sX2ZpbHRl cjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMsIHRlc3RwdWJfZm9ydGFi bGUsIHRlc3RwdWJfZm9ydGFibGVfaW5zZXJ0LCB0ZXN0cHViX2NvbF9saXN0OwogLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBUZXN0IGNvbWJpbmF0aW9uIG9mIGNvbHVtbiBhbmQgcm93IGZpbHRlcgorLS0gVGVzdCBj b21iaW5hdGlvbiBvZiBjb2x1bW4gbGlzdCBhbmQgcm93IGZpbHRlcgogU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYm90 aF9maWx0ZXJzOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKQEAgLTkwOCw3ICs5MDgs NyBAQCBQdWJsaWNhdGlvbnM6CiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVy czsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnM7CiAtLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIE1v cmUgY29sdW1uIGZpbHRlciB0ZXN0cyBmb3IgdmFsaWRhdGluZyBjb2x1bW4gcmVmZXJlbmNl cworLS0gTW9yZSBjb2x1bW4gbGlzdCB0ZXN0cyBmb3IgdmFsaWRhdGluZyBjb2x1bW4gcmVm ZXJlbmNlcwogQ1JFQVRFIFRBQkxFIHJmX3RibF9hYmNkX25vcGsoYSBpbnQsIGIgaW50LCBj IGludCwgZCBpbnQpOwogQ1JFQVRFIFRBQkxFIHJmX3RibF9hYmNkX3BrKGEgaW50LCBiIGlu dCwgYyBpbnQsIGQgaW50LCBQUklNQVJZIEtFWShhLGIpKTsKIENSRUFURSBUQUJMRSByZl90 YmxfYWJjZF9wYXJ0X3BrIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQpIFBBUlRJVElPTiBi eSBSQU5HRSAoYSk7CkBAIC05MjUsMTggKzkyNSwxOCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGsgKGEsIGIsIGMpOwogLS0gb2sgLSAo YSxiLGMpIGNvdmVydHMgYWxsIFBLIGNvbHMKIFVQREFURSByZl90YmxfYWJjZF9wayBTRVQg YSA9IDE7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2Fi Y2RfcGsgKGEpOwotLS0gZmFpbCAtICJiIiBpcyBtaXNzaW5nIGZyb20gdGhlIGNvbHVtbiBm aWx0ZXIKKy0tIGZhaWwgLSAiYiIgaXMgbWlzc2luZyBmcm9tIHRoZSBjb2x1bW4gbGlzdAog VVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0gMTsKIEVSUk9SOiAgY2Fubm90IHVwZGF0 ZSB0YWJsZSAicmZfdGJsX2FiY2RfcGsiCi1ERVRBSUw6ICBDb2x1bW4gZmlsdGVyIHVzZWQg YnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5 LgorREVUQUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBu b3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGsgKGIpOwotLS0gZmFpbCAtICJhIiBpcyBt aXNzaW5nIGZyb20gdGhlIGNvbHVtbiBmaWx0ZXIKKy0tIGZhaWwgLSAiYSIgaXMgbWlzc2lu ZyBmcm9tIHRoZSBjb2x1bW4gbGlzdAogVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0g MTsKIEVSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAicmZfdGJsX2FiY2RfcGsiCi1ERVRB SUw6ICBDb2x1bW4gZmlsdGVyIHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNv dmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorREVUQUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBi eSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHku CiAtLSAxYi4gUkVQTElDQSBJREVOVElUWSBpcyBERUZBVUxUIGFuZCB0YWJsZSBoYXMgbm8g UEsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9u b3BrIChhKTsKLS0tIG9rIC0gdGhlcmUncyBubyByZXBsaWNhIGlkZW50aXR5LCBzbyBhbnkg Y29sdW1uIGZpbHRlciB3b3JrcworLS0gb2sgLSB0aGVyZSdzIG5vIHJlcGxpY2EgaWRlbnRp dHksIHNvIGFueSBjb2x1bW4gbGlzdCB3b3JrcwogLS0gbm90ZTogaXQgZmFpbHMgYW55d2F5 LCBqdXN0IGEgYml0IGxhdGVyIGJlY2F1c2UgVVBEQVRFIHJlcXVpcmVzIFJJCiBVUERBVEUg cmZfdGJsX2FiY2Rfbm9wayBTRVQgYSA9IDE7CiBFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFi bGUgInJmX3RibF9hYmNkX25vcGsiIGJlY2F1c2UgaXQgZG9lcyBub3QgaGF2ZSBhIHJlcGxp Y2EgaWRlbnRpdHkgYW5kIHB1Ymxpc2hlcyB1cGRhdGVzCkBAIC05NDUsMzIgKzk0NSwzMiBA QCBISU5UOiAgVG8gZW5hYmxlIHVwZGF0aW5nIHRoZSB0YWJsZSwgc2V0IFJFUExJQ0EgSURF TlRJVFkgdXNpbmcgQUxURVIgVEFCTEUuCiBBTFRFUiBUQUJMRSByZl90YmxfYWJjZF9wayBS RVBMSUNBIElERU5USVRZIEZVTEw7CiBBTFRFUiBUQUJMRSByZl90YmxfYWJjZF9ub3BrIFJF UExJQ0EgSURFTlRJVFkgRlVMTDsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBU QUJMRSByZl90YmxfYWJjZF9wayAoYyk7Ci0tLSBmYWlsIC0gd2l0aCBSRVBMSUNBIElERU5U SVRZIEZVTEwgbm8gY29sdW1uIGZpbHRlciBpcyBhbGxvd2VkCistLSBmYWlsIC0gd2l0aCBS RVBMSUNBIElERU5USVRZIEZVTEwgbm8gY29sdW1uIGxpc3QgaXMgYWxsb3dlZAogVVBEQVRF IHJmX3RibF9hYmNkX3BrIFNFVCBhID0gMTsKIEVSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJs ZSAicmZfdGJsX2FiY2RfcGsiCi1ERVRBSUw6ICBDb2x1bW4gZmlsdGVyIHVzZWQgYnkgdGhl IHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorREVU QUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292 ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBT RVQgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayAoYSwgYiwgYywgZCk7Ci0tLSBmYWlsIC0gd2l0 aCBSRVBMSUNBIElERU5USVRZIEZVTEwgbm8gY29sdW1uIGZpbHRlciBpcyBhbGxvd2VkCist LSBmYWlsIC0gd2l0aCBSRVBMSUNBIElERU5USVRZIEZVTEwgbm8gY29sdW1uIGxpc3QgaXMg YWxsb3dlZAogVVBEQVRFIHJmX3RibF9hYmNkX25vcGsgU0VUIGEgPSAxOwogRVJST1I6ICBj YW5ub3QgdXBkYXRlIHRhYmxlICJyZl90YmxfYWJjZF9ub3BrIgotREVUQUlMOiAgQ29sdW1u IGZpbHRlciB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3ZlciB0aGUgcmVw bGljYSBpZGVudGl0eS4KK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhlIHB1Ymxp Y2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgogLS0gQ2FzZSAz LiBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcKIEFMVEVSIFRBQkxFIHJmX3RibF9hYmNkX3Br IFJFUExJQ0EgSURFTlRJVFkgTk9USElORzsKIEFMVEVSIFRBQkxFIHJmX3RibF9hYmNkX25v cGsgUkVQTElDQSBJREVOVElUWSBOT1RISU5HOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChhKTsKLS0tIG9rIC0gUkVQTElDQSBJREVO VElUWSBOT1RISU5HIG1lYW5zIGFsbCBjb2x1bW4gZmlsdGVycyBhcmUgdmFsaWQKKy0tIG9r IC0gUkVQTElDQSBJREVOVElUWSBOT1RISU5HIG1lYW5zIGFsbCBjb2x1bW4gbGlzdHMgYXJl IHZhbGlkCiAtLSBpdCBzdGlsbCBmYWlscyBsYXRlciBiZWNhdXNlIHdpdGhvdXQgUkkgd2Ug Y2FuJ3QgcmVwbGljYXRlIHVwZGF0ZXMKIFVQREFURSByZl90YmxfYWJjZF9wayBTRVQgYSA9 IDE7CiBFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInJmX3RibF9hYmNkX3BrIiBiZWNh dXNlIGl0IGRvZXMgbm90IGhhdmUgYSByZXBsaWNhIGlkZW50aXR5IGFuZCBwdWJsaXNoZXMg dXBkYXRlcwogSElOVDogIFRvIGVuYWJsZSB1cGRhdGluZyB0aGUgdGFibGUsIHNldCBSRVBM SUNBIElERU5USVRZIHVzaW5nIEFMVEVSIFRBQkxFLgogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIChhLCBiLCBjLCBkKTsKLS0tIG9rIC0g UkVQTElDQSBJREVOVElUWSBOT1RISU5HIG1lYW5zIGFsbCBjb2x1bW4gZmlsdGVycyBhcmUg dmFsaWQKKy0tIG9rIC0gUkVQTElDQSBJREVOVElUWSBOT1RISU5HIG1lYW5zIGFsbCBjb2x1 bW4gbGlzdHMgYXJlIHZhbGlkCiAtLSBpdCBzdGlsbCBmYWlscyBsYXRlciBiZWNhdXNlIHdp dGhvdXQgUkkgd2UgY2FuJ3QgcmVwbGljYXRlIHVwZGF0ZXMKIFVQREFURSByZl90YmxfYWJj ZF9wayBTRVQgYSA9IDE7CiBFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInJmX3RibF9h YmNkX3BrIiBiZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUgYSByZXBsaWNhIGlkZW50aXR5IGFu ZCBwdWJsaXNoZXMgdXBkYXRlcwogSElOVDogIFRvIGVuYWJsZSB1cGRhdGluZyB0aGUgdGFi bGUsIHNldCBSRVBMSUNBIElERU5USVRZIHVzaW5nIEFMVEVSIFRBQkxFLgogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX25vcGsgKGQpOwotLS0g b2sgLSBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcgbWVhbnMgYWxsIGNvbHVtbiBmaWx0ZXJz IGFyZSB2YWxpZAorLS0gb2sgLSBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcgbWVhbnMgYWxs IGNvbHVtbiBsaXN0cyBhcmUgdmFsaWQKIC0tIGl0IHN0aWxsIGZhaWxzIGxhdGVyIGJlY2F1 c2Ugd2l0aG91dCBSSSB3ZSBjYW4ndCByZXBsaWNhdGUgdXBkYXRlcwogVVBEQVRFIHJmX3Ri bF9hYmNkX25vcGsgU0VUIGEgPSAxOwogRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJy Zl90YmxfYWJjZF9ub3BrIiBiZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUgYSByZXBsaWNhIGlk ZW50aXR5IGFuZCBwdWJsaXNoZXMgdXBkYXRlcwpAQCAtOTgzLDIwICs5ODMsMjAgQEAgQUxU RVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBBTFRFUiBDT0xVTU4gYyBTRVQgTk9UIE5VTEw7 CiBDUkVBVEUgVU5JUVVFIElOREVYIGlkeF9hYmNkX25vcGtfYyBPTiByZl90YmxfYWJjZF9u b3BrKGMpOwogQUxURVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBSRVBMSUNBIElERU5USVRZ IFVTSU5HIElOREVYIGlkeF9hYmNkX25vcGtfYzsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wayAoYSk7Ci0tLSBmYWlsIC0gY29sdW1uIGZp bHRlciAiYSIgZG9lcyBub3QgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJVFkgSU5ERVggb24g ImMiCistLSBmYWlsIC0gY29sdW1uIGxpc3QgImEiIGRvZXMgbm90IGNvdmVyIHRoZSBSRVBM SUNBIElERU5USVRZIElOREVYIG9uICJjIgogVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBh ID0gMTsKIEVSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAicmZfdGJsX2FiY2RfcGsiCi1E RVRBSUw6ICBDb2x1bW4gZmlsdGVyIHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90 IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorREVUQUlMOiAgQ29sdW1uIGxpc3QgdXNl ZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRp dHkuCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2Rf cGsgKGMpOwotLS0gb2sgLSBjb2x1bW4gZmlsdGVyICJjIiBkb2VzIGNvdmVyIHRoZSBSRVBM SUNBIElERU5USVRZIElOREVYIG9uICJjIgorLS0gb2sgLSBjb2x1bW4gbGlzdCAiYyIgZG9l cyBjb3ZlciB0aGUgUkVQTElDQSBJREVOVElUWSBJTkRFWCBvbiAiYyIKIFVQREFURSByZl90 YmxfYWJjZF9wayBTRVQgYSA9IDE7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQg VEFCTEUgcmZfdGJsX2FiY2Rfbm9wayAoYSk7Ci0tLSBmYWlsIC0gY29sdW1uIGZpbHRlciAi YSIgZG9lcyBub3QgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJVFkgSU5ERVggb24gImMiCist LSBmYWlsIC0gY29sdW1uIGxpc3QgImEiIGRvZXMgbm90IGNvdmVyIHRoZSBSRVBMSUNBIElE RU5USVRZIElOREVYIG9uICJjIgogVVBEQVRFIHJmX3RibF9hYmNkX25vcGsgU0VUIGEgPSAx OwogRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJyZl90YmxfYWJjZF9ub3BrIgotREVU QUlMOiAgQ29sdW1uIGZpbHRlciB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBj b3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQg YnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5 LgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX25v cGsgKGMpOwotLS0gb2sgLSBjb2x1bW4gZmlsdGVyICJjIiBkb2VzIGNvdmVyIHRoZSBSRVBM SUNBIElERU5USVRZIElOREVYIG9uICJjIgorLS0gb2sgLSBjb2x1bW4gbGlzdCAiYyIgZG9l cyBjb3ZlciB0aGUgUkVQTElDQSBJREVOVElUWSBJTkRFWCBvbiAiYyIKIFVQREFURSByZl90 YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsKIC0tIFRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJs ZQogLS0gc2V0IFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UIHRvIGZhbHNlIGFuZCB0ZXN0 IHJvdyBmaWx0ZXIgZm9yIHBhcnRpdGlvbmVkCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBVUERB VEUgcmZfdGJsX2FiY2RfcGFydF9wayBTRVQgYSA9IDE7CiAtLSB1c2VkIGZvciBwYXJ0aXRp b25lZCB0YWJsZQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIChQVUJMSVNIX1ZJ QV9QQVJUSVRJT05fUk9PVD0wKTsKIEVSUk9SOiAgY2Fubm90IHNldCBwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCA9IGZhbHNlIGZvciBwdWJsaWNhdGlvbiAidGVzdHB1YjYiCi1ERVRB SUw6ICBUaGUgcHVibGljYXRpb24gY29udGFpbnMgYSBjb2x1bW4gZmlsdGVyIGZvciBhIHBh cnRpdGlvbmVkIHRhYmxlICJyZl90YmxfYWJjZF9wYXJ0X3BrIiB3aGljaCBpcyBub3QgYWxs b3dlZCB3aGVuIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGlzIGZhbHNlLgorREVUQUlM OiAgVGhlIHB1YmxpY2F0aW9uIGNvbnRhaW5zIGEgY29sdW1uIGxpc3QgZm9yIGEgcGFydGl0 aW9uZWQgdGFibGUgInJmX3RibF9hYmNkX3BhcnRfcGsiIHdoaWNoIGlzIG5vdCBhbGxvd2Vk IHdoZW4gcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMgZmFsc2UuCiAtLSBOb3cgY2hh bmdlIHRoZSByb290IGZpbHRlciB0byB1c2UgYSBjb2x1bW4gImIiCiAtLSAod2hpY2ggaXMg bm90IGluIHRoZSByZXBsaWNhIGlkZW50aXR5KQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BhcnRfcGtfMSAoYik7CkBAIC0xMDMwLDcgKzEw MzAsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgKFBVQkxJU0hfVklBX1BB UlRJVElPTl9ST09UPTApOwogLS0gZmFpbCAtICJiIiBpcyBub3QgaW4gUkVQTElDQSBJREVO VElUWSBJTkRFWAogVVBEQVRFIHJmX3RibF9hYmNkX3BhcnRfcGsgU0VUIGEgPSAxOwogRVJS T1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJyZl90YmxfYWJjZF9wYXJ0X3BrXzEiCi1ERVRB SUw6ICBDb2x1bW4gZmlsdGVyIHVzZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNv dmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorREVUQUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBi eSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHku CiAtLSBzZXQgUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgdG8gdHJ1ZQogLS0gY2FuIHVz ZSByb3cgZmlsdGVyIGZvciBwYXJ0aXRpb25lZCB0YWJsZQogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjYgU0VUIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsKQEAgLTEwMzks NyArMTAzOSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90 YmxfYWJjZF9wYXJ0X3BrIChiKTsKIC0tIGZhaWwgLSAiYiIgaXMgbm90IGluIFJFUExJQ0Eg SURFTlRJVFkgSU5ERVgKIFVQREFURSByZl90YmxfYWJjZF9wYXJ0X3BrIFNFVCBhID0gMTsK IEVSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAicmZfdGJsX2FiY2RfcGFydF9wa18xIgot REVUQUlMOiAgQ29sdW1uIGZpbHRlciB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5v dCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0RFVEFJTDogIENvbHVtbiBsaXN0IHVz ZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50 aXR5LgogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViNjsKIERST1AgVEFCTEUgcmZfdGJsX2Fi Y2RfcGs7CiBEUk9QIFRBQkxFIHJmX3RibF9hYmNkX25vcGs7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggMjIwM2RjMjM4ZC4uMzJhODEwYjJkMiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMzgxLDEzICszODEsMTMgQEAg Q1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfYWJjZF9ub3BrX2MgT04gcmZfdGJsX2FiY2Rfbm9w ayhjKTsKIERST1AgVEFCTEUgcmZfdGJsX2FiY2RfcGFydF9wazsKIC0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0tLSBmYWls IC0gZHVwbGljYXRlIHRhYmxlcyBhcmUgbm90IGFsbG93ZWQgaWYgdGhhdCB0YWJsZSBoYXMg YW55IGNvbHVtbiBmaWx0ZXJzCistLSBmYWlsIC0gZHVwbGljYXRlIHRhYmxlcyBhcmUgbm90 IGFsbG93ZWQgaWYgdGhhdCB0YWJsZSBoYXMgYW55IGNvbHVtbiBsaXN0cwogU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf ZHVwcyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxIChhKSwgdGVzdHB1Yl90YmwxIFdJVEggKHB1 Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kdXBzIEZP UiBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMSAoYSkgV0lUSCAocHVibGlzaCA9 ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAKLS0tIHRlc3QgZm9y IGNvbHVtbiBmaWx0ZXJzCistLSB0ZXN0IGZvciBjb2x1bW4gbGlzdHMKIFNFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlIEZPUiBUQUJMRSB0ZXN0cHViX3RibDE7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3J0YWJsZV9pbnNlcnQgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKQEAgLTM5 NiwzMiArMzk2LDMyIEBAIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDUgKGEgaW50IFBSSU1B UlkgS0VZLCBiIHRleHQsIGMgdGV4dCwKIAlkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChh ICsgbGVuZ3RoKGIpKSBzdG9yZWQpOwogLS0gZXJyb3I6IGNvbHVtbiAieCIgZG9lcyBub3Qg ZXhpc3QKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFIHRl c3RwdWJfdGJsNSAoYSwgeCk7Ci0tLSBlcnJvcjogcmVwbGljYSBpZGVudGl0eSAiYSIgbm90 IGluY2x1ZGVkIGluIHRoZSBjb2x1bW4gZmlsdGVyCistLSBlcnJvcjogcmVwbGljYSBpZGVu dGl0eSAiYSIgbm90IGluY2x1ZGVkIGluIHRoZSBjb2x1bW4gbGlzdAogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChiLCBjKTsK IFVQREFURSB0ZXN0cHViX3RibDUgU0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3J0YWJsZSBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsNTsKIC0tIGVycm9yOiBnZW5l cmF0ZWQgY29sdW1uICJkIiBjYW4ndCBiZSBpbiBsaXN0CiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRSB0ZXN0cHViX3RibDUgKGEsIGQpOwotLS0gZXJy b3I6IHN5c3RlbSBhdHRyaWJ1dGVzICJjdGlkIiBub3QgYWxsb3dlZCBpbiBjb2x1bW4gZmls dGVyCistLSBlcnJvcjogc3lzdGVtIGF0dHJpYnV0ZXMgImN0aWQiIG5vdCBhbGxvd2VkIGlu IGNvbHVtbiBsaXN0CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBU QUJMRSB0ZXN0cHViX3RibDUgKGEsIGN0aWQpOwogLS0gb2sKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYSwgYyk7CiBBTFRF UiBUQUJMRSB0ZXN0cHViX3RibDUgRFJPUCBDT0xVTU4gYzsJCS0tIG5vIGRpY2UKLS0tIG9r OiBmb3IgaW5zZXJ0LW9ubHkgcHVibGljYXRpb24sIHRoZSBmaWx0ZXIgaXMgYXJiaXRyYXJ5 CistLSBvazogZm9yIGluc2VydC1vbmx5IHB1YmxpY2F0aW9uLCB0aGUgY29sdW1uIGxpc3Qg aXMgYXJiaXRyYXJ5CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2luc2Vy dCBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChiLCBjKTsKIAogLyogbm90IGFsbCByZXBsaWNh IGlkZW50aXRpZXMgYXJlIGdvb2QgZW5vdWdoICovCiBDUkVBVEUgVU5JUVVFIElOREVYIHRl c3RwdWJfdGJsNV9iX2tleSBPTiB0ZXN0cHViX3RibDUgKGIsIGMpOwogQUxURVIgVEFCTEUg dGVzdHB1Yl90Ymw1IEFMVEVSIGIgU0VUIE5PVCBOVUxMLCBBTFRFUiBjIFNFVCBOT1QgTlVM TDsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsNSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElO REVYIHRlc3RwdWJfdGJsNV9iX2tleTsKLS0tIGVycm9yOiByZXBsaWNhIGlkZW50aXR5IChi LGMpIGlzIGNvdmVyZWQgYnkgY29sdW1uIGZpbHRlciAoYSwgYykKKy0tIGVycm9yOiByZXBs aWNhIGlkZW50aXR5IChiLGMpIGlzIGNvdmVyZWQgYnkgY29sdW1uIGxpc3QgKGEsIGMpCiBV UERBVEUgdGVzdHB1Yl90Ymw1IFNFVCBhID0gMTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGUgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDU7CiAKLS0tIGVycm9yOiBjaGFu Z2UgdGhlIHJlcGxpY2EgaWRlbnRpdHkgdG8gImIiLCBhbmQgdGhlbiBmaWx0ZXIgKGEsIGMp IGZhaWxzCistLSBlcnJvcjogY2hhbmdlIHRoZSByZXBsaWNhIGlkZW50aXR5IHRvICJiIiwg YW5kIHRoZW4gY29sdW1uIGxpc3QgKGEsIGMpIGZhaWxzCiBBTFRFUiBUQUJMRSB0ZXN0cHVi X3RibDUgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibDVfYl9rZXk7 CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRSB0ZXN0cHVi X3RibDUgKGEsIGMpOwotLS0gZXJyb3I6IHJlcGxpY2EgaWRlbnRpdHkgKGIsYykgaXMgbm90 IGNvdmVyZWQgYnkgY29sdW1uIGZpbHRlciAoYSxjKQorLS0gZXJyb3I6IHJlcGxpY2EgaWRl bnRpdHkgKGIsYykgaXMgbm90IGNvdmVyZWQgYnkgY29sdW1uIGxpc3QgKGEsIGMpCiBVUERB VEUgdGVzdHB1Yl90Ymw1IFNFVCBhID0gMTsKIAogLyogQnV0IGlmIHVwZC9kZWwgYXJlIG5v dCBwdWJsaXNoZWQsIGl0IHdvcmtzIE9LICovCkBAIC00MzEsNyArNDMxLDcgQEAgQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0 LCB0cnVuY2F0ZScpOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgQURE IFRBQkxFIHRlc3RwdWJfdGJsNSAoYSk7CQktLSBvawogXGRScCsgdGVzdHB1Yl90YWJsZV9p bnMKIAotLS0gd2l0aCBSRVBMSUNBIElERU5USVRZIEZVTEwsIGNvbHVtbiBmaWx0ZXJzIGFy ZSBub3QgYWxsb3dlZAorLS0gd2l0aCBSRVBMSUNBIElERU5USVRZIEZVTEwsIGNvbHVtbiBs aXN0cyBhcmUgbm90IGFsbG93ZWQKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDYgKGEgaW50 LCBiIHRleHQsIGMgdGV4dCk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDYgUkVQTElDQSBJ REVOVElUWSBGVUxMOwogCkBAIC00NDUsMTggKzQ0NSwxOCBAQCBDUkVBVEUgVEFCTEUgdGVz dHB1Yl90Ymw2IChhIGludCwgYiB0ZXh0LCBjIHRleHQpOwogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3J0YWJsZSBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDYgU0VUIENPTFVNTlMg KGEsIGIsIGMpOwogVVBEQVRFIHRlc3RwdWJfdGJsNiBTRVQgYSA9IDE7CiAKLS0tIG1ha2Ug c3VyZSBjaGFuZ2luZyB0aGUgY29sdW1uIGZpbHRlciBpcyB1cGRhdGVkIGluIFNFVCBUQUJM RQorLS0gbWFrZSBzdXJlIGNoYW5naW5nIHRoZSBjb2x1bW4gbGlzdCBpcyB1cGRhdGVkIGlu IFNFVCBUQUJMRQogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsNyAoYSBpbnQgcHJpbWFyeSBr ZXksIGIgdGV4dCwgYyB0ZXh0KTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFi bGUgQUREIFRBQkxFIHRlc3RwdWJfdGJsNyAoYSwgYik7CiBcZCsgdGVzdHB1Yl90Ymw3CiAt LSBvazogd2UnbGwgc2tpcCB0aGlzIHRhYmxlCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcnRhYmxlIFNFVCBUQUJMRSB0ZXN0cHViX3RibDcgKGEsIGIpOwogXGQrIHRlc3RwdWJf dGJsNwotLS0gb2s6IHVwZGF0ZSB0aGUgY29sdW1uIGZpbHRlcgorLS0gb2s6IHVwZGF0ZSB0 aGUgY29sdW1uIGxpc3QKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgU0VU IFRBQkxFIHRlc3RwdWJfdGJsNyAoYSwgYyk7CiBcZCsgdGVzdHB1Yl90Ymw3CiAKLS0tIGNv bHVtbiBmaWx0ZXIgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcyBoYXMgdG8gY292ZXIgcmVwbGlj YSBpZGVudGl0aWVzIGZvcgorLS0gY29sdW1uIGxpc3QgZm9yIHBhcnRpdGlvbmVkIHRhYmxl cyBoYXMgdG8gY292ZXIgcmVwbGljYSBpZGVudGl0aWVzIGZvcgogLS0gYWxsIGNoaWxkIHJl bGF0aW9ucwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSBpbnQsIGIgdGV4dCwgYyB0 ZXh0KSBQQVJUSVRJT04gQlkgSEFTSCAoYSk7CiAtLSBmaXJzdCBwYXJ0aXRpb24gaGFzIHJl cGxpY2EgaWRlbnRpdHkgImEiCkBAIC00NjgsMzcgKzQ2OCwzNyBAQCBDUkVBVEUgVEFCTEUg dGVzdHB1Yl90Ymw4XzEgUEFSVElUSU9OIE9GIHRlc3RwdWJfdGJsOCBGT1IgVkFMVUVTIFdJ VEggKG1vZHVsdXMgMgogQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgQUREIFBSSU1BUlkg S0VZIChiKTsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8xIFJFUExJQ0EgSURFTlRJVFkg VVNJTkcgSU5ERVggdGVzdHB1Yl90Ymw4XzFfcGtleTsKIAotLS0gb2s6IGNvbHVtbiBmaWx0 ZXIgY292ZXJzIGJvdGggImEiIGFuZCAiYiIKKy0tIG9rOiBjb2x1bW4gbGlzdCBjb3ZlcnMg Ym90aCAiYSIgYW5kICJiIgogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwot Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2ZpbHRlciBGT1IgVEFCTEUgdGVzdHB1 Yl90Ymw4IChhLCBiKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0cnVl Jyk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBGT1IgVEFCTEUgdGVz dHB1Yl90Ymw4IChhLCBiKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0 cnVlJyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogCiAtLSBvazogdGhlIHNhbWUg dGhpbmcsIGJ1dCB0cnkgcGxhaW4gQUREIFRBQkxFCi1BTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2NvbF9maWx0ZXIgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDg7Ci1BTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2NvbF9maWx0ZXIgQUREIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSwgYik7 CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9saXN0IERST1AgVEFCTEUgdGVzdHB1 Yl90Ymw4OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9jb2xfbGlzdCBBREQgVEFCTEUg dGVzdHB1Yl90Ymw4IChhLCBiKTsKIFVQREFURSB0ZXN0cHViX3RibDggU0VUIGEgPSAxOwog Ci0tLSBmYWlsdXJlOiBjb2x1bW4gZmlsdGVyIGRvZXMgbm90IGNvdmVyIHJlcGxpY2EgaWRl bnRpdHkgZm9yIHRoZSBzZWNvbmQgcGFydGl0aW9uCi1BTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2NvbF9maWx0ZXIgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDg7Ci1BTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2NvbF9maWx0ZXIgQUREIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSwgYyk7 CistLSBmYWlsdXJlOiBjb2x1bW4gbGlzdCBkb2VzIG5vdCBjb3ZlciByZXBsaWNhIGlkZW50 aXR5IGZvciB0aGUgc2Vjb25kIHBhcnRpdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9jb2xfbGlzdCBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsODsKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfY29sX2xpc3QgQUREIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSwgYyk7CiBVUERB VEUgdGVzdHB1Yl90Ymw4IFNFVCBhID0gMTsKLUFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Y29sX2ZpbHRlciBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsODsKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfY29sX2xpc3QgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDg7CiAKIC0tIGZhaWx1 cmU6IG9uZSBvZiB0aGUgcGFydGl0aW9ucyBoYXMgUkVQTElDQSBJREVOVElUWSBGVUxMCiBB TFRFUiBUQUJMRSB0ZXN0cHViX3RibDhfMSBSRVBMSUNBIElERU5USVRZIEZVTEw7Ci1BTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9maWx0ZXIgQUREIFRBQkxFIHRlc3RwdWJfdGJs OCAoYSwgYyk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9saXN0IEFERCBUQUJM RSB0ZXN0cHViX3RibDggKGEsIGMpOwogVVBEQVRFIHRlc3RwdWJfdGJsOCBTRVQgYSA9IDE7 Ci1BTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9maWx0ZXIgRFJPUCBUQUJMRSB0ZXN0 cHViX3RibDg7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9saXN0IERST1AgVEFC TEUgdGVzdHB1Yl90Ymw4OwogCiAtLSBhZGQgdGFibGUgYW5kIHRoZW4gdHJ5IGNoYW5naW5n IHJlcGxpY2EgaWRlbnRpdHkKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8xIFJFUExJQ0Eg SURFTlRJVFkgVVNJTkcgSU5ERVggdGVzdHB1Yl90Ymw4XzFfcGtleTsKLUFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfY29sX2ZpbHRlciBBREQgVEFCTEUgdGVzdHB1Yl90Ymw4IChhLCBi KTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2xpc3QgQUREIFRBQkxFIHRlc3Rw dWJfdGJsOCAoYSwgYik7CiAKLS0tIGZhaWx1cmU6IHJlcGxpY2EgaWRlbnRpdHkgZnVsbCBj YW4ndCBiZSB1c2VkIHdpdGggYSBjb2x1bW4gZmlsdGVyCistLSBmYWlsdXJlOiByZXBsaWNh IGlkZW50aXR5IGZ1bGwgY2FuJ3QgYmUgdXNlZCB3aXRoIGEgY29sdW1uIGxpc3QKIEFMVEVS IFRBQkxFIHRlc3RwdWJfdGJsOF8xIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKIFVQREFURSB0 ZXN0cHViX3RibDggU0VUIGEgPSAxOwogCi0tLSBmYWlsdXJlOiByZXBsaWNhIGlkZW50aXR5 IGhhcyB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBjb2x1bW4gZmlsdGVyCistLSBmYWlsdXJlOiBy ZXBsaWNhIGlkZW50aXR5IGhhcyB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBjb2x1bW4gbGlzdAog QUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgRFJPUCBDT05TVFJBSU5UIHRlc3RwdWJfdGJs OF8xX3BrZXk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDhfMSBBREQgUFJJTUFSWSBLRVkg KGMpOwogQUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzEgUkVQTElDQSBJREVOVElUWSBVU0lO RyBJTkRFWCB0ZXN0cHViX3RibDhfMV9wa2V5OwpAQCAtNTA2LDEwICs1MDYsMTAgQEAgQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY29sX2ZpbHRlciBGT1IgVEFCTEUgdGVzdHB1Yl90 Ymw4IChhLCBiKSBXSVRIIChwdWJsaXMKIAogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDg7CiAK LS0tIGNvbHVtbiBmaWx0ZXIgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcyBoYXMgdG8gY292ZXIg cmVwbGljYSBpZGVudGl0aWVzIGZvcgorLS0gY29sdW1uIGxpc3QgZm9yIHBhcnRpdGlvbmVk IHRhYmxlcyBoYXMgdG8gY292ZXIgcmVwbGljYSBpZGVudGl0aWVzIGZvcgogLS0gYWxsIGNo aWxkIHJlbGF0aW9ucwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSBpbnQsIGIgdGV4 dCwgYyB0ZXh0KSBQQVJUSVRJT04gQlkgSEFTSCAoYSk7Ci1BTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2NvbF9maWx0ZXIgQUREIFRBQkxFIHRlc3RwdWJfdGJsOCAoYSwgYik7CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2NvbF9saXN0IEFERCBUQUJMRSB0ZXN0cHViX3RibDgg KGEsIGIpOwogLS0gZmlyc3QgcGFydGl0aW9uIGhhcyByZXBsaWNhIGlkZW50aXR5ICJhIgog Q1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsOF8wIChhIGludCwgYiB0ZXh0LCBjIHRleHQpOwog QUxURVIgVEFCTEUgdGVzdHB1Yl90Ymw4XzAgQUREIFBSSU1BUlkgS0VZIChhKTsKQEAgLTUx OSwyMiArNTE5LDIyIEBAIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDhfMSAoYSBpbnQsIGIg dGV4dCwgYyB0ZXh0KTsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOF8xIEFERCBQUklNQVJZ IEtFWSAoYyk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibDhfMSBSRVBMSUNBIElERU5USVRZ IFVTSU5HIElOREVYIHRlc3RwdWJfdGJsOF8xX3BrZXk7CiAKLS0tIG9rOiBhdHRhY2hpbmcg Zmlyc3QgcGFydGl0aW9uIHdvcmtzLCBiZWNhdXNlIChhKSBpcyBpbiBjb2x1bW4gZmlsdGVy CistLSBvazogYXR0YWNoaW5nIGZpcnN0IHBhcnRpdGlvbiB3b3JrcywgYmVjYXVzZSAoYSkg aXMgaW4gY29sdW1uIGxpc3QKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOCBBVFRBQ0ggUEFS VElUSU9OIHRlc3RwdWJfdGJsOF8wIEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCByZW1h aW5kZXIgMCk7Ci0tLSBmYWlsdXJlOiBzZWNvbmQgcGFydGl0aW9uIGhhcyByZXBsaWNhIGlk ZW50aXR5IChjKSwgd2hpY2ggc2kgbm90IGluIGNvbHVtbiBmaWx0ZXIKKy0tIGZhaWx1cmU6 IHNlY29uZCBwYXJ0aXRpb24gaGFzIHJlcGxpY2EgaWRlbnRpdHkgKGMpLCB3aGljaCBzaSBu b3QgaW4gY29sdW1uIGxpc3QKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsOCBBVFRBQ0ggUEFS VElUSU9OIHRlc3RwdWJfdGJsOF8xIEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCByZW1h aW5kZXIgMSk7CiBVUERBVEUgdGVzdHB1Yl90Ymw4IFNFVCBhID0gMTsKIAogLS0gZmFpbHVy ZTogY2hhbmdpbmcgcmVwbGljYSBpZGVudGl0eSB0byBGVUxMIGZvciBwYXJ0aXRpb24gZmFp bHMsIGJlY2F1c2UKLS0tIG9mIHRoZSBjb2x1bW4gZmlsdGVyIG9uIHRoZSBwYXJlbnQKKy0t IG9mIHRoZSBjb2x1bW4gbGlzdCBvbiB0aGUgcGFyZW50CiBBTFRFUiBUQUJMRSB0ZXN0cHVi X3RibDhfMCBSRVBMSUNBIElERU5USVRZIEZVTEw7CiBVUERBVEUgdGVzdHB1Yl90Ymw4IFNF VCBhID0gMTsKIAogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDUsIHRlc3RwdWJfdGJsNiwgdGVz dHB1Yl90Ymw3LCB0ZXN0cHViX3RibDgsIHRlc3RwdWJfdGJsOF8xOwotRFJPUCBQVUJMSUNB VElPTiB0ZXN0cHViX3RhYmxlX2lucywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3J0 YWJsZV9pbnNlcnQsIHRlc3RwdWJfY29sX2ZpbHRlcjsKK0RST1AgUFVCTElDQVRJT04gdGVz dHB1Yl90YWJsZV9pbnMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9ydGFibGVfaW5z ZXJ0LCB0ZXN0cHViX2NvbF9saXN0OwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLS0tIFRlc3QgY29tYmluYXRpb24gb2Yg Y29sdW1uIGFuZCByb3cgZmlsdGVyCistLSBUZXN0IGNvbWJpbmF0aW9uIG9mIGNvbHVtbiBs aXN0IGFuZCByb3cgZmlsdGVyCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnM7CiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwpAQCAtNTQ4LDcgKzU0OCw3IEBAIENSRUFURSBUQUJMRSB0ZXN0 cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEgaW50LCBiIGludCwgYyBpbnQsIFBSSU1BUlkgS0VZ IChhLGMpKTsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnM7CiAtLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IAotLS0gTW9yZSBjb2x1bW4gZmlsdGVyIHRlc3RzIGZvciB2YWxpZGF0aW5nIGNvbHVtbiBy ZWZlcmVuY2VzCistLSBNb3JlIGNvbHVtbiBsaXN0IHRlc3RzIGZvciB2YWxpZGF0aW5nIGNv bHVtbiByZWZlcmVuY2VzCiBDUkVBVEUgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayhhIGludCwg YiBpbnQsIGMgaW50LCBkIGludCk7CiBDUkVBVEUgVEFCTEUgcmZfdGJsX2FiY2RfcGsoYSBp bnQsIGIgaW50LCBjIGludCwgZCBpbnQsIFBSSU1BUlkgS0VZKGEsYikpOwogQ1JFQVRFIFRB QkxFIHJmX3RibF9hYmNkX3BhcnRfcGsgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCkgUEFS VElUSU9OIGJ5IFJBTkdFIChhKTsKQEAgLTU2NywxNSArNTY3LDE1IEBAIENSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEUgcmZfdGJsX2FiY2RfcGsgKGEsIGIpOwogLS0g b2sgLSAoYSxiLGMpIGNvdmVydHMgYWxsIFBLIGNvbHMKIFVQREFURSByZl90YmxfYWJjZF9w ayBTRVQgYSA9IDE7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZf dGJsX2FiY2RfcGsgKGEpOwotLS0gZmFpbCAtICJiIiBpcyBtaXNzaW5nIGZyb20gdGhlIGNv bHVtbiBmaWx0ZXIKKy0tIGZhaWwgLSAiYiIgaXMgbWlzc2luZyBmcm9tIHRoZSBjb2x1bW4g bGlzdAogVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0gMTsKIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wayAoYik7Ci0tLSBmYWlsIC0g ImEiIGlzIG1pc3NpbmcgZnJvbSB0aGUgY29sdW1uIGZpbHRlcgorLS0gZmFpbCAtICJhIiBp cyBtaXNzaW5nIGZyb20gdGhlIGNvbHVtbiBsaXN0CiBVUERBVEUgcmZfdGJsX2FiY2RfcGsg U0VUIGEgPSAxOwogCiAtLSAxYi4gUkVQTElDQSBJREVOVElUWSBpcyBERUZBVUxUIGFuZCB0 YWJsZSBoYXMgbm8gUEsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSBy Zl90YmxfYWJjZF9ub3BrIChhKTsKLS0tIG9rIC0gdGhlcmUncyBubyByZXBsaWNhIGlkZW50 aXR5LCBzbyBhbnkgY29sdW1uIGZpbHRlciB3b3JrcworLS0gb2sgLSB0aGVyZSdzIG5vIHJl cGxpY2EgaWRlbnRpdHksIHNvIGFueSBjb2x1bW4gbGlzdCB3b3JrcwogLS0gbm90ZTogaXQg ZmFpbHMgYW55d2F5LCBqdXN0IGEgYml0IGxhdGVyIGJlY2F1c2UgVVBEQVRFIHJlcXVpcmVz IFJJCiBVUERBVEUgcmZfdGJsX2FiY2Rfbm9wayBTRVQgYSA9IDE7CiAKQEAgLTU4MywyNSAr NTgzLDI1IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEUgcmZfdGJs X2FiY2RfcGsgKGEsIGIpOwogQUxURVIgVEFCTEUgcmZfdGJsX2FiY2RfcGsgUkVQTElDQSBJ REVOVElUWSBGVUxMOwogQUxURVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBSRVBMSUNBIElE RU5USVRZIEZVTEw7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZf dGJsX2FiY2RfcGsgKGMpOwotLS0gZmFpbCAtIHdpdGggUkVQTElDQSBJREVOVElUWSBGVUxM IG5vIGNvbHVtbiBmaWx0ZXIgaXMgYWxsb3dlZAorLS0gZmFpbCAtIHdpdGggUkVQTElDQSBJ REVOVElUWSBGVUxMIG5vIGNvbHVtbiBsaXN0IGlzIGFsbG93ZWQKIFVQREFURSByZl90Ymxf YWJjZF9wayBTRVQgYSA9IDE7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFC TEUgcmZfdGJsX2FiY2Rfbm9wayAoYSwgYiwgYywgZCk7Ci0tLSBmYWlsIC0gd2l0aCBSRVBM SUNBIElERU5USVRZIEZVTEwgbm8gY29sdW1uIGZpbHRlciBpcyBhbGxvd2VkCistLSBmYWls IC0gd2l0aCBSRVBMSUNBIElERU5USVRZIEZVTEwgbm8gY29sdW1uIGxpc3QgaXMgYWxsb3dl ZAogVVBEQVRFIHJmX3RibF9hYmNkX25vcGsgU0VUIGEgPSAxOwogCiAtLSBDYXNlIDMuIFJF UExJQ0EgSURFTlRJVFkgTk9USElORwogQUxURVIgVEFCTEUgcmZfdGJsX2FiY2RfcGsgUkVQ TElDQSBJREVOVElUWSBOT1RISU5HOwogQUxURVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBS RVBMSUNBIElERU5USVRZIE5PVEhJTkc7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBT RVQgVEFCTEUgcmZfdGJsX2FiY2RfcGsgKGEpOwotLS0gb2sgLSBSRVBMSUNBIElERU5USVRZ IE5PVEhJTkcgbWVhbnMgYWxsIGNvbHVtbiBmaWx0ZXJzIGFyZSB2YWxpZAorLS0gb2sgLSBS RVBMSUNBIElERU5USVRZIE5PVEhJTkcgbWVhbnMgYWxsIGNvbHVtbiBsaXN0cyBhcmUgdmFs aWQKIC0tIGl0IHN0aWxsIGZhaWxzIGxhdGVyIGJlY2F1c2Ugd2l0aG91dCBSSSB3ZSBjYW4n dCByZXBsaWNhdGUgdXBkYXRlcwogVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0gMTsK IEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wayAo YSwgYiwgYywgZCk7Ci0tLSBvayAtIFJFUExJQ0EgSURFTlRJVFkgTk9USElORyBtZWFucyBh bGwgY29sdW1uIGZpbHRlcnMgYXJlIHZhbGlkCistLSBvayAtIFJFUExJQ0EgSURFTlRJVFkg Tk9USElORyBtZWFucyBhbGwgY29sdW1uIGxpc3RzIGFyZSB2YWxpZAogLS0gaXQgc3RpbGwg ZmFpbHMgbGF0ZXIgYmVjYXVzZSB3aXRob3V0IFJJIHdlIGNhbid0IHJlcGxpY2F0ZSB1cGRh dGVzCiBVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX25vcGsgKGQpOwotLS0gb2sgLSBS RVBMSUNBIElERU5USVRZIE5PVEhJTkcgbWVhbnMgYWxsIGNvbHVtbiBmaWx0ZXJzIGFyZSB2 YWxpZAorLS0gb2sgLSBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcgbWVhbnMgYWxsIGNvbHVt biBsaXN0cyBhcmUgdmFsaWQKIC0tIGl0IHN0aWxsIGZhaWxzIGxhdGVyIGJlY2F1c2Ugd2l0 aG91dCBSSSB3ZSBjYW4ndCByZXBsaWNhdGUgdXBkYXRlcwogVVBEQVRFIHJmX3RibF9hYmNk X25vcGsgU0VUIGEgPSAxOwogCkBAIC02MTMsMTYgKzYxMywxNiBAQCBDUkVBVEUgVU5JUVVF IElOREVYIGlkeF9hYmNkX3BrX2MgT04gcmZfdGJsX2FiY2RfcGsoYyk7CiBDUkVBVEUgVU5J UVVFIElOREVYIGlkeF9hYmNkX25vcGtfYyBPTiByZl90YmxfYWJjZF9ub3BrKGMpOwogQUxU RVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVY IGlkeF9hYmNkX25vcGtfYzsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJM RSByZl90YmxfYWJjZF9wayAoYSk7Ci0tLSBmYWlsIC0gY29sdW1uIGZpbHRlciAiYSIgZG9l cyBub3QgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJVFkgSU5ERVggb24gImMiCistLSBmYWls IC0gY29sdW1uIGxpc3QgImEiIGRvZXMgbm90IGNvdmVyIHRoZSBSRVBMSUNBIElERU5USVRZ IElOREVYIG9uICJjIgogVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0gMTsKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wayAoYyk7Ci0t LSBvayAtIGNvbHVtbiBmaWx0ZXIgImMiIGRvZXMgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJ VFkgSU5ERVggb24gImMiCistLSBvayAtIGNvbHVtbiBsaXN0ICJjIiBkb2VzIGNvdmVyIHRo ZSBSRVBMSUNBIElERU5USVRZIElOREVYIG9uICJjIgogVVBEQVRFIHJmX3RibF9hYmNkX3Br IFNFVCBhID0gMTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90 YmxfYWJjZF9ub3BrIChhKTsKLS0tIGZhaWwgLSBjb2x1bW4gZmlsdGVyICJhIiBkb2VzIG5v dCBjb3ZlciB0aGUgUkVQTElDQSBJREVOVElUWSBJTkRFWCBvbiAiYyIKKy0tIGZhaWwgLSBj b2x1bW4gbGlzdCAiYSIgZG9lcyBub3QgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJVFkgSU5E RVggb24gImMiCiBVUERBVEUgcmZfdGJsX2FiY2Rfbm9wayBTRVQgYSA9IDE7CiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayAoYyk7Ci0t LSBvayAtIGNvbHVtbiBmaWx0ZXIgImMiIGRvZXMgY292ZXIgdGhlIFJFUExJQ0EgSURFTlRJ VFkgSU5ERVggb24gImMiCistLSBvayAtIGNvbHVtbiBsaXN0ICJjIiBkb2VzIGNvdmVyIHRo ZSBSRVBMSUNBIElERU5USVRZIElOREVYIG9uICJjIgogVVBEQVRFIHJmX3RibF9hYmNkX25v cGsgU0VUIGEgPSAxOwogCiAtLSBUZXN0cyBmb3IgcGFydGl0aW9uZWQgdGFibGUKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyOV9jb2x1bW5fbGlzdC5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyOV9jb2x1bW5fbGlzdC5wbAppbmRleCBlYzJjOGE3 ODlhLi5lNWFiNWQ1NzMxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjlfY29sdW1uX2xpc3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI5X2Nv bHVtbl9saXN0LnBsCkBAIC01LDcgKzUsNyBAQAogdXNlIHdhcm5pbmdzOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Ci11 c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAyNjsKK3VzZSBUZXN0OjpNb3JlOwogCiAjIHNldHVw CiAKQEAgLTI5MCw4ICsyOTAsOCBAQCBzdWIgd2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMK IDJ8MjJ8MjIyMiksCiAgICAnb3ZlcmxhcHBpbmcgcHVibGljYXRpb25zIHdpdGggb3Zlcmxh cHBpbmcgY29sdW1uIGxpc3RzJyk7CiAKLSMgYW5kIGZpbmFsbHksIHNldCB0aGUgY29sdW1u IGZpbHRlciB0byBBTEwgZm9yIG9uZSBvZiB0aGUgcHVibGljYXRpb25zLAotIyB3aGljaCBt ZWFucyByZXBsaWNhdGluZyBhbGwgY29sdW1ucyAocmVtb3ZpbmcgdGhlIGNvbHVtbiBmaWx0 ZXIpLCBidXQKKyMgYW5kIGZpbmFsbHksIHNldCB0aGUgY29sdW1uIGxpc3QgdG8gQUxMIGZv ciBvbmUgb2YgdGhlIHB1YmxpY2F0aW9ucywKKyMgd2hpY2ggbWVhbnMgcmVwbGljYXRpbmcg YWxsIGNvbHVtbnMgKHJlbW92aW5nIHRoZSBjb2x1bW4gbGlzdCksIGJ1dAogIyBmaXJzdCBh ZGQgdGhlIG1pc3NpbmcgY29sdW1uIHRvIHRoZSB0YWJsZSBvbiBzdWJzY3JpYmVyCiAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKIAlBTFRFUiBQVUJMSUNB VElPTiBwdWIzIEFMVEVSIFRBQkxFIHRhYjUgU0VUIENPTFVNTlMgQUxMOwpAQCAtMzE0LDkg KzMxNCw5IEBAIHN1YiB3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYwogM3wzM3wzMzMzfDMz MyksCiAgICAnb3ZlcmxhcHBpbmcgcHVibGljYXRpb25zIHdpdGggb3ZlcmxhcHBpbmcgY29s dW1uIGxpc3RzJyk7CiAKLSMgVEVTVDogY3JlYXRlIGEgdGFibGUgd2l0aCBhIGNvbHVtbiBm aWx0ZXIsIHRoZW4gY2hhbmdlIHRoZSByZXBsaWNhCisjIFRFU1Q6IGNyZWF0ZSBhIHRhYmxl IHdpdGggYSBjb2x1bW4gbGlzdCwgdGhlbiBjaGFuZ2UgdGhlIHJlcGxpY2EKICMgaWRlbnRp dHkgYnkgcmVwbGFjaW5nIGEgcHJpbWFyeSBrZXkgKGJ1dCB1c2UgYSBkaWZmZXJlbnQgY29s dW1uIGluCi0jIHRoZSBjb2x1bW4gZmlsdGVyKQorIyB0aGUgY29sdW1uIGxpc3QpCiAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKIAlDUkVBVEUgVEFCTEUg dGFiNiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCwgZCBpbnQpOwogCUNSRUFU RSBQVUJMSUNBVElPTiBwdWI0IEZPUiBUQUJMRSB0YWI2IChhLCBiKTsKQEAgLTM3Nyw5ICsz NzcsOSBAQCBzdWIgd2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMKICAgICdyZXBsaWNhdGlv biB3aXRoIHRoZSBtb2RpZmllZCBwcmltYXJ5IGtleScpOwogCiAKLSMgVEVTVDogY3JlYXRl IGEgdGFibGUgd2l0aCBhIGNvbHVtbiBmaWx0ZXIsIHRoZW4gY2hhbmdlIHRoZSByZXBsaWNh CisjIFRFU1Q6IGNyZWF0ZSBhIHRhYmxlIHdpdGggYSBjb2x1bW4gbGlzdCwgdGhlbiBjaGFu Z2UgdGhlIHJlcGxpY2EKICMgaWRlbnRpdHkgYnkgcmVwbGFjaW5nIGEgcHJpbWFyeSBrZXkg d2l0aCBhIGtleSBvbiBtdWx0aXBsZSBjb2x1bW5zCi0jIChhbGwgb2YgdGhlbSBjb3ZlcmVk IGJ5IHRoZSBjb2x1bW4gZmlsdGVyKQorIyAoYWxsIG9mIHRoZW0gY292ZXJlZCBieSB0aGUg Y29sdW1uIGxpc3QpCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cSgKIAlDUkVBVEUgVEFCTEUgdGFiNyAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGlu dCwgZCBpbnQpOwogCUNSRUFURSBQVUJMSUNBVElPTiBwdWI1IEZPUiBUQUJMRSB0YWI3IChh LCBiKTsKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdWIgd2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5 bmMKICAgICdyZXBsaWNhdGlvbiB3aXRoIHRoZSBtb2RpZmllZCBwcmltYXJ5IGtleScpOwog CiAjIG5vdyBzd2l0Y2ggdGhlIHByaW1hcnkga2V5IGFnYWluIHRvIGFub3RoZXIgY29sdW1u cyBub3QgY292ZXJlZCBieSB0aGUKLSMgY29sdW1uIGZpbHRlciwgYnV0IGFsc28gZ2VuZXJh dGUgd3JpdGVzIGJldHdlZW4gdGhlIGRyb3AgYW5kIGNyZWF0aW9uCisjIGNvbHVtbiBsaXN0 LCBidXQgYWxzbyBnZW5lcmF0ZSB3cml0ZXMgYmV0d2VlbiB0aGUgZHJvcCBhbmQgY3JlYXRp b24KICMgb2YgdGhlIG5ldyBjb25zdHJhaW50CiAKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHFxKApAQCAtNDUwLDExICs0NTAsMTEgQEAgc3ViIHdhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jCiAKICMgVEVTVDogcGFydGl0aW9uZWQgdGFibGVzICh3aXRo IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpCiAjIGFuZCByZXBsaWNhIGlk ZW50aXR5LiBUaGUgKGxlYWYpIHBhcnRpdGlvbnMgbWF5IGhhdmUgZGlmZmVyZW50IFJJLCBz bwotIyB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBwYXJ0aXRpb24gUkkgKHdpdGggcmVzcGVjdCB0 byB0aGUgY29sdW1uIGZpbHRlcikKKyMgd2UgbmVlZCB0byBjaGVjayB0aGUgcGFydGl0aW9u IFJJICh3aXRoIHJlc3BlY3QgdG8gdGhlIGNvbHVtbiBsaXN0KQogIyB3aGlsZSBhdHRhY2hp bmcgdGhlIHBhcnRpdGlvbi4KIAogIyBGaXJzdCwgbGV0J3MgY3JlYXRlIGEgcGFydGl0aW9u ZWQgdGFibGUgd2l0aCB0d28gcGFydGl0aW9ucywgZWFjaCB3aXRoCi0jIGEgZGlmZmVyZW50 IFJJLCBidXQgYSBjb2x1bW4gZmlsdGVyIG5vdCBjb3ZlcmluZyBhbGwgdGhvc2UgUkkuCisj IGEgZGlmZmVyZW50IFJJLCBidXQgYSBjb2x1bW4gbGlzdCBub3QgY292ZXJpbmcgYWxsIHRo b3NlIFJJLgogCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgK IAlDUkVBVEUgVEFCTEUgdGVzdF9wYXJ0X2EgKGEgaW50LCBiIGludCwgYyBpbnQpIFBBUlRJ VElPTiBCWSBMSVNUIChhKTsKQEAgLTUwOCw4ICs1MDgsOCBAQCBzdWIgd2FpdF9mb3Jfc3Vi c2NyaXB0aW9uX3N5bmMKIDJ8NCksCiAgICAncGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudCBy ZXBsaWNhIGlkZW50aXRpZXMgbm90IHJlcGxpY2F0ZWQgY29ycmVjdGx5Jyk7CiAKLSMgVGhp cyB0aW1lIHN0YXJ0IHdpdGggYSBjb2x1bW4gZmlsdGVyIGNvdmVyaW5nIFJJIGZvciBhbGwg cGFydGl0aW9ucywgYnV0Ci0jIHRoZW4gdXBkYXRlIHRoZSBjb2x1bW4gZmlsdGVyIHRvIG5v dCBjb3ZlciBjb2x1bW4gImIiIChuZWVkZWQgYnkgdGhlCisjIFRoaXMgdGltZSBzdGFydCB3 aXRoIGEgY29sdW1uIGxpc3QgY292ZXJpbmcgUkkgZm9yIGFsbCBwYXJ0aXRpb25zLCBidXQK KyMgdGhlbiB1cGRhdGUgdGhlIGNvbHVtbiBsaXN0IHRvIG5vdCBjb3ZlciBjb2x1bW4gImIi IChuZWVkZWQgYnkgdGhlCiAjIHNlY29uZCBwYXJ0aXRpb24pCiAKICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKApAQCAtNTYzLDkgKzU2Myw5IEBAIHN1YiB3 YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYwogICAgJ3BhcnRpdGlvbnMgd2l0aCBkaWZmZXJl bnQgcmVwbGljYSBpZGVudGl0aWVzIG5vdCByZXBsaWNhdGVkIGNvcnJlY3RseScpOwogCiAK LSMgVEVTVDogVGhpcyB0aW1lIHN0YXJ0IHdpdGggYSBjb2x1bW4gZmlsdGVyIGNvdmVyaW5n IFJJIGZvciBhbGwgcGFydGl0aW9ucywKKyMgVEVTVDogVGhpcyB0aW1lIHN0YXJ0IHdpdGgg YSBjb2x1bW4gbGlzdCBjb3ZlcmluZyBSSSBmb3IgYWxsIHBhcnRpdGlvbnMsCiAjIGJ1dCB0 aGVuIHVwZGF0ZSBSSSBmb3Igb25lIG9mIHRoZSBwYXJ0aXRpb25zIHRvIG5vdCBiZSBjb3Zl cmVkIGJ5IHRoZQotIyBjb2x1bW4gZmlsdGVyIGFueW1vcmUuCisjIGNvbHVtbiBsaXN0IGFu eW1vcmUuCiAKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAog CUNSRUFURSBUQUJMRSB0ZXN0X3BhcnRfYyAoYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElU SU9OIEJZIExJU1QgKGEpOwpAQCAtNTk0LDcgKzU5NCw3IEBAIHN1YiB3YWl0X2Zvcl9zdWJz Y3JpcHRpb25fc3luYwogCiAjIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIHJlcGxpY2F0aW5nIGRh dGEgdGhyb3VnaCBwYXJ0aXRpb24gcm9vdCwgd2l0aCBhIGNvbHVtbgogIyBmaWx0ZXIgb24g dGhlIHJvb3QsIGFuZCB0aGVuIGFkZCB0aGUgcGFydGl0aW9ucyBvbmUgYnkgb25lIHdpdGgg c2VwYXJhdGUKLSMgY29sdW1uIGZpbHRlcnMgKGJ1dCB0aG9zZSBhcmUgbm90IGFwcGxpZWQp CisjIGNvbHVtbiBsaXN0cyAoYnV0IHRob3NlIGFyZSBub3QgYXBwbGllZCkKICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAogCUNSRUFURSBQVUJMSUNBVElP TiBwdWI4IEZPUiBUQUJMRSB0ZXN0X3BhcnRfYyBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCA9IGZhbHNlKTsKIAlBTFRFUiBQVUJMSUNBVElPTiBwdWI4IEFERCBUQUJMRSB0 ZXN0X3BhcnRfY18xIChhLGMpOwpAQCAtNjIzLDggKzYyMyw4IEBAIHN1YiB3YWl0X2Zvcl9z dWJzY3JpcHRpb25fc3luYwogCiAKICMgY3JlYXRlIGEgcHVibGljYXRpb24gbm90IHJlcGxp Y2F0aW5nIGRhdGEgdGhyb3VnaCBwYXJ0aXRpb24gcm9vdCwgd2l0aG91dAotIyBhIGNvbHVt biBmaWx0ZXIgb24gdGhlIHJvb3QsIGFuZCB0aGVuIGFkZCB0aGUgcGFydGl0aW9ucyBvbmUg Ynkgb25lIHdpdGgKLSMgc2VwYXJhdGUgY29sdW1uIGZpbHRlcnMKKyMgYSBjb2x1bW4gbGlz dCBvbiB0aGUgcm9vdCwgYW5kIHRoZW4gYWRkIHRoZSBwYXJ0aXRpb25zIG9uZSBieSBvbmUg d2l0aAorIyBzZXBhcmF0ZSBjb2x1bW4gbGlzdHMKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHFxKAogCURST1AgUFVCTElDQVRJT04gcHViODsKIAlDUkVBVEUg UFVCTElDQVRJT04gcHViOCBGT1IgVEFCTEUgdGVzdF9wYXJ0X2MgV0lUSCAocHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CkBAIC03MDMsNyArNzAzLDcgQEAgc3ViIHdh aXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jCiAgICAncGFydGl0aW9ucyB3aXRoIGRpZmZlcmVu dCByZXBsaWNhIGlkZW50aXRpZXMgbm90IHJlcGxpY2F0ZWQgY29ycmVjdGx5Jyk7CiAKICMg VEVTVDogV2l0aCBhIHRhYmxlIGluY2x1ZGVkIGluIG11bHRpcGxlIHB1YmxpY2F0aW9ucywg d2Ugc2hvdWxkIHVzZSBhCi0jIHVuaW9uIG9mIHRoZSBjb2x1bW4gZmlsdGVycy4gU28gd2l0 aCBjb2x1bW4gZmlsdGVycyAoYSxiKSBhbmQgKGEsYykgd2UKKyMgdW5pb24gb2YgdGhlIGNv bHVtbiBsaXN0cy4gU28gd2l0aCBjb2x1bW4gbGlzdHMgKGEsYikgYW5kIChhLGMpIHdlCiAj IHNob3VsZCByZXBsaWNhdGUgKGEsYixjKS4KIAogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXEoCkBAIC03MjcsMTEgKzcyNywxMSBAQCBzdWIgd2FpdF9mb3Jf c3Vic2NyaXB0aW9uX3N5bmMKIAogaXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIlNFTEVDVCAqIEZST00gdGVzdF9taXhfMSIpLAogICAgcXEoMXwyfDMpLAot ICAgJ2EgbWl4IG9mIHB1YmxpY2F0aW9ucyBzaG91bGQgdXNlIGEgdW5pb24gb2YgY29sdW1u IGZpbHRlcicpOworICAgJ2EgbWl4IG9mIHB1YmxpY2F0aW9ucyBzaG91bGQgdXNlIGEgdW5p b24gb2YgY29sdW1uIGxpc3QnKTsKIAogCiAjIFRFU1Q6IFdpdGggYSB0YWJsZSBpbmNsdWRl ZCBpbiBtdWx0aXBsZSBwdWJsaWNhdGlvbnMsIHdlIHNob3VsZCB1c2UgYQotIyB1bmlvbiBv ZiB0aGUgY29sdW1uIGZpbHRlcnMuIElmIGFueSBvZiB0aGUgcHVibGljYXRpb25zIGlzIEZP UiBBTEwKKyMgdW5pb24gb2YgdGhlIGNvbHVtbiBsaXN0cy4gSWYgYW55IG9mIHRoZSBwdWJs aWNhdGlvbnMgaXMgRk9SIEFMTAogIyBUQUJMRVMsIHdlIHNob3VsZCByZXBsaWNhdGUgYWxs IGNvbHVtbnMuCiAKICMgZHJvcCB1bm5lY2Vzc2FyeSB0YWJsZXMsIHNvIGFzIG5vdCB0byBp bnRlcmZlcmUgd2l0aCB0aGUgRk9SIEFMTCBUQUJMRVMKQEAgLTc2MiwxMSArNzYyLDExIEBA IHN1YiB3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYwogCiBpcygkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywiU0VMRUNUICogRlJPTSB0ZXN0X21peF8yIiksCiAg ICBxcSgxfDJ8MyksCi0gICAnYSBtaXggb2YgcHVibGljYXRpb25zIHNob3VsZCB1c2UgYSB1 bmlvbiBvZiBjb2x1bW4gZmlsdGVyJyk7CisgICAnYSBtaXggb2YgcHVibGljYXRpb25zIHNo b3VsZCB1c2UgYSB1bmlvbiBvZiBjb2x1bW4gbGlzdCcpOwogCiAKICMgVEVTVDogV2l0aCBh IHRhYmxlIGluY2x1ZGVkIGluIG11bHRpcGxlIHB1YmxpY2F0aW9ucywgd2Ugc2hvdWxkIHVz ZSBhCi0jIHVuaW9uIG9mIHRoZSBjb2x1bW4gZmlsdGVycy4gSWYgYW55IG9mIHRoZSBwdWJs aWNhdGlvbnMgaXMgRk9SIEFMTAorIyB1bmlvbiBvZiB0aGUgY29sdW1uIGxpc3RzLiBJZiBh bnkgb2YgdGhlIHB1YmxpY2F0aW9ucyBpcyBGT1IgQUxMCiAjIFRBQkxFUyBJTiBTQ0hFTUEs IHdlIHNob3VsZCByZXBsaWNhdGUgYWxsIGNvbHVtbnMuCiAKICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKApAQCAtNzkwLDExICs3OTAsMTEgQEAgc3ViIHdh aXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jCiAKIGlzKCRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCJTRUxFQ1QgKiBGUk9NIHRlc3RfbWl4XzMiKSwKICAgIHFxKDF8 MnwzKSwKLSAgICdhIG1peCBvZiBwdWJsaWNhdGlvbnMgc2hvdWxkIHVzZSBhIHVuaW9uIG9m IGNvbHVtbiBmaWx0ZXInKTsKKyAgICdhIG1peCBvZiBwdWJsaWNhdGlvbnMgc2hvdWxkIHVz ZSBhIHVuaW9uIG9mIGNvbHVtbiBsaXN0Jyk7CiAKIAogIyBURVNUOiBDaGVjayBoYW5kbGlu ZyBvZiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCAtIGlmIGEgcGFydGl0aW9uIGlzCi0j IHB1Ymxpc2hlZCB0aHJvdWdoIHBhcnRpdGlvbiByb290LCB3ZSBzaG91bGQgb25seSBhcHBs eSB0aGUgY29sdW1uIGZpbHRlcgorIyBwdWJsaXNoZWQgdGhyb3VnaCBwYXJ0aXRpb24gcm9v dCwgd2Ugc2hvdWxkIG9ubHkgYXBwbHkgdGhlIGNvbHVtbiBsaXN0CiAjIGRlZmluZWQgZm9y IHRoZSB3aG9sZSB0YWJsZSAobm90IHRoZSBwYXJ0aXRpb25zKSAtIGJvdGggZHVyaW5nIHRo ZSBpbml0aWFsCiAjIHN5bmMgYW5kIHdoZW4gcmVwbGljYXRpbmcgY2hhbmdlcy4gVGhpcyBp cyB3aGF0IHdlIGRvIGZvciByb3cgZmlsdGVycy4KIApAQCAtODI4LDcgKzgyOCw3IEBAIHN1 YiB3YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYwogaXMoJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIlNFTEVDVCAqIEZST00gdGVzdF9yb290IE9SREVSIEJZIGEs IGIsIGMiKSwKICAgIHFxKDF8fAogMTB8fCksCi0gICAncHVibGljYXRpb24gdmlhIHBhcnRp dGlvbiByb290IGFwcGxpZXMgY29sdW1uIGZpbHRlcicpOworICAgJ3B1YmxpY2F0aW9uIHZp YSBwYXJ0aXRpb24gcm9vdCBhcHBsaWVzIGNvbHVtbiBsaXN0Jyk7CiAKICRub2RlX3N1YnNj cmliZXItPnN0b3AoJ2Zhc3QnKTsKICRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcpOwot LSAKMi4zNS4xCgo= --------------9jE0g1tyVxka1D2VUS2qcpj3--