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 1wUKwR-0015kc-1Q for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Jun 2026 08:57:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wUKwQ-00DmRY-0s for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Jun 2026 08:57:42 +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 1wUKwP-00DmRA-2f for pgsql-hackers@lists.postgresql.org; Tue, 02 Jun 2026 08:57:41 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wUKwM-00000000pEt-29II for pgsql-hackers@lists.postgresql.org; Tue, 02 Jun 2026 08:57:41 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-396775c26f9so21841501fa.3 for ; Tue, 02 Jun 2026 01:57:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780390658; cv=none; d=google.com; s=arc-20240605; b=PVWWdKq+SK64d9e1LqRoyws8ysuMQWmS8j/SCPB3Z0VoCHn4maCnmbj55Zc8nd9znl 0MADZTSkNJFJgk5EcVzHfkM17C0mU2eU2uYK0wo/vq44nPaZ8vKxlOG2YgSwQlTae81p R+BQcnu/GDAt/DjvSHx0Vsfl5ZpqKwWXVeRDvPXS57n7TATEFEr84wf53QkerLvlTu2R J4btqACIfZVBx/XvGzYsUmf6PcJh4nOh6wdEKRtUs2DvuG0lhNINcXpf37Zf9QN58EfS ea1ba+EopE99UrMrDbzAQwWIAma2Ih51su3Jffrh8eGotLCKNgo/XD3/hIjjABn/F5jX fqLQ== 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=QZoAJjC6Kx1XYqsMDFi9aueOZFIn77tyYbSyyL8EA9U=; fh=jRdg4lABB2tnRxoaj6+oxQDQ8trOz+mutvMbxWyncbM=; b=IKokd9OHa326aOKsBNPGB+18FzURKPoZg+5b/QGPdvx1bCyBEtEMf/tjZ/ovJrAzf3 2nfq+kJcmCUb4iP3+fo/Dgw2WEbOv9//vaXdyTqrrlnb416/wFc3AzFj1vttFhCUTwHa /7eB3mcxMrzxKWUUpgbv4EiH+dDg0VMolzlXhSjL75LlWyzlxVNlv0VZWhPRURClim8j r83npanv+k+yWVbUFXPZqPdzB2zkljMW3pC27uJz/cdx9dH0LLcdjllOrfj404HMxhAO XqfcgqyYckMs3JHV0GwkCh7PEN7nXPndTe6GDQ1NhUcO5cE3hcXFThnfNvbu37YojaJ9 IoKQ==; 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=1780390658; x=1780995458; 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=QZoAJjC6Kx1XYqsMDFi9aueOZFIn77tyYbSyyL8EA9U=; b=PNKlZsZpZNfMNm8rJskvXllJ78PF8xAQ1qtReIc0SYMqyOYK4G3kSMnaL9yqfVCaRX OuZv0ZLmJTnDtGPqi6Di5f/nD6b5zvHs1esWv/a9iVmHp7rBpeP3aBDxE2ZZihjQhLJ8 fmzoBfgO6ZUtGHNEcn7QlmiCna/EXnuNxKi9VKpfLizZ8batVbEM66KO6gtVZt3HVe8T NX7rI+PyUrofUrglAybMrIsfQWq2AYR9uUWTDGT2TRJqejIlyqe7Da46yhQJxJoyEdZv WL0bdN396yqYpkO0yfeGHloxPKNIwvl+L8dN5xUtK2vJQgeHrMeCSeJIE6ajjPReXz5u P6nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780390658; x=1780995458; 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=QZoAJjC6Kx1XYqsMDFi9aueOZFIn77tyYbSyyL8EA9U=; b=UnBoWRO4dxsirSYgxfRvddMVKtLRPh0TGUDX437uCAHPDJy8cqqjiXaGOKB4+iRKFt 8YBEUDfDR6q66cCAvBeswNxMLBCjoOzLcImsLNcbIRhQmirQfRfrZFgT5j2f3zBWuTOQ pOrzsn6RboE8axEa+eGRHoTsp6DD74jfA3Pz38Q2QfF9vocPSmPrKP8p0DQ6gMOyE6JT PP2MZ4mXWhJLbqpJkhivFxAasSXJsd89znlHbXZTKeU6IvWNGcI5ahYpv161SMTM92Wj RbHflo8MR9JDpGVlCuF3ixft/eRdcM50p/3EmBZpwvlF+VtrcgkkLzeaytppR4YS4cJY 4cMw== X-Forwarded-Encrypted: i=1; AFNElJ8PyDCfwGgVtK9GsnGL6+uraxUbXBL3rZmeFKIrVLghaZkCqVCcOrgqVVbYsELfbhxx/4T8YYwNsFCf+i3a@lists.postgresql.org X-Gm-Message-State: AOJu0YwDnXXLY04Iwm0f+hggn//CK+N2fENYRGUMMMsj8sgDH59tD7ea Qd5fCj5vofWInwwG1J8d1KElEtynepB7qLQObsyuK+gmoqspStEvpBQfA/Mee9HVF9k7Daget11 QuGJN5P4RnLAOio1ziVG1p8mgywBC3bQQjzx/Uw== X-Gm-Gg: Acq92OHoxiFxZqQPtX3ofinukFslgWfXJDULxCKUlA6yfI+s/9/p7A70GfAJMAH0krE SnhRlypvuJWVmDL4RfYx1oC9NANei7or+2qPOFqp42U6TVIoWr5JdV/bdYZmBs/KoySGR9Gc3eA 1AA74m46XbWRGRAKNKvx9rLnI/mZturyW64kHfOVqo77UuKeUkq5PKLuMj5rbpYU5pJK0uBhNou qi8cBhfr6lM7V5mDzsX3fUTAWgYI5g7pK9PLjZwaMXl7dS2UawDCESm13X1sXKGquW3tXdNCH2+ f4QWBUn3A+e8GF8YWNIyXchAR0tHsYfZ52x5QuVU8Z5sOBpW X-Received: by 2002:a2e:8e22:0:b0:396:800d:ffea with SMTP id 38308e7fff4ca-3969a827c0fmr9352131fa.23.1780390657594; Tue, 02 Jun 2026 01:57:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Tue, 2 Jun 2026 14:27:24 +0530 X-Gm-Features: AVHnY4IChSkqH2nIV_ywik1auNkFxsYxuZzjrI2dhgwL2pF9ISzOU5ihu0hn86A Message-ID: Subject: Re: Support EXCEPT for TABLES IN SCHEMA publications To: Peter Smith Cc: shveta malik , Amit Kapila , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000b53da60653418076" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b53da60653418076 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jun 1, 2026 at 12:59=E2=80=AFPM Peter Smith = wrote: > > Hi Nisha. > > Some review comments for patch v8-0004. > Thanks for the review. > =3D=3D=3D=3D=3D=3D > src/backend/commands/publicationcmds.c > > AlterPublicationSchemaExceptTables: > > 1. > + /* Collect OIDs of the desired new EXCEPT list. */ > + foreach_ptr(PublicationRelInfo, pri, rels) > + { > + newexceptrelids =3D lappend_oid(newexceptrelids, > + RelationGetRelid(pri->relation)); > + } > > Block braces {} not needed. > Fixed. > ~~~ > > 2. > + if (!OidIsValid(proid)) > + continue; /* already gone */ > + > + ObjectAddressSet(obj, PublicationRelRelationId, proid); > + performDeletion(&obj, DROP_CASCADE, 0); > > SUGGESTION > if (OidIsValid(proid)) > { > ObjectAddressSet(obj, PublicationRelRelationId, proid); > performDeletion(&obj, DROP_CASCADE, 0); > } > Fixed. A similar pattern was also used in PublicationDropSchemas(), and I have fixed that as well. > =3D=3D=3D=3D=3D=3D > src/test/subscription/t/037_except.pl > > 3. > I think you had used the SQL exactly as I previously suggested, but I > made a mistake: > It should say "SELECT count(*)" instead of "SELECT a". > > So it returns either 0 or 1 row. > > e.g. #1 > $result =3D > $node_subscriber->safe_psql('postgres', > "SELECT count(*) FROM sch1.tab_excluded WHERE a =3D 7"); > is($result, qq(1), > 'ALTER ... SET TABLES IN SCHEMA EXCEPT: newly included table is repli= cated' > ); > $result =3D > $node_subscriber->safe_psql('postgres', > "SELECT count(*) FROM sch1.tab_published WHERE a =3D 7"); > is($result, qq(0), > 'ALTER ... SET TABLES IN SCHEMA EXCEPT: now-excluded table is not > replicated' > ); > > e.g. #2 > $result =3D > $node_subscriber->safe_psql('postgres', > "SELECT count(*) FROM sch1.tab_published WHERE a =3D 8"); > is($result, qq(1), > 'ALTER ... SET TABLES IN SCHEMA (no EXCEPT): tab_published > replicated after except list cleared' > ); > $result =3D > $node_subscriber->safe_psql('postgres', > "SELECT count(*) FROM sch1.tab_excluded WHERE a =3D 8"); > is($result, qq(1), > 'ALTER ... SET TABLES IN SCHEMA (no EXCEPT): tab_excluded > replicated after except list cleared' > ); > Thanks for pointing that out; I overlooked your earlier suggestion. I've now updated as suggested. Attached is the updated v9 patch set. -- Thanks, Nisha --000000000000b53da60653418076 Content-Type: application/octet-stream; name="v9-0001-Support-EXCEPT-clause-for-schema-level-publicatio.patch" Content-Disposition: attachment; filename="v9-0001-Support-EXCEPT-clause-for-schema-level-publicatio.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpwe2qvo0 RnJvbSBhZWU5ZWQ1NTdjMjMzYWY5MDZhNTU5YzJlMzBhNGFlM2YyOTYwZTY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBNb24sIDQgTWF5IDIwMjYgMTI6NDk6MjcgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5 IDEvM10gU3VwcG9ydCBFWENFUFQgY2xhdXNlIGZvciBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb25z CgpFeHRlbmQgdGFibGUgZXhjbHVzaW9uIHN1cHBvcnQgaW4gcHVibGljYXRpb25zIHRvIGFsbG93 IHNwZWNpZmljCnRhYmxlcyB0byBiZSBleGNsdWRlZCBmcm9tIHNjaGVtYS1sZXZlbCBwdWJsaWNh dGlvbnMgdXNpbmcgYW4KRVhDRVBUIGNsYXVzZSBpbiBDUkVBVEUgUFVCTElDQVRJT04uCgpTdXBw b3J0ZWQgc3ludGF4OgpDUkVBVEUgUFVCTElDQVRJT04gPHB1Yj4gRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcyBFWENFUFQgKFRBQkxFIHQxLC4uLik7Ci0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCAgICAgICB8ICAgMyArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbCAgICB8ICAyMiArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgICAgICAgIHwgMTAyICsrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMgICAgICB8ICA2NSArKysrKysrKy0tCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgIHwgIDUyICsrKysrKystCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgIDMwICsrKystCiBzcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrKwogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAyNCArKystCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgfCAxMDQgKysrKysrKysrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgIHwgIDY5ICsrKysrKysrKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgICAgICAgfCAxMzMgKysrKysrKysrKysr KysrKysrKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDU3OSBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA5ZTc4Njg0ODdk ZS4uMTQzM2QyNjYwZmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAt MTE3LDcgKzExNyw4IEBACiAgICBvciA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJh bD4uIFVubGlrZSB0YWJsZXMsIHNlcXVlbmNlcyBjYW4gYmUKICAgIHN5bmNocm9uaXplZCBhdCBh bnkgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQogICAgPHhyZWYgbGlua2VuZD0ibG9n aWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uIFdoZW4gYSBwdWJsaWNhdGlvbiBpcwotICAg Y3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiwgYSB0YWJsZSBv ciBzZXQgb2YgdGFibGVzIGNhbgorICAgY3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFC TEVTPC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVy YWw+LCBhIHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2FuCiAgICBiZSBleHBsaWNpdGx5IGV4Y2x1 ZGVkIGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCiAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVDwv bGl0ZXJhbD48L2xpbms+CiAgICBjbGF1c2UuCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGlj YXRpb24uc2dtbAppbmRleCBmODJkNjQwZTZjYS4uN2ZhMGJkMTFmN2IgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjgsNyArMjgsNyBAQCBDUkVBVEUgUFVC TElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PgogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRp b25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0KLSAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9 IFssIC4uLiBdCisgICAgVEFCTEVTIElOIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVzX2luX3NjaGVtYTwvcmVwbGFjZWFibGU+IFssIC4uLiBdCiAKIDxwaHJhc2U+ YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0zOSw2ICszOSwxMCBAQCBD UkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPgogCiAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX29i amVjdDwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdCiAKKzxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZXNfaW5fc2NoZW1hPC9y ZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbIEVY Q0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9w aHJhc2U+CiAKICAgICBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf b2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KQEAgLTE0Miw2ICsxNDYsOCBAQCBDUkVBVEUg UFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNhdGlvbiBhcyBvbmUgdGhh dCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KICAgICAgIHRoZSBzcGVjaWZp ZWQgbGlzdCBvZiBzY2hlbWFzLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVy ZS4KKyAgICAgIFRhYmxlcyBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4g Y2xhdXNlIGZvciBhIGdpdmVuIHNjaGVtYQorICAgICAgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1 YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CkBAIC0xNzMsNyArMTc5LDcg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4KICAgICAgPHBhcmE+CiAgICAgICBNYXJrcyB0aGUgcHVibGljYXRpb24g YXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIGluCiAgICAgICB0 aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLiBUYWJs ZXMgbGlzdGVkIGluCi0gICAgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBhcmUg ZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCisgICAgICB0aGUgPGxpdGVyYWw+RVhDRVBU PC9saXRlcmFsPiBjbGF1c2UgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgogICAg ICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTk4LDcg KzIwNCw4IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAg IFRoaXMgY2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZy b20gdGhlCi0gICAgICBwdWJsaWNhdGlvbi4KKyAgICAgIHB1YmxpY2F0aW9uLiBJdCBjYW4gYmUg dXNlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBvcgorICAgICAgPGxp dGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAgICAg IDxwYXJhPgogICAgICAgRm9yIGluaGVyaXRlZCB0YWJsZXMsIGlmIDxsaXRlcmFsPk9OTFk8L2xp dGVyYWw+IGlzIHNwZWNpZmllZCBiZWZvcmUgdGhlCkBAIC01MTUsNiArNTIyLDE1IEBAIENSRUFU RSBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEZPUiBUQUJMRSB1c2VycywgZGVw YXJ0bWVudHMsIFRBQkxFUyBJCiBDUkVBVEUgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRpb24g Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKIDwvcHJvZ3JhbWxpc3Rpbmc+ PC9wYXJhPgogCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNo ZXMgYWxsIGNoYW5nZXMgZm9yIGFsbCB0aGUgdGFibGVzIHByZXNlbnQgaW4KKyAgIHRoZSBzY2hl bWEgPHN0cnVjdG5hbWU+c2FsZXM8L3N0cnVjdG5hbWU+LCBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1l PmludGVybmFsPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+ZHJhZnRzPC9zdHJ1Y3RuYW1l PjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElPTiBzYWxlc19maWx0ZXJlZCBG T1IgVEFCTEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQgKFRBQkxFIGludGVybmFsLCBkcmFmdHMp OworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQ3JlYXRlIGEg cHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgZm9yIHRhYmxlIDxzdHJ1Y3Ru YW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwKICAgIGJ1dCByZXBsaWNhdGVzIG9ubHkgY29sdW1ucyA8 c3RydWN0bmFtZT51c2VyX2lkPC9zdHJ1Y3RuYW1lPiBhbmQKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYwppbmRleCA1YzQ1N2Q5YWNhOC4uMzQzN2E4NzhmNzQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTQ0NCwxMyArNDQ0LDE5IEBAIEdldFB1YlBhcnRpdGlv bk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCwKICAqCiAgKiBOb3RlIHRoYXQgdGhlIGxpc3Qgb2YgYW5jZXN0b3JzIHNob3VsZCBiZSBv cmRlcmVkIHN1Y2ggdGhhdCB0aGUgdG9wbW9zdAogICogYW5jZXN0b3IgaXMgYXQgdGhlIGVuZCBv ZiB0aGUgbGlzdC4KKyAqCisgKiBleGNlcHRfcHViaWRzIGlzIGEgbGlzdCBvZiBwdWJsaWNhdGlv biBPSURzIHdob3NlIHNjaGVtYSBtZW1iZXJzaGlwCisgKiBzaG91bGQgYmUgaWdub3JlZCBmb3Ig dGhlIGFuY2VzdG9yIChiZWNhdXNlIHRoZSBhbmNlc3RvciBpcyBpbiB0aGVpcgorICogRVhDRVBU IGNsYXVzZSkuCiAgKi8KIE9pZAotR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQg cHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwpCitHZXRUb3BNb3N0 QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKKwkJCQkJ CQkJaW50ICphbmNlc3Rvcl9sZXZlbCwgTGlzdCAqZXhjZXB0X3B1YmlkcykKIHsKIAlMaXN0Q2Vs bCAgICpsYzsKIAlPaWQJCQl0b3Btb3N0X3JlbGlkID0gSW52YWxpZE9pZDsKIAlpbnQJCQlsZXZl bCA9IDA7CisJYm9vbAkJY2hlY2tfc2NoZW1hcyA9ICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0X3B1 YmlkcywgcHVib2lkKTsKIAogCS8qCiAJICogRmluZCB0aGUgInRvcG1vc3QiIGFuY2VzdG9yIHRo YXQgaXMgaW4gdGhpcyBwdWJsaWNhdGlvbi4KQEAgLTQ3MCw3ICs0NzYsNyBAQCBHZXRUb3BNb3N0 QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50ICph bmNlc3Rvcl9sZXZlbAogCQkJaWYgKGFuY2VzdG9yX2xldmVsKQogCQkJCSphbmNlc3Rvcl9sZXZl bCA9IGxldmVsOwogCQl9Ci0JCWVsc2UKKwkJZWxzZSBpZiAoY2hlY2tfc2NoZW1hcykKIAkJewog CQkJYXNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFj ZShhbmNlc3RvcikpOwogCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhc2NoZW1hUHViaWRzLCBwdWJv aWQpKQpAQCAtNTQ1LDE4ICs1NTEsMzAgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBw dWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJICogZHVwbGljYXRlcywgaXQncyBoZXJl IGp1c3QgdG8gcHJvdmlkZSBuaWNlciBlcnJvciBtZXNzYWdlIGluIGNvbW1vbgogCSAqIGNhc2Uu IFRoZSByZWFsIHByb3RlY3Rpb24gaXMgdGhlIHVuaXF1ZSBrZXkgb24gdGhlIGNhdGFsb2cuCiAJ ICovCi0JaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0 SWRHZXREYXR1bShyZWxpZCksCi0JCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSkpCisJ dHVwID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLCBPYmplY3RJZEdldERhdHVt KHJlbGlkKSwKKwkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCisJaWYgKEhlYXBU dXBsZUlzVmFsaWQodHVwKSkKIAl7CisJCWJvb2wJCWlzX2V4Y2VwdCA9ICgoRm9ybV9wZ19wdWJs aWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJleGNlcHQ7CisKKwkJUmVsZWFzZVN5c0Nh Y2hlKHR1cCk7CiAJCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkJaWYg KGlmX25vdF9leGlzdHMpCiAJCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CiAKLQkJZXJl cG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAotCQkJ CSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlv biBcIiVzXCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgcHVi LT5uYW1lKSkpOworCQlpZiAoaXNfZXhjZXB0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygidGFibGUgXCIl c1wiIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIGl0IGlzIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRp b24gXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZSh0YXJn ZXRyZWwpLAorCQkJCQkJCXB1Yi0+bmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygi cmVsYXRpb24gXCIlc1wiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uIFwiJXNcIiIs CisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkp OwogCX0KIAogCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwcmkpOwpAQCAtOTgyLDEy ICsxMDAwLDEzIEBAIEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAgKiBHZXRzIGxpc3Qgb2YgdGFibGUgb2lk cyB0aGF0IHdlcmUgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciBhCiAgKiBwdWJs aWNhdGlvbi4KICAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIEFMTCBUQUJMRVMg cHVibGljYXRpb25zLgorICogVGhpcyBpcyB1c2VkIGZvciBGT1IgQUxMIFRBQkxFUyBhbmQgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRpb25zLAorICogYm90aCBvZiB3aGljaCBzdXBwb3J0 IEVYQ0VQVCBUQUJMRS4KICAqLwogTGlzdCAqCiBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVz KE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewotCUFzc2VydChH ZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyk7CisJQXNzZXJ0KEdldFB1YmxpY2F0aW9u KHB1YmlkKS0+YWxsdGFibGVzIHx8IGlzX3NjaGVtYV9wdWJsaWNhdGlvbihwdWJpZCkpOwogCiAJ cmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVl KTsKIH0KQEAgLTEwNDksMTUgKzEwNjgsMTUgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMo T2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAlUYWJsZVNjYW5EZXNj IHNjYW47CiAJSGVhcFR1cGxlCXR1cGxlOwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKLQlMaXN0 CSAgICpleGNlcHRsaXN0ID0gTklMOworCUxpc3QJICAgKmV4Y2VwdF9yZWxpZHMgPSBOSUw7CiAK IAlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgcHVidmlhcm9vdCkpOwog CiAJLyogRVhDRVBUIGZpbHRlcmluZyBhcHBsaWVzIG9ubHkgdG8gcmVsYXRpb25zLCBub3Qgc2Vx dWVuY2VzICovCiAJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikKLQkJZXhjZXB0bGlz dCA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1YnZpYXJvb3QgPwotCQkJ CQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJICBQVUJMSUNB VElPTl9QQVJUX0xFQUYpOworCQlleGNlcHRfcmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlv blRhYmxlcyhwdWJpZCwgcHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BB UlRfUk9PVCA6CisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CiAKIAljbGFz c1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwog CkBAIC0xMDc1LDcgKzEwOTQsNyBAQCBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHVi aWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCiAJCWlmIChpc19wdWJsaXNoYWJs ZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKIAkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24g JiYgcHVidmlhcm9vdCkgJiYKLQkJCSFsaXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQp KQorCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRfcmVsaWRzLCByZWxpZCkpCiAJCQlyZXN1bHQg PSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAl9CiAKQEAgLTEwOTcsNyArMTExNiw3IEBA IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29s IHB1YnZpYXJvb3QpCiAKIAkJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9y bSkgJiYKIAkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYKLQkJCQkhbGlzdF9tZW1iZXJf b2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9yZWxp ZHMsIHJlbGlkKSkKIAkJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJ fQogCkBAIC0xMjMyLDIyICsxMjUxLDY3IEBAIEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25z KE9pZCBzY2hlbWFpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCiAvKgogICog R2V0cyB0aGUgbGlzdCBvZiBhbGwgcmVsYXRpb25zIHB1Ymxpc2hlZCBieSBGT1IgVEFCTEVTIElO IFNDSEVNQQotICogcHVibGljYXRpb24uCisgKiBwdWJsaWNhdGlvbiwgZXhjbHVkaW5nIGFueSB0 YWJsZXMgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlLgogICovCiBMaXN0ICoKIEdldEFsbFNj aGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KQogewogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlMaXN0CSAgICpwdWJzY2hl bWFsaXN0ID0gR2V0UHVibGljYXRpb25TY2hlbWFzKHB1YmlkKTsKKwlMaXN0CSAgICpleGNlcHRf cmVsaWRzID0gTklMOwogCUxpc3RDZWxsICAgKmNlbGw7CiAKKwkvKiBnZXQgdGhlIGxpc3Qgb2Yg dGFibGVzIGV4Y2x1ZGVkIHZpYSBFWENFUFQgVEFCTEUgZm9yIHRoaXMgcHVibGljYXRpb24gKi8K KwlpZiAocHVic2NoZW1hbGlzdCAhPSBOSUwpCisJCWV4Y2VwdF9yZWxpZHMgPSBHZXRFeGNsdWRl ZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBwdWJfcGFydG9wdCk7CisKIAlmb3JlYWNoKGNlbGws IHB1YnNjaGVtYWxpc3QpCiAJewogCQlPaWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQoY2VsbCk7 CiAJCUxpc3QJICAgKnNjaGVtYVJlbHMgPSBOSUw7CiAKIAkJc2NoZW1hUmVscyA9IEdldFNjaGVt YVB1YmxpY2F0aW9uUmVsYXRpb25zKHNjaGVtYWlkLCBwdWJfcGFydG9wdCk7Ci0JCXJlc3VsdCA9 IGxpc3RfY29uY2F0KHJlc3VsdCwgc2NoZW1hUmVscyk7CisKKwkJaWYgKGV4Y2VwdF9yZWxpZHMg IT0gTklMKQorCQl7CisJCQkvKiBmaWx0ZXIgb3V0IGFueSB0YWJsZXMgdGhhdCBhcHBlYXIgaW4g dGhlIEVYQ0VQVCBsaXN0ICovCisJCQlMaXN0Q2VsbCAgICpybGM7CisKKwkJCWZvcmVhY2gocmxj LCBzY2hlbWFSZWxzKQorCQkJeworCQkJCU9pZAkJCXJlbGlkID0gbGZpcnN0X29pZChybGMpOwor CQkJCWJvb2wJCWV4Y2x1ZGVkID0gbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9yZWxpZHMsIHJlbGlk KTsKKworCQkJCS8qCisJCQkJICogQWxzbyBleGNsdWRlIGFueSByZWxhdGlvbiB3aG9zZSBwYXJ0 aXRpb24gYW5jZXN0b3IgaXMgaW4KKwkJCQkgKiB0aGUgRVhDRVBUIGxpc3QuICBUaGlzIG1hdHRl cnMgd2hlbiBwdWJfcGFydG9wdCBpcworCQkJCSAqIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVDogdGhl IGV4Y2VwdCBsaXN0IGhvbGRzIG9ubHkgdGhlIHJvb3QKKwkJCQkgKiBPSUQsIGJ1dCB0aGUgc2No ZW1hIHNjYW4gbWF5IGFsc28gcmV0dXJuIGluZGl2aWR1YWwKKwkJCQkgKiBwYXJ0aXRpb24gcmVs YXRpb25zIHRoYXQgbGl2ZSBpbiB0aGUgc2FtZSBzY2hlbWEuCisJCQkJICovCisJCQkJaWYgKCFl eGNsdWRlZCAmJiBnZXRfcmVsX3JlbGlzcGFydGl0aW9uKHJlbGlkKSkKKwkJCQl7CisJCQkJCUxp c3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKwkJCQkJ TGlzdENlbGwgICAqYWxjOworCisJCQkJCWZvcmVhY2goYWxjLCBhbmNlc3RvcnMpCisJCQkJCXsK KwkJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQoZXhjZXB0X3JlbGlkcywgbGZpcnN0X29pZChhbGMp KSkKKwkJCQkJCXsKKwkJCQkJCQlleGNsdWRlZCA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJ CQl9CisJCQkJCX0KKwkJCQkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7CisJCQkJfQorCisJCQkJaWYg KCFleGNsdWRlZCkKKwkJCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CisJ CQl9CisJCQlsaXN0X2ZyZWUoc2NoZW1hUmVscyk7CisJCX0KKwkJZWxzZQorCQkJcmVzdWx0ID0g bGlzdF9jb25jYXQocmVzdWx0LCBzY2hlbWFSZWxzKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0OwpA QCAtMTM4MSw3ICsxNDQ1LDcgQEAgaXNfdGFibGVfcHVibGlzaGFibGVfaW5fcHVibGljYXRpb24o T2lkIHJlbGlkLCBQdWJsaWNhdGlvbiAqcHViKQogCSAqIHRoZSBwdWJsaWNhdGlvbiwgaXQgc2hv dWxkIGJlIGluY2x1ZGVkIChyZXR1cm4gdHJ1ZSkuCiAJICovCiAJaWYgKHJlbGlzcGFydGl0aW9u ICYmCi0JCU9pZElzVmFsaWQoR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWItPm9p ZCwgYW5jZXN0b3JzLCBOVUxMKSkpCisJCU9pZElzVmFsaWQoR2V0VG9wTW9zdEFuY2VzdG9ySW5Q dWJsaWNhdGlvbihwdWItPm9pZCwgYW5jZXN0b3JzLCBOVUxMLCBOSUwpKSkKIAkJcmV0dXJuICFw dWItPnB1YnZpYXJvb3Q7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YwppbmRleCA0NDBhZGIzNTZhZC4uY2QzOWQ2Mzc1Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCkBAIC0xODEsNyArMTgxLDcgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0 aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAgKi8KIHN0YXRpYyB2b2lkCiBPYmplY3RzSW5QdWJs aWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwK LQkJCQkJCSAgIExpc3QgKipyZWxzLCBMaXN0ICoqZXhjZXB0cmVscywgTGlzdCAqKnNjaGVtYXMp CisJCQkJCQkgICBMaXN0ICoqcmVscywgTGlzdCAqKmV4Y2VwdF9wdWJ0YWJsZXMsIExpc3QgKipz Y2hlbWFzKQogewogCUxpc3RDZWxsICAgKmNlbGw7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJv Ymo7CkBAIC0yMDAsNyArMjAwLDcgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAq cHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXsKIAkJCWNhc2UgUFVCTElD QVRJT05PQkpfRVhDRVBUX1RBQkxFOgogCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IHRy dWU7Ci0JCQkJKmV4Y2VwdHJlbHMgPSBsYXBwZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRh YmxlKTsKKwkJCQkqZXhjZXB0X3B1YnRhYmxlcyA9IGxhcHBlbmQoKmV4Y2VwdF9wdWJ0YWJsZXMs IHB1Ym9iai0+cHVidGFibGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9U QUJMRToKIAkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKQEAgLTMwNSw3ICsz MDUsNyBAQCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlv biByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9u LT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKIAkJcHVibGlzaF9hc19yZWxpZAotCQkJPSBH ZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwpOwor CQkJPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5V TEwsIE5JTCk7CiAKIAkJaWYgKCFPaWRJc1ZhbGlkKHB1Ymxpc2hfYXNfcmVsaWQpKQogCQkJcHVi bGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHB1Yl9jb250YWluc19p bnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3Rv cnMsCiAJICovCiAJaWYgKHB1YnZpYXJvb3QgJiYgcmVsYXRpb24tPnJkX3JlbC0+cmVsaXNwYXJ0 aXRpb24pCiAJewotCQlwdWJsaXNoX2FzX3JlbGlkID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJs aWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMKTsKKwkJcHVibGlzaF9hc19yZWxpZCA9IEdl dFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCwgTklM KTsKIAogCQlpZiAoIU9pZElzVmFsaWQocHVibGlzaF9hc19yZWxpZCkpCiAJCQlwdWJsaXNoX2Fz X3JlbGlkID0gcmVsaWQ7CkBAIC04NDksNyArODQ5LDcgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJY2hhcgkJcHVi bGlzaF9nZW5lcmF0ZWRfY29sdW1uczsKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCUxpc3QJICAg KnJlbGF0aW9ucyA9IE5JTDsKLQlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJTGlz dAkgICAqZXhjZXB0X3B1YnRhYmxlcyA9IE5JTDsKIAlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBO SUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwpAQCAt OTM2LDE2ICs5MzYsMTYgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBD cmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRo IHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5w dWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9u cywgJnNjaGVtYWlkbGlzdCk7CisJCQkJCQkJICAgJmV4Y2VwdF9wdWJ0YWJsZXMsICZzY2hlbWFp ZGxpc3QpOwogCiAJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQogCXsKIAkJLyogUHJvY2VzcyBF WENFUFQgdGFibGUgbGlzdCAqLwotCQlpZiAoZXhjZXB0cmVsYXRpb25zICE9IE5JTCkKKwkJaWYg KGV4Y2VwdF9wdWJ0YWJsZXMgIT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQly ZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRyZWxhdGlvbnMpOworCQkJcmVscyA9IE9wZW5UYWJs ZUxpc3QoZXhjZXB0X3B1YnRhYmxlcyk7CiAJCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQs IHJlbHMsIHRydWUsIE5VTEwpOwogCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CiAJCX0KQEAgLTk1 OSw2ICs5NTksOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0 ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAl9CiAJZWxzZSBpZiAoIXN0bXQtPmZvcl9hbGxfc2Vx dWVuY2VzKQogCXsKKwkJTGlzdAkgICAqZXhwbGljaXRyZWxpZHMgPSBOSUw7CisKIAkJLyogRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCiAJCWlmIChzY2hlbWFpZGxp c3QgIT0gTklMICYmICFzdXBlcnVzZXIoKSkKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC05NzcsNiAr OTc5LDE5IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVi bGljYXRpb25TdG10ICpzdG10KQogCQkJCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKIAkJ CQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIAorCQkJLyoKKwkJCSAqIENv bGxlY3QgZXhwbGljaXQgdGFibGUgT0lEcyBub3csIGJlZm9yZSB3ZSBjbG9zZSB0aGUgcmVsYXRp b24KKwkJCSAqIGxpc3QsIHNvIHRoYXQgZXhjZXB0LXRhYmxlIHZhbGlkYXRpb24gYmVsb3cgY2Fu IGNoZWNrIGZvcgorCQkJICogY29udHJhZGljdGlvbnMgd2l0aG91dCByZWx5aW5nIG9uIGEgY2F0 YWxvZyBzY2FuIHRoYXQgbWlnaHQgbm90CisJCQkgKiB5ZXQgc2VlIHRoZSBqdXN0LWluc2VydGVk IHJvd3MuCisJCQkgKi8KKwkJCWlmIChleGNlcHRfcHVidGFibGVzICE9IE5JTCkKKwkJCXsKKwkJ CQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvblJlbEluZm8sIHByaSwgcmVscykKKwkJCQkJZXhwbGlj aXRyZWxpZHMgPSBsYXBwZW5kX29pZChleHBsaWNpdHJlbGlkcywKKwkJCQkJCQkJCQkJCSBSZWxh dGlvbkdldFJlbGlkKHByaS0+cmVsYXRpb24pKTsKKwkJCX0KKwogCQkJUHVibGljYXRpb25BZGRU YWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKIAkJCUNsb3NlVGFibGVMaXN0KHJlbHMp OwogCQl9CkBAIC05ODksNiArMTAwNCwzNCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCSAqLwogCQkJTG9ja1Nj aGVtYUxpc3Qoc2NoZW1haWRsaXN0KTsKIAkJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQs IHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7CisKKwkJCWlmIChleGNlcHRfcHVidGFibGVzICE9 IE5JTCkKKwkJCXsKKwkJCQlMaXN0CSAgICpleGNlcHRfcmVsczsKKworCQkJCWV4Y2VwdF9yZWxz ID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVidGFibGVzKTsKKworCQkJCS8qCisJCQkJICogVmFs aWRhdGUgdGhhdCBlYWNoIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCBhbHNvIGluIHRoZQorCQkJCSAq IGV4cGxpY2l0IHRhYmxlIGxpc3QgKHdoaWNoIHdvdWxkIGJlIGNvbnRyYWRpY3RvcnkpLiBVc2Ug dGhlCisJCQkJICogaW4tbWVtb3J5IGV4cGxpY2l0cmVsaWRzIGNvbGxlY3RlZCBhYm92ZSByYXRo ZXIgdGhhbgorCQkJCSAqIHJlLXJlYWRpbmcgdGhlIGNhdGFsb2csIHdoaWNoIG1heSBub3QgeWV0 IHNlZSB0aGUKKwkJCQkgKiBqdXN0LWluc2VydGVkIHJvd3MuCisJCQkJICovCisJCQkJZm9yZWFj aF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIGV4Y2VwdF9yZWxzKQorCQkJCXsKKwkJCQkJ T2lkCQkJZXhjZXB0X3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKTsKKwor CQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGV4cGxpY2l0cmVsaWRzLCBleGNlcHRfcmVsaWQpKQor CQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJCQkJZXJybXNnKCJ0YWJsZSBcIiVzXCIgY2Fubm90IGFwcGVh ciBpbiBib3RoIHRoZSB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZSIsCisJCQkJCQkJ CQkgICBSZWxhdGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZShwcmktPnJlbGF0aW9uKSkpOwor CQkJCX0KKworCQkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgZXhjZXB0X3JlbHMsIHRy dWUsIE5VTEwpOworCQkJCUNsb3NlVGFibGVMaXN0KGV4Y2VwdF9yZWxzKTsKKwkJCX0KIAkJfQog CX0KIApAQCAtMTY4MywxMiArMTcyNiwxMiBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJZWxzZQogCXsKIAkJTGlzdAkg ICAqcmVsYXRpb25zID0gTklMOwotCQlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJ CUxpc3QJICAgKmV4Y2VwdF9wdWJ0YWJsZXMgPSBOSUw7CiAJCUxpc3QJICAgKnNjaGVtYWlkbGlz dCA9IE5JTDsKIAkJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkJT2JqZWN0c0luUHVi bGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJ CQkJCQkgICAmZXhjZXB0cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0KTsKKwkJCQkJCQkJICAgJmV4 Y2VwdF9wdWJ0YWJsZXMsICZzY2hlbWFpZGxpc3QpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlv bihzdG10LCB0dXAsIHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIApAQCAtMTcxMSw3ICsxNzU0 LDcgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBl eGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlzdF9j b25jYXQocmVsYXRpb25zLCBleGNlcHRyZWxhdGlvbnMpOworCQlyZWxhdGlvbnMgPSBsaXN0X2Nv bmNhdChyZWxhdGlvbnMsIGV4Y2VwdF9wdWJ0YWJsZXMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFi bGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkg ICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwg dHVwLCBzY2hlbWFpZGxpc3QpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZmY0ZTEzODhjNTUuLjQ1MTRlZjdm OWMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtl ZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VyLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9k YXRldGltZS5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgogCkBAIC0xMTI3Miw3ICsxMTI3Myw3 IEBAIEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlw ZXMgT1dORVIgVE8gUm9sZVNwZWMKICAqIHB1Yl9vYmogaXMgb25lIG9mOgogICoKICAqCQlUQUJM RSB0YWJsZSBbLCAuLi5dCi0gKgkJVEFCTEVTIElOIFNDSEVNQSBzY2hlbWEgWywgLi4uXQorICoJ CVRBQkxFUyBJTiBTQ0hFTUEgc2NoZW1hIFtFWENFUFQgKFRBQkxFIHRhYmxlIFssIC4uLl0gKV0g WywgLi4uXQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtMTEzMzIsMjMgKzExMzMz LDI2IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0g JDM7CiAJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNDsKIAkJCQl9Ci0JCQl8IFRB QkxFUyBJTl9QIFNDSEVNQSBDb2xJZAorCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQgb3B0 X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9u T2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lO X1NDSEVNQTsKIAkJCQkJJCQtPm5hbWUgPSAkNDsKKwkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAk NTsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDQ7CiAJCQkJfQotCQkJfCBUQUJMRVMgSU5fUCBTQ0hF TUEgQ1VSUkVOVF9TQ0hFTUEKKwkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENVUlJFTlRfU0NIRU1B IG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNh dGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxF U19JTl9DVVJfU0NIRU1BOworCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQ1OwogCQkJCQkkJC0+ bG9jYXRpb24gPSBANDsKIAkJCQl9Ci0JCQl8IENvbElkIG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVy ZUNsYXVzZQorCQkJfCBDb2xJZCBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2Ugb3B0X3B1 Yl9leGNlcHRfY2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2Jq U3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9O OworCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQ0OwogCQkJCQkvKgogCQkJCQkgKiBJZiBlaXRo ZXIgYSByb3cgZmlsdGVyIG9yIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCwgY3JlYXRlCiAJCQkJ CSAqIGEgUHVibGljYXRpb25UYWJsZSBvYmplY3QuCkBAIC0xMTM5MiwxMCArMTEzOTYsMTEgQEAg UHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMjsKIAkJ CQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQzOwogCQkJCX0KLQkJCXwgQ1VSUkVOVF9T Q0hFTUEKKwkJCXwgQ1VSUkVOVF9TQ0hFTUEgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJewog CQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0 eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOworCQkJCQkkJC0+ZXhjZXB0X3RhYmxl cyA9ICQyOwogCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQkJOwpAQCAtMjA3ODQs NiArMjA3ODksOCBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9v YmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogLyoKICAqIFByb2Nlc3MgcHVib2Jqc3Bl Y19saXN0IHRvIGNoZWNrIGZvciBlcnJvcnMgaW4gYW55IG9mIHRoZSBvYmplY3RzIGFuZAogICog Y29udmVydCBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT04gaW50byBhcHByb3ByaWF0ZSBQdWJs aWNhdGlvbk9ialNwZWNUeXBlLgorICogQWxzbyBmbGF0dGVucyBleGNlcHRfdGFibGVzIGZyb20g VEFCTEVTIElOIFNDSEVNQSBub2RlcyBpbnRvIHRoZSBsaXN0IHNvCisgKiB0aGF0IE9iamVjdHNJ blB1YmxpY2F0aW9uVG9PaWRzKCkgc2VlcyB0aGVtIGFzIHRvcC1sZXZlbCBFWENFUFRfVEFCTEUg ZW50cmllcy4KICAqLwogc3RhdGljIHZvaWQKIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAq cHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKQEAgLTIwODEyLDYgKzIw ODE5LDEzIEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBj b3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBV QkxJQ0FUSU9OT0JKX1RBQkxFKQogCQl7CisJCQkvKiBFWENFUFQgaXMgbm90IHZhbGlkIGZvciB0 YWJsZSBvYmplY3RzICovCisJCQlpZiAocHVib2JqLT5leGNlcHRfdGFibGVzICE9IE5JTCkKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCQllcnJtc2coIkVYQ0VQVCBpcyBub3QgYWxsb3dlZCBmb3IgVEFCTEUgcHVibGljYXRpb24g b2JqZWN0cyIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsK KwogCQkJLyogcmVsYXRpb24gbmFtZSBvciBwdWJ0YWJsZSBtdXN0IGJlIHNldCBmb3IgdGhpcyB0 eXBlIG9mIG9iamVjdCAqLwogCQkJaWYgKCFwdWJvYmotPm5hbWUgJiYgIXB1Ym9iai0+cHVidGFi bGUpCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTIwODYwLDYgKzIwODc0LDM0IEBAIHByZXByb2Nl c3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nh bm5lcikKIAkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNn KCJpbnZhbGlkIHNjaGVtYSBuYW1lIiksCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2Jq LT5sb2NhdGlvbikpOworCisJCQkvKiBGbGF0dGVuIEVYQ0VQVCBlbnRyaWVzIGludG8gdGhlIHRv cC1sZXZlbCBsaXN0ICovCisJCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvbk9ialNwZWMsIGVvYmos IHB1Ym9iai0+ZXhjZXB0X3RhYmxlcykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFVucXVhbGlmaWVk IG5hbWVzIGFyZSBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBwYXJlbnQKKwkJCQkgKiBz Y2hlbWEuICBRdWFsaWZpZWQgbmFtZXMgbXVzdCBtYXRjaCB0aGUgcGFyZW50IHNjaGVtYSDigJQK KwkJCQkgKiBlYWNoIEVYQ0VQVCBjbGF1c2UgaXMgYm91bmQgdG8gZXhhY3RseSBvbmUgc2NoZW1h LCBzbworCQkJCSAqIGNyb3NzLXNjaGVtYSBlbnRyaWVzIGFyZSByZWplY3RlZCBhdCBwYXJzZSB0 aW1lLgorCQkJCSAqLworCQkJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05P QkpfVEFCTEVTX0lOX1NDSEVNQSkKKwkJCQl7CisJCQkJCWNvbnN0IGNoYXIgKmVvYmpfc2NoZW1h bmFtZSA9IGVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+c2NoZW1hbmFtZTsKKwkJCQkJY29uc3Qg Y2hhciAqZW9ial9yZWxuYW1lID0gZW9iai0+cHVidGFibGUtPnJlbGF0aW9uLT5yZWxuYW1lOwor CisJCQkJCWlmIChlb2JqX3NjaGVtYW5hbWUgPT0gTlVMTCkKKwkJCQkJCWVvYmotPnB1YnRhYmxl LT5yZWxhdGlvbi0+c2NoZW1hbmFtZSA9IHB1Ym9iai0+bmFtZTsKKwkJCQkJZWxzZSBpZiAoc3Ry Y21wKGVvYmpfc2NoZW1hbmFtZSwgcHVib2JqLT5uYW1lKSAhPSAwKQorCQkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVy cm1zZygidGFibGUgXCIlc1wiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNj aGVtYSBcIiVzXCIiLAorCQkJCQkJCQkJICAgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoZW9i al9zY2hlbWFuYW1lLCBlb2JqX3JlbG5hbWUpLAorCQkJCQkJCQkJICAgcHVib2JqLT5uYW1lKSwK KwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGVvYmotPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJ fQorCQkJcHVib2Jqc3BlY19saXN0ID0gbGlzdF9jb25jYXQocHVib2Jqc3BlY19saXN0LCBwdWJv YmotPmV4Y2VwdF90YWJsZXMpOworCQkJcHVib2JqLT5leGNlcHRfdGFibGVzID0gTklMOwogCQl9 CiAKIAkJcHJldm9ianR5cGUgPSBwdWJvYmotPnB1Ym9ianR5cGU7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA0ZWNmY2JmZjdhYi4uN2VlODRlYzFj ODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAt MjA5Nyw2ICsyMDk3LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwg UmVsYXRpb24gcmVsYXRpb24pCiAJCSAqIGFyZSBhYnNvcmJlZCB3aGlsZSBkZWNvZGluZyBXQUwu CiAJCSAqLwogCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMo c2NoZW1hSWQpOworCQlMaXN0CSAgICpleGNlcHRfcHViaWRzOwogCQlMaXN0Q2VsbCAgICpsYzsK IAkJT2lkCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwogCQlpbnQJCQlwdWJsaXNoX2FuY2Vz dG9yX2xldmVsID0gMDsKQEAgLTIxMDQsNiArMjEwNSwyOCBAQCBnZXRfcmVsX3N5bmNfZW50cnko UEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJY2hhcgkJcmVsa2luZCA9 IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CiAJCUxpc3QJICAgKnJlbF9wdWJsaWNhdGlvbnMgPSBO SUw7CiAKKwkJLyoKKwkJICogRm9yIHRoZSBzY2hlbWEgRVhDRVBUIGNoZWNrLCB3ZSBtdXN0IGxv b2sgdXAgdGhlIHRvcC1tb3N0IGFuY2VzdG9yCisJCSAqIHJhdGhlciB0aGFuIHRoZSByZWxhdGlv biBpdHNlbGYuICBjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oKQorCQkgKiBwcmV2ZW50 cyBpbmRpdmlkdWFsIHBhcnRpdGlvbnMgZnJvbSBhcHBlYXJpbmcgaW4gdGhlIEVYQ0VQVCBjbGF1 c2UsCisJCSAqIHNvIG9ubHkgYSByb290IChub24tcGFydGl0aW9uKSB0YWJsZSBjYW4gaGF2ZSBw cmV4Y2VwdCA9IHRydWUuCisJCSAqIFVzaW5nIHRoZSBwYXJ0aXRpb24ncyBvd24gT0lEIHdvdWxk IGFsd2F5cyByZXR1cm4gTklMIGFuZCBtaXNzIHRoZQorCQkgKiBleGNsdXNpb24uCisJCSAqLwor CQlPaWQJCQlyb290X3JlbGlkOworCisJCWlmIChhbV9wYXJ0aXRpb24pCisJCXsKKwkJCUxpc3QJ ICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKworCQkJcm9v dF9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOworCQkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7 CisJCX0KKwkJZWxzZQorCQkJcm9vdF9yZWxpZCA9IHJlbGlkOworCisJCWV4Y2VwdF9wdWJpZHMg PSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKHJvb3RfcmVsaWQpOworCiAJCS8qIFJl bG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICovCiAJCWlmICghcHVibGlj YXRpb25zX3ZhbGlkKQogCQl7CkBAIC0yMjY3LDcgKzIyOTAsOCBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAogCQkJCQlhbmNlc3Rv ciA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViLT5vaWQsCiAJCQkJCQkJCQkJ CQkJCQkgICBhbmNlc3RvcnMsCi0JCQkJCQkJCQkJCQkJCQkgICAmbGV2ZWwpOworCQkJCQkJCQkJ CQkJCQkJICAgJmxldmVsLAorCQkJCQkJCQkJCQkJCQkJICAgZXhjZXB0X3B1Ymlkcyk7CiAKIAkJ CQkJaWYgKGFuY2VzdG9yICE9IEludmFsaWRPaWQpCiAJCQkJCXsKQEAgLTIyODEsNyArMjMwNSw4 IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0 aW9uKQogCQkJCX0KIAogCQkJCWlmIChsaXN0X21lbWJlcl9vaWQocHViaWRzLCBwdWItPm9pZCkg fHwKLQkJCQkJbGlzdF9tZW1iZXJfb2lkKHNjaGVtYVB1YmlkcywgcHViLT5vaWQpIHx8CisJCQkJ CShsaXN0X21lbWJlcl9vaWQoc2NoZW1hUHViaWRzLCBwdWItPm9pZCkgJiYKKwkJCQkJICFsaXN0 X21lbWJlcl9vaWQoZXhjZXB0X3B1YmlkcywgcHViLT5vaWQpKSB8fAogCQkJCQlhbmNlc3Rvcl9w dWJsaXNoZWQpCiAJCQkJCXB1Ymxpc2ggPSB0cnVlOwogCQkJfQpAQCAtMjM2MCw2ICsyMzg1LDcg QEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRp b24pCiAKIAkJbGlzdF9mcmVlKHB1Ymlkcyk7CiAJCWxpc3RfZnJlZShzY2hlbWFQdWJpZHMpOwor CQlsaXN0X2ZyZWUoZXhjZXB0X3B1Ymlkcyk7CiAJCWxpc3RfZnJlZShyZWxfcHVibGljYXRpb25z KTsKIAogCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggZTE0NDk2 NTRmOTYuLmU1YjFhNzBlMDVlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwor KysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNzAzOCw2ICs3MDM4LDI0IEBAIGRlc2Ny aWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJaWYgKCFhZGRGb290ZXJU b1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXMgZnJvbSBzY2hlbWFzOiIpLAogCQkJCQkJ CQkJCQkJdHJ1ZSwgJmNvbnQpKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKworCQkJCWlmIChw c2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEdldCB0YWJs ZXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIHRoaXMgc2NoZW1hCisJCQkJCSAqIHB1YmxpY2F0 aW9uLgorCQkJCQkgKi8KKwkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJCSAg IlNFTEVDVCBjb25jYXQoYy5yZWxuYW1lc3BhY2U6OnJlZ25hbWVzcGFjZSwgJy4nLCBjLnJlbG5h bWUpXG4iCisJCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgorCQkJCQkJ CQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lk ID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCQkJICAiV0hFUkUgcHIucHJwdWJpZCA9ICclcydcbiIK KwkJCQkJCQkJCSAgIiAgQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJCQkgICJPUkRFUiBCWSAx IiwgcHViaWQpOworCQkJCQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8o IkV4Y2VwdCB0YWJsZXM6IiksCisJCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQkJZ290 byBlcnJvcl9yZXR1cm47CisJCQkJfQogCQkJfQogCQl9CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwppbmRleCBkZTU0N2E4Y2IzNy4uZmUxMWRjNjE5YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKQEAgLTEwNjUsNiArMTA2NSwxNSBAQCBzdGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVlcnlf Zm9yX3RyaWdnZXJfb2ZfdGFibGUgPSB7CiAiU0VMRUNUIG5zcG5hbWUgRlJPTSBwZ19jYXRhbG9n LnBnX25hbWVzcGFjZSAiXAogIiBXSEVSRSBuc3BuYW1lIExJS0UgJyVzJyIKIAorI2RlZmluZSBR dWVyeV9mb3JfbGlzdF9vZl90YWJsZXNfaW5fc2NoZW1hIFwKKyJTRUxFQ1Qgbi5uc3BuYW1lIHx8 ICcuJyB8fCBjLnJlbG5hbWUgIlwKKyIgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjICJcCisi ICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFt ZXNwYWNlICJcCisiIFdIRVJFIGMucmVsa2luZCBJTiAoIiBDcHBBc1N0cmluZzIoUkVMS0lORF9S RUxBVElPTikgIiwgIiBcCisJCQkJCQlDcHBBc1N0cmluZzIoUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSkgIikgIlwKKyIgICBBTkQgKG4ubnNwbmFtZSB8fCAnLicgfHwgYy5yZWxuYW1lKSBMSUtF ICclcycgIlwKKyIgICBBTkQgbi5uc3BuYW1lID0gJyVzJyIKKwogLyogVXNlIENPTVBMRVRFX1dJ VEhfUVVFUllfVkVSQkFUSU0gd2l0aCB0aGVzZSBxdWVyaWVzIGZvciBHVUMgbmFtZXM6ICovCiAj ZGVmaW5lIFF1ZXJ5X2Zvcl9saXN0X29mX2FsdGVyX3N5c3RlbV9zZXRfdmFycyBcCiAiU0VMRUNU IHBnX2NhdGFsb2cubG93ZXIobmFtZSkgRlJPTSBwZ19jYXRhbG9nLnBnX3NldHRpbmdzICJcCkBA IC0zNzg3LDggKzM3OTYsMTkgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQs CiAJCUNPTVBMRVRFX1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJ CQkJCQkJCSAiIEFORCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCiAJCQkJCQkJCSAi Q1VSUkVOVF9TQ0hFTUEiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkp ICYmICghZW5kc193aXRoKHByZXZfd2QsICcsJykpKQotCQlDT01QTEVURV9XSVRIKCJXSVRIICgi KTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgo cHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUICggVEFCTEUiLCAiV0lUSCAo Iik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIikpCisJ CUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwg TWF0Y2hBbnksICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSIpOworCWVs c2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwg IlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxF IikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOworCQlDT01QTEVU RV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9zY2hlbWEp OworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAi KCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlD T01QTEVURV9XSVRIKCIpIik7CiAJLyogQ29tcGxldGUgIkNSRUFURSBQVUJMSUNBVElPTiA8bmFt ZT4gWy4uLl0gV0lUSCIgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueU4sICJXSVRIIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgicHVibGlzaCIs ICJwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zIiwgInB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 Iik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggODliNGJiMTRmNjIuLjUz ZTNkN2M2ZjNkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0xOTEsNyAr MTkxLDggQEAgZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0 ICpyZXN1bHQsCiAJCQkJCQkJCQkJCVB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKIAkJ CQkJCQkJCQkJT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJs aWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCi0JCQkJCQkJCQkJCWludCAqYW5j ZXN0b3JfbGV2ZWwpOworCQkJCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsLAorCQkJCQkJCQkJ CQlMaXN0ICpleGNlcHRfcHViaWRzKTsKIAogZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVfcmVs YXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihP aWQgcHViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDkxMzc3YTZjZGUzLi45OGEwM2Mw ZWVkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDQ5Myw2ICs0NDkzLDggQEAgdHlwZWRl ZiBzdHJ1Y3QgUHVibGljYXRpb25PYmpTcGVjCiAJUHVibGljYXRpb25PYmpTcGVjVHlwZSBwdWJv Ymp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGljYXRpb24gb2JqZWN0ICovCiAJY2hhcgkgICAq bmFtZTsKIAlQdWJsaWNhdGlvblRhYmxlICpwdWJ0YWJsZTsKKwlMaXN0CSAgICpleGNlcHRfdGFi bGVzOwkvKiB0YWJsZXMgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIChmb3IKKwkJCQkJ CQkJICogVEFCTEVTIElOIFNDSEVNQSkgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2Vu IGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uT2JqU3BlYzsKIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAyOWU1NGIyMTRh MC4uMDA4YzZjZWJhY2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24u b3V0CkBAIC0yNzAsNiArMjcwLDEyIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZTIgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0CiBFUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ0ZXN0cHViX3RibDEiCiBMSU5FIDE6IC4uLl9mb3Jh bGx0YWJsZXNfZXhjZXB0dGFibGUyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90Yi4u LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIGZhaWwgLSBFWENFUFQgaXMgbm90IGFsbG93ZWQgZm9yIEZPUiBUQUJMRSBw dWJsaWNhdGlvbnMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9lcnIKKyAgICBG T1IgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIgRVhDRVBUIChUQUJMRSB0ZXN0cHVi X3RibDMpOworRVJST1I6ICBFWENFUFQgaXMgbm90IGFsbG93ZWQgZm9yIFRBQkxFIHB1YmxpY2F0 aW9uIG9iamVjdHMKK0xJTkUgMjogICAgIEZPUiBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJf dGJsMiBFWENFUFQgKFRBQkxFIHRlc3RwLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IC0tIFNFVCBBTEwgVEFCTEVTL1NFUVVFTkNFUwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NzAsNyArNDc2LDEwMyBAQCBISU5UOiAgQ2hhbmdlIHRo ZSBwdWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1c2UgdXNpbmcgQUxURVIgUFVCTElDQVRJT04gLi4u IFNFVCBBTAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl9y b290LCB0ZXN0cHViX3BhcnQxLCB0YWJfbWFpbjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7 Ci0tLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIFRB QkxFUyBJTiBTQ0hFTUEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gQ3JlYXRlIHRhYmxl cyBpbiBwdWJfdGVzdCBmb3IgdGhlc2UgdGVzdHMKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl90YmxfczIgKHggaW50IHByaW1hcnkga2V5LCB5IHRleHQpOworLS0gQ3Jl YXRlIHNhbWUtbmFtZWQgdGFibGVzIGluIHB1YmxpYyB0byB2ZXJpZnkgdW5xdWFsaWZpZWQgRVhD RVBUIGVudHJpZXMKKy0tIGFyZSBxdWFsaWZpZWQgd2l0aCB0aGUgbmFtZWQgc2NoZW1hLCBub3Qg cHVibGljCitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9ub3BrIChmb28gaW50LCBiYXIgaW50KTsKK0NS RUFURSBUQUJMRSB0ZXN0cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7Cist LSBCYXNpYzogZXhjbHVkZSBvbmUgdGFibGUgZnJvbSBhIHNjaGVtYSBwdWJsaWNhdGlvbgorQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKyAgICBGT1IgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsK K1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hX2V4 Y2VwdDEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRl ZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUg ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1 Yl90ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisK Ky0tIEV4Y2x1ZGUgbXVsdGlwbGUgdGFibGVzIHVzaW5nIHVucXVhbGlmaWVkIG5hbWVzOyBzYW1l LW5hbWVkIHRhYmxlcyBleGlzdCBpbgorLS0gcHVibGljIHRvIGNvbmZpcm0gdW5xdWFsaWZpZWQg bmFtZXMgcmVzb2x2ZSB0byBwdWJfdGVzdCwgbm90IHB1YmxpYworQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczEpOworXGRScCsgdGVz dHB1Yl9zY2hlbWFfZXhjZXB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMg fCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAg ICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCitF eGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCisgICAgInB1Yl90ZXN0 LnRlc3RwdWJfdGJsX3MxIgorCistLSBmYWlsOiBFWENFUFQgdGFibGUgYmVsb25ncyB0byBhIGRp ZmZlcmVudCBzY2hlbWEKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF93cm9uZ3Nj aGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVi bGljLnRlc3RwdWJfdGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIiBp biBFWENFUFQgY2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEgInB1Yl90ZXN0IgorTElO RSAyOiAgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJs aWMudGVzdHAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gZmFpbDogY3Jvc3Mtc2NoZW1hIEVYQ0VQVCBub3QgYWxsb3dlZDsg ZWFjaCBFWENFUFQgaXMgYm91bmQgdG8gaXRzIGltbWVkaWF0ZSBzY2hlbWEKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9jcm9zc3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0LCBwdWJsaWMgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9z MSwgcHVibGljLnRlc3RwdWJfdGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJfdGVzdC50ZXN0cHVi X3RibF9zMSIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hICJwdWJs aWMiCitMSU5FIDI6IC4uLlIgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgcHVibGljIEVYQ0VQ VCAoVEFCTEUgcHViX3Rlc3QudC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE11bHRpcGxlIHNjaGVtYXMgZWFjaCB3 aXRoIHRoZWlyIG93biBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9z Y2hlbWFfZXhjZXB0X211bHRpCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhD RVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSksCisgICAgICAgICAgICAgICAgICBw dWJsaWMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFf ZXhjZXB0X211bHRpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorICAgICJw dWJsaWMiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKKyAg ICAicHVibGljLnRlc3RwdWJfdGJsMSIKKworLS0gZmFpbDogdGFibGUgYXBwZWFycyBpbiBib3Ro IHRoZSBleHBsaWNpdCB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2NvbmZsaWN0CisgICAgRk9SIFRBQkxFIHB1Yl90ZXN0 LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworRVJST1I6ICB0YWJsZSAicHViX3Rlc3QudGVzdHB1 Yl90YmxfczEiIGNhbm5vdCBhcHBlYXIgaW4gYm90aCB0aGUgdGFibGUgbGlzdCBhbmQgdGhlIEVY Q0VQVCBjbGF1c2UKKy0tIGZhaWw6IG5vbmV4aXN0ZW50IHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub3JlbAorICAgIEZPUiBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFi bGUpOworRVJST1I6ICByZWxhdGlvbiAicHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUiIGRvZXMg bm90IGV4aXN0CistLSBmYWlsOiBwYXJ0aXRpb24gY2Fubm90IGFwcGVhciBpbiBFWENFUFQgY2xh dXNlOyBvbmx5IHJvb3QgdGFibGVzIGFyZSBhbGxvd2VkCitDUkVBVEUgVEFCTEUgcHViX3Rlc3Qu dGVzdHB1Yl9wYXJ0ZWRfcyAoYSBpbnQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKK0NSRUFURSBU QUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyBQQVJUSVRJT04gT0YgcHViX3Rlc3QudGVzdHB1 Yl9wYXJ0ZWRfcyBGT1IgVkFMVUVTIElOICgxKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2V4Y2VwdF9wYXJ0aXRpb24KKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENF UFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNp ZnkgcmVsYXRpb24gInB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zIiBpbiB0aGUgcHVibGljYXRpb24g RVhDRVBUIGNsYXVzZQorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBm b3IgaW5kaXZpZHVhbCBwYXJ0aXRpb25zLgorLS0gZmFpbDogVEFCTEUga2V5d29yZCBpcyByZXF1 aXJlZCBmb3IgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9leGNlcHRfbm9rdworICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9y IG5lYXIgInRlc3RwdWJfbm9wayIKK0xJTkUgMjogICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gQ2xlYW51cAorUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKK0RST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRl c3RwdWJfdGJsX3MyOworRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIENBU0NB REU7CitEUk9QIFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczE7CitEUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRl c3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNF UworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUg U0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdy ZXNzX3B1Yl9zZXExOwogLS0gRk9SIEFMTCBTRVFVRU5DRVMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbAppbmRleCAwNDFlMTRhNGRlNi4uOTE2MmQ0ZDE1YTUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTEyMyw2ICsxMjMsOSBAQCBDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCAoVEFCTAogXGQgdGVzdHB1Yl90YmwxCiAtLSBmYWlsIC0gZmlyc3QgdGFibGUgaW4gdGhlIEVY Q0VQVCBsaXN0IHNob3VsZCB1c2UgVEFCTEUga2V5d29yZAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRl c3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsKKy0tIGZhaWwgLSBFWENFUFQgaXMgbm90IGFsbG93 ZWQgZm9yIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2V4Y2VwdF9lcnIKKyAgICBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIgRVhD RVBUIChUQUJMRSB0ZXN0cHViX3RibDMpOwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIC0tIFNFVCBBTEwgVEFCTEVTL1NFUVVFTkNFUwpAQCAtMjIwLDcg KzIyMyw3MSBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHVi X3Jvb3QsIHRlc3RwdWJfcGFydDEsIHRhYl9tYWluOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi ODsKIAotLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIHRlc3RzIGZv ciBUQUJMRVMgSU4gU0NIRU1BCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKKy0tIENyZWF0ZSB0 YWJsZXMgaW4gcHViX3Rlc3QgZm9yIHRoZXNlIHRlc3RzCitDUkVBVEUgVEFCTEUgcHViX3Rlc3Qu dGVzdHB1Yl90YmxfczEgKGEgaW50IHByaW1hcnkga2V5LCBiIHRleHQpOworQ1JFQVRFIFRBQkxF IHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyICh4IGludCBwcmltYXJ5IGtleSwgeSB0ZXh0KTsKKy0t IENyZWF0ZSBzYW1lLW5hbWVkIHRhYmxlcyBpbiBwdWJsaWMgdG8gdmVyaWZ5IHVucXVhbGlmaWVk IEVYQ0VQVCBlbnRyaWVzCistLSBhcmUgcXVhbGlmaWVkIHdpdGggdGhlIG5hbWVkIHNjaGVtYSwg bm90IHB1YmxpYworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfbm9wayAoZm9vIGludCwgYmFyIGludCk7 CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfczEgKGEgaW50IHByaW1hcnkga2V5LCBiIHRleHQp OworCistLSBCYXNpYzogZXhjbHVkZSBvbmUgdGFibGUgZnJvbSBhIHNjaGVtYSBwdWJsaWNhdGlv bgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKyAgICBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MxKTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKworLS0gRXhjbHVkZSBtdWx0aXBs ZSB0YWJsZXMgdXNpbmcgdW5xdWFsaWZpZWQgbmFtZXM7IHNhbWUtbmFtZWQgdGFibGVzIGV4aXN0 IGluCistLSBwdWJsaWMgdG8gY29uZmlybSB1bnF1YWxpZmllZCBuYW1lcyByZXNvbHZlIHRvIHB1 Yl90ZXN0LCBub3QgcHVibGljCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhj ZXB0MgorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgdGVz dHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHQy CisKKy0tIGZhaWw6IEVYQ0VQVCB0YWJsZSBiZWxvbmdzIHRvIGEgZGlmZmVyZW50IHNjaGVtYQor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X3dyb25nc2NoZW1hCisgICAgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90Ymwx KTsKKworLS0gZmFpbDogY3Jvc3Mtc2NoZW1hIEVYQ0VQVCBub3QgYWxsb3dlZDsgZWFjaCBFWENF UFQgaXMgYm91bmQgdG8gaXRzIGltbWVkaWF0ZSBzY2hlbWEKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2V4Y2VwdF9jcm9zc3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0LCBwdWJsaWMgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHVibGlj LnRlc3RwdWJfdGJsMSk7CisKKy0tIE11bHRpcGxlIHNjaGVtYXMgZWFjaCB3aXRoIHRoZWlyIG93 biBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0 X211bHRpCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBw dWJfdGVzdC50ZXN0cHViX3RibF9zMSksCisgICAgICAgICAgICAgICAgICBwdWJsaWMgRVhDRVBU IChUQUJMRSB0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRp CisKKy0tIGZhaWw6IHRhYmxlIGFwcGVhcnMgaW4gYm90aCB0aGUgZXhwbGljaXQgdGFibGUgbGlz dCBhbmQgdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2Vw dF9jb25mbGljdAorICAgIEZPUiBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx KTsKKworLS0gZmFpbDogbm9uZXhpc3RlbnQgdGFibGUgaW4gRVhDRVBUIGNsYXVzZQorQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X25vcmVsCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSk7CisK Ky0tIGZhaWw6IHBhcnRpdGlvbiBjYW5ub3QgYXBwZWFyIGluIEVYQ0VQVCBjbGF1c2U7IG9ubHkg cm9vdCB0YWJsZXMgYXJlIGFsbG93ZWQKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3Bh cnRlZF9zIChhIGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworQ1JFQVRFIFRBQkxFIHB1Yl90 ZXN0LnRlc3RwdWJfcGFydF9zIFBBUlRJVElPTiBPRiBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9z IEZPUiBWQUxVRVMgSU4gKDEpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X3Bh cnRpdGlvbgorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MpOworCistLSBmYWlsOiBUQUJMRSBrZXl3b3JkIGlzIHJl cXVpcmVkIGZvciB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub2t3CisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vcGspOworCistLSBDbGVhbnVwCitSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHVi X3Rlc3QudGVzdHB1Yl90YmxfczI7CitEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVk X3MgQ0FTQ0FERTsKK0RST1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKK0RS T1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhj ZXB0MiwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpOworCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0 aCBTRVFVRU5DRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHVi X3Rlc3QucmVncmVzc19wdWJfc2VxMTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQu cGwKaW5kZXggOGM1OGQyODJlZWUuLjE4YzdiMmMxZmNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzN19leGNlcHQucGwKQEAgLTI0LDE0ICsyNCwxNyBAQCBteSAkcmVzdWx0OwogCiBzdWIgdGVz dF9leGNlcHRfcm9vdF9wYXJ0aXRpb24KIHsKLQlteSAoJHB1YnZpYXJvb3QpID0gQF87CisJbXkg KCRwdWJ2aWFyb290LCAkcHVic3FsKSA9IEBfOworCSRwdWJzcWwgLy89CisJICAiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJvb3Qx KSI7CisJJHB1YnNxbCAuPSAiIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gJHB1 YnZpYXJvb3QpIjsKIAogCSMgSWYgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgaXMgaW4gdGhl IEVYQ0VQVCBjbGF1c2UsIGFsbCBpdHMKIAkjIHBhcnRpdGlvbnMgYXJlIGV4Y2x1ZGVkIGZyb20g cHVibGljYXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlCiAJIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCBzZXR0aW5nLgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMn LCBxcSgKLQkJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBF WENFUFQgKFRBQkxFIHJvb3QxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICRw dWJ2aWFyb290KTsKKwkJJHB1YnNxbDsKIAkJSU5TRVJUIElOVE8gcm9vdDEgVkFMVUVTICgxKSwg KDEwMSk7CiAJKSk7CiAJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBA IC0yMjMsNiArMjI2LDEzMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiB0ZXN0X2V4 Y2VwdF9yb290X3BhcnRpdGlvbignZmFsc2UnKTsKIHRlc3RfZXhjZXB0X3Jvb3RfcGFydGl0aW9u KCd0cnVlJyk7CiAKKyMgU2FtZSB2YWxpZGF0aW9uIHVzaW5nIFRBQkxFUyBJTiBTQ0hFTUEgaW5z dGVhZCBvZiBGT1IgQUxMIFRBQkxFUy4KK215ICRzY2hlbWFfcHViID0KKyAgIkNSRUFURSBQVUJM SUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljIEVYQ0VQVCAo VEFCTEUgcHVibGljLnJvb3QxKSI7Cit0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbignZmFsc2Un LCAkc2NoZW1hX3B1Yik7Cit0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbigndHJ1ZScsICRzY2hl bWFfcHViKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorIyBFWENFUFQgdGVzdCBjYXNlcyBmb3IgVEFCTEVTIElOIFNDSEVNQQorIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIENyZWF0ZSBhIGRlZGljYXRl ZCBzY2hlbWEgd2l0aCB0d28gdGFibGVzOiBvbmUgdG8gYmUgcHVibGlzaGVkIGFuZCBvbmUgdG8g YmUKKyMgZXhjbHVkZWQuICBBbHNvIGNyZWF0ZSBpbmhlcml0ZWQgdGFibGVzIHRvIHZlcmlmeSBP TkxZIHNlbWFudGljcy4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWJfcHVibGlz aGVkIEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBBUyBhOworCUNSRUFURSBUQUJMRSBz Y2gxLnRhYl9leGNsdWRlZCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsNSkgQVMgYTsKKwlD UkVBVEUgVEFCTEUgc2NoMS5wYXJlbnQgKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5jaGls ZCAoYiBpbnQpIElOSEVSSVRTIChzY2gxLnBhcmVudCk7CispKTsKKworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlD UkVBVEUgVEFCTEUgc2NoMS50YWJfcHVibGlzaGVkIChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNj aDEudGFiX2V4Y2x1ZGVkIChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFyZW50IChhIGlu dCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEuY2hpbGQgKGIgaW50KSBJTkhFUklUUyAoc2NoMS5wYXJl bnQpOworKSk7CisKKyMgQmFzaWMgdGVzdDogaW5pdGlhbCBzeW5jIHJlc3BlY3RzIEVYQ0VQVC4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNB VElPTiBzY2hfcHViIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBzY2gx LnRhYl9leGNsdWRlZCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2NoX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVy X2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNjaF9wdWIiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1YicpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCIpOworaXMoJHJlc3VsdCwgcXEo NSksCisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBpbml0aWFsIHN5bmMgY29waWVzIGluY2x1 ZGVkIHRhYmxlJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIik7Citp cygkcmVzdWx0LCBxcSgwKSwKKwknVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IGluaXRpYWwgc3lu YyBza2lwcyBleGNsdWRlZCB0YWJsZScpOworCisjIERNTDogb25seSB0aGUgaW5jbHVkZWQgdGFi bGUgc2hvdWxkIGJlIHJlcGxpY2F0ZWQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYl9wdWJsaXNoZWQgVkFMVUVTICg2 KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYl9leGNsdWRlZCBWQUxVRVMgKDYpOworKSk7Ciskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQo KikgRlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDYpLAorCSdUQUJM RVMgSU4gU0NIRU1BIEVYQ0VQVDogRE1MIG9uIGluY2x1ZGVkIHRhYmxlIGlzIHJlcGxpY2F0ZWQn KTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfZXhjbHVkZWQiKTsKK2lzKCRyZXN1bHQs IHFxKDApLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogRE1MIG9uIGV4Y2x1ZGVkIHRhYmxl IGlzIG5vdCByZXBsaWNhdGVkJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIElu aGVyaXRlZCB0YWJsZXM6IGV4Y2x1ZGluZyB0aGUgcGFyZW50ICh3aXRob3V0IE9OTFkpIGFsc28g ZXhjbHVkZXMgdGhlIGNoaWxkLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNjaF9wdWIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2No MSBFWENFUFQgKFRBQkxFIHNjaDEucGFyZW50KSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzY2hfc3ViIENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gc2NoX3B1YiIKKyk7Ciskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdz Y2hfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklO U0VSVCBJTlRPIHNjaDEuY2hpbGQgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSw1KSwgZ2VuZXJh dGVfc2VyaWVzKDEsNSkpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn c2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLmNoaWxkIik7CitpcygkcmVzdWx0 LCBxcSgwKSwKKwknVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IGV4Y2x1ZGluZyBwYXJlbnQgKHdp dGhvdXQgT05MWSkgYWxzbyBleGNsdWRlcyBjaGlsZCcKKyk7CisKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2No X3B1YicpOworCisjIFRlc3QgdGhhdCBFWENFUFQgKFRBQkxFIE9OTFkgcGFyZW50KSBleGNsdWRl cyBvbmx5IHRoZSBwYXJlbnQgaXRzZWxmLCBub3QgaXRzCisjIGNoaWxkLiAgVHJ1bmNhdGUgY2hp bGQgZmlyc3Qgc28gcm93cyBmcm9tIHRoZSBwcmV2aW91cyB0ZXN0IGFyZSBub3QgY29waWVkIGJ5 CisjIHRoZSBpbml0aWFsIHRhYmxlIHN5bmMgb2YgdGhlIG5leHQgc3Vic2NyaXB0aW9uLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIHNjaDEuY2hpbGQn KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgc2No MS5jaGlsZCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFBVQkxJQ0FUSU9OIHNjaF9wdWIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSBFWENFUFQg KFRBQkxFIE9OTFkgc2NoMS5wYXJlbnQpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHNjaF9zdWIgQ09OTkVDVElPTiAn JHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBzY2hfcHViIgorKTsKKyRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9z dWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJU IElOVE8gc2NoMS5jaGlsZCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxLDUpLCBnZW5lcmF0ZV9z ZXJpZXMoMSw1KSkiCispOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzY2hf c3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEuY2hpbGQiKTsKK2lzKCRyZXN1bHQsIHFx KDUpLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogT05MWSBwYXJlbnQgaW4gRVhDRVBUIGRv ZXMgbm90IGV4Y2x1ZGUgY2hpbGQnKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CisKKyMg Q2xlYW51cCBzY2hlbWEgdGFibGVzIGJlZm9yZSB0aGUgbXVsdGktcHVibGljYXRpb24gc2VjdGlv bi4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNDSEVNQSBz Y2gxIENBU0NBREUnKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn RFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURFJyk7CisKICMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KICMgVGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNj cmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0aW9ucwogIyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjU0LDYgKzM4Miw3IEBAICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAogCURST1AgUFVCTElDQVRJT04gdGFwX3B1YjI7CiAJVFJVTkNBVEUgdGFi MTsKICkpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNV QlNDUklQVElPTiB0YXBfc3ViJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXEoVFJVTkNBVEUgdGFiMSkpOwogCiAjIE9LIHdoZW4gYSB0YWJsZSBpcyBleGNsdWRl ZCBieSBwdWIxIEVYQ0VQVCBjbGF1c2UsIGJ1dCBpdCBpcyBpbmNsdWRlZCBieSBwdWIyCi0tIAoy LjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000b53da60653418076 Content-Type: application/octet-stream; name="v9-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABLE.patch" Content-Disposition: attachment; filename="v9-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpwe2te01 RnJvbSAxZTgyMWUzMGIyZjAxZWNmMTBjOWYzMTRjY2VjYzc2MmE0YTRjODRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBGcmksIDI5IE1heSAyMDI2IDIwOjA0OjU3ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 OSAyLzNdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBBREQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCB0aGUgRVhDRVBUIGNsYXVzZSBzdXBwb3J0IHRvIGFsbG93IHRh YmxlcyB0byBiZSBleGNsdWRlZCB3aGVuCmFkZGluZyBhIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9u IHZpYSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gQURELgoKU3ludGF4OgogIEFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBBREQgVEFCTEVTIElOIFNDSEVNQSBzIEVYQ0VQVCAoVEFCTEUgcy50MSk7CgpTaW5j ZSBwZ19kdW1wIHVzZXMgQUxURVIgUFVCTElDQVRJT04gLi4uIEFERCwgc3VwcG9ydCBmb3IgaXQg aXMKaW5jbHVkZWQgaW4gdGhpcyBwYXRjaC4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwgICB8ICA0MCArKysrKysrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jICAgICAgfCAgMTkgKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMgICAgfCAxMDcgKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgfCAgMzAgKysrKystCiBzcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICB8ICAyNCArKysrKwogc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgfCAgMTUgKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dCB8ICAzMiArKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwgICAgICB8ICAyMCArKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzdfZXhjZXB0LnBsICAgICB8ICAzMiArKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDMwNCBp bnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1Ymxp Y2F0aW9uLnNnbWwKaW5kZXggYWEzMmJiMTY5ZTkuLjczZjYzNzVhNjZmIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCkBAIC0zMSw3ICszMSw3IEBAIEFMVEVSIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4g UkVOQU1FIFRPIDxyCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAK ICAgICBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVt bnM8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQotICAgIFRBQkxFUyBJTiBTQ0hFTUEgeyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJF TlRfU0NIRU1BIH0gWywgLi4uIF0KKyAgICBUQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZXNfaW5fc2NoZW1hPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0K IAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9u X2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTQ3LDYg KzQ3LDEwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAKICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkg XSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiApIF0KIAorPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlc19pbl9zY2hlbWE8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4g fCBDVVJSRU5UX1NDSEVNQSB9IFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwogPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogICAgIFRBQkxFIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQpAQCAt MTEwLDYgKzExNCwxNCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgPGxpdGVyYWw+QURE IFRBQkxFPC9saXRlcmFsPi4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgVGhlIDxsaXRlcmFs PkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBiZSB1c2VkIHdpdGgKKyAgIDxsaXRlcmFsPkFE RCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBm cm9tIHRoZQorICAgcHVibGljYXRpb24uIFVzaW5nIDxsaXRlcmFsPkRST1AgVEFCTEVTIElOIFND SEVNQTwvbGl0ZXJhbD4gb24gYSBwdWJsaWNhdGlvbgorICAgd2lsbCBhdXRvbWF0aWNhbGx5IGFs c28gcmVtb3ZlIGFueSBhc3NvY2lhdGVkIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KKyAgIGVu dHJpZXMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBmb3VydGggdmFyaWFudCBvZiB0 aGlzIGNvbW1hbmQgbGlzdGVkIGluIHRoZSBzeW5vcHNpcyBjYW4gY2hhbmdlCiAgICBhbGwgb2Yg dGhlIHB1YmxpY2F0aW9uIHByb3BlcnRpZXMgc3BlY2lmaWVkIGluCkBAIC0xOTgsNiArMjEwLDIy IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlz dGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVCAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIFdoZW4gdXNlZCB3aXRoIDxsaXRlcmFsPkFERCBUQUJMRVMgSU4gU0NI RU1BPC9saXRlcmFsPiwgc3BlY2lmaWVzCisgICAgICB0YWJsZXMgdG8gYmUgZXhjbHVkZWQgZnJv bSB0aGUgcHVibGljYXRpb24uICBFYWNoIG5hbWVkCisgICAgICB0YWJsZSBtdXN0IGJlbG9uZyB0 byB0aGUgc2NoZW1hIHNwZWNpZmllZCBpbiB0aGUgc2FtZQorICAgICAgPGxpdGVyYWw+VEFCTEVT IElOIFNDSEVNQTwvbGl0ZXJhbD4gY2xhdXNlLiAgVGFibGUgbmFtZXMgbWF5IGJlCisgICAgICBz Y2hlbWEtcXVhbGlmaWVkIG9yIHVucXVhbGlmaWVkOyB1bnF1YWxpZmllZCBuYW1lcyBhcmUgaW1w bGljaXRseQorICAgICAgcXVhbGlmaWVkIHdpdGggdGhlIHNjaGVtYSBuYW1lZCBpbiB0aGUgc2Ft ZSBjbGF1c2UuICBTZWUKKyAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlv biIvPiBmb3IgZnVydGhlciBkZXRhaWxzIG9uIHRoZQorICAgICAgc2VtYW50aWNzIG9mIDxsaXRl cmFsPkVYQ0VQVDwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+ U0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRl cjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwv cmVwbGFjZWFibGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CkBAIC0yODgsNiArMzE2LDE2IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9u IEFERCBUQUJMRVMgSU4gU0NIRU1BIG1hcmtldGluZywgc2FsZXM7CiA8L3Byb2dyYW1saXN0aW5n PgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBBZGQgc2NoZW1hIDxzdHJ1Y3RuYW1lPnNhbGVz PC9zdHJ1Y3RuYW1lPiB0byB0aGUgcHVibGljYXRpb24KKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzX3B1 YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPiwgZXhjbHVkaW5nIHRoZQorICAgPHN0cnVjdG5hbWU+c2Fs ZXMuaW50ZXJuYWw8L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5hbWU+c2FsZXMuZHJhZnRz PC9zdHJ1Y3RuYW1lPiB0YWJsZXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElP TiBzYWxlc19wdWJsaWNhdGlvbiBBREQgVEFCTEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQgKFRB QkxFIGludGVybmFsLCBkcmFmdHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAg IDxwYXJhPgogICAgQWRkIHRhYmxlcyA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCiAg ICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT4gYW5kIHNjaGVtYQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDM0MzdhODc4Zjc0Li4xNWU0ZWQwZjhmNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtNjQ5LDE1ICs2NDksMTggQEAg cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpw cmksCiAJICogaGVyZSwgYXMgQ3JlYXRlUHVibGljYXRpb24oKSBmdW5jdGlvbiBpbnZhbGlkYXRl cyBhbGwgcmVsYXRpb25zIGFzIHBhcnQKIAkgKiBvZiBkZWZpbmluZyBhIEZPUiBBTEwgVEFCTEVT IHB1YmxpY2F0aW9uLgogCSAqCi0JICogRm9yIEFMVEVSIFBVQkxJQ0FUSU9OLCBpbnZhbGlkYXRp b24gaXMgbmVlZGVkIG9ubHkgd2hlbiBhZGRpbmcgYW4KLQkgKiBFWENFUFQgdGFibGUgdG8gYSBw dWJsaWNhdGlvbiBhbHJlYWR5IG1hcmtlZCBhcyBBTEwgVEFCTEVTLiBGb3IKLQkgKiBwdWJsaWNh dGlvbnMgdGhhdCB3ZXJlIG9yaWdpbmFsbHkgZW1wdHkgb3IgZGVmaW5lZCBhcyBBTEwgU0VRVUVO Q0VTIGFuZAotCSAqIGFyZSBiZWluZyBjb252ZXJ0ZWQgdG8gQUxMIFRBQkxFUywgaW52YWxpZGF0 aW9uIGlzIHNraXBwZWQgaGVyZSwgYXMKLQkgKiBBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3MoKSBm dW5jdGlvbiBpbnZhbGlkYXRlcyBhbGwgcmVsYXRpb25zIHdoaWxlCi0JICogbWFya2luZyB0aGUg cHVibGljYXRpb24gYXMgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KKwkgKiBGb3IgQUxURVIgUFVC TElDQVRJT04sIGludmFsaWRhdGlvbiBpcyBuZWVkZWQgd2hlbiBhZGRpbmcgYW4gRVhDRVBUCisJ ICogdGFibGUgdG8gZWl0aGVyIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24gKHB1Yi0+YWxs dGFibGVzIGlzIHRydWUpCisJICogb3IgYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlv biAoaXNfc2NoZW1hX3B1YmxpY2F0aW9uIGlzIHRydWUpLgorCSAqIFRoZSBleGNlcHRpb246IHdo ZW4gYSBwdWJsaWNhdGlvbiBpcyBiZWluZyBjb252ZXJ0ZWQgdG8gRk9SIEFMTCBUQUJMRVMKKwkg KiAocHViLT5hbGx0YWJsZXMgaXMgc3RpbGwgZmFsc2UgYXQgdGhpcyBwb2ludCksCisJICogQWx0 ZXJQdWJsaWNhdGlvbkFsbEZsYWdzKCkgd2lsbCBwZXJmb3JtIGEgZnVsbCBpbnZhbGlkYXRpb24s IHNvIHdlCisJICogc2tpcCBpdCBoZXJlLgogCSAqLwotCWludmFsX2V4Y2VwdF90YWJsZSA9IChh bHRlcl9zdG10ICE9IE5VTEwpICYmIHB1Yi0+YWxsdGFibGVzICYmCi0JCShhbHRlcl9zdG10LT5m b3JfYWxsX3RhYmxlcyAmJiBwcmktPmV4Y2VwdCk7CisJaW52YWxfZXhjZXB0X3RhYmxlID0gKGFs dGVyX3N0bXQgIT0gTlVMTCkgJiYgcHJpLT5leGNlcHQgJiYKKwkJKHB1Yi0+YWxsdGFibGVzCisJ CSA/IGFsdGVyX3N0bXQtPmZvcl9hbGxfdGFibGVzCisJCSA6IGlzX3NjaGVtYV9wdWJsaWNhdGlv bihwdWJpZCkpOwogCiAJaWYgKCFwcmktPmV4Y2VwdCB8fCBpbnZhbF9leGNlcHRfdGFibGUpCiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCBjZDM5ZDYzNzVjZC4u MDk2NjM1NzkwNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC03 MCw2ICs3MCwxMyBAQCBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1Ymlk LCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25B ZGRTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3RzLAog CQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIFB1Ymxp Y2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdf b2spOworc3RhdGljIHZvaWQgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsCisJCQkJCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFpZGxpc3Qs CisJCQkJCQkJCQlMaXN0ICpleGNlcHRfcHVidGFibGVzKTsKK3N0YXRpYyB2b2lkIEFsdGVyUHVi bGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCisJ CQkJCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsCisJCQkJCQkJCQkJCSAgIExpc3QgKmV4Y2VwdF9w dWJ0YWJsZXMsCisJCQkJCQkJCQkJCSAgIExpc3QgKnNjaGVtYWlkbGlzdCk7CiBzdGF0aWMgY2hh ciBkZWZHZXRHZW5lcmF0ZWRDb2xzT3B0aW9uKERlZkVsZW0gKmRlZik7CiAKIApAQCAtMTQ2OCw3 ICsxNDc1LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwgSGVhcFR1cGxlIHR1cCwKICAqLwogc3RhdGljIHZvaWQKIEFsdGVyUHVibGljYXRpb25T Y2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAotCQkJCQkJSGVhcFR1cGxlIHR1cCwg TGlzdCAqc2NoZW1haWRsaXN0KQorCQkJCQkJSGVhcFR1cGxlIHR1cCwgTGlzdCAqc2NoZW1haWRs aXN0LAorCQkJCQkJTGlzdCAqZXhjZXB0X3B1YnRhYmxlcykKIHsKIAlGb3JtX3BnX3B1YmxpY2F0 aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CiAKQEAg LTE1NDUsNiArMTU1Myw5NyBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwKIAkJICovCiAJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJmb3JtLT5v aWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgc3RtdCk7CiAJfQorCisJLyoKKwkgKiBJbmNyZW1lbnQg dGhlIGNvbW1hbmQgY291bnRlciBzbyB0aGF0IGlzX3NjaGVtYV9wdWJsaWNhdGlvbigpIGluCisJ ICogR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcygpIGNhbiBzZWUgdGhlIGp1c3QtaW5zZXJ0 ZWQgc2NoZW1hCisJICogcm93cyB3aGVuIEFsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJs ZXMgcnVucyBuZXh0LgorCSAqLworCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cyB8 fCBzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykKKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1l bnQoKTsKKworCUFsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMoc3RtdCwgdHVwLCBl eGNlcHRfcHVidGFibGVzLCBzY2hlbWFpZGxpc3QpOworfQorCisvKgorICogQWx0ZXIgdGhlIEVY Q0VQVCBsaXN0IG9mIGEgc2NoZW1hLWxldmVsIHB1YmxpY2F0aW9uLgorICoKKyAqIEFkZHMsIHJl bW92ZXMsIG9yIHJlcGxhY2VzIGV4Y2VwdC10YWJsZSBlbnRyaWVzIGluIHBnX3B1YmxpY2F0aW9u X3JlbAorICogKHJvd3Mgd2l0aCBwcmV4Y2VwdCA9IHRydWUpLiAgVGhlc2UgZW50cmllcyBzdXBw cmVzcyBwdWJsaWNhdGlvbiBvZiB0aGUKKyAqIG5hbWVkIHRhYmxlcyB0aGF0IHdvdWxkIG90aGVy d2lzZSBiZSBjb3ZlcmVkIGJ5IGEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEKKyAqIGNsYXVzZS4KKyAq Lworc3RhdGljIHZvaWQKK0FsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMoQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsCisJCQkJCQkJIEhlYXBUdXBsZSB0dXAsIExpc3QgKmV4Y2Vw dF9wdWJ0YWJsZXMsCisJCQkJCQkJIExpc3QgKnNjaGVtYWlkbGlzdCkKK3sKKwlGb3JtX3BnX3B1 YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7 CisJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CisKKwkvKgorCSAqIE5vdGhpbmcgdG8gZG8g aWYgbm8gRVhDRVBUIGVudHJpZXMuCisJICovCisJaWYgKCFleGNlcHRfcHVidGFibGVzKQorCQly ZXR1cm47CisKKwkvKgorCSAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBFWENFUFQgZW50cmllcyBm b3Igc2NoZW1hLWxldmVsIHB1YmxpY2F0aW9ucworCSAqIG9ubHkuICBGb3IgRk9SIEFMTCBUQUJM RVMgcHVibGljYXRpb25zLCBFWENFUFQgZW50cmllcyBhcmUgYWxyZWFkeQorCSAqIHByb2Nlc3Nl ZCBieSBBbHRlclB1YmxpY2F0aW9uVGFibGVzKCkuCisJICovCisJaWYgKHNjaGVtYWlkbGlzdCA9 PSBOSUwgJiYgIWlzX3NjaGVtYV9wdWJsaWNhdGlvbihwdWJpZCkpCisJCXJldHVybjsKKworCS8q CisJICogRHJvcHBpbmcgYSBzY2hlbWEgZnJvbSBhIHB1YmxpY2F0aW9uIHJlbW92ZXMgYWxsIGl0 cyBFWENFUFQgZW50cmllcyB2aWEKKwkgKiBjYXNjYWRlLiBUaGUgY29uY2VwdCBvZiAiZHJvcCBh bGwgc2NoZW1hIHRhYmxlcyBmcm9tIHRoZSBwdWJsaWNhdGlvbgorCSAqIEVYQ0VQVCB0aGVzZSBv bmVzIiBpcyBub3Qgc3VwcG9ydGVkLgorCSAqLworCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfRHJv cE9iamVjdHMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBv cnRlZCB3aXRoIERST1AgaW4gQUxURVIgUFVCTElDQVRJT04iKSkpOworCisJLyoKKwkgKiBYWFgg RVhDRVBUIHdpdGggU0VUIGlzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQuICBXb3JrYXJvdW5k OiBEUk9QIGFuZAorCSAqIHJlLUFERCB0aGUgc2NoZW1hIHdpdGggdGhlIGRlc2lyZWQgRVhDRVBU IGxpc3QuCisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkgZXJybXNnKCJFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBTRVQgaW4g QUxURVIgUFVCTElDQVRJT04iKSwKKwkJCQkgZXJyaGludCgiRHJvcCBhbmQgcmUtYWRkIHRoZSBz Y2hlbWEgd2l0aCB0aGUgZGVzaXJlZCBFWENFUFQgbGlzdC4iKSkpOworCisJaWYgKHN0bXQtPmFj dGlvbiA9PSBBUF9BZGRPYmplY3RzKQorCXsKKwkJTGlzdAkgICAqcmVsczsKKwkJTGlzdAkgICAq ZXhwbGljaXRyZWxpZHM7CisKKwkJcmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0X3B1YnRhYmxl cyk7CisKKwkJZXhwbGljaXRyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25z KHB1YmlkLAorCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKworCQkvKgor CQkgKiBWYWxpZGF0ZSB0aGF0IGVhY2ggZXhjbHVkZWQgdGFibGUgaXMgbm90IGFsc28gaW4gdGhl IGV4cGxpY2l0IHRhYmxlCisJCSAqIGxpc3QgKHdoaWNoIHdvdWxkIGJlIGNvbnRyYWRpY3Rvcnkp LgorCQkgKi8KKwkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIHJlbHMpCisJ CXsKKwkJCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKTsKKwor CQkJaWYgKGxpc3RfbWVtYmVyX29pZChleHBsaWNpdHJlbGlkcywgcmVsaWQpKQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCQkJZXJybXNnKCJ0YWJsZSBcIiVzXCIgY2Fubm90IGFwcGVhciBpbiBib3RoIHRoZSB0 YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZSIsCisJCQkJCQkJICAgUmVsYXRpb25HZXRR dWFsaWZpZWRSZWxhdGlvbk5hbWUocHJpLT5yZWxhdGlvbikpKTsKKwkJfQorCisJCVB1YmxpY2F0 aW9uQWRkVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CisKKwkJQ2xvc2VUYWJsZUxp c3QocmVscyk7CisJfQogfQogCiAvKgpAQCAtMTc1NCwxMCArMTg1MywxMiBAQCBBbHRlclB1Ymxp Y2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJ CQkJCWVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCSAg IHN0bXQtPnB1Ym5hbWUpKTsKIAotCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMs IGV4Y2VwdF9wdWJ0YWJsZXMpOworCQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJCQlyZWxh dGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdF9wdWJ0YWJsZXMpOworCiAJCUFs dGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVwLCByZWxhdGlvbnMsIHBzdGF0ZS0+cF9zb3Vy Y2V0ZXh0LAogCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwotCQlBbHRlclB1YmxpY2F0 aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCk7CisJCUFsdGVyUHVibGljYXRpb25T Y2hlbWFzKHN0bXQsIHR1cCwgc2NoZW1haWRsaXN0LCBleGNlcHRfcHVidGFibGVzKTsKIAkJQWx0 ZXJQdWJsaWNhdGlvbkFsbEZsYWdzKHN0bXQsIHJlbCwgdHVwKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmlu ZGV4IGQ1NmRjYzcwMWNlLi5lNjJkNzRjOGNhMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC01MDE5LDYgKzUw MTksNyBAQCBkdW1wUHVibGljYXRpb25OYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVi bGljYXRpb25TY2hlbWFJbmZvICpwdWJzaW5mbykKIAlQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8g PSBwdWJzaW5mby0+cHVibGljYXRpb247CiAJUFFFeHBCdWZmZXIgcXVlcnk7CiAJY2hhcgkgICAq dGFnOworCWJvb2wJCWhhc19leGNlcHQgPSBmYWxzZTsKIAogCS8qIERvIG5vdGhpbmcgaWYgbm90 IGR1bXBpbmcgc2NoZW1hICovCiAJaWYgKCFkb3B0LT5kdW1wU2NoZW1hKQpAQCAtNTAyOSw3ICs1 MDMwLDM0IEBAIGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZShBcmNoaXZlICpmb3V0LCBjb25zdCBQ dWJsaWNhdGlvblNjaGVtYUluZm8gKnB1YnNpbmZvKQogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZm ZXIoKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMg IiwgZm10SWQocHViaW5mby0+ZG9iai5uYW1lKSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnks ICJBREQgVEFCTEVTIElOIFNDSEVNQSAlcztcbiIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFt ZSkpOworCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUREIFRBQkxFUyBJTiBTQ0hFTUEgJXMi LCBmbXRJZChzY2hlbWFpbmZvLT5kb2JqLm5hbWUpKTsKKworCS8qCisJICogQXBwZW5kIEVYQ0VQ VCBjbGF1c2UgZm9yIGFueSB0YWJsZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBzY2hlbWEKKwkgKiBh bmQgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgorCSAqLworCWZvciAoU2ltcGxl UHRyTGlzdENlbGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRfdGFibGVzLmhlYWQ7IGNlbGw7IGNl bGwgPSBjZWxsLT5uZXh0KQorCXsKKwkJVGFibGVJbmZvICAqdGJpbmZvID0gKFRhYmxlSW5mbyAq KSBjZWxsLT5wdHI7CisKKwkJaWYgKHN0cmNtcCh0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2Jq Lm5hbWUsIHNjaGVtYWluZm8tPmRvYmoubmFtZSkgPT0gMCkKKwkJeworCQkJaWYgKCFoYXNfZXhj ZXB0KQorCQkJeworCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCAoIik7 CisJCQkJaGFzX2V4Y2VwdCA9IHRydWU7CisJCQl9CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsICIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIlRB QkxFIE9OTFkgJXMiLCBmbXRJZCh0YmluZm8tPmRvYmoubmFtZSkpOworCQl9CisJfQorCisJaWYg KGhhc19leGNlcHQpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKSIpOworCisJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICI7XG4iKTsKIAogCS8qCiAJICogVGhlcmUgaXMgbm8g cG9pbnQgaW4gY3JlYXRpbmcgZHJvcCBxdWVyeSBhcyB0aGUgZHJvcCBpcyBkb25lIGJ5IHNjaGVt YQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAzZWU5ZmRhNTBlNC4uYjhmNGFhNzY5ZWMg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjQyLDYgKzMyNDIsMzAgQEAgbXkgJXRl c3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwg fSwKIAl9LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMScgPT4geworCQljcmVhdGVfb3Jk ZXIgPT4gNTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEx IEZPUiBUQUJMRVMgSU4gU0NIRU1BIGR1bXBfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RfdGFibGUp OycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMSBXSVRI IChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS4q PworCQkJXFFBTFRFUiBQVUJMSUNBVElPTiBwdWIxMSBBREQgVEFCTEVTIElOIFNDSEVNQSBkdW1w X3Rlc3QgRVhDRVBUIChUQUJMRSBPTkxZIHRlc3RfdGFibGUpO1xFCisJCQkveG1zLAorCQlsaWtl ID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCisJJ0NS RUFURSBQVUJMSUNBVElPTiBwdWIxMicgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAsCisJCWNy ZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEyIEZPUiBUQUJMRVMgSU4g U0NIRU1BIGR1bXBfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RfdGFibGUsIGR1bXBfdGVzdC50ZXN0 X3NlY29uZF90YWJsZSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjEyIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNh dGUnKTtcRQorCQkJLio/CisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEyIEFERCBUQUJMRVMg SU4gU0NIRU1BIGR1bXBfdGVzdCBFWENFUFQgKFRBQkxFIE9OTFkgdGVzdF90YWJsZSwgVEFCTEUg T05MWSB0ZXN0X3NlY29uZF90YWJsZSk7XEUKKwkJCS94bXMsCisJCWxpa2UgPT4geyAlZnVsbF9y dW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKIAknQ1JFQVRFIFNVQlNDUklQ VElPTiBzdWIxJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCA9PiAn Q1JFQVRFIFNVQlNDUklQVElPTiBzdWIxCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggZmUxMWRj NjE5YWMuLjhkYjNlMTI5OTI4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yMzY0LDYgKzIz NjQsMjEgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRF X1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAiIEFO RCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCiAJCQkJCQkJCSAiQ1VSUkVOVF9TQ0hF TUEiKTsKKwkvKiBBZnRlciBhIHNpbmdsZSBzY2hlbWEgbmFtZSBpbiBBREQgY29udGV4dCwgb2Zm ZXIgRVhDRVBUICggVEFCTEUgKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFu eSkgJiYKKwkJCSAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIkVY Q0VQVCAoIFRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJF WENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMo IkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwg IlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFC TEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIo IiwgIlRBQkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOwor CQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19p bl9zY2hlbWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVY Q0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcs JykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4g U0VUICggKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCBNYXRjaEFueU4sICJTRVQiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNoIiwg InB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMiLCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qi KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMDA4YzZj ZWJhY2EuLmY1NmIwNTI0YWU5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dApAQCAtNTY0LDEyICs1NjQsNDIgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf ZXhjZXB0X25va3cKIEVSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInRlc3RwdWJfbm9w ayIKIExJTkUgMjogICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVz dHB1Yl9ub3BrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist LSBFWENFUFQgdGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Fs dGVyX2V4Y2VwdDsKKy0tIGZhaWw6IG5vbi1leGlzdGluZyB0YWJsZSBpbiBFWENFUFQgY2xhdXNl CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlKTsK K0VSUk9SOiAgcmVsYXRpb24gInB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlIiBkb2VzIG5vdCBl eGlzdAorLS0gZmFpbDogRVhDRVBUIHRhYmxlIGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQgc2NoZW1h CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXN0cHViX3RibDEpOworRVJST1I6 ICB0YWJsZSAicHVibGljLnRlc3RwdWJfdGJsMSIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBi ZWxvbmcgdG8gc2NoZW1hICJwdWJfdGVzdCIKK0xJTkUgMTogLi4ueGNlcHQgQUREIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g ZmFpbDogVEFCTEUga2V5d29yZCBpcyByZXF1aXJlZCBmb3IgdGhlIGZpcnN0IGVudHJ5IGluIEVY Q0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKK0VSUk9SOiAg c3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInRlc3RwdWJfbm9wayIKK0xJTkUgMTogLi4ubHRlcl9l eGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gQUREOiBxdWFsaWZpZWQgYW5kIHVucXVhbGlmaWVkIG5hbWVzOyB1bnF1YWxp ZmllZCBpcyBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHRlc3RwdWJfdGJsX3MyKTsK K1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNl cHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBj b2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAg ICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90 ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisgICAg InB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyIgorCiAtLSBDbGVhbnVwCiBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rlc3Qu dGVzdHB1Yl90YmxfczI7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgQ0FT Q0FERTsKIERST1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKLURST1AgUFVC TElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0Miwg dGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Nj aGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNl cHRfbXVsdGksIHRlc3RwdWJfYWx0ZXJfZXhjZXB0OwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VR VUVOQ0VTCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA5MTYyZDRkMTVhNS4uMDcyZDUwMDUw Y2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI3OCwxMiArMjc4LDMw IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9wYXJ0aXRpb24KIENSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub2t3CiAgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vcGspOwogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCB0ZXN0cyBmb3IgQUxURVIgUFVCTElD QVRJT04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0OworCistLSBmYWlsOiBub24tZXhp c3RpbmcgdGFibGUgaW4gRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9h bHRlcl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBw dWJfdGVzdC5ub25leGlzdGVudF90YWJsZSk7CisKKy0tIGZhaWw6IEVYQ0VQVCB0YWJsZSBiZWxv bmdzIHRvIGEgZGlmZmVyZW50IHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRl cl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJs aWMudGVzdHB1Yl90YmwxKTsKKworLS0gZmFpbDogVEFCTEUga2V5d29yZCBpcyByZXF1aXJlZCBm b3IgdGhlIGZpcnN0IGVudHJ5IGluIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAo dGVzdHB1Yl9ub3BrKTsKKworLS0gQUREOiBxdWFsaWZpZWQgYW5kIHVucXVhbGlmaWVkIG5hbWVz OyB1bnF1YWxpZmllZCBpcyBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHRlc3RwdWJf dGJsX3MyKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisKIC0tIENsZWFudXAKIFJFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx LCBwdWJfdGVzdC50ZXN0cHViX3RibF9zMjsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9w YXJ0ZWRfcyBDQVNDQURFOwogRFJPUCBUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJfdGJsX3Mx OwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVt YV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGk7CitEUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRlc3RwdWJf c2NoZW1hX2V4Y2VwdF9tdWx0aSwgdGVzdHB1Yl9hbHRlcl9leGNlcHQ7CiAKIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gVGVzdHMgZm9yIHB1YmxpY2F0 aW9ucyB3aXRoIFNFUVVFTkNFUwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDM3X2V4Y2VwdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5k ZXggMThjN2IyYzFmY2EuLjBiYTZkNmY4YmIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzdfZXhjZXB0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19l eGNlcHQucGwKQEAgLTM0Nyw2ICszNDcsMzggQEAgaXMoJHJlc3VsdCwgcXEoNSksCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHNjaF9z dWInKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJ Q0FUSU9OIHNjaF9wdWInKTsKIAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorIyBBTFRFUiBQVUJMSUNBVElPTiBFWENFUFQgZm9yIFRBQkxFUyBJTiBTQ0hF TUEKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBU cnVuY2F0ZSBzdWJzY3JpYmVyIHRhYmxlcyB0byByZW1vdmUgZGF0YSBhY2N1bXVsYXRlZCBmcm9t IHByZXZpb3VzIHRlc3RzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJJ1RSVU5DQVRFIHNjaDEudGFiX3B1Ymxpc2hlZCwgc2NoMS50YWJfZXhjbHVkZWQsIHNjaDEu cGFyZW50LCBzY2gxLmNoaWxkJyk7CisKKyMgQUREOiBhZGQgYSBzY2hlbWEgd2l0aCBhbiBleGNl cHRlZCB0YWJsZTsgdmVyaWZ5IHRoZSBleGNlcHQgZW50cnkgdGFrZXMgZWZmZWN0LgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBQVUJMSUNBVElPTiBzY2hf cHViIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQ VUJMSUNBVElPTiBzY2hfcHViIEFERCBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJM RSBzY2gxLnRhYl9leGNsdWRlZCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2NoX3N1YiBDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNjaF9wdWIiCispOworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1Yicp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCIpOworaXMoJHJlc3Vs dCwgcXEoNiksCisJJ0FMVEVSIC4uLiBBREQgVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IGluY2x1 ZGVkIHRhYmxlIHN5bmNlZCcpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9leGNsdWRl ZCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ0FMVEVSIC4uLiBBREQgVEFCTEVTIElOIFNDSEVN QSBFWENFUFQ6IGV4Y2x1ZGVkIHRhYmxlIG5vdCBzeW5jZWQnKTsKKworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBz Y2hfcHViJyk7CisKICMgQ2xlYW51cCBzY2hlbWEgdGFibGVzIGJlZm9yZSB0aGUgbXVsdGktcHVi bGljYXRpb24gc2VjdGlvbi4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdEUk9QIFNDSEVNQSBzY2gxIENBU0NBREUnKTsKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURFJyk7Ci0tIAoyLjUwLjEgKEFw cGxlIEdpdC0xNTUpCgo= --000000000000b53da60653418076 Content-Type: application/octet-stream; name="v9-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABLE.patch" Content-Disposition: attachment; filename="v9-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpwe2vl52 RnJvbSA2YjFiYjBiN2ZhYTFiNjhkNjUwN2QxZWZjZjE1OGE3NTNmNzllZWQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUdWUsIDIgSnVuIDIwMjYgMTE6Mzk6MzYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5 IDMvM10gQWRkIEVYQ0VQVCBzdXBwb3J0IHRvIEFMVEVSIFBVQkxJQ0FUSU9OIFNFVCBUQUJMRVMg SU4KIFNDSEVNQQoKRXh0ZW5kIEFsdGVyUHVibGljYXRpb25FeGNlcHRUYWJsZXMoKSB3aXRoIHRo ZSBBUF9TZXRPYmplY3RzIGNhc2UsCndoaWNoIHJlZGVmaW5lcyB0aGUgcHVibGljYXRpb24gYW5k IHJlcGxhY2VzIHRoZSBlbnRpcmUgRVhDRVBUIGxpc3QuCgpTeW50YXg6CkFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBTRVQgVEFCTEVTIElOIFNDSEVNQSBzIEVYQ0VQVCAoVEFCTEUgdDEpOwoKVGhpcyBw YXRjaCBhbHNvIGNsZWFucyB1cCBFWENFUFQgZW50cmllcyB3aGVuIGEgc2NoZW1hIGlzIGRyb3Bw ZWQKZnJvbSB0aGUgcHVibGljYXRpb24uCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJs aWNhdGlvbi5zZ21sICAgICB8ICAyNyArKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYyAgICAgIHwgMTM1ICsrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgIDEwICstCiBzcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgICAgICAgICAgICAgIHwgIDE1ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICB8ICA4NiArKysrKysrKysrKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgIHwgIDM4ICsrKysrKwogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCAgICAgICB8ICA4NSArKysrKysrKysrKysKIDcg ZmlsZXMgY2hhbmdlZCwgMzY5IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCA3M2Y2Mzc1YTY2Zi4uODBiMDM4 ZTRiMmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTk3LDcg Kzk3LDExIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICB1c2VkIHdpdGggYSBwdWJsaWNh dGlvbiBkZWZpbmVkIHdpdGggPGxpdGVyYWw+Rk9SIFRBQkxFPC9saXRlcmFsPiBvcgogICAgPGxp dGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCByZXBsYWNlcyB0aGUgbGlzdCBv ZiB0YWJsZXMvc2NoZW1hcwogICAgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmll ZCBsaXN0OyB0aGUgZXhpc3RpbmcgdGFibGVzIG9yIHNjaGVtYXMKLSAgIHRoYXQgd2VyZSBwcmVz ZW50IGluIHRoZSBwdWJsaWNhdGlvbiB3aWxsIGJlIHJlbW92ZWQuCisgICB0aGF0IHdlcmUgcHJl c2VudCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLiAgV2hlbgorICAgPGxpdGVy YWw+U0VUIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGlzIHVzZWQgd2l0aCBhbgorICAgPGxp dGVyYWw+RVhDRVBUPC9saXRlcmFsPiBjbGF1c2UsIHRoZSBleGNsdWRlZCB0YWJsZXMgZm9yIGVh Y2ggc2NoZW1hIGFyZQorICAgcmVwbGFjZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3Q7IGlmIDxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gaXMgb21pdHRlZAorICAgZm9yIGEgc2NoZW1hLCBhbnkg ZXhpc3RpbmcgZXhjbHVzaW9ucyBmb3IgdGhhdCBzY2hlbWEgYXJlIGNsZWFyZWQuCiAgIDwvcGFy YT4KIAogICA8cGFyYT4KQEAgLTExNiwxMCArMTIwLDggQEAgQUxURVIgUFVCTElDQVRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8g PHIKIAogICA8cGFyYT4KICAgIFRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBj YW4gYmUgdXNlZCB3aXRoCi0gICA8bGl0ZXJhbD5BREQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJh bD4gdG8gZXhjbHVkZSBzcGVjaWZpYyB0YWJsZXMgZnJvbSB0aGUKLSAgIHB1YmxpY2F0aW9uLiBV c2luZyA8bGl0ZXJhbD5EUk9QIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IG9uIGEgcHVibGlj YXRpb24KLSAgIHdpbGwgYXV0b21hdGljYWxseSBhbHNvIHJlbW92ZSBhbnkgYXNzb2NpYXRlZCA8 bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+Ci0gICBlbnRyaWVzLgorICAgPGxpdGVyYWw+QUREIFRB QkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVzIGZyb20g YQorICAgc2NoZW1hLWxldmVsIHB1YmxpY2F0aW9uLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CkBA IC0yMTQsNyArMjE2LDggQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgICA8dGVybT48bGl0 ZXJhbD5FWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxl X29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBXaGVuIHVzZWQgd2l0aCA8bGl0ZXJhbD5BREQg VEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIHNwZWNpZmllcworICAgICAgV2hlbiB1c2VkIHdp dGggPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+CisgICAgICBvciA8bGl0 ZXJhbD5TRVQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIHNwZWNpZmllcwogICAgICAgdGFi bGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiAgRWFjaCBuYW1lZAogICAg ICAgdGFibGUgbXVzdCBiZWxvbmcgdG8gdGhlIHNjaGVtYSBzcGVjaWZpZWQgaW4gdGhlIHNhbWUK ICAgICAgIDxsaXRlcmFsPlRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGNsYXVzZS4gIFRhYmxl IG5hbWVzIG1heSBiZQpAQCAtMzI2LDYgKzMyOSwxOCBAQCBBTFRFUiBQVUJMSUNBVElPTiBzYWxl c19wdWJsaWNhdGlvbiBBREQgVEFCTEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQgKFRBQkxFIGlu dAogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgUmVwbGFjZSB0 aGUgc2NoZW1hIGxpc3Qgb2YgPHN0cnVjdG5hbWU+c2FsZXNfcHVibGljYXRpb248L3N0cnVjdG5h bWU+IHdpdGgKKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzPC9zdHJ1Y3RuYW1lPiwgZXhjbHVkaW5nIG9u bHkKKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzLmRyYWZ0czwvc3RydWN0bmFtZT4uIE90aGVyIHRoYW4K KyAgIDxzdHJ1Y3RuYW1lPnNhbGVzLmRyYWZ0czwvc3RydWN0bmFtZT4sIGFueSBwcmV2aW91c2x5 IGV4Y2x1ZGVkIHRhYmxlcyBmb3Igc2NoZW1hCisgICA8c3RydWN0bmFtZT5zYWxlczwvc3RydWN0 bmFtZT4gYXJlIG5vIGxvbmdlciBleGNsdWRlZC4gQW55IHNjaGVtYXMgcHJldmlvdXNseSBpbgor ICAgPHN0cnVjdG5hbWU+c2FsZXNfcHVibGljYXRpb248L3N0cnVjdG5hbWU+IGFyZSByZW1vdmVk OgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRpb24g U0VUIFRBQkxFUyBJTiBTQ0hFTUEgc2FsZXMgRVhDRVBUIChUQUJMRSBkcmFmdHMpOworPC9wcm9n cmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQWRkIHRhYmxlcyA8c3RydWN0 bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCiAgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3Ry dWN0bmFtZT4gYW5kIHNjaGVtYQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpp bmRleCAwOTY2MzU3OTA1OC4uOGJmNzFlZGNkYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jCkBAIC0xNTU2LDggKzE1NTYsOCBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1h cyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAogCS8qCiAJICogSW5jcmVtZW50IHRoZSBj b21tYW5kIGNvdW50ZXIgc28gdGhhdCBpc19zY2hlbWFfcHVibGljYXRpb24oKSBpbgotCSAqIEdl dEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMoKSBjYW4gc2VlIHRoZSBqdXN0LWluc2VydGVkIHNj aGVtYQotCSAqIHJvd3Mgd2hlbiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0VGFibGVzIHJ1 bnMgbmV4dC4KKwkgKiBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKCkgY2FuIHNlZSB0aGUg anVzdC1pbnNlcnRlZCBzY2hlbWEgcm93cworCSAqIHdoZW4gQWx0ZXJQdWJsaWNhdGlvblNjaGVt YUV4Y2VwdFRhYmxlcyBydW5zIG5leHQuCiAJICovCiAJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9B ZGRPYmplY3RzIHx8IHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKQogCQlDb21tYW5kQ291 bnRlckluY3JlbWVudCgpOwpAQCAtMTU3NSwxNiArMTU3NSwxOCBAQCBBbHRlclB1YmxpY2F0aW9u U2NoZW1hcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKICAqLwogc3RhdGljIHZvaWQKIEFs dGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsCi0JCQkJCQkJIEhlYXBUdXBsZSB0dXAsIExpc3QgKmV4Y2VwdF9wdWJ0YWJsZXMsCi0JCQkJ CQkJIExpc3QgKnNjaGVtYWlkbGlzdCkKKwkJCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgTGlzdCAq ZXhjZXB0X3B1YnRhYmxlcywKKwkJCQkJCQkJICAgTGlzdCAqc2NoZW1haWRsaXN0KQogewogCUZv cm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJV Q1QodHVwKTsKIAlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKIAogCS8qCi0JICogTm90aGlu ZyB0byBkbyBpZiBubyBFWENFUFQgZW50cmllcy4KKwkgKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJl IGFyZSBubyBFWENFUFQgZW50cmllcywgdW5sZXNzIGhhbmRsaW5nIHRoZSBTRVQKKwkgKiBjb21t YW5kLCBiZWNhdXNlIGlmIHRoZSB1c2VyIGhhcyByZW1vdmVkIGFsbCBleGNlcHRpb25zIHdlIG5l ZWQgdG8gZHJvcAorCSAqIGFueSBleGlzdGluZyBvbmVzLgogCSAqLwotCWlmICghZXhjZXB0X3B1 YnRhYmxlcykKKwlpZiAoIWV4Y2VwdF9wdWJ0YWJsZXMgJiYgc3RtdC0+YWN0aW9uICE9IEFQX1Nl dE9iamVjdHMpCiAJCXJldHVybjsKIAogCS8qCkBAIC0xNjA1LDE2ICsxNjA3LDYgQEAgQWx0ZXJQ dWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1z ZygiRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggRFJPUCBpbiBBTFRFUiBQVUJM SUNBVElPTiIpKSk7CiAKLQkvKgotCSAqIFhYWCBFWENFUFQgd2l0aCBTRVQgaXMgbm90IGN1cnJl bnRseSBpbXBsZW1lbnRlZC4gIFdvcmthcm91bmQ6IERST1AgYW5kCi0JICogcmUtQUREIHRoZSBz Y2hlbWEgd2l0aCB0aGUgZGVzaXJlZCBFWENFUFQgbGlzdC4KLQkgKi8KLQlpZiAoc3RtdC0+YWN0 aW9uID09IEFQX1NldE9iamVjdHMpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2Ug aXMgbm90IHN1cHBvcnRlZCB3aXRoIFNFVCBpbiBBTFRFUiBQVUJMSUNBVElPTiIpLAotCQkJCSBl cnJoaW50KCJEcm9wIGFuZCByZS1hZGQgdGhlIHNjaGVtYSB3aXRoIHRoZSBkZXNpcmVkIEVYQ0VQ VCBsaXN0LiIpKSk7Ci0KIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCiAJewog CQlMaXN0CSAgICpyZWxzOwpAQCAtMTY0Miw2ICsxNjM0LDg0IEBAIEFsdGVyUHVibGljYXRpb25T Y2hlbWFFeGNlcHRUYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAKIAkJUHVibGlj YXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10KTsKIAorCQlDbG9zZVRhYmxl TGlzdChyZWxzKTsKKwl9CisJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KKwl7CisJCUxp c3QJICAgKm9sZGV4Y2VwdHJlbGlkcyA9IE5JTDsKKwkJTGlzdAkgICAqbmV3ZXhjZXB0cmVsaWRz ID0gTklMOworCQlMaXN0CSAgICpkZWxyZWxpZHMgPSBOSUw7CisJCUxpc3QJICAgKnJlbHM7CisJ CUxpc3QJICAgKmV4cGxpY2l0cmVsaWRzOworCisJCXJlbHMgPSBPcGVuVGFibGVMaXN0KGV4Y2Vw dF9wdWJ0YWJsZXMpOworCisJCS8qIENvbGxlY3QgT0lEcyBvZiB0aGUgZGVzaXJlZCBuZXcgRVhD RVBUIGxpc3QuICovCisJCWZvcmVhY2hfcHRyKFB1YmxpY2F0aW9uUmVsSW5mbywgcHJpLCByZWxz KQorCQkJbmV3ZXhjZXB0cmVsaWRzID0gbGFwcGVuZF9vaWQobmV3ZXhjZXB0cmVsaWRzLAorCQkJ CQkJCQkJCSAgUmVsYXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKSk7CisKKwkJZXhwbGljaXRy ZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJ CQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKworCQkvKgorCQkgKiBWYWxpZGF0ZSB0aGF0 IGVhY2ggZXhjbHVkZWQgdGFibGUgaXMgbm90IGFsc28gaW4gdGhlIGV4cGxpY2l0IHRhYmxlCisJ CSAqIGxpc3QgKHdoaWNoIHdvdWxkIGJlIGNvbnRyYWRpY3RvcnkpLgorCQkgKi8KKwkJZm9yZWFj aF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIHJlbHMpCisJCXsKKwkJCU9pZAkJCXJlbGlk ID0gUmVsYXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKTsKKworCQkJaWYgKGxpc3RfbWVtYmVy X29pZChleHBsaWNpdHJlbGlkcywgcmVsaWQpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJ0 YWJsZSBcIiVzXCIgY2Fubm90IGFwcGVhciBpbiBib3RoIHRoZSB0YWJsZSBsaXN0IGFuZCB0aGUg RVhDRVBUIGNsYXVzZSIsCisJCQkJCQkJICAgUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5h bWUocHJpLT5yZWxhdGlvbikpKTsKKwkJfQorCisJCS8qCisJCSAqIEdldCB0aGUgY3VycmVudCBz ZXQgb2YgRVhDRVBUIGVudHJpZXMuICBPbmx5IEZPUiBBTEwgVEFCTEVTIGFuZAorCQkgKiBzY2hl bWEtbGV2ZWwgcHVibGljYXRpb25zIGNhbiBoYXZlIEVYQ0VQVCBlbnRyaWVzOyBmb3IgYW55IG90 aGVyCisJCSAqIHB1YmxpY2F0aW9uIHR5cGUgb2xkZXhjZXB0cmVsaWRzIHN0YXlzIE5JTC4KKwkJ ICoKKwkJICogTm90ZTogd2UgY2hlY2sgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgYWdhaW5zdCB0 aGUgY3VycmVudCBjYXRhbG9nCisJCSAqIHN0YXRlIChiZWZvcmUgQWx0ZXJQdWJsaWNhdGlvblNj aGVtYXMgaGFzIHJ1biksIHNvIGlmIHRoZSBjYWxsZXIgaXMKKwkJICogZG9pbmcgU0VUIFRBQkxF IHQxIHRvIGNvbnZlcnQgYSBzY2hlbWEgcHVibGljYXRpb24gaW50byBhIHBsYWluCisJCSAqIHRh YmxlIHB1YmxpY2F0aW9uLCBpc19zY2hlbWFfcHVibGljYXRpb24oKSBzdGlsbCByZXR1cm5zIHRy dWUgaGVyZS4KKwkJICogVGhhdCBpcyBpbnRlbnRpb25hbDogaXQgbGV0cyB1cyBkaXNjb3ZlciBh bmQgY2xlYW4gdXAgYW55IHN0YWxlCisJCSAqIEVYQ0VQVCBlbnRyaWVzIHRoYXQgYmVsb25nIHRv IHRoZSBvbGQgc2NoZW1hIGRlZmluaXRpb24uCisJCSAqLworCQlpZiAoR2V0UHVibGljYXRpb24o cHViaWQpLT5hbGx0YWJsZXMgfHwgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSkKKwkJCW9s ZGV4Y2VwdHJlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsCisJCQkJ CQkJCQkJCQkJCSAgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisKKwkJLyogQnVpbGQgYSBsaXN0 IG9mIG9sZCBFWENFUFQgZW50cmllcyBub3QgcHJlc2VudCBpbiB0aGUgbmV3IGxpc3QuICovCisJ CWZvcmVhY2hfb2lkKG9sZHJlbGlkLCBvbGRleGNlcHRyZWxpZHMpCisJCXsKKwkJCWlmICghbGlz dF9tZW1iZXJfb2lkKG5ld2V4Y2VwdHJlbGlkcywgb2xkcmVsaWQpKQorCQkJCWRlbHJlbGlkcyA9 IGxhcHBlbmRfb2lkKGRlbHJlbGlkcywgb2xkcmVsaWQpOworCQl9CisKKwkJLyogRHJvcCBvbGQg RVhDRVBUIGVudHJpZXMgbm90IHByZXNlbnQgaW4gdGhlIG5ldyBsaXN0LiAqLworCQlmb3JlYWNo X29pZChyZWxpZCwgZGVscmVsaWRzKQorCQl7CisJCQlPaWQJCQlwcm9pZDsKKwkJCU9iamVjdEFk ZHJlc3Mgb2JqOworCisJCQlwcm9pZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1B UCwKKwkJCQkJCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX29pZCwKKwkJCQkJCQkJCU9iamVj dElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOwor CQkJaWYgKE9pZElzVmFsaWQocHJvaWQpKQorCQkJeworCQkJCU9iamVjdEFkZHJlc3NTZXQob2Jq LCBQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIHByb2lkKTsKKwkJCQlwZXJmb3JtRGVsZXRpb24o Jm9iaiwgRFJPUF9DQVNDQURFLCAwKTsKKwkJCX0KKwkJfQorCisJCS8qIEFkZCBuZXcgRVhDRVBU IGVudHJpZXMsIHNraXBwaW5nIGFueSBhbHJlYWR5IHByZXNlbnQuICovCisJCVB1YmxpY2F0aW9u QWRkVGFibGVzKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10KTsKKwogCQlDbG9zZVRhYmxlTGlzdChy ZWxzKTsKIAl9CiB9CkBAIC0yMjkxLDYgKzIzNjEsNyBAQCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFz KE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKQogCWZvcmVhY2gobGMs IHNjaGVtYXMpCiAJewogCQlPaWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQobGMpOworCQlMaXN0 CSAgICpleGNlcHRfcmVsaWRzOwogCiAJCXBzaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJ T05OQU1FU1BBQ0VNQVAsCiAJCQkJCQkJICAgQW51bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Vf b2lkLApAQCAtMjMwNyw4ICsyMzc4LDQwIEBAIFB1YmxpY2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1 YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdfb2spCiAJCQkJCQkJZ2V0X25hbWVzcGFj ZV9uYW1lKHNjaGVtYWlkKSkpKTsKIAkJfQogCisJCS8qCisJCSAqIENvbGxlY3QgRVhDRVBUIGVu dHJpZXMgZm9yIHRhYmxlcyBiZWxvbmdpbmcgdG8gdGhpcyBzY2hlbWEgYmVmb3JlCisJCSAqIHJl bW92aW5nIHRoZSBzY2hlbWEgZW50cnkuCisJCSAqLworCQlleGNlcHRfcmVsaWRzID0gR2V0RXhj bHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwog CQlPYmplY3RBZGRyZXNzU2V0KG9iaiwgUHVibGljYXRpb25OYW1lc3BhY2VSZWxhdGlvbklkLCBw c2lkKTsKIAkJcGVyZm9ybURlbGV0aW9uKCZvYmosIERST1BfQ0FTQ0FERSwgMCk7CisKKwkJLyoK KwkJICogRHJvcCBhbnkgcHJleGNlcHQgcm93cyBmb3IgdGFibGVzIGJlbG9uZ2luZyB0byB0aGlz IHNjaGVtYS4gVGhlc2UKKwkJICogcm93cyBoYXZlIG5vIHBnX2RlcGVuZCBlbnRyeSBwb2ludGlu ZyBhdCB0aGUKKwkJICogcGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHJvdywgc28gdGhleSBhcmUg bm90IGNhc2NhZGVkIGJ5IHRoZQorCQkgKiBwZXJmb3JtRGVsZXRpb24oKSBjYWxsIGFib3ZlIGFu ZCBtdXN0IGJlIGNsZWFuZWQgdXAgZXhwbGljaXRseS4KKwkJICovCisJCWZvcmVhY2hfb2lkKHJl bGlkLCBleGNlcHRfcmVsaWRzKQorCQl7CisJCQlPaWQJCQlwcm9pZDsKKworCQkJaWYgKGdldF9y ZWxfbmFtZXNwYWNlKHJlbGlkKSAhPSBzY2hlbWFpZCkKKwkJCQljb250aW51ZTsKKworCQkJcHJv aWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJCQlBbnVtX3Bn X3B1YmxpY2F0aW9uX3JlbF9vaWQsCisJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSwK KwkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwkJCWlmIChPaWRJc1ZhbGlkKHBy b2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzU2V0KG9iaiwgUHVibGljYXRpb25SZWxSZWxh dGlvbklkLCBwcm9pZCk7CisJCQkJcGVyZm9ybURlbGV0aW9uKCZvYmosIERST1BfQ0FTQ0FERSwg MCk7CisJCQl9CisJCX0KKworCQlsaXN0X2ZyZWUoZXhjZXB0X3JlbGlkcyk7CiAJfQogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA3ZWU4NGVj MWM4My4uOTgzMWJlNTRiNDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYwpAQCAtMjIyOSw3ICsyMjI5LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkgKi8KIAkJCWlmIChwdWItPmFs bHRhYmxlcykKIAkJCXsKLQkJCQlMaXN0CSAgICpleGNlcHRwdWJpZHMgPSBOSUw7CisJCQkJTGlz dAkgICAqZXhjZXB0X3B1YmlkcyA9IE5JTDsKIAogCQkJCWlmIChhbV9wYXJ0aXRpb24pCiAJCQkJ ewpAQCAtMjI1Miw3ICsyMjUyLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJCSAqIGNsYXVzZS4gVGhlcmVmb3JlLCBmb3Ig YSBwYXJ0aXRpb24sIGV4Y2x1c2lvbiBtdXN0IGJlCiAJCQkJCSAqIGV2YWx1YXRlZCBhdCB0aGUg dG9wLW1vc3QgYW5jZXN0b3IuCiAJCQkJCSAqLwotCQkJCQlleGNlcHRwdWJpZHMgPSBHZXRSZWxh dGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKGxhc3RfYW5jZXN0b3JfcmVsaWQpOworCQkJCQlleGNl cHRfcHViaWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhsYXN0X2FuY2VzdG9y X3JlbGlkKTsKIAkJCQl9CiAJCQkJZWxzZQogCQkJCXsKQEAgLTIyNjAsMTMgKzIyNjAsMTMgQEAg Z2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24p CiAJCQkJCSAqIEZvciBhIHJlZ3VsYXIgdGFibGUgb3IgYSByb290IHBhcnRpdGlvbmVkIHRhYmxl LCBjaGVjawogCQkJCQkgKiBleGNsdXNpb24gb24gdGFibGUgaXRzZWxmLgogCQkJCQkgKi8KLQkJ CQkJZXhjZXB0cHViaWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhwdWJfcmVs aWQpOworCQkJCQlleGNlcHRfcHViaWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9u cyhwdWJfcmVsaWQpOwogCQkJCX0KIAotCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdHB1 YmlkcywgcHViLT5vaWQpKQorCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9wdWJpZHMs IHB1Yi0+b2lkKSkKIAkJCQkJcHVibGlzaCA9IHRydWU7CiAKLQkJCQlsaXN0X2ZyZWUoZXhjZXB0 cHViaWRzKTsKKwkJCQlsaXN0X2ZyZWUoZXhjZXB0X3B1Ymlkcyk7CiAKIAkJCQlpZiAoIXB1Ymxp c2gpCiAJCQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDhkYjNlMTI5OTI4 Li4xMWM4N2IxYjAwNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjM3OSw2ICsyMzc5LDIx IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCX0KIAllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIs ICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hB bnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCiAJCUNPTVBMRVRFX1dJVEgoIikiKTsK KwkvKiBBZnRlciBhIHNpbmdsZSBzY2hlbWEgbmFtZSBpbiBTRVQgY29udGV4dCwgb2ZmZXIgRVhD RVBUICggVEFCTEUgKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgJiYK KwkJCSAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCAo IFRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIlNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQi KSkKKwkJQ09NUExFVEVfV0lUSCgiKCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVN QSIsIE1hdGNoQW55LCAiRVhDRVBUIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUiKTsK KwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VU IiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRB QkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOworCQlDT01Q TEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9zY2hl bWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIs ICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJ CUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICgg Ki8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCBN YXRjaEFueU4sICJTRVQiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNoIiwgInB1Ymxp c2hfZ2VuZXJhdGVkX2NvbHVtbnMiLCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggZjU2YjA1MjRhZTku LjcwNzE1Y2U3ZTEwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dApAQCAtNTk0LDYgKzU5NCw5MiBAQCBFeGNlcHQgdGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0 cHViX3RibF9zMSIKICAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczIiCiAKKy0tIFNFVDogcmVw bGFjZSB0aGUgZXhjZXB0IGxpc3QgKGtlZXAgc2FtZSBzY2hlbWEsIGRpZmZlcmVudCBleGNlcHQg dGFibGUpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3My KTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9l eGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRl ZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUg ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1 Yl90ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczIiCisK Ky0tIGZhaWw6IHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UgYWxzbyBhcHBlYXJzIGluIHRoZSBleHBs aWNpdCB0YWJsZSBsaXN0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBT RVQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rl c3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7CitFUlJPUjogIHRhYmxl ICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIgY2Fubm90IGFwcGVhciBpbiBib3RoIHRoZSB0YWJs ZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZQorLS0gZXJyb3I6IGV4Y2VwdCB0YWJsZSdzIHNj aGVtYSAocHVibGljKSBub3QgaW4gdGhlIHB1YmxpY2F0aW9uJ3Mgc2NoZW1hIGxpc3QgKHB1Yl90 ZXN0KQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsKK0VS Uk9SOiAgdGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBu b3QgYmVsb25nIHRvIHNjaGVtYSAicHViX3Rlc3QiCitMSU5FIDE6IC4uLnhjZXB0IFNFVCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlcy4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIFNFVDogdW5xdWFsaWZpZWQgbmFtZSBpbiBFWENFUFQgaXMgaW1wbGljaXRseSBxdWFsaWZp ZWQgd2l0aCB0aGUgc2NoZW1hCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2Vw dCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJs X3MxKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRl cl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVy YXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5v bmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAg InB1Yl90ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEi CisKKy0tIFNFVCB3aXRob3V0IEVYQ0VQVCBjbGVhcnMgdGhlIGV4aXN0aW5nIGV4Y2VwdCBsaXN0 CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVt YXM6CisgICAgInB1Yl90ZXN0IgorCistLSBTRVQgdG8gYSBkaWZmZXJlbnQgc2NoZW1hIHJlbW92 ZXMgb2xkIHNjaGVtYSdzIEVYQ0VQVCBlbnRyaWVzCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxF IHRlc3RwdWJfdGJsX3MxKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1Rh YmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1YmxpYyIKKworLS0gZmFpbDogbm9uZXhpc3RlbnQg dGFibGUgaW4gRVhDRVBUIGNsYXVzZSAoU0VUIHBhdGgpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlKTsKK0VSUk9SOiAgcmVsYXRpb24gInB1Yl90 ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlIiBkb2VzIG5vdCBleGlzdAorLS0gU0VUOiBtdWx0aXBsZSBz Y2hlbWFzIGVhY2ggd2l0aCB0aGVpciBvd24gRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhD RVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj IEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1Rh YmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorICAgICJwdWJsaWMiCitFeGNlcHQg dGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKKyAgICAicHVibGljLnRlc3Rw dWJfdGJsMSIKKworLS0gZXJyb3I6IEVYQ0VQVCBpcyBub3QgYWxsb3dlZCB3aXRoIERST1AKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKK0VSUk9S OiAgRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggRFJPUCBpbiBBTFRFUiBQVUJM SUNBVElPTgorLS0gRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHJlbW92ZXMgYXNzb2NpYXRlZCBFWENF UFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9u IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVz IGZyb20gc2NoZW1hczoKKyAgICAicHVibGljIgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGlj LnRlc3RwdWJfdGJsMSIKKwogLS0gQ2xlYW51cAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsK IERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDA3MmQ1MDA1MGNkLi43 MmJiMmY3YTAyOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24u c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMjk2LDYg KzI5Niw0NCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlcwogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9hbHRlcl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChU QUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgdGVzdHB1Yl90YmxfczIpOwogXGRScCsgdGVz dHB1Yl9hbHRlcl9leGNlcHQKIAorLS0gU0VUOiByZXBsYWNlIHRoZSBleGNlcHQgbGlzdCAoa2Vl cCBzYW1lIHNjaGVtYSwgZGlmZmVyZW50IGV4Y2VwdCB0YWJsZSkKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQ VCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIpOworXGRScCsgdGVzdHB1Yl9hbHRlcl9l eGNlcHQKKworLS0gZmFpbDogdGFibGUgaW4gRVhDRVBUIGNsYXVzZSBhbHNvIGFwcGVhcnMgaW4g dGhlIGV4cGxpY2l0IHRhYmxlIGxpc3QKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJf ZXhjZXB0IFNFVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsKKworLS0g ZXJyb3I6IGV4Y2VwdCB0YWJsZSdzIHNjaGVtYSAocHVibGljKSBub3QgaW4gdGhlIHB1YmxpY2F0 aW9uJ3Mgc2NoZW1hIGxpc3QgKHB1Yl90ZXN0KQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9h bHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBw dWJsaWMudGVzdHB1Yl90YmwxKTsKKworLS0gU0VUOiB1bnF1YWxpZmllZCBuYW1lIGluIEVYQ0VQ VCBpcyBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVY Q0VQVCAoVEFCTEUgdGVzdHB1Yl90YmxfczEpOworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQK KworLS0gU0VUIHdpdGhvdXQgRVhDRVBUIGNsZWFycyB0aGUgZXhpc3RpbmcgZXhjZXB0IGxpc3QK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gU0VUIHRvIGEg ZGlmZmVyZW50IHNjaGVtYSByZW1vdmVzIG9sZCBzY2hlbWEncyBFWENFUFQgZW50cmllcworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibF9zMSk7CitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7CitcZFJw KyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCistLSBmYWlsOiBub25leGlzdGVudCB0YWJsZSBpbiBF WENFUFQgY2xhdXNlIChTRVQgcGF0aCkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJf ZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rl c3Qubm9uZXhpc3RlbnRfdGFibGUpOworCistLSBTRVQ6IG11bHRpcGxlIHNjaGVtYXMgZWFjaCB3 aXRoIHRoZWlyIG93biBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Fs dGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgRVhDRVBUIChUQUJM RSB0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gZXJyb3I6 IEVYQ0VQVCBpcyBub3QgYWxsb3dlZCB3aXRoIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKKworLS0gRFJPUCBUQUJMRVMgSU4gU0NIRU1B IHJlbW92ZXMgYXNzb2NpYXRlZCBFWENFUFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsg dGVzdHB1Yl9hbHRlcl9leGNlcHQKKwogLS0gQ2xlYW51cAogUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3Rw dWJfdGJsX3MyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2Vw dC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5kZXggMGJhNmQ2 ZjhiYjIuLjAxZWFmYjViN2M4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzdfZXhjZXB0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwK QEAgLTM3Niw2ICszNzYsNjEgQEAgJHJlc3VsdCA9CiBpcygkcmVzdWx0LCBxcSgwKSwKIAknQUxU RVIgLi4uIEFERCBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogZXhjbHVkZWQgdGFibGUgbm90IHN5 bmNlZCcpOwogCisjIFNFVDogcmVwbGFjZSB0aGUgZXhjZXB0IGxpc3Q7IHRhYl9leGNsdWRlZCBp cyBub3cgaW5jbHVkZWQgYW5kIHRhYl9wdWJsaXNoZWQgaXMgZXhjbHVkZWQuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiBzY2hfcHVi IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBzY2gxLnRhYl9wdWJsaXNo ZWQpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBTVUJTQ1JJUFRJT04gc2NoX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hf c3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAor CUlOU0VSVCBJTlRPIHNjaDEudGFiX3B1Ymxpc2hlZCBWQUxVRVMgKDcpOworCUlOU0VSVCBJTlRP IHNjaDEudGFiX2V4Y2x1ZGVkIFZBTFVFUyAoNyk7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFi X2V4Y2x1ZGVkIFdIRVJFIGEgPSA3Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4u IFNFVCBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogbmV3bHkgaW5jbHVkZWQgdGFibGUgaXMgcmVw bGljYXRlZCcKKyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCBXSEVS RSBhID0gNyIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ0FMVEVSIC4uLiBTRVQgVEFCTEVTIElO IFNDSEVNQSBFWENFUFQ6IG5vdy1leGNsdWRlZCB0YWJsZSBpcyBub3QgcmVwbGljYXRlZCcKKyk7 CisKKyMgU0VUIHdpdGhvdXQgRVhDRVBUOiBjbGVhcnMgdGhlIGV4Y2VwdCBsaXN0OyBib3RoIHRh YmxlcyBhcmUgbm93IHB1Ymxpc2hlZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHNjaF9wdWIgU0VUIFRBQkxFUyBJTiBTQ0hFTUEg c2NoMSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiBzY2hfc3ViIFJFRlJFU0ggUFVCTElDQVRJT04iKTsKKyRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9z dWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ SU5TRVJUIElOVE8gc2NoMS50YWJfcHVibGlzaGVkIFZBTFVFUyAoOCk7CisJSU5TRVJUIElOVE8g c2NoMS50YWJfZXhjbHVkZWQgVkFMVUVTICg4KTsKKykpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJf cHVibGlzaGVkIFdIRVJFIGEgPSA4Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4u IFNFVCBUQUJMRVMgSU4gU0NIRU1BIChubyBFWENFUFQpOiB0YWJfcHVibGlzaGVkIHJlcGxpY2F0 ZWQgYWZ0ZXIgZXhjZXB0IGxpc3QgY2xlYXJlZCcKKyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNj aDEudGFiX2V4Y2x1ZGVkIFdIRVJFIGEgPSA4Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxU RVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIChubyBFWENFUFQpOiB0YWJfZXhjbHVkZWQgcmVw bGljYXRlZCBhZnRlciBleGNlcHQgbGlzdCBjbGVhcmVkJworKTsKKwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7CiAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBz Y2hfcHViJyk7CiAKQEAgLTQ0Myw2ICs0OTgsMzYgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViJyk7CiAkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMScp OwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJ T04gdGFwX3B1YjInKTsKIAorIyBPSyB3aGVuIGEgdGFibGUgaXMgZXhjbHVkZWQgYnkgYSBUQUJM RVMgSU4gU0NIRU1BIEVYQ0VQVCBwdWJsaWNhdGlvbiwKKyMgYnV0IGlzIGluY2x1ZGVkIGJ5IGFu b3RoZXIgcHVibGljYXRpb24uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnVFJVTkNBVEUgdGFiMScpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdUUlVOQ0FURSB0YWIxJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMSBGT1IgVEFCTEVTIElO IFNDSEVNQSBwdWJsaWMgRVhDRVBUIChUQUJMRSBwdWJsaWMudGFiMSk7CisJQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRhcF9wdWIyIEZPUiBUQUJMRSB0YWIxOworCUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVT KDEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJ Q0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViJyk7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKElOU0VSVCBJTlRPIHRhYjEgVkFM VUVTKDIpKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWInKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUICogRlJPTSB0YWIxIE9SREVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyKSwK KwkiVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IHRhYmxlIGV4Y2x1ZGVkIGluIHNjaGVtYSBwdWIg YnV0IGluY2x1ZGVkIGJ5IGFub3RoZXIgcHViIGlzIHJlcGxpY2F0ZWQiCispOworCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9z dWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJ Q0FUSU9OIHRhcF9wdWIxJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMicpOworCiAkbm9kZV9wdWJsaXNoZXItPnN0b3Ao J2Zhc3QnKTsKIAogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000b53da60653418076--