Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tM112-0014yq-IR for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Dec 2024 08:27:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tM10x-0036nm-Uz for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Dec 2024 08:27:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tM10x-0036nd-EG for pgsql-hackers@lists.postgresql.org; Fri, 13 Dec 2024 08:27:12 +0000 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tM10u-002bcD-AN for pgsql-hackers@lists.postgresql.org; Fri, 13 Dec 2024 08:27:12 +0000 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-85bc7d126b2so650347241.1 for ; Fri, 13 Dec 2024 00:27:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734078427; x=1734683227; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1o5yJlTNy+ltD90IqdNFdD8fipFNKOtbqspODfCHIOo=; b=ipO7myBIpdYwr288lxk8W0G5wa5xrR4eyzWsv2wWT6bihPzrbToCuZ+gSWsfv9syEL ohUKjzRuwsxzZdf8VLhHhKPiFPXjyDTw4raLC4sZQwBLFu1HG87cTINk+2+J+3/Xy1Yv Aa+xMlhBOQMC5YcCJX3wAfBCkIvFjWV/QeYtySrLCZlqiTBUx7Fc7asFS/9EXO2CKHJ9 rK2knSVFcDRMK63RvfLgwJVU0Bfh+ZTS07E7pzD/r7DipyYIWL38t95jhVLMYiMpdsU+ ZHnahJl64KSyHDCqDDNF75LLFAKCKbDNfYypPXAb2ydKhWGuh3Oj/QcIq0V03b8UL6Qv DdOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734078427; x=1734683227; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=1o5yJlTNy+ltD90IqdNFdD8fipFNKOtbqspODfCHIOo=; b=ZvoIENL319WNqVJPkp6qfKXJv0N5iJETYgAwb814/x/JgnUqVmyNEaSdgPHrejTz45 82breJZbP30IJv/zaDcH+SIF2B9FI7cAv4HuD2CMar0Karw5XSk9BHW1CUcfL4qbKwng cOua7/EIp2xf0t56lrbpX9zMMJ2WCAFGwDSPAdWoXLGAnNLsOt3s/Mmmqf7fQz53dlvc 491pfRqzgHh02xPZbBXKvtDcI+TAgat2LBo+qib75uJZ6W0338bISUP55AzmnPt2Zp0U dVvs+1zj0SrXwABwWRPpFyJKTyooZ55oJEaQ4mJ+zuTMAmdwNyG7d6qUfuE1TubTopA8 +4qw== X-Gm-Message-State: AOJu0Yy6FnzoctY905nSoTrdth/pGdRIa0FQw20CMzP8nCirry2K0xP3 jN6o36xQr6PY5scCFVkNTF1UYo6IiiOqcT/bPFeaffQ6Qk2isN01SHSWhP75Y7CWp1RJHCBZ4iG jyG9yl0CUUNZJjvKe+ixnV8zxteY= X-Gm-Gg: ASbGnctVZRknSWnNI+ImnkbQmIUnAx4gWRd0RZUVo7jlg4iqWPkSkuK/fLR8CCAS7ky VuVmTsMS+Y4611KnLHYV+Mj1j/4w8iHXrCTw+PoU= X-Google-Smtp-Source: AGHT+IHrPr52S/l6R/+qs8Ox8dOKuHXX6D6mVExdHqU2PB9kyTXV7HCwDHHXDZavOsn/bUCfqS3/SwwMi/mFvltn4Sc= X-Received: by 2002:a05:6102:c05:b0:4b1:1b07:f7c3 with SMTP id ada2fe7eead31-4b25ddbefcdmr1671194137.20.1734078426844; Fri, 13 Dec 2024 00:27:06 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Fri, 13 Dec 2024 16:26:55 +0800 Message-ID: Subject: Re: on_error table, saving error info to a table To: Nishant Sharma Cc: PostgreSQL Hackers , Kirill Reshke Content-Type: multipart/mixed; boundary="000000000000a5ae7306292298b5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a5ae7306292298b5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 11, 2024 at 7:41=E2=80=AFPM Nishant Sharma wrote: > > Thanks for the v3 patch! > > Please find review comments on v3:- > > 1) I think no need to change the below if condition, we can keep > it the way it was before i.e with > "cstate->opts.on_error !=3D COPY_ON_ERROR_STOP" and we > add a new error ereport the way v3 has. Because for > cstate->opts.on_error as COPY_ON_ERROR_STOP cases we > can avoid two if conditions inside upper if. > > + if (cstate->num_errors > 0 && > cstate->opts.log_verbosity >=3D COPY_LOG_VERBOSITY_DEFAULT) > 2) No need for the below "if" check for maxattnum. We can simply > increment it with "++maxattnum" and later check if we have exactly > 10 attributes for the error table. Because even if we drop any > attribute and maxattnum is 10 in pg_attribute for that rel, we should > still error out. Maybe we can rename it to "totalatts"? > > + if (maxattnum <=3D attForm->attnum) > + maxattnum =3D attForm->attnum; > > 3) #define would be better, also as mentioned by Kirill switch > condition with proper #define would be better. > > + if (maxattnum !=3D 10) > + on_error_tbl_ok =3D false; > > 4) hi. Thanks for the review. The attached v4 patch addressed these two issues. > > that would be more work. > > so i stick to if there is a table can use to > > error saving then use it, otherwise error out. > > > YES. but that would lead to a better design with an error table. > Also, I think Krill mentions the same. That is to auto create, if it > does not exist. > I decided not to auto-create the table. main reason not to do it: 1. utility COPY command with another SPI utility CREATE TABLE command may w= ork. but there is no precedent. 2. if we auto-create the on_error table with BeginCopyFrom. then later we have to use get_relname_relid to get the newly created table = Oid, I think it somehow counts as repeating name lookups, see relevant linke [1], [2]. [1] https://postgr.es/m/20240808171351.a9.nmisch@google.com [2] https://postgr.es/m/CA+TgmobHYix=3DNn8D4RUHa6fhUVPR88KGAMq1pBfnGfOfEjRi= xA@mail.gmail.com --000000000000a5ae7306292298b5 Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0001-introduce-on_error-table-option-for-COPY-FROM.patch" Content-Disposition: attachment; filename="v4-0001-introduce-on_error-table-option-for-COPY-FROM.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4mhhter0 RnJvbSA0ZTM4YzgwMGE3NDgxYzFhNGZhZDFiNmJlYjNjMTFkZDI0MjM1MDAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTMgRGVjIDIwMjQgMTY6MjM6MTcgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 IDEvMV0gaW50cm9kdWNlIG9uX2Vycm9yIHRhYmxlIG9wdGlvbiBmb3IgQ09QWSBGUk9NLgoKdGhl IHN5bnRheCBpcyB7b25fZXJyb3IgdGFibGUsIHRhYmxlIGVycm9yX3NhdmluZ190Ymx9Lgp3ZSBm aXJzdCBjaGVjayB0YWJsZSBlcnJvcl9zYXZpbmdfdGJsJ3MgZXhpc3RlbmNlIGFuZCBkYXRhIGRl ZmluaXRpb24uCmlmIGl0IGRvZXMgbm90IG1lZXQgb3VyIGNyaXRlcmlhLCB0aGVuIHdlIHF1aWNr bHkgZXJyb3Igb3V0LgoKd2UgYWxzbyBkaWQgcHJlbGltaW5hcnkgY2hlY2sgdGhlIGxvY2sgb2Yg ZXJyb3Igc2F2aW5nIHRhYmxlIHNvIHRoZSBpbnNlcnQgdG8KZXJyb3Igc2F2aW5nIHRhYmxlIHdv bid0IHN0dWNrLgoKb25jZSB0aGVyZSBpcyBhIGVycm9yIGhhcHBlbmVkLCB3ZSBzYXZlIHRoZSBl cnJvciBtZXRlZGF0YSBhbmQgaW5zZXJ0IGl0IHRvIHRoZQplcnJvcl9zYXZpbmdfdGFibGUuIGFu ZCBjb250aW51ZSB0byB0aGUgbmV4dCByb3cuICBUaGF0IG1lYW5zIGZvciBvbmUgcm93LCB3ZQpj YW4gb25seSBjYXRjaCB0aGUgZmlyc3QgZmllbGQgdGhhdCBoYXZlIGVycm9ycy4KCmRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDSnVmeEhfT0pwVnJhJTNEMGM0b3c4ZmJ4SGo3aGVN Y1ZhVE5FUGE1dkF1clNlTkEtNlElNDBtYWlsLmdtYWlsLmNvbQpjb250ZXh0OiAgICBodHRwczov L3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzc1MjY3Mi4xNjk5NDc0MzM2JTQwc3NzLnBn aC5wYS51cwpjb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvNTEv NDgxNy8KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICAgICAgIHwgMTE4 ICsrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICAgICAg IHwgIDMxICsrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICAgICAgfCAx OTMgKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t cGFyc2UuYyAgICAgfCAgNDMgKysrKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAgICAg ICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwu aCB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCAgICAgIHwgMTA3 ICsrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbCAgICAgICAgICAg fCAgODkgKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNTgzIGluc2VydGlvbnMoKyksIDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCA4Mzk0NDAyZjA5Li5lNjY0NzRjNzRmIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NvcHkuc2dtbApAQCAtNDQsNiArNDQsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAg ICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIEZPUkNFX05VTEwgeyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLl0gKSB8ICogfQogICAgIE9OX0VSUk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5lcnJvcl9hY3Rpb248L3JlcGxhY2VhYmxlPgorICAgIFRBQkxFICc8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXJyb3Jfc2F2aW5nX3RhYmxlPC9yZXBsYWNlYWJsZT4nCiAgICAg UkVKRUNUX0xJTUlUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXhlcnJvcjwvcmVw bGFjZWFibGU+CiAgICAgRU5DT0RJTkcgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l bmNvZGluZ19uYW1lPC9yZXBsYWNlYWJsZT4nCiAgICAgTE9HX1ZFUkJPU0lUWSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dmVyYm9zaXR5PC9yZXBsYWNlYWJsZT4KQEAgLTM5NSwxMSAr Mzk2LDEzIEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIGlucHV0IHZhbHVlIGludG8g aXRzIGRhdGEgdHlwZS4KICAgICAgIEFuIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l cnJvcl9hY3Rpb248L3JlcGxhY2VhYmxlPiB2YWx1ZSBvZgogICAgICAgPGxpdGVyYWw+c3RvcDwv bGl0ZXJhbD4gbWVhbnMgZmFpbCB0aGUgY29tbWFuZCwgd2hpbGUKLSAgICAgIDxsaXRlcmFsPmln bm9yZTwvbGl0ZXJhbD4gbWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFuZCBjb250aW51ZSB3 aXRoIHRoZSBuZXh0IG9uZS4KKyAgICAgIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gbWVhbnMg ZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZSwKKyAg ICAgIDxsaXRlcmFsPnRhYmxlPC9saXRlcmFsPiBtZWFucyA8Y29tbWFuZD5DT1BZPC9jb21tYW5k PiBpbnNlcnQgZXJyb3IgcmVsYXRlZCBpbmZvcm1hdGlvbiB0byA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXJyb3Jfc2F2aW5nX3RhYmxlPC9yZXBsYWNlYWJsZT4KKyAgICAgIGFuZCBj b250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZS4KICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFs PnN0b3A8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgVGhlIDxs aXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gb3B0aW9uIGlzIGFwcGxpY2FibGUgb25seSBmb3IgPGNv bW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPgorICAgICAgVGhlIDxsaXRlcmFsPmlnbm9yZTwvbGl0 ZXJhbD4gYW5kIDxsaXRlcmFsPnRhYmxlPC9saXRlcmFsPiBvcHRpb24gaXMgYXBwbGljYWJsZSBv bmx5IGZvciA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+CiAgICAgICB3aGVuIHRoZSA8bGl0 ZXJhbD5GT1JNQVQ8L2xpdGVyYWw+IGlzIDxsaXRlcmFsPnRleHQ8L2xpdGVyYWw+IG9yIDxsaXRl cmFsPmNzdjwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CkBAIC00NjMsNiAr NDY2LDExNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlRB QkxFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAg ICAgU2F2ZSBlcnJvciBjb250ZXh0IGRldGFpbHMgdG8gdGhlIHRhYmxlIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5lcnJvcl9zYXZpbmdfdGFibGU8L3JlcGxhY2VhYmxlPgorICAgICAg ICB3aGVuIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiBpcyBzZXQgdG8gPGxpdGVyYWw+VEFC TEU8L2xpdGVyYWw+LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhl IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9zYXZpbmdfdGFibGU8L3JlcGxh Y2VhYmxlPiBtdXN0IGV4aXN0IGluIHRoZSBjdXJyZW50IGRhdGFiYXNlCisgICAgICAgIGFuZCBz aGFyZSB0aGUgc2FtZSBzY2hlbWEgYXMgdGhlIGRlc3RpbmF0aW9uIHRhYmxlIG9mIHRoZSA8Y29t bWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IG9wZXJhdGlvbi4KKyAgICAgICAgVGhpcyBvcHRpb24g aXMgYWxsb3dlZCBvbmx5IGluIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gYW5kCisgICAg ICAgIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgd2l0aCA8bGl0ZXJh bD5UQUJMRTwvbGl0ZXJhbD4uCisKKyAgICAgICAgVGhlIHVzZXIgcGVyZm9ybWluZyB0aGUgPGNv bW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPgorICAgICAgICBvcGVyYXRpb24gbXVzdCBoYXZlIDxs aXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4gcHJpdmlsZWdlcyBmb3IgYWxsIGNvbHVtbnMKKyAgICAg ICAgaW4gdGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9zYXZpbmdfdGFi bGU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmll ZCwgdGhlIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiBwYXJhbWV0ZXIgY2Fubm90IGJlIHNl dCB0byA8bGl0ZXJhbD5UQUJMRTwvbGl0ZXJhbD4uCisgICAgICA8L3BhcmE+CisKKyAgIDxwYXJh PgorICAgIElmIHRhYmxlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9zYXZp bmdfdGFibGU8L3JlcGxhY2VhYmxlPiBkb2VzIG1lZXQgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9u CisgICAgKGNvbHVtbiBvcmRpbmFsIHBvc2l0aW9uIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUg YmVsb3cgdGFibGUpLCBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZC4KKworPGluZm9ybWFsdGFibGU+ CisgICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICAgPHRoZWFkPgorICAgICAgPHJvdz4KKyAgICAg ICA8ZW50cnk+Q29sdW1uIG5hbWU8L2VudHJ5PgorICAgICAgIDxlbnRyeT5EYXRhIHR5cGU8L2Vu dHJ5PgorICAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAg ICAgPC90aGVhZD4KKworICAgICAgPHRib2R5PgorICAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5 PiA8bGl0ZXJhbD51c2VyaWQ8L2xpdGVyYWw+IDwvZW50cnk+CisgICAgICAgPGVudHJ5Pjx0eXBl Pm9pZDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgdXNlciBnZW5lcmF0ZWQgdGhl IGVycm9yLgorICAgICAgIFJlZmVyZW5jZSA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF1dGhp ZCI+PHN0cnVjdG5hbWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk Pm9pZDwvc3RydWN0ZmllbGQ+LAorICAgICAgIGhvd2V2ZXIgdGhlcmUgaXMgbm8gaGFyZCBkZXBl bmRlbmN5IHdpdGggY2F0YWxvZyA8bGl0ZXJhbD5wZ19hdXRoaWQ8L2xpdGVyYWw+LgorICAgICAg IElmIHRoZSBjb3JyZXNwb25kaW5nIHJvdyBvbiA8bGl0ZXJhbD5wZ19hdXRoaWQ8L2xpdGVyYWw+ IGlzIGRlbGV0ZWQsIHRoaXMgdmFsdWUgYmVjb21lcyBzdGFsZS4KKyAgICA8L2VudHJ5PgorICAg ICAgIDwvcm93PgorCisgICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+IDxsaXRlcmFsPmNvcHlf dGJsPC9saXRlcmFsPiA8L2VudHJ5PgorICAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9l bnRyeT4KKyAgICAgICA8ZW50cnk+VGhlIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gb3Bl cmF0aW9uIGRlc3RpbmF0aW9uIHRhYmxlIG9pZC4KKyAgICAgICAgUmVmZXJlbmNlIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1l PjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+LAorICAgICAgICBob3dldmVy IHRoZXJlIGlzIG5vIGhhcmQgZGVwZW5kZW5jeSB3aXRoIGNhdGFsb2cgPGxpdGVyYWw+cGdfY2xh c3M8L2xpdGVyYWw+LgorICAgICAgICBJZiB0aGUgY29ycmVzcG9uZGluZyByb3cgb24gPGxpdGVy YWw+cGdfY2xhc3M8L2xpdGVyYWw+IGlzIGRlbGV0ZWQsIHRoaXMgdmFsdWUgYmVjb21lcyBzdGFs ZS4KKyAgICAgICAgPC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKworICAgICAgIDxyb3c+CisgICAg ICAgPGVudHJ5PiA8bGl0ZXJhbD5maWxlbmFtZTwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8 ZW50cnk+PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgcGF0aCBu YW1lIG9mIHRoZSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGlucHV0PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKworICAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PiA8bGl0ZXJhbD5saW5l bm88L2xpdGVyYWw+IDwvZW50cnk+CisgICAgICAgPGVudHJ5Pjx0eXBlPmJpZ2ludDwvdHlwZT48 L2VudHJ5PgorICAgICAgIDxlbnRyeT5MaW5lIG51bWJlciB3aGVyZSB0aGUgZXJyb3Igb2NjdXJy ZWQsIGNvdW50aW5nIGZyb20gMTwvZW50cnk+CisgICAgICAgPC9yb3c+CisKKyAgICAgICA8cm93 PgorICAgICAgIDxlbnRyeT4gPGxpdGVyYWw+bGluZTwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAg ICA8ZW50cnk+PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5SYXcgY29u dGVudCBvZiB0aGUgZXJyb3Igb2NjdXJyZWQgbGluZTwvZW50cnk+CisgICAgICAgPC9yb3c+CisK KyAgICAgICA8cm93PgorICAgICAgIDxlbnRyeT4gPGxpdGVyYWw+Y29sbmFtZTwvbGl0ZXJhbD4g PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAg IDxlbnRyeT5GaWVsZCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQ8L2VudHJ5PgorICAgICAgIDwv cm93PgorCisgICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+IDxsaXRlcmFsPnJhd19maWVsZF92 YWx1ZTwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+dGV4dDwvdHlwZT48 L2VudHJ5PgorICAgICAgIDxlbnRyeT5SYXcgY29udGVudCBvZiB0aGUgZXJyb3Igb2NjdXJyZWQg ZmllbGQ8L2VudHJ5PgorICAgICAgIDwvcm93PgorCisgICAgICAgPHJvdz4KKyAgICAgICA8ZW50 cnk+IDxsaXRlcmFsPmVycl9tZXNzYWdlIDwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgZXJyb3IgbWVz c2FnZTwvZW50cnk+CisgICAgICAgPC9yb3c+CisKKyAgICAgICA8cm93PgorICAgICAgIDxlbnRy eT4gPGxpdGVyYWw+ZXJyX2RldGFpbDwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+ PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5EZXRhaWxlZCBlcnJvciBt ZXNzYWdlIDwvZW50cnk+CisgICAgICAgPC9yb3c+CisKKyAgICAgICA8cm93PgorICAgICAgIDxl bnRyeT4gPGxpdGVyYWw+ZXJyb3Jjb2RlIDwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgZXJyb3IgY29k ZSA8L2VudHJ5PgorICAgICAgIDwvcm93PgorCisgICAgICA8L3Rib2R5PgorICAgICA8L3Rncm91 cD4KKyAgIDwvaW5mb3JtYWx0YWJsZT4KKworICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRl cmFsPldIRVJFPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMK aW5kZXggMmQ5OGVjZjNmNC4uYTYzOTg5MjIzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDEwLDYg KzQxMCw4IEBAIGRlZkdldENvcHlPbkVycm9yQ2hvaWNlKERlZkVsZW0gKmRlZiwgUGFyc2VTdGF0 ZSAqcHN0YXRlLCBib29sIGlzX2Zyb20pCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImlnbm9y ZSIpID09IDApCiAJCXJldHVybiBDT1BZX09OX0VSUk9SX0lHTk9SRTsKIAorCWlmIChwZ19zdHJj YXNlY21wKHN2YWwsICJ0YWJsZSIpID09IDApCisJCXJldHVybiBDT1BZX09OX0VSUk9SX1RBQkxF OwogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKIAkvKi0gdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZ IG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtNTAyLDYgKzUwNCw3IEBAIFByb2Nlc3NDb3B5 T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJYm9vbAkJZnJlZXplX3NwZWNpZmllZCA9IGZh bHNlOwogCWJvb2wJCWhlYWRlcl9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlvbl9lcnJvcl9z cGVjaWZpZWQgPSBmYWxzZTsKKwlib29sCQlvbl9lcnJvcl90Ymxfc3BlY2lmaWVkID0gZmFsc2U7 CiAJYm9vbAkJbG9nX3ZlcmJvc2l0eV9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlyZWplY3Rf bGltaXRfc3BlY2lmaWVkID0gZmFsc2U7CiAJTGlzdENlbGwgICAqb3B0aW9uOwpAQCAtNjc3LDYg KzY4MCwxNCBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJcmVq ZWN0X2xpbWl0X3NwZWNpZmllZCA9IHRydWU7CiAJCQlvcHRzX291dC0+cmVqZWN0X2xpbWl0ID0g ZGVmR2V0Q29weVJlamVjdExpbWl0T3B0aW9uKGRlZmVsKTsKIAkJfQorCQllbHNlIGlmIChzdHJj bXAoZGVmZWwtPmRlZm5hbWUsICJ0YWJsZSIpID09IDApCisJCXsKKwkJCWlmIChvbl9lcnJvcl90 Ymxfc3BlY2lmaWVkKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUp OworCQkJb25fZXJyb3JfdGJsX3NwZWNpZmllZCA9IHRydWU7CisKKwkJCW9wdHNfb3V0LT5vbl9l cnJvcl90YmwgPSBkZWZHZXRTdHJpbmcoZGVmZWwpOworCQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTY4NSw2ICs2 OTYsMjYgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKIAl9CiAKKwlpZiAo b3B0c19vdXQtPm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfVEFCTEUgJiYgb3B0c19vdXQtPm9u X2Vycm9yX3RibCA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCSBlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coIkNPUFkgJXMgXCJ0YWJs ZVwiIHJlcXVpcmVzIGEgY3VzdG9tIHNwZWNpZmllZCBlcnJvciBzYXZpbmcgdGFibGUiLCAiT05f RVJST1IiKSwKKwkJCQkgZXJyaGludCgiWW91IG5lZWQgYWxzbyBzcGVjaWZ5IFwiVEFCTEVcIiBv cHRpb24uIikpOworCisJaWYgKG9wdHNfb3V0LT5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX1RB QkxFICYmIG9wdHNfb3V0LT5yZWplY3RfbGltaXQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJIGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiY2Fu bm90IHNwZWNpZnkgJXMgb3B0aW9uIHdoZW4gJXMgb3B0aW9uIGlzIHNwZWNpZmllZCBhcyBcInRh YmxlXCIiLCAiUkVKRUNUX0xJTUlUIiwgIk9OX0VSUk9SIikpOworCisJaWYgKG9wdHNfb3V0LT5v bl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX1RBQkxFICYmIG9wdHNfb3V0LT5sb2dfdmVyYm9zaXR5 ID09IENPUFlfTE9HX1ZFUkJPU0lUWV9WRVJCT1NFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCSBl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNh bm5vdCBzcGVjaWZ5ICVzIGFzIFwidmVyYm9zZVwiIHdoZW4gJXMgb3B0aW9uIGlzIHNwZWNpZmll ZCBhcyBcInRhYmxlXCIiLCAibG9nX3ZlcmJvc2l0eSIsICJPTl9FUlJPUiIpKTsKKworCWlmIChv cHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9UQUJMRSAmJiBvcHRzX291dC0+b25f ZXJyb3JfdGJsICE9IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJIGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiQ09QWSBcIlRBQkxFXCIg b3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiAlcyBvcHRpb24gaXMgc3BlY2lmaWVkIGFzIFwi dGFibGVcIiIsICJPTl9FUlJPUiIpKTsKIAkvKgogCSAqIENoZWNrIGZvciBpbmNvbXBhdGlibGUg b3B0aW9ucyAobXVzdCBkbyB0aGVzZSB0aHJlZSBiZWZvcmUgaW5zZXJ0aW5nCiAJICogZGVmYXVs dHMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCA0ZDUyYzkzYzMwLi40MjM5NDQ4NjBjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJhY2Nl c3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJj b21tYW5kcy9jb3B5LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgpAQCAtMzUsNiArMzYsNyBAQAogI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRv ci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oIgorI2luY2x1ZGUgImV4 ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAi Zm9yZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtNDQsNyArNDYs MTAgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5o IgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wb3J0YWwu aCIKQEAgLTEwMjksNiArMTAzNCwxNiBAQCBDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkK IAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZ X09OX0VSUk9SX1RBQkxFICYmCisJCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQp CisJCXsKKwkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCQkJ Y3N0YXRlLT5lc2NvbnRleHQtPmRldGFpbHNfd2FudGVkID0gdHJ1ZTsKKwkJCW1lbXNldChjc3Rh dGUtPmVzY29udGV4dC0+ZXJyb3JfZGF0YSwgMCwgc2l6ZW9mKEVycm9yRGF0YSkpOworCQkJLyog UmVwZWF0IE5leHRDb3B5RnJvbSgpIHVudGlsIG5vIHNvZnQgZXJyb3Igb2NjdXJzICovCisJCQlj b250aW51ZTsKKwkJfQorCiAJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShteXNsb3QpOwogCiAJCS8q CkBAIC0xMzI0LDExICsxMzM5LDI5IEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQog CWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QICYmCiAJCWNz dGF0ZS0+bnVtX2Vycm9ycyA+IDAgJiYKIAkJY3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkgPj0g Q09QWV9MT0dfVkVSQk9TSVRZX0RFRkFVTFQpCi0JCWVyZXBvcnQoTk9USUNFLAotCQkJCWVycm1z Z19wbHVyYWwoIiVsbHUgcm93IHdhcyBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRp YmlsaXR5IiwKLQkJCQkJCQkgICIlbGx1IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5 cGUgaW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0 ZS0+bnVtX2Vycm9ycywKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+bnVt X2Vycm9ycykpOworCXsKKwkJaWYoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJS T1JfSUdOT1JFKQorCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCWVycm1zZ19wbHVyYWwoIiVsbHUg cm93IHdhcyBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJ CQkJICAiJWxsdSByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJp bGl0eSIsCisJCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3N0YXRlLT5udW1fZXJyb3Jz LAorCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+bnVtX2Vycm9ycykpOwor CQllbHNlCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNnX3BsdXJhbCgiJWxsdSByb3cg d2FzIHNhdmVkIHRvIHRhYmxlIFwiJXNcIiBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0 eSIsCisJCQkJCQkJCSAgIiVsbHUgcm93cyB3ZXJlIHNhdmVkIHRvIHRhYmxlIFwiJXNcIiBkdWUg dG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCisJCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcg bG9uZykgY3N0YXRlLT5udW1fZXJyb3JzLAorCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcp IGNzdGF0ZS0+bnVtX2Vycm9ycywKKwkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShj c3RhdGUtPmVycm9yX3NhdmluZ19yZWwpKSk7CisJfQorCisJLyoKKwkgKiBzaW1pbGFyIHRvCisJ ICogKGh0dHBzOi8vcG9zdGdyLmVzL20vN2JjZmMzOWQ0MTc2ZmFmODVhYjMxN2QwYzI2Nzg2OTUz NjQ2YTQxMS5jYW1lbEBjeWJlcnRlYy5hdCkKKwkgKiBpbiBDT1BZIEZST00ga2VlcCBlcnJvciBz YXZpbmcgdGFibGUgbG9ja3MgdW50aWwgdGhlIHRyYW5zYWN0aW9uIGVuZC4KKwkqLworCWlmIChj c3RhdGUtPmVycm9yX3NhdmluZ19yZWwgIT0gTlVMTCkKKwkJdGFibGVfY2xvc2UoY3N0YXRlLT5l cnJvcl9zYXZpbmdfcmVsLCBOb0xvY2spOwogCiAJaWYgKGJpc3RhdGUgIT0gTlVMTCkKIAkJRnJl ZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKQEAgLTE0ODMsNiArMTUxNiwxNTYgQEAgQmVnaW5D b3B5RnJvbShQYXJzZVN0YXRlICpwc3RhdGUsCiAJZWxzZQogCQljc3RhdGUtPmVzY29udGV4dCA9 IE5VTEw7CiAKKwlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfVEFC TEUpCisJeworCQljb25zdCBjaGFyICpjb3B5X25zcG5hbWU7CisJCURhdHVtCQlpbnNfcHJldjsK KwkJT2lkCQkJZXJyX3RibF9vaWQ7CisJCU9pZAkJCWNvcHlfbnNwb2lkOworCQlSZWxhdGlvbglh cmVsOworCQlTY2FuS2V5RGF0YSBha2V5OworCQlTeXNTY2FuRGVzYyBhc2NhbjsKKwkJSGVhcFR1 cGxlCWF0dXA7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dEZvcm07CisJCWludAkJCWF0dGNudCA9 IDE7CisKKwkJQXNzZXJ0KGNzdGF0ZS0+ZXNjb250ZXh0ICE9IE5VTEwpOworCQlBc3NlcnQoY3N0 YXRlLT5vcHRzLm9uX2Vycm9yX3RibCAhPSBOVUxMKTsKKworCQljb3B5X25zcG5hbWUgPSBnZXRf bmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UoY3N0YXRlLT5yZWwpKTsKKwkJY29w eV9uc3BvaWQgPSBnZXRfbmFtZXNwYWNlX29pZChjb3B5X25zcG5hbWUsIGZhbHNlKTsKKwkJZXJy X3RibF9vaWQgPSBnZXRfcmVsbmFtZV9yZWxpZChjc3RhdGUtPm9wdHMub25fZXJyb3JfdGJsLCBj b3B5X25zcG9pZCk7CisKKwkJaWYgKCFPaWRJc1ZhbGlkKGVycl90Ymxfb2lkKSkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCSBlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCQkgZXJybXNnKCJlcnJvciBzYXZpbmcgdGFibGUgXCIlc1wiLlwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCisJCQkJCQkJIGNvcHlfbnNwbmFtZSwgY3N0YXRlLT5vcHRzLm9uX2Vycm9yX3Ri bCkpOworCisJCS8qIGVycm9yIHNhdmluZyB0YWJsZSBtdXN0IGJlIGEgbm9ybWFsIHJlYWx0aW9u IGtpbmQgKi8KKwkJaWYgKGdldF9yZWxfcmVsa2luZChlcnJfdGJsX29pZCkgIT0gUkVMS0lORF9S RUxBVElPTikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCisJCQkJCWVycm1zZygiQ09QWSAlcyBjYW5ub3QgdXNlIHJlbGF0aW9uIFwi JXNcIiBmb3IgZXJyb3Igc2F2aW5nIiwKKwkJCQkJCQkiT05fRVJST1IiLCBjc3RhdGUtPm9wdHMu b25fZXJyb3JfdGJsKSwKKwkJCQkJZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChnZXRf cmVsX3JlbGtpbmQoZXJyX3RibF9vaWQpKSk7CisKKwkJLyogY3VycmVudCB1c2VyIHNob3VsZCBo YXZlIElOU0VSVCBwcml2aWxlZ2Ugb24gZXJyb3Jfc2F2aW5nIHRhYmxlICovCisJCWluc19wcmV2 ID0gRGlyZWN0RnVuY3Rpb25DYWxsMyhoYXNfdGFibGVfcHJpdmlsZWdlX2lkX2lkLAorCQkJCQkJ CQkJCU9iamVjdElkR2V0RGF0dW0oR2V0VXNlcklkKCkpLAorCQkJCQkJCQkJCU9iamVjdElkR2V0 RGF0dW0oZXJyX3RibF9vaWQpLAorCQkJCQkJCQkJCUNTdHJpbmdHZXRUZXh0RGF0dW0oIklOU0VS VCIpKTsKKwkJaWYgKCFEYXR1bUdldEJvb2woaW5zX3ByZXYpKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJCWVy cm1zZygicGVybWlzc2lvbiBkZW5pZWQgdG8gc2V0IHRhYmxlIFwiJXNcIi5cIiVzXCIgZm9yIENP UFkgRlJPTSBlcnJvciBzYXZpbmciLAorCQkJCQkJCQljb3B5X25zcG5hbWUsIGNzdGF0ZS0+b3B0 cy5vbl9lcnJvcl90YmwpLAorCQkJCQkJZXJyaGludCgiRW5zdXJlIGN1cnJlbnQgdXNlciBoYXZl IGVub3VnaCBwcml2aWxlZ2Ugb24gXCIlc1wiLlwiJXNcIiBmb3IgQ09QWSBGUk9NIGVycm9yIHNh dmluZyIsCisJCQkJCQkJCWNvcHlfbnNwbmFtZSwgY3N0YXRlLT5vcHRzLm9uX2Vycm9yX3RibCkp OworCisJCS8qCisJCSAqIHdlIG1heSBpbnNlcnQgdHVwbGVzIHRvIGVycm9yLXNhdmluZyB0YWJs ZSwgdG8gZG8gdGhhdCB3ZSBuZWVkIGZpcnN0CisJCSAqIGNoZWNrIGl0J3MgbG9jayBzaXR1YXRp b24uIElmIGl0IGlzIGFscmVhZHkgdW5kZXIgaGVhdnkgbG9jaywgdGhlbgorCQkgKiBvdXIgQ09Q WSBvcGVyYXRpb24gd291bGQgc3R1Y2suIEluc3RlYWQgb2YgbGV0IENPUFkgc3R1Y2ssIGp1c3QK KwkJICogcmVwb3J0IEVSUk9SIHRoYXQgdGhlIGVycm9yLXNhdmluZyB0YWJsZSBpcyB1bmRlciBo ZWF2eSBsb2NrLgorCQkqLworCQlpZiAoIUNvbmRpdGlvbmFsTG9ja1JlbGF0aW9uT2lkKGVycl90 Ymxfb2lkLCBSb3dFeGNsdXNpdmVMb2NrKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygidGFibGUg XCIlc1wiLlwiJXNcIiB3YXMgbG9ja2VkLCBjYW5ub3QgYmUgdXNlZCBmb3IgZXJyb3Igc2F2aW5n IiwKKwkJCQkJCQljb3B5X25zcG5hbWUsIGNzdGF0ZS0+b3B0cy5vbl9lcnJvcl90YmwpKTsKKwkJ Y3N0YXRlLT5lcnJvcl9zYXZpbmdfcmVsID0gdGFibGVfb3BlbihlcnJfdGJsX29pZCwgTm9Mb2Nr KTsKKworCQkvKgorCQkgKiBjYW4gdGhpcyBlcnJvciBzYXZpbmcgdGFibGUgKGNzdGF0ZS0+ZXJy b3Jfc2F2aW5nX3JlbCkgYmUgdXNlZCBmb3IKKwkJICogZXJyb3Igc2F2aW5nPyBmb3IgdGhhdCB3 ZSBuZWVkIHRvIGNoZWNrIHRoZSB0YWJsZSdzIChjb2x1bW4KKwkJICogbmFtZSwgY29sdW1uIGRh dGEgdHlwZXMsIG51bWJlciBvZiBjb2x1bW4pCisJCSAqCisJCSovCisJCWFyZWwgPSB0YWJsZV9v cGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCVNjYW5LZXlJbml0 KCZha2V5LAorCQkJCQlBbnVtX3BnX2F0dHJpYnV0ZV9hdHRyZWxpZCwKKwkJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQlPYmplY3RJZEdldERhdHVtKGVycl90Ymxfb2lk KSk7CisKKwkJYXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oYXJlbCwgQXR0cmlidXRlUmVsaWRO dW1JbmRleElkLCB0cnVlLAorCQkJCQkJCQlTbmFwc2hvdFNlbGYsIDEsICZha2V5KTsKKwkJd2hp bGUgKEhlYXBUdXBsZUlzVmFsaWQoYXR1cCA9IHN5c3RhYmxlX2dldG5leHQoYXNjYW4pKSkKKwkJ eworCQkJYXR0Rm9ybSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dXApOworCQkJ aWYgKGF0dEZvcm0tPmF0dG51bSA8IDEgfHwgYXR0Rm9ybS0+YXR0aXNkcm9wcGVkKQorCQkJCWNv bnRpbnVlOworCisJCQlzd2l0Y2ggKGF0dEZvcm0tPmF0dG51bSkKKwkJCXsKKwkJCQljYXNlIDE6 CisJCQkJCWlmKGF0dEZvcm0tPmF0dHR5cGlkID09IE9JRE9JRCAmJgorCQkJCQlzdHJjbXAoTmFt ZVN0cihhdHRGb3JtLT5hdHRuYW1lKSwgInVzZXJpZCIpID09IDApCisJCQkJCQlhdHRjbnQrKzsK KwkJCQkJYnJlYWs7CisJCQkJY2FzZSAyOgorCQkJCQlpZiAoYXR0Rm9ybS0+YXR0dHlwaWQgPT0g T0lET0lEICYmCisJCQkJCQlzdHJjbXAoTmFtZVN0cihhdHRGb3JtLT5hdHRuYW1lKSwgImNvcHlf dGJsIikgPT0gMCkKKwkJCQkJCWF0dGNudCsrOworCQkJCQlicmVhazsKKwkJCQljYXNlIDM6CisJ CQkJCWlmIChhdHRGb3JtLT5hdHR0eXBpZCA9PSBURVhUT0lEICYmCisJCQkJCQlzdHJjbXAoTmFt ZVN0cihhdHRGb3JtLT5hdHRuYW1lKSwgImZpbGVuYW1lIikgPT0gMCkKKwkJCQkJCWF0dGNudCsr OworCQkJCQlicmVhazsKKwkJCQljYXNlIDQ6CisJCQkJCWlmIChhdHRGb3JtLT5hdHR0eXBpZCAh PSBJTlQ4T0lEICYmCisJCQkJCQlzdHJjbXAoTmFtZVN0cihhdHRGb3JtLT5hdHRuYW1lKSwgImxp bmVubyIpID09IDApCisJCQkJCQlhdHRjbnQrKzsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSA1Ogor CQkJCQlpZiAoYXR0Rm9ybS0+YXR0dHlwaWQgPT0gVEVYVE9JRCAmJgorCQkJCQkJc3RyY21wKE5h bWVTdHIoYXR0Rm9ybS0+YXR0bmFtZSksICJsaW5lIikgPT0gMCkKKwkJCQkJCWF0dGNudCsrOwor CQkJCQlicmVhazsKKwkJCQljYXNlIDY6CisJCQkJCWlmIChhdHRGb3JtLT5hdHR0eXBpZCA9PSBU RVhUT0lEICYmCisJCQkJCQlzdHJjbXAoTmFtZVN0cihhdHRGb3JtLT5hdHRuYW1lKSwgImNvbG5h bWUiKSA9PSAwKQorCQkJCQkJYXR0Y250Kys7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgNzoKKwkJ CQkJaWYgKGF0dEZvcm0tPmF0dHR5cGlkID09IFRFWFRPSUQgJiYKKwkJCQkJCXN0cmNtcChOYW1l U3RyKGF0dEZvcm0tPmF0dG5hbWUpLCAicmF3X2ZpZWxkX3ZhbHVlIikgPT0gMCkKKwkJCQkJCWF0 dGNudCsrOworCQkJCQlicmVhazsKKwkJCQljYXNlIDg6CisJCQkJCWlmIChhdHRGb3JtLT5hdHR0 eXBpZCA9PSBURVhUT0lEICYmCisJCQkJCQlzdHJjbXAoTmFtZVN0cihhdHRGb3JtLT5hdHRuYW1l KSwgImVycl9tZXNzYWdlIikgPT0gMCkKKwkJCQkJCWF0dGNudCsrOworCQkJCQlicmVhazsKKwkJ CQljYXNlIDk6CisJCQkJCWlmIChhdHRGb3JtLT5hdHR0eXBpZCA9PSBURVhUT0lEICYmCisJCQkJ CQlzdHJjbXAoTmFtZVN0cihhdHRGb3JtLT5hdHRuYW1lKSwgImVycl9kZXRhaWwiKSA9PSAwKQor CQkJCQkJYXR0Y250Kys7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgMTA6CisJCQkJCWlmIChhdHRG b3JtLT5hdHR0eXBpZCA9PSBURVhUT0lEICYmCisJCQkJCQlzdHJjbXAoTmFtZVN0cihhdHRGb3Jt LT5hdHRuYW1lKSwgImVycm9yY29kZSIpID09IDApCisJCQkJCQlhdHRjbnQrKzsKKwkJCQkJYnJl YWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJYXR0Y250Kys7CisJCQkJCWJyZWFrOworCQkJfQorCQl9 CisJCXN5c3RhYmxlX2VuZHNjYW4oYXNjYW4pOworCQl0YWJsZV9jbG9zZShhcmVsLCBBY2Nlc3NT aGFyZUxvY2spOworCisJCWlmIChhdHRjbnQgIT0gRVJST1JfVEJMX0NPTFVNTlMpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCQllcnJtc2coInRhYmxlIFwiJXNcIi5cIiVzXCIgY2Fubm90IGJlIHVzZWQgZm9yIENP UFkgRlJPTSBlcnJvciBzYXZpbmciLAorCQkJCQkJCWNvcHlfbnNwbmFtZSwgY3N0YXRlLT5vcHRz Lm9uX2Vycm9yX3RibCksCisJCQkJCWVycmRldGFpbCgiVGFibGUgXCIlc1wiLlwiJXNcIiBkYXRh IGRlZmluaXRpb24gY2Fubm90IGJlIHVzZWQgZm9yIGVycm9yIHNhdmluZyIsCisJCQkJCQkJY29w eV9uc3BuYW1lLCBjc3RhdGUtPm9wdHMub25fZXJyb3JfdGJsKSk7CisKKwkJY3N0YXRlLT5lc2Nv bnRleHQtPmRldGFpbHNfd2FudGVkID0gdHJ1ZTsKKwl9CiAJLyogQ29udmVydCBGT1JDRV9OVUxM IG5hbWUgbGlzdCB0byBwZXItY29sdW1uIGZsYWdzLCBjaGVjayB2YWxpZGl0eSAqLwogCWNzdGF0 ZS0+b3B0cy5mb3JjZV9udWxsX2ZsYWdzID0gKGJvb2wgKikgcGFsbG9jMChudW1fcGh5c19hdHRy cyAqIHNpemVvZihib29sKSk7CiAJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9udWxsX2FsbCkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBkMWQ0M2I1M2Q4Li5lMTYwNmRiOTRj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC02Niw2ICs2Niw3IEBACiAj aW5jbHVkZSAiY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaCIKICNpbmNsdWRlICJjb21tYW5k cy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAi YWNjZXNzL2hlYXBhbS5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGli cHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtOTU5LDcgKzk2MCw0 OSBAQCBOZXh0Q29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29u dGV4dCwKIAkJCQkJCQkJCQkJJnZhbHVlc1ttXSkpCiAJCQl7CiAJCQkJQXNzZXJ0KGNzdGF0ZS0+ b3B0cy5vbl9lcnJvciAhPSBDT1BZX09OX0VSUk9SX1NUT1ApOworCQkJCUFzc2VydChjc3RhdGUt PmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQpOwogCisJCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9l cnJvciA9PSBDT1BZX09OX0VSUk9SX1RBQkxFKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogd2Ug bW9zdGx5IHVzZSBFcnJvclNhdmVDb250ZXh0J3MgaW5mbyB0byBmb3JtIGEgdHVwbGUgYW5kCisJ CQkJCSAqIGluc2VydCBpdCB0byB0aGUgZXJyb3Igc2F2aW5nIHRhYmxlLiB3ZSBhbHJlYWR5IGFj cXVpcmVkCisJCQkJCSAqIGxvY2sgb24gZXJyb3Jfc2F2aW5nX3JlbCBpbiBCZWdpbkNvcHlGcm9t LgorCQkJCQkqLworCQkJCQlIZWFwVHVwbGUJb25fZXJyb3JfdHVwOworCQkJCQlUdXBsZURlc2MJ b25fZXJyb3JfdHVwRGVzYzsKKwkJCQkJY2hhcgkJKmVycl9kZXRhaWw7CisJCQkJCWNoYXIJCSpl cnJfY29kZTsKKwkJCQkJRGF0dW0JdF92YWx1ZXNbRVJST1JfVEJMX0NPTFVNTlNdID0gezB9Owor CQkJCQlib29sCXRfaXNudWxsW0VSUk9SX1RCTF9DT0xVTU5TXSA9IHswfTsKKwkJCQkJaW50CQlq ID0gMDsKKworCQkJCQlBc3NlcnQoY3N0YXRlLT5yZWwgIT0gTlVMTCk7CisJCQkJCXRfdmFsdWVz W2orK10gPSBPYmplY3RJZEdldERhdHVtKEdldFVzZXJJZCgpKTsKKwkJCQkJdF92YWx1ZXNbaisr XSA9IE9iamVjdElkR2V0RGF0dW0oY3N0YXRlLT5yZWwtPnJkX3JlbC0+b2lkKTsKKwkJCQkJdF92 YWx1ZXNbaisrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY3N0YXRlLT5maWxlbmFtZSA/IGNzdGF0 ZS0+ZmlsZW5hbWUgOiAiU1RESU4iKTsKKwkJCQkJdF92YWx1ZXNbaisrXSA9IEludDY0R2V0RGF0 dW0oKGxvbmcgbG9uZykgY3N0YXRlLT5jdXJfbGluZW5vKTsKKwkJCQkJdF92YWx1ZXNbaisrXSA9 IENTdHJpbmdHZXRUZXh0RGF0dW0oY3N0YXRlLT5saW5lX2J1Zi5kYXRhKTsKKwkJCQkJdF92YWx1 ZXNbaisrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY3N0YXRlLT5jdXJfYXR0bmFtZSk7CisJCQkJ CXRfdmFsdWVzW2orK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHN0cmluZyk7CisJCQkJCXRfdmFs dWVzW2orK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9k YXRhLT5tZXNzYWdlKTsKKworCQkJCQlpZiAoIWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9kYXRh LT5kZXRhaWwpCisJCQkJCQllcnJfZGV0YWlsID0gTlVMTDsKKwkJCQkJZWxzZQorCQkJCQkJZXJy X2RldGFpbCA9IGNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9kYXRhLT5kZXRhaWw7CisJCQkJCXRf dmFsdWVzW2pdICAgPSBlcnJfZGV0YWlsID8gQ1N0cmluZ0dldFRleHREYXR1bShlcnJfZGV0YWls KSA6IChEYXR1bSkgMDsKKwkJCQkJdF9pc251bGxbaisrXSA9IGVycl9kZXRhaWwgPyBmYWxzZSA6 IHRydWU7CisKKwkJCQkJZXJyX2NvZGUgPSB1bnBhY2tfc3FsX3N0YXRlKGNzdGF0ZS0+ZXNjb250 ZXh0LT5lcnJvcl9kYXRhLT5zcWxlcnJjb2RlKTsKKwkJCQkJdF92YWx1ZXNbaisrXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0oZXJyX2NvZGUpOworCisJCQkJCUFzc2VydChqID09IEVSUk9SX1RCTF9D T0xVTU5TKTsKKworCQkJCQlvbl9lcnJvcl90dXBEZXNjID0gIFJlbGF0aW9uR2V0RGVzY3IoY3N0 YXRlLT5lcnJvcl9zYXZpbmdfcmVsKTsKKwkJCQkJb25fZXJyb3JfdHVwID0gaGVhcF9mb3JtX3R1 cGxlKG9uX2Vycm9yX3R1cERlc2MsIHRfdmFsdWVzLCB0X2lzbnVsbCk7CisJCQkJCXNpbXBsZV9o ZWFwX2luc2VydChjc3RhdGUtPmVycm9yX3NhdmluZ19yZWwsIG9uX2Vycm9yX3R1cCk7CisJCQkJ fQogCQkJCWNzdGF0ZS0+bnVtX2Vycm9ycysrOwogCiAJCQkJaWYgKGNzdGF0ZS0+b3B0cy5sb2df dmVyYm9zaXR5ID09IENPUFlfTE9HX1ZFUkJPU0lUWV9WRVJCT1NFKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmlu ZGV4IDQwMDJhN2Y1MzguLjQwYWIzNWU0YTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTM4LDggKzM4 LDE1IEBAIHR5cGVkZWYgZW51bSBDb3B5T25FcnJvckNob2ljZQogewogCUNPUFlfT05fRVJST1Jf U1RPUCA9IDAsCQkvKiBpbW1lZGlhdGVseSB0aHJvdyBlcnJvcnMsIGRlZmF1bHQgKi8KIAlDT1BZ X09OX0VSUk9SX0lHTk9SRSwJCS8qIGlnbm9yZSBlcnJvcnMgKi8KKwlDT1BZX09OX0VSUk9SX1RB QkxFLAkJLyogc2F2aW5nIGVycm9ycyBpbmZvIHRvIHRhYmxlICovCiB9IENvcHlPbkVycm9yQ2hv aWNlOwogCisvKgorICogdXNlZCBmb3IgKENPUFkgb25fZXJyb3IgJ3RhYmxlJyk7IHRoZSBlcnJv ciBzYXZpbmcgdGFibGUgc2F2aW5nIGVycm9yIGluZm8KKyAqIG9ubHkgYWxsb3cgaGF2ZSAxMCBj b2x1bW5zLgorKi8KKyNkZWZpbmUgRVJST1JfVEJMX0NPTFVNTlMgICAxMAorCiAvKgogICogUmVw cmVzZW50cyB2ZXJib3NpdHkgb2YgbG9nZ2VkIG1lc3NhZ2VzIGJ5IENPUFkgY29tbWFuZC4KICAq LwpAQCAtODYsNiArOTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0T3B0aW9ucwogCUNv cHlPbkVycm9yQ2hvaWNlIG9uX2Vycm9yOyAvKiB3aGF0IHRvIGRvIHdoZW4gZXJyb3IgaGFwcGVu ZWQgKi8KIAlDb3B5TG9nVmVyYm9zaXR5Q2hvaWNlIGxvZ192ZXJib3NpdHk7CS8qIHZlcmJvc2l0 eSBvZiBsb2dnZWQgbWVzc2FnZXMgKi8KIAlpbnQ2NAkJcmVqZWN0X2xpbWl0OwkvKiBtYXhpbXVt IHRvbGVyYWJsZSBudW1iZXIgb2YgZXJyb3JzICovCisJY2hhcgkJKm9uX2Vycm9yX3RibDsgLyog b24gZXJyb3IsIHNhdmUgZXJyb3IgaW5mbyB0byB0aGUgdGFibGUsIHRhYmxlIG5hbWUgKi8KIAlM aXN0CSAgICpjb252ZXJ0X3NlbGVjdDsgLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKGNhbiBiZSBO SUwpICovCiB9IENvcHlGb3JtYXRPcHRpb25zOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZy b21faW50ZXJuYWwuaAppbmRleCBjYWQ1MmZjYzc4Li43NzlmODZkMWNlIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmgKQEAgLTcwLDYgKzcwLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgQ29weUZyb21TdGF0ZURhdGEKIAogCS8qIHBhcmFtZXRlcnMgZnJvbSB0aGUgQ09QWSBj b21tYW5kICovCiAJUmVsYXRpb24JcmVsOwkJCS8qIHJlbGF0aW9uIHRvIGNvcHkgZnJvbSAqLwor CVJlbGF0aW9uCWVycm9yX3NhdmluZ19yZWw7IC8qIHJlbGF0aW9uIGZvciBjb3B5IGZyb20gZXJy b3Igc2F2aW5nICovCiAJTGlzdAkgICAqYXR0bnVtbGlzdDsJCS8qIGludGVnZXIgbGlzdCBvZiBh dHRudW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBO VUxMIGZvciBTVERJTiAqLwogCWJvb2wJCWlzX3Byb2dyYW07CQkvKiBpcyAnZmlsZW5hbWUnIGEg cHJvZ3JhbSB0byBwb3Blbj8gKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29weTIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKaW5kZXgg NjRlYTMzYWVhZS4uMWI0NzdhZDc1MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jb3B5Mi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQK QEAgLTgxMyw2ICs4MTMsMTA5IEBAIEVSUk9SOiAgc2tpcHBlZCBtb3JlIHRoYW4gUkVKRUNUX0xJ TUlUICgzKSByb3dzIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CiBDT05URVhUOiAg Q09QWSBjaGVja19pZ25fZXJyLCBsaW5lIDUsIGNvbHVtbiBuOiAiIgogQ09QWSBjaGVja19pZ25f ZXJyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgNCk7CiBO T1RJQ0U6ICA0IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmls aXR5CitjcmVhdGUgdGFibGUgZXJyX3RibCgKKyAgdXNlcmlkIG9pZCwgICAtLSB0aGUgdXNlciBv aWQgd2hpbGUgY29weSBnZW5lcmF0ZWQgdGhpcyBlbnRyeQorICBjb3B5X3RibCBvaWQsIC0tY29w eSB0YWJsZQorICBmaWxlbmFtZSB0ZXh0LAorICBsaW5lbm8gIGJpZ2ludCwKKyAgbGluZSAgICB0 ZXh0LAorICBjb2xuYW1lIHRleHQsCisgIHJhd19maWVsZF92YWx1ZSB0ZXh0LAorICBlcnJfbWVz c2FnZSB0ZXh0LAorICBlcnJfZGV0YWlsIHRleHQsCisgIGVycm9yY29kZSB0ZXh0CispOworLS1j YW5ub3QgdXNlIGZvciBlcnJvciBzYXZpbmcuCitjcmVhdGUgdGFibGUgZXJyX3RibF8xKAordXNl cmlkICAgIG9pZCwKK2NvcHlfdGJsICBvaWQsCitmaWxlbmFtZSAgdGV4dCwKK2xpbmVubyAgICBi aWdpbnQsCitsaW5lICAgICAgdGV4dCwKK2NvbG5hbWUgICB0ZXh0LAorcmF3X2ZpZWxkX3ZhbHVl IHRleHQsCitlcnJfbWVzc2FnZSAgICAgdGV4dCwKK2Vycl9kZXRhaWwgICAgICB0ZXh0CispOwor LS1jYW5ub3QgdXNlIGZvciBlcnJvciBzYXZpbmcuCitjcmVhdGUgdGFibGUgZXJyX3RibF8yKAor ICB1c2VyaWQgb2lkLCBjb3B5X3RibCBvaWQsIGZpbGVuYW1lIHRleHQsIGxpbmVubyBiaWdpbnQs bGluZSB0ZXh0LAorICBjb2xuYW1lIHRleHQsIHJhd19maWVsZF92YWx1ZSB0ZXh0LCBlcnJfbWVz c2FnZSB0ZXh0LAorICBlcnJfZGV0YWlsIHRleHQsCisgIGVycm9yY29kZSB0ZXh0LAorICBlcnJv cmNvZGUxIHRleHQKKyk7CitjcmVhdGUgdGFibGUgdF9jb3B5X3RibChhIGludCwgYiBpbnQsIGMg aW50KTsKK2NyZWF0ZSB2aWV3IHMxIGFzIHNlbGVjdCAxIGFzIGE7CistLS0taW52YWxpZCBvcHRp b25zLCB0aGUgYmVsb3cgYWxsIHNob3VsZCAgZmFpbHMKK0NPUFkgdF9jb3B5X3RibCBGUk9NIFNU RElOIFdJVEggKG9uX2Vycm9yICd0YWJsZScpOworRVJST1I6ICBDT1BZIE9OX0VSUk9SICJ0YWJs ZSIgcmVxdWlyZXMgYSBjdXN0b20gc3BlY2lmaWVkIGVycm9yIHNhdmluZyB0YWJsZQorSElOVDog IFlvdSBuZWVkIGFsc28gc3BlY2lmeSAiVEFCTEUiIG9wdGlvbi4KK0NPUFkgdF9jb3B5X3RibCBG Uk9NIFNURElOIFdJVEggKHRhYmxlIGVycl90YmwpOworRVJST1I6ICBDT1BZICJUQUJMRSIgb3B0 aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBPTl9FUlJPUiBvcHRpb24gaXMgc3BlY2lmaWVkIGFz ICJ0YWJsZSIKK0NPUFkgdF9jb3B5X3RibCBUTyBTVERJTiBXSVRIIChvbl9lcnJvciAndGFibGUn KTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KK0xJ TkUgMTogQ09QWSB0X2NvcHlfdGJsIFRPIFNURElOIFdJVEggKG9uX2Vycm9yICd0YWJsZScpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ09QWSB0X2NvcHlfdGJs KGEsYikgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciAndGFibGUnLCByZWplY3RfbGltaXQgMTAs IHRhYmxlIGVycl90YmwpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBSRUpFQ1RfTElNSVQgb3B0 aW9uIHdoZW4gT05fRVJST1Igb3B0aW9uIGlzIHNwZWNpZmllZCBhcyAidGFibGUiCitDT1BZIHRf Y29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yICd0YWJsZScsIGxvZ192ZXJi b3NpdHkgdmVyYm9zZSwgdGFibGUgZXJyX3RibCk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IGxv Z192ZXJib3NpdHkgYXMgInZlcmJvc2UiIHdoZW4gT05fRVJST1Igb3B0aW9uIGlzIHNwZWNpZmll ZCBhcyAidGFibGUiCitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yICd0YWJsZScsIHRhYmxlIG5vdF9leGlzdHMpOworRVJST1I6ICBlcnJvciBzYXZpbmcgdGFi bGUgInB1YmxpYyIuIm5vdF9leGlzdHMiIGRvZXMgbm90IGV4aXN0CitDT1BZIHRfY29weV90Ymwo YSkgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciAndGFibGUnLCB0YWJsZSBzMSk7CitFUlJPUjog IENPUFkgT05fRVJST1IgY2Fubm90IHVzZSByZWxhdGlvbiAiczEiIGZvciBlcnJvciBzYXZpbmcK K0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpZXdzLgorLS1z aG91bGQgZmFpbC4gZXJyX3RibF8xIGRvZXMgbm90IG1lZXQgY3JpdGVyaWEKK0NPUFkgdF9jb3B5 X3RibChhLGIpIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgJ3RhYmxlJywgdGFibGUgZXJyX3Ri bF8xKTsKK0VSUk9SOiAgdGFibGUgInB1YmxpYyIuImVycl90YmxfMSIgY2Fubm90IGJlIHVzZWQg Zm9yIENPUFkgRlJPTSBlcnJvciBzYXZpbmcKK0RFVEFJTDogIFRhYmxlICJwdWJsaWMiLiJlcnJf dGJsXzEiIGRhdGEgZGVmaW5pdGlvbiBjYW5ub3QgYmUgdXNlZCBmb3IgZXJyb3Igc2F2aW5nCist LXNob3VsZCBmYWlsLiBlcnJfdGJsXzIgZG9lcyBub3QgbWVldCBjcml0ZXJpYQorQ09QWSB0X2Nv cHlfdGJsKGEsYikgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciAndGFibGUnLCB0YWJsZSBlcnJf dGJsXzIpOworRVJST1I6ICB0YWJsZSAicHVibGljIi4iZXJyX3RibF8yIiBjYW5ub3QgYmUgdXNl ZCBmb3IgQ09QWSBGUk9NIGVycm9yIHNhdmluZworREVUQUlMOiAgVGFibGUgInB1YmxpYyIuImVy cl90YmxfMiIgZGF0YSBkZWZpbml0aW9uIGNhbm5vdCBiZSB1c2VkIGZvciBlcnJvciBzYXZpbmcK Ky0tLS1pbnZhbGlkIG9wdGlvbnMsIHRoZSBhYm92ZSBhbGwgc2hvdWxkIGZhaWxzCistLXNob3Vs ZCBmYWlsLCBjb3BpZWQgZGF0YSBoYXZlIGV4dHJhIGNvbHVtbnMKK0NPUFkgdF9jb3B5X3RibChh LGIpIEZST00gU1RESU4gV0lUSCAoREVMSU1JVEVSICcsJywgb25fZXJyb3IgJ3RhYmxlJywgdGFi bGUgZXJyX3RibCk7CitFUlJPUjogIGV4dHJhIGRhdGEgYWZ0ZXIgbGFzdCBleHBlY3RlZCBjb2x1 bW4KK0NPTlRFWFQ6ICBDT1BZIHRfY29weV90YmwsIGxpbmUgMTogIjEsMiwzLDQiCistLXNob3Vs ZCBmYWlsLCBjb3BpZWQgZGF0YSBoYXZlIGxlc3MgY29sdW1ucworQ09QWSB0X2NvcHlfdGJsKGEs YikgRlJPTSBTVERJTiBXSVRIIChERUxJTUlURVIgJywnLCBvbl9lcnJvciAndGFibGUnLCB0YWJs ZSBlcnJfdGJsKTsKK0VSUk9SOiAgZXh0cmEgZGF0YSBhZnRlciBsYXN0IGV4cGVjdGVkIGNvbHVt bgorQ09OVEVYVDogIENPUFkgdF9jb3B5X3RibCwgbGluZSAxOiAiMSwyLCIKKy0tb2sgY2FzZXMu CitDT1BZIHRfY29weV90YmwgRlJPTSBTVERJTiBXSVRIIChERUxJTUlURVIgJywnLCBvbl9lcnJv ciAndGFibGUnLCB0YWJsZSBlcnJfdGJsKTsKK05PVElDRTogIDQgcm93cyB3ZXJlIHNhdmVkIHRv IHRhYmxlICJlcnJfdGJsIiBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorLS1zaG91 bGQgZmFpbC4gbGFjayBwcml2aWxlZ2UKK2JlZ2luOworY3JlYXRlIHVzZXIgcmVncmVzc191c2Vy MjA7CitncmFudCBpbnNlcnQodXNlcmlkLGNvcHlfdGJsLGZpbGVuYW1lLGxpbmVubyxsaW5lKSBv biB0YWJsZSBlcnJfdGJsIHRvIHJlZ3Jlc3NfdXNlcjIwOworZ3JhbnQgaW5zZXJ0IG9uIHRhYmxl IHRfY29weV90YmwgdG8gcmVncmVzc191c2VyMjA7CitzZXQgcm9sZSByZWdyZXNzX3VzZXIyMDsK K0NPUFkgdF9jb3B5X3RibCBGUk9NIFNURElOIFdJVEggKGRlbGltaXRlciAnLCcsIG9uX2Vycm9y ICd0YWJsZScsIHRhYmxlIGVycl90YmwpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCB0byBz ZXQgdGFibGUgInB1YmxpYyIuImVycl90YmwiIGZvciBDT1BZIEZST00gZXJyb3Igc2F2aW5nCitI SU5UOiAgRW5zdXJlIGN1cnJlbnQgdXNlciBoYXZlIGVub3VnaCBwcml2aWxlZ2Ugb24gInB1Ymxp YyIuImVycl90YmwiIGZvciBDT1BZIEZST00gZXJyb3Igc2F2aW5nCitST0xMQkFDSzsKK3NlbGVj dAlwZ19jbGFzcy5yZWxuYW1lIGFzIGNvcHlfZGVzdGluYXRpb24KKyAgICAgICAgLGZpbGVuYW1l LGxpbmVubyAsbGluZQorICAgICAgICAsY29sbmFtZSxyYXdfZmllbGRfdmFsdWUsZXJyX21lc3Nh Z2UKKyAgICAgICAgLGVycl9kZXRhaWwsZXJyb3Jjb2RlCitmcm9tIGVycl90Ymwgam9pbiBwZ19j bGFzcyBvbiBjb3B5X3RibCA9IHBnX2NsYXNzLm9pZDsKKyBjb3B5X2Rlc3RpbmF0aW9uIHwgZmls ZW5hbWUgfCBsaW5lbm8gfCAgICAgICAgICAgbGluZSAgICAgICAgICAgfCBjb2xuYW1lIHwgICBy YXdfZmllbGRfdmFsdWUgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIGVycl9tZXNzYWdlICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGVycl9kZXRhaWwgfCBlcnJvcmNvZGUgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIHRfY29weV90YmwgICAgICAgfCBTVERJTiAgICB8ICAgICAgMSB8IDEsMixhICAg ICAgICAgICAgICAgICAgICB8IGMgICAgICAgfCBhICAgICAgICAgICAgICAgICAgIHwgaW52YWxp ZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImEiICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICB8IDIyUDAyCisgdF9jb3B5X3RibCAgICAgICB8IFNURElOICAgIHwgICAgICAz IHwgMSxfanVuayx0ZXN0ICAgICAgICAgICAgIHwgYiAgICAgICB8IF9qdW5rICAgICAgICAgICAg ICAgfCBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiX2p1bmsiICAgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgMjJQMDIKKyB0X2NvcHlfdGJsICAgICAgIHwgU1RESU4g ICAgfCAgICAgIDQgfCBjb2xhLGNvbGIsY29sYyAgICAgICAgICAgfCBhICAgICAgIHwgY29sYSAg ICAgICAgICAgICAgICB8IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJj b2xhIiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAyMlAwMgorIHRfY29weV90YmwgICAg ICAgfCBTVERJTiAgICB8ICAgICAgNiB8IDEsMTEsNDIzODY3OTczMjQ4OTg3OTg3OSB8IGMgICAg ICAgfCA0MjM4Njc5NzMyNDg5ODc5ODc5IHwgdmFsdWUgIjQyMzg2Nzk3MzI0ODk4Nzk4NzkiIGlz IG91dCBvZiByYW5nZSBmb3IgdHlwZSBpbnRlZ2VyIHwgICAgICAgICAgICB8IDIyMDAzCisoNCBy b3dzKQorCitzZWxlY3QgKiBmcm9tIHRfY29weV90Ymw7CisgYSB8IGIgfCBjIAorLS0tKy0tLSst LS0KKyAxIHwgMiB8IDMKKyA0IHwgNSB8IDYKKygyIHJvd3MpCisKIC0tIGNsZWFuIHVwCiBEUk9Q IFRBQkxFIGZvcmNldGVzdDsKIERST1AgVEFCTEUgdmlzdGVzdDsKQEAgLTgzMSw2ICs5MzQsMTAg QEAgRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyMjsK IERST1AgRE9NQUlOIGRjaGVja19pZ25fZXJyMjsKIERST1AgVEFCTEUgaGFyZF9lcnI7CitEUk9Q IFRBQkxFIGVycl90Ymw7CitEUk9QIFRBQkxFIGVycl90YmxfMTsKK0RST1AgVEFCTEUgZXJyX3Ri bF8yOworRFJPUCBUQUJMRSB0X2NvcHlfdGJsIENBU0NBREU7CiAtLQogLS0gQ09QWSBGUk9NIC4u LiBERUZBVUxUCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCmluZGV4IDQ1MjczNTU3Y2UuLjY1NWE3 Njg5NDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKQEAgLTU4OCw2ICs1ODgsOTEgQEAgYQl7N30J NwogMTAJezEwfQkxMAogXC4KIAorY3JlYXRlIHRhYmxlIGVycl90YmwoCisgIHVzZXJpZCBvaWQs ICAgLS0gdGhlIHVzZXIgb2lkIHdoaWxlIGNvcHkgZ2VuZXJhdGVkIHRoaXMgZW50cnkKKyAgY29w eV90Ymwgb2lkLCAtLWNvcHkgdGFibGUKKyAgZmlsZW5hbWUgdGV4dCwKKyAgbGluZW5vICBiaWdp bnQsCisgIGxpbmUgICAgdGV4dCwKKyAgY29sbmFtZSB0ZXh0LAorICByYXdfZmllbGRfdmFsdWUg dGV4dCwKKyAgZXJyX21lc3NhZ2UgdGV4dCwKKyAgZXJyX2RldGFpbCB0ZXh0LAorICBlcnJvcmNv ZGUgdGV4dAorKTsKKy0tY2Fubm90IHVzZSBmb3IgZXJyb3Igc2F2aW5nLgorY3JlYXRlIHRhYmxl IGVycl90YmxfMSgKK3VzZXJpZCAgICBvaWQsCitjb3B5X3RibCAgb2lkLAorZmlsZW5hbWUgIHRl eHQsCitsaW5lbm8gICAgYmlnaW50LAorbGluZSAgICAgIHRleHQsCitjb2xuYW1lICAgdGV4dCwK K3Jhd19maWVsZF92YWx1ZSB0ZXh0LAorZXJyX21lc3NhZ2UgICAgIHRleHQsCitlcnJfZGV0YWls ICAgICAgdGV4dAorKTsKKy0tY2Fubm90IHVzZSBmb3IgZXJyb3Igc2F2aW5nLgorY3JlYXRlIHRh YmxlIGVycl90YmxfMigKKyAgdXNlcmlkIG9pZCwgY29weV90Ymwgb2lkLCBmaWxlbmFtZSB0ZXh0 LCBsaW5lbm8gYmlnaW50LGxpbmUgdGV4dCwKKyAgY29sbmFtZSB0ZXh0LCByYXdfZmllbGRfdmFs dWUgdGV4dCwgZXJyX21lc3NhZ2UgdGV4dCwKKyAgZXJyX2RldGFpbCB0ZXh0LAorICBlcnJvcmNv ZGUgdGV4dCwKKyAgZXJyb3Jjb2RlMSB0ZXh0CispOworY3JlYXRlIHRhYmxlIHRfY29weV90Ymwo YSBpbnQsIGIgaW50LCBjIGludCk7CitjcmVhdGUgdmlldyBzMSBhcyBzZWxlY3QgMSBhcyBhOwor CistLS0taW52YWxpZCBvcHRpb25zLCB0aGUgYmVsb3cgYWxsIHNob3VsZCAgZmFpbHMKK0NPUFkg dF9jb3B5X3RibCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yICd0YWJsZScpOworQ09QWSB0X2Nv cHlfdGJsIEZST00gU1RESU4gV0lUSCAodGFibGUgZXJyX3RibCk7CitDT1BZIHRfY29weV90Ymwg VE8gU1RESU4gV0lUSCAob25fZXJyb3IgJ3RhYmxlJyk7CitDT1BZIHRfY29weV90YmwoYSxiKSBG Uk9NIFNURElOIFdJVEggKG9uX2Vycm9yICd0YWJsZScsIHJlamVjdF9saW1pdCAxMCwgdGFibGUg ZXJyX3RibCk7CitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9y ICd0YWJsZScsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSwgdGFibGUgZXJyX3RibCk7CitDT1BZIHRf Y29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yICd0YWJsZScsIHRhYmxlIG5v dF9leGlzdHMpOworQ09QWSB0X2NvcHlfdGJsKGEpIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Ig J3RhYmxlJywgdGFibGUgczEpOworLS1zaG91bGQgZmFpbC4gZXJyX3RibF8xIGRvZXMgbm90IG1l ZXQgY3JpdGVyaWEKK0NPUFkgdF9jb3B5X3RibChhLGIpIEZST00gU1RESU4gV0lUSCAob25fZXJy b3IgJ3RhYmxlJywgdGFibGUgZXJyX3RibF8xKTsKKy0tc2hvdWxkIGZhaWwuIGVycl90YmxfMiBk b2VzIG5vdCBtZWV0IGNyaXRlcmlhCitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yICd0YWJsZScsIHRhYmxlIGVycl90YmxfMik7CistLS0taW52YWxpZCBvcHRp b25zLCB0aGUgYWJvdmUgYWxsIHNob3VsZCBmYWlscworCisKKy0tc2hvdWxkIGZhaWwsIGNvcGll ZCBkYXRhIGhhdmUgZXh0cmEgY29sdW1ucworQ09QWSB0X2NvcHlfdGJsKGEsYikgRlJPTSBTVERJ TiBXSVRIIChERUxJTUlURVIgJywnLCBvbl9lcnJvciAndGFibGUnLCB0YWJsZSBlcnJfdGJsKTsK KzEsMiwzLDQKK1wuCisKKy0tc2hvdWxkIGZhaWwsIGNvcGllZCBkYXRhIGhhdmUgbGVzcyBjb2x1 bW5zCitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKERFTElNSVRFUiAnLCcs IG9uX2Vycm9yICd0YWJsZScsIHRhYmxlIGVycl90YmwpOworMSwyLAorXC4KKworLS1vayBjYXNl cy4KK0NPUFkgdF9jb3B5X3RibCBGUk9NIFNURElOIFdJVEggKERFTElNSVRFUiAnLCcsIG9uX2Vy cm9yICd0YWJsZScsIHRhYmxlIGVycl90YmwpOworMSwyLGEKKzEsMiwzCisxLF9qdW5rLHRlc3QK K2NvbGEsY29sYixjb2xjCis0LDUsNgorMSwxMSw0MjM4Njc5NzMyNDg5ODc5ODc5CitcLgorCist LXNob3VsZCBmYWlsLiBsYWNrIHByaXZpbGVnZQorYmVnaW47CitjcmVhdGUgdXNlciByZWdyZXNz X3VzZXIyMDsKK2dyYW50IGluc2VydCh1c2VyaWQsY29weV90YmwsZmlsZW5hbWUsbGluZW5vLGxp bmUpIG9uIHRhYmxlIGVycl90YmwgdG8gcmVncmVzc191c2VyMjA7CitncmFudCBpbnNlcnQgb24g dGFibGUgdF9jb3B5X3RibCB0byByZWdyZXNzX3VzZXIyMDsKK3NldCByb2xlIHJlZ3Jlc3NfdXNl cjIwOworQ09QWSB0X2NvcHlfdGJsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25f ZXJyb3IgJ3RhYmxlJywgdGFibGUgZXJyX3RibCk7CitST0xMQkFDSzsKKworc2VsZWN0CXBnX2Ns YXNzLnJlbG5hbWUgYXMgY29weV9kZXN0aW5hdGlvbgorICAgICAgICAsZmlsZW5hbWUsbGluZW5v ICxsaW5lCisgICAgICAgICxjb2xuYW1lLHJhd19maWVsZF92YWx1ZSxlcnJfbWVzc2FnZQorICAg ICAgICAsZXJyX2RldGFpbCxlcnJvcmNvZGUKK2Zyb20gZXJyX3RibCBqb2luIHBnX2NsYXNzIG9u IGNvcHlfdGJsID0gcGdfY2xhc3Mub2lkOworc2VsZWN0ICogZnJvbSB0X2NvcHlfdGJsOwogLS0g Y2xlYW4gdXAKIERST1AgVEFCTEUgZm9yY2V0ZXN0OwogRFJPUCBUQUJMRSB2aXN0ZXN0OwpAQCAt NjA2LDYgKzY5MSwxMCBAQCBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnI7CiBEUk9QIFRBQkxFIGNo ZWNrX2lnbl9lcnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIyOwogRFJPUCBUQUJMRSBo YXJkX2VycjsKK0RST1AgVEFCTEUgZXJyX3RibDsKK0RST1AgVEFCTEUgZXJyX3RibF8xOworRFJP UCBUQUJMRSBlcnJfdGJsXzI7CitEUk9QIFRBQkxFIHRfY29weV90YmwgQ0FTQ0FERTsKIAogLS0K IC0tIENPUFkgRlJPTSAuLi4gREVGQVVMVAotLSAKMi4zNC4xCgo= --000000000000a5ae7306292298b5--