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.96) (envelope-from ) id 1wbzeH-0030Kg-2k for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jun 2026 11:50:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wbzeG-00BUtr-1e for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jun 2026 11:50:36 +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.96) (envelope-from ) id 1wbzeG-00BUti-0H for pgsql-hackers@lists.postgresql.org; Tue, 23 Jun 2026 11:50:36 +0000 Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wbzeD-00000001uin-2jDj for pgsql-hackers@lists.postgresql.org; Tue, 23 Jun 2026 11:50:35 +0000 Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-39957d210f4so42155831fa.0 for ; Tue, 23 Jun 2026 04:50:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782215432; cv=none; d=google.com; s=arc-20240605; b=MPQwhXK0fPkV+PIJCarByhw/soFrwxMMAB+Jmi4XzDtMFQYZUXhf8QicQJCNCiS+YX Tk9uTQMrzkjdhXksJSYcpddsV9FpffnWIoy5/R/xrSwuxz1q99NPjt9ZAtKEku7NU7rB BH3ZhnRzWO64dIvUHPcB/tvI/OLp/LS4Zm4i6oufb3j7YxlOXz0W2VVWAU602xBT9F6y d5BojEZmA8+HxOP6VVL/iQvgeZtgaZOdrOTjr2g+I5tq+dk1tzmL+vNhWhK+7Gt/d2XR CVZ4gYFzKXAV7vCicKTuLXHkGBJ2Y7xIDeCGwL4KrnrflwxcjFcEqsCBaS1ZdauXo9ZG RCTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=eyIZC9rayDJAPFxMB8JdIyEoxWgtRSJGluayaiZTmWc=; fh=QAvoKC3EaM3VoSqFzX5bkgwYdmaB2QQM7jeKqT76jiI=; b=MEKE6XCY5vHNqId5b04dWFV6+mht5MjpgG8/O76t7NFMwmwa63Zc0m9/RimusIhPyA Ebc+33eCFmv9Dj1TLFPwKAdhfLPShea9k2J23MQtV2aUnACId6OAiTOysc+sQ92QrYpR Iqz8QAcYJ3+T6PLsFvWazXTOgunbfldMcxAwKSKjQhAsGHwhCgzTnimd6YSZKOdF9S/R kDZoIjS5mVdg6tTM10TwB7tGuaTYLiZeX3Xt3Nhz0v5TcLux3LGP1oiJtORdZNinvEhX /+KS2s/dI1ugen/ZDTZ7slZwYNolCkX8uDK7xVb58bAHHRmaKeh9u6euiwgo2wUHNpqZ mltw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782215432; x=1782820232; 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=eyIZC9rayDJAPFxMB8JdIyEoxWgtRSJGluayaiZTmWc=; b=qZIqMWqKhg0LkHiQw0sQ4AE/CISIloOQHSMv7m4lJouCuhn21WFkgZjzsr03Vd2rtk O6xgVhXFlZL72M22uzfyBYrAX2gR0k2Z61Hw1CSF5G9BXd3dn/UUEFoXnlIoFqdez/zr dU2t3ygD32KmylpPeGczayhQ/ZnUnTsFvCUswtYNAbCUC4B69BIKWSYgbxzwul5Nz/Cn 9dDUL3o3XBB6B/QUqs9pPAPtTIUzFwKZzoucuD2HNlL2bVou6wWQWN6yVc/bupUZGPd1 TBDp1iBcXCLBIEpOv7cNzmVQvsboMJqFVHG0x2yY3BmNL0mUkw5cA6AvpWv13Ejq0DC3 8VoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782215432; x=1782820232; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=eyIZC9rayDJAPFxMB8JdIyEoxWgtRSJGluayaiZTmWc=; b=Mf5DWg/bhkMzggLXVTP5atGxwBQrtAW5ytSYswxlrxSaLlhyGL1gXqZlOOpZco66Zo 04AO+nTjCHL4ORLVZYRt0l6wiT4r5FmrWzACAHVloSvpLcZl6qt2Qtgse6vFzklJXd73 Wa/5DuiPOejMJXUiKtQmffO4eq5TKnB5rCG4/qXSwKc1/vBgHbmY7RnkK2JYOEkCpHON Mivjx1UYmkTUiLgxqkGP/B7596/7LswCGg4cXHiNSgWdYItMD5xOLtTH2PaQfEPRnAaA ypEVXHjEYVTMDLDjDg02TYNUpyO3hQnFEK7uHBIbzF+MPkaURwhxPxwwAw1xXfb7g7vH MqZA== X-Forwarded-Encrypted: i=1; AFNElJ+pZaMTJkjeG7MwAIXgdHN5TPCVvC1HkGq04MF4MC59m78pdrUrn73JuBz2iNxzHH3UTv3UN5FpIfYvCBvF@lists.postgresql.org X-Gm-Message-State: AOJu0YwwuXVtjF068QOs/e0/Ho8/3WTvOB+SboqNJSAJly2ASz4kiyCo 3xKfTEUht3bLweMOW9fdROBo0K9f4HxawV4sQue7WIIUaL6nJLn65N49CLQDpEI7/VuEcPKNbEx KAskHemrLXw1d1IwVZWtDozc/z6ze28Y= X-Gm-Gg: AfdE7cn/S/Db3ajKfffyeKpXMGblxMktfhKj86gggFF9twq+WWw7kD0xA7h0XwVaJ3v fu6yU7CKUAmhsEuofUO78+ACjAxwYJX9wjbT7mQHsTLkHkFiuV67Kk4rnko6HpWGlU56UjYR2kA A7kG9ZqF6gi3jiAEY7HEWRzo/fksMFyv1gyxRGdyrlzODEORZDmuM7VsuXkvtlPhgq5tVojHMNQ t9HmbCRC+NNwg1qABmC45DT2kraHO2K25CsIqYOaoEHSYttp6WTy1k/gaT//TVPIVcNwxY/0Fhg JPs/XA/GUATrX6IAUBZvPKOMevSmOTU1MuFZWzKUOGisOPC6M1AF8DbuHbwM49zAojKkSNI= X-Received: by 2002:a05:651c:1a25:b0:38e:2de3:f8ad with SMTP id 38308e7fff4ca-39a25162d9amr6153951fa.4.1782215431765; Tue, 23 Jun 2026 04:50:31 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ajin Cherian Date: Tue, 23 Jun 2026 21:50:18 +1000 X-Gm-Features: AVVi8CfsYn-o_LI3gWhpziGAkJ1mrpvnsd0uZmdnUU6CQU3ecoB6vur17P3KmhI Message-ID: Subject: Re: [PATCH] Preserve replication origin OIDs in pg_upgrade To: Rui Zhao Cc: Shlok Kyal , shveta malik , Zsolt Parragi , vignesh C , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , shveta malik Content-Type: multipart/mixed; boundary="000000000000b95fe50654ea5dd1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b95fe50654ea5dd1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jun 17, 2026 at 8:59=E2=80=AFPM Nisha Moond wrote: > > Hi Ajin, Thanks for the patches. > I have started reviewing the patches. Please find a few initial > comments below (from v7 review, still applicable to v8): > > 1) Patch-002: pg_dump.c > + if (dopt->binary_upgrade && subinfo->subenabled && > fout->remoteVersion >=3D 170000) > { > - if (subinfo->suboriginremotelsn) > - { > - /* > - * Preserve the remote_lsn for the subscriber's replication > > I could not find any usage of subinfo[i].suboriginremotelsn anymore. > It seems to be dead code now. Can we remove it? Removed it. > ~~~ > > 2) Patch-002 : binary_upgrade_create_replication_origin() > - PG_RETURN_VOID(); > + node_oid =3D PG_GETARG_OID(0); > + > + if (node_oid =3D=3D InvalidOid || node_oid > PG_UINT16_MAX) > + ereport(ERROR, > + errcode(ERRCODE_INVALID_PARAMETER_VALUE), > + errmsg("replication origin ID %u is out of range", node_oid)); > + > > The above range check allows PG_UINT16_MAX, but that value is not part > of the valid replication origin ID range. > > In origin.h: > #define DoNotReplicateId PG_UINT16_MAX > > And we already ensure "ReplOriginId !=3D DoNotReplicateId" everywhere > else. Would something like the below be more appropriate? > if (node_oid =3D=3D InvalidReplOriginId || node_oid >=3D DoNotReplicate= Id) > ereport(ERROR, ... > ~~~ Done. > > 3) I think we should add some additional details in > logical-replication.sgml, especially under Prepare for > Subscriber Upgrades. > Some suggestions: > 3a) Since all replication origins are now migrated, this: > "...greater than or equal to the number of subscriptions present in > the old cluster." > could become: > "...greater than or equal to the number of replication origins > present in the old cluster." > > 3b) We should also mention: > The new cluster must contain no replication origins. > Done. On Wed, Jun 17, 2026 at 9:42=E2=80=AFPM Nisha Moond wrote: > > 4) I was able to build successfully without all three new header > inclusions below, so we may not need them. > --- a/src/backend/utils/adt/pg_upgrade_support.c > +++ b/src/backend/utils/adt/pg_upgrade_support.c > @@ -11,6 +11,7 @@ > +#include "access/genam.h" > ... > +#include "utils/fmgroids.h" > ... > +#include "utils/snapmgr.h" > ~~~ > Removed. > 5) Race condition in origin.c: replorigin_create() > - heap_freetuple(tuple); > + table_close(rel, ExclusiveLock); > + > + replorigin_create_with_id(roident, roname, InvalidXLogRecPtr); > + > > Due to the above refactoring, CREATE SUBSCRIPTION can now fail because > of a race between two concurrent CREATE SUBSCRIPTION commands: > > postgres=3D# create subscription sub2 connection 'dbname=3Dpostgres > host=3Dlocalhost port=3D7733' publication pub1; > ERROR: replication origin with ID 2 already exists > > I think this happens because the table lock is released, allowing > another session to create a pg_origin with the next available roident, > which replorigin_create_with_id() later attempts to use. > > Would it make sense to call replorigin_create_with_id() before > table_close() so the lock is still held? I tested this and it works, > though I'm not fully sure whether self-locking could be a concern > here, since replorigin_create_with_id() again acquires a > RowExclusiveLock on the same table. > ~~~ > I have fixed this as suggested by Shveta ~~~~~~~~~~ On Thu, Jun 18, 2026 at 7:17=E2=80=AFPM shveta malik wrote: > > > I think this happens because the table lock is released, allowing > > another session to create a pg_origin with the next available roident, > > which replorigin_create_with_id() later attempts to use. > > > > Would it make sense to call replorigin_create_with_id() before > > table_close() so the lock is still held? I tested this and it works, > > though I'm not fully sure whether self-locking could be a concern > > here, since replorigin_create_with_id() again acquires a > > RowExclusiveLock on the same table. > > We can handle this race-condition by moving the table-open to callers > rather than internal call replorigin_create_with_id(). But we also > need the following changes first: > Yes, did it that way. > 1) > replorigin_create_with_id has: > > + /* > + * To avoid needing a TOAST table for pg_replication_origin, we limit > + * replication origin names to 512 bytes. This should be more than enou= gh > + * for all practical use. > + */ > + if (strlen(roname) > MAX_RONAME_LEN) > + ereport(ERROR, > + errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), > + errmsg("replication origin name is too long"), > + errdetail("Replication origin names must be no longer than %d bytes.", > + MAX_RONAME_LEN)); > > replorigin_create_with_id() is called by replorigin_create() and > binary_upgrade_create_replication_origin(). replorigin_create() > already has this check. We should move above check to > binary_upgrade_create_replication_origin() and get rid of it from > internal function replorigin_create_with_id(). Moved. > > 2) > > Also the checks: > + if (SearchSysCacheExists1(REPLORIGIDENT, ObjectIdGetDatum(roident))) > + ereport(ERROR, > + errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin with ID %u already exists", > + (Oid) roident)); > + > + if (SearchSysCacheExists1(REPLORIGNAME, roname_d)) > + ereport(ERROR, > + errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("replication origin \"%s\" already exists", roname)); > > should be moved to caller binary_upgrade_create_replication_origin(). > IMO, these checks are not needed for replorigin_create(), it alread > has this, which should suffice. > > ereport(ERROR, > (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), > errmsg("could not find free > replication origin ID"))); > > ~~ > > Once we correctly place these checks, we can move the 'table_open with > lock' to caller (before name and id collision checks) instead of > replorigin_create_with_id(), which will take care of race-conditions > reported by Nisha. > I have moved the roident check out of replorigin_create_with_id(), but kept the roname check there as that is not there in replorigin_create() On Fri, Jun 19, 2026 at 5:48=E2=80=AFPM Shlok Kyal wrote: > Hi Ajin, > > Thanks for providing the updated patch, I reviewed the patch and I > have some comments: > > 1. patch is not applying on HEAD and needs a rebase. > > 2. New line after 'check_new_cluster_replication_origins' is not required= : > + check_new_cluster_replication_origins(); > + > > 3. pg_dumpall with option '--roles-only' also dumps replication origins > eg: > ./pg_dumpall -p 9000 --binary-upgrade --roles-only > op.sql > output contains: > -- For binary upgrade, must preserve replication origin roident and remot= e_lsn > SELECT pg_catalog.binary_upgrade_create_replication_origin('1'::pg_catalo= g.oid, > 'pg_16387'::pg_catalog.text, '0/00000000'::pg_catalog.pg_lsn); > > I think in this case we should not dump the replication origins as we > explicitly gave the option of '--roles-only' > I have moved the dump_replication_origins under !roles_only and !tablespaces_only checks, I think "globals only" is valid for replication origins. > 4. pg_dumpall with --globals-only option also dumps replication origins. > eg: > ./pg_dumpall -p 9000 --binary-upgrade --globals-only> op.sql and > output contains: > -- For binary upgrade, must preserve replication origin roident and remot= e_lsn > SELECT pg_catalog.binary_upgrade_create_replication_origin('1'::pg_catalo= g.oid, > 'pg_16387'::pg_catalog.text, '0/00000000'::pg_catalog.pg_lsn); > > Is this behaviour intentional? Other logical replication objects > (e.g., publications and subscriptions) are not included in pg_dumpall > --globals-only, so is it okay to dump replication origin? > This is expected as publications and subscriptions are database specific and not globals, while replication origins are global. On Mon, Jun 22, 2026 at 2:22=E2=80=AFAM Rui Zhao wro= te: >> >> Hi Ajin, >> >> Thanks for v8. A couple of comments: >> >> 1) The PG17 gating seems inconsistent between the dump and the check now= . >> dumpReplicationOrigins() is called unconditionally: >> >> if (binary_upgrade && archDumpFormat =3D=3D archNull) >> dumpReplicationOrigins(conn); >> >> but get_subscription_info(), which sets nrepl_origins, is still only >> called for old clusters >=3D 17 in check_new_cluster(): >> >> if (GET_MAJOR_VERSION(old_cluster.major_version) >=3D 1700) >> ... >> get_subscription_info(&old_cluster); >> >> and check_new_cluster_replication_origins() returns early on it: >> >> if (old_cluster.nrepl_origins =3D=3D 0) >> return; >> >> For a < 17 old cluster get_subscription_info() is never called, so >> nrepl_origins stays 0 and this returns early. So when such a cluster has= a >> (user-created) origin, the origin still gets dumped and recreated, while >> the "new cluster must have no origins" and max_active_replication_origin= s >> checks are skipped, and the upgrade fails during restore instead of at t= he >> check step. nrepl_origins is just a count(*) on pg_replication_origin, s= o >> moving its collection out of the >=3D 1700 block should be enough. >> Yes, good catch. I have separated out the replication origin speciifc checks into a different function and moved it oustide the >=3D 1700 block >> 2) 004_subscription.pl only checks subscription origins (pg_). Sinc= e >> the patch migrates all origins, should we also create a user origin >> (pg_replication_origin_create()) and verify its roident/remote_lsn after >> the upgrade? That would also cover the case in (1). Added. All the above changes have been addressed in patch v9. regards, Ajin Cherian Fujitsu Australia --000000000000b95fe50654ea5dd1 Content-Type: application/octet-stream; name="v9-0002-Preserve-replication-origin-OIDs-during-pg_upgrad.patch" Content-Disposition: attachment; filename="v9-0002-Preserve-replication-origin-OIDs-during-pg_upgrad.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqkx7z31 RnJvbSA4ZDE5NTNhNzgwNTFjMDhjZDYxMGQyY2E1NDNiZjE1MDk1ZThmYzlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUdWUsIDIzIEp1biAyMDI2IDIwOjA3OjUzICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2OSAyLzJd IFByZXNlcnZlIHJlcGxpY2F0aW9uIG9yaWdpbiBPSURzIGR1cmluZyBwZ191cGdyYWRlCgpXaGVu IHBnX3VwZ3JhZGUgbWlncmF0ZXMgYSBzdWJzY3JpYmVyLCByZXBsaWNhdGlvbiBvcmlnaW4gT0lE cwoocm9pZGVudCkgY2FuIGNoYW5nZSBhY3Jvc3MgdGhlIHVwZ3JhZGUuIFRoaXMgaXMgYSBwcm9i bGVtIGJlY2F1c2UKY29tbWl0LXRpbWVzdGFtcCByZWNvcmRzIGVtYmVkIHJvaWRlbnQgYW5kIGFy ZSBjb3BpZWQgZGlyZWN0bHkgZnJvbQp0aGUgb2xkIGNsdXN0ZXIncyBwZ19jb21taXRfdHMgZGly ZWN0b3J5LCBjYXVzaW5nIHNwdXJpb3VzCiJ1cGRhdGVfb3JpZ2luX2RpZmZlcnMiIGNvbmZsaWN0 cyBhZnRlciB0aGUgdXBncmFkZS4KCkZpeCB0aGlzIGJ5IGR1bXBpbmcgcmVwbGljYXRpb24gb3Jp Z2lucyBhcyBnbG9iYWwgb2JqZWN0cyB2aWEKcGdfZHVtcGFsbCBkdXJpbmcgYmluYXJ5IHVwZ3Jh ZGUsIHVzaW5nIGEgbmV3IGZ1bmN0aW9uCmJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlv bl9vcmlnaW4ob2lkLCBuYW1lLCBsc24pIHRvIHJlY3JlYXRlCmVhY2ggb3JpZ2luIHdpdGggaXRz IHByZXNlcnZlZCByb2lkZW50IGFuZCByZW1vdGVfbHNuLiBUbyBhdm9pZApjb25mbGljdHMgd2l0 aCB0aGlzLCBDcmVhdGVTdWJzY3JpcHRpb24oKSBza2lwcyByZXBsb3JpZ2luX2NyZWF0ZSgpCmlu IGJpbmFyeS11cGdyYWRlIG1vZGUgc2luY2UgdGhlIG9yaWdpbiBpcyBhbHJlYWR5IGNyZWF0ZWQg YnkgdGhlCnRpbWUgdGhlIHN1YnNjcmlwdGlvbiBpcyByZXN0b3JlZC4KCkF1dGhvcjogQWppbiBD aGVyaWFuIDxpdHNhamluQGdtYWlsLmNvbT4KUmV2aWV3ZXI6IEhheWF0byBLdXJvZGEgKEZ1aml0 c3UpIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3UuY29tPgpSZXZpZXdlcjogWnNvbHQgUGFycmFnaSA8 enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KUmV2aWV3ZXI6IFNobG9rIEt5YWwgPHNobG9rLmt5 YWwub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZXI6IFNodmV0YSBtYWxpayA8c2h2ZXRhLm1hbGlrQGdt YWlsLmNvbT4KUmV2aWV3ZXI6IFZpZ25lc2ggQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4KUmV2aWV3 ZXI6IE5pc2hhIE1vb25kIDxuaXNoYS5tb29uZDQxMkBnbWFpbC5jb20+ClJldmlld2VyOiBSdWkg WmhhbyA8emhhb3J1aTEyNkBnbWFpbC5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMgICAgfCAgMTEgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L29yaWdpbi5jICAgfCAgOTggKysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jIHwgMTA3ICsrKysrKysrKysrKy0tLS0tLS0tLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgIHwgIDUxICsrLS0tLS0tLS0K IHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICB8ICAgMSAtCiBzcmMv YmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jICAgICAgICAgICAgICAgfCAgNjcgKysrKysrKysrKysr Kwogc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMgICAgICAgICAgICAgICAgIHwgIDU3ICsrKysr KystLS0tCiBzcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jICAgICAgICAgICAgICAgICAgfCAgMjMg KysrKysKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggICAgICAgICAgICB8ICAgMiAr CiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0aW9uLnBsICAgfCAgNTggKysrKysr KysrKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICB8ICAgOCAr LQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgIHwgICAzICsKIDEz IGZpbGVzIGNoYW5nZWQsIDMzOCBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggOWU3ODY4NDg3ZGUuLmI0Y2NkNDRh MzI3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTI4MTksNyArMjgx OSw3IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBv cmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgIDxub3RlPgogICAgIDxwYXJhPgot ICAgICBDb21taXQgdGltZXN0YW1wcyBhbmQgb3JpZ2luIGRhdGEgYXJlIG5vdCBwcmVzZXJ2ZWQg ZHVyaW5nIHRoZSB1cGdyYWRlLgorICAgICBDb21taXQgdGltZXN0YW1wcyBhcmUgbm90IHByZXNl cnZlZCBkdXJpbmcgdGhlIHVwZ3JhZGUuCiAgICAgIEFzIGEgcmVzdWx0LCBldmVuIGlmCiAgICAg IDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtcmV0YWlu LWRlYWQtdHVwbGVzIj48bGl0ZXJhbD5yZXRhaW5fZGVhZF90dXBsZXM8L2xpdGVyYWw+PC9saW5r PgogICAgICBpcyBlbmFibGVkLCB0aGUgdXBncmFkZWQgc3Vic2NyaWJlciBtYXkgYmUgdW5hYmxl IHRvIGRldGVjdCBjb25mbGljdHMgb3IKQEAgLTI4NjEsNyArMjg2MSw3IEBAIENPTlRFWFQ6ICBw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBk dXJpbmcgIklOU0VSCiAgICAgICBUaGUgbmV3IGNsdXN0ZXIgbXVzdCBoYXZlCiAgICAgICA8bGlu ayBsaW5rZW5kPSJndWMtbWF4LWFjdGl2ZS1yZXBsaWNhdGlvbi1vcmlnaW5zIj48dmFybmFtZT5t YXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnM8L3Zhcm5hbWU+PC9saW5rPgogICAgICAgY29u ZmlndXJlZCB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9m Ci0gICAgICBzdWJzY3JpcHRpb25zIHByZXNlbnQgaW4gdGhlIG9sZCBjbHVzdGVyLgorICAgICAg cmVwbGljYXRpb24gb3JpZ2lucyBwcmVzZW50IGluIHRoZSBvbGQgY2x1c3Rlci4gVGhlIG5ldyBj bHVzdGVyIG11c3QgY29udGFpbiBubyByZXBsaWNhdGlvbiBvcmlnaW5zLgogICAgICA8L3BhcmE+ CiAgICAgPC9saXN0aXRlbT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKaW5kZXggNWZlNzQ0MDQxOGMuLjQxOTFkNzhhZWJkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R3b3BoYXNlLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2JpbmFyeV91cGdyYWRlLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9kZXBlbmRlbmN5 LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgpAQCAtODk4LDkgKzg5OSwxNSBAQCBD cmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpzdG10LAogCSAqIGFwcGx5IHdvcmtlcnMgaW5pdGlhbGl6YXRpb24sIGFuZCB0byBoYW5k bGUgb3JpZ2luIGNyZWF0aW9uIGR5bmFtaWNhbGx5CiAJICogd2hlbiB0YWJsZXMgYXJlIGFkZGVk IHRvIHRoZSBzdWJzY3JpcHRpb24uIEl0IGlzIG5vdCBjbGVhciB3aGV0aGVyCiAJICogcHJldmVu dGluZyBjcmVhdGlvbiBvZiBvcmlnaW5zIGlzIHdvcnRoIGFkZGl0aW9uYWwgY29tcGxleGl0eS4K KwkgKgorCSAqIEluIGJpbmFyeS11cGdyYWRlIG1vZGUsIHNraXAgb3JpZ2luIGNyZWF0aW9uIGhl cmUuIFRoaXMgaXMgcmVxdWlyZWQgdG8KKwkgKiBwcmVzZXJ2ZSB0aGUgcm9pZGVudCBmcm9tIHRo ZSBvbGQgY2x1c3RlciBmb3IgdGhpcyBzdWJzY3JpcHRpb24uCiAJICovCi0JUmVwbGljYXRpb25P cmlnaW5OYW1lRm9yTG9naWNhbFJlcChzdWJpZCwgSW52YWxpZE9pZCwgb3JpZ2lubmFtZSwgc2l6 ZW9mKG9yaWdpbm5hbWUpKTsKLQlyZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKKwlpZiAo IUlzQmluYXJ5VXBncmFkZSkKKwl7CisJCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxS ZXAoc3ViaWQsIEludmFsaWRPaWQsIG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSk7CisJ CXJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOworCX0KIAogCS8qCiAJICogQ29ubmVjdCB0 byByZW1vdGUgc2lkZSB0byBleGVjdXRlIHJlcXVlc3RlZCBjb21tYW5kcyBhbmQgZmV0Y2ggdGFi bGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGM5ZGZiMDk0 YzJiLi5lM2EzZTgxNmYyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9vcmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdp bi5jCkBAIC0yNjUsNiArMjY1LDU0IEBAIHJlcGxvcmlnaW5fYnlfbmFtZShjb25zdCBjaGFyICpy b25hbWUsIGJvb2wgbWlzc2luZ19vaykKIAlyZXR1cm4gcm9pZGVudDsKIH0KIAorLyoKKyAqIHJl cGxvcmlnaW5fY3JlYXRlX3dpdGhfaWQKKyAqCisgKiBDcmVhdGUgYSByZXBsaWNhdGlvbiBvcmln aW4gd2l0aCBhIHNwZWNpZmljIElEIGFuZCBuYW1lLCBvcHRpb25hbGx5CisgKiByZXN0b3Jpbmcg aXRzIHJlbW90ZV9sc24uICBVc2VkIGJ5IHBnX3VwZ3JhZGUgdG8gcHJlc2VydmUgcmVwbGljYXRp b24KKyAqIG9yaWdpbiBJRHMgYWNyb3NzIHRoZSB1cGdyYWRlLgorICoKKyAqIENhbGxlciBtdXN0 IGhvbGQgYW4gZXhjbHVzaXZlIGxvY2sgb24gUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLgor ICoKKyAqIE5lZWRzIHRvIGJlIGNhbGxlZCBpbiBhIHRyYW5zYWN0aW9uLgorICovCit2b2lkCity ZXBsb3JpZ2luX2NyZWF0ZV93aXRoX2lkKFJlcGxPcmlnaW5JZCByb2lkZW50LCBjb25zdCBjaGFy ICpyb25hbWUsCisJCQkJCQkgIFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgUmVsYXRpb24gcmVsKQor eworCURhdHVtCQkJcm9uYW1lX2Q7CisJYm9vbAkJCW51bGxzW05hdHRzX3BnX3JlcGxpY2F0aW9u X29yaWdpbl07CisJRGF0dW0JCQl2YWx1ZXNbTmF0dHNfcGdfcmVwbGljYXRpb25fb3JpZ2luXTsK KwlIZWFwVHVwbGUJCXR1cGxlOworCisJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKwlB c3NlcnQoQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUocmVsLCBFeGNsdXNpdmVMb2NrLCBmYWxzZSkp OworCisJcm9uYW1lX2QgPSBDU3RyaW5nR2V0VGV4dERhdHVtKHJvbmFtZSk7CisKKwlpZiAoU2Vh cmNoU3lzQ2FjaGVFeGlzdHMxKFJFUExPUklHTkFNRSwgcm9uYW1lX2QpKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQllcnJtc2co InJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByb25hbWUpKTsKKwor CW1lbXNldCgmbnVsbHMsIDAsIHNpemVvZihudWxscykpOworCW1lbXNldCgmdmFsdWVzLCAwLCBz aXplb2YodmFsdWVzKSk7CisKKwl2YWx1ZXNbQW51bV9wZ19yZXBsaWNhdGlvbl9vcmlnaW5fcm9p ZGVudCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShyb2lkZW50KTsKKwl2YWx1ZXNbQW51bV9wZ19y ZXBsaWNhdGlvbl9vcmlnaW5fcm9uYW1lIC0gMV0gPSByb25hbWVfZDsKKworCXR1cGxlID0gaGVh cF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7CisJQ2F0 YWxvZ1R1cGxlSW5zZXJ0KHJlbCwgdHVwbGUpOworCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKKwlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJaWYgKHJlbW90ZV9sc24gIT0gSW52YWxpZFhM b2dSZWNQdHIpCisJCXJlcGxvcmlnaW5fYWR2YW5jZShyb2lkZW50LCByZW1vdGVfbHNuLCBJbnZh bGlkWExvZ1JlY1B0ciwKKwkJCQkJCSAgIGZhbHNlIC8qIGJhY2t3YXJkICovLAorCQkJCQkJICAg ZmFsc2UgLyogV0FMIGxvZyAqLyk7CisKK30KKwogLyoKICAqIENyZWF0ZSBhIHJlcGxpY2F0aW9u IG9yaWdpbi4KICAqCkBAIC0yNzMsMTMgKzMyMSwxMiBAQCByZXBsb3JpZ2luX2J5X25hbWUoY29u c3QgY2hhciAqcm9uYW1lLCBib29sIG1pc3Npbmdfb2spCiBSZXBsT3JpZ2luSWQKIHJlcGxvcmln aW5fY3JlYXRlKGNvbnN0IGNoYXIgKnJvbmFtZSkKIHsKLQlPaWQJCQlyb2lkZW50OwotCUhlYXBU dXBsZQl0dXBsZSA9IE5VTEw7Ci0JUmVsYXRpb24JcmVsOwotCURhdHVtCQlyb25hbWVfZDsKLQlT bmFwc2hvdERhdGEgU25hcHNob3REaXJ0eTsKLQlTeXNTY2FuRGVzYyBzY2FuOwotCVNjYW5LZXlE YXRhIGtleTsKKwlPaWQJCQkJcm9pZGVudDsKKwlSZWxhdGlvbgkJcmVsOworCVNuYXBzaG90RGF0 YQlTbmFwc2hvdERpcnR5OworCVN5c1NjYW5EZXNjCQlzY2FuOworCVNjYW5LZXlEYXRhCQlrZXk7 CisJYm9vbAkJCWZvdW5kID0gZmFsc2U7CiAKIAkvKgogCSAqIFRvIGF2b2lkIG5lZWRpbmcgYSBU T0FTVCB0YWJsZSBmb3IgcGdfcmVwbGljYXRpb25fb3JpZ2luLCB3ZSBsaW1pdApAQCAtMjkzLDgg KzM0MCw2IEBAIHJlcGxvcmlnaW5fY3JlYXRlKGNvbnN0IGNoYXIgKnJvbmFtZSkKIAkJCQkgZXJy ZGV0YWlsKCJSZXBsaWNhdGlvbiBvcmlnaW4gbmFtZXMgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAl ZCBieXRlcy4iLAogCQkJCQkJICAgTUFYX1JPTkFNRV9MRU4pKSk7CiAKLQlyb25hbWVfZCA9IENT dHJpbmdHZXRUZXh0RGF0dW0ocm9uYW1lKTsKLQogCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUo KSk7CiAKIAkvKgpAQCAtMzIxLDE3ICszNjYsMTUgQEAgcmVwbG9yaWdpbl9jcmVhdGUoY29uc3Qg Y2hhciAqcm9uYW1lKQogCSAqIHNuYXBzaG90LiAgVG8gbWFrZSB0aGF0IHNhZmUsIGl0IG5lZWRz IHRvIG5vdCBoYXZlIGEgVE9BU1QgdGFibGUsIHNpbmNlCiAJICogVE9BU1RlZCBkYXRhIGNhbm5v dCBiZSBmZXRjaGVkIHdpdGhvdXQgYSBzbmFwc2hvdC4gIEFzIG9mIHRoaXMgd3JpdGluZywKIAkg KiBpdHMgb25seSB2YXJsZW5hIGNvbHVtbiBpcyByb25hbWUsIHdoaWNoIHdlIGxpbWl0IHRvIDUx MiBieXRlcyB0byBhdm9pZAotCSAqIG5lZWRpbmcgb3V0LW9mLWxpbmUgc3RvcmFnZS4gIElmIHlv dSBhZGQgYSBUT0FTVCB0YWJsZSB0byB0aGlzIGNhdGFsb2csCi0JICogYmUgc3VyZSB0byBzZXQg dXAgYSBzbmFwc2hvdCBldmVyeXdoZXJlIGl0IG1pZ2h0IGJlIG5lZWRlZC4gIEZvciBtb3JlCisJ ICogbmVlZGluZyBvdXQtb2YtbGluZSBzdG9yYWdlLiBJZiB5b3UgYWRkIGEgVE9BU1QgdGFibGUg dG8gdGhpcyBjYXRhbG9nLAorCSAqIGJlIHN1cmUgdG8gc2V0IHVwIGEgc25hcHNob3QgZXZlcnl3 aGVyZSBpdCBtaWdodCBiZSBuZWVkZWQuIEZvciBtb3JlCiAJICogaW5mb3JtYXRpb24sIHNlZSBo dHRwczovL3Bvc3Rnci5lcy9tL1p2TVNVUE9xVVUtVk5BRE4lNDBuYXRoYW4uCiAJICovCiAJQXNz ZXJ0KCFPaWRJc1ZhbGlkKHJlbC0+cmRfcmVsLT5yZWx0b2FzdHJlbGlkKSk7CiAKIAlmb3IgKHJv aWRlbnQgPSBJbnZhbGlkT2lkICsgMTsgcm9pZGVudCA8IFBHX1VJTlQxNl9NQVg7IHJvaWRlbnQr KykKIAl7Ci0JCWJvb2wJCW51bGxzW05hdHRzX3BnX3JlcGxpY2F0aW9uX29yaWdpbl07Ci0JCURh dHVtCQl2YWx1ZXNbTmF0dHNfcGdfcmVwbGljYXRpb25fb3JpZ2luXTsKLQkJYm9vbAkJY29sbGlk ZXM7CisJCWJvb2wJY29sbGlkZXM7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIApAQCAt MzQxLDQxICszODQsMjggQEAgcmVwbG9yaWdpbl9jcmVhdGUoY29uc3QgY2hhciAqcm9uYW1lKQog CQkJCQlPYmplY3RJZEdldERhdHVtKHJvaWRlbnQpKTsKIAogCQlzY2FuID0gc3lzdGFibGVfYmVn aW5zY2FuKHJlbCwgUmVwbGljYXRpb25PcmlnaW5JZGVudEluZGV4LAotCQkJCQkJCQkgIHRydWUg LyogaW5kZXhPSyAqLyAsCisJCQkJCQkJCSAgdHJ1ZSAvKiBpbmRleE9LICovLAogCQkJCQkJCQkg ICZTbmFwc2hvdERpcnR5LAogCQkJCQkJCQkgIDEsICZrZXkpOwotCiAJCWNvbGxpZGVzID0gSGVh cFR1cGxlSXNWYWxpZChzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKTsKLQogCQlzeXN0YWJsZV9lbmRz Y2FuKHNjYW4pOwogCiAJCWlmICghY29sbGlkZXMpCiAJCXsKLQkJCS8qCi0JCQkgKiBPaywgZm91 bmQgYW4gdW51c2VkIHJvaWRlbnQsIGluc2VydCB0aGUgbmV3IHJvdyBhbmQgZG8gYSBDQ0ksCi0J CQkgKiBzbyBvdXIgY2FsbGVycyBjYW4gbG9vayBpdCB1cCBpZiB0aGV5IHdhbnQgdG8uCi0JCQkg Ki8KLQkJCW1lbXNldCgmbnVsbHMsIDAsIHNpemVvZihudWxscykpOwotCi0JCQl2YWx1ZXNbQW51 bV9wZ19yZXBsaWNhdGlvbl9vcmlnaW5fcm9pZGVudCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShy b2lkZW50KTsKLQkJCXZhbHVlc1tBbnVtX3BnX3JlcGxpY2F0aW9uX29yaWdpbl9yb25hbWUgLSAx XSA9IHJvbmFtZV9kOwotCi0JCQl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERl c2NyKHJlbCksIHZhbHVlcywgbnVsbHMpOwotCQkJQ2F0YWxvZ1R1cGxlSW5zZXJ0KHJlbCwgdHVw bGUpOwotCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJCWZvdW5kID0gdHJ1ZTsKIAkJ CWJyZWFrOwogCQl9CiAJfQogCi0JLyogbm93IHJlbGVhc2UgbG9jayBhZ2FpbiwJKi8KLQl0YWJs ZV9jbG9zZShyZWwsIEV4Y2x1c2l2ZUxvY2spOwotCi0JaWYgKHR1cGxlID09IE5VTEwpCisJaWYg KCFmb3VuZCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1f TElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coImNvdWxkIG5vdCBmaW5kIGZyZWUgcmVwbGlj YXRpb24gb3JpZ2luIElEIikpKTsKIAotCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKKwlyZXBsb3Jp Z2luX2NyZWF0ZV93aXRoX2lkKHJvaWRlbnQsIHJvbmFtZSwgSW52YWxpZFhMb2dSZWNQdHIsIHJl bCk7CisKKwl0YWJsZV9jbG9zZShyZWwsIEV4Y2x1c2l2ZUxvY2spOworCiAJcmV0dXJuIHJvaWRl bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1 cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwppbmRl eCA1OWMzZTdmMDE0Ni4uZWIzYmIwODE1MDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf dXBncmFkZV9zdXBwb3J0LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJ1dGlscy9hcnJh eS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19s c24uaCIKIAogCkBAIC0zNzcsNzEgKzM3OCw4NSBAQCBiaW5hcnlfdXBncmFkZV9hZGRfc3ViX3Jl bF9zdGF0ZShQR19GVU5DVElPTl9BUkdTKQogfQogCiAvKgotICogYmluYXJ5X3VwZ3JhZGVfcmVw bG9yaWdpbl9hZHZhbmNlCisgKiBiaW5hcnlfdXBncmFkZV9jcmVhdGVfY29uZmxpY3RfZGV0ZWN0 aW9uX3Nsb3QKICAqCi0gKiBVcGRhdGUgdGhlIHJlbW90ZV9sc24gZm9yIHRoZSBzdWJzY3JpYmVy J3MgcmVwbGljYXRpb24gb3JpZ2luLgorICogQ3JlYXRlIGEgcmVwbGljYXRpb24gc2xvdCB0byBy ZXRhaW4gaW5mb3JtYXRpb24gbmVjZXNzYXJ5IGZvciBjb25mbGljdAorICogZGV0ZWN0aW9uIHN1 Y2ggYXMgZGVhZCB0dXBsZXMsIGNvbW1pdCB0aW1lc3RhbXBzLCBhbmQgb3JpZ2lucy4KICAqLwog RGF0dW0KLWJpbmFyeV91cGdyYWRlX3JlcGxvcmlnaW5fYWR2YW5jZShQR19GVU5DVElPTl9BUkdT KQorYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2NvbmZsaWN0X2RldGVjdGlvbl9zbG90KFBHX0ZVTkNU SU9OX0FSR1MpCiB7Ci0JUmVsYXRpb24JcmVsOwotCU9pZAkJCXN1YmlkOwotCWNoYXIJICAgKnN1 Ym5hbWU7Ci0JY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JUmVwbE9yaWdpbklkIG5v ZGU7Ci0JWExvZ1JlY1B0cglyZW1vdGVfY29tbWl0OwotCiAJQ0hFQ0tfSVNfQklOQVJZX1VQR1JB REU7CiAKLQkvKgotCSAqIFdlIG11c3QgZW5zdXJlIGEgbm9uLU5VTEwgc3Vic2NyaXB0aW9uIG5h bWUgYmVmb3JlIGRlcmVmZXJlbmNpbmcgdGhlCi0JICogYXJndW1lbnRzLgotCSAqLwotCWlmIChQ R19BUkdJU05VTEwoMCkpCi0JCWVsb2coRVJST1IsICJudWxsIGFyZ3VtZW50IHRvIGJpbmFyeV91 cGdyYWRlX3JlcGxvcmlnaW5fYWR2YW5jZSBpcyBub3QgYWxsb3dlZCIpOwotCi0Jc3VibmFtZSA9 IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7Ci0JcmVtb3RlX2NvbW1pdCA9 IFBHX0FSR0lTTlVMTCgxKSA/IEludmFsaWRYTG9nUmVjUHRyIDogUEdfR0VUQVJHX0xTTigxKTsK LQotCXJlbCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7Ci0Jc3ViaWQgPSBnZXRfc3Vic2NyaXB0aW9uX29pZChzdWJuYW1lLCBmYWxzZSk7Ci0K LQlSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKHN1YmlkLCBJbnZhbGlkT2lkLCBv cmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSkpOwotCi0JLyogTG9jayB0byBwcmV2ZW50IHRo ZSByZXBsaWNhdGlvbiBvcmlnaW4gZnJvbSB2YW5pc2hpbmcgKi8KLQlMb2NrUmVsYXRpb25PaWQo UmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQlub2RlID0g cmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKLQotCS8qCi0JICogVGhlIHNl cnZlciB3aWxsIGJlIHN0b3BwZWQgYWZ0ZXIgc2V0dGluZyB1cCB0aGUgb2JqZWN0cyBpbiB0aGUg bmV3Ci0JICogY2x1c3RlciBhbmQgdGhlIG9yaWdpbnMgd2lsbCBiZSBmbHVzaGVkIGR1cmluZyB0 aGUgc2h1dGRvd24gY2hlY2twb2ludC4KLQkgKiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGxh dGVzdCBMU04gdmFsdWVzIGZvciBvcmlnaW4gd2lsbCBiZQotCSAqIGF2YWlsYWJsZSBhZnRlciB0 aGUgdXBncmFkZS4KLQkgKi8KLQlyZXBsb3JpZ2luX2FkdmFuY2Uobm9kZSwgcmVtb3RlX2NvbW1p dCwgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCSAgIGZhbHNlIC8qIGJhY2t3YXJkICovICwKLQkJ CQkJICAgZmFsc2UgLyogV0FMIGxvZyAqLyApOworCUNyZWF0ZUNvbmZsaWN0RGV0ZWN0aW9uU2xv dCgpOwogCi0JVW5sb2NrUmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBS b3dFeGNsdXNpdmVMb2NrKTsKLQl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwor CVJlcGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsKIAogCVBHX1JFVFVSTl9WT0lEKCk7CiB9CiAKIC8q Ci0gKiBiaW5hcnlfdXBncmFkZV9jcmVhdGVfY29uZmxpY3RfZGV0ZWN0aW9uX3Nsb3QKKyAqIGJp bmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlvbl9vcmlnaW4KICAqCi0gKiBDcmVhdGUgYSBy ZXBsaWNhdGlvbiBzbG90IHRvIHJldGFpbiBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIGNvbmZs aWN0Ci0gKiBkZXRlY3Rpb24gc3VjaCBhcyBkZWFkIHR1cGxlcywgY29tbWl0IHRpbWVzdGFtcHMs IGFuZCBvcmlnaW5zLgorICogQ3JlYXRlIGEgcmVwbGljYXRpb24gb3JpZ2luIHdpdGggYSBzcGVj aWZpYyBPSUQgYW5kIG5hbWUsIG9wdGlvbmFsbHkKKyAqIHJlc3RvcmluZyBpdHMgcmVtb3RlX2xz bi4gVXNlZCBieSBwZ191cGdyYWRlIHRvIHByZXNlcnZlIHJlcGxpY2F0aW9uCisgKiBvcmlnaW4g T0lEcyBhY3Jvc3MgdGhlIHVwZ3JhZGUuCiAgKi8KIERhdHVtCi1iaW5hcnlfdXBncmFkZV9jcmVh dGVfY29uZmxpY3RfZGV0ZWN0aW9uX3Nsb3QoUEdfRlVOQ1RJT05fQVJHUykKK2JpbmFyeV91cGdy YWRlX2NyZWF0ZV9yZXBsaWNhdGlvbl9vcmlnaW4oUEdfRlVOQ1RJT05fQVJHUykKIHsKKwlPaWQg ICAgICAgICAgICAgbm9kZV9vaWQ7CisJUmVwbE9yaWdpbklkICAgIG5vZGU7CisJUmVsYXRpb24J CXJlbDsKKwljaGFyICAgICAgICAgICAqb3JpZ2lubmFtZTsKKwlYTG9nUmVjUHRyICAgICAgcmVt b3RlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCiAJQ0hFQ0tfSVNfQklOQVJZX1VQR1JBREU7 CiAKLQlDcmVhdGVDb25mbGljdERldGVjdGlvblNsb3QoKTsKKwlpZiAoUEdfQVJHSVNOVUxMKDAp IHx8IFBHX0FSR0lTTlVMTCgxKSkKKwkJZWxvZyhFUlJPUiwKKwkJCSAibnVsbCBhcmd1bWVudCB0 byBiaW5hcnlfdXBncmFkZV9jcmVhdGVfcmVwbGljYXRpb25fb3JpZ2luIGlzIG5vdCBhbGxvd2Vk Iik7CiAKLQlSZXBsaWNhdGlvblNsb3RSZWxlYXNlKCk7CisJbm9kZV9vaWQgPSBQR19HRVRBUkdf T0lEKDApOworCisJaWYgKG5vZGVfb2lkID09IEludmFsaWRPaWQgfHwgbm9kZV9vaWQgPj0gRG9O b3RSZXBsaWNhdGVJZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygicmVwbGljYXRpb24gb3JpZ2luIElE ICV1IGlzIG91dCBvZiByYW5nZSIsIG5vZGVfb2lkKSk7CisKKwlub2RlID0gKFJlcGxPcmlnaW5J ZCkgbm9kZV9vaWQ7CisKKwlpZiAoU2VhcmNoU3lzQ2FjaGVFeGlzdHMxKFJFUExPUklHSURFTlQs IE9iamVjdElkR2V0RGF0dW0obm9kZSkpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQllcnJtc2coInJlcGxpY2F0aW9uIG9yaWdp biB3aXRoIElEICV1IGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJICAgKE9pZCkgbm9kZSkpOworCisJ b3JpZ2lubmFtZSA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgxKSk7CisKKwkv KgorCSAqIFRvIGF2b2lkIG5lZWRpbmcgYSBUT0FTVCB0YWJsZSBmb3IgcGdfcmVwbGljYXRpb25f b3JpZ2luLCB3ZSBsaW1pdAorCSAqIHJlcGxpY2F0aW9uIG9yaWdpbiBuYW1lcyB0byA1MTIgYnl0 ZXMuICBUaGlzIHNob3VsZCBiZSBtb3JlIHRoYW4gZW5vdWdoCisJICogZm9yIGFsbCBwcmFjdGlj YWwgdXNlLgorCSAqLworCWlmIChzdHJsZW4ob3JpZ2lubmFtZSkgPiBNQVhfUk9OQU1FX0xFTikK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENF RURFRCksCisJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBvcmlnaW4gbmFtZSBpcyB0b28gbG9uZyIp LAorCQkJCWVycmRldGFpbCgiUmVwbGljYXRpb24gb3JpZ2luIG5hbWVzIG11c3QgYmUgbm8gbG9u Z2VyIHRoYW4gJWQgYnl0ZXMuIiwKKwkJCQkJCSAgTUFYX1JPTkFNRV9MRU4pKTsKKworCWlmICgh UEdfQVJHSVNOVUxMKDIpKQorCQlyZW1vdGVfbHNuID0gUEdfR0VUQVJHX0xTTigyKTsKKworCUFz c2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisKKwkvKiBBY3F1aXJlIGFuIGV4Y2x1c2l2ZSBs b2NrIGJlZm9yZSBpbnNlcnRpbmcgdGhlIG5ldyBvcmlnaW4uICovCisJcmVsID0gdGFibGVfb3Bl bihSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIEV4Y2x1c2l2ZUxvY2spOworCisJcmVwbG9y aWdpbl9jcmVhdGVfd2l0aF9pZChub2RlLCBvcmlnaW5uYW1lLCByZW1vdGVfbHNuLCByZWwpOwor CisJdGFibGVfY2xvc2UocmVsLCBFeGNsdXNpdmVMb2NrKTsKIAogCVBHX1JFVFVSTl9WT0lEKCk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwppbmRleCBlYTIyYjA2MDRjMS4uZTE1NzIxNGI5MjYgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwpAQCAtNTE3OSw3ICs1MTc5LDYgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQog CWludAkJCWlfc3Vid2FscmN2dGltZW91dDsKIAlpbnQJCQlpX3N1YnB1YmxpY2F0aW9uczsKIAlp bnQJCQlpX3N1Ym9yaWdpbjsKLQlpbnQJCQlpX3N1Ym9yaWdpbnJlbW90ZWxzbjsKIAlpbnQJCQlp X3N1YmVuYWJsZWQ7CiAJaW50CQkJaV9zdWJmYWlsb3ZlcjsKIAlpbnQJCQlpX3N1YnJldGFpbmRl YWR0dXBsZXM7CkBAIC01MjQ4LDExICs1MjQ3LDkgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZl ICpmb3V0KQogCQkJCQkJICBMT0dJQ0FMUkVQX09SSUdJTl9BTlkpOwogCiAJaWYgKGRvcHQtPmJp bmFyeV91cGdyYWRlICYmIGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKQotCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBvLnJlbW90ZV9sc24gQVMgc3Vib3JpZ2lucmVtb3RlbHNu LFxuIgotCQkJCQkJCSAiIHMuc3ViZW5hYmxlZCxcbiIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIiBzLnN1YmVuYWJsZWQsXG4iKTsKIAllbHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiIE5VTEwgQVMgc3Vib3JpZ2lucmVtb3RlbHNuLFxuIgotCQkJCQkJCSAiIGZh bHNlIEFTIHN1YmVuYWJsZWQsXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIg ZmFsc2UgQVMgc3ViZW5hYmxlZCxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0g MTcwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTUzMzIsNyArNTMyOSw2 IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpX3N1YndhbHJjdnRpbWVvdXQg PSBQUWZudW1iZXIocmVzLCAic3Vid2FscmN2dGltZW91dCIpOwogCWlfc3VicHVibGljYXRpb25z ID0gUFFmbnVtYmVyKHJlcywgInN1YnB1YmxpY2F0aW9ucyIpOwogCWlfc3Vib3JpZ2luID0gUFFm bnVtYmVyKHJlcywgInN1Ym9yaWdpbiIpOwotCWlfc3Vib3JpZ2lucmVtb3RlbHNuID0gUFFmbnVt YmVyKHJlcywgInN1Ym9yaWdpbnJlbW90ZWxzbiIpOwogCiAJc3ViaW5mbyA9IHBnX21hbGxvY19h cnJheShTdWJzY3JpcHRpb25JbmZvLCBudHVwcyk7CiAKQEAgLTUzODUsMTEgKzUzODEsNiBAQCBn ZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCXN1YmluZm9baV0uc3VicHVibGljYXRp b25zID0KIAkJCXBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJwdWJsaWNhdGlvbnMp KTsKIAkJc3ViaW5mb1tpXS5zdWJvcmlnaW4gPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGks IGlfc3Vib3JpZ2luKSk7Ci0JCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfc3Vib3JpZ2lucmVt b3RlbHNuKSkKLQkJCXN1YmluZm9baV0uc3Vib3JpZ2lucmVtb3RlbHNuID0gTlVMTDsKLQkJZWxz ZQotCQkJc3ViaW5mb1tpXS5zdWJvcmlnaW5yZW1vdGVsc24gPQotCQkJCXBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV9zdWJvcmlnaW5yZW1vdGVsc24pKTsKIAogCQkvKiBEZWNpZGUgd2hl dGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVPYmplY3QoJihzdWJp bmZvW2ldLmRvYmopLCBmb3V0KTsKQEAgLTU2NjgsMzcgKzU2NTksMTUgQEAgZHVtcFN1YnNjcmlw dGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCSAq IEluIGJpbmFyeS11cGdyYWRlIG1vZGUsIHdlIGFsbG93IHRoZSByZXBsaWNhdGlvbiB0byBjb250 aW51ZSBhZnRlciB0aGUKIAkgKiB1cGdyYWRlLgogCSAqLwotCWlmIChkb3B0LT5iaW5hcnlfdXBn cmFkZSAmJiBmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKKwlpZiAoZG9wdC0+YmluYXJ5 X3VwZ3JhZGUgJiYgc3ViaW5mby0+c3ViZW5hYmxlZCAmJiBmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE3MDAwMCkKIAl7Ci0JCWlmIChzdWJpbmZvLT5zdWJvcmlnaW5yZW1vdGVsc24pCi0JCXsKLQkJ CS8qCi0JCQkgKiBQcmVzZXJ2ZSB0aGUgcmVtb3RlX2xzbiBmb3IgdGhlIHN1YnNjcmliZXIncyBy ZXBsaWNhdGlvbgotCQkJICogb3JpZ2luLiBUaGlzIHZhbHVlIGlzIHJlcXVpcmVkIHRvIHN0YXJ0 IHRoZSByZXBsaWNhdGlvbiBmcm9tCi0JCQkgKiB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZSB1cGdy YWRlLiBUaGlzIHZhbHVlIHdpbGwgYmUgc3RhbGUgaWYKLQkJCSAqIHRoZSBwdWJsaXNoZXIgZ2V0 cyB1cGdyYWRlZCBiZWZvcmUgdGhlIHN1YnNjcmliZXIgbm9kZS4KLQkJCSAqIEhvd2V2ZXIsIHRo aXMgc2hvdWxkbid0IGJlIGEgcHJvYmxlbSBhcyB0aGUgdXBncmFkZSBvZiB0aGUKLQkJCSAqIHB1 Ymxpc2hlciBlbnN1cmVzIHRoYXQgYWxsIHRoZSB0cmFuc2FjdGlvbnMgd2VyZSByZXBsaWNhdGVk Ci0JCQkgKiBiZWZvcmUgdXBncmFkaW5nIGl0LgotCQkJICovCi0JCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKLQkJCQkJCQkJICJcbi0tIEZvciBiaW5hcnkgdXBncmFkZSwgbXVzdCBwcmVz ZXJ2ZSB0aGUgcmVtb3RlX2xzbiBmb3IgdGhlIHN1YnNjcmliZXIncyByZXBsaWNhdGlvbiBvcmln aW4uXG4iKTsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCQkgIlNFTEVD VCBwZ19jYXRhbG9nLmJpbmFyeV91cGdyYWRlX3JlcGxvcmlnaW5fYWR2YW5jZSgiKTsKLQkJCWFw cGVuZFN0cmluZ0xpdGVyYWxBSChxdWVyeSwgc3ViaW5mby0+ZG9iai5uYW1lLCBmb3V0KTsKLQkJ CWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCAnJXMnKTtcbiIsIHN1YmluZm8tPnN1Ym9yaWdp bnJlbW90ZWxzbik7Ci0JCX0KLQotCQlpZiAoc3ViaW5mby0+c3ViZW5hYmxlZCkKLQkJewotCQkJ LyoKLQkJCSAqIEVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uIHRvIGFsbG93IHRoZSByZXBsaWNhdGlv biB0byBjb250aW51ZQotCQkJICogYWZ0ZXIgdGhlIHVwZ3JhZGUuCi0JCQkgKi8KLQkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCQkgIlxuLS0gRm9yIGJpbmFyeSB1cGdyYWRl LCBtdXN0IHByZXNlcnZlIHRoZSBzdWJzY3JpYmVyJ3MgcnVubmluZyBzdGF0ZS5cbiIpOwotCQkJ YXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFRFUiBTVUJTQ1JJUFRJT04gJXMgRU5BQkxFO1xu IiwgcXN1Ym5hbWUpOwotCQl9CisJCS8qCisJCSAqIEVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uIHRv IGFsbG93IHRoZSByZXBsaWNhdGlvbiB0byBjb250aW51ZQorCQkgKiBhZnRlciB0aGUgdXBncmFk ZS4KKwkJICovCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiXG4tLSBG b3IgYmluYXJ5IHVwZ3JhZGUsIG11c3QgcHJlc2VydmUgdGhlIHN1YnNjcmliZXIncyBydW5uaW5n IHN0YXRlLlxuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgU1VCU0NSSVBU SU9OICVzIEVOQUJMRTtcbiIsIHFzdWJuYW1lKTsKIAl9CiAKIAlpZiAoc3ViaW5mby0+ZG9iai5k dW1wICYgRFVNUF9DT01QT05FTlRfREVGSU5JVElPTikKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDVhNjcyNmQ4 YjEyLi44ZjEyNTJiODU0ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC03MjksNyArNzI5LDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgX1N1YnNjcmlwdGlvbkluZm8KIAljaGFyCSAgICpzdWJ3YWxyY3Z0aW1lb3V0Owog CWNoYXIJICAgKnN1YnB1YmxpY2F0aW9uczsKIAljaGFyCSAgICpzdWJvcmlnaW47Ci0JY2hhcgkg ICAqc3Vib3JpZ2lucmVtb3RlbHNuOwogfSBTdWJzY3JpcHRpb25JbmZvOwogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wYWxsLmMKaW5kZXggYjk2NTNmMGFlZmUuLjcxMWZkNjZiM2Y4IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxs LmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8dW5pc3Rk Lmg+CiAKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2F1dGhpZF9kLmgiCiAjaW5jbHVkZSAiY29tbW9uL2Nvbm5lY3QuaCIKICNpbmNsdWRlICJjb21t b24vZmlsZV9wZXJtLmgiCkBAIC02Nyw2ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGRyb3BEQnMoUEdj b25uICpjb25uKTsKIHN0YXRpYyB2b2lkIGR1bXBVc2VyQ29uZmlnKFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqdXNlcm5hbWUpOwogc3RhdGljIHZvaWQgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNv bm4pOwogc3RhdGljIHZvaWQgZHVtcFRpbWVzdGFtcChjb25zdCBjaGFyICptc2cpOworc3RhdGlj IHZvaWQgZHVtcFJlcGxpY2F0aW9uT3JpZ2lucyhQR2Nvbm4gKmNvbm4pOwogc3RhdGljIGludAly dW5QZ0R1bXAoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjcmVhdGVfb3B0cyk7CiBz dGF0aWMgdm9pZCBidWlsZFNoU2VjTGFiZWxzKFBHY29ubiAqY29ubiwKIAkJCQkJCQkgY29uc3Qg Y2hhciAqY2F0YWxvZ19uYW1lLCBPaWQgb2JqZWN0SWQsCkBAIC02NjMsNiArNjY1LDEzIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCS8qIER1bXAgcm9sZSBHVUMgcHJpdmlsZWdl cyAqLwogCQkJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE1MDAwMCAmJiAhc2tpcF9hY2xzKQogCQkJ CWR1bXBSb2xlR1VDUHJpdnMoY29ubik7CisKKwkJfQorCisJCWlmICghdGFibGVzcGFjZXNfb25s eSAmJiAhcm9sZXNfb25seSAmJiBiaW5hcnlfdXBncmFkZSkKKwkJeworCQkJLyogRHVtcCByZXBs aWNhdGlvbiBvcmlnaW5zICovCisJCQlkdW1wUmVwbGljYXRpb25PcmlnaW5zKGNvbm4pOwogCQl9 CiAKIAkJLyogRHVtcCB0YWJsZXNwYWNlcyAqLwpAQCAtMTgzMiw2ICsxODQxLDY0IEBAIGR1bXBU aW1lc3RhbXAoY29uc3QgY2hhciAqbXNnKQogCQlmcHJpbnRmKE9QRiwgIi0tICVzICVzXG5cbiIs IG1zZywgYnVmKTsKIH0KIAorc3RhdGljIHZvaWQKK2R1bXBSZXBsaWNhdGlvbk9yaWdpbnMoUEdj b25uICpjb25uKQoreworCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJ UEdyZXN1bHQgICAqcmVzOworCWludAkJCWlfcm9pZGVudDsKKwlpbnQJCQlpX3JvbmFtZTsKKwlp bnQJCQlpX3JlbW90ZWxzbjsKKworCS8qIEdldCByZXBsaWNhdGlvbiBvcmlnaW5zIGZyb20gY2F0 YWxvZ3MgKi8KKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWYsCisJCQkJCQkgIlNFTEVDVCBvLios IG9zLnJlbW90ZV9sc24gIgorCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25f b3JpZ2luIG8gIgorCQkJCQkJICJMRUZUIE9VVEVSIEpPSU4gcGdfY2F0YWxvZy5wZ19yZXBsaWNh dGlvbl9vcmlnaW5fc3RhdHVzIG9zIE9OIG8ucm9pZGVudCA9IG9zLmxvY2FsX2lkICIpOworCisJ cmVzID0gZXhlY3V0ZVF1ZXJ5KGNvbm4sIGJ1Zi0+ZGF0YSk7CisKKwlpX3JvaWRlbnQgPSBQUWZu dW1iZXIocmVzLCAicm9pZGVudCIpOworCWlfcm9uYW1lID0gUFFmbnVtYmVyKHJlcywgInJvbmFt ZSIpOworCWlfcmVtb3RlbHNuID0gUFFmbnVtYmVyKHJlcywgInJlbW90ZV9sc24iKTsKKworCWlm IChQUW50dXBsZXMocmVzKSA+IDApCisJCWZwcmludGYoT1BGLCAiLS1cbi0tIFJlcGxpY2F0aW9u IE9yaWdpbnMgXG4tLVxuXG4iKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgUFFudHVwbGVzKHJl cyk7IGkrKykKKwl7CisJCVJlcGxPcmlnaW5JZCByb2lkZW50OworCQljb25zdCBjaGFyICpyb25h bWU7CisKKwkJcm9pZGVudCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9yb2lkZW50KSk7 CisJCXJvbmFtZSA9IFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JvbmFtZSk7CisKKwkJcmVzZXRQUUV4 cEJ1ZmZlcihidWYpOworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIlxuLS0gRm9yIGJp bmFyeSB1cGdyYWRlLCBtdXN0IHByZXNlcnZlIHJlcGxpY2F0aW9uIG9yaWdpbiByb2lkZW50IGFu ZCByZW1vdGVfbHNuXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoYnVmLAorCQkJIlNFTEVDVCBw Z19jYXRhbG9nLmJpbmFyeV91cGdyYWRlX2NyZWF0ZV9yZXBsaWNhdGlvbl9vcmlnaW4oIgorCQkJ IicldSc6OnBnX2NhdGFsb2cub2lkLCAiLCByb2lkZW50KTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJh bENvbm4oYnVmLCByb25hbWUsIGNvbm4pOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWYsICI6 OnBnX2NhdGFsb2cudGV4dCIpOworCisJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBpX3JlbW90 ZWxzbikpCisJCXsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIiwgIik7CisJCQlhcHBl bmRTdHJpbmdMaXRlcmFsQ29ubihidWYsIFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbW90ZWxzbiks IGNvbm4pOworCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmLCAiOjpwZ19jYXRhbG9nLnBnX2xz biIpOworCQl9CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIiwgTlVMTCIp OworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgIik7XG4iKTsKKwkJZnByaW50ZihPUEYs ICIlcyIsIGJ1Zi0+ZGF0YSk7CisJfQorCisJUFFjbGVhcihyZXMpOworCWRlc3Ryb3lQUUV4cEJ1 ZmZlcihidWYpOworfQorCiAvKgogICogcmVhZF9kdW1wYWxsX2ZpbHRlcnMgLSByZXRyaWV2ZSBk YXRhYmFzZSBpZGVudGlmaWVyIHBhdHRlcm5zIGZyb20gZmlsZQogICoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdXBncmFkZS9jaGVjay5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMKaW5k ZXggZjVjOTNlNjExZDIuLjYxM2Y2NGUxZTE1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3Jh ZGUvY2hlY2suYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2suYwpAQCAtMzMsNyArMzMs NyBAQCBzdGF0aWMgdm9pZCBjaGVja19mb3JfbmV3X3RhYmxlc3BhY2VfZGlyKHZvaWQpOwogc3Rh dGljIHZvaWQgY2hlY2tfZm9yX3VzZXJfZGVmaW5lZF9lbmNvZGluZ19jb252ZXJzaW9ucyhDbHVz dGVySW5mbyAqY2x1c3Rlcik7CiBzdGF0aWMgdm9pZCBjaGVja19mb3JfdW5pY29kZV91cGRhdGUo Q2x1c3RlckluZm8gKmNsdXN0ZXIpOwogc3RhdGljIHZvaWQgY2hlY2tfbmV3X2NsdXN0ZXJfcmVw bGljYXRpb25fc2xvdHModm9pZCk7Ci1zdGF0aWMgdm9pZCBjaGVja19uZXdfY2x1c3Rlcl9zdWJz Y3JpcHRpb25fY29uZmlndXJhdGlvbih2b2lkKTsKK3N0YXRpYyB2b2lkIGNoZWNrX25ld19jbHVz dGVyX3JlcGxpY2F0aW9uX29yaWdpbnModm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRfY2x1 c3Rlcl9mb3JfdmFsaWRfc2xvdHModm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRfY2x1c3Rl cl9zdWJzY3JpcHRpb25fc3RhdGUodm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRfY2x1c3Rl cl9nbG9iYWxfbmFtZXMoQ2x1c3RlckluZm8gKmNsdXN0ZXIpOwpAQCAtNjUxLDYgKzY1MSw5IEBA IGNoZWNrX2FuZF9kdW1wX29sZF9jbHVzdGVyKHZvaWQpCiAJCWNoZWNrX29sZF9jbHVzdGVyX3N1 YnNjcmlwdGlvbl9zdGF0ZSgpOwogCX0KIAorCS8qIEdldCByZXBsaWNhdGlvbiBvcmlnaW4gaW5m b3JtYXRpb24gKi8KKwlnZXRfcmVwbGljYXRpb25fb3JpZ2luX2luZm8oJm9sZF9jbHVzdGVyKTsK KwogCWNoZWNrX2Zvcl9kYXRhX3R5cGVzX3VzYWdlKCZvbGRfY2x1c3Rlcik7CiAKIAkvKgpAQCAt Nzk3LDcgKzgwMCw4IEBAIGNoZWNrX25ld19jbHVzdGVyKHZvaWQpCiAKIAljaGVja19uZXdfY2x1 c3Rlcl9yZXBsaWNhdGlvbl9zbG90cygpOwogCi0JY2hlY2tfbmV3X2NsdXN0ZXJfc3Vic2NyaXB0 aW9uX2NvbmZpZ3VyYXRpb24oKTsKKwljaGVja19uZXdfY2x1c3Rlcl9yZXBsaWNhdGlvbl9vcmln aW5zKCk7CisKIH0KIAogCkBAIC0yMzAzLDMxICsyMzA3LDQ1IEBAIGNoZWNrX25ld19jbHVzdGVy X3JlcGxpY2F0aW9uX3Nsb3RzKHZvaWQpCiB9CiAKIC8qCi0gKiBjaGVja19uZXdfY2x1c3Rlcl9z dWJzY3JpcHRpb25fY29uZmlndXJhdGlvbigpCisgKiBjaGVja19uZXdfY2x1c3Rlcl9yZXBsaWNh dGlvbl9vcmlnaW5zKCkKKyAqCisgKiBWZXJpZnkgdGhhdCB0aGUgbmV3IGNsdXN0ZXIgaGFzIG5v IHJlcGxpY2F0aW9uIG9yaWdpbnMuIER1cmluZyB1cGdyYWRlLAorICogcGdfdXBncmFkZSByZXN0 b3JlcyByZXBsaWNhdGlvbiBvcmlnaW5zIGZyb20gdGhlIG9sZCBjbHVzdGVyIHdpdGggdGhlaXIK KyAqIG9yaWdpbmFsIE9JRHMuIElmIHRoZSBuZXcgY2x1c3RlciBhbHJlYWR5IGNvbnRhaW5zIG9y aWdpbnMsIHRob3NlIE9JRHMKKyAqIG1heSBjb2xsaWRlLCBjYXVzaW5nIHRoZSB1cGdyYWRlIHRv IGZhaWwgbWlkLXdheS4KICAqCi0gKiBWZXJpZnkgdGhhdCB0aGUgbWF4X2FjdGl2ZV9yZXBsaWNh dGlvbl9vcmlnaW5zIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkIGlzCi0gKiBlbm91Z2ggZm9yIGNy ZWF0aW5nIHRoZSBzdWJzY3JpcHRpb25zLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSB0aGUK LSAqIHJlcGxpY2F0aW9uIG9yaWdpbiBmb3IgZWFjaCBzdWJzY3JpcHRpb24uCisgKiBBbHNvIHZl cmlmeSB0aGF0IHRoZSBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMgY29uZmlndXJhdGlv biBpcworICogZW5vdWdoIGZvciBjcmVhdGluZyBhbGwgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMu CiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVja19uZXdfY2x1c3Rlcl9zdWJzY3JpcHRpb25fY29uZmln dXJhdGlvbih2b2lkKQorY2hlY2tfbmV3X2NsdXN0ZXJfcmVwbGljYXRpb25fb3JpZ2lucyh2b2lk KQogewotCVBHcmVzdWx0ICAgKnJlczsKIAlQR2Nvbm4JICAgKmNvbm47CisJUEdyZXN1bHQgICAq cmVzOworCWludAkJCW5vcmlnaW5zOwogCWludAkJCW1heF9hY3RpdmVfcmVwbGljYXRpb25fb3Jp Z2luczsKIAotCS8qIFN1YnNjcmlwdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBjYW4gYmUg bWlncmF0ZWQgc2luY2UgUEcxNy4gKi8KLQlpZiAoR0VUX01BSk9SX1ZFUlNJT04ob2xkX2NsdXN0 ZXIubWFqb3JfdmVyc2lvbikgPCAxNzAwKQorCS8qIFF1aWNrIHJldHVybiBpZiB0aGVyZSBhcmUg bm8gcmVwbGljYXRpb24gb3JpZ2lucyB0byBtaWdyYXRlLiAqLworCWlmIChvbGRfY2x1c3Rlci5u cmVwbF9vcmlnaW5zID09IDApCiAJCXJldHVybjsKIAotCS8qIFF1aWNrIHJldHVybiBpZiB0aGVy ZSBhcmUgbm8gc3Vic2NyaXB0aW9ucyB0byBiZSBtaWdyYXRlZC4gKi8KLQlpZiAob2xkX2NsdXN0 ZXIubnN1YnMgPT0gMCkKLQkJcmV0dXJuOwotCi0JcHJlcF9zdGF0dXMoIkNoZWNraW5nIG5ldyBj bHVzdGVyIGNvbmZpZ3VyYXRpb24gZm9yIHN1YnNjcmlwdGlvbnMiKTsKKwlwcmVwX3N0YXR1cygi Q2hlY2tpbmcgcmVwbGljYXRpb24gb3JpZ2lucyBpbiBuZXcgY2x1c3RlciIpOwogCiAJY29ubiA9 IGNvbm5lY3RUb1NlcnZlcigmbmV3X2NsdXN0ZXIsICJ0ZW1wbGF0ZTEiKTsKIAorCXJlcyA9IGV4 ZWN1dGVRdWVyeU9yRGllKGNvbm4sCisJCQkJCQkJIlNFTEVDVCBjb3VudCgqKSAiCisJCQkJCQkJ IkZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9vcmlnaW4iKTsKKworCWlmIChQUW50dXBs ZXMocmVzKSAhPSAxKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNvdW50IHRoZSBudW1iZXIgb2Yg cmVwbGljYXRpb24gb3JpZ2lucyIpOworCisJbm9yaWdpbnMgPSBhdG9pKFBRZ2V0dmFsdWUocmVz LCAwLCAwKSk7CisJUFFjbGVhcihyZXMpOworCisJaWYgKG5vcmlnaW5zID4gMCkKKwkJcGdfZmF0 YWwoImV4cGVjdGVkIDAgcmVwbGljYXRpb24gb3JpZ2lucyBidXQgZm91bmQgJWQiLCBub3JpZ2lu cyk7CisKIAlyZXMgPSBleGVjdXRlUXVlcnlPckRpZShjb25uLCAiU0VMRUNUIHNldHRpbmcgRlJP TSBwZ19zZXR0aW5ncyAiCiAJCQkJCQkJIldIRVJFIG5hbWUgPSAnbWF4X2FjdGl2ZV9yZXBsaWNh dGlvbl9vcmlnaW5zJzsiKTsKIApAQCAtMjMzNSwxMiArMjM1MywxMyBAQCBjaGVja19uZXdfY2x1 c3Rlcl9zdWJzY3JpcHRpb25fY29uZmlndXJhdGlvbih2b2lkKQogCQlwZ19mYXRhbCgiY291bGQg bm90IGRldGVybWluZSBwYXJhbWV0ZXIgc2V0dGluZ3Mgb24gbmV3IGNsdXN0ZXIiKTsKIAogCW1h eF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIDAsIDAp KTsKLQlpZiAob2xkX2NsdXN0ZXIubnN1YnMgPiBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdp bnMpCisJUFFjbGVhcihyZXMpOworCisJaWYgKG9sZF9jbHVzdGVyLm5yZXBsX29yaWdpbnMgPiBt YXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMpCiAJCXBnX2ZhdGFsKCJcIm1heF9hY3RpdmVf cmVwbGljYXRpb25fb3JpZ2luc1wiICglZCkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwg dG8gdGhlIG51bWJlciBvZiAiCi0JCQkJICJzdWJzY3JpcHRpb25zICglZCkgb24gdGhlIG9sZCBj bHVzdGVyIiwKLQkJCQkgbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zLCBvbGRfY2x1c3Rl ci5uc3Vicyk7CisJCQkJICJyZXBsaWNhdGlvbiBvcmlnaW5zICglZCkgb24gdGhlIG9sZCBjbHVz dGVyIiwKKwkJCQkgbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zLCBvbGRfY2x1c3Rlci5u cmVwbF9vcmlnaW5zKTsKIAotCVBRY2xlYXIocmVzKTsKIAlQUWZpbmlzaChjb25uKTsKIAogCWNo ZWNrX29rKCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jIGIvc3JjL2Jp bi9wZ191cGdyYWRlL2luZm8uYwppbmRleCAzN2ZmZjkzODkyZi4uMzZkODU3MGE5ZWYgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9pbmZvLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L2luZm8uYwpAQCAtODMyLDYgKzgzMiwyOSBAQCBjb3VudF9vbGRfY2x1c3Rlcl9sb2dpY2FsX3Ns b3RzKHZvaWQpCiAJcmV0dXJuIHNsb3RfY291bnQ7CiB9CiAKKy8qCisgKiBnZXRfcmVwbGljYXRp b25fb3JpZ2luX2luZm8oKQorICoKKyAqIEdldHMgdGhlIGluZm9ybWF0aW9uIG9mIHJlcGxpY2F0 aW9uIG9yaWdpbnMgaW4gdGhlIGNsdXN0ZXIuCisgKi8KK3ZvaWQKK2dldF9yZXBsaWNhdGlvbl9v cmlnaW5faW5mbyhDbHVzdGVySW5mbyAqY2x1c3RlcikKK3sKKwlQR2Nvbm4JICAgKmNvbm47CisJ UEdyZXN1bHQgICAqcmVzOworCWludAkJCWlfbm9yaWdpbnM7CisKKwljb25uID0gY29ubmVjdFRv U2VydmVyKGNsdXN0ZXIsICJ0ZW1wbGF0ZTEiKTsKKwlyZXMgPSBleGVjdXRlUXVlcnlPckRpZShj b25uLCAiU0VMRUNUIGNvdW50KCopIEFTIG5vcmlnaW5zICIKKwkJCQkJCQkJICAgIkZST00gcGdf Y2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9vcmlnaW4iKTsKKwlpX25vcmlnaW5zID0gUFFmbnVtYmVy KHJlcywgIm5vcmlnaW5zIik7CisKKwljbHVzdGVyLT5ucmVwbF9vcmlnaW5zID0gYXRvaShQUWdl dHZhbHVlKHJlcywgMCwgaV9ub3JpZ2lucykpOworCVBRY2xlYXIocmVzKTsKKworCVBRZmluaXNo KGNvbm4pOworfQorCiAvKgogICogZ2V0X3N1YnNjcmlwdGlvbl9pbmZvKCkKICAqCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaAppbmRleCBjY2QxYWMwZDAxMy4uMWRlYzRjZmZiZmIgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaApAQCAtMzExLDYgKzMxMSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJ bnVtX3RhYmxlc3BhY2VzOwogCWNvbnN0IGNoYXIgKnRhYmxlc3BhY2Vfc3VmZml4OwkvKiBkaXJl Y3Rvcnkgc3BlY2lmaWNhdGlvbiAqLwogCWludAkJCW5zdWJzOwkJCS8qIG51bWJlciBvZiBzdWJz Y3JpcHRpb25zICovCisJaW50CQkJbnJlcGxfb3JpZ2luczsJLyogbnVtYmVyIG9mIHJlcGxpY2F0 aW9uIG9yaWdpbnMgKi8KIAlib29sCQlzdWJfcmV0YWluX2RlYWRfdHVwbGVzOyAvKiB3aGV0aGVy IGEgc3Vic2NyaXB0aW9uIGVuYWJsZXMKIAkJCQkJCQkJCQkgKiByZXRhaW5fZGVhZF90dXBsZXMu ICovCiB9IENsdXN0ZXJJbmZvOwpAQCAtNDUxLDYgKzQ1Miw3IEBAIEZpbGVOYW1lTWFwICpnZW5f ZGJfZmlsZV9tYXBzKERiSW5mbyAqb2xkX2RiLAogdm9pZAkJZ2V0X2RiX3JlbF9hbmRfc2xvdF9p bmZvcyhDbHVzdGVySW5mbyAqY2x1c3Rlcik7CiBpbnQJCQljb3VudF9vbGRfY2x1c3Rlcl9sb2dp Y2FsX3Nsb3RzKHZvaWQpOwogdm9pZAkJZ2V0X3N1YnNjcmlwdGlvbl9pbmZvKENsdXN0ZXJJbmZv ICpjbHVzdGVyKTsKK3ZvaWQJCWdldF9yZXBsaWNhdGlvbl9vcmlnaW5faW5mbyhDbHVzdGVySW5m byAqY2x1c3Rlcik7CiAKIC8qIG9wdGlvbi5jICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dXBncmFkZS90LzAwNF9zdWJzY3JpcHRpb24ucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRf c3Vic2NyaXB0aW9uLnBsCmluZGV4IDY0Njc2N2YyYTY1Li4yZTA3Mjc3ZmVhOSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlvbi5wbAorKysgYi9zcmMvYmlu L3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0aW9uLnBsCkBAIC00Miw3ICs0Miw3IEBAIG15ICRj b25uc3RyID0gJHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKIAogIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMg Q2hlY2sgdGhhdCBwZ191cGdyYWRlIGZhaWxzIHdoZW4gbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9v cmlnaW5zIGNvbmZpZ3VyZWQKLSMgaW4gdGhlIG5ldyBjbHVzdGVyIGlzIGxlc3MgdGhhbiB0aGUg bnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgaW4gdGhlIG9sZAorIyBpbiB0aGUgbmV3IGNsdXN0ZXIg aXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgcmVwbGljYXRpb24gb3JpZ2lucyBpbiB0aGUgb2xk CiAjIGNsdXN0ZXIuCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogIyBJdCBpcyBzdWZmaWNpZW50IHRvIHVzZSBkaXNhYmxlZCBzdWJzY3Jp cHRpb24gdG8gdGVzdCB1cGdyYWRlIGZhaWx1cmUuCkBAIC03NCw3ICs3NCw3IEBAIGNvbW1hbmRf Y2hlY2tzX2FsbCgKIAldLAogCTEsCiAJWwotCQlxci8ibWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9v cmlnaW5zIiBcKDBcKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVy IG9mIHN1YnNjcmlwdGlvbnMgXCgxXCkgb24gdGhlIG9sZCBjbHVzdGVyLworCQlxci8ibWF4X2Fj dGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zIiBcKDBcKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCB0byB0aGUgbnVtYmVyIG9mIHJlcGxpY2F0aW9uIG9yaWdpbnMgXCgxXCkgb24gdGhlIG9s ZCBjbHVzdGVyLwogCV0sCiAJW3FyLy9dLAogCSdydW4gb2YgcGdfdXBncmFkZSB3aGVyZSB0aGUg bmV3IGNsdXN0ZXIgaGFzIGluc3VmZmljaWVudCBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdp bnMnCkBAIC0zMDEsOCArMzAxLDM4IEBAIGlzKCRyZXN1bHQsIHFxKHQpLCAiQ2hlY2sgdGhhdCB0 aGUgdGFibGUgaXMgaW4gaW5pdCBzdGF0ZSIpOwogCiAjIEdldCB0aGUgcmVwbGljYXRpb24gb3Jp Z2luJ3MgcmVtb3RlX2xzbiBvZiB0aGUgb2xkIHN1YnNjcmliZXIKIG15ICRyZW1vdGVfbHNuID0g JG9sZF9zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgcmVtb3RlX2xzbiBGUk9N IHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zdGF0dXMgb3MsIHBnX3N1YnNjcmlwdGlvbiBzIFdIRVJF IG9zLmV4dGVybmFsX2lkID0gJ3BnXycgfHwgcy5vaWQgQU5EIHMuc3VibmFtZSA9ICdyZWdyZXNz X3N1YjQnIgorICAgICJTRUxFQ1Qgb3MucmVtb3RlX2xzbgorICAgICBGUk9NIHBnX3JlcGxpY2F0 aW9uX29yaWdpbl9zdGF0dXMgb3MKKyAgICAgSk9JTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW4gbyBP TiBvLnJvaWRlbnQgPSBvcy5sb2NhbF9pZAorICAgICBKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9O IG8ucm9uYW1lID0gJ3BnXycgfHwgcy5vaWQ6OnRleHQKKyAgICAgV0hFUkUgcy5zdWJuYW1lID0g J3JlZ3Jlc3Nfc3ViNCciCiApOworCisjIEdldCB0aGUgcmVwbGljYXRpb24gb3JpZ2luIGlkcyAo cm9pZGVudCkgZm9yIGFsbCBzdWJzY3JpcHRpb25zLCBrZXllZCBieQorIyBzdWJzY3JpcHRpb24g bmFtZSAod2hpY2ggaXMgc3RhYmxlIGFjcm9zcyB1cGdyYWRlLCB1bmxpa2Ugc3Vib2lkKS4gVGhl c2UKKyMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgdXBncmFkZS4gQSBtaXNtYXRjaCB3b3VsZCBj YXVzZSBzcHVyaW91cworIyB1cGRhdGVfb3JpZ2luX2RpZmZlcnMgY29uZmxpY3RzLgorbXkgJXBy ZV91cGdyYWRlX3JvaWRlbnQ7CitteSAkcm9pZGVudF9yb3dzID0gJG9sZF9zdWItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1Qgcy5zdWJuYW1lLCBvLnJvaWRlbnQKKyAgICAgRlJP TSBwZ19zdWJzY3JpcHRpb24gcworICAgICBKT0lOIHBnX3JlcGxpY2F0aW9uX29yaWdpbiBvIE9O IG8ucm9uYW1lID0gJ3BnXycgfHwgcy5vaWQ6OnRleHQKKyAgICAgT1JERVIgQlkgcy5zdWJuYW1l IgorKTsKK2ZvciBteSAkcm93IChzcGxpdCAvXG4vLCAkcm9pZGVudF9yb3dzKQoreworICAgIG15 ICgkc3VibmFtZSwgJHJvaWRlbnQpID0gc3BsaXQgL1x8LywgJHJvdzsKKyAgICAkcHJlX3VwZ3Jh ZGVfcm9pZGVudHskc3VibmFtZX0gPSAkcm9pZGVudDsKK30KKworIyBDcmVhdGUgYSB1c2VyIGNy ZWF0ZWQgcmVwbGljYXRpb24gb3JpZ2luLCB3aGljaCBzaG91bGQgYWxzbyBiZSBwcmVzZXJ2ZWQg YWZ0ZXIgdXBncmFkZS4KK215ICR1c2VyX29yaWdpbl9uYW1lID0gJ3JlZ3Jlc3NfdXNlcl9vcmln aW4nOworJG9sZF9zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgcGdfcmVw bGljYXRpb25fb3JpZ2luX2NyZWF0ZSgnJHVzZXJfb3JpZ2luX25hbWUnKSIpOworJHByZV91cGdy YWRlX3JvaWRlbnR7JHVzZXJfb3JpZ2luX25hbWV9ID0gJG9sZF9zdWItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorICAgICJTRUxFQ1Qgcm9pZGVudCBGUk9NIHBnX3JlcGxpY2F0aW9uX29yaWdpbiBX SEVSRSByb25hbWUgPSAnJHVzZXJfb3JpZ2luX25hbWUnIgorKTsKKwogIyBIYXZlIHRoZSBzdWJz Y3JpcHRpb24gaW4gZGlzYWJsZWQgc3RhdGUgYmVmb3JlIHVwZ3JhZGUKICRvbGRfc3ViLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3N1YjUgRElTQUJM RSIpOwogCkBAIC0zNzgsNiArNDA4LDI4IEBAIHJlZ3Jlc3Nfc3ViNXxmfGZ8ZiksCiAJImNoZWNr IHRoYXQgdGhlIHN1YnNjcmlwdGlvbidzIHJ1bm5pbmcgc3RhdHVzLCBmYWlsb3ZlciwgYW5kIHJl dGFpbl9kZWFkX3R1cGxlcyBhcmUgcHJlc2VydmVkIgogKTsKIAorIyBWZXJpZnkgdGhhdCB0aGUg c3Vic2NyaXB0aW9uIHJlbGF0ZWQgcmVwbGljYXRpb24gb3JpZ2lucyBhcmUgcHJlc2VydmVkIGFm dGVyIHVwZ3JhZGUuCitteSAkcG9zdF9yb2lkZW50X3Jvd3MgPSAkbmV3X3N1Yi0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisgICAgIlNFTEVDVCBzLnN1Ym5hbWUsIG8ucm9pZGVudAorICAgICBGUk9N IHBnX3N1YnNjcmlwdGlvbiBzCisgICAgIEpPSU4gcGdfcmVwbGljYXRpb25fb3JpZ2luIG8gT04g by5yb25hbWUgPSAncGdfJyB8fCBzLm9pZDo6dGV4dAorICAgICBPUkRFUiBCWSBzLnN1Ym5hbWUi CispOworZm9yIG15ICRyb3cgKHNwbGl0IC9cbi8sICRwb3N0X3JvaWRlbnRfcm93cykKK3sKKyAg ICBteSAoJHN1Ym5hbWUsICRyb2lkZW50KSA9IHNwbGl0IC9cfC8sICRyb3c7CisgICAgaXMoJHJv aWRlbnQsICRwcmVfdXBncmFkZV9yb2lkZW50eyRzdWJuYW1lfSwKKyAgICAgICAgInJvaWRlbnQg cHJlc2VydmVkIGZvciBzdWJzY3JpcHRpb24gJyRzdWJuYW1lJyBhZnRlciB1cGdyYWRlIik7Cit9 CisKKyMgVmVyaWZ5IHRoYXQgdXNlciBjcmVhdGVkIHJlcGxpY2F0aW9uIG9yaWdpbnMgYXJlIHBy ZXNlcnZlZCBhZnRlciB1cGdyYWRlLgorbXkgJHBvc3RfdXNlcl9yb2lkZW50ID0gJG5ld19zdWIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1Qgcm9pZGVudCBGUk9NIHBnX3JlcGxp Y2F0aW9uX29yaWdpbiBXSEVSRSByb25hbWUgPSAnJHVzZXJfb3JpZ2luX25hbWUnIgorKTsKK2lz KCRwb3N0X3VzZXJfcm9pZGVudCwgJHByZV91cGdyYWRlX3JvaWRlbnR7JHVzZXJfb3JpZ2luX25h bWV9LAorICAgICJyb2lkZW50IHByZXNlcnZlZCBmb3IgdXNlci1jcmVhdGVkIG9yaWdpbiAnJHVz ZXJfb3JpZ2luX25hbWUnIGFmdGVyIHVwZ3JhZGUiCispOworCiAjIFN1YnNjcmlwdGlvbiByZWxh dGlvbnMgc2hvdWxkIGJlIHByZXNlcnZlZAogJHJlc3VsdCA9ICRuZXdfc3ViLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkiU0VMRUNUIHNycmVsaWQsIHNyc3Vic3RhdGUgRlJPTSBwZ19zdWJzY3Jp cHRpb25fcmVsIE9SREVSIEJZIHNycmVsaWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IDNhMjg0MDY5ODFkLi4yMTQ2NmQ5MjZmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0x MTk2MCwxMCArMTE5NjAsNiBAQAogICBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ ICd1JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCiAgIHByb2FyZ3R5cGVzID0+ICd0ZXh0IG9pZCBj aGFyIHBnX2xzbicsCiAgIHByb3NyYyA9PiAnYmluYXJ5X3VwZ3JhZGVfYWRkX3N1Yl9yZWxfc3Rh dGUnIH0sCi17IG9pZCA9PiAnNjMyMCcsIGRlc2NyID0+ICdmb3IgdXNlIGJ5IHBnX3VwZ3JhZGUg KHJlbW90ZV9sc24gZm9yIG9yaWdpbiknLAotICBwcm9uYW1lID0+ICdiaW5hcnlfdXBncmFkZV9y ZXBsb3JpZ2luX2FkdmFuY2UnLCBwcm9pc3N0cmljdCA9PiAnZicsCi0gIHByb3ZvbGF0aWxlID0+ ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywKLSAgcHJvYXJn dHlwZXMgPT4gJ3RleHQgcGdfbHNuJywgcHJvc3JjID0+ICdiaW5hcnlfdXBncmFkZV9yZXBsb3Jp Z2luX2FkdmFuY2UnIH0sCiB7IG9pZCA9PiAnNjUwNScsIGRlc2NyID0+ICdmb3IgdXNlIGJ5IHBn X3VwZ3JhZGUgKGNvbmZsaWN0IGRldGVjdGlvbiBzbG90KScsCiAgIHByb25hbWUgPT4gJ2JpbmFy eV91cGdyYWRlX2NyZWF0ZV9jb25mbGljdF9kZXRlY3Rpb25fc2xvdCcsCiAgIHByb2lzc3RyaWN0 ID0+ICdmJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsCkBAIC0xMTk3 Myw2ICsxMTk2OSwxMCBAQAogICBwcm9uYW1lID0+ICdiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9w Z19zdWJzY3JpcHRpb25fb2lkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9wYXJhbGxlbCA9 PiAncicsIHByb3JldHR5cGUgPT4gJ3ZvaWQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJv c3JjID0+ICdiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkJyB9LAor eyBvaWQgPT4gJzkxNjEnLCBkZXNjciA9PiAnZm9yIHVzZSBieSBwZ191cGdyYWRlIChyZXBsaWNh dGlvbiBvcmlnaW4pJywKKyAgcHJvbmFtZSA9PiAnYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX3JlcGxp Y2F0aW9uX29yaWdpbicsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUgPT4gJ3Yn LCBwcm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5cGUgPT4gJ3ZvaWQnLAorICBwcm9hcmd0eXBl cyA9PiAnb2lkIHRleHQgcGdfbHNuJywgcHJvc3JjID0+ICdiaW5hcnlfdXBncmFkZV9jcmVhdGVf cmVwbGljYXRpb25fb3JpZ2luJyB9LAogCiAjIGNvbnZlcnNpb24gZnVuY3Rpb25zCiB7IG9pZCA9 PiAnNDMxMCcsIGRlc2NyID0+ICdpbnRlcm5hbCBjb252ZXJzaW9uIGZ1bmN0aW9uIGZvciBLT0k4 UiB0byBXSU4xMjUxJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdp bi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKaW5kZXggYTY5ZmFmNmVhYWYu LjExZWU2MzBmYjI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4u aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaApAQCAtMTQsNiArMTQsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVh ZGVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yZXBsaWNhdGlvbl9vcmlnaW4uaCIKKyNpbmNs dWRlICJ1dGlscy9yZWxjYWNoZS5oIgogCiB0eXBlZGVmIHN0cnVjdCB4bF9yZXBsb3JpZ2luX3Nl dAogewpAQCAtNTUsNiArNTYsOCBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9hY3RpdmVf cmVwbGljYXRpb25fb3JpZ2luczsKIC8qIEFQSSBmb3IgcXVlcnlpbmcgJiBtYW5pcHVsYXRpbmcg cmVwbGljYXRpb24gb3JpZ2lucyAqLwogZXh0ZXJuIFJlcGxPcmlnaW5JZCByZXBsb3JpZ2luX2J5 X25hbWUoY29uc3QgY2hhciAqcm9uYW1lLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIFJlcGxP cmlnaW5JZCByZXBsb3JpZ2luX2NyZWF0ZShjb25zdCBjaGFyICpyb25hbWUpOworZXh0ZXJuIHZv aWQgcmVwbG9yaWdpbl9jcmVhdGVfd2l0aF9pZChSZXBsT3JpZ2luSWQgcm9pZGVudCwgY29uc3Qg Y2hhciAqcm9uYW1lLAorCQkJCQkJCQkJICBYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFJlbGF0aW9u IHJlbCk7CiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX2Ryb3BfYnlfbmFtZShjb25zdCBjaGFyICpu YW1lLCBib29sIG1pc3Npbmdfb2ssIGJvb2wgbm93YWl0KTsKIGV4dGVybiBib29sIHJlcGxvcmln aW5fYnlfb2lkKFJlcGxPcmlnaW5JZCByb2lkZW50LCBib29sIG1pc3Npbmdfb2ssCiAJCQkJCQkJ ICBjaGFyICoqcm9uYW1lKTsKLS0gCjIuNDcuMwoK --000000000000b95fe50654ea5dd1 Content-Type: application/octet-stream; name="v9-0001-Preserve-subscription-OIDs-during-pg_upgrade.patch" Content-Disposition: attachment; filename="v9-0001-Preserve-subscription-OIDs-during-pg_upgrade.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqkx7y40 RnJvbSA5YWJkMjZlMjFlZDEwYjA4ODlmNTVlMjI5OTUxOWE1NTFmMWU4YmQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBNb24sIDIyIEp1biAyMDI2IDE1OjE4OjU2ICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2OSAxLzJd IFByZXNlcnZlIHN1YnNjcmlwdGlvbiBPSURzIGR1cmluZyBwZ191cGdyYWRlCgpDdXJyZW50bHkg c3Vic2NyaXB0aW9uIE9JRHMgY2FuIGJlIGNoYW5nZWQgd2hlbiBhIGNsdXN0ZXIgaXMgdXBncmFk ZWQKdXNpbmcgcGdfdXBncmFkZS4gVGhpcyBpcyByZXF1aXJlZCBmb3IgYSBzdWJzZXF1ZW50IHBh dGNoIHdoaWNoIHdpbGwKcHJlc2VydmUgdGhlIHJlcGxpY2F0aW9uIG9pZHMgYWZ0ZXIgdXBncmFk ZS4KCkF1dGhvcjogVmlnbmVzaCBDIDx2aWduZXNoMjFAZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8IDI1ICsrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyAgICB8IDEw ICsrKysrKysrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgOCArKysrKysKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgICAgICAgICAgICAg ICB8ICAzICsrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlvbi5wbCAgICAg IHwgIDcgKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2JpbmFyeV91cGdyYWRlLmggICAgICAg ICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAg fCAgNCArKysKIC4uLi9leHBlY3RlZC9zcGdpc3RfbmFtZV9vcHMub3V0ICAgICAgICAgICAgICB8 ICA2ICsrKy0tCiA4IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGVlMDZhNzI2 ZjQyLi41ZmU3NDQwNDE4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YwpAQCAtODMsNiArODMsMTIgQEAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNl dCAqLwogI2RlZmluZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0 cykpCiAKKy8qCisgKiBUaGlzIHdpbGwgYmUgc2V0IGJ5IHRoZSBwZ191cGdyYWRlX3N1cHBvcnQg ZnVuY3Rpb24gLS0KKyAqIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9v aWQoKS4KKyAqLworT2lkCQkJYmluYXJ5X3VwZ3JhZGVfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lk ID0gSW52YWxpZE9pZDsKKwogLyoKICAqIFN0cnVjdHVyZSB0byBob2xkIGEgYml0bWFwIHJlcHJl c2VudGluZyB0aGUgdXNlci1wcm92aWRlZCBDUkVBVEUvQUxURVIKICAqIFNVQlNDUklQVElPTiBj b21tYW5kIG9wdGlvbnMgYW5kIHRoZSBwYXJzZWQvZGVmYXVsdCB2YWx1ZXMgb2YgZWFjaCBvZiB0 aGVtLgpAQCAtODAzLDggKzgwOSwyMyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCW1lbXNldCh2YWx1ZXMsIDAs IHNpemVvZih2YWx1ZXMpKTsKIAltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsK IAotCXN1YmlkID0gR2V0TmV3T2lkV2l0aEluZGV4KHJlbCwgU3Vic2NyaXB0aW9uT2JqZWN0SW5k ZXhJZCwKLQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9vaWQpOworCS8qIFVzZSBiaW5h cnktdXBncmFkZSBvdmVycmlkZSBmb3IgcGdfc3Vic2NyaXB0aW9uLm9pZD8gKi8KKwlpZiAoSXNC aW5hcnlVcGdyYWRlKQorCXsKKwkJaWYgKCFPaWRJc1ZhbGlkKGJpbmFyeV91cGdyYWRlX25leHRf cGdfc3Vic2NyaXB0aW9uX29pZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygicGdfc3Vic2Ny aXB0aW9uIE9JRCB2YWx1ZSBub3Qgc2V0IHdoZW4gaW4gYmluYXJ5IHVwZ3JhZGUgbW9kZSIpKSk7 CisKKwkJc3ViaWQgPSBiaW5hcnlfdXBncmFkZV9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQ7CisJ CWJpbmFyeV91cGdyYWRlX25leHRfcGdfc3Vic2NyaXB0aW9uX29pZCA9IEludmFsaWRPaWQ7CisJ fQorCWVsc2UKKwl7CisJCXN1YmlkID0gR2V0TmV3T2lkV2l0aEluZGV4KHJlbCwgU3Vic2NyaXB0 aW9uT2JqZWN0SW5kZXhJZCwKKwkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fb2lkKTsK Kwl9CisKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fb2lkIC0gMV0gPSBPYmplY3RJZEdl dERhdHVtKHN1YmlkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZGJpZCAtIDFd ID0gT2JqZWN0SWRHZXREYXR1bShNeURhdGFiYXNlSWQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJza2lwbHNuIC0gMV0gPSBMU05HZXREYXR1bShJbnZhbGlkWExvZ1JlY1B0cik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKaW5kZXggYjUwNWE2 YjRmZWUuLjU5YzNlN2YwMTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf dXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVf c3VwcG9ydC5jCkBAIC0xODEsNiArMTgxLDE2IEBAIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3Bn X2F1dGhpZF9vaWQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fVk9JRCgpOwogfQogCitE YXR1bQorYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZChQR19GVU5D VElPTl9BUkdTKQoreworCU9pZAkJCXN1YmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKworCUNIRUNL X0lTX0JJTkFSWV9VUEdSQURFOworCWJpbmFyeV91cGdyYWRlX25leHRfcGdfc3Vic2NyaXB0aW9u X29pZCA9IHN1YmlkOworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKIERhdHVtCiBiaW5hcnlfdXBn cmFkZV9jcmVhdGVfZW1wdHlfZXh0ZW5zaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwppbmRleCBjNTY0MzdkNjA1Ny4uZWEyMmIwNjA0YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNTU4Myw2 ICs1NTgzLDE0IEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2Ny aXB0aW9uSW5mbyAqc3ViaW5mbykKIAlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiRFJPUCBTVUJT Q1JJUFRJT04gJXM7XG4iLAogCQkJCQkgIHFzdWJuYW1lKTsKIAorCWlmIChkb3B0LT5iaW5hcnlf dXBncmFkZSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiXG4tLSBGb3IgYmlu YXJ5IHVwZ3JhZGUsIG11c3QgcHJlc2VydmUgcGdfc3Vic2NyaXB0aW9uLm9pZFxuIik7CisJCWFw cGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cuYmluYXJ5 X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZCgnJXUnOjpwZ19jYXRhbG9nLm9p ZCk7XG5cbiIsCisJCQkJCQkgIHN1YmluZm8tPmRvYmouY2F0SWQub2lkKTsKKwl9CisKIAlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkNSRUFURSBTVUJTQ1JJUFRJT04gJXMgIiwKIAkJCQkJICBx c3VibmFtZSk7CiAJaWYgKHN1YmluZm8tPnN1YnNlcnZlcm5hbWUpCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3Jh ZGUuYwppbmRleCAyMTI3ZDI5N2JmZS4uNGU4NTMwOTY2OTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3Jh ZGUuYwpAQCAtMzUsNiArMzUsOSBAQAogICoKICAqCVdlIGNvbnRyb2wgYWxsIGFzc2lnbm1lbnRz IG9mIHBnX2RhdGFiYXNlLm9pZCBiZWNhdXNlIHdlIHdhbnQgdGhlIGRpcmVjdG9yeQogICoJbmFt ZXMgdG8gbWF0Y2ggYmV0d2VlbiB0aGUgb2xkIGFuZCBuZXcgY2x1c3Rlci4KKyAqCisgKiAgV2Ug Y29udHJvbCBhc3NpZ25tZW50IG9mIHBnX3N1YnNjcmlwdGlvbi5vaWQgYmVjYXVzZSB3ZSB3YW50 IHRoZSBvaWQgdG8KKyAqICBtYXRjaCBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBjbHVzdGVyLgog ICovCiAKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlwdGlv bi5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNF9zdWJzY3JpcHRpb24ucGwKaW5kZXggYzk0 YTgyZGVhZTAuLjY0Njc2N2YyYTY1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8w MDRfc3Vic2NyaXB0aW9uLnBsCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNF9zdWJzY3Jp cHRpb24ucGwKQEAgLTMxMyw2ICszMTMsOSBAQCBteSAkdGFiX3VwZ3JhZGVkMV9vaWQgPSAkb2xk X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiBteSAkdGFiX3VwZ3JhZGVkMl9vaWQgPSAkb2xk X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBX SEVSRSByZWxuYW1lID0gJ3RhYl91cGdyYWRlZDInIik7CiAKKyRzdWJfb2lkID0gJG9sZF9zdWIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgb2lkIEZST00gcGdfc3Vic2NyaXB0aW9u IE9SREVSIEJZIHN1Ym5hbWUiKTsKKwogJG9sZF9zdWItPnN0b3A7CiAKICMgQ2hhbmdlIGNvbmZp Z3VyYXRpb24gc28gdGhhdCBpbml0aWFsIHRhYmxlIHN5bmMgZG9lcyBub3QgZ2V0IHN0YXJ0ZWQK QEAgLTM1OSw2ICszNjIsMTAgQEAgJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAogCiAkbmV3X3N1Yi0+ c3RhcnQ7CiAKKyMgVGhlIHN1YnNjcmlwdGlvbiBvaWQgc2hvdWxkIGJlIHByZXNlcnZlZAorJHJl c3VsdCA9ICRuZXdfc3ViLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBvaWQgRlJPTSBw Z19zdWJzY3JpcHRpb24gT1JERVIgQlkgc3VibmFtZSIpOworaXMoJHJlc3VsdCwgcXEoJHN1Yl9v aWQpLCAic3Vic2NyaXB0aW9uIG9pZCBzaG91bGQgaGF2ZSBiZWVuIHByZXNlcnZlZCIpOworCiAj IFRoZSBzdWJzY3JpcHRpb24ncyBydW5uaW5nIHN0YXR1cywgZmFpbG92ZXIgb3B0aW9uLCBhbmQg cmV0YWluX2RlYWRfdHVwbGVzCiAjIG9wdGlvbiBzaG91bGQgYmUgcHJlc2VydmVkIGluIHRoZSB1 cGdyYWRlZCBpbnN0YW5jZS4gU28gcmVncmVzc19zdWI0IHNob3VsZAogIyBzdGlsbCBoYXZlIHN1 YmVuYWJsZWQsIHN1YmZhaWxvdmVyLCBhbmQgc3VicmV0YWluZGVhZHR1cGxlcyBzZXQgdG8gdHJ1 ZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvYmluYXJ5X3VwZ3JhZGUuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvYmluYXJ5X3VwZ3JhZGUuaAppbmRleCA3YmY3YWU0NDM4NS4uYjE1 YjE4ZTdkYzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvYmluYXJ5X3VwZ3JhZGUu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2JpbmFyeV91cGdyYWRlLmgKQEAgLTMyLDYgKzMy LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFJlbEZpbGVOdW1iZXIgYmluYXJ5X3VwZ3JhZGVfbmV4 dF90b2FzdF9wZ19jbGFzc19yZWxmaWxlbnVtYmUKIAogZXh0ZXJuIFBHRExMSU1QT1JUIE9pZCBi aW5hcnlfdXBncmFkZV9uZXh0X3BnX2VudW1fb2lkOwogZXh0ZXJuIFBHRExMSU1QT1JUIE9pZCBi aW5hcnlfdXBncmFkZV9uZXh0X3BnX2F1dGhpZF9vaWQ7CitleHRlcm4gUEdETExJTVBPUlQgT2lk IGJpbmFyeV91cGdyYWRlX25leHRfcGdfc3Vic2NyaXB0aW9uX29pZDsKIAogZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgYmluYXJ5X3VwZ3JhZGVfcmVjb3JkX2luaXRfcHJpdnM7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CmluZGV4IGJlMTU3YTVmYmU5Li4zYTI4NDA2OTgxZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC0xMTk2OSw2ICsxMTk2OSwxMCBAQAogICBwcm9pc3N0cmljdCA9PiAn ZicsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAogICBwcm9yZXR0eXBl ID0+ICd2b2lkJywgcHJvYXJndHlwZXMgPT4gJycsCiAgIHByb3NyYyA9PiAnYmluYXJ5X3VwZ3Jh ZGVfY3JlYXRlX2NvbmZsaWN0X2RldGVjdGlvbl9zbG90JyB9LAoreyBvaWQgPT4gJzkxNjAnLCBk ZXNjciA9PiAnZm9yIHVzZSBieSBwZ191cGdyYWRlJywKKyAgcHJvbmFtZSA9PiAnYmluYXJ5X3Vw Z3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZCcsIHByb3ZvbGF0aWxlID0+ICd2JywK KyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICd2b2lkJywgcHJvYXJndHlwZXMg PT4gJ29pZCcsCisgIHByb3NyYyA9PiAnYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2Ny aXB0aW9uX29pZCcgfSwKIAogIyBjb252ZXJzaW9uIGZ1bmN0aW9ucwogeyBvaWQgPT4gJzQzMTAn LCBkZXNjciA9PiAnaW50ZXJuYWwgY29udmVyc2lvbiBmdW5jdGlvbiBmb3IgS09JOFIgdG8gV0lO MTI1MScsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3NwZ2lzdF9uYW1lX29wcy9leHBl Y3RlZC9zcGdpc3RfbmFtZV9vcHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFtZV9v cHMvZXhwZWN0ZWQvc3BnaXN0X25hbWVfb3BzLm91dAppbmRleCAxZWU2NWVkZTI0My4uMzlkNDMz NjhjNDIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvc3BnaXN0X25hbWVfb3BzL2V4cGVj dGVkL3NwZ2lzdF9uYW1lX29wcy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFt ZV9vcHMvZXhwZWN0ZWQvc3BnaXN0X25hbWVfb3BzLm91dApAQCAtNTksMTEgKzU5LDEyIEBAIHNl bGVjdCAqIGZyb20gdAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X211bHRpcmFuZ2VfcGdfdHlw ZV9vaWQgICAgICAgfCAgMSB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X211bHRpcmFuZ2VfcGdf dHlwZV9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19hdXRoaWRfb2lkICAgICAgICAg ICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19hdXRoaWRfb2lkCiAgYmlu YXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfZW51bV9vaWQgICAgICAgICAgICAgICAgICB8ICAgIHwg YmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfZW51bV9vaWQKKyBiaW5hcnlfdXBncmFkZV9zZXRf bmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9z ZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdf dGFibGVzcGFjZV9vaWQgICAgICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRf cGdfdGFibGVzcGFjZV9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ190eXBlX29pZCAg ICAgICAgICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ190eXBlX29p ZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3BnX2NsYXNzX29pZCAgICAgICAgICAg fCAgMSB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3BnX2NsYXNzX29pZAogIGJpbmFy eV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3JlbGZpbGVub2RlICAgICAgICAgICAgfCAgICB8IGJp bmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3JlbGZpbGVub2RlCi0oMTMgcm93cykKKygxNCBy b3dzKQogCiAtLSBWZXJpZnkgY2xlYW4gZmFpbHVyZSB3aGVuIElOQ0xVREUnZCBjb2x1bW5zIHJl c3VsdCBpbiBvdmVybGVuZ3RoIHR1cGxlCiAtLSBUaGUgZXJyb3IgbWVzc2FnZSBkZXRhaWxzIGFy ZSBwbGF0Zm9ybS1kZXBlbmRlbnQsIHNvIHNob3cgb25seSBTUUxTVEFURQpAQCAtMTA4LDExICsx MDksMTIgQEAgc2VsZWN0ICogZnJvbSB0CiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfbXVsdGly YW5nZV9wZ190eXBlX29pZCAgICAgICB8ICAxIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfbXVs dGlyYW5nZV9wZ190eXBlX29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX2F1dGhpZF9v aWQgICAgICAgICAgICAgICAgfCAgICB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX2F1dGhp ZF9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19lbnVtX29pZCAgICAgICAgICAgICAg ICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19lbnVtX29pZAorIGJpbmFyeV91 cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQgICAgICAgICAgfCAgICB8IGJpbmFy eV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQKICBiaW5hcnlfdXBncmFkZV9z ZXRfbmV4dF9wZ190YWJsZXNwYWNlX29pZCAgICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFk ZV9zZXRfbmV4dF9wZ190YWJsZXNwYWNlX29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3Bn X3R5cGVfb2lkICAgICAgICAgICAgICAgICAgfCAgICB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0 X3BnX3R5cGVfb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfdG9hc3RfcGdfY2xhc3Nfb2lk ICAgICAgICAgICB8ICAxIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfdG9hc3RfcGdfY2xhc3Nf b2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfdG9hc3RfcmVsZmlsZW5vZGUgICAgICAgICAg ICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfdG9hc3RfcmVsZmlsZW5vZGUKLSgxMyBy b3dzKQorKDE0IHJvd3MpCiAKIFxzZXQgVkVSQk9TSVRZIHNxbHN0YXRlCiBpbnNlcnQgaW50byB0 IHZhbHVlcyhyZXBlYXQoJ3h5enp5JywgMTIpLCA0MiwgcmVwZWF0KCd4eXp6eScsIDQwMDApKTsK LS0gCjIuNDcuMwoK --000000000000b95fe50654ea5dd1--