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 1wPIP7-000cz1-0C for pgsql-hackers@arkaria.postgresql.org; Tue, 19 May 2026 11:14:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wPIP4-004Dea-2Y for pgsql-hackers@arkaria.postgresql.org; Tue, 19 May 2026 11:14:27 +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 1wPIP4-004DeR-11 for pgsql-hackers@lists.postgresql.org; Tue, 19 May 2026 11:14:27 +0000 Received: from mail-lf1-x12e.google.com ([2a00:1450:4864:20::12e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wPIP2-00000000MOo-3isq for pgsql-hackers@lists.postgresql.org; Tue, 19 May 2026 11:14:26 +0000 Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-5a4113ab355so4202564e87.1 for ; Tue, 19 May 2026 04:14:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779189263; cv=none; d=google.com; s=arc-20240605; b=LTphwyaJ0V+oa0/B6chFp69RfTY/zj61zcDrswUeyOV9hrEjRFd60mGKYMkNV8/zuR szAKWfcdPQNgJ2b2BtAi2xrrpoJZYpeLl0dOQsGsU6FKXgVtRiPXHDqACBCTs/ETc9oX 4VP5m9LgeI+OtI+570jolnaPMyZlxqu1+pdrlw8WFvamxaF9fIkB+LsbH/Z+AnNFodzp IGYqVI4amb4NjsKcjeduHnlExDJyr3nC1PBXK7dm9lMbT8rj9j/q8KARLauvh/WAE4ne yoG4/J2SP0SPPOxDfl7k5dyLuGUStYcleIlVLrwIww0SDtyqHXAIFb4yclptjqMtt0nF Mbkw== 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=HjUmlKDaW3u0p7Z/UZMmaoDMt2ustokpAS4fG9HAmXM=; fh=E4RTdkAmP7OVYVlC232JmIv/ZqKOWHeVSZ7wGt6+L/o=; b=I/2Q/4CZLkdkzJ1aRlqVNVdNRasq2zvVdse0j1MD2Z/TyJ2Wv/BVsFFaadFnKw7F4S Ox2mtOMw1l0I3wtn+Awww6quDHwErGhAeNx7/YQC3jvbULVZQsjHgD4sVgLVr6JLzbih eCQCMSfGAx/3oCg+NCI5wCAzjZMcV/fCHUcZQaECYqG6XCrC64Dd6dvv3VmyGDu+dRW1 OcH0sGbv9ArahlJ1CqFWKOQuLTTmcpLbvisXtWet6XNOGDrPLSShxHrRpFcSNUyCjFpF 7yrUJDCp5pQVFcOjXwTwO8aDXj45l8vYl7so5Ri4w+N3oKQ0S/Ry9brXN2G8riJPVlNm QB0Q==; 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=1779189263; x=1779794063; 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=HjUmlKDaW3u0p7Z/UZMmaoDMt2ustokpAS4fG9HAmXM=; b=HipHiAI/xnP29eSjWvOpBK+mCgjW/FJQuNzjnZR1S1tjoiqk/1QpWlU7Gw0iI1d7As yalP79XYZmx4A41P/e31nOJsXgiESDM9cZeJRPt+W5eFw6tA5aFkdhuvE1wbhGPs/s0x XJlV1bqZ/zyMm3mTZZOG6/RTMUmMddAMfbkGOPCkNqzRhPLSLj7Sa8BdHqZU+pyh3Ei+ 5CXCEy6JhLiHRvPuwBRKRiMtsxliRJfj6w1ig7yh+2R98MzDspshtKiCFSa8ub0R7M5q /XuFRiKkYt0DCYvFhDMsk+9k7E+lFyoRGXt/2T7vCQ8Dc/4pXUAysAPqWn4zUt4Efd60 jBCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779189263; x=1779794063; 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=HjUmlKDaW3u0p7Z/UZMmaoDMt2ustokpAS4fG9HAmXM=; b=oXyiTNfEkr2GSlwNsZOF4LavWZQj4XyV5/7ic9Nf6cNTsiqZxzhyJPcSHqaiqlhBV6 1ylmOBtNzbr95GLS0odr4kiU4W1yh1yKvw2AjDTVp3gA+YZp1n18k8njpqkDetRQDvmA 7BR9yZHdheVBwD1tv+r1GLSF++LOMLUYAHbVxR0uA/P9gtLPSsnR3Efigph08qrBJPMG 0pkoiMDUv4Rb5NlgTYwxOd9ovTBaekFe4Kcy3QSWdKzd/5uOO2PXZBpAT5Zhs8/37Ji3 5cMC172qMt0eGw89WruOHv1JIYMlzSVeW287Ar341MFFe72sXX1PijT4mXofC9M7/u+Y T3pw== X-Forwarded-Encrypted: i=1; AFNElJ/Mvyg6j04MBciuL2mW4rZs5y045hQMhEkh/D18T+0wtNj2xI/HFNSEC3C7ZCjw7+hHb9MN8fTGaPqz4CF+@lists.postgresql.org X-Gm-Message-State: AOJu0Yy5jVmJtBMjiHqVT4rLgSevZ+UBFBJrSj+rDRbIo7ZRgjKfbio8 N2/JsC6JCdn2PMJIXhH5zZtpKuW0kVk4+6DuwP09ZDfvL5g/xEnuEhc6i3UnLO66HDzUsdOEE2t 6XlK1m7sSUGqMIvCLz/1j9VbZ2rSC6Q== X-Gm-Gg: Acq92OHj03jeY/jwv/BkypXe9ZKTCIrJ4Md3yQXBNmFMtxUvIdD2LG4q29lb0WOERUS C8MhrkPy5mBeDOCLJbl8EFB0HZk1FeVuBYWhPPnqR0mXxmJXBNBB/uI3icU3czArJsBMFEnKha4 YkITeLwqi4RCmMDtY7H64Uk98D/A6vXki+E4kT2p299kc6SHyYtgXyCWlPdnBj6rJBdPMorakRY iW65qTag5VeMECmIQJDCXP+EkNcsGFFlgWkgP9G1H4EKMKv+h0Cl6ekVs8upYBjyflOOMNmenEp fqEADxFwH7DbUw== X-Received: by 2002:a05:6512:114c:b0:5a3:fd83:13f7 with SMTP id 2adb3069b0e04-5aa0e601254mr5801802e87.6.1779189262853; Tue, 19 May 2026 04:14:22 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Tue, 19 May 2026 16:44:09 +0530 X-Gm-Features: AVHnY4JP0Y8IzKNYCEN86OiQ5NmbadlL3FzqAJWMOnF4GSH8RBMoMv_yCzuvfok 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="000000000000004cbf065229c81c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000004cbf065229c81c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 15, 2026 at 12:49=E2=80=AFPM Peter Smith wrote: > > Hi Nisha. > > Some review comments for patch v5-0001. > Thanks Peter, for the review. > =3D=3D=3D=3D=3D=3D > src/backend/catalog/pg_publication.c > > publication_add_relation: > > 2. > + HeapTuple existing; > > Not sure if this is the best name. How about "tup"? > Noticed that a "HeapTuple tup;" is already declared, so we can use the existing one. > ~~~ > > 3. > + bool is_except =3D existing_form->prexcept; > > This variable is used only once. Not sure if that vindicates having it. > the is_except value is being used after releasing the tuple and closing the table since the next step errors out. But I have now removed existing_form and directly extracted the value instead. > ~~~ > > 8. > + list_free(schemaRels); > + } > + else > + result =3D list_concat(result, schemaRels); > > Why is 'schemaRels' only being freed when there is an EXCEPT? > IIUC, In the EXCEPT case, relid is an Oid, so lfirst_oid() copies the integer value from the cell, and lappend_oid() stores that value into a new cell in result. That means result does not reference schemaRels cells after the loop, so list_free(schemaRels) is safe. In the else branch, list_concat() directly transfers schemaRels cells into result. So freeing schemaRels there would corrupt the result. > =3D=3D=3D=3D=3D=3D > src/backend/parser/gram.y > > 14. > - | ColId opt_column_list OptWhereClause > + | ColId opt_column_list OptWhereClause opt_pub_except_clause > { > $$ =3D makeNode(PublicationObjSpec); > $$->pubobjtype =3D PUBLICATIONOBJ_CONTINUATION; > + $$->except_tables =3D $4; > > This seems suspicious. You cannot have an EXCEPT clause when there is > a column list or a WHERE clause, so what is this scenario? Maybe the > "$$->except_tables =3D $4;" needs to be moved to the 'else' block? > This handles cases where multi-schema continuation is used along with an EXCEPT clause, e.g.: create publication pub1 for tables in schema public, s1 except (table t1)= ; -- without the above, the EXCEPT clause would be silently ignored. Now, I agree that the above case can also be handled by moving "$$->except_tables =3D $4;" into the else branch. But then EXCEPT would again get silently ignored for table continuations with a column-list or where clause, e.g.,: postgres=3D# create publication pub2 for table t1, t2 (c1) except (table t1= ); CREATE PUBLICATION The idea here is to collect the EXCEPT list whenever it is specified for such continuation cases, and then explicitly raise an error in preprocess_pubobj_list() if a table publication object contains an EXCEPT list. > ~~~ > > 16. > + if (pubobj->pubobjtype =3D=3D PUBLICATIONOBJ_TABLES_IN_SCHEMA) > + { > + if (eobj->pubtable->relation->schemaname =3D=3D NULL) > + eobj->pubtable->relation->schemaname =3D pubobj->name; > + else if (strcmp(eobj->pubtable->relation->schemaname, > + pubobj->name) !=3D 0) > + ereport(ERROR, > + errcode(ERRCODE_SYNTAX_ERROR), > + errmsg("table \"%s.%s\" in EXCEPT clause does not belong to schema \"%s= \"", > + eobj->pubtable->relation->schemaname, > + eobj->pubtable->relation->relname, > + pubobj->name), > + parser_errposition(eobj->location)); > > 16a. > Introducing some more variables (like 'eobj_schemaname' and > 'eobj_relname') would simplify this code quite a bit. > Done. > ~ > > 16b. > Should make use of the recently committed function that gets > fully-qualified rel names so you can use "%s" instead of "%s.%s". > We cannot use RelationGetQualifiedRelationName() in the grammar, so I used quote_qualified_identifier() instead. ~~~~ Addressed all other comments as suggested. Please find the updated v6 patches attached. Patch-0001: updated as per the above comments. Patch-0002 and Patch-0003: adjusted for the Patch-0001 changes and some code simplification in tab-complete part. -- Thanks, Nisha --000000000000004cbf065229c81c Content-Type: application/octet-stream; name="v6-0001-Support-EXCEPT-clause-for-schema-level-publicatio.patch" Content-Disposition: attachment; filename="v6-0001-Support-EXCEPT-clause-for-schema-level-publicatio.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpcj3ig30 RnJvbSA0MjQ4NzI5YjkxYzcyZDY4YzNkZWVhNmI1NDBjZWZhMDRiMjUwMWMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBNb24sIDQgTWF5IDIwMjYgMTI6NDk6MjcgKzA1MzAKU3ViamVjdDogW1BBVENIIHY2 IDEvM10gU3VwcG9ydCBFWENFUFQgY2xhdXNlIGZvciBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb25z CgpFeHRlbmQgdGFibGUgZXhjbHVzaW9uIHN1cHBvcnQgaW4gcHVibGljYXRpb25zIHRvIGFsbG93 IHNwZWNpZmljCnRhYmxlcyB0byBiZSBleGNsdWRlZCBmcm9tIHNjaGVtYS1sZXZlbCBwdWJsaWNh dGlvbnMgdXNpbmcgYW4KRVhDRVBUIGNsYXVzZSBpbiBDUkVBVEUgUFVCTElDQVRJT04uCgpTdXBw b3J0ZWQgc3ludGF4OgpDUkVBVEUgUFVCTElDQVRJT04gPHB1Yj4gRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcyBFWENFUFQgKFRBQkxFIHQxLC4uLik7Ci0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCAgICAgICB8ICAgMyArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbCAgICB8ICAyMiArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgICAgICAgIHwgIDg2ICsrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5jICAgICAgfCAgNDcgKysrKysrLQogc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSAgICAgICAgICAgICAgICAgICB8ICA1MiArKysrKysrLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8ICAyMSArKystCiBzcmMvYmluL3BzcWwvZGVz Y3JpYmUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrKwogc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAyNiArKystCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmggICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0ICAgfCAxMDAgKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgIHwgIDY1ICsrKysrKysrKy0KIHNyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgICAgICAgfCAxMzMgKysrKysrKysrKysrKysrKysr Ky0KIDEzIGZpbGVzIGNoYW5nZWQsIDU0NSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA5ZTc4Njg0ODdkZS4uMTQz M2QyNjYwZmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTE3LDcg KzExNyw4IEBACiAgICBvciA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4uIFVu bGlrZSB0YWJsZXMsIHNlcXVlbmNlcyBjYW4gYmUKICAgIHN5bmNocm9uaXplZCBhdCBhbnkgdGlt ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQogICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbC1y ZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uIFdoZW4gYSBwdWJsaWNhdGlvbiBpcwotICAgY3JlYXRl ZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiwgYSB0YWJsZSBvciBzZXQg b2YgdGFibGVzIGNhbgorICAgY3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9s aXRlcmFsPiBvcgorICAgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCBh IHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2FuCiAgICBiZSBleHBsaWNpdGx5IGV4Y2x1ZGVkIGZy b20gcHVibGljYXRpb24gdXNpbmcgdGhlCiAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVi bGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJh bD48L2xpbms+CiAgICBjbGF1c2UuCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24u c2dtbAppbmRleCBmODJkNjQwZTZjYS4uN2ZhMGJkMTFmN2IgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjgsNyArMjgsNyBAQCBDUkVBVEUgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogPHBo cmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2Jq ZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0KLSAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4u LiBdCisgICAgVEFCTEVTIElOIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVzX2luX3NjaGVtYTwvcmVwbGFjZWFibGU+IFssIC4uLiBdCiAKIDxwaHJhc2U+YW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0PC9yZXBs YWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0zOSw2ICszOSwxMCBAQCBDUkVBVEUg UFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgogCiAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX29iamVjdDwv cmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdCiAKKzxwaHJhc2U+YW5k IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZXNfaW5fc2NoZW1hPC9yZXBsYWNl YWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbIEVYQ0VQVCAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKSBdCisKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+ CiAKICAgICBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KQEAgLTE0Miw2ICsxNDYsOCBAQCBDUkVBVEUgUFVCTElD QVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgog ICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNhdGlvbiBhcyBvbmUgdGhhdCByZXBs aWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KICAgICAgIHRoZSBzcGVjaWZpZWQgbGlz dCBvZiBzY2hlbWFzLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAg ICAgIFRhYmxlcyBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNl IGZvciBhIGdpdmVuIHNjaGVtYQorICAgICAgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0 aW9uLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CkBAIC0xNzMsNyArMTc5LDcgQEAgQ1JF QVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4KICAgICAgPHBhcmE+CiAgICAgICBNYXJrcyB0aGUgcHVibGljYXRpb24gYXMgb25l IHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIGluCiAgICAgICB0aGUgZGF0 YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLiBUYWJsZXMgbGlz dGVkIGluCi0gICAgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBhcmUgZXhjbHVk ZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCisgICAgICB0aGUgPGxpdGVyYWw+RVhDRVBUPC9saXRl cmFsPiBjbGF1c2UgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgogICAgICA8L3Bh cmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTk4LDcgKzIwNCw4 IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIFRoaXMg Y2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhl Ci0gICAgICBwdWJsaWNhdGlvbi4KKyAgICAgIHB1YmxpY2F0aW9uLiBJdCBjYW4gYmUgdXNlZCB3 aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBvcgorICAgICAgPGxpdGVyYWw+ Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJh PgogICAgICAgRm9yIGluaGVyaXRlZCB0YWJsZXMsIGlmIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+ IGlzIHNwZWNpZmllZCBiZWZvcmUgdGhlCkBAIC01MTUsNiArNTIyLDE1IEBAIENSRUFURSBQVUJM SUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEZPUiBUQUJMRSB1c2VycywgZGVwYXJ0bWVu dHMsIFRBQkxFUyBJCiBDUkVBVEUgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRpb24gRk9SIFRB QkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJh PgogCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxs IGNoYW5nZXMgZm9yIGFsbCB0aGUgdGFibGVzIHByZXNlbnQgaW4KKyAgIHRoZSBzY2hlbWEgPHN0 cnVjdG5hbWU+c2FsZXM8L3N0cnVjdG5hbWU+LCBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1lPmludGVy bmFsPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+ZHJhZnRzPC9zdHJ1Y3RuYW1lPjoKKzxw cm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElPTiBzYWxlc19maWx0ZXJlZCBGT1IgVEFC TEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQgKFRBQkxFIGludGVybmFsLCBkcmFmdHMpOworPC9w cm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQ3JlYXRlIGEgcHVibGlj YXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgZm9yIHRhYmxlIDxzdHJ1Y3RuYW1lPnVz ZXJzPC9zdHJ1Y3RuYW1lPiwKICAgIGJ1dCByZXBsaWNhdGVzIG9ubHkgY29sdW1ucyA8c3RydWN0 bmFtZT51c2VyX2lkPC9zdHJ1Y3RuYW1lPiBhbmQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRp b24uYwppbmRleCA1YzQ1N2Q5YWNhOC4uNmY5NDU5NTU5MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKQEAgLTQ0Niw3ICs0NDYsOCBAQCBHZXRQdWJQYXJ0aXRpb25PcHRpb25S ZWxhdGlvbnMoTGlzdCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAg KiBhbmNlc3RvciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICovCiBPaWQKLUdldFRvcE1v c3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQg KmFuY2VzdG9yX2xldmVsKQorR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVi b2lkLCBMaXN0ICphbmNlc3RvcnMsCisJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwsIExpc3Qg KmV4Y2VwdF9wdWJpZHMpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAJT2lkCQkJdG9wbW9zdF9yZWxp ZCA9IEludmFsaWRPaWQ7CkBAIC00NzMsNyArNDc0LDggQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5Q dWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2 ZWwKIAkJZWxzZQogCQl7CiAJCQlhc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRpb25z KGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKSk7Ci0JCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFz Y2hlbWFQdWJpZHMsIHB1Ym9pZCkpCisJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFzY2hlbWFQdWJp ZHMsIHB1Ym9pZCkgJiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9wdWJpZHMsIHB1Ym9p ZCkpCiAJCQl7CiAJCQkJdG9wbW9zdF9yZWxpZCA9IGFuY2VzdG9yOwogCkBAIC01NDUsMTggKzU0 NywzMCBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJl bEluZm8gKnByaSwKIAkgKiBkdXBsaWNhdGVzLCBpdCdzIGhlcmUganVzdCB0byBwcm92aWRlIG5p Y2VyIGVycm9yIG1lc3NhZ2UgaW4gY29tbW9uCiAJICogY2FzZS4gVGhlIHJlYWwgcHJvdGVjdGlv biBpcyB0aGUgdW5pcXVlIGtleSBvbiB0aGUgY2F0YWxvZy4KIAkgKi8KLQlpZiAoU2VhcmNoU3lz Q2FjaGVFeGlzdHMyKFBVQkxJQ0FUSU9OUkVMTUFQLCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwK LQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKSkKKwl0dXAgPSBTZWFyY2hTeXNDYWNo ZTIoUFVCTElDQVRJT05SRUxNQVAsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJICBP YmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQog CXsKKwkJYm9vbAkJaXNfZXhjZXB0ID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RS VUNUKHR1cCkpLT5wcmV4Y2VwdDsKKworCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKIAkJdGFibGVf Y2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCQlpZiAoaWZfbm90X2V4aXN0cykKIAkJ CXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVzczsKIAotCQllcmVwb3J0KEVSUk9SLAotCQkJCShl cnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCi0JCQkJIGVycm1zZygicmVsYXRpb24g XCIlc1wiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uIFwiJXNcIiIsCi0JCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CisJCWlmIChp c19leGNlcHQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJ Q0FURV9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ0YWJsZSBcIiVzXCIgY2Fubm90IGJlIGFkZGVk IGJlY2F1c2UgaXQgaXMgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbiBcIiVzXCIiLAorCQkJCQkJ CVJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25OYW1lKHRhcmdldHJlbCksCisJCQkJCQkJcHVi LT5uYW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMg YWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRpb24gXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCiAJY2hlY2tfcHVi bGljYXRpb25fYWRkX3JlbGF0aW9uKHByaSk7CkBAIC05ODIsMTIgKzk5NiwxMyBAQCBHZXRJbmNs dWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KQogICogR2V0cyBsaXN0IG9mIHRhYmxlIG9pZHMgdGhhdCB3ZXJlIHNwZWNpZmll ZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgYQogICogcHVibGljYXRpb24uCiAgKgotICogVGhp cyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4KKyAqIFRo aXMgaXMgdXNlZCBmb3IgRk9SIEFMTCBUQUJMRVMgYW5kIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1 YmxpY2F0aW9ucywKKyAqIGJvdGggb2Ygd2hpY2ggc3VwcG9ydCBFWENFUFQgVEFCTEUuCiAgKi8K IExpc3QgKgogR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKLQlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQp LT5hbGx0YWJsZXMpOworCUFzc2VydChHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyB8 fCBpc19zY2hlbWFfcHVibGljYXRpb24ocHViaWQpKTsKIAogCXJldHVybiBnZXRfcHVibGljYXRp b25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1ZSk7CiB9CkBAIC0xMjMyLDIyICsx MjQ3LDY3IEBAIEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVi bGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCiAvKgogICogR2V0cyB0aGUgbGlzdCBvZiBh bGwgcmVsYXRpb25zIHB1Ymxpc2hlZCBieSBGT1IgVEFCTEVTIElOIFNDSEVNQQotICogcHVibGlj YXRpb24uCisgKiBwdWJsaWNhdGlvbiwgZXhjbHVkaW5nIGFueSB0YWJsZXMgbGlzdGVkIGluIHRo ZSBFWENFUFQgY2xhdXNlLgogICovCiBMaXN0ICoKIEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVs YXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewogCUxp c3QJICAgKnJlc3VsdCA9IE5JTDsKIAlMaXN0CSAgICpwdWJzY2hlbWFsaXN0ID0gR2V0UHVibGlj YXRpb25TY2hlbWFzKHB1YmlkKTsKKwlMaXN0CSAgICpleGNlcHRsaXN0ID0gTklMOwogCUxpc3RD ZWxsICAgKmNlbGw7CiAKKwkvKiBnZXQgdGhlIGxpc3Qgb2YgdGFibGVzIGV4Y2x1ZGVkIHZpYSBF WENFUFQgVEFCTEUgZm9yIHRoaXMgcHVibGljYXRpb24gKi8KKwlpZiAocHVic2NoZW1hbGlzdCAh PSBOSUwpCisJCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1Ymlk LCBwdWJfcGFydG9wdCk7CisKIAlmb3JlYWNoKGNlbGwsIHB1YnNjaGVtYWxpc3QpCiAJewogCQlP aWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQoY2VsbCk7CiAJCUxpc3QJICAgKnNjaGVtYVJlbHMg PSBOSUw7CiAKIAkJc2NoZW1hUmVscyA9IEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHNj aGVtYWlkLCBwdWJfcGFydG9wdCk7Ci0JCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgc2No ZW1hUmVscyk7CisKKwkJaWYgKGV4Y2VwdGxpc3QgIT0gTklMKQorCQl7CisJCQkvKiBmaWx0ZXIg b3V0IGFueSB0YWJsZXMgdGhhdCBhcHBlYXIgaW4gdGhlIEVYQ0VQVCBsaXN0ICovCisJCQlMaXN0 Q2VsbCAgICpybGM7CisKKwkJCWZvcmVhY2gocmxjLCBzY2hlbWFSZWxzKQorCQkJeworCQkJCU9p ZAkJCXJlbGlkID0gbGZpcnN0X29pZChybGMpOworCQkJCWJvb2wJCWV4Y2x1ZGVkID0gbGlzdF9t ZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKTsKKworCQkJCS8qCisJCQkJICogQWxzbyBleGNs dWRlIGFueSByZWxhdGlvbiB3aG9zZSBwYXJ0aXRpb24gYW5jZXN0b3IgaXMgaW4KKwkJCQkgKiB0 aGUgRVhDRVBUIGxpc3QuICBUaGlzIG1hdHRlcnMgd2hlbiBwdWJfcGFydG9wdCBpcworCQkJCSAq IFBVQkxJQ0FUSU9OX1BBUlRfUk9PVDogdGhlIGV4Y2VwdCBsaXN0IGhvbGRzIG9ubHkgdGhlIHJv b3QKKwkJCQkgKiBPSUQsIGJ1dCB0aGUgc2NoZW1hIHNjYW4gbWF5IGFsc28gcmV0dXJuIGluZGl2 aWR1YWwKKwkJCQkgKiBwYXJ0aXRpb24gcmVsYXRpb25zIHRoYXQgbGl2ZSBpbiB0aGUgc2FtZSBz Y2hlbWEuCisJCQkJICovCisJCQkJaWYgKCFleGNsdWRlZCAmJiBnZXRfcmVsX3JlbGlzcGFydGl0 aW9uKHJlbGlkKSkKKwkJCQl7CisJCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRp b25fYW5jZXN0b3JzKHJlbGlkKTsKKwkJCQkJTGlzdENlbGwgICAqYWxjOworCisJCQkJCWZvcmVh Y2goYWxjLCBhbmNlc3RvcnMpCisJCQkJCXsKKwkJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQoZXhj ZXB0bGlzdCwgbGZpcnN0X29pZChhbGMpKSkKKwkJCQkJCXsKKwkJCQkJCQlleGNsdWRlZCA9IHRy dWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJbGlzdF9mcmVlKGFuY2Vz dG9ycyk7CisJCQkJfQorCisJCQkJaWYgKCFleGNsdWRlZCkKKwkJCQkJcmVzdWx0ID0gbGFwcGVu ZF9vaWQocmVzdWx0LCByZWxpZCk7CisJCQl9CisJCQlsaXN0X2ZyZWUoc2NoZW1hUmVscyk7CisJ CX0KKwkJZWxzZQorCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBzY2hlbWFSZWxzKTsK IAl9CiAKIAlyZXR1cm4gcmVzdWx0OwpAQCAtMTM4MSw3ICsxNDQxLDcgQEAgaXNfdGFibGVfcHVi bGlzaGFibGVfaW5fcHVibGljYXRpb24oT2lkIHJlbGlkLCBQdWJsaWNhdGlvbiAqcHViKQogCSAq IHRoZSBwdWJsaWNhdGlvbiwgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIChyZXR1cm4gdHJ1ZSkuCiAJ ICovCiAJaWYgKHJlbGlzcGFydGl0aW9uICYmCi0JCU9pZElzVmFsaWQoR2V0VG9wTW9zdEFuY2Vz dG9ySW5QdWJsaWNhdGlvbihwdWItPm9pZCwgYW5jZXN0b3JzLCBOVUxMKSkpCisJCU9pZElzVmFs aWQoR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWItPm9pZCwgYW5jZXN0b3JzLCBO VUxMLCBOSUwpKSkKIAkJcmV0dXJuICFwdWItPnB1YnZpYXJvb3Q7CiAKIAkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA0NDBhZGIzNTZhZC4uOTUxODZjYTczNzcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0zMDUsNyArMzA1LDcg QEAgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVs YXRpb24sIExpc3QgKmFuY2VzdG9ycywKIAlpZiAocHVidmlhcm9vdCAmJiByZWxhdGlvbi0+cmRf cmVsLT5yZWxpc3BhcnRpdGlvbikKIAl7CiAJCXB1Ymxpc2hfYXNfcmVsaWQKLQkJCT0gR2V0VG9w TW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMKTsKKwkJCT0g R2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMLCBO SUwpOwogCiAJCWlmICghT2lkSXNWYWxpZChwdWJsaXNoX2FzX3JlbGlkKSkKIAkJCXB1Ymxpc2hf YXNfcmVsaWQgPSByZWxpZDsKQEAgLTM4OSw3ICszODksNyBAQCBwdWJfY29udGFpbnNfaW52YWxp ZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAog CSAqLwogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9u KQogCXsKLQkJcHVibGlzaF9hc19yZWxpZCA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRp b24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCk7CisJCXB1Ymxpc2hfYXNfcmVsaWQgPSBHZXRUb3BN b3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwsIE5JTCk7CiAK IAkJaWYgKCFPaWRJc1ZhbGlkKHB1Ymxpc2hfYXNfcmVsaWQpKQogCQkJcHVibGlzaF9hc19yZWxp ZCA9IHJlbGlkOwpAQCAtOTU5LDYgKzk1OSw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCX0KIAllbHNlIGlmICgh c3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJeworCQlMaXN0CSAgICpleHBsaWNpdHJlbGlkcyA9 IE5JTDsKKwogCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8K IAkJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQogCQkJZXJlcG9ydChF UlJPUiwKQEAgLTk3Nyw2ICs5NzksMTkgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCQkJCQkgICBzY2hlbWFp ZGxpc3QgIT0gTklMLAogCQkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwog CisJCQkvKgorCQkJICogQ29sbGVjdCBleHBsaWNpdCB0YWJsZSBPSURzIG5vdywgYmVmb3JlIHdl IGNsb3NlIHRoZSByZWxhdGlvbgorCQkJICogbGlzdCwgc28gdGhhdCBleGNlcHQtdGFibGUgdmFs aWRhdGlvbiBiZWxvdyBjYW4gY2hlY2sgZm9yCisJCQkgKiBjb250cmFkaWN0aW9ucyB3aXRob3V0 IHJlbHlpbmcgb24gYSBjYXRhbG9nIHNjYW4gdGhhdCBtaWdodCBub3QKKwkJCSAqIHlldCBzZWUg dGhlIGp1c3QtaW5zZXJ0ZWQgcm93cy4KKwkJCSAqLworCQkJaWYgKGV4Y2VwdHJlbGF0aW9ucyAh PSBOSUwpCisJCQl7CisJCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIHJl bHMpCisJCQkJCWV4cGxpY2l0cmVsaWRzID0gbGFwcGVuZF9vaWQoZXhwbGljaXRyZWxpZHMsCisJ CQkJCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKSk7CisJCQl9CisKIAkJ CVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CiAJCQlDbG9z ZVRhYmxlTGlzdChyZWxzKTsKIAkJfQpAQCAtOTg5LDYgKzEwMDQsMzQgQEAgQ3JlYXRlUHVibGlj YXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJ CQkgKi8KIAkJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7CiAJCQlQdWJsaWNhdGlvbkFk ZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOworCisJCQlpZiAoZXhj ZXB0cmVsYXRpb25zICE9IE5JTCkKKwkJCXsKKwkJCQlMaXN0CSAgICpleGNlcHRyZWxzOworCisJ CQkJZXhjZXB0cmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0cmVsYXRpb25zKTsKKworCQkJCS8q CisJCQkJICogVmFsaWRhdGUgdGhhdCBlYWNoIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCBhbHNvIGlu IHRoZQorCQkJCSAqIGV4cGxpY2l0IHRhYmxlIGxpc3QgKHdoaWNoIHdvdWxkIGJlIGNvbnRyYWRp Y3RvcnkpLiBVc2UgdGhlCisJCQkJICogaW4tbWVtb3J5IGV4cGxpY2l0cmVsaWRzIGNvbGxlY3Rl ZCBhYm92ZSByYXRoZXIgdGhhbgorCQkJCSAqIHJlLXJlYWRpbmcgdGhlIGNhdGFsb2csIHdoaWNo IG1heSBub3QgeWV0IHNlZSB0aGUKKwkJCQkgKiBqdXN0LWluc2VydGVkIHJvd3MuCisJCQkJICov CisJCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIGV4Y2VwdHJlbHMpCisJ CQkJeworCQkJCQlPaWQJCQlleGNlcHRfcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHByaS0+cmVs YXRpb24pOworCisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQoZXhwbGljaXRyZWxpZHMsIGV4Y2Vw dF9yZWxpZCkpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCQllcnJtc2coInRhYmxlIFwiJXNcIiBj YW5ub3QgYXBwZWFyIGluIGJvdGggdGhlIHRhYmxlIGxpc3QgYW5kIHRoZSBFWENFUFQgY2xhdXNl IiwKKwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25OYW1lKHByaS0+cmVs YXRpb24pKSk7CisJCQkJfQorCisJCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCBleGNl cHRyZWxzLCB0cnVlLCBOVUxMKTsKKwkJCQlDbG9zZVRhYmxlTGlzdChleGNlcHRyZWxzKTsKKwkJ CX0KIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZmY0ZTEzODhjNTUuLjQ1MTRlZjdmOWMyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3Mu aCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vy LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRldGlt ZS5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgogCkBAIC0xMTI3Miw3ICsxMTI3Myw3IEBAIEFs dGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dO RVIgVE8gUm9sZVNwZWMKICAqIHB1Yl9vYmogaXMgb25lIG9mOgogICoKICAqCQlUQUJMRSB0YWJs ZSBbLCAuLi5dCi0gKgkJVEFCTEVTIElOIFNDSEVNQSBzY2hlbWEgWywgLi4uXQorICoJCVRBQkxF UyBJTiBTQ0hFTUEgc2NoZW1hIFtFWENFUFQgKFRBQkxFIHRhYmxlIFssIC4uLl0gKV0gWywgLi4u XQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtMTEzMzIsMjMgKzExMzMzLDI2IEBA IFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDM7CiAJ CQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNDsKIAkJCQl9Ci0JCQl8IFRBQkxFUyBJ Tl9QIFNDSEVNQSBDb2xJZAorCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQgb3B0X3B1Yl9l eGNlcHRfY2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3Bl Yyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVN QTsKIAkJCQkJJCQtPm5hbWUgPSAkNDsKKwkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkNTsKIAkJ CQkJJCQtPmxvY2F0aW9uID0gQDQ7CiAJCQkJfQotCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ1VS UkVOVF9TQ0hFTUEKKwkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENVUlJFTlRfU0NIRU1BIG9wdF9w dWJfZXhjZXB0X2NsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9i alNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9D VVJfU0NIRU1BOworCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQ1OwogCQkJCQkkJC0+bG9jYXRp b24gPSBANDsKIAkJCQl9Ci0JCQl8IENvbElkIG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVz ZQorCQkJfCBDb2xJZCBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2Ugb3B0X3B1Yl9leGNl cHRfY2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7 CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOworCQkJ CQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQ0OwogCQkJCQkvKgogCQkJCQkgKiBJZiBlaXRoZXIgYSBy b3cgZmlsdGVyIG9yIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCwgY3JlYXRlCiAJCQkJCSAqIGEg UHVibGljYXRpb25UYWJsZSBvYmplY3QuCkBAIC0xMTM5MiwxMCArMTEzOTYsMTEgQEAgUHVibGlj YXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMjsKIAkJCQkJJCQt PnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQzOwogCQkJCX0KLQkJCXwgQ1VSUkVOVF9TQ0hFTUEK KwkJCXwgQ1VSUkVOVF9TQ0hFTUEgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJewogCQkJCQkk JCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0g UFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOworCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQy OwogCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQkJOwpAQCAtMjA3ODQsNiArMjA3 ODksOCBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3Rz X2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogLyoKICAqIFByb2Nlc3MgcHVib2Jqc3BlY19saXN0 IHRvIGNoZWNrIGZvciBlcnJvcnMgaW4gYW55IG9mIHRoZSBvYmplY3RzIGFuZAogICogY29udmVy dCBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT04gaW50byBhcHByb3ByaWF0ZSBQdWJsaWNhdGlv bk9ialNwZWNUeXBlLgorICogQWxzbyBmbGF0dGVucyBleGNlcHRfdGFibGVzIGZyb20gVEFCTEVT IElOIFNDSEVNQSBub2RlcyBpbnRvIHRoZSBsaXN0IHNvCisgKiB0aGF0IE9iamVjdHNJblB1Ymxp Y2F0aW9uVG9PaWRzKCkgc2VlcyB0aGVtIGFzIHRvcC1sZXZlbCBFWENFUFRfVEFCTEUgZW50cmll cy4KICAqLwogc3RhdGljIHZvaWQKIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jq c3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKQEAgLTIwODEyLDYgKzIwODE5LDEz IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcikKIAogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FU SU9OT0JKX1RBQkxFKQogCQl7CisJCQkvKiBFWENFUFQgaXMgbm90IHZhbGlkIGZvciB0YWJsZSBv YmplY3RzICovCisJCQlpZiAocHVib2JqLT5leGNlcHRfdGFibGVzICE9IE5JTCkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQll cnJtc2coIkVYQ0VQVCBpcyBub3QgYWxsb3dlZCBmb3IgVEFCTEUgcHVibGljYXRpb24gb2JqZWN0 cyIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKwogCQkJ LyogcmVsYXRpb24gbmFtZSBvciBwdWJ0YWJsZSBtdXN0IGJlIHNldCBmb3IgdGhpcyB0eXBlIG9m IG9iamVjdCAqLwogCQkJaWYgKCFwdWJvYmotPm5hbWUgJiYgIXB1Ym9iai0+cHVidGFibGUpCiAJ CQkJZXJlcG9ydChFUlJPUiwKQEAgLTIwODYwLDYgKzIwODc0LDM0IEBAIHByZXByb2Nlc3NfcHVi b2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikK IAkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNnKCJpbnZh bGlkIHNjaGVtYSBuYW1lIiksCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2Nh dGlvbikpOworCisJCQkvKiBGbGF0dGVuIEVYQ0VQVCBlbnRyaWVzIGludG8gdGhlIHRvcC1sZXZl bCBsaXN0ICovCisJCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvbk9ialNwZWMsIGVvYmosIHB1Ym9i ai0+ZXhjZXB0X3RhYmxlcykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFVucXVhbGlmaWVkIG5hbWVz IGFyZSBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBwYXJlbnQKKwkJCQkgKiBzY2hlbWEu ICBRdWFsaWZpZWQgbmFtZXMgbXVzdCBtYXRjaCB0aGUgcGFyZW50IHNjaGVtYSDigJQKKwkJCQkg KiBlYWNoIEVYQ0VQVCBjbGF1c2UgaXMgYm91bmQgdG8gZXhhY3RseSBvbmUgc2NoZW1hLCBzbwor CQkJCSAqIGNyb3NzLXNjaGVtYSBlbnRyaWVzIGFyZSByZWplY3RlZCBhdCBwYXJzZSB0aW1lLgor CQkJCSAqLworCQkJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFC TEVTX0lOX1NDSEVNQSkKKwkJCQl7CisJCQkJCWNvbnN0IGNoYXIgKmVvYmpfc2NoZW1hbmFtZSA9 IGVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+c2NoZW1hbmFtZTsKKwkJCQkJY29uc3QgY2hhciAq ZW9ial9yZWxuYW1lID0gZW9iai0+cHVidGFibGUtPnJlbGF0aW9uLT5yZWxuYW1lOworCisJCQkJ CWlmIChlb2JqX3NjaGVtYW5hbWUgPT0gTlVMTCkKKwkJCQkJCWVvYmotPnB1YnRhYmxlLT5yZWxh dGlvbi0+c2NoZW1hbmFtZSA9IHB1Ym9iai0+bmFtZTsKKwkJCQkJZWxzZSBpZiAoc3RyY21wKGVv Ympfc2NoZW1hbmFtZSwgcHVib2JqLT5uYW1lKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygi dGFibGUgXCIlc1wiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSBc IiVzXCIiLAorCQkJCQkJCQkJICAgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoZW9ial9zY2hl bWFuYW1lLCBlb2JqX3JlbG5hbWUpLAorCQkJCQkJCQkJICAgcHVib2JqLT5uYW1lKSwKKwkJCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKGVvYmotPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJfQorCQkJ cHVib2Jqc3BlY19saXN0ID0gbGlzdF9jb25jYXQocHVib2Jqc3BlY19saXN0LCBwdWJvYmotPmV4 Y2VwdF90YWJsZXMpOworCQkJcHVib2JqLT5leGNlcHRfdGFibGVzID0gTklMOwogCQl9CiAKIAkJ cHJldm9ianR5cGUgPSBwdWJvYmotPnB1Ym9ianR5cGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA0ZWNmY2JmZjdhYi4uYjU1ZDdhYjdjZDEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjA5Nyw2 ICsyMDk3LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRp b24gcmVsYXRpb24pCiAJCSAqIGFyZSBhYnNvcmJlZCB3aGlsZSBkZWNvZGluZyBXQUwuCiAJCSAq LwogCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1h SWQpOworCQlMaXN0CSAgICpzY2hlbWFFeGNlcHRQdWJpZHM7CiAJCUxpc3RDZWxsICAgKmxjOwog CQlPaWQJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CiAJCWludAkJCXB1Ymxpc2hfYW5jZXN0 b3JfbGV2ZWwgPSAwOwpAQCAtMjEwNCw2ICsyMTA1LDE5IEBAIGdldF9yZWxfc3luY19lbnRyeShQ R091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQljaGFyCQlyZWxraW5kID0g Z2V0X3JlbF9yZWxraW5kKHJlbGlkKTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5J TDsKIAorCQkvKgorCQkgKiBGb3IgdGhlIHNjaGVtYSBFWENFUFQgY2hlY2ssIHdlIG11c3QgbG9v ayB1cCB0aGUgdG9wLW1vc3QgYW5jZXN0b3IKKwkJICogcmF0aGVyIHRoYW4gdGhlIHJlbGF0aW9u IGl0c2VsZi4gIGNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbigpCisJCSAqIHByZXZlbnRz IGluZGl2aWR1YWwgcGFydGl0aW9ucyBmcm9tIGFwcGVhcmluZyBpbiB0aGUgRVhDRVBUIGNsYXVz ZSwKKwkJICogc28gb25seSBhIHJvb3QgKG5vbi1wYXJ0aXRpb24pIHRhYmxlIGNhbiBoYXZlIHBy ZXhjZXB0ID0gdHJ1ZS4KKwkJICogVXNpbmcgdGhlIHBhcnRpdGlvbidzIG93biBPSUQgd291bGQg YWx3YXlzIHJldHVybiBOSUwgYW5kIG1pc3MgdGhlCisJCSAqIGV4Y2x1c2lvbi4KKwkJICovCisJ CU9pZAkJCXJvb3RfcmVsaWQgPSBhbV9wYXJ0aXRpb24gPworCQkJbGxhc3Rfb2lkKGdldF9wYXJ0 aXRpb25fYW5jZXN0b3JzKHJlbGlkKSkgOiByZWxpZDsKKworCQlzY2hlbWFFeGNlcHRQdWJpZHMg PSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKHJvb3RfcmVsaWQpOworCiAJCS8qIFJl bG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICovCiAJCWlmICghcHVibGlj YXRpb25zX3ZhbGlkKQogCQl7CkBAIC0yMjY3LDcgKzIyODEsOCBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAogCQkJCQlhbmNlc3Rv ciA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViLT5vaWQsCiAJCQkJCQkJCQkJ CQkJCQkgICBhbmNlc3RvcnMsCi0JCQkJCQkJCQkJCQkJCQkgICAmbGV2ZWwpOworCQkJCQkJCQkJ CQkJCQkJICAgJmxldmVsLAorCQkJCQkJCQkJCQkJCQkJICAgc2NoZW1hRXhjZXB0UHViaWRzKTsK IAogCQkJCQlpZiAoYW5jZXN0b3IgIT0gSW52YWxpZE9pZCkKIAkJCQkJewpAQCAtMjI4MSw3ICsy Mjk2LDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24g cmVsYXRpb24pCiAJCQkJfQogCiAJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChwdWJpZHMsIHB1Yi0+ b2lkKSB8fAotCQkJCQlsaXN0X21lbWJlcl9vaWQoc2NoZW1hUHViaWRzLCBwdWItPm9pZCkgfHwK KwkJCQkJKGxpc3RfbWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSAmJgorCQkJCQkg IWxpc3RfbWVtYmVyX29pZChzY2hlbWFFeGNlcHRQdWJpZHMsIHB1Yi0+b2lkKSkgfHwKIAkJCQkJ YW5jZXN0b3JfcHVibGlzaGVkKQogCQkJCQlwdWJsaXNoID0gdHJ1ZTsKIAkJCX0KQEAgLTIzNjAs NiArMjM3Niw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0 aW9uIHJlbGF0aW9uKQogCiAJCWxpc3RfZnJlZShwdWJpZHMpOwogCQlsaXN0X2ZyZWUoc2NoZW1h UHViaWRzKTsKKwkJbGlzdF9mcmVlKHNjaGVtYUV4Y2VwdFB1Ymlkcyk7CiAJCWxpc3RfZnJlZShy ZWxfcHVibGljYXRpb25zKTsKIAogCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0gdHJ1ZTsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggZTE0NDk2NTRmOTYuLmU1YjFhNzBlMDVlIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNzAzOCw2ICs3 MDM4LDI0IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJ aWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXMgZnJvbSBzY2hl bWFzOiIpLAogCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQogCQkJCQlnb3RvIGVycm9yX3JldHVy bjsKKworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQl7CisJCQkJCS8qCisJ CQkJCSAqIEdldCB0YWJsZXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIHRoaXMgc2NoZW1hCisJ CQkJCSAqIHB1YmxpY2F0aW9uLgorCQkJCQkgKi8KKwkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1 ZiwKKwkJCQkJCQkJCSAgIlNFTEVDVCBjb25jYXQoYy5yZWxuYW1lc3BhY2U6OnJlZ25hbWVzcGFj ZSwgJy4nLCBjLnJlbG5hbWUpXG4iCisJCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xh c3MgY1xuIgorCQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCQkJICAiV0hFUkUgcHIucHJw dWJpZCA9ICclcydcbiIKKwkJCQkJCQkJCSAgIiAgQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJ CQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOworCQkJCQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRp b25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6IiksCisJCQkJCQkJCQkJCQkJdHJ1ZSwgJmNv bnQpKQorCQkJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCQkJfQogCQkJfQogCQl9CiAJCWVsc2UK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYwppbmRleCA3NTEzMjUyOGYzYS4uMmM2NTJjZjMyYTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMKQEAgLTEwNjUsNiArMTA2NSwxNSBAQCBzdGF0aWMgY29uc3QgU2No ZW1hUXVlcnkgUXVlcnlfZm9yX3RyaWdnZXJfb2ZfdGFibGUgPSB7CiAiU0VMRUNUIG5zcG5hbWUg RlJPTSBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSAiXAogIiBXSEVSRSBuc3BuYW1lIExJS0UgJyVz JyIKIAorI2RlZmluZSBRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNfaW5fc2NoZW1hIFwKKyJTRUxF Q1Qgbi5uc3BuYW1lIHx8ICcuJyB8fCBjLnJlbG5hbWUgIlwKKyIgIEZST00gcGdfY2F0YWxvZy5w Z19jbGFzcyBjICJcCisiICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBu Lm9pZCA9IGMucmVsbmFtZXNwYWNlICJcCisiIFdIRVJFIGMucmVsa2luZCBJTiAoIiBDcHBBc1N0 cmluZzIoUkVMS0lORF9SRUxBVElPTikgIiwgIiBcCisJCQkJCQlDcHBBc1N0cmluZzIoUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSkgIikgIlwKKyIgICBBTkQgKG4ubnNwbmFtZSB8fCAnLicgfHwg Yy5yZWxuYW1lKSBMSUtFICclcycgIlwKKyIgICBBTkQgbi5uc3BuYW1lID0gJyVzJyIKKwogLyog VXNlIENPTVBMRVRFX1dJVEhfUVVFUllfVkVSQkFUSU0gd2l0aCB0aGVzZSBxdWVyaWVzIGZvciBH VUMgbmFtZXM6ICovCiAjZGVmaW5lIFF1ZXJ5X2Zvcl9saXN0X29mX2FsdGVyX3N5c3RlbV9zZXRf dmFycyBcCiAiU0VMRUNUIHBnX2NhdGFsb2cubG93ZXIobmFtZSkgRlJPTSBwZ19jYXRhbG9nLnBn X3NldHRpbmdzICJcCkBAIC0zNzg1LDggKzM3OTQsMjEgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMo aW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlz dF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAiIEFORCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUl JyIsCiAJCQkJCQkJCSAiQ1VSUkVOVF9TQ0hFTUEiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJDUkVB VEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NI RU1BIiwgTWF0Y2hBbnkpICYmICghZW5kc193aXRoKHByZXZfd2QsICcsJykpKQotCQlDT01QTEVU RV9XSVRIKCJXSVRIICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkp ICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUICgg VEFCTEUiLCAiV0lUSCAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55 LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsKKwllbHNlIGlmIChNYXRj aGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAi SU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRI KCJUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQ VCIsICIoIiwgIlRBQkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRf d2QpOworCQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3Rh Ymxlc19pbl9zY2hlbWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElD QVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hB bnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgZW5kc193aXRoKHByZXZf d2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29m X3RhYmxlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBU IiwgIigiLCAiVEFCTEUiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkK KwkJQ09NUExFVEVfV0lUSCgiKSIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04g PG5hbWU+IFsuLi5dIFdJVEgiICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnlOLCAiV0lUSCIsICIoIikpCiAJCUNPTVBMRVRFX1dJVEgoInB1Ymxp c2giLCAicHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucyIsICJwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDg5YjRiYjE0ZjYy Li41M2UzZDdjNmYzZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTkx LDcgKzE5MSw4IEBAIGV4dGVybiBMaXN0ICpHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMo TGlzdCAqcmVzdWx0LAogCQkJCQkJCQkJCQlQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQs CiAJCQkJCQkJCQkJCU9pZCByZWxpZCk7CiBleHRlcm4gT2lkCUdldFRvcE1vc3RBbmNlc3Rvcklu UHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLAotCQkJCQkJCQkJCQlpbnQg KmFuY2VzdG9yX2xldmVsKTsKKwkJCQkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCwKKwkJCQkJ CQkJCQkJTGlzdCAqZXhjZXB0X3B1Ymlkcyk7CiAKIGV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxl X3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRp b24oT2lkIHB1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA5MTM3N2E2Y2RlMy4uOThh MDNjMGVlZGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQ0OTMsNiArNDQ5Myw4IEBAIHR5 cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uT2JqU3BlYwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUg cHVib2JqdHlwZTsJLyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwogCWNoYXIJ ICAgKm5hbWU7CiAJUHVibGljYXRpb25UYWJsZSAqcHVidGFibGU7CisJTGlzdAkgICAqZXhjZXB0 X3RhYmxlczsJLyogdGFibGVzIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSAoZm9yCisJ CQkJCQkJCSAqIFRBQkxFUyBJTiBTQ0hFTUEpICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbk9ialNwZWM7 CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMjllNTRi MjE0YTAuLjc3ZDc3Yzg5ZDgwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dApAQCAtMjcwLDYgKzI3MCwxMiBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdAogRVJS T1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAidGVzdHB1Yl90YmwxIgogTElORSAxOiAuLi5f Zm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRlc3RwdWJf dGIuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBmYWlsIC0gRVhDRVBUIGlzIG5vdCBhbGxvd2VkIGZvciBGT1IgVEFC TEUgcHVibGljYXRpb25zCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfZXJyCisg ICAgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyIEVYQ0VQVCAoVEFCTEUgdGVz dHB1Yl90YmwzKTsKK0VSUk9SOiAgRVhDRVBUIGlzIG5vdCBhbGxvd2VkIGZvciBUQUJMRSBwdWJs aWNhdGlvbiBvYmplY3RzCitMSU5FIDI6ICAgICBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0 cHViX3RibDIgRVhDRVBUIChUQUJMRSB0ZXN0cC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAtLSBTRVQgQUxMIFRBQkxFUy9TRVFVRU5DRVMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDcwLDcgKzQ3Niw5OSBAQCBISU5UOiAgQ2hhbmdl IHRoZSBwdWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1c2UgdXNpbmcgQUxURVIgUFVCTElDQVRJT04g Li4uIFNFVCBBTAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1 Yl9yb290LCB0ZXN0cHViX3BhcnQxLCB0YWJfbWFpbjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1 Yjg7Ci0tLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9y IFRBQkxFUyBJTiBTQ0hFTUEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gQ3JlYXRlIHRh YmxlcyBpbiBwdWJfdGVzdCBmb3IgdGhlc2UgdGVzdHMKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50 ZXN0cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczIgKHggaW50IHByaW1hcnkga2V5LCB5IHRleHQpOworLS0g Q3JlYXRlIHNhbWUtbmFtZWQgdGFibGVzIGluIHB1YmxpYyB0byB2ZXJpZnkgdW5xdWFsaWZpZWQg RVhDRVBUIGVudHJpZXMKKy0tIGFyZSBxdWFsaWZpZWQgd2l0aCB0aGUgbmFtZWQgc2NoZW1hLCBu b3QgcHVibGljCitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9ub3BrIChmb28gaW50LCBiYXIgaW50KTsK K0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7 CistLSBCYXNpYzogZXhjbHVkZSBvbmUgdGFibGUgZnJvbSBhIHNjaGVtYSBwdWJsaWNhdGlvbgor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKyAgICBGT1IgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx KTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1h X2V4Y2VwdDEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVy YXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5v bmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAg InB1Yl90ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEi CisKKy0tIEV4Y2x1ZGUgbXVsdGlwbGUgdGFibGVzIHVzaW5nIHVucXVhbGlmaWVkIG5hbWVzOyBz YW1lLW5hbWVkIHRhYmxlcyBleGlzdCBpbgorLS0gcHVibGljIHRvIGNvbmZpcm0gdW5xdWFsaWZp ZWQgbmFtZXMgcmVzb2x2ZSB0byBwdWJfdGVzdCwgbm90IHB1YmxpYworQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczEpOworXGRScCsg dGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0Mgor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVt bnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3Qi CitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCisgICAgInB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MxIgorCistLSBmYWlsOiBFWENFUFQgdGFibGUgYmVsb25ncyB0byBh IGRpZmZlcmVudCBzY2hlbWEKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF93cm9u Z3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUg cHVibGljLnRlc3RwdWJfdGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJsaWMudGVzdHB1Yl90Ymwx IiBpbiBFWENFUFQgY2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEgInB1Yl90ZXN0Igor TElORSAyOiAgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBw dWJsaWMudGVzdHAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gZmFpbDogY3Jvc3Mtc2NoZW1hIEVYQ0VQVCBub3QgYWxsb3dl ZDsgZWFjaCBFWENFUFQgaXMgYm91bmQgdG8gaXRzIGltbWVkaWF0ZSBzY2hlbWEKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9jcm9zc3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0LCBwdWJsaWMgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMSwgcHVibGljLnRlc3RwdWJfdGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJfdGVzdC50ZXN0 cHViX3RibF9zMSIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hICJw dWJsaWMiCitMSU5FIDI6IC4uLlIgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgcHVibGljIEVY Q0VQVCAoVEFCTEUgcHViX3Rlc3QudC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE11bHRpcGxlIHNjaGVtYXMgZWFj aCB3aXRoIHRoZWlyIG93biBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9zY2hlbWFfZXhjZXB0X211bHRpCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSksCisgICAgICAgICAgICAgICAg ICBwdWJsaWMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9zY2hl bWFfZXhjZXB0X211bHRpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwg VmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAg IHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorICAg ICJwdWJsaWMiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIK KyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKworLS0gZmFpbDogdGFibGUgYXBwZWFycyBpbiBi b3RoIHRoZSBleHBsaWNpdCB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2NvbmZsaWN0CisgICAgRk9SIFRBQkxFIHB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworRVJST1I6ICB0YWJsZSAicHViX3Rlc3QudGVz dHB1Yl90YmxfczEiIGNhbm5vdCBhcHBlYXIgaW4gYm90aCB0aGUgdGFibGUgbGlzdCBhbmQgdGhl IEVYQ0VQVCBjbGF1c2UKKy0tIGZhaWw6IG5vbmV4aXN0ZW50IHRhYmxlIGluIEVYQ0VQVCBjbGF1 c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub3JlbAorICAgIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRf dGFibGUpOworRVJST1I6ICByZWxhdGlvbiAicHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUiIGRv ZXMgbm90IGV4aXN0CistLSBmYWlsOiBwYXJ0aXRpb24gY2Fubm90IGFwcGVhciBpbiBFWENFUFQg Y2xhdXNlOyBvbmx5IHJvb3QgdGFibGVzIGFyZSBhbGxvd2VkCitDUkVBVEUgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl9wYXJ0ZWRfcyAoYSBpbnQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKK0NSRUFU RSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyBQQVJUSVRJT04gT0YgcHViX3Rlc3QudGVz dHB1Yl9wYXJ0ZWRfcyBGT1IgVkFMVUVTIElOICgxKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2V4Y2VwdF9wYXJ0aXRpb24KKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zKTsKK0VSUk9SOiAgY2Fubm90IHNw ZWNpZnkgcmVsYXRpb24gInB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zIiBpbiB0aGUgcHVibGljYXRp b24gRVhDRVBUIGNsYXVzZQorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRl ZCBmb3IgaW5kaXZpZHVhbCBwYXJ0aXRpb25zLgorLS0gZmFpbDogVEFCTEUga2V5d29yZCBpcyBy ZXF1aXJlZCBmb3IgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBFWENFUFQgY2xhdXNlCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfbm9rdworICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0 IG9yIG5lYXIgInRlc3RwdWJfbm9wayIKK0xJTkUgMjogICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsK K0RST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MyOworRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIENBU0NBREU7CitEUk9Q IFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczE7CitEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRlc3RwdWJfc2No ZW1hX2V4Y2VwdF9tdWx0aTsKIENSRUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JF QVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CiAtLSBGT1IgQUxMIFNFUVVF TkNFUwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDA0MWUxNGE0ZGU2Li41 ZDhhNGUyNjM3ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24u c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTIzLDYg KzEyMyw5IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMCiBcZCB0ZXN0cHViX3RibDEKIC0tIGZh aWwgLSBmaXJzdCB0YWJsZSBpbiB0aGUgRVhDRVBUIGxpc3Qgc2hvdWxkIHVzZSBUQUJMRSBrZXl3 b3JkCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUy IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIpOworLS0g ZmFpbCAtIEVYQ0VQVCBpcyBub3QgYWxsb3dlZCBmb3IgRk9SIFRBQkxFIHB1YmxpY2F0aW9ucwor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2VycgorICAgIEZPUiBUQUJMRSB0ZXN0 cHViX3RibDEsIHRlc3RwdWJfdGJsMiBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMyk7CiAKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gU0VUIEFMTCBU QUJMRVMvU0VRVUVOQ0VTCkBAIC0yMjAsNyArMjIzLDY3IEBAIFJFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVzdHB1Yl9wYXJ0MSwgdGFiX21haW47 CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogCi0tLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9u cyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIFRBQkxFUyBJTiBTQ0hFTUEKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOworLS0gQ3JlYXRlIHRhYmxlcyBpbiBwdWJfdGVzdCBmb3IgdGhlc2UgdGVz dHMKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBr ZXksIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIgKHggaW50 IHByaW1hcnkga2V5LCB5IHRleHQpOworLS0gQ3JlYXRlIHNhbWUtbmFtZWQgdGFibGVzIGluIHB1 YmxpYyB0byB2ZXJpZnkgdW5xdWFsaWZpZWQgRVhDRVBUIGVudHJpZXMKKy0tIGFyZSBxdWFsaWZp ZWQgd2l0aCB0aGUgbmFtZWQgc2NoZW1hLCBub3QgcHVibGljCitDUkVBVEUgVEFCTEUgdGVzdHB1 Yl9ub3BrIChmb28gaW50LCBiYXIgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9zMSAo YSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CisKKy0tIEJhc2ljOiBleGNsdWRlIG9uZSB0YWJs ZSBmcm9tIGEgc2NoZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9z Y2hlbWFfZXhjZXB0MQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAo VEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhj ZXB0MQorCistLSBFeGNsdWRlIG11bHRpcGxlIHRhYmxlcyB1c2luZyB1bnF1YWxpZmllZCBuYW1l czsgc2FtZS1uYW1lZCB0YWJsZXMgZXhpc3QgaW4KKy0tIHB1YmxpYyB0byBjb25maXJtIHVucXVh bGlmaWVkIG5hbWVzIHJlc29sdmUgdG8gcHViX3Rlc3QsIG5vdCBwdWJsaWMKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQyCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJfdGJsX3MxKTsKK1xk UnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKworLS0gZmFpbDogRVhDRVBUIHRhYmxlIGJlbG9u Z3MgdG8gYSBkaWZmZXJlbnQgc2NoZW1hCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNl cHRfd3JvbmdzY2hlbWEKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQg KFRBQkxFIHB1YmxpYy50ZXN0cHViX3RibDEpOworCistLSBmYWlsOiBjcm9zcy1zY2hlbWEgRVhD RVBUIG5vdCBhbGxvd2VkOyBlYWNoIEVYQ0VQVCBpcyBib3VuZCB0byBpdHMgaW1tZWRpYXRlIHNj aGVtYQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2Nyb3Nzc2NoZW1hCisgICAg Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIHB1YmxpYyBFWENFUFQgKFRBQkxFIHB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJsaWMudGVzdHB1Yl90YmwxKTsKKworLS0gTXVsdGlwbGUg c2NoZW1hcyBlYWNoIHdpdGggdGhlaXIgb3duIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKSwKKyAgICAg ICAgICAgICAgICAgIHB1YmxpYyBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0 ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKworLS0gZmFpbDogdGFibGUgYXBwZWFycyBpbiBi b3RoIHRoZSBleHBsaWNpdCB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2NvbmZsaWN0CisgICAgRk9SIFRBQkxFIHB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworCistLSBmYWlsOiBub25leGlzdGVudCB0YWJs ZSBpbiBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfbm9y ZWwKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90 ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlKTsKKworLS0gZmFpbDogcGFydGl0aW9uIGNhbm5vdCBhcHBl YXIgaW4gRVhDRVBUIGNsYXVzZTsgb25seSByb290IHRhYmxlcyBhcmUgYWxsb3dlZAorQ1JFQVRF IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgKGEgaW50KSBQQVJUSVRJT04gQlkgTElT VCAoYSk7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MgUEFSVElUSU9OIE9G IHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgRk9SIFZBTFVFUyBJTiAoMSk7CitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9leGNlcHRfcGFydGl0aW9uCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyk7CisKKy0t IGZhaWw6IFRBQkxFIGtleXdvcmQgaXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJzdCBlbnRyeSBpbiB0 aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X25va3cK KyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9wayk7 CisKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3Rw dWJfdGJsX3MxLCBwdWJfdGVzdC50ZXN0cHViX3RibF9zMjsKK0RST1AgVEFCTEUgcHViX3Rlc3Qu dGVzdHB1Yl9wYXJ0ZWRfcyBDQVNDQURFOworRFJPUCBUQUJMRSB0ZXN0cHViX25vcGssIHRlc3Rw dWJfdGJsX3MxOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0 cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGk7CisKIENSRUFU RSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJl Z3Jlc3NfcHViX3NlcTE7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz N19leGNlcHQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4 IDhjNThkMjgyZWVlLi4xOGM3YjJjMWZjYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM3X2V4Y2VwdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhj ZXB0LnBsCkBAIC0yNCwxNCArMjQsMTcgQEAgbXkgJHJlc3VsdDsKIAogc3ViIHRlc3RfZXhjZXB0 X3Jvb3RfcGFydGl0aW9uCiB7Ci0JbXkgKCRwdWJ2aWFyb290KSA9IEBfOworCW15ICgkcHVidmlh cm9vdCwgJHB1YnNxbCkgPSBAXzsKKwkkcHVic3FsIC8vPQorCSAgIkNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByb290MSkiOworCSRw dWJzcWwgLj0gIiBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICRwdWJ2aWFyb290 KSI7CiAKIAkjIElmIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGlzIGluIHRoZSBFWENFUFQg Y2xhdXNlLCBhbGwgaXRzCiAJIyBwYXJ0aXRpb25zIGFyZSBleGNsdWRlZCBmcm9tIHB1YmxpY2F0 aW9uLCByZWdhcmRsZXNzIG9mIHRoZQogCSMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qgc2V0 dGluZy4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXEoCi0J CUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChU QUJMRSByb290MSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAkcHVidmlhcm9v dCk7CisJCSRwdWJzcWw7CiAJCUlOU0VSVCBJTlRPIHJvb3QxIFZBTFVFUyAoMSksICgxMDEpOwog CSkpOwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtMjIzLDYg KzIyNiwxMzEgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogdGVzdF9leGNlcHRfcm9v dF9wYXJ0aXRpb24oJ2ZhbHNlJyk7CiB0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbigndHJ1ZScp OwogCisjIFNhbWUgdmFsaWRhdGlvbiB1c2luZyBUQUJMRVMgSU4gU0NIRU1BIGluc3RlYWQgb2Yg Rk9SIEFMTCBUQUJMRVMuCitteSAkc2NoZW1hX3B1YiA9CisgICJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1Yl9wYXJ0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYyBFWENFUFQgKFRBQkxFIHB1 YmxpYy5yb290MSkiOwordGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ2ZhbHNlJywgJHNjaGVt YV9wdWIpOwordGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ3RydWUnLCAkc2NoZW1hX3B1Yik7 CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhD RVBUIHRlc3QgY2FzZXMgZm9yIFRBQkxFUyBJTiBTQ0hFTUEKKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBDcmVhdGUgYSBkZWRpY2F0ZWQgc2NoZW1h IHdpdGggdHdvIHRhYmxlczogb25lIHRvIGJlIHB1Ymxpc2hlZCBhbmQgb25lIHRvIGJlCisjIGV4 Y2x1ZGVkLiAgQWxzbyBjcmVhdGUgaW5oZXJpdGVkIHRhYmxlcyB0byB2ZXJpZnkgT05MWSBzZW1h bnRpY3MuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlD UkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxFIHNjaDEudGFiX3B1Ymxpc2hlZCBBUyBT RUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsNSkgQVMgYTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWJf ZXhjbHVkZWQgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDUpIEFTIGE7CisJQ1JFQVRFIFRB QkxFIHNjaDEucGFyZW50IChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEuY2hpbGQgKGIgaW50 KSBJTkhFUklUUyAoc2NoMS5wYXJlbnQpOworKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRB QkxFIHNjaDEudGFiX3B1Ymxpc2hlZCAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYl9l eGNsdWRlZCAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcmVudCAoYSBpbnQpOworCUNS RUFURSBUQUJMRSBzY2gxLmNoaWxkIChiIGludCkgSU5IRVJJVFMgKHNjaDEucGFyZW50KTsKKykp OworCisjIEJhc2ljIHRlc3Q6IGluaXRpYWwgc3luYyByZXNwZWN0cyBFWENFUFQuCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gc2No X3B1YiBGT1IgVEFCTEVTIElOIFNDSEVNQSBzY2gxIEVYQ0VQVCAoVEFCTEUgc2NoMS50YWJfZXhj bHVkZWQpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgU1VCU0NSSVBUSU9OIHNjaF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3Ry JyBQVUJMSUNBVElPTiBzY2hfcHViIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1 YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUpLAorCSdU QUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogaW5pdGlhbCBzeW5jIGNvcGllcyBpbmNsdWRlZCB0YWJs ZScpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9leGNsdWRlZCIpOworaXMoJHJlc3Vs dCwgcXEoMCksCisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBpbml0aWFsIHN5bmMgc2tpcHMg ZXhjbHVkZWQgdGFibGUnKTsKKworIyBETUw6IG9ubHkgdGhlIGluY2x1ZGVkIHRhYmxlIHNob3Vs ZCBiZSByZXBsaWNhdGVkLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXEoCisJSU5TRVJUIElOVE8gc2NoMS50YWJfcHVibGlzaGVkIFZBTFVFUyAoNik7CisJSU5T RVJUIElOVE8gc2NoMS50YWJfZXhjbHVkZWQgVkFMVUVTICg2KTsKKykpOworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00g c2NoMS50YWJfcHVibGlzaGVkIik7CitpcygkcmVzdWx0LCBxcSg2KSwKKwknVEFCTEVTIElOIFND SEVNQSBFWENFUFQ6IERNTCBvbiBpbmNsdWRlZCB0YWJsZSBpcyByZXBsaWNhdGVkJyk7CiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwK KwknVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IERNTCBvbiBleGNsdWRlZCB0YWJsZSBpcyBub3Qg cmVwbGljYXRlZCcpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0RST1AgU1VCU0NSSVBUSU9OIHNjaF9zdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHNjaF9wdWInKTsKKworIyBJbmhlcml0ZWQg dGFibGVzOiBleGNsdWRpbmcgdGhlIHBhcmVudCAod2l0aG91dCBPTkxZKSBhbHNvIGV4Y2x1ZGVz IHRoZSBjaGlsZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBQVUJMSUNBVElPTiBzY2hfcHViIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBU IChUQUJMRSBzY2gxLnBhcmVudCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2NoX3N1YiBDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNjaF9wdWIiCispOworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1Yicp OworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5U TyBzY2gxLmNoaWxkIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEsNSksIGdlbmVyYXRlX3Nlcmll cygxLDUpKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NjaF9zdWIn KTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS5jaGlsZCIpOworaXMoJHJlc3VsdCwgcXEoMCks CisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBleGNsdWRpbmcgcGFyZW50ICh3aXRob3V0IE9O TFkpIGFsc28gZXhjbHVkZXMgY2hpbGQnCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHNjaF9zdWInKTsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHNjaF9wdWInKTsK KworIyBUZXN0IHRoYXQgRVhDRVBUIChUQUJMRSBPTkxZIHBhcmVudCkgZXhjbHVkZXMgb25seSB0 aGUgcGFyZW50IGl0c2VsZiwgbm90IGl0cworIyBjaGlsZC4gIFRydW5jYXRlIGNoaWxkIGZpcnN0 IHNvIHJvd3MgZnJvbSB0aGUgcHJldmlvdXMgdGVzdCBhcmUgbm90IGNvcGllZCBieQorIyB0aGUg aW5pdGlhbCB0YWJsZSBzeW5jIG9mIHRoZSBuZXh0IHN1YnNjcmlwdGlvbi4KKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBzY2gxLmNoaWxkJyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIHNjaDEuY2hpbGQn KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJM SUNBVElPTiBzY2hfcHViIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBP TkxZIHNjaDEucGFyZW50KSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzY2hfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0cicgUFVCTElDQVRJT04gc2NoX3B1YiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNj aDEuY2hpbGQgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSw1KSwgZ2VuZXJhdGVfc2VyaWVzKDEs NSkpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOwor CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLmNoaWxkIik7CitpcygkcmVzdWx0LCBxcSg1KSwKKwkn VEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IE9OTFkgcGFyZW50IGluIEVYQ0VQVCBkb2VzIG5vdCBl eGNsdWRlIGNoaWxkJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnRFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIENsZWFudXAg c2NoZW1hIHRhYmxlcyBiZWZvcmUgdGhlIG11bHRpLXB1YmxpY2F0aW9uIHNlY3Rpb24uCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVND QURFJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU0NI RU1BIHNjaDEgQ0FTQ0FERScpOworCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAjIFRlc3Qgd2hlbiBhIHN1YnNjcmlwdGlvbiBpcyBzdWJzY3JpYmluZyB0 byBtdWx0aXBsZSBwdWJsaWNhdGlvbnMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KQEAgLTI1NCw2ICszODIsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKIAlEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyOwogCVRSVU5DQVRFIHRhYjE7CiApKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJ T04gdGFwX3N1YicpOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx KFRSVU5DQVRFIHRhYjEpKTsKIAogIyBPSyB3aGVuIGEgdGFibGUgaXMgZXhjbHVkZWQgYnkgcHVi MSBFWENFUFQgY2xhdXNlLCBidXQgaXQgaXMgaW5jbHVkZWQgYnkgcHViMgotLSAKMi41MC4xIChB cHBsZSBHaXQtMTU1KQoK --000000000000004cbf065229c81c Content-Type: application/octet-stream; name="v6-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABLE.patch" Content-Disposition: attachment; filename="v6-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpcj3kno1 RnJvbSAwMzEzZWIzMGU1ZWEzNGNiMzk4M2ZhNjFlNTQ5NDVkNmJmMGRjYzAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUdWUsIDE5IE1heSAyMDI2IDEzOjM1OjA1ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 NiAyLzNdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBBREQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCB0aGUgRVhDRVBUIGNsYXVzZSBzdXBwb3J0IHRvIGFsbG93IHRh YmxlcyB0byBiZSBleGNsdWRlZCB3aGVuCmFkZGluZyBhIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9u IHZpYSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gQUREOgoKU3ludGF4OgogIEFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBBREQgVEFCTEVTIElOIFNDSEVNQSBzIEVYQ0VQVCAoVEFCTEUgcy50MSk7CgpTaW5j ZSBwZ19kdW1wIHVzZXMgQUxURVIgUFVCTElDQVRJT04gLi4uIEFERCwgc3VwcG9ydCBmb3IgaXQg aXMKaW5jbHVkZWQgaW4gdGhpcyBwYXRjaC4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwgICB8ICA0MiArKysrKysrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jICAgICAgfCAgMTkgKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMgICAgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgfCAgMzAgKysrKystCiBzcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICB8ICAzNiArKysrKysrCiBzcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNyArKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCB8ICAxOCArKystCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwgICAgICB8ICAxMSArKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzN19leGNlcHQucGwgICAgIHwgIDMyICsrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAzMDUgaW5z ZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNh dGlvbi5zZ21sCmluZGV4IGFhMzJiYjE2OWU5Li44YWVkZmQ5NTFhNSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzEsNyArMzEsNyBAQCBBTFRFUiBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJF TkFNRSBUTyA8cgogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAg ICAgVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5z PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KLSAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5U X1NDSEVNQSB9IFssIC4uLiBdCisgICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hF TUEgfSBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFi bGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIFssIC4uLiBdCiAKIDxwaHJhc2U+ YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC01NCw2ICs1NCwxMCBAQCBB TFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+IFJFTkFNRSBUTyA8cgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICBb IE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKiBdCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgIFsg T05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNl YWJsZT4gWyAqIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTEwLDYg KzExNCwxNSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgPGxpdGVyYWw+QUREIFRBQkxF PC9saXRlcmFsPi4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgVGhlIDxsaXRlcmFsPkVYQ0VQ VDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBiZSB1c2VkIHdpdGgKKyAgIDxsaXRlcmFsPkFERCBUQUJM RVMgSU4gU0NIRU1BPC9saXRlcmFsPiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBmcm9tIGEK KyAgIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlvbi4gPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBp cyBub3Qgc3VwcG9ydGVkIHdpdGgKKyAgIDxsaXRlcmFsPkRST1AgVEFCTEVTIElOIFNDSEVNQTwv bGl0ZXJhbD47IGluc3RlYWQsIGRyb3BwaW5nIGEgc2NoZW1hIGZyb20KKyAgIHRoZSBwdWJsaWNh dGlvbiBhdXRvbWF0aWNhbGx5IHJlbW92ZXMgYWxsIG9mIGl0cyBhc3NvY2lhdGVkCisgICA8bGl0 ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGVudHJpZXMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAg IFRoZSBmb3VydGggdmFyaWFudCBvZiB0aGlzIGNvbW1hbmQgbGlzdGVkIGluIHRoZSBzeW5vcHNp cyBjYW4gY2hhbmdlCiAgICBhbGwgb2YgdGhlIHB1YmxpY2F0aW9uIHByb3BlcnRpZXMgc3BlY2lm aWVkIGluCkBAIC0xOTgsNiArMjExLDIzIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAg PC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB0YWJsZXMg dG8gYmUgZXhjbHVkZWQgZnJvbSBhIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlvbiBlbnRyeS4KKyAg ICAgIFRoaXMgY2xhdXNlIG1heSBiZSB1c2VkIHdpdGggPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBT Q0hFTUE8L2xpdGVyYWw+CisgICAgICBhbmQgbm90IHdpdGggPGxpdGVyYWw+RFJPUCBUQUJMRVMg SU4gU0NIRU1BPC9saXRlcmFsPi4gIEVhY2ggbmFtZWQKKyAgICAgIHRhYmxlIG11c3QgYmVsb25n IHRvIHRoZSBzY2hlbWEgc3BlY2lmaWVkIGluIHRoZSBzYW1lCisgICAgICA8bGl0ZXJhbD5UQUJM RVMgSU4gU0NIRU1BPC9saXRlcmFsPiBjbGF1c2UuICBUYWJsZSBuYW1lcyBtYXkgYmUKKyAgICAg IHNjaGVtYS1xdWFsaWZpZWQgb3IgdW5xdWFsaWZpZWQ7IHVucXVhbGlmaWVkIG5hbWVzIGFyZSBp bXBsaWNpdGx5CisgICAgICBxdWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hIG5hbWVkIGluIHRoZSBz YW1lIGNsYXVzZS4gIFNlZQorICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0 aW9uIi8+IGZvciBmdXJ0aGVyIGRldGFpbHMgb24gdGhlCisgICAgICBzZW1hbnRpY3Mgb2YgPGxp dGVyYWw+RVhDRVBUPC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJh bD5TRVQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1l dGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVl PC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRl bT4KQEAgLTI4OCw2ICszMTgsMTYgQEAgQUxURVIgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRp b24gQUREIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKIDwvcHJvZ3JhbWxpc3Rp bmc+CiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIEFkZCBzY2hlbWEgPHN0cnVjdG5hbWU+c2Fs ZXM8L3N0cnVjdG5hbWU+IHRvIHRoZSBwdWJsaWNhdGlvbgorICAgPHN0cnVjdG5hbWU+c2FsZXNf cHVibGljYXRpb248L3N0cnVjdG5hbWU+LCBleGNsdWRpbmcgdGhlCisgICA8c3RydWN0bmFtZT5z YWxlcy5pbnRlcm5hbDwvc3RydWN0bmFtZT4gYW5kCisgICA8c3RydWN0bmFtZT5zYWxlcy5kcmFm dHM8L3N0cnVjdG5hbWU+IHRhYmxlczoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FU SU9OIHNhbGVzX3B1YmxpY2F0aW9uIEFERCBUQUJMRVMgSU4gU0NIRU1BIHNhbGVzIEVYQ0VQVCAo VEFCTEUgc2FsZXMuaW50ZXJuYWwsIHNhbGVzLmRyYWZ0cyk7Cis8L3Byb2dyYW1saXN0aW5nPgor ICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBBZGQgdGFibGVzIDxzdHJ1Y3RuYW1lPnVzZXJzPC9z dHJ1Y3RuYW1lPiwKICAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPiBhbmQg c2NoZW1hCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNmY5NDU5NTU5MDEu LmEzMzlhYmY1ZTFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC02NDUs MTUgKzY0NSwxOCBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNh dGlvblJlbEluZm8gKnByaSwKIAkgKiBoZXJlLCBhcyBDcmVhdGVQdWJsaWNhdGlvbigpIGZ1bmN0 aW9uIGludmFsaWRhdGVzIGFsbCByZWxhdGlvbnMgYXMgcGFydAogCSAqIG9mIGRlZmluaW5nIGEg Rk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24uCiAJICoKLQkgKiBGb3IgQUxURVIgUFVCTElDQVRJ T04sIGludmFsaWRhdGlvbiBpcyBuZWVkZWQgb25seSB3aGVuIGFkZGluZyBhbgotCSAqIEVYQ0VQ VCB0YWJsZSB0byBhIHB1YmxpY2F0aW9uIGFscmVhZHkgbWFya2VkIGFzIEFMTCBUQUJMRVMuIEZv cgotCSAqIHB1YmxpY2F0aW9ucyB0aGF0IHdlcmUgb3JpZ2luYWxseSBlbXB0eSBvciBkZWZpbmVk IGFzIEFMTCBTRVFVRU5DRVMgYW5kCi0JICogYXJlIGJlaW5nIGNvbnZlcnRlZCB0byBBTEwgVEFC TEVTLCBpbnZhbGlkYXRpb24gaXMgc2tpcHBlZCBoZXJlLCBhcwotCSAqIEFsdGVyUHVibGljYXRp b25BbGxGbGFncygpIGZ1bmN0aW9uIGludmFsaWRhdGVzIGFsbCByZWxhdGlvbnMgd2hpbGUKLQkg KiBtYXJraW5nIHRoZSBwdWJsaWNhdGlvbiBhcyBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLgorCSAq IEZvciBBTFRFUiBQVUJMSUNBVElPTiwgaW52YWxpZGF0aW9uIGlzIG5lZWRlZCB3aGVuIGFkZGlu ZyBhbiBFWENFUFQKKwkgKiB0YWJsZSB0byBlaXRoZXIgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbiAocHViLT5hbGx0YWJsZXMgaXMgdHJ1ZSkKKwkgKiBvciBhIEZPUiBUQUJMRVMgSU4gU0NI RU1BIHB1YmxpY2F0aW9uIChpc19zY2hlbWFfcHVibGljYXRpb24gaXMgdHJ1ZSkuCisJICogVGhl IGV4Y2VwdGlvbjogd2hlbiBhIHB1YmxpY2F0aW9uIGlzIGJlaW5nIGNvbnZlcnRlZCB0byBGT1Ig QUxMIFRBQkxFUworCSAqIChwdWItPmFsbHRhYmxlcyBpcyBzdGlsbCBmYWxzZSBhdCB0aGlzIHBv aW50KSwKKwkgKiBBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3MoKSB3aWxsIHBlcmZvcm0gYSBmdWxs IGludmFsaWRhdGlvbiwgc28gd2UKKwkgKiBza2lwIGl0IGhlcmUuCiAJICovCi0JaW52YWxfZXhj ZXB0X3RhYmxlID0gKGFsdGVyX3N0bXQgIT0gTlVMTCkgJiYgcHViLT5hbGx0YWJsZXMgJiYKLQkJ KGFsdGVyX3N0bXQtPmZvcl9hbGxfdGFibGVzICYmIHByaS0+ZXhjZXB0KTsKKwlpbnZhbF9leGNl cHRfdGFibGUgPSAoYWx0ZXJfc3RtdCAhPSBOVUxMKSAmJiBwcmktPmV4Y2VwdCAmJgorCQkocHVi LT5hbGx0YWJsZXMKKwkJID8gYWx0ZXJfc3RtdC0+Zm9yX2FsbF90YWJsZXMKKwkJIDogaXNfc2No ZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSk7CiAKIAlpZiAoIXByaS0+ZXhjZXB0IHx8IGludmFsX2V4 Y2VwdF90YWJsZSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4 IDk1MTg2Y2E3Mzc3Li5lYTY4OWU1ZGE3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKQEAgLTcwLDYgKzcwLDkgQEAgc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wVGFi bGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyB2b2lk IFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZf bm90X2V4aXN0cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBzdGF0 aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywg Ym9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyB2b2lkIEFsdGVyUHVibGljYXRpb25FeGNlcHRUYWJs ZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCisJCQkJCQkJCQkJIEhlYXBUdXBsZSB0dXAs IExpc3QgKmV4Y2VwdHJlbGF0aW9ucywKKwkJCQkJCQkJCQkgTGlzdCAqc2NoZW1haWRsaXN0KTsK IHN0YXRpYyBjaGFyIGRlZkdldEdlbmVyYXRlZENvbHNPcHRpb24oRGVmRWxlbSAqZGVmKTsKIAog CkBAIC0xNTE5LDYgKzE1MjIsMTMgQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQsCiAJCX0KIAogCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHViZm9y bS0+b2lkLCBzY2hlbWFpZGxpc3QsIGZhbHNlLCBzdG10KTsKKworCQkvKgorCQkgKiBJbmNyZW1l bnQgdGhlIGNvbW1hbmQgY291bnRlciBzbyB0aGF0IGlzX3NjaGVtYV9wdWJsaWNhdGlvbigpIGlu CisJCSAqIEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMoKSBjYW4gc2VlIHRoZSBqdXN0LWlu c2VydGVkIHNjaGVtYQorCQkgKiByb3dzIHdoZW4gQWx0ZXJQdWJsaWNhdGlvbkV4Y2VwdFRhYmxl cyBydW5zIG5leHQuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCX0KIAll bHNlIGlmIChzdG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCiAJCVB1YmxpY2F0aW9uRHJv cFNjaGVtYXMocHViZm9ybS0+b2lkLCBzY2hlbWFpZGxpc3QsIGZhbHNlKTsKQEAgLTE1NDQsNiAr MTU1NCwxMDAgQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsCiAJCSAqIHNraXAgZXhpc3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRl LgogCQkgKi8KIAkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2NoZW1haWRs aXN0LCB0cnVlLCBzdG10KTsKKworCQkvKgorCQkgKiBJbmNyZW1lbnQgdGhlIGNvbW1hbmQgY291 bnRlciBzbyB0aGF0IGlzX3NjaGVtYV9wdWJsaWNhdGlvbigpIGluCisJCSAqIEdldEV4Y2x1ZGVk UHVibGljYXRpb25UYWJsZXMoKSBjYW4gc2VlIHRoZSBqdXN0LWluc2VydGVkIHNjaGVtYQorCQkg KiByb3dzIHdoZW4gQWx0ZXJQdWJsaWNhdGlvbkV4Y2VwdFRhYmxlcyBydW5zIG5leHQuCisJCSAq LworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCX0KK30KKworLyoKKyAqIEFsdGVyIHRo ZSBFWENFUFQgbGlzdCBvZiBhIHB1YmxpY2F0aW9uLgorICoKKyAqIEFkZHMsIHJlbW92ZXMsIG9y IHJlcGxhY2VzIGV4Y2VwdC10YWJsZSBlbnRyaWVzIGluIHBnX3B1YmxpY2F0aW9uX3JlbAorICog KHJvd3Mgd2l0aCBwcmV4Y2VwdCA9IHRydWUpLiAgVGhlc2UgZW50cmllcyBzdXBwcmVzcyBwdWJs aWNhdGlvbiBvZiB0aGUKKyAqIG5hbWVkIHRhYmxlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBj b3ZlcmVkIGJ5IGEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEKKyAqIG9yIEZPUiBBTEwgVEFCTEVTIGNs YXVzZS4KKyAqLworc3RhdGljIHZvaWQKK0FsdGVyUHVibGljYXRpb25FeGNlcHRUYWJsZXMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCisJCQkJCQkJIEhlYXBUdXBsZSB0dXAsIExpc3QgKmV4 Y2VwdHJlbGF0aW9ucywKKwkJCQkJCQkgTGlzdCAqc2NoZW1haWRsaXN0KQoreworCUZvcm1fcGdf cHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVw KTsKKwlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKKworCS8qCisJICogTm90aGluZyB0byBk byBpZiBubyBFWENFUFQgZW50cmllcy4KKwkgKi8KKwlpZiAoIWV4Y2VwdHJlbGF0aW9ucykKKwkJ cmV0dXJuOworCisJLyoKKwkgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgRVhDRVBUIGVudHJpZXMg Zm9yIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlvbnMKKwkgKiBvbmx5LiAgRm9yIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9ucywgRVhDRVBUIGVudHJpZXMgYXJlIGFscmVhZHkKKwkgKiBwcm9jZXNz ZWQgYnkgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcygpLgorCSAqLworCWlmIChzY2hlbWFpZGxpc3Qg PT0gTklMICYmICFpc19zY2hlbWFfcHVibGljYXRpb24ocHViaWQpKQorCQlyZXR1cm47CisKKwkv KgorCSAqIEVYQ0VQVCBpcyBub3QgbWVhbmluZ2Z1bCB3aXRoIERST1A6IGRyb3BwaW5nIGEgc2No ZW1hIGZyb20gYQorCSAqIHB1YmxpY2F0aW9uIGFscmVhZHkgcmVtb3ZlcyBhbGwgaXRzIGV4Y2Vw dCBlbnRyaWVzIHZpYSBjYXNjYWRlLCBhbmQKKwkgKiB0aGVyZSBpcyBubyBzZW5zaWJsZSBpbnRl cnByZXRhdGlvbiBvZiAiZHJvcCBvbmx5IHRoZSBleGNlcHQgZW50cnkgYnV0CisJICoga2VlcCB0 aGUgc2NoZW1hIi4KKwkgKi8KKwlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0Ryb3BPYmplY3RzKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkgZXJybXNnKCJFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBE Uk9QIGluIEFMVEVSIFBVQkxJQ0FUSU9OIikpKTsKKworCS8qCisJICogRVhDRVBUIHdpdGggU0VU IGlzIG5vdCBzdXBwb3J0ZWQ6IFNFVCByZXBsYWNlcyB0aGUgc2NoZW1hIGxpc3QgYnV0IGRvZXMK KwkgKiBub3QgaGF2ZSBhIHdlbGwtZGVmaW5lZCBzZW1hbnRpY3MgZm9yIG1lcmdpbmcgb3IgcmVw bGFjaW5nIGV4aXN0aW5nCisJICogZXhjZXB0IGVudHJpZXMuICBVc2VycyBzaG91bGQgRFJPUCBh bmQgcmUtQUREIHRoZSBzY2hlbWEgd2l0aCB0aGUKKwkgKiBkZXNpcmVkIEVYQ0VQVCBsaXN0IGlu c3RlYWQuCisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkgZXJybXNnKCJFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBTRVQgaW4g QUxURVIgUFVCTElDQVRJT04iKSkpOworCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmpl Y3RzKQorCXsKKwkJTGlzdAkgICAqcmVsczsKKwkJTGlzdAkgICAqZXhwbGljaXRyZWxpZHM7CisJ CUxpc3RDZWxsICAgKmxjOworCisJCXJlbHMgPSBPcGVuVGFibGVMaXN0KGV4Y2VwdHJlbGF0aW9u cyk7CisKKwkJZXhwbGljaXRyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25z KHB1YmlkLAorCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKworCQkvKgor CQkgKiBWYWxpZGF0ZSB0aGF0IGVhY2ggZXhjbHVkZWQgdGFibGUgaXMgbm90IGFsc28gaW4gdGhl IGV4cGxpY2l0IHRhYmxlCisJCSAqIGxpc3QgKHdoaWNoIHdvdWxkIGJlIGNvbnRyYWRpY3Rvcnkp LgorCQkgKi8KKwkJZm9yZWFjaChsYywgcmVscykKKwkJeworCQkJUHVibGljYXRpb25SZWxJbmZv ICpwcmkgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxmaXJzdChsYyk7CisJCQlPaWQJCQlyZWxp ZCA9IFJlbGF0aW9uR2V0UmVsaWQocHJpLT5yZWxhdGlvbik7CisJCQlPaWQJCQlyZWxucyA9IFJl bGF0aW9uR2V0TmFtZXNwYWNlKHByaS0+cmVsYXRpb24pOworCisJCQlpZiAobGlzdF9tZW1iZXJf b2lkKGV4cGxpY2l0cmVsaWRzLCByZWxpZCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coInRh YmxlIFwiJXMuJXNcIiBjYW5ub3QgYXBwZWFyIGluIGJvdGggdGhlIHRhYmxlIGxpc3QgYW5kIHRo ZSBFWENFUFQgY2xhdXNlIiwKKwkJCQkJCQkgICBnZXRfbmFtZXNwYWNlX25hbWUocmVsbnMpLAor CQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHByaS0+cmVsYXRpb24pKSk7CisJCX0K KworCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOworCisJ CUNsb3NlVGFibGVMaXN0KHJlbHMpOwogCX0KIH0KIApAQCAtMTc1NCwxMCArMTg1OCwxNyBAQCBB bHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQpCiAJCQkJCWVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwK IAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAotCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChy ZWxhdGlvbnMsIGV4Y2VwdHJlbGF0aW9ucyk7CisJCS8qCisJCSAqIEZvciBGT1IgQUxMIFRBQkxF UywgRVhDRVBUIGVudHJpZXMgYXJlIHByb2Nlc3NlZCBieQorCQkgKiBBbHRlclB1YmxpY2F0aW9u VGFibGVzKCksIHNvIG1lcmdlIHRoZW0gaW4uICBGb3IgVEFCTEVTIElOIFNDSEVNQSwKKwkJICog dGhleSBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5IGJ5IEFsdGVyUHVibGljYXRpb25FeGNlcHRUYWJs ZXMoKS4KKwkJICovCisJCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKKwkJCXJlbGF0aW9ucyA9 IGxpc3RfY29uY2F0KHJlbGF0aW9ucywgZXhjZXB0cmVsYXRpb25zKTsKIAkJQWx0ZXJQdWJsaWNh dGlvblRhYmxlcyhzdG10LCB0dXAsIHJlbGF0aW9ucywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJ CQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCk7CiAJCUFsdGVyUHVibGljYXRpb25TY2hlbWFz KHN0bXQsIHR1cCwgc2NoZW1haWRsaXN0KTsKKwkJQWx0ZXJQdWJsaWNhdGlvbkV4Y2VwdFRhYmxl cyhzdG10LCB0dXAsIGV4Y2VwdHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIAkJQWx0ZXJQdWJs aWNhdGlvbkFsbEZsYWdzKHN0bXQsIHJlbCwgdHVwKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGQ1 NmRjYzcwMWNlLi5lNjJkNzRjOGNhMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC01MDE5LDYgKzUwMTksNyBA QCBkdW1wUHVibGljYXRpb25OYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRp b25TY2hlbWFJbmZvICpwdWJzaW5mbykKIAlQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8gPSBwdWJz aW5mby0+cHVibGljYXRpb247CiAJUFFFeHBCdWZmZXIgcXVlcnk7CiAJY2hhcgkgICAqdGFnOwor CWJvb2wJCWhhc19leGNlcHQgPSBmYWxzZTsKIAogCS8qIERvIG5vdGhpbmcgaWYgbm90IGR1bXBp bmcgc2NoZW1hICovCiAJaWYgKCFkb3B0LT5kdW1wU2NoZW1hKQpAQCAtNTAyOSw3ICs1MDMwLDM0 IEBAIGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNh dGlvblNjaGVtYUluZm8gKnB1YnNpbmZvKQogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsK IAogCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgIiwgZm10 SWQocHViaW5mby0+ZG9iai5uYW1lKSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBREQg VEFCTEVTIElOIFNDSEVNQSAlcztcbiIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFtZSkpOwor CWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUREIFRBQkxFUyBJTiBTQ0hFTUEgJXMiLCBmbXRJ ZChzY2hlbWFpbmZvLT5kb2JqLm5hbWUpKTsKKworCS8qCisJICogQXBwZW5kIEVYQ0VQVCBjbGF1 c2UgZm9yIGFueSB0YWJsZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBzY2hlbWEKKwkgKiBhbmQgYXJl IGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgorCSAqLworCWZvciAoU2ltcGxlUHRyTGlz dENlbGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRfdGFibGVzLmhlYWQ7IGNlbGw7IGNlbGwgPSBj ZWxsLT5uZXh0KQorCXsKKwkJVGFibGVJbmZvICAqdGJpbmZvID0gKFRhYmxlSW5mbyAqKSBjZWxs LT5wdHI7CisKKwkJaWYgKHN0cmNtcCh0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUs IHNjaGVtYWluZm8tPmRvYmoubmFtZSkgPT0gMCkKKwkJeworCQkJaWYgKCFoYXNfZXhjZXB0KQor CQkJeworCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCAoIik7CisJCQkJ aGFzX2V4Y2VwdCA9IHRydWU7CisJCQl9CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIsICIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIlRBQkxFIE9O TFkgJXMiLCBmbXRJZCh0YmluZm8tPmRvYmoubmFtZSkpOworCQl9CisJfQorCisJaWYgKGhhc19l eGNlcHQpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKSIpOworCisJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICI7XG4iKTsKIAogCS8qCiAJICogVGhlcmUgaXMgbm8gcG9pbnQg aW4gY3JlYXRpbmcgZHJvcCBxdWVyeSBhcyB0aGUgZHJvcCBpcyBkb25lIGJ5IHNjaGVtYQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAzZWU5ZmRhNTBlNC4uYWYzN2JjYjM2MjcgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjQyLDYgKzMyNDIsNDIgQEAgbXkgJXRlc3RzID0g KAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9 LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMScgPT4geworCQljcmVhdGVfb3JkZXIgPT4g NTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExIEZPUiBU QUJMRVMgSU4gU0NIRU1BIGR1bXBfdGVzdCBFWENFUFQgKFRBQkxFIGR1bXBfdGVzdC50ZXN0X3Rh YmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTEg V0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJ CQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9 LAorCX0sCisKKwknQUxURVIgUFVCTElDQVRJT04gcHViMTEgQUREIFRBQkxFUyBJTiBTQ0hFTUEg ZHVtcF90ZXN0IEVYQ0VQVCAoZHVtcF90ZXN0LnRlc3RfdGFibGUpJworCSAgPT4geworCQlyZWdl eHAgPT4gcXIvXgorCQkJXFFBTFRFUiBQVUJMSUNBVElPTiBwdWIxMSBBREQgVEFCTEVTIElOIFND SEVNQSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSBPTkxZIHRlc3RfdGFibGUpO1xFCisJCQkveG0s CisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCSAg fSwKKworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTInID0+IHsKKwkJY3JlYXRlX29yZGVyID0+ IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBGT1Ig VEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSBkdW1wX3Rlc3QudGVzdF90 YWJsZSwgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgor CQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTIgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVw ZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9y dW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQUxURVIgUFVCTElDQVRJ T04gcHViMTIgQUREIFRBQkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0IEVYQ0VQVCAoZHVtcF90ZXN0 LnRlc3RfdGFibGUsIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSknCisJICA9PiB7CisJCXJl Z2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEyIEFERCBUQUJMRVMgSU4g U0NIRU1BIGR1bXBfdGVzdCBFWENFUFQgKFRBQkxFIE9OTFkgdGVzdF90YWJsZSwgVEFCTEUgT05M WSB0ZXN0X3NlY29uZF90YWJsZSk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMs IHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJICB9LAorCiAJJ0NSRUFURSBTVUJTQ1JJUFRJ T04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9zcWwgPT4gJ0NS RUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDJjNjUyY2Yz MmEwLi42ZWE5MjQ0NDEwNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjM2NCw2ICsyMzY0 LDIzIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9X SVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hcwogCQkJCQkJCQkgIiBBTkQg bnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLAogCQkJCQkJCQkgIkNVUlJFTlRfU0NIRU1B Iik7CisJLyogQWZ0ZXIgYSBzaW5nbGUgc2NoZW1hIG5hbWUgaW4gQUREIGNvbnRleHQsIG9mZmVy IEVYQ0VQVCAoIFRBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkp ICYmCisJCQkgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCJFWENF UFQgKCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhD RVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJT Q0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxF Iik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIs ICJUQUJMRSIpKQorCXsKKwkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXY0X3dkKTsKKwkJ Q09NUExFVEVfV0lUSF9RVUVSWV9WRVJCQVRJTShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNfaW5f c2NoZW1hKTsKKwl9CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENF UFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgZW5kc193aXRoKHByZXZfd2QsICcsJykp CisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7 CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFE RCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJU QUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVU RV9XSVRIKCIpIik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IFNFVCAoICovCiAJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgTWF0Y2hBbnlO LCAiU0VUIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgicHVibGlzaCIsICJwdWJsaXNoX2dlbmVy YXRlZF9jb2x1bW5zIiwgInB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290Iik7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDc3ZDc3Yzg5ZDgwLi5hOWQ1ZTdh NDlkYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTU2 NCwxMSArNTY0LDI3IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub2t3CiBF UlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ0ZXN0cHViX25vcGsiCiBMSU5FIDI6ICAg ICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9wayk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIHRlc3Rz IGZvciBBTFRFUiBQVUJMSUNBVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQ7Cist LSBBREQ6IGFkZCBhIHNjaGVtYSB3aXRoIGFuIGV4Y2VwdGVkIHRhYmxlCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJfYWx0 ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3Qg fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRhYmxl czoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisKIFJFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJfdGVzdC50ZXN0 cHViX3RibF9zMjsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyBDQVNDQURF OwogRFJPUCBUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJfdGJsX3MxOwotRFJPUCBQVUJMSUNB VElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0 cHViX3NjaGVtYV9leGNlcHRfbXVsdGk7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1h X2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9t dWx0aSwgdGVzdHB1Yl9hbHRlcl9leGNlcHQ7CiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJf c2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOwogLS0gRk9S IEFMTCBTRVFVRU5DRVMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA1ZDhh NGUyNjM3ZS4uNmI5ZWIyNmEyYWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK QEAgLTI3OCwxMSArMjc4LDIwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9w YXJ0aXRpb24KIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub2t3CiAgICAgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vcGspOwogCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCB0ZXN0 cyBmb3IgQUxURVIgUFVCTElDQVRJT04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0Owor CistLSBBREQ6IGFkZCBhIHNjaGVtYSB3aXRoIGFuIGV4Y2VwdGVkIHRhYmxlCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJf YWx0ZXJfZXhjZXB0CisKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJfdGVzdC50ZXN0cHViX3RibF9zMjsKIERST1AgVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyBDQVNDQURFOwogRFJPUCBUQUJMRSB0ZXN0cHVi X25vcGssIHRlc3RwdWJfdGJsX3MxOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9l eGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVs dGk7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2No ZW1hX2V4Y2VwdDIsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aSwgdGVzdHB1Yl9hbHRlcl9l eGNlcHQ7CiAKIENSRUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVF TkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4 Y2VwdC5wbAppbmRleCAxOGM3YjJjMWZjYS4uMGJhNmQ2ZjhiYjIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM3X2V4Y2VwdC5wbApAQCAtMzQ3LDYgKzM0NywzOCBAQCBpcygkcmVzdWx0LCBxcSg1 KSwKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJ UFRJT04gc2NoX3N1YicpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0RST1AgUFVCTElDQVRJT04gc2NoX3B1YicpOwogCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisjIEFMVEVSIFBVQkxJQ0FUSU9OIEVYQ0VQVCBmb3IgVEFC TEVTIElOIFNDSEVNQQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCisjIFRydW5jYXRlIHN1YnNjcmliZXIgdGFibGVzIHRvIHJlbW92ZSBkYXRhIGFjY3Vt dWxhdGVkIGZyb20gcHJldmlvdXMgdGVzdHMuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwknVFJVTkNBVEUgc2NoMS50YWJfcHVibGlzaGVkLCBzY2gxLnRhYl9leGNs dWRlZCwgc2NoMS5wYXJlbnQsIHNjaDEuY2hpbGQnKTsKKworIyBBREQ6IGFkZCBhIHNjaGVtYSB3 aXRoIGFuIGV4Y2VwdGVkIHRhYmxlOyB2ZXJpZnkgdGhlIGV4Y2VwdCBlbnRyeSB0YWtlcyBlZmZl Y3QuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFBVQkxJ Q0FUSU9OIHNjaF9wdWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFBVQkxJQ0FUSU9OIHNjaF9wdWIgQUREIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSBF WENFUFQgKFRBQkxFIHNjaDEudGFiX2V4Y2x1ZGVkKSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzY2hfc3ViIENPTk5F Q1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gc2NoX3B1YiIKKyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIs ICdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfcHVibGlzaGVkIik7 CitpcygkcmVzdWx0LCBxcSg2KSwKKwknQUxURVIgLi4uIEFERCBUQUJMRVMgSU4gU0NIRU1BIEVY Q0VQVDogaW5jbHVkZWQgdGFibGUgc3luY2VkJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEu dGFiX2V4Y2x1ZGVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknQUxURVIgLi4uIEFERCBUQUJM RVMgSU4gU0NIRU1BIEVYQ0VQVDogZXhjbHVkZWQgdGFibGUgbm90IHN5bmNlZCcpOworCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHNj aF9zdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBV QkxJQ0FUSU9OIHNjaF9wdWInKTsKKwogIyBDbGVhbnVwIHNjaGVtYSB0YWJsZXMgYmVmb3JlIHRo ZSBtdWx0aS1wdWJsaWNhdGlvbiBzZWN0aW9uLgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgU0NIRU1BIHNjaDEgQ0FTQ0FERScpOwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNDSEVNQSBzY2gxIENBU0NBREUnKTsKLS0g CjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000004cbf065229c81c Content-Type: application/octet-stream; name="v6-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABLE.patch" Content-Disposition: attachment; filename="v6-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpcj3n312 RnJvbSBkNzA4OGNiNTRmYTU3YzkwMDBlNTcwNTRmNmRiMTY3MjFiYmYwMDEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUdWUsIDE5IE1heSAyMDI2IDEzOjQ0OjM1ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 NiAzLzNdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBTRVQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCBBbHRlclB1YmxpY2F0aW9uRXhjZXB0VGFibGVzKCkgd2l0aCB0 aGUgQVBfU2V0T2JqZWN0cyBjYXNlLAp3aGljaCByZWRlZmluZSB0aGUgcHVibGljYXRpb24gYW5k IHJlcGxhY2VzIHRoZSBlbnRpcmUgRVhDRVBUIGxpc3QuCgpTeW50YXg6CkFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBTRVQgVEFCTEVTIElOIFNDSEVNQSBzIEVYQ0VQVCAoVEFCTEUgdDEpOwoKVGhpcyBw YXRjaCBhbHNvIGNsZWFucyB1cCBFWENFUFQgZW50cmllcyB3aGVuIGEgc2NoZW1hIGlzIGRyb3Bw ZWQKZnJvbSB0aGUgcHVibGljYXRpb24uCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJs aWNhdGlvbi5zZ21sICAgfCAgMzYgKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYyAgICB8IDE0NSArKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNyArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgIDIwICsrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsICAgICAgfCAgMTAgKysKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz N19leGNlcHQucGwgICAgIHwgIDkwICsrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDI5 MyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwKaW5kZXggOGFlZGZkOTUxYTUuLjFiNzNiMzRlNDNhIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCkBAIC01NCwxMCArNTQsNiBAQCBBTFRFUiBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IFJFTkFNRSBUTyA8cgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKiBdCi0KLTxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNl cHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+Ci0KLSAgIFsgT05MWSBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtOTcsNyArOTMsMTEg QEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgIHVzZWQgd2l0aCBhIHB1YmxpY2F0aW9uIGRl ZmluZWQgd2l0aCA8bGl0ZXJhbD5GT1IgVEFCTEU8L2xpdGVyYWw+IG9yCiAgICA8bGl0ZXJhbD5G T1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIHJlcGxhY2VzIHRoZSBsaXN0IG9mIHRhYmxl cy9zY2hlbWFzCiAgICBpbiB0aGUgcHVibGljYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3Q7 IHRoZSBleGlzdGluZyB0YWJsZXMgb3Igc2NoZW1hcwotICAgdGhhdCB3ZXJlIHByZXNlbnQgaW4g dGhlIHB1YmxpY2F0aW9uIHdpbGwgYmUgcmVtb3ZlZC4KKyAgIHRoYXQgd2VyZSBwcmVzZW50IGlu IHRoZSBwdWJsaWNhdGlvbiB3aWxsIGJlIHJlbW92ZWQuICBXaGVuCisgICA8bGl0ZXJhbD5TRVQg VEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gaXMgdXNlZCB3aXRoIGFuCisgICA8bGl0ZXJhbD5F WENFUFQ8L2xpdGVyYWw+IGNsYXVzZSwgdGhlIGV4Y2x1ZGVkIHRhYmxlcyBmb3IgZWFjaCBzY2hl bWEgYXJlCisgICByZXBsYWNlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgaWYgPGxpdGVyYWw+ RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkCisgICBmb3IgYSBzY2hlbWEsIGFueSBleGlzdGlu ZyBleGNsdXNpb25zIGZvciB0aGF0IHNjaGVtYSBhcmUgY2xlYXJlZC4KICAgPC9wYXJhPgogCiAg IDxwYXJhPgpAQCAtMTE2LDcgKzExNiw4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAKICAg PHBhcmE+CiAgICBUaGUgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBjbGF1c2UgY2FuIGJlIHVz ZWQgd2l0aAotICAgPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGV4 Y2x1ZGUgc3BlY2lmaWMgdGFibGVzIGZyb20gYQorICAgPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBT Q0hFTUE8L2xpdGVyYWw+IGFuZAorICAgPGxpdGVyYWw+U0VUIFRBQkxFUyBJTiBTQ0hFTUE8L2xp dGVyYWw+IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVzIGZyb20gYQogICAgc2NoZW1hLWxldmVs IHB1YmxpY2F0aW9uLiA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGlzIG5vdCBzdXBwb3J0ZWQg d2l0aAogICAgPGxpdGVyYWw+RFJPUCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPjsgaW5zdGVh ZCwgZHJvcHBpbmcgYSBzY2hlbWEgZnJvbQogICAgdGhlIHB1YmxpY2F0aW9uIGF1dG9tYXRpY2Fs bHkgcmVtb3ZlcyBhbGwgb2YgaXRzIGFzc29jaWF0ZWQKQEAgLTIxNywxMiArMjE4LDEyIEBAIEFM VEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAgIDxwYXJhPgogICAgICAgU3BlY2lmaWVzIHRhYmxl cyB0byBiZSBleGNsdWRlZCBmcm9tIGEgc2NoZW1hLWxldmVsIHB1YmxpY2F0aW9uIGVudHJ5Lgog ICAgICAgVGhpcyBjbGF1c2UgbWF5IGJlIHVzZWQgd2l0aCA8bGl0ZXJhbD5BREQgVEFCTEVTIElO IFNDSEVNQTwvbGl0ZXJhbD4KLSAgICAgIGFuZCBub3Qgd2l0aCA8bGl0ZXJhbD5EUk9QIFRBQkxF UyBJTiBTQ0hFTUE8L2xpdGVyYWw+LiAgRWFjaCBuYW1lZAotICAgICAgdGFibGUgbXVzdCBiZWxv bmcgdG8gdGhlIHNjaGVtYSBzcGVjaWZpZWQgaW4gdGhlIHNhbWUKLSAgICAgIDxsaXRlcmFsPlRB QkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGNsYXVzZS4gIFRhYmxlIG5hbWVzIG1heSBiZQotICAg ICAgc2NoZW1hLXF1YWxpZmllZCBvciB1bnF1YWxpZmllZDsgdW5xdWFsaWZpZWQgbmFtZXMgYXJl IGltcGxpY2l0bHkKLSAgICAgIHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEgbmFtZWQgaW4gdGhl IHNhbWUgY2xhdXNlLiAgU2VlCi0gICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGlj YXRpb24iLz4gZm9yIGZ1cnRoZXIgZGV0YWlscyBvbiB0aGUKKyAgICAgIGFuZCA8bGl0ZXJhbD5T RVQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIGFuZCBub3Qgd2l0aAorICAgICAgPGxpdGVy YWw+RFJPUCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPi4gIEVhY2ggbmFtZWQgdGFibGUgbXVz dCBiZWxvbmcKKyAgICAgIHRvIHRoZSBzY2hlbWEgc3BlY2lmaWVkIGluIHRoZSBzYW1lIDxsaXRl cmFsPlRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+CisgICAgICBjbGF1c2UuICBUYWJsZSBuYW1l cyBtYXkgYmUgc2NoZW1hLXF1YWxpZmllZCBvciB1bnF1YWxpZmllZDsgdW5xdWFsaWZpZWQKKyAg ICAgIG5hbWVzIGFyZSBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEgbmFtZWQg aW4gdGhlIHNhbWUgY2xhdXNlLgorICAgICAgU2VlIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVw dWJsaWNhdGlvbiIvPiBmb3IgZnVydGhlciBkZXRhaWxzIG9uIHRoZQogICAgICAgc2VtYW50aWNz IG9mIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3Rp dGVtPgpAQCAtMzI4LDYgKzMyOSwxNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBzYWxlc19wdWJsaWNh dGlvbiBBREQgVEFCTEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQgKFRBQkxFIHNhbAogPC9wcm9n cmFtbGlzdGluZz4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgUmVwbGFjZSB0aGUgc2NoZW1h IGxpc3Qgb2YgPHN0cnVjdG5hbWU+c2FsZXNfcHVibGljYXRpb248L3N0cnVjdG5hbWU+IHdpdGgK KyAgIDxzdHJ1Y3RuYW1lPnNhbGVzPC9zdHJ1Y3RuYW1lPiwgZXhjbHVkaW5nIG9ubHkKKyAgIDxz dHJ1Y3RuYW1lPnNhbGVzLmRyYWZ0czwvc3RydWN0bmFtZT4gKGFueSBwcmV2aW91c2x5IGV4Y2x1 ZGVkIHRhYmxlcyBmb3IKKyAgIHRoYXQgc2NoZW1hIGFyZSByZXBsYWNlZCwgYW5kIHNjaGVtYXMg cHJldmlvdXNseSBpbiB0aGUgcHVibGljYXRpb24gYXJlCisgICByZW1vdmVkKToKKzxwcm9ncmFt bGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIFNFVCBUQUJMRVMg SU4gU0NIRU1BIHNhbGVzIEVYQ0VQVCAoVEFCTEUgc2FsZXMuZHJhZnRzKTsKKzwvcHJvZ3JhbWxp c3Rpbmc+CisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIEFkZCB0YWJsZXMgPHN0cnVjdG5hbWU+ dXNlcnM8L3N0cnVjdG5hbWU+LAogICAgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5h bWU+IGFuZCBzY2hlbWEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXgg ZWE2ODllNWRhN2MuLjUxMTg4ODFmZjZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlv bmNtZHMuYwpAQCAtMTU4MSw5ICsxNTgxLDExIEBAIEFsdGVyUHVibGljYXRpb25FeGNlcHRUYWJs ZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5v aWQ7CiAKIAkvKgotCSAqIE5vdGhpbmcgdG8gZG8gaWYgbm8gRVhDRVBUIGVudHJpZXMuCisJICog Tm90aGluZyB0byBkbyBpZiBubyBFWENFUFQgZW50cmllcywgZXhjZXB0IGluIFNFVDogZm9yIHRo YXQgaXQgaXMgcXVpdGUKKwkgKiBwb3NzaWJsZSB0aGF0IHRoZSB1c2VyIGhhcyByZW1vdmVkIGFs bCBleGNlcHRpb25zLCBpbiB3aGljaCBjYXNlIHdlCisJICogbmVlZCB0byBkcm9wIGFueSBleGlz dGluZyBvbmVzLgogCSAqLwotCWlmICghZXhjZXB0cmVsYXRpb25zKQorCWlmICghZXhjZXB0cmVs YXRpb25zICYmIHN0bXQtPmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQogCQlyZXR1cm47CiAKIAkv KgpAQCAtMTYwNSwxNyArMTYwNyw2IEBAIEFsdGVyUHVibGljYXRpb25FeGNlcHRUYWJsZXMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRl ZCB3aXRoIERST1AgaW4gQUxURVIgUFVCTElDQVRJT04iKSkpOwogCi0JLyoKLQkgKiBFWENFUFQg d2l0aCBTRVQgaXMgbm90IHN1cHBvcnRlZDogU0VUIHJlcGxhY2VzIHRoZSBzY2hlbWEgbGlzdCBi dXQgZG9lcwotCSAqIG5vdCBoYXZlIGEgd2VsbC1kZWZpbmVkIHNlbWFudGljcyBmb3IgbWVyZ2lu ZyBvciByZXBsYWNpbmcgZXhpc3RpbmcKLQkgKiBleGNlcHQgZW50cmllcy4gIFVzZXJzIHNob3Vs ZCBEUk9QIGFuZCByZS1BREQgdGhlIHNjaGVtYSB3aXRoIHRoZQotCSAqIGRlc2lyZWQgRVhDRVBU IGxpc3QgaW5zdGVhZC4KLQkgKi8KLQlpZiAoc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMp Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAotCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRo IFNFVCBpbiBBTFRFUiBQVUJMSUNBVElPTiIpKSk7Ci0KIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQ X0FkZE9iamVjdHMpCiAJewogCQlMaXN0CSAgICpyZWxzOwpAQCAtMTY0Nyw2ICsxNjM4LDk1IEBA IEFsdGVyUHVibGljYXRpb25FeGNlcHRUYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs CiAKIAkJUHVibGljYXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10KTsKIAor CQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKKwl9CisJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMg Ki8KKwl7CisJCUxpc3QJICAgKm9sZGV4Y2VwdHJlbGlkcyA9IE5JTDsKKwkJTGlzdAkgICAqbmV3 ZXhjZXB0cmVsaWRzID0gTklMOworCQlMaXN0CSAgICpkZWxyZWxpZHMgPSBOSUw7CisJCUxpc3QJ ICAgKnJlbHM7CisJCUxpc3QJICAgKmV4cGxpY2l0cmVsaWRzOworCQlMaXN0Q2VsbCAgICpsYzsK KworCQlyZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRyZWxhdGlvbnMpOworCisJCS8qIENvbGxl Y3QgT0lEcyBvZiB0aGUgZGVzaXJlZCBuZXcgZXhjZXB0IGxpc3QuICovCisJCWZvcmVhY2gobGMs IHJlbHMpCisJCXsKKwkJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpID0gKFB1YmxpY2F0aW9uUmVs SW5mbyAqKSBsZmlyc3QobGMpOworCisJCQluZXdleGNlcHRyZWxpZHMgPSBsYXBwZW5kX29pZChu ZXdleGNlcHRyZWxpZHMsCisJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlkKHByaS0+cmVsYXRp b24pKTsKKwkJfQorCisJCWV4cGxpY2l0cmVsaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJl bGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisK KwkJLyoKKwkJICogVmFsaWRhdGUgdGhhdCBlYWNoIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCBhbHNv IGluIHRoZSBleHBsaWNpdCB0YWJsZQorCQkgKiBsaXN0ICh3aGljaCB3b3VsZCBiZSBjb250cmFk aWN0b3J5KS4KKwkJICovCisJCWZvcmVhY2gobGMsIHJlbHMpCisJCXsKKwkJCVB1YmxpY2F0aW9u UmVsSW5mbyAqcHJpID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBsZmlyc3QobGMpOworCQkJT2lk CQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHByaS0+cmVsYXRpb24pOworCQkJT2lkCQkJcmVs bnMgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShwcmktPnJlbGF0aW9uKTsKKworCQkJaWYgKGxpc3Rf bWVtYmVyX29pZChleHBsaWNpdHJlbGlkcywgcmVsaWQpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJy bXNnKCJ0YWJsZSBcIiVzLiVzXCIgY2Fubm90IGFwcGVhciBpbiBib3RoIHRoZSB0YWJsZSBsaXN0 IGFuZCB0aGUgRVhDRVBUIGNsYXVzZSIsCisJCQkJCQkJICAgZ2V0X25hbWVzcGFjZV9uYW1lKHJl bG5zKSwKKwkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwcmktPnJlbGF0aW9uKSkp OworCQl9CisKKwkJLyoKKwkJICogR2V0IHRoZSBjdXJyZW50IHNldCBvZiBleGNlcHQgZW50cmll cy4gIE9ubHkgRk9SIEFMTCBUQUJMRVMgYW5kCisJCSAqIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlv bnMgY2FuIGhhdmUgZXhjZXB0IGVudHJpZXM7IGZvciBhbnkgb3RoZXIKKwkJICogcHVibGljYXRp b24gdHlwZSBvbGRleGNlcHRyZWxpZHMgc3RheXMgTklMLgorCQkgKgorCQkgKiBOb3RlOiB3ZSBj aGVjayBpc19zY2hlbWFfcHVibGljYXRpb24oKSBhZ2FpbnN0IHRoZSBjdXJyZW50IGNhdGFsb2cK KwkJICogc3RhdGUgKGJlZm9yZSBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyBoYXMgcnVuKSwgc28g aWYgdGhlIGNhbGxlciBpcworCQkgKiBkb2luZyBTRVQgVEFCTEUgdDEgdG8gY29udmVydCBhIHNj aGVtYSBwdWJsaWNhdGlvbiBpbnRvIGEgcGxhaW4KKwkJICogdGFibGUgcHVibGljYXRpb24sIGlz X3NjaGVtYV9wdWJsaWNhdGlvbigpIHN0aWxsIHJldHVybnMgdHJ1ZSBoZXJlLgorCQkgKiBUaGF0 IGlzIGludGVudGlvbmFsOiBpdCBsZXRzIHVzIGRpc2NvdmVyIGFuZCBjbGVhbiB1cCBhbnkgc3Rh bGUKKwkJICogZXhjZXB0IGVudHJpZXMgdGhhdCBiZWxvbmcgdG8gdGhlIG9sZCBzY2hlbWEgZGVm aW5pdGlvbi4KKwkJICovCisJCWlmIChHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyB8 fCBpc19zY2hlbWFfcHVibGljYXRpb24ocHViaWQpKQorCQkJb2xkZXhjZXB0cmVsaWRzID0gR2V0 RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJICAgUFVCTElD QVRJT05fUEFSVF9ST09UKTsKKworCQkvKiBCdWlsZCBhIGxpc3Qgb2Ygb2xkIGV4Y2VwdCBlbnRy aWVzIG5vdCBwcmVzZW50IGluIHRoZSBuZXcgbGlzdC4gKi8KKwkJZm9yZWFjaChsYywgb2xkZXhj ZXB0cmVsaWRzKQorCQl7CisJCQlPaWQJCQlvbGRyZWxpZCA9IGxmaXJzdF9vaWQobGMpOworCisJ CQlpZiAoIWxpc3RfbWVtYmVyX29pZChuZXdleGNlcHRyZWxpZHMsIG9sZHJlbGlkKSkKKwkJCQlk ZWxyZWxpZHMgPSBsYXBwZW5kX29pZChkZWxyZWxpZHMsIG9sZHJlbGlkKTsKKwkJfQorCisJCS8q IERyb3Agb2xkIGV4Y2VwdCBlbnRyaWVzIG5vdCBwcmVzZW50IGluIHRoZSBuZXcgbGlzdC4gKi8K KwkJZm9yZWFjaChsYywgZGVscmVsaWRzKQorCQl7CisJCQlPaWQJCQlyZWxpZCA9IGxmaXJzdF9v aWQobGMpOworCQkJT2lkCQkJcHJvaWQ7CisJCQlPYmplY3RBZGRyZXNzIG9iajsKKworCQkJcHJv aWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJCQlBbnVtX3Bn X3B1YmxpY2F0aW9uX3JlbF9vaWQsCisJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSwK KwkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwkJCWlmICghT2lkSXNWYWxpZChw cm9pZCkpCisJCQkJY29udGludWU7CQkvKiBhbHJlYWR5IGdvbmUgKi8KKworCQkJT2JqZWN0QWRk cmVzc1NldChvYmosIFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgcHJvaWQpOworCQkJcGVyZm9y bURlbGV0aW9uKCZvYmosIERST1BfQ0FTQ0FERSwgMCk7CisJCX0KKworCQkvKiBBZGQgbmV3IGV4 Y2VwdCBlbnRyaWVzLCBza2lwcGluZyBhbnkgYWxyZWFkeSBwcmVzZW50LiAqLworCQlQdWJsaWNh dGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CisKIAkJQ2xvc2VUYWJsZUxp c3QocmVscyk7CiAJfQogfQpAQCAtMjMwMSw2ICsyMzgxLDggQEAgUHVibGljYXRpb25Ecm9wU2No ZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vaykKIAlmb3JlYWNo KGxjLCBzY2hlbWFzKQogCXsKIAkJT2lkCQkJc2NoZW1haWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJ TGlzdAkgICAqZXhjZXB0b2lkczsKKwkJTGlzdENlbGwgICAqZWxjOwogCiAJCXBzaWQgPSBHZXRT eXNDYWNoZU9pZDIoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQkJICAgQW51bV9wZ19w dWJsaWNhdGlvbl9uYW1lc3BhY2Vfb2lkLApAQCAtMjMxNyw4ICsyMzk5LDQ1IEBAIFB1YmxpY2F0 aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdfb2sp CiAJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKHNjaGVtYWlkKSkpKTsKIAkJfQogCisJCS8qCisJ CSAqIENvbGxlY3QgcHJleGNlcHQgcm93cyBmb3IgdGFibGVzIGJlbG9uZ2luZyB0byB0aGlzIHNj aGVtYSBiZWZvcmUKKwkJICogcmVtb3ZpbmcgdGhlIHNjaGVtYSBlbnRyeS4gIEdldEV4Y2x1ZGVk UHVibGljYXRpb25UYWJsZXMgcmVsaWVzIG9uCisJCSAqIGlzX3NjaGVtYV9wdWJsaWNhdGlvbigp LCB3aGljaCBzY2FucyBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2U7IGlmCisJCSAqIHRoaXMgaXMg dGhlIGxhc3Qgc2NoZW1hIGluIHRoZSBwdWJsaWNhdGlvbiwgcGVyZm9ybURlbGV0aW9uKCkgYmVs b3cKKwkJICogd291bGQgcmVtb3ZlIHRoYXQgcm93IGFuZCBtYWtlIGlzX3NjaGVtYV9wdWJsaWNh dGlvbigpIHJldHVybgorCQkgKiBmYWxzZSwgdHJpcHBpbmcgdGhlIGFzc2VydGlvbi4KKwkJICov CisJCWV4Y2VwdG9pZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBQVUJM SUNBVElPTl9QQVJUX1JPT1QpOworCiAJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlv bk5hbWVzcGFjZVJlbGF0aW9uSWQsIHBzaWQpOwogCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJP UF9DQVNDQURFLCAwKTsKKworCQkvKgorCQkgKiBEcm9wIGFueSBwcmV4Y2VwdCByb3dzIGZvciB0 YWJsZXMgYmVsb25naW5nIHRvIHRoaXMgc2NoZW1hLiBUaGVzZQorCQkgKiByb3dzIGhhdmUgbm8g cGdfZGVwZW5kIGVudHJ5IHBvaW50aW5nIGF0IHRoZQorCQkgKiBwZ19wdWJsaWNhdGlvbl9uYW1l c3BhY2Ugcm93LCBzbyB0aGV5IGFyZSBub3QgY2FzY2FkZWQgYnkgdGhlCisJCSAqIHBlcmZvcm1E ZWxldGlvbigpIGNhbGwgYWJvdmUgYW5kIG11c3QgYmUgY2xlYW5lZCB1cCBleHBsaWNpdGx5Lgor CQkgKi8KKwkJZm9yZWFjaChlbGMsIGV4Y2VwdG9pZHMpCisJCXsKKwkJCU9pZAkJCXJlbGlkID0g bGZpcnN0X29pZChlbGMpOworCQkJT2lkCQkJcHJvaWQ7CisKKwkJCWlmIChnZXRfcmVsX25hbWVz cGFjZShyZWxpZCkgIT0gc2NoZW1haWQpCisJCQkJY29udGludWU7CisKKwkJCXByb2lkID0gR2V0 U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkJQW51bV9wZ19wdWJsaWNh dGlvbl9yZWxfb2lkLAorCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkJ CQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJCQlpZiAoIU9pZElzVmFsaWQocHJvaWQpKQor CQkJCWNvbnRpbnVlOwkJLyogYWxyZWFkeSBnb25lICovCisKKwkJCU9iamVjdEFkZHJlc3NTZXQo b2JqLCBQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIHByb2lkKTsKKwkJCXBlcmZvcm1EZWxldGlv bigmb2JqLCBEUk9QX0NBU0NBREUsIDApOworCQl9CisKKwkJbGlzdF9mcmVlKGV4Y2VwdG9pZHMp OwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDZlYTkyNDQ0MTA1Li44ZGNlNDA4 MTQzZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjM4MSw2ICsyMzgxLDIzIEBAIG1hdGNo X3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9R VUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVN QSIsIE1hdGNoQW55LCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiLCBNYXRjaEFueU4pICYmICFlbmRz X3dpdGgocHJldl93ZCwgJywnKSkKIAkJQ09NUExFVEVfV0lUSCgiKSIpOworCS8qIEFmdGVyIGEg c2luZ2xlIHNjaGVtYSBuYW1lIGluIFNFVCBjb250ZXh0LCBvZmZlciBFWENFUFQgKCBUQUJMRSAq LworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJT RVQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55KSAmJgorCQkJICFlbmRzX3dp dGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUICggVEFCTEUiKTsKKwll bHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwg IlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIpKQorCQlDT01QTEVU RV9XSVRIKCIoIFRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIlNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnks ICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSIpOworCWVsc2UgaWYgKE1h dGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwg IklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiKSkKKwl7CisJ CXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBMRVRFX1dJVEhfUVVF UllfVkVSQkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX3NjaGVtYSk7CisJfQorCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAi VEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIiwgIigiLCAiVEFCTEUi LCBNYXRjaEFueU4pICYmIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRI X1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwgIklO IiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiLCBNYXRjaEFueU4p ICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgiKSIpOwogCS8q IEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBTRVQgKCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksIE1hdGNoQW55TiwgIlNFVCIsICIoIikpCiAJ CUNPTVBMRVRFX1dJVEgoInB1Ymxpc2giLCAicHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucyIsICJw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAppbmRleCBhOWQ1ZTdhNDlkYi4uYzkzZDFjOTYyNzYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC01ODAsNiArNTgwLDI2IEBAIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiBFeGNlcHQgdGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHVi X3RibF9zMSIKIAorLS0gU0VUOiByZXBsYWNlIHRoZSBleGNlcHQgbGlzdCAoa2VlcCBzYW1lIHNj aGVtYSwgZGlmZmVyZW50IGV4Y2VwdCB0YWJsZSkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf YWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczIpOworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9u IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVz IGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJf dGVzdC50ZXN0cHViX3RibF9zMiIKKworLS0gZXJyb3I6IEVYQ0VQVCBpcyBub3QgYWxsb3dlZCB3 aXRoIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1AgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MyKTsKK0VSUk9SOiAgRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggRFJPUCBp biBBTFRFUiBQVUJMSUNBVElPTgorLS0gZXJyb3I6IGV4Y2VwdCB0YWJsZSdzIHNjaGVtYSAocHVi bGljKSBub3QgaW4gdGhlIHB1YmxpY2F0aW9uJ3Mgc2NoZW1hIGxpc3QgKHB1Yl90ZXN0KQorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsKK0VSUk9SOiAgdGFi bGUgInB1YmxpYy50ZXN0cHViX3RibDEiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25n IHRvIHNjaGVtYSAicHViX3Rlc3QiCitMSU5FIDE6IC4uLnhjZXB0IFNFVCBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlcy4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBw dWJfdGVzdC50ZXN0cHViX3RibF9zMjsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0 ZWRfcyBDQVNDQURFOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDZiOWVi MjZhMmFmLi40OTZjMDM5Y2EyNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVi bGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApA QCAtMjg3LDYgKzI4NywxNiBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNl cHQ7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsK IFxkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CiAKKy0tIFNFVDogcmVwbGFjZSB0aGUgZXhjZXB0 IGxpc3QgKGtlZXAgc2FtZSBzY2hlbWEsIGRpZmZlcmVudCBleGNlcHQgdGFibGUpCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKK1xkUnArIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0CisKKy0tIGVycm9yOiBFWENFUFQgaXMgbm90IGFsbG93ZWQgd2l0aCBE Uk9QCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBEUk9QIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMik7 CisKKy0tIGVycm9yOiBleGNlcHQgdGFibGUncyBzY2hlbWEgKHB1YmxpYykgbm90IGluIHRoZSBw dWJsaWNhdGlvbidzIHNjaGVtYSBsaXN0IChwdWJfdGVzdCkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAo VEFCTEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CisKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMjsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyBDQVNDQURFOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5kZXggMGJhNmQ2ZjhiYjIuLmEzMmIyZDc4 NjFhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCisr KyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKQEAgLTM3Niw2ICszNzYs NjYgQEAgJHJlc3VsdCA9CiBpcygkcmVzdWx0LCBxcSgwKSwKIAknQUxURVIgLi4uIEFERCBUQUJM RVMgSU4gU0NIRU1BIEVYQ0VQVDogZXhjbHVkZWQgdGFibGUgbm90IHN5bmNlZCcpOwogCisjIFNF VDogcmVwbGFjZSB0aGUgZXhjZXB0IGxpc3Q7IHRhYl9leGNsdWRlZCBpcyBub3cgaW5jbHVkZWQg YW5kIHRhYl9wdWJsaXNoZWQgaXMgZXhjbHVkZWQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiBzY2hfcHViIFNFVCBUQUJMRVMgSU4g U0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBzY2gxLnRhYl9wdWJsaXNoZWQpIgorKTsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g c2NoX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHNj aDEudGFiX3B1Ymxpc2hlZCBWQUxVRVMgKDcpOworCUlOU0VSVCBJTlRPIHNjaDEudGFiX2V4Y2x1 ZGVkIFZBTFVFUyAoNyk7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn c2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIik7Citp cygkcmVzdWx0LCBxcSg3KSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQ VDogbmV3bHkgaW5jbHVkZWQgdGFibGUgaXMgcmVwbGljYXRlZCcKKyk7CiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCIpOworaXMoJHJlc3VsdCwgcXEoNiksCisJJ0FMVEVS IC4uLiBTRVQgVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IG5vdy1leGNsdWRlZCB0YWJsZSBpcyBu b3QgcmVwbGljYXRlZCcKKyk7CisKKyMgU0VUIHdpdGhvdXQgRVhDRVBUOiBjbGVhcnMgdGhlIGV4 Y2VwdCBsaXN0OyBib3RoIHRhYmxlcyBhcmUgbm93IHB1Ymxpc2hlZC4KKyMgdGFiX3B1Ymxpc2hl ZCB3aWxsIGJlIHJlLXN5bmNlZCBiZWNhdXNlIFJFRlJFU0ggcmVtb3ZlZCBpdHMgZW50cnkgd2hl biBpdCB3YXMKKyMgZXhjbHVkZWQuICBUcnVuY2F0ZSB0aGUgc3Vic2NyaWJlciBjb3B5IGJlZm9y ZWhhbmQgc28gdGhlIHJlLXN5bmMgcHJvZHVjZXMKKyMgYSBwcmVkaWN0YWJsZSBjb3VudDogcHVi bGlzaGVyIGhhcyA3IHJvd3MgKDYgb3JpZ2luYWwgKyBJTlNFUlQoNykpLCBzbyB0aGUKKyMgc3Vi c2NyaWJlciBlbmRzIHVwIHdpdGggNyBhZnRlciByZS1zeW5jLCB0aGVuIDggYWZ0ZXIgSU5TRVJU KDgpLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBz Y2gxLnRhYl9wdWJsaXNoZWQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHNjaF9wdWIgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgc2No MSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiBzY2hfc3ViIFJFRlJFU0ggUFVCTElDQVRJT04iKTsKKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWIn KTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5T RVJUIElOVE8gc2NoMS50YWJfcHVibGlzaGVkIFZBTFVFUyAoOCk7CisJSU5TRVJUIElOVE8gc2No MS50YWJfZXhjbHVkZWQgVkFMVUVTICg4KTsKKykpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfcHVi bGlzaGVkIik7CitpcygkcmVzdWx0LCBxcSg4KSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4g U0NIRU1BIChubyBFWENFUFQpOiB0YWJfcHVibGlzaGVkIHJlcGxpY2F0ZWQgYWZ0ZXIgZXhjZXB0 IGxpc3QgY2xlYXJlZCcKKyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVk Iik7CitpcygkcmVzdWx0LCBxcSg4KSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1B IChubyBFWENFUFQpOiB0YWJfZXhjbHVkZWQgcmVwbGljYXRlZCBhZnRlciBleGNlcHQgbGlzdCBj bGVhcmVkJworKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdE Uk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CiAKQEAgLTQ0Myw2ICs1MDMs MzYgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlND UklQVElPTiB0YXBfc3ViJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMScpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjInKTsKIAorIyBPSyB3aGVu IGEgdGFibGUgaXMgZXhjbHVkZWQgYnkgYSBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVCBwdWJsaWNh dGlvbiwKKyMgYnV0IGlzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcHVibGljYXRpb24uCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgdGFiMScpOworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSB0YWIxJyk7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJM SUNBVElPTiB0YXBfcHViMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWMgRVhDRVBUIChUQUJM RSBwdWJsaWMudGFiMSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBUQUJMRSB0 YWIxOworCUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVTKDEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVy LT5wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMiIK Kyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9w dWJsaXNoZXIsICd0YXBfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxKElOU0VSVCBJTlRPIHRhYjEgVkFMVUVTKDIpKSk7Ciskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0YWIxIE9SREVSIEJZ IGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyKSwKKwkiVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6 IHRhYmxlIGV4Y2x1ZGVkIGluIHNjaGVtYSBwdWIgYnV0IGluY2x1ZGVkIGJ5IGFub3RoZXIgcHVi IGlzIHJlcGxpY2F0ZWQiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIxJyk7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHVi MicpOworCiAkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKIAogZG9uZV90ZXN0aW5nKCk7 Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000004cbf065229c81c--