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 1wSDut-0032jf-0J for pgsql-hackers@arkaria.postgresql.org; Wed, 27 May 2026 13:03:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wSDur-008J56-07 for pgsql-hackers@arkaria.postgresql.org; Wed, 27 May 2026 13:03:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSDuq-008J4y-0i for pgsql-hackers@lists.postgresql.org; Wed, 27 May 2026 13:03:21 +0000 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wSDup-0000000111X-0UBn for pgsql-hackers@lists.postgresql.org; Wed, 27 May 2026 13:03:20 +0000 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-43b53f048beso4484683fac.1 for ; Wed, 27 May 2026 06:03:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779886998; cv=none; d=google.com; s=arc-20240605; b=W3DnoZ6Td0mrzCusW1T5VXfX8MRbblKbuI5fOUXMvRbLms2TeN3he1CHM/XxRAg9K5 E+Z7ZAR4R/ROJcQadjqCI59DggcIv9OfP89zvIvmrAM1YSKiRdMGQaTLNZlLPj64nc2u pSjt+UFB89qPRvopkv5Yw9gvKQSD1kN5a7qUjf39pLjMUfeKX180KTpaZjJzobadXheD 0/SLbPLpJwuLWPcn31/PqSuZbJ87n79p2QqfZnJmrczEObuM8p3d5vdguKKIMqaWHaQD IrjSzLnyqq1159h3fCjdN2k7bI3N3+ILJuMWTHfvlQmEhHzhe+YsCpxafwNLdbp0VUX7 4New== 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=YtHkjt07YiaXumEdsiig5KM7hnJgr8T/ZdQ8h+1YZ54=; fh=om2mxAgLzlpCMK4YrP5U6UVpW1wo2PTlzGVHMtfieis=; b=YDI7R9/LHUfJ7I5qib4qQVVlqPcGLEMZ4V/XUrYze90lkWpKg2+cL9iBdF84H3hqOR knqz22O+iixYpNBEFJaC63p11xfF6lPNnVrv+t+xVqWJvN0jYLj742RRisY1yl7kF5Oy 2ao/CBF5RlBs2lRiUzYS0qWiMOHQWnjIbVAYa4JesZUtqLk7s+TWdH6KXNQeNYP+7K18 itHwfr1lhvhwPaIF9CjwZwGXtrLjDGewa4ccMkQy6pHnYDvxx7RHBBTNUlp9El1SHlBh iQ5SC045oOGZoG7HwDl95ZvsGZoSENxNkvJ/Yw11IFp1fNr/wgjllpNUkRp8qE08wqzG Pepw==; 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=1779886998; x=1780491798; 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=YtHkjt07YiaXumEdsiig5KM7hnJgr8T/ZdQ8h+1YZ54=; b=cVqsD9v/j7yfuR9U77+UrwXa5Am78ToGCbB8UvyP/d5nWhzq2QUiApsd3gTUuNUHX0 ftuvEBGe1tke5PpH8+BersHX4jy8ACaroFvFmGE3lnmrzjOFTDCefop3MDBWSKd6ohz9 9tprLFxwdUQZoimDk479hf6opFycbhUizbRaC/n9YBG1MPzEUhh/PZeo44hCS1aAGMqT Gbr35qx8H69RU0+cIHO9xniwbYJY9A/f0GTT6FAFKfvBjpUDFpLPjLq/zw8bmuuoAaEU AppF35tZNCHoS+N5Q7cL+aqDOZAogjiCKfZBazXuJQ7hltenwmsyzJWbn4kV56EYDfYA lPjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886998; x=1780491798; 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=YtHkjt07YiaXumEdsiig5KM7hnJgr8T/ZdQ8h+1YZ54=; b=OCm/IQEa7oxVuAhhPNlpt5ZPQF+pC98lfGoREYIGtPnjQYiFXVUF/BekzFzexxDIus e13OhzkQ9E+CwPx1tO0k8ZHvCTo8aSqzEa2Oev3LTfLNypg6MytCTH7y3OL7Lu8jq0L7 6gRQPYth6EejctrmluqAMFnlwSeZTjhacPnrnqHO61fUW78+e03UvMZb4TK5eaG0gIR1 X9CZ5JJWO/Y/ELqoxRy5fTznRVmyO9COeyT/5/U1FBABgRBNrcI+OUoN4gTwLF1JDgn/ qj0aLxARGp5Gdx1GbqZKJgviJRg6zeZE2tAyDOF+yIXEUogK+puORSKkJoo3HTvSGhzj 0iIg== X-Forwarded-Encrypted: i=1; AFNElJ9iKngud4LkTIEh//MNzt9Bzwrulmgbe3NRylh+DTUBYs8P88qG8oxash7a5n2l/S9wgPugyqyl0TtcoQx0@lists.postgresql.org X-Gm-Message-State: AOJu0YyZY2nxvqZInsEvlw3UnSZIGNM2OGmdigiKv+KqmRa4y6THX5ql o54tldktGrQQpStzannOv72B6R267Izfusswtv8qUEgaABpHDX33s4E4gRP805bQ31OVSUW6zBZ nln9VOl8MSnJghCndoSeyoAiqxLceYP8= X-Gm-Gg: Acq92OFQltv5aYiyfSO16DZblKey3ASDOVfyNoq1EsbHYhEAlbQ9yzT/oz5prP61T8x c25At+jxQR9/FIKD5mCMaOsK3csOCIeIWJ8PvanKRFxoNOsATSpXHJxjg720JRx/svzgcCsNukg PzZNsj3FgQb0WEeWxXfwA8sjyBqag0aDos9I8P/XElHmHL9+GQqJRZcssO0YznQS6pbJQdysGrs YViX5KWW89e3KRGiQ81tzFdo0vCKr5yR5cT0E3hYBE+RPo1q64acSHuDDQ9ks+5HkvUByh9Q9r2 HM3kP0fnGOJsH4OFaQ== X-Received: by 2002:a05:687c:2303:10b0:43b:48b0:8e1a with SMTP id 586e51a60fabf-43b48b0bab2mr7292345fac.23.1779886998137; Wed, 27 May 2026 06:03:18 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Wed, 27 May 2026 18:33:06 +0530 X-Gm-Features: AVHnY4I7tQH9ud61ehtpqHkBXijaLAaWDSccIVCzf_1Gifc54wqkkvg9yalStok Message-ID: Subject: Re: Support EXCEPT for ALL SEQUENCES publications To: Peter Smith Cc: shveta malik , vignesh C , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000045aeb80652cc3cba" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000045aeb80652cc3cba Content-Type: text/plain; charset="UTF-8" On Wed, 27 May 2026 at 09:08, Peter Smith wrote: > > Hi Shlok, > > No more comments for v6-0001. > > Below are some review comments for v6-0002. > > ====== > doc/src/sgml/ref/alter_publication.sgml > > 1. > SET ALL TABLES can be used to update the tables specified > in the EXCEPT clause of a > - FOR ALL TABLES publication. If EXCEPT > - is specified with a list of tables, the existing exclusion list is replaced > - with the specified tables. If EXCEPT is omitted, the > - existing exclusion list is cleared. The SET clause, when > - used with a publication defined with FOR TABLE or > + FOR ALL TABLES publication and > + SET ALL SEQUENCES can be used to update the sequences > + specified in the EXCEPT clause of a > + FOR ALL SEQUENCES publication. If > + EXCEPT is specified with a list of tables or sequences, > + the existing exclusion list is replaced with the specified tables or > + sequences. If EXCEPT is omitted, the existing exclusion > + list is cleared. The SET clause, when used with a > + publication defined with FOR TABLE or > FOR TABLES IN SCHEMA, replaces the list of tables/schemas > in the publication with the specified list; the existing tables or schemas > that were present in the publication will be removed. > > TBH, I think this part of the description is repetitive and > unnecessarily difficult to read. OTOH, fixing it is probably outside > the scope of this patch. Perhaps we can revisit and address all this > properly after both your EXCEPT changes and Nisha's EXCEPT [1] changes > get combined? > I agree. > ~ > > Examples: > > 2. > There are many other small examples, so should you also add one also > for this syntax? > > ====== > src/backend/catalog/pg_publication.c > > 3. > static List * > get_publication_relations(Oid pubid, PublicationPartOpt pub_partopt, > - bool except_flag) > + bool except_flag, char pubrelkind) > > IIUC there should be a sanity Assert in this function to check that > `pubrelkind` can only be either RELKIND_RELATION or RELKIND_SEQUENCE. > > ~~~ > > GetIncludedPublicationRelations: > > 4. > /* > * Gets list of relation oids that are associated with a publication. > * > * This should only be used FOR TABLE publications, the FOR ALL TABLES/SEQUENCES > * should use GetAllPublicationRelations(). > */ > List * > GetIncludedPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt) > { > Assert(!GetPublication(pubid)->alltables); > > return get_publication_relations(pubid, pub_partopt, false, RELKIND_RELATION); > } > > The comment does not match the code/assert. Shouldn't it also do > assert !allsequences? > This function can be called for ALL SEQUENCES publication. For example 'pg_get_publication_tables', 'InvalidatePubRelSyncCache', etc can call this function for all sequence publications, but in this case the list returned is empty. So, there is no overall impact. So, we should not add an 'assert !allsequences'. This has been already discussed here [1]. > ~~~ > > GetAllPublicationRelations: > > 5. > exceptlist = GetExcludedPublicationRelations(pubid, pubviaroot ? > PUBLICATION_PART_ROOT : > - PUBLICATION_PART_LEAF); > + PUBLICATION_PART_LEAF, > + relkind); > > IIUC, that `relkind` should be renamed to pubrelkind. > > ====== > src/backend/commands/publicationcmds.c > > get_delete_rels: > > 6. > +get_delete_rels(Oid pubid, List *rels, List *oldrelids, List **delrels) > > Add some function comments to describe these parameters. > > I also wondered if it would be better to return `delrels` from this > function instead of void. Let the caller accumulate them. > > ~~~ > > 7. > + foreach(newlc, rels) > + { > + PublicationRelInfo *newpubrel; > + Oid newrelid; > + Bitmapset *newcolumns = NULL; > + > + newpubrel = (PublicationRelInfo *) lfirst(newlc); > + newrelid = RelationGetRelid(newpubrel->relation); > + > + /* > + * Validate the column list. If the column list or WHERE clause > + * changes, then the validation done here will be duplicated > + * inside PublicationAddRelations(). The validation is cheap > + * enough that that seems harmless. > + */ > + newcolumns = pub_collist_validate(newpubrel->relation, > + newpubrel->columns); > + > + /* > + * Check if any of the new set of relations matches with the > + * existing relations in the publication. Additionally, if the > + * relation has an associated WHERE clause, check the WHERE > + * expressions also match. Same for the column list. Drop the > + * rest. > + */ > > IIUC, that comment "Check if any of the new..." is really describing > the purpose of this entire loop. IMO, this comment would be better put > atop the "foreach(newlc, rels)". > > ~ > > 8. > + if (newrelid == oldrelid) > + { > + if (equal(oldrelwhereclause, newpubrel->whereClause) && > + bms_equal(oldcolumns, newcolumns)) > + { > + found = true; > + break; > + } > + } > + } > > Consider writing that in a simpler way. > > SUGGESTION > found = (newrelid == oldrelid) && > equal(oldrelwhereclause, newpubrel->whereClause) && > bms_equal(oldcolumns, newcolumns); > > if (found) > break; > > ~~~ > > 9. > + /* > + * Add the non-matched relations to a list so that they can be > + * dropped. > + */ > + if (!found) > + { > + oldrel = palloc_object(PublicationRelInfo); > + oldrel->whereClause = NULL; > + oldrel->columns = NIL; > + oldrel->except = false; > + oldrel->relation = table_open(oldrelid, > + ShareUpdateExclusiveLock); > + *delrels = lappend(*delrels, oldrel); > + } > > 9a. > There seems to be some implicit knowledge that the later DROP is only > going to care about the relation and the other whereClause/columns/etc > will have nothing to do with the dropping. Maybe the comment needs to > say something abouit that? > > ~ > > 9b. > Maybe palloc0_object can be used instead of explicitly setting > everything else you don't care about to NULL/NIL/false? > > ~~~ > > AlterPublicationRelations: > > 10. > /* > * Nothing to do if no objects, except in SET: for that it is quite > * possible that user has not specified any tables in which case we need > * to remove all the existing tables. > */ > if (!tables && stmt->action != AP_SetObjects) > return; > > ~ > > The above code comment seems stale because it is not saying anything > about sequences, and I think it ought to be. > > ~~~ > > 11. > + CloseRelationList(seqs); > CloseRelationList(rels); > > Everywhere else rels came before seqs. So maybe reverse these to match. > > ~~~ > > PublicationDropRelations: > > 12. > * Remove listed tables from the publication. > */ > static void > -PublicationDropTables(Oid pubid, List *rels, bool missing_ok) > +PublicationDropRelations(Oid pubid, List *rels, bool missing_ok) > > The function comment should mention sequences as well. > > ====== > [1] https://www.postgresql.org/message-id/flat/CAHut%2BPvBjw8JJOksjJsCN%2BU4Lda0vWAQTYaYy7ucuMMr8stj0w%40mail.gmail.com#0f1c9caea31ce84b161ec776fe0994b4 I have addressed the remaining comments as well and attached the v7 patch. [1]: https://www.postgresql.org/message-id/CAA4eK1+rnjBOvkiQC2r4LuTwuje653iVPPAXcmJZXPpKvsNbOQ@mail.gmail.com Thanks, Shlok Kyal --00000000000045aeb80652cc3cba Content-Type: application/octet-stream; name="v7-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLIC.patch" Content-Disposition: attachment; filename="v7-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLIC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpo2r37i0 RnJvbSBiNTkzNmZlNzE1MzUxNWJjNGQ5YjkwYzNkZGFlNjdlNzU2MzI2OGNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjYgTWF5IDIwMjYgMTA6NTE6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY3 IDEvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQ1JFQVRFIFBVQkxJQ0FU SU9OCgpFeHRlbmQgQ1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgQUxMIFNFUVVFTkNFUyB0byBz dXBwb3J0IHRoZQpFWENFUFQgc3ludGF4LiBUaGlzIGFsbG93cyBvbmUgb3IgbW9yZSBzZXF1ZW5j ZXMgdG8gYmUgZXhjbHVkZWQuIFRoZQpwdWJsaXNoZXIgd2lsbCBub3Qgc2VuZCB0aGUgZGF0YSBv ZiBleGNsdWRlZCBzZXF1ZW5jZXMgdG8gdGhlIHN1YnNjcmliZXIuCgpFeGFtcGxlOgpDUkVBVEUg UFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHMxLCBz Mik7Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgIHwgICA2ICstCiBk b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICB8ICAzNyArKysrKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgNjggKysrKysrKyst LS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAxMDkgKysr KysrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAg ICAgICB8IDExMSArKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICB8ICA1NiArKysrKysrKy0tLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwgICAgICAgICAgfCAgMjIgKysrKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAg ICAgICAgICAgICAgICAgIHwgIDczICsrKysrKysrKysrKy0tCiBzcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxMiArKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaCAgICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmggICAgICAgICAgICB8ICAxMSArKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0IHwgIDU5ICsrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGlj YXRpb24uc3FsICAgICAgfCAgMjggKysrKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdf ZXhjZXB0LnBsICAgICB8ICA3NSArKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICAgIHwgICAyICstCiAxNyBmaWxlcyBjaGFuZ2VkLCA1MzMgaW5z ZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNGI0NzRjMTM5 MTcuLjQzYTM1NjZkZGEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzA5OSw3ICs3MDk5LDcgQEAgU0NS QU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2Vh YmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJj YXRhbG9nLXBnLWNsYXNzIj48c3RydWN0bmFtZT5wZ19jbGFzczwvc3RydWN0bmFtZT48L2xpbms+ LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgotICAgICAgIFJlZmVyZW5jZSB0byB0YWJsZQorICAgICAgIFJlZmVyZW5jZSB0byB0YWJs ZSBvciBzZXF1ZW5jZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC03 MTA4LDggKzcxMDgsOCBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9u IGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPHN0cnVjdGZp ZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KICAgICAgIDwvcGFy YT4KICAgICAgIDxwYXJhPgotICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIGlzIGV4Y2x1ZGVkIGZy b20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKLSAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRl cHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVDwvbGl0 ZXJhbD48L2xpbms+LgorICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIG9yIHNlcXVlbmNlIGlzIGV4 Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJz cWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQiPjxsaXRlcmFsPkVYQ0VQVDwv bGl0ZXJhbD48L2xpbms+LgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBA IC03MTE4LDcgKzcxMTgsNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPHN0cnVj dGZpZWxkPnBycXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25vZGVfdHJlZTwvdHlwZT4KICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPkV4cHJlc3Npb24gdHJlZSAoaW4gPGZ1bmN0aW9uPm5v ZGVUb1N0cmluZygpPC9mdW5jdGlvbj4KLSAgICAgIHJlcHJlc2VudGF0aW9uKSBmb3IgdGhlIHJl bGF0aW9uJ3MgcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25kaXRpb24uIE51bGwKKyAgICAgIHJl cHJlc2VudGF0aW9uKSBmb3IgdGhlIHRhYmxlJ3MgcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25k aXRpb24uIE51bGwKICAgICAgIGlmIHRoZXJlIGlzIG5vIHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcg Y29uZGl0aW9uLjwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggOWU3ODY4NDg3ZGUuLmViMGI2NjQ5MWQzIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExOSw3ICsxMTksMTEgQEAKICAgIDx4 cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+LiBXaGVuIGEgcHVi bGljYXRpb24gaXMKICAgIGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0 ZXJhbD4sIGEgdGFibGUgb3Igc2V0IG9mIHRhYmxlcyBjYW4KICAgIGJlIGV4cGxpY2l0bHkgZXhj bHVkZWQgZnJvbSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKLSAgIDxsaW5rIGxpbmtlbmQ9InNxbC1j cmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVyYWw+RVhDRVBU PC9saXRlcmFsPjwvbGluaz4KKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlv bi1wYXJhbXMtZm9yLWV4Y2VwdCI+PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4KKyAg IGNsYXVzZS4gU2ltaWxhcmx5LCB3aGVuIGEgcHVibGljYXRpb24gaXMgY3JlYXRlZCB3aXRoCisg ICA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4sIGEgc2VxdWVuY2Ugb3Igc2V0 IG9mIHNlcXVlbmNlcyBjYW4gYmUKKyAgIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBwdWJsaWNh dGlvbiB1c2luZyB0aGUKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1w YXJhbXMtZm9yLWV4Y2VwdCI+PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4KICAgIGNs YXVzZS4KICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dt bAppbmRleCBmODJkNjQwZTZjYS4uZGY3MzZlNzRkMmYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHVibGljYXRpb24uc2dtbApAQCAtMzMsNyArMzMsNyBAQCBDUkVBVEUgUFVCTElDQVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogPHBocmFz ZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2FsbF9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBBTEwgVEFCTEVTIFsg RVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KLSAgICBBTEwgU0VRVUVOQ0VTCisgICAgQUxM IFNFUVVFTkNFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNl cHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCiAKIDxwaHJhc2U+ YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVw bGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCkBAIC00Niw2ICs0NiwxMCBAQCBDUkVBVEUgUFVCTElD QVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgog PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX29iamVjdDwv cmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdCisKKzxwaHJhc2U+ YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfc2VxdWVuY2Vfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICBTRVFVRU5DRSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdCiA8 L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTE4OSwxNSArMTkzLDE4IEBAIENS RUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgIDxwYXJhPgogICAgICAgT25seSBwZXJzaXN0ZW50IHNlcXVlbmNlcyBh cmUgaW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9uLiBUZW1wb3JhcnkKICAgICAgIHNlcXVlbmNl cyBhbmQgdW5sb2dnZWQgc2VxdWVuY2VzIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlv bi4KKyAgICAgIFNlcXVlbmNlcyBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJh bD4gY2xhdXNlIGFyZSBleGNsdWRlZCBmcm9tCisgICAgICB0aGUgcHVibGljYXRpb24uCiAgICAg IDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKLSAgIDx2YXJs aXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJs ZSI+CisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZv ci1leGNlcHQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L3Rlcm0+CiAg ICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFRoaXMgY2xhdXNlIHNwZWNpZmllcyBh IGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlCisgICAgICBUaGlzIGNsYXVz ZSBzcGVjaWZpZXMgdGhlIHRhYmxlcyBvciBzZXF1ZW5jZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSBh bgorICAgICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+QUxMIFNF UVVFTkNFUzwvbGl0ZXJhbD4KICAgICAgIHB1YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAgICAg IDxwYXJhPgpAQCAtMjE3LDkgKzIyNCwxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgICA8L3BhcmE+CiAg ICAgIDxwYXJhPgogICAgICAgVGhlcmUgY2FuIGJlIGEgY2FzZSB3aGVyZSBhIHN1YnNjcmlwdGlv biBpbmNsdWRlcyBtdWx0aXBsZSBwdWJsaWNhdGlvbnMuCi0gICAgICBJbiBzdWNoIGEgY2FzZSwg YSB0YWJsZSBvciBwYXJ0aXRpb24gdGhhdCBpcyBpbmNsdWRlZCBpbiBvbmUgcHVibGljYXRpb24K LSAgICAgIGJ1dCBleGNsdWRlZCAoZXhwbGljaXRseSBvciBpbXBsaWNpdGx5KSBieSB0aGUgPGxp dGVyYWw+RVhDRVBUPC9saXRlcmFsPgotICAgICAgY2xhdXNlIG9mIGFub3RoZXIgaXMgY29uc2lk ZXJlZCBpbmNsdWRlZCBmb3IgcmVwbGljYXRpb24uCisgICAgICBJbiBzdWNoIGEgY2FzZSwgYSB0 YWJsZSwgcGFydGl0aW9uIG9yIHNlcXVlbmNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb25lCisgICAg ICBwdWJsaWNhdGlvbiBidXQgZXhjbHVkZWQgKGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSkgYnkg dGhlCisgICAgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBvZiBhbm90aGVyIGlz IGNvbnNpZGVyZWQgaW5jbHVkZWQgZm9yCisgICAgICByZXBsaWNhdGlvbi4KICAgICAgPC9wYXJh PgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTU0NywxMSArNTU1LDIw IEBAIENSRUFURSBQVUJMSUNBVElPTiBhbGxfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBF WENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIENy ZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNo cm9uaXphdGlvbiwgYW5kCi0gICBhbGwgY2hhbmdlcyBpbiBhbGwgdGFibGVzIGV4Y2VwdCA8c3Ry dWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCi0gICA8c3RydWN0bmFtZT5kZXBhcnRtZW50 czwvc3RydWN0bmFtZT46CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBh bGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb24gZXhjZXB0CisgICA8c3RydWN0bmFtZT5z ZXExPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+c2VxMjwvc3RydWN0bmFtZT46Cis8cHJv Z3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlc19leGNlcHQgRk9S IEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBzZXExLCBzZXEyKTsKKzwvcHJvZ3JhbWxp c3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRo YXQgcHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbiBleGNlcHQKKyAg IDxzdHJ1Y3RuYW1lPnNlcTE8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT5zZXEyPC9zdHJ1 Y3RuYW1lPiwgYW5kIGFsbAorICAgY2hhbmdlcyBpbiBhbGwgdGFibGVzIGV4Y2VwdAorICAgPHN0 cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwv c3RydWN0bmFtZT46CiA8cHJvZ3JhbWxpc3Rpbmc+Ci1DUkVBVEUgUFVCTElDQVRJT04gYWxsX3Nl cXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VTLCBBTEwgVEFCTEVTIEVYQ0VQ VCAoVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzKTsKK0NSRUFURSBQVUJMSUNBVElPTiBhbGxfc2Vx dWVuY2VzX3RhYmxlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBz ZXExLCBzZXEyKSwgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cyk7 CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHVibGljYXRpb24uYwppbmRleCA1YzQ1N2Q5YWNhOC4uNWZkMmMyNzk1YWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTQ5LDIwICs0OSwyOCBAQCB0eXBlZGVm IHN0cnVjdAogfSBwdWJsaXNoZWRfcmVsOwogCiAvKgotICogQ2hlY2sgaWYgcmVsYXRpb24gY2Fu IGJlIGluIGdpdmVuIHB1YmxpY2F0aW9uIGFuZCB0aHJvd3MgYXBwcm9wcmlhdGUKLSAqIGVycm9y IGlmIG5vdC4KKyAqIENoZWNrIGlmIHRoZSB0YXJnZXQgcmVsYXRpb24gaXMgYWxsb3dlZCB0byBi ZSBzcGVjaWZpZWQgaW4gdGhlIGdpdmVuCisgKiBwdWJsaWNhdGlvbiBhbmQgdGhyb3cgYW4gZXJy b3IgaWYgbm90LgorICoKKyAqICdwdWJyZWxraW5kJyBpcyB0aGUgcmVsa2luZCBhY2NlcHRlZCBi eSB0aGUgcHVibGljYXRpb24gY2xhdXNlLAorICogd2hpbGUgJ3RhcmdldHJlbGtpbmQnIGlzIHRo ZSByZWxraW5kIG9mIHRoZSByZWxhdGlvbiBiZWluZyBhZGRlZC4KKyAqIEVycm9yIGlmIHRoZXkg YXJlIG5vdCBjb21wYXRpYmxlLgogICovCiBzdGF0aWMgdm9pZAotY2hlY2tfcHVibGljYXRpb25f YWRkX3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQorY2hlY2tfcHVibGljYXRpb25f YWRkX3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLCBjaGFyIHB1YnJlbGtpbmQpCiB7 CiAJUmVsYXRpb24JdGFyZ2V0cmVsID0gcHJpLT5yZWxhdGlvbjsKKwljaGFyCQl0YXJnZXRyZWxr aW5kID0gUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQ7CiAJY29uc3QgY2hhciAq cmVsbmFtZTsKIAljb25zdCBjaGFyICplcnJvcm1zZzsKIAogCWlmIChwcmktPmV4Y2VwdCkKIAl7 CiAJCXJlbG5hbWUgPSBSZWxhdGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwp OwotCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90IHNwZWNpZnkgcmVsYXRpb24gXCIl c1wiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNlIik7CisJCWlmIChwdWJyZWxraW5k ID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90 IHNwZWNpZnkgXCIlc1wiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1 c2UiKTsKKwkJZWxzZQorCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImNhbm5vdCBzcGVjaWZ5 IFwiJXNcIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJMRSkgY2xhdXNlIik7CiAJfQog CWVsc2UKIAl7CkBAIC03NywxMyArODUsMjMgQEAgY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0 aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5h bWUpLAogCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IGluZGl2aWR1YWwgcGFydGl0aW9ucy4iKSkpOwogCi0JLyogTXVzdCBiZSBhIHJlZ3VsYXIgb3Ig cGFydGl0aW9uZWQgdGFibGUgKi8KLQlpZiAoUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJl bGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgotCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVs KS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCS8qCisJICogTXVzdCBi ZSBhIHJlZ3VsYXIgb3IgcGFydGl0aW9uZWQgdGFibGUgd2hlbiBzcGVjaWZpZWQgaW4gRk9SIFRB QkxFIG9yCisJICogRVhDRVBUIHRhYmxlIGxpc3QKKwkgKi8KKwlpZiAocHVicmVsa2luZCA9PSBS RUxLSU5EX1JFTEFUSU9OICYmIHRhcmdldHJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgor CQl0YXJnZXRyZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJIGVycm1zZyhlcnJvcm1zZywgcmVsbmFtZSksCisJCQkJIGVycmRldGFpbF9yZWxraW5kX25v dF9zdXBwb3J0ZWQodGFyZ2V0cmVsa2luZCkpKTsKKworCS8qIE11c3QgYmUgYSBzZXF1ZW5jZSBp ZiBzcGVjaWZpZWQgaW4gRVhDRVBUIHNlcXVlbmNlIGxpc3QgKi8KKwlpZiAocHVicmVsa2luZCA9 PSBSRUxLSU5EX1NFUVVFTkNFICYmIHRhcmdldHJlbGtpbmQgIT0gUkVMS0lORF9TRVFVRU5DRSkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKIAkJCQkgZXJybXNnKGVycm9ybXNnLCByZWxuYW1lKSwKLQkJCQkgZXJyZGV0YWls X3JlbGtpbmRfbm90X3N1cHBvcnRlZChSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2lu ZCkpKTsKKwkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZCh0YXJnZXRyZWxraW5k KSkpOwogCiAJLyogQ2FuJ3QgYmUgc3lzdGVtIHRhYmxlICovCiAJaWYgKElzQ2F0YWxvZ1JlbGF0 aW9uKHRhcmdldHJlbCkpCkBAIC05NywxMSArMTE1LDE1IEBAIGNoZWNrX3B1YmxpY2F0aW9uX2Fk ZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNn KGVycm9ybXNnLCByZWxuYW1lKSwKKwkJCQkgdGFyZ2V0cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVF TkNFID8KKwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZv ciB0ZW1wb3Jhcnkgc2VxdWVuY2VzLiIpIDoKIAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlv biBpcyBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhcnkgdGFibGVzLiIpKSk7CiAJZWxzZSBpZiAo dGFyZ2V0cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1VOTE9H R0VEKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAorCQkJCSB0YXJn ZXRyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgPworCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3Bl cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2VkIHNlcXVlbmNlcy4iKSA6CiAJCQkJ IGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdW5sb2dnZWQg dGFibGVzLiIpKSk7CiB9CiAKQEAgLTUyMSw3ICs1NDMsOCBAQCBhdHRudW1zdG9pbnQydmVjdG9y KEJpdG1hcHNldCAqYXR0cnMpCiAgKi8KIE9iamVjdEFkZHJlc3MKIHB1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAotCQkJCQkJIGJvb2wg aWZfbm90X2V4aXN0cywgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKmFsdGVyX3N0bXQpCisJCQkJCQkg Ym9vbCBpZl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCwKKwkJ CQkJCSBjaGFyIHB1YnJlbGtpbmQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBsZQl0dXA7 CkBAIC01NTksNyArNTgyLDcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwg UHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0 YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVibGljYXRpb25fYWRkX3Jl bGF0aW9uKHByaSk7CisJY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHByaSwgcHVicmVs a2luZCk7CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1lcyBpbnRvIGEg Qml0bWFwc2V0IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRl KHByaS0+cmVsYXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC05NzksMTUgKzEwMDIsMTQgQEAgR2V0 SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCkKIH0KIAogLyoKLSAqIEdldHMgbGlzdCBvZiB0YWJsZSBvaWRzIHRoYXQg d2VyZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIGEKLSAqIHB1YmxpY2F0aW9u LgotICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbnMuCisgKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyB0aGF0IHdlcmUgc3BlY2lmaWVk IGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciBhCisgKiAnRk9SIEFMTCBUQUJMRVMnIG9yIGEgJ0ZP UiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbi4KICAqLwogTGlzdCAqCi1HZXRFeGNsdWRlZFB1 YmxpY2F0aW9uVGFibGVzKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQorR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9u UGFydE9wdCBwdWJfcGFydG9wdCkKIHsKLQlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5h bGx0YWJsZXMpOworCUFzc2VydChHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyB8fAor CQkgICBHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHNlcXVlbmNlcyk7CiAKIAlyZXR1cm4gZ2V0 X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUpOwogfQpAQCAt MTAzOCw4ICsxMDYwLDkgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAgKiByb290 IHBhcnRpdGlvbmVkIHRhYmxlcy4gVGhpcyBpcyBub3QgYXBwbGljYWJsZSB0byBGT1IgQUxMIFNF UVVFTkNFUwogICogcHVibGljYXRpb24uCiAgKgotICogRm9yIGEgRk9SIEFMTCBUQUJMRVMgcHVi bGljYXRpb24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcyBtZW50aW9uZWQKLSAq IGluIHRoZSBFWENFUFQgY2xhdXNlLgorICogRm9yIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRp b24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcworICogbWVudGlvbmVkIGluIHRo ZSBFWENFUFQgY2xhdXNlLiBGb3IgYSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbiwKKyAq IGl0IGV4Y2x1ZGVzIHNlcXVlbmNlcyBtZW50aW9uZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UuCiAg Ki8KIExpc3QgKgogR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJl bGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKQEAgLTEwNTMsMTEgKzEwNzYsMTAgQEAgR2V0QWxsUHVi bGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9v dCkKIAogCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290 KSk7CiAKLQkvKiBFWENFUFQgZmlsdGVyaW5nIGFwcGxpZXMgb25seSB0byByZWxhdGlvbnMsIG5v dCBzZXF1ZW5jZXMgKi8KLQlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQlleGNl cHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwgcHVidmlhcm9vdCA/ Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkgIFBV QkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJLyogRVhDRVBUIGZpbHRlcmluZyBhcHBsaWVzIHRvIHRh YmxlcyBhbmQgc2VxdWVuY2VzICovCisJZXhjZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRp b25SZWxhdGlvbnMocHViaWQsIHB1YnZpYXJvb3QgPworCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9O X1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAogCWNs YXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggNDQwYWRiMzU2YWQu LmU5NzU3OGRkZDc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlv bmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAt NjEsMTEgKzYxLDExIEBAIHR5cGVkZWYgc3RydWN0IHJmX2NvbnRleHQKIAlPaWQJCQlwYXJlbnRp ZDsJCS8qIHJlbGlkIG9mIHRoZSBwYXJlbnQgcmVsYXRpb24gKi8KIH0gcmZfY29udGV4dDsKIAot c3RhdGljIExpc3QgKk9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKTsKLXN0YXRpYyB2b2lkIENs b3NlVGFibGVMaXN0KExpc3QgKnJlbHMpOworc3RhdGljIExpc3QgKk9wZW5SZWxhdGlvbkxpc3Qo TGlzdCAqdGFibGVzKTsKK3N0YXRpYyB2b2lkIENsb3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMp Owogc3RhdGljIHZvaWQgTG9ja1NjaGVtYUxpc3QoTGlzdCAqc2NoZW1hbGlzdCk7Ci1zdGF0aWMg dm9pZCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZf bm90X2V4aXN0cywKLQkJCQkJCQkJIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKK3N0YXRp YyB2b2lkIFB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9v bCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNo YXIgcHVicmVsa2luZCk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1 YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOwogc3RhdGljIHZvaWQgUHVibGljYXRp b25BZGRTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3Rz LAogCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKQEAgLTE3NywxMSArMTc3 LDEyIEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAv KgogICogQ29udmVydCB0aGUgUHVibGljYXRpb25PYmpTcGVjVHlwZSBsaXN0IGludG8gc2NoZW1h IG9pZCBsaXN0IGFuZAotICogUHVibGljYXRpb25UYWJsZSBsaXN0LgorICogUHVibGljYXRpb25S ZWxhdGlvbiBsaXN0LgogICovCiBzdGF0aWMgdm9pZAogT2JqZWN0c0luUHVibGljYXRpb25Ub09p ZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkgICBM aXN0ICoqcmVscywgTGlzdCAqKmV4Y2VwdHJlbHMsIExpc3QgKipzY2hlbWFzKQorCQkJCQkJICAg TGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHR0YmxzLCBMaXN0ICoqZXhjZXB0c2VxcywKKwkJCQkJ CSAgIExpc3QgKipzY2hlbWFzKQogewogCUxpc3RDZWxsICAgKmNlbGw7CiAJUHVibGljYXRpb25P YmpTcGVjICpwdWJvYmo7CkBAIC0xOTksMTIgKzIwMCwxNiBAQCBPYmplY3RzSW5QdWJsaWNhdGlv blRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJc3dp dGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfRVhD RVBUX1RBQkxFOgotCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7Ci0JCQkJKmV4 Y2VwdHJlbHMgPSBsYXBwZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQlw dWJvYmotPnB1YnJlbGF0aW9uLT5leGNlcHQgPSB0cnVlOworCQkJCSpleGNlcHR0YmxzID0gbGFw cGVuZCgqZXhjZXB0dGJscywgcHVib2JqLT5wdWJyZWxhdGlvbik7CisJCQkJYnJlYWs7CisJCQlj YXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9TRVFVRU5DRToKKwkJCQlwdWJvYmotPnB1YnJlbGF0 aW9uLT5leGNlcHQgPSB0cnVlOworCQkJCSpleGNlcHRzZXFzID0gbGFwcGVuZCgqZXhjZXB0c2Vx cywgcHVib2JqLT5wdWJyZWxhdGlvbik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9O T0JKX1RBQkxFOgotCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNlOwotCQkJCSpy ZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJcHVib2JqLT5wdWJy ZWxhdGlvbi0+ZXhjZXB0ID0gZmFsc2U7CisJCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJv YmotPnB1YnJlbGF0aW9uKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFC TEVTX0lOX1NDSEVNQToKIAkJCQlzY2hlbWFpZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHB1Ym9iai0+ bmFtZSwgZmFsc2UpOwpAQCAtODQ5LDcgKzg1NCw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCWNoYXIJCXB1Ymxp c2hfZ2VuZXJhdGVkX2NvbHVtbnM7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlMaXN0CSAgICpy ZWxhdGlvbnMgPSBOSUw7Ci0JTGlzdAkgICAqZXhjZXB0cmVsYXRpb25zID0gTklMOworCUxpc3QJ ICAgKmV4Y2VwdHRibHMgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0c2VxcyA9IE5JTDsKIAlMaXN0 CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVn ZSBvbiBkYXRhYmFzZSAqLwpAQCAtOTM2LDE4ICs5NDIsMjcgQEAgQ3JlYXRlUHVibGljYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAkvKiBB c3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlPYmplY3RzSW5QdWJs aWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJ CQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CisJCQkJCQkJICAgJmV4Y2Vw dHRibHMsICZleGNlcHRzZXFzLCAmc2NoZW1haWRsaXN0KTsKKworCS8qIFByb2Nlc3MgRVhDRVBU IHNlcXVlbmNlIGxpc3QgKi8KKwlpZiAoc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMgJiYgZXhjZXB0 c2VxcyAhPSBOSUwpCisJeworCQlMaXN0CSAgICpyZWxzID0gT3BlblJlbGF0aW9uTGlzdChleGNl cHRzZXFzKTsKKworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJvaWQsIHJlbHMsIHRydWUs IE5VTEwsIFJFTEtJTkRfU0VRVUVOQ0UpOworCQlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKKwl9 CiAKIAlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJewogCQkvKiBQcm9jZXNzIEVYQ0VQVCB0 YWJsZSBsaXN0ICovCi0JCWlmIChleGNlcHRyZWxhdGlvbnMgIT0gTklMKQorCQlpZiAoZXhjZXB0 dGJscyAhPSBOSUwpCiAJCXsKIAkJCUxpc3QJICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFi bGVMaXN0KGV4Y2VwdHJlbGF0aW9ucyk7Ci0JCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQs IHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJCQlyZWxzID0g T3BlblJlbGF0aW9uTGlzdChleGNlcHR0YmxzKTsKKwkJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25z KHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCwgUkVMS0lORF9SRUxBVElPTik7CisJCQlDbG9zZVJl bGF0aW9uTGlzdChyZWxzKTsKIAkJfQogCiAJCS8qCkBAIC05NjksNyArOTg0LDcgQEAgQ3JlYXRl UHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0 bXQpCiAJCXsKIAkJCUxpc3QJICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJl bGF0aW9ucyk7CisJCQlyZWxzID0gT3BlblJlbGF0aW9uTGlzdChyZWxhdGlvbnMpOwogCQkJVHJh bnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJ CQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIApAQCAtOTc3LDggKzk5Miw4IEBAIENy ZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10 ICpzdG10KQogCQkJCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKIAkJCQkJCQkJCSAgIHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIAotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVi b2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJUHVi bGljYXRpb25BZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMLCBSRUxLSU5EX1JF TEFUSU9OKTsKKwkJCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwogCQl9CiAKIAkJaWYgKHNjaGVt YWlkbGlzdCAhPSBOSUwpCkBAIC0xMjU1LDcgKzEyNzAsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFi bGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCWlmICghdGFi bGVzICYmIHN0bXQtPmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQogCQlyZXR1cm47CiAKLQlyZWxz ID0gT3BlblRhYmxlTGlzdCh0YWJsZXMpOworCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0KHRhYmxl cyk7CiAKIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCiAJewpAQCAtMTI2Niw3 ICsxMjgxLDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+ cHVibmFtZSwgcmVscywgcHVibGlzaF9zY2hlbWEsCiAJCQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZp YXJvb3QpOwogCi0JCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSwgc3Rt dCk7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCwg UkVMS0lORF9SRUxBVElPTik7CiAJfQogCWVsc2UgaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9Ecm9w T2JqZWN0cykKIAkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSk7CkBA IC0xMjg5LDggKzEzMDQsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJICovCiAJCQlpZiAocHViZm9ybS0+cHVi YWxsdGFibGVzKQogCQkJewotCQkJCW9sZHJlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25U YWJsZXMocHViaWQsCi0JCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQkJ CW9sZHJlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJ CQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCQkJfQogCQl9CiAJCWVsc2UKQEAg LTEzNjMsOCArMTM3OCw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJLyoKIAkJCQkgKiBWYWxpZGF0ZSB0aGUg Y29sdW1uIGxpc3QuICBJZiB0aGUgY29sdW1uIGxpc3Qgb3IgV0hFUkUKIAkJCQkgKiBjbGF1c2Ug Y2hhbmdlcywgdGhlbiB0aGUgdmFsaWRhdGlvbiBkb25lIGhlcmUgd2lsbCBiZQotCQkJCSAqIGR1 cGxpY2F0ZWQgaW5zaWRlIFB1YmxpY2F0aW9uQWRkVGFibGVzKCkuICBUaGUgdmFsaWRhdGlvbgot CQkJCSAqIGlzIGNoZWFwIGVub3VnaCB0aGF0IHRoYXQgc2VlbXMgaGFybWxlc3MuCisJCQkJICog ZHVwbGljYXRlZCBpbnNpZGUgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoKS4gIFRoZQorCQkJCSAq IHZhbGlkYXRpb24gaXMgY2hlYXAgZW5vdWdoIHRoYXQgdGhhdCBzZWVtcyBoYXJtbGVzcy4KIAkJ CQkgKi8KIAkJCQluZXdjb2x1bW5zID0gcHViX2NvbGxpc3RfdmFsaWRhdGUobmV3cHVicmVsLT5y ZWxhdGlvbiwKIAkJCQkJCQkJCQkJCSAgbmV3cHVicmVsLT5jb2x1bW5zKTsKQEAgLTE0MTAsMTIg KzE0MjUsMTIgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJICogRG9uJ3QgYm90aGVyIGNhbGN1bGF0aW5nIHRoZSBk aWZmZXJlbmNlIGZvciBhZGRpbmcsIHdlJ2xsIGNhdGNoIGFuZAogCQkgKiBza2lwIGV4aXN0aW5n IG9uZXMgd2hlbiBkb2luZyBjYXRhbG9nIHVwZGF0ZS4KIAkJICovCi0JCVB1YmxpY2F0aW9uQWRk VGFibGVzKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10KTsKKwkJUHVibGljYXRpb25BZGRSZWxhdGlv bnMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQsIFJFTEtJTkRfUkVMQVRJT04pOwogCi0JCUNsb3Nl VGFibGVMaXN0KGRlbHJlbHMpOworCQlDbG9zZVJlbGF0aW9uTGlzdChkZWxyZWxzKTsKIAl9CiAK LQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKKwlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKIH0KIAog LyoKQEAgLTE2NTEsNyArMTY2Niw3IEBAIEFsdGVyUHVibGljYXRpb25BbGxGbGFncyhBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwgUmVsYXRpb24gcmVsLAogICogQWx0ZXIgdGhlIGV4aXN0aW5n IHB1YmxpY2F0aW9uLgogICoKICAqIFRoaXMgaXMgZGlzcGF0Y2hlciBmdW5jdGlvbiBmb3IgQWx0 ZXJQdWJsaWNhdGlvbk9wdGlvbnMsCi0gKiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyBhbmQgQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcy4KKyAqIEFsdGVyUHVibGljYXRpb25TY2hlbWFzIGFuZCBBbHRl clB1YmxpY2F0aW9uUmVsYXRpb25zLgogICovCiB2b2lkCiBBbHRlclB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCkBAIC0xNjgzLDEyICsx Njk4LDE2IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAllbHNlCiAJewogCQlMaXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7 Ci0JCUxpc3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9IE5JTDsKKwkJTGlzdAkgICAqZXhjZXB0dGJs cyA9IE5JTDsKKwkJTGlzdAkgICAqZXhjZXB0c2VxcyA9IE5JTDsKIAkJTGlzdAkgICAqc2NoZW1h aWRsaXN0ID0gTklMOwogCQlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKIAogCQlPYmplY3Rz SW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMs Ci0JCQkJCQkJCSAgICZleGNlcHRyZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCQkg ICAmZXhjZXB0dGJscywgJmV4Y2VwdHNlcXMsICZzY2hlbWFpZGxpc3QpOworCisJCS8qIEVYQ0VQ VCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEFMVEVSIFBVQkxJQ0FUSU9OICovCisJCUFz c2VydChleGNlcHRzZXFzID09IE5JTCk7CiAKIAkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQs IHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxpc3QpOwogCkBAIC0xNzExLDcgKzE3MzAsNyBAQCBB bHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQpCiAJCQkJCWVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwK IAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAotCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChy ZWxhdGlvbnMsIGV4Y2VwdHJlbGF0aW9ucyk7CisJCXJlbGF0aW9ucyA9IGxpc3RfY29uY2F0KHJl bGF0aW9ucywgZXhjZXB0dGJscyk7CiAJCUFsdGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVw LCByZWxhdGlvbnMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCSAgIHNjaGVtYWlkbGlz dCAhPSBOSUwpOwogCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlk bGlzdCk7CkBAIC0xODMwLDEyICsxODQ5LDEyIEBAIFJlbW92ZVB1YmxpY2F0aW9uU2NoZW1hQnlJ ZChPaWQgcHNvaWQpCiB9CiAKIC8qCi0gKiBPcGVuIHJlbGF0aW9ucyBzcGVjaWZpZWQgYnkgYSBQ dWJsaWNhdGlvblRhYmxlIGxpc3QuCi0gKiBUaGUgcmV0dXJuZWQgdGFibGVzIGFyZSBsb2NrZWQg aW4gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrIG1vZGUgaW4gb3JkZXIgdG8KLSAqIGFkZCB0aGVt IHRvIGEgcHVibGljYXRpb24uCisgKiBPcGVuIHJlbGF0aW9ucyBzcGVjaWZpZWQgYnkgYSBQdWJs aWNhdGlvblJlbGF0aW9uIGxpc3QuCisgKiBUaGUgcmV0dXJuZWQgcmVsYXRpb25zIGFyZSBsb2Nr ZWQgaW4gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrIG1vZGUgaW4gb3JkZXIKKyAqIHRvIGFkZCB0 aGVtIHRvIGEgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyBMaXN0ICoKLU9wZW5UYWJsZUxpc3Qo TGlzdCAqdGFibGVzKQorT3BlblJlbGF0aW9uTGlzdChMaXN0ICp0YWJsZXMpCiB7CiAJTGlzdAkg ICAqcmVsaWRzID0gTklMOwogCUxpc3QJICAgKnJlbHMgPSBOSUw7CkBAIC0xODQ4LDcgKzE4Njcs NyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkgKi8KIAlmb3JlYWNoKGxjLCB0YWJs ZXMpCiAJewotCQlQdWJsaWNhdGlvblRhYmxlICp0ID0gbGZpcnN0X25vZGUoUHVibGljYXRpb25U YWJsZSwgbGMpOworCQlQdWJsaWNhdGlvblJlbGF0aW9uICp0ID0gbGZpcnN0X25vZGUoUHVibGlj YXRpb25SZWxhdGlvbiwgbGMpOwogCQlib29sCQlyZWN1cnNlID0gdC0+cmVsYXRpb24tPmluaDsK IAkJUmVsYXRpb24JcmVsOwogCQlPaWQJCQlteXJlbGlkOwpAQCAtMTk4Nyw3ICsyMDA2LDcgQEAg T3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAgKiBDbG9zZSBhbGwgcmVsYXRpb25zIGluIHRo ZSBsaXN0LgogICovCiBzdGF0aWMgdm9pZAotQ2xvc2VUYWJsZUxpc3QoTGlzdCAqcmVscykKK0Ns b3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAKQEAgLTIw MzIsMTEgKzIwNTEsMTUgQEAgTG9ja1NjaGVtYUxpc3QoTGlzdCAqc2NoZW1hbGlzdCkKIH0KIAog LyoKLSAqIEFkZCBsaXN0ZWQgdGFibGVzIHRvIHRoZSBwdWJsaWNhdGlvbi4KKyAqIEFkZCBsaXN0 ZWQgcmVsYXRpb25zIHRvIHRoZSBwdWJsaWNhdGlvbi4KKyAqCisgKiAncHVicmVsa2luZCcgaXMg dGhlIHJlbGtpbmQgYWNjZXB0ZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGNsYXVzZS4KKyAqIFRoZSBy ZWxraW5kIG9mIGVhY2ggcmVsYXRpb24gaW4gJ3JlbHMnIGlzIGNoZWNrZWQgZm9yIGNvbXBhdGli aWxpdHkKKyAqIGFnYWluc3QgaXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1QdWJsaWNhdGlvbkFkZFRh YmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKLQkJCQkJIEFs dGVyUHVibGljYXRpb25TdG10ICpzdG10KQorUHVibGljYXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1 YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCisJCQkJCQlBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwgY2hhciBwdWJyZWxraW5kKQogewogCUxpc3RDZWxsICAgKmxjOwogCkBA IC0yMDQ2LDEyICsyMDY5LDEyIEBAIFB1YmxpY2F0aW9uQWRkVGFibGVzKE9pZCBwdWJpZCwgTGlz dCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQlSZWxhdGlvbglyZWwgPSBwdWJfcmVsLT5y ZWxhdGlvbjsKIAkJT2JqZWN0QWRkcmVzcyBvYmo7CiAKLQkJLyogTXVzdCBiZSBvd25lciBvZiB0 aGUgdGFibGUgb3Igc3VwZXJ1c2VyLiAqLworCQkvKiBNdXN0IGJlIG93bmVyIG9mIHRoZSByZWxh dGlvbiBvciBzdXBlcnVzZXIuICovCiAJCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25S ZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIEdldFVzZXJJZCgpKSkKIAkJCWFjbGNo ZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJk X3JlbC0+cmVsa2luZCksCiAJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsK IAotCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHViaWQsIHB1Yl9yZWwsIGlmX25v dF9leGlzdHMsIHN0bXQpOworCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHViaWQs IHB1Yl9yZWwsIGlmX25vdF9leGlzdHMsIHN0bXQsIHB1YnJlbGtpbmQpOwogCQlpZiAoc3RtdCkK IAkJewogCQkJRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2Jq ZWN0QWRkcmVzcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGZmNGUxMzg4YzU1Li5jN2E0OTlhYjk2ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CkBAIC00NTcsNyArNDU3LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJ CQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJCQkJdmFjdXVtX3JlbGF0 aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CiAJCQkJZHJvcF9vcHRpb25fbGlzdCBw dWJfb2JqX2xpc3QgcHViX2FsbF9vYmpfdHlwZV9saXN0Ci0JCQkJcHViX2V4Y2VwdF9vYmpfbGlz dCBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKKwkJCQlwdWJfZXhjZXB0X3RibF9saXN0IG9wdF9wdWJf ZXhjZXB0X3RibF9jbGF1c2UKKwkJCQlwdWJfZXhjZXB0X3NlcV9saXN0IG9wdF9wdWJfZXhjZXB0 X3NlcV9jbGF1c2UKIAogJXR5cGUgPHJldGNsYXVzZT4gcmV0dXJuaW5nX2NsYXVzZQogJXR5cGUg PG5vZGU+CXJldHVybmluZ19vcHRpb24KQEAgLTU5Nyw3ICs1OTgsOCBAQCBzdGF0aWMgTm9kZSAq bWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CXZhcl92YWx1ZSB6b25lX3ZhbHVlCiAldHlwZSA8cm9s ZXNwZWM+IGF1dGhfaWRlbnQgUm9sZVNwZWMgb3B0X2dyYW50ZWRfYnkKICV0eXBlIDxwdWJsaWNh dGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uT2JqU3BlYwotJXR5cGUgPHB1YmxpY2F0aW9ub2Jq ZWN0c3BlYz4gUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmpl Y3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWMKKyV0eXBlIDxwdWJsaWNhdGlvbm9iamVj dHNwZWM+IFB1YmxpY2F0aW9uRXhjZXB0U2VxU3BlYwogJXR5cGUgPHB1YmxpY2F0aW9uYWxsb2Jq ZWN0c3BlYz4gUHVibGljYXRpb25BbGxPYmpTcGVjCiAKICV0eXBlIDxrZXl3b3JkPiB1bnJlc2Vy dmVkX2tleXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZApAQCAtMTEzMjcsMTAgKzExMzI5LDEw IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGlj YXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJM RTsKLQkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7Ci0JCQkJ CSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMjsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5z ID0gJDM7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNDsKKwkJCQkJJCQtPnB1 YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJy ZWxhdGlvbi0+cmVsYXRpb24gPSAkMjsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5jb2x1bW5zID0g JDM7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkNDsKIAkJCQl9CiAJCQl8 IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJCXsKQEAgLTExMzUxLDcgKzExMzUzLDcgQEAg UHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JK X0NPTlRJTlVBVElPTjsKIAkJCQkJLyoKIAkJCQkJICogSWYgZWl0aGVyIGEgcm93IGZpbHRlciBv ciBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQsIGNyZWF0ZQotCQkJCQkgKiBhIFB1YmxpY2F0aW9u VGFibGUgb2JqZWN0LgorCQkJCQkgKiBhIFB1YmxpY2F0aW9uUmVsYXRpb24gb2JqZWN0LgogCQkJ CQkgKi8KIAkJCQkJaWYgKCQyIHx8ICQzKQogCQkJCQl7CkBAIC0xMTM2MSwxMCArMTEzNjMsMTAg QEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkJICogZXJyb3Igd2lsbCBiZSB0aHJvd24gbGF0 ZXIgdmlhCiAJCQkJCQkgKiBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KCkuCiAJCQkJCQkgKi8KLQkJ CQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkJJCQt PnB1YnRhYmxlLT5yZWxhdGlvbiA9IG1ha2VSYW5nZVZhcihOVUxMLCAkMSwgQDEpOwotCQkJCQkJ JCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDI7Ci0JCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xh dXNlID0gJDM7CisJCQkJCQkkJC0+cHVicmVsYXRpb24gPSBtYWtlTm9kZShQdWJsaWNhdGlvblJl bGF0aW9uKTsKKwkJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSBtYWtlUmFuZ2VWYXIo TlVMTCwgJDEsIEAxKTsKKwkJCQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29sdW1ucyA9ICQyOworCQkJ CQkJJCQtPnB1YnJlbGF0aW9uLT53aGVyZUNsYXVzZSA9ICQzOwogCQkJCQl9CiAJCQkJCWVsc2UK IAkJCQkJewpAQCAtMTEzNzYsMTAgKzExMzc4LDEwIEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJ CQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1 Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047Ci0JCQkJCSQkLT5wdWJ0YWJs ZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0 aW9uID0gbWFrZVJhbmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlzY2FubmVy KTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDM7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+ d2hlcmVDbGF1c2UgPSAkNDsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGlj YXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSBtYWtlUmFu Z2VWYXJGcm9tUXVhbGlmaWVkTmFtZSgkMSwgJDIsIEAxLCB5eXNjYW5uZXIpOworCQkJCQkkJC0+ cHVicmVsYXRpb24tPmNvbHVtbnMgPSAkMzsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT53aGVyZUNs YXVzZSA9ICQ0OwogCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQkvKiBncmFtbWFy IGxpa2UgdGFibGVuYW1lICogLCBPTkxZIHRhYmxlbmFtZSwgT05MWSAoIHRhYmxlbmFtZSApICov CkBAIC0xMTM4NywxMCArMTEzODksMTAgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCXsKIAkJ CQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlw ZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKLQkJCQkJJCQtPnB1YnRhYmxlID0gbWFr ZU5vZGUoUHVibGljYXRpb25UYWJsZSk7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAk MTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDI7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+ d2hlcmVDbGF1c2UgPSAkMzsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGlj YXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSAkMTsKKwkJ CQkJJCQtPnB1YnJlbGF0aW9uLT5jb2x1bW5zID0gJDI7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+ d2hlcmVDbGF1c2UgPSAkMzsKIAkJCQl9CiAJCQl8IENVUlJFTlRfU0NIRU1BCiAJCQkJewpAQCAt MTE0MDYsMjMgKzExNDA4LDI5IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25PYmpTcGVjCiAJ CQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKLW9wdF9wdWJfZXhjZXB0X2NsYXVz ZToKLQkJCUVYQ0VQVCAnKCcgVEFCTEUgcHViX2V4Y2VwdF9vYmpfbGlzdCAnKScJeyAkJCA9ICQ0 OyB9CitvcHRfcHViX2V4Y2VwdF90YmxfY2xhdXNlOgorCQkJRVhDRVBUICcoJyBUQUJMRSBwdWJf ZXhjZXB0X3RibF9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQkJ eyAkJCA9IE5JTDsgfQorCQk7CisKK29wdF9wdWJfZXhjZXB0X3NlcV9jbGF1c2U6CisJCQlFWENF UFQgJygnIFNFUVVFTkNFIHB1Yl9leGNlcHRfc2VxX2xpc3QgJyknCXsgJCQgPSAkNDsgfQogCQkJ fCAvKkVNUFRZKi8JCQkJCQkJCQl7ICQkID0gTklMOyB9CiAJCTsKIAogUHVibGljYXRpb25BbGxP YmpTcGVjOgotCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCisJCQkJQUxMIFRB QkxFUyBvcHRfcHViX2V4Y2VwdF90YmxfY2xhdXNlCiAJCQkJCXsKIAkJCQkJCSQkID0gbWFrZU5v ZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElD QVRJT05fQUxMX1RBQkxFUzsKLQkJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDM7CisJCQkJCQkk JC0+ZXhjZXB0X3JlbGF0aW9ucyA9ICQzOwogCQkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJ CX0KLQkJCQl8IEFMTCBTRVFVRU5DRVMKKwkJCQl8IEFMTCBTRVFVRU5DRVMgb3B0X3B1Yl9leGNl cHRfc2VxX2NsYXVzZQogCQkJCQl7CiAJCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uQWxs T2JqU3BlYyk7CiAJCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OX0FMTF9TRVFVRU5D RVM7CisJCQkJCQkkJC0+ZXhjZXB0X3JlbGF0aW9ucyA9ICQzOwogCQkJCQkJJCQtPmxvY2F0aW9u ID0gQDE7CiAJCQkJCX0KIAkJCQkJOwpAQCAtMTE0MzMsMjEgKzExNDQxLDQxIEBAIHB1Yl9hbGxf b2JqX3R5cGVfbGlzdDoJUHVibGljYXRpb25BbGxPYmpTcGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5k KCQxLCAkMyk7IH0KIAk7CiAKLVB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYzoKK1B1YmxpY2F0aW9u RXhjZXB0VGJsU3BlYzoKIAkJCSByZWxhdGlvbl9leHByCiAJCQkJewogCQkJCQkkJCA9IG1ha2VO b2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJ T05PQkpfRVhDRVBUX1RBQkxFOwotCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNh dGlvblRhYmxlKTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwotCQkJCQkkJC0+ cHVidGFibGUtPnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5wdWJyZWxhdGlvbiA9IG1ha2VOb2Rl KFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24tPmV4Y2VwdCA9IHRy dWU7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSAkMTsKIAkJCQkJJCQtPmxvY2F0 aW9uID0gQDE7CiAJCQkJfQogCTsKIAotcHViX2V4Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25F eGNlcHRPYmpTcGVjCitQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWM6CisJCQkgcmVsYXRpb25fZXhw cgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkk JC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9TRVFVRU5DRTsKKwkJCQkJJCQt PnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5w dWJyZWxhdGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5yZWxhdGlv biA9ICQxOworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKKwkJCQl9CisJOworCitwdWJfZXhjZXB0 X3RibF9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWMKIAkJCQkJeyAkJCA9IGxpc3RfbWFr ZTEoJDEpOyB9Ci0JCQl8IHB1Yl9leGNlcHRfb2JqX2xpc3QgJywnIG9wdF90YWJsZSBQdWJsaWNh dGlvbkV4Y2VwdE9ialNwZWMKKwkJCXwgcHViX2V4Y2VwdF90YmxfbGlzdCAnLCcgb3B0X3RhYmxl IFB1YmxpY2F0aW9uRXhjZXB0VGJsU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDQpOyB9 CisJOworCitwdWJfZXhjZXB0X3NlcV9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMKKwkJ CQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHB1Yl9leGNlcHRfc2VxX2xpc3QgJywn IFB1YmxpY2F0aW9uRXhjZXB0U2VxU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9 CisJCQl8IHB1Yl9leGNlcHRfc2VxX2xpc3QgJywnIFNFUVVFTkNFIFB1YmxpY2F0aW9uRXhjZXB0 U2VxU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDQpOyB9CiAJOwogCkBAIC0yMDc2NSw3 ICsyMDc5Myw3IEBAIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29i amVjdHNfbGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o b2JqLT5sb2NhdGlvbikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7Ci0JCQkqcHVib2JqZWN0 cyA9IGxpc3RfY29uY2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOworCQkJKnB1 Ym9iamVjdHMgPSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNlcHRfcmVsYXRpb25z KTsKIAkJfQogCQllbHNlIGlmIChvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05fQUxMX1NF UVVFTkNFUykKIAkJewpAQCAtMjA3NzcsNiArMjA4MDUsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxf b2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAog CQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKG9iai0+bG9jYXRpb24pKTsKIAogCQkJKmFsbF9zZXF1 ZW5jZXMgPSB0cnVlOworCQkJKnB1Ym9iamVjdHMgPSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywg b2JqLT5leGNlcHRfcmVsYXRpb25zKTsKIAkJfQogCX0KIH0KQEAgLTIwODEyLDggKzIwODQxLDgg QEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlz Y2FuX3QgeXlzY2FubmVyKQogCiAJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJ T05PQkpfVEFCTEUpCiAJCXsKLQkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVidGFibGUgbXVzdCBi ZSBzZXQgZm9yIHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KLQkJCWlmICghcHVib2JqLT5uYW1lICYm ICFwdWJvYmotPnB1YnRhYmxlKQorCQkJLyogcmVsYXRpb24gbmFtZSBvciBwdWJyZWxhdGlvbiBt dXN0IGJlIHNldCBmb3IgdGhpcyB0eXBlIG9mIG9iamVjdCAqLworCQkJaWYgKCFwdWJvYmotPm5h bWUgJiYgIXB1Ym9iai0+cHVicmVsYXRpb24pCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRhYmxl IG5hbWUiKSwKQEAgLTIwODIxLDEyICsyMDg1MCwxMiBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0 KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJCWlm IChwdWJvYmotPm5hbWUpCiAJCQl7Ci0JCQkJLyogY29udmVydCBpdCB0byBQdWJsaWNhdGlvblRh YmxlICovCi0JCQkJUHVibGljYXRpb25UYWJsZSAqcHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNh dGlvblRhYmxlKTsKKwkJCQkvKiBjb252ZXJ0IGl0IHRvIFB1YmxpY2F0aW9uUmVsYXRpb24gKi8K KwkJCQlQdWJsaWNhdGlvblJlbGF0aW9uICpwdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0 aW9uUmVsYXRpb24pOwogCi0JCQkJcHVidGFibGUtPnJlbGF0aW9uID0KKwkJCQlwdWJyZWxhdGlv bi0+cmVsYXRpb24gPQogCQkJCQltYWtlUmFuZ2VWYXIoTlVMTCwgcHVib2JqLT5uYW1lLCBwdWJv YmotPmxvY2F0aW9uKTsKLQkJCQlwdWJvYmotPnB1YnRhYmxlID0gcHVidGFibGU7CisJCQkJcHVi b2JqLT5wdWJyZWxhdGlvbiA9IHB1YnJlbGF0aW9uOwogCQkJCXB1Ym9iai0+bmFtZSA9IE5VTEw7 CiAJCQl9CiAJCX0KQEAgLTIwODM0LDE0ICsyMDg2MywxNCBAQCBwcmVwcm9jZXNzX3B1Ym9ial9s aXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJ IHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVN QSkKIAkJewogCQkJLyogV0hFUkUgY2xhdXNlIGlzIG5vdCBhbGxvd2VkIG9uIGEgc2NoZW1hIG9i amVjdCAqLwotCQkJaWYgKHB1Ym9iai0+cHVidGFibGUgJiYgcHVib2JqLT5wdWJ0YWJsZS0+d2hl cmVDbGF1c2UpCisJCQlpZiAocHVib2JqLT5wdWJyZWxhdGlvbiAmJiBwdWJvYmotPnB1YnJlbGF0 aW9uLT53aGVyZUNsYXVzZSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJCQllcnJtc2coIldIRVJFIGNsYXVzZSBub3QgYWxsb3dl ZCBmb3Igc2NoZW1hIiksCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlv bikpOwogCiAJCQkvKiBDb2x1bW4gbGlzdCBpcyBub3QgYWxsb3dlZCBvbiBhIHNjaGVtYSBvYmpl Y3QgKi8KLQkJCWlmIChwdWJvYmotPnB1YnRhYmxlICYmIHB1Ym9iai0+cHVidGFibGUtPmNvbHVt bnMpCisJCQlpZiAocHVib2JqLT5wdWJyZWxhdGlvbiAmJiBwdWJvYmotPnB1YnJlbGF0aW9uLT5j b2x1bW5zKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKIAkJCQkJCWVycm1zZygiY29sdW1uIHNwZWNpZmljYXRpb24gbm90IGFsbG93ZWQg Zm9yIHNjaGVtYSIpLApAQCAtMjA4NDksMTEgKzIwODc4LDExIEBAIHByZXByb2Nlc3NfcHVib2Jq X2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAog CQkJLyoKIAkJCSAqIFdlIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgdHlw ZSBvZiBzY2hlbWEgb2JqZWN0cwotCQkJICogYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJ0 YWJsZSBpcyBzZXQuCisJCQkgKiBiYXNlZCBvbiB3aGV0aGVyIG5hbWUgYW5kIHB1YnJlbGF0aW9u IGlzIHNldC4KIAkJCSAqLwogCQkJaWYgKHB1Ym9iai0+bmFtZSkKIAkJCQlwdWJvYmotPnB1Ym9i anR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOwotCQkJZWxzZSBpZiAoIXB1 Ym9iai0+bmFtZSAmJiAhcHVib2JqLT5wdWJ0YWJsZSkKKwkJCWVsc2UgaWYgKCFwdWJvYmotPm5h bWUgJiYgIXB1Ym9iai0+cHVicmVsYXRpb24pCiAJCQkJcHVib2JqLT5wdWJvYmp0eXBlID0gUFVC TElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChF UlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCmluZGV4IGQ1NmRjYzcwMWNlLi5lZTIzMzFmNjM0NSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCkBAIC00NjE3LDE4ICs0NjE3LDIyIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0 KQogCQl7CiAJCQlOVUxMLCBOVUxMCiAJCX07CisJCXB1YmluZm9baV0uZXhjZXB0X3NlcXVlbmNl cyA9IChTaW1wbGVQdHJMaXN0KQorCQl7CisJCQlOVUxMLCBOVUxMCisJCX07CiAKIAkJLyogRGVj aWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0 KCYocHViaW5mb1tpXS5kb2JqKSwgZm91dCk7CiAKIAkJLyoKLQkJICogR2V0IHRoZSBsaXN0IG9m IHRhYmxlcyBmb3IgcHVibGljYXRpb25zIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUCi0JCSAqIFRB QkxFIGNsYXVzZS4KKwkJICogR2V0IHRoZSBsaXN0IG9mIHRhYmxlcyBhbmQgc2VxdWVuY2VzIGZv ciBwdWJsaWNhdGlvbnMgc3BlY2lmaWVkIGluCisJCSAqIHRoZSBFWENFUFQgY2xhdXNlLgogCQkg KgotCQkgKiBBbHRob3VnaCBpbmRpdmlkdWFsIHRhYmxlIGVudHJpZXMgaW4gRVhDRVBUIGxpc3Qg Y291bGQgYmUgc3RvcmVkIGluCi0JCSAqIFB1YmxpY2F0aW9uUmVsSW5mbywgZHVtcFB1YmxpY2F0 aW9uVGFibGUgY2Fubm90IGJlIHVzZWQgdG8gZW1pdAotCQkgKiB0aGVtLCBiZWNhdXNlIHRoZXJl IGlzIG5vIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBBREQgY29tbWFuZCB0byBhZGQKLQkJICogaW5k aXZpZHVhbCB0YWJsZSBlbnRyaWVzIHRvIHRoZSBFWENFUFQgbGlzdC4KKwkJICogQWx0aG91Z2gg aW5kaXZpZHVhbCB0YWJsZS9zZXF1ZW5jZSBlbnRyaWVzIGluIEVYQ0VQVCBsaXN0IGNvdWxkIGJl CisJCSAqIHN0b3JlZCBpbiBQdWJsaWNhdGlvblJlbEluZm8sIGR1bXBQdWJsaWNhdGlvblRhYmxl IGNhbm5vdCBiZSB1c2VkCisJCSAqIHRvIGVtaXQgdGhlbSwgYmVjYXVzZSB0aGVyZSBpcyBubyBB TFRFUiBQVUJMSUNBVElPTiAuLi4gQUREIGNvbW1hbmQKKwkJICogdG8gYWRkIGluZGl2aWR1YWwg dGFibGUgZW50cmllcyB0byB0aGUgRVhDRVBUIGxpc3QuCiAJCSAqCiAJCSAqIFRoZXJlZm9yZSwg dGhlIGFwcHJvYWNoIGlzIHRvIGR1bXAgdGhlIGNvbXBsZXRlIEVYQ0VQVCBsaXN0IGluIGEKIAkJ ICogc2luZ2xlIENSRUFURSBQVUJMSUNBVElPTiBzdGF0ZW1lbnQuIFB1YmxpY2F0aW9uSW5mbyBp cyB1c2VkIHRvCkBAIC00NjQyLDkgKzQ2NDYsMTAgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUg KmZvdXQpCiAKIAkJCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCQkJYXBwZW5kUFFFeHBCdWZm ZXIocXVlcnksCi0JCQkJCQkJICAiU0VMRUNUIHBycmVsaWRcbiIKLQkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsXG4iCi0JCQkJCQkJICAiV0hFUkUgcHJwdWJpZCA9 ICV1IEFORCBwcmV4Y2VwdCIsCisJCQkJCQkJICAiU0VMRUNUIHByLnBycmVsaWQsIHBjLnJlbGtp bmRcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4i CisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBjIE9OIHByLnBycmVsaWQgPSBw Yy5vaWRcbiIKKwkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0gJXUgQU5EIHByLnByZXhjZXB0 IiwKIAkJCQkJCQkgIHB1YmluZm9baV0uZG9iai5jYXRJZC5vaWQpOwogCiAJCQlyZXNfdGJscyA9 IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKQEAg LTQ2NTQsMTQgKzQ2NTksMjEgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCQlm b3IgKGludCBqID0gMDsgaiA8IG50YmxzOyBqKyspCiAJCQl7CiAJCQkJT2lkCQkJcHJyZWxpZDsK KwkJCQljaGFyCQlyZWxraW5kOwogCQkJCVRhYmxlSW5mbyAgKnRiaW5mbzsKIAogCQkJCXBycmVs aWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXNfdGJscywgaiwgMCkpOworCQkJCXJlbGtpbmQgPSAq UFFnZXR2YWx1ZShyZXNfdGJscywgaiwgMSk7CiAKIAkJCQl0YmluZm8gPSBmaW5kVGFibGVCeU9p ZChwcnJlbGlkKTsKIAogCQkJCWlmICh0YmluZm8gIT0gTlVMTCkKLQkJCQkJc2ltcGxlX3B0cl9s aXN0X2FwcGVuZCgmcHViaW5mb1tpXS5leGNlcHRfdGFibGVzLCB0YmluZm8pOworCQkJCXsKKwkJ CQkJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCQkJCXNpbXBsZV9wdHJfbGlz dF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3NlcXVlbmNlcywgdGJpbmZvKTsKKwkJCQkJZWxz ZQorCQkJCQkJc2ltcGxlX3B0cl9saXN0X2FwcGVuZCgmcHViaW5mb1tpXS5leGNlcHRfdGFibGVz LCB0YmluZm8pOworCQkJCX0KIAkJCX0KIAogCQkJUFFjbGVhcihyZXNfdGJscyk7CkBAIC00NzIx LDEyICs0NzMzLDMwIEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJs aWNhdGlvbkluZm8gKnB1YmluZm8pCiAJCX0KIAkJaWYgKG5fZXhjZXB0ID4gMCkKIAkJCWFwcGVu ZFBRRXhwQnVmZmVyQ2hhcihxdWVyeSwgJyknKTsKKwl9CisJaWYgKHB1YmluZm8tPnB1YmFsbHNl cXVlbmNlcykKKwl7CisJCWludAkJCW5fZXhjZXB0ID0gMDsKIAotCQlpZiAocHViaW5mby0+cHVi YWxsc2VxdWVuY2VzKQorCQlpZiAocHViaW5mby0+cHViYWxsdGFibGVzKQogCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsIEFMTCBTRVFVRU5DRVMiKTsKKwkJZWxzZQorCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBTRVFVRU5DRVMiKTsKKworCQkvKiBJbmNs dWRlIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZSBpZiB0aGVyZSBhcmUgZXhjZXB0X3NlcXVlbmNl cy4gKi8KKwkJZm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4Y2VwdF9z ZXF1ZW5jZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJCXsKKwkJCVRhYmxlSW5m byAgKnRiaW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCQlpZiAoKytuX2V4Y2Vw dCA9PSAxKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCAoIik7CisJ CQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsICIpOworCQkJYXBwZW5k UFFFeHBCdWZmZXIocXVlcnksICJTRVFVRU5DRSAlcyIsIGZtdFF1YWxpZmllZER1bXBhYmxlKHRi aW5mbykpOworCQl9CisJCWlmIChuX2V4Y2VwdCA+IDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlckNo YXIocXVlcnksICcpJyk7CiAJfQotCWVsc2UgaWYgKHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykK LQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBTRVFVRU5DRVMiKTsKIAog CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIFdJVEggKHB1Ymxpc2ggPSAnIik7CiAJaWYg KHB1YmluZm8tPnB1Ymluc2VydCkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDVhNjcyNmQ4YjEyLi44ZTg2OWZl NzkxYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02NzksNiArNjc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1 YmxpY2F0aW9uSW5mbwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGlzaEdlbmNvbHNUeXBlIHB1 YmdlbmNvbHNfdHlwZTsKIAlTaW1wbGVQdHJMaXN0IGV4Y2VwdF90YWJsZXM7CisJU2ltcGxlUHRy TGlzdCBleGNlcHRfc2VxdWVuY2VzOwogfSBQdWJsaWNhdGlvbkluZm87CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90 LzAwMl9wZ19kdW1wLnBsCmluZGV4IDNlZTlmZGE1MGU0Li40YjJjODhlMjNhMiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwKQEAgLTMyNDIsNiArMzI0MiwyNiBAQCBteSAldGVzdHMgPSAoCiAJ CWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCiAK KwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwK KwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTEgRk9SIEFMTCBT RVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBwdWJsaWMudGVzdF90YWJsZV9jb2wxX3NlcSk7JywK KwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExIEZPUiBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpIFdJ VEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJ L3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwK Kwl9LAorCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMicgPT4geworCQljcmVhdGVfb3JkZXIg PT4gOTIsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEyIEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGUpLCBBTEwgU0VR VUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpOycsCisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBGT1IgQUxMIFRB QkxFUyBFWENFUFQgKFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUpLCBBTEwgU0VRVUVO Q0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpIFdJVEggKHB1 Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAor CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAor CiAJJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAs CiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpAQCAtNDA0Miw2ICs0 MDYyLDggQEAgbXkgJXRlc3RzID0gKAogCX0sCiAKIAknQ1JFQVRFIFNFUVVFTkNFIHRlc3RfdGFi bGVfY29sMV9zZXEnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDkwLAorCQljcmVhdGVfc3FsID0+ ICdDUkVBVEUgU0VRVUVOQ0UgdGVzdF90YWJsZV9jb2wxX3NlcScsCiAJCXJlZ2V4cCA9PiBxci9e CiAJCQlcUUNSRUFURSBTRVFVRU5DRSBkdW1wX3Rlc3QudGVzdF90YWJsZV9jb2wxX3NlcVxFCiAJ CQlcblxzK1xRQVMgaW50ZWdlclxFCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGUxNDQ5NjU0Zjk2Li4xZjY3YzMxMDE3 NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKQEAgLTE3NzgsNyArMTc3OCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJewogCQlQR3Jlc3VsdCAgICpyZXN1bHQgPSBOVUxM OwogCQlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwotCQljaGFyCSAgICpmb290ZXJz WzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OworCQljaGFyCSAgICpmb290ZXJzWzRdID0ge05VTEws IE5VTEwsIE5VTEwsIE5VTEx9OwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAq L1xuIiwgXygiR2V0IHNlcXVlbmNlIGluZm9ybWF0aW9uIikpOwogCQlpZiAocHNldC5zdmVyc2lv biA+PSAxMDAwMDApCkBAIC0xODgyLDExICsxODgyLDE2IEBAIGRlc2NyaWJlT25lVGFibGVEZXRh aWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCXsKIAkJCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsICIvKiAlcyAqL1xuIiwKIAkJCQkJCQkgIF8oIkdldCBwdWJsaWNhdGlvbnMgY29udGFpbmlu ZyB0aGlzIHNlcXVlbmNlIikpOwotCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBw dWJuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwIgorCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwgIlNFTEVDVCBwLnB1Ym5hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uIHAiCiAJCQkJCQkJICAiXG5XSEVSRSBwLnB1YmFsbHNlcXVlbmNlcyIKIAkJCQkJCQkgICJc biBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKSIKKwkJCQkJ CQkgICJcbiBBTkQgTk9UIEVYSVNUUyAoXG4iCisJCQkJCQkJICAiICAgICBTRUxFQ1QgMVxuIgor CQkJCQkJCSAgIiAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgor CQkJCQkJCSAgIiAgICAgV0hFUkUgcHIucHJwdWJpZCA9IHAub2lkIEFORFxuIgorCQkJCQkJCSAg IiAgICAgcHIucHJyZWxpZCA9ICclcycpIgogCQkJCQkJCSAgIlxuT1JERVIgQlkgMSIsCi0JCQkJ CQkJICBvaWQpOworCQkJCQkJCSAgb2lkLCBvaWQpOwogCiAJCQlyZXN1bHQgPSBQU1FMZXhlYyhi dWYuZGF0YSk7CiAJCQlpZiAocmVzdWx0KQpAQCAtMTkxMiw2ICsxOTE3LDQyIEBAIGRlc2NyaWJl T25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQl9CiAJCX0KIAorCQkv KiBQcmludCBwdWJsaWNhdGlvbnMgd2hlcmUgdGhlIHNlcXVlbmNlIGlzIGluIHRoZSBFWENFUFQg Y2xhdXNlICovCisJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJeworCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcC5wdWJuYW1lXG4iCisJCQkJCQkJ ICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgor CQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJ CQkJCSAgIk9SREVSIEJZIDE7Iiwgb2lkKTsKKworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRh dGEpOworCQkJaWYgKHJlc3VsdCkKKwkJCXsKKwkJCQlpbnQJCQl0dXBsZXMgPSBQUW50dXBsZXMo cmVzdWx0KTsKKworCQkJCWlmICh0dXBsZXMgPiAwKQorCQkJCXsKKwkJCQkJcHJpbnRmUFFFeHBC dWZmZXIoJnRtcGJ1ZiwgXygiRXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbnM6IikpOworCisJCQkJ CS8qIE1pZ2h0IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAqLworCQkJCQlmb3IgKGkgPSAw OyBpIDwgdHVwbGVzOyBpKyspCisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmdG1wYnVmLCAiXG4g ICAgXCIlc1wiIiwgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKKworCQkJCQlpZiAoZm9vdGVy c1swXSA9PSBOVUxMKQorCQkJCQkJZm9vdGVyc1swXSA9IHBnX3N0cmR1cCh0bXBidWYuZGF0YSk7 CisJCQkJCWVsc2UgaWYgKGZvb3RlcnNbMV0gPT0gTlVMTCkKKwkJCQkJCWZvb3RlcnNbMV0gPSBw Z19zdHJkdXAodG1wYnVmLmRhdGEpOworCQkJCQllbHNlCisJCQkJCQlmb290ZXJzWzJdID0gcGdf c3RyZHVwKHRtcGJ1Zi5kYXRhKTsKKwkJCQkJcmVzZXRQUUV4cEJ1ZmZlcigmdG1wYnVmKTsKKwkJ CQl9CisKKwkJCQlQUWNsZWFyKHJlc3VsdCk7CisJCQl9CisJCX0KKwogCQlpZiAodGFibGVpbmZv LnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKQogCQkJcHJpbnRmUFFF eHBCdWZmZXIoJnRpdGxlLCBfKCJVbmxvZ2dlZCBzZXF1ZW5jZSBcIiVzLiVzXCIiKSwKIAkJCQkJ CQkgIHNjaGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CkBAIC02OTUwLDYgKzY5OTEsNyBAQCBkZXNj cmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQljaGFyCSAgICpwdWJpZCA9 IFBRZ2V0dmFsdWUocmVzLCBpLCAwKTsKIAkJY2hhcgkgICAqcHVibmFtZSA9IFBRZ2V0dmFsdWUo cmVzLCBpLCAxKTsKIAkJYm9vbAkJcHViYWxsdGFibGVzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVz LCBpLCAzKSwgInQiKSA9PSAwOworCQlib29sCQlwdWJhbGxzZXF1ZW5jZXMgPSBzdHJjbXAoUFFn ZXR2YWx1ZShyZXMsIGksIDQpLCAidCIpID09IDA7CiAJCXByaW50VGFibGVPcHQgbXlvcHQgPSBw c2V0LnBvcHQudG9wdDsKIAogCQlpbml0UFFFeHBCdWZmZXIoJnRpdGxlKTsKQEAgLTY5ODYsNyAr NzAyOCw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQlw cmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDEwKSwgZmFsc2UsIGZh bHNlKTsKIAkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMSks IGZhbHNlLCBmYWxzZSk7CiAKLQkJaWYgKCFwdWJhbGx0YWJsZXMpCisJCWlmICghcHViYWxsdGFi bGVzICYmICFwdWJhbGxzZXF1ZW5jZXMpCiAJCXsKIAkJCS8qIEdldCB0aGUgdGFibGVzIGZvciB0 aGUgc3BlY2lmaWVkIHB1YmxpY2F0aW9uICovCiAJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAi LyogJXMgKi9cbiIsCkBAIC03MDQwLDcgKzcwODIsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhj b25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQot CQllbHNlCisJCWlmIChwdWJhbGx0YWJsZXMpCiAJCXsKIAkJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE5MDAwMCkKIAkJCXsKQEAgLTcwNTIsMTMgKzcwOTQsMzIgQEAgZGVzY3JpYmVQdWJsaWNhdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGNcbiIKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4g T04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZVxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0 YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJ CQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJ CQkgICJXSEVSRSBwci5wcnB1YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHQgQU5EIGMucmVsa2lu ZCBJTiAoJ3InLCdwJylcbiIKIAkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKIAkJCQlp ZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6Iiks CiAJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJ fQogCQl9CisJCWlmIChwdWJhbGxzZXF1ZW5jZXMpCisJCXsKKwkJCWlmIChwc2V0LnN2ZXJzaW9u ID49IDE5MDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgc2VxdWVuY2VzIGluIHRoZSBFWENFUFQgY2xh dXNlIGZvciB0aGlzIHB1YmxpY2F0aW9uICovCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1Ziwg Ii8qICVzICovXG4iLAorCQkJCQkJCQkgIF8oIkdldCBzZXF1ZW5jZXMgZXhjbHVkZWQgYnkgdGhp cyBwdWJsaWNhdGlvbiIpKTsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkg ICJTRUxFQ1Qgbi5uc3BuYW1lIHx8ICcuJyB8fCBjLnJlbG5hbWVcbiIKKwkJCQkJCQkJICAiRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFs b2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZVxuIgorCQkJCQkJCQkg ICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBw ci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnIEFORCBwci5w cmV4Y2VwdCBBTkQgYy5yZWxraW5kID0gJ1MnXG4iCisJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBw dWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNl cHQgc2VxdWVuY2VzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVy cm9yX3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlG b3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGRlNTQ3YThjYjM3Li4xMmQyNzZjYmI2NSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwpAQCAtMzc2MSw2ICszNzYxLDE4IEBAIG1hdGNoX3ByZXZpb3VzX3dv cmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9m b3JfbGlzdF9vZl90YWJsZXMpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIigiLCAi VEFCTEUiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKIAkJQ09NUExF VEVfV0lUSCgiKSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiKSkKKwkJQ09NUExFVEVfV0lUSCgi RVhDRVBUICggU0VRVUVOQ0UiLCAiV0lUSCAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRF IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJF WENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCBTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFV RU5DRVMiLCAiRVhDRVBUIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSCgiU0VRVUVOQ0UiKTsKKwll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIiwgIlNFUVVFTkNFIikpCisJCUNPTVBM RVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNoQW55Tikg JiYgZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZ KFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRF IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJF WENFUFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dk LCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRF IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIikpCiAJCUNPTVBMRVRF X1dJVEgoIklOIFNDSEVNQSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgo cHJldl93ZCwgJywnKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA4OWI0 YmIxNGY2Mi4uNDljMjlhODc2MzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgK QEAgLTE3Nyw4ICsxNzcsOCBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRpb25QYXJ0T3B0CiAKIGV4 dGVybiBMaXN0ICpHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwKIAkJ CQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7Ci1leHRlcm4gTGlzdCAq R2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQsCi0JCQkJCQkJCQkJICBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVkUHVi bGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLAorCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMo dm9pZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCk7CiBleHRlcm4gTGlzdCAqR2V0UHVibGlj YXRpb25TY2hlbWFzKE9pZCBwdWJpZCk7CkBAIC0yMDAsNyArMjAwLDggQEAgZXh0ZXJuIGJvb2wg Y2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9saXN0KFB1YmxpY2F0aW9uICpwdWIsIE9pZCByZWxpZCwK IAkJCQkJCQkJCQlNZW1vcnlDb250ZXh0IG1jeHQsIEJpdG1hcHNldCAqKmNvbHMpOwogZXh0ZXJu IE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGlj YXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzLAotCQkJ CQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICphbHRlcl9zdG10KTsKKwkJCQkJCQkJCQkJ ICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCwKKwkJCQkJCQkJCQkJICBjaGFyIHB1 YnJlbGtpbmQpOwogZXh0ZXJuIEJpdG1hcHNldCAqcHViX2NvbGxpc3RfdmFsaWRhdGUoUmVsYXRp b24gdGFyZ2V0cmVsLCBMaXN0ICpjb2x1bW5zKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1Ymxp Y2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsCiAJCQkJCQkJCQkJCWJv b2wgaWZfbm90X2V4aXN0cyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggOTEzNzdhNmNkZTMu LjIwNGFlYTYxMGNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00NDY1LDE0ICs0NDY1LDE0 IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVFNDb25maWd1cmF0aW9uU3RtdAogCWJvb2wJCW1pc3Np bmdfb2s7CQkvKiBmb3IgRFJPUCAtIHNraXAgZXJyb3IgaWYgbWlzc2luZz8gKi8KIH0gQWx0ZXJU U0NvbmZpZ3VyYXRpb25TdG10OwogCi10eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCit0 eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbGF0aW9uCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlS YW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHB1YmxpY2F0aW9uIHJlbGF0aW9uICovCiAJTm9kZQkg ICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJTGlzdAkgICAqY29sdW1uczsJ CS8qIExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxlICovCiAJYm9vbAkJZXhj ZXB0OwkJCS8qIFRydWUgaWYgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCi19IFB1Ymxp Y2F0aW9uVGFibGU7Cit9IFB1YmxpY2F0aW9uUmVsYXRpb247CiAKIC8qCiAgKiBQdWJsaWNhdGlv biBvYmplY3QgdHlwZQpAQCAtNDQ4MSw2ICs0NDgxLDcgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0 aW9uT2JqU3BlY1R5cGUKIHsKIAlQVUJMSUNBVElPTk9CSl9UQUJMRSwJCS8qIEEgdGFibGUgKi8K IAlQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEUsCS8qIEEgdGFibGUgaW4gdGhlIEVYQ0VQVCBj bGF1c2UgKi8KKwlQVUJMSUNBVElPTk9CSl9FWENFUFRfU0VRVUVOQ0UsIC8qIEEgc2VxdWVuY2Ug aW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1B LAkvKiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9D VVJfU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIGZpcnN0IGVsZW1lbnQgb2YKIAkJCQkJCQkJCQkJ ICogc2VhcmNoX3BhdGggKi8KQEAgLTQ0OTIsNyArNDQ5Myw3IEBAIHR5cGVkZWYgc3RydWN0IFB1 YmxpY2F0aW9uT2JqU3BlYwogCU5vZGVUYWcJCXR5cGU7CiAJUHVibGljYXRpb25PYmpTcGVjVHlw ZSBwdWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGljYXRpb24gb2JqZWN0ICovCiAJY2hh cgkgICAqbmFtZTsKLQlQdWJsaWNhdGlvblRhYmxlICpwdWJ0YWJsZTsKKwlQdWJsaWNhdGlvblJl bGF0aW9uICpwdWJyZWxhdGlvbjsKIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uT2JqU3BlYzsKIApAQCAtNDUw OSw3ICs0NTEwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BbGxPYmpTcGVjCiB7CiAJ Tm9kZVRhZwkJdHlwZTsKIAlQdWJsaWNhdGlvbkFsbE9ialR5cGUgcHVib2JqdHlwZTsJLyogdHlw ZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwotCUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7 CS8qIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KKwlMaXN0CSAgICpl eGNlcHRfcmVsYXRpb25zOwkvKiBkZXBlbmRpbmcgb24gdGhlICdwdWJvYmp0eXBlJywgdGhpcyBp cworCQkJCQkJCQkJICogYSBsaXN0IG9mIGVpdGhlciB0YWJsZXMgb3Igc2VxdWVuY2VzCisJCQkJ CQkJCQkgKiBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQYXJzZUxvYwlsb2Nh dGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0 aW9uQWxsT2JqU3BlYzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dAppbmRleCAyOWU1NGIyMTRhMC4uMTVjMzBmZmVlZmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC00NTgsNyArNDU4LDcgQEAgRXhjbHVkZWQgZnJvbSBw dWJsaWNhdGlvbnM6CiBOdW1iZXIgb2YgcGFydGl0aW9uczogMSAoVXNlIFxkKyB0byBsaXN0IHRo ZW0uKQogCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IChUQUJMRSB0ZXN0cHViX3BhcnQxKTsKLUVSUk9SOiAgY2Fubm90IHNwZWNpZnkgcmVsYXRpb24g InB1YmxpYy50ZXN0cHViX3BhcnQxIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZQor RVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnRlc3RwdWJfcGFydDEiIGluIHRoZSBwdWJs aWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UKIERFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgZm9yIGluZGl2aWR1YWwgcGFydGl0aW9ucy4KIENSRUFURSBUQUJMRSB0 YWJfbWFpbiAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShhKTsKIC0tIEF0dGFjaGluZyBhIHBh cnRpdGlvbiBpcyBub3QgYWxsb3dlZCBpZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgYXBwZWFycyBp biBhCkBAIC00NzMsNiArNDczLDcgQEAgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIC0tLSBU ZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVn cmVzc19wdWJfc2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXEx OworQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTI7CiAtLSBGT1IgQUxMIFNFUVVFTkNF UwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9O IHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczEgRk9SIEFMTCBTRVFVRU5DRVM7CkBAIC01MzQs MTAgKzUzNSw2NCBAQCBTRUxFQ1QgcHVibmFtZSwgcHViYWxsdGFibGVzLCBwdWJhbGxzZXF1ZW5j ZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lCiAgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBzdG9yZWQgICAgICAgICAgICB8IGYgICAgICAgIHwgCiAo MSByb3cpCiAKLURST1AgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMCwgcHViX3Rlc3QucmVncmVz c19wdWJfc2VxMTsKKy0tIFRlc3QgQUxMIFNFUVVFTkNFUyB3aXRoIEVYQ0VQVCBjbGF1c2UKK1NF VCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiByZWdy ZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVO Q0UgcmVncmVzc19wdWJfc2VxMCwgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMSwgU0VRVUVOQ0Ug cmVncmVzc19wdWJfc2VxMik7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitF eGNlcHQgc2VxdWVuY2VzOgorICAgICJwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExIgorICAgICJw dWJsaWMucmVncmVzc19wdWJfc2VxMCIKKyAgICAicHVibGljLnJlZ3Jlc3NfcHViX3NlcTIiCisK Ky0tIENoZWNrIHRoYXQgdGhlIHNlcXVlbmNlIGRlc2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNh dGlvbnMgd2hlcmUgaXQgaXMgbGlzdGVkCistLSBpbiB0aGUgRVhDRVBUIGNsYXVzZQorXGQrIHJl Z3Jlc3NfcHViX3NlcTAKKyAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHVibGljLnJl Z3Jlc3NfcHViX3NlcTAiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11 bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAg ICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK0luY2x1ZGVkIGluIHB1YmxpY2F0aW9uczoKKyAg ICAicmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMiCisgICAgInJlZ3Jlc3Nf cHViX2ZvcmFsbHNlcXVlbmNlczEiCisgICAgInJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczIi CitFeGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uczoKKyAgICAicmVncmVzc19wdWJfZm9yYWxsc2Vx dWVuY2VzMyIKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIGZhaWwgLSBzZXF1ZW5j ZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CitDUkVBVEUgUFVCTElD QVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENFUFQg KFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGlj LnJlZ3Jlc3NfcHViX3NlcTAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1 c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNlcXVlbmNl cy4KKy0tIGZhaWwgLSB0YWJsZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5j ZSBsaXN0CitDUkVBVEUgVEFCTEUgdGFiX3NlcShhIGludCk7CitDUkVBVEUgUFVCTElDQVRJT04g cmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNF UVVFTkNFIHRhYl9zZXEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnRhYl9zZXEi IGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKK0RFVEFJTDogIFRo aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KKy0tIFRlc3QgY29tYmlu YXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1c2UK K1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczEgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIChUQUJMRSB0ZXN0cHViX3RibDEpLCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ug cmVncmVzc19wdWJfc2VxMCk7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2Fs bHRhYmxlczEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzMQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBW aWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAg fCBmICAgICAgICB8IAorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIK K0V4Y2VwdCBzZXF1ZW5jZXM6CisgICAgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEwIgorCitSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwLCBw dWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExLCByZWdyZXNzX3B1Yl9zZXEyOwogRFJPUCBQVUJMSUNB VElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMxOwogRFJPUCBQVUJMSUNBVElPTiByZWdy ZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMyOworRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9m b3JhbGxzZXF1ZW5jZXMzOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2Vx dWVuY2VzX2FsbHRhYmxlczsKK0RST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNl cXVlbmNlc19hbGx0YWJsZXMxOworRFJPUCBUQUJMRSB0YWJfc2VxOwogLS0gZmFpbCAtIFNwZWNp ZnlpbmcgQUxMIFRBQkxFUyBtb3JlIHRoYW4gb25jZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzIEZPUiBBTEwgU0VRVUVOQ0VTLCBBTEwg VEFCTEVTLCBBTEwgVEFCTEVTOwogRVJST1I6ICBpbnZhbGlkIHB1YmxpY2F0aW9uIG9iamVjdCBs aXN0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggMDQxZTE0YTRkZTYuLmQ0 NzI1NTNjN2NkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0yMjMsNiAr MjIzLDcgQEAgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIC0tLSBUZXN0cyBmb3IgcHVibGlj YXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsK IENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOworQ1JFQVRFIFNFUVVF TkNFIHJlZ3Jlc3NfcHViX3NlcTI7CiAKIC0tIEZPUiBBTEwgU0VRVUVOQ0VTCiBTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CkBAIC0yNTMsMTAgKzI1NCwzNSBAQCBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwogU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHViYWxsc2Vx dWVuY2VzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICdyZWdyZXNzX3B1Yl9m b3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlcyc7CiBcZFJwKyByZWdyZXNzX3B1Yl9mb3JfYWxsc2Vx dWVuY2VzX2FsbHRhYmxlcwogCi1EUk9QIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90 ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CistLSBUZXN0IEFMTCBTRVFVRU5DRVMgd2l0aCBFWENFUFQg Y2xhdXNlCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElD QVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyBGT1IgQUxMIFNFUVVFTkNFUyBFWENF UFQgKFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEs IFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTIpOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2Vx dWVuY2VzMworLS0gQ2hlY2sgdGhhdCB0aGUgc2VxdWVuY2UgZGVzY3JpcHRpb24gc2hvd3MgdGhl IHB1YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBsaXN0ZWQKKy0tIGluIHRoZSBFWENFUFQgY2xhdXNl CitcZCsgcmVncmVzc19wdWJfc2VxMAorUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworLS0g ZmFpbCAtIHNlcXVlbmNlIG9iamVjdCBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHRhYmxlIGxpc3QK K0NSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXM0IEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc19wdWJfc2VxMCk7CisKKy0tIGZhaWwgLSB0YWJs ZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0CitDUkVBVEUgVEFC TEUgdGFiX3NlcShhIGludCk7CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxs c2VxdWVuY2VzNCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHRhYl9zZXEpOwor CistLSBUZXN0IGNvbWJpbmF0aW9uIG9mIEFMTCBTRVFVRU5DRVMgYW5kIEFMTCBUQUJMRVMgd2l0 aCBFWENFUFQgY2xhdXNlCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxIEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmwxKSwgQUxMIFNFUVVFTkNFUyBF WENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9y X2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCitE Uk9QIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEs IHJlZ3Jlc3NfcHViX3NlcTI7CiBEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNl cXVlbmNlczE7CiBEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczI7 CitEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczM7CiBEUk9QIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzOworRFJPUCBQ VUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczE7CitEUk9Q IFRBQkxFIHRhYl9zZXE7CiAKIC0tIGZhaWwgLSBTcGVjaWZ5aW5nIEFMTCBUQUJMRVMgbW9yZSB0 aGFuIG9uY2UKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2Vz X2FsbHRhYmxlcyBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxFUywgQUxMIFRBQkxFUzsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IDhjNThkMjgyZWVlLi5jMDNjNzdi YjQxZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCkBAIC0yODIsNiArMjgy LDgxIEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJT Q1JJUFRJT04gdGFwX3N1YicpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CiAKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIGNsYXVzZSB0 ZXN0IGNhc2VzIGZvciBzZXF1ZW5jZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxICgKKwlDUkVBVEUgVEFCTEUgc2VxX3Rlc3QgKHYgQklHSU5UKTsKKwlDUkVBVEUgU0VRVUVO Q0Ugc2VxMTsKKwlDUkVBVEUgU0VRVUVOQ0Ugc2VxMjsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBT RUxFQ1QgbmV4dHZhbCgnc2VxMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlJTlNF UlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxMicpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTAwKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjEgRk9SIEFMTCBTRVFVRU5D RVMgRVhDRVBUIChTRVFVRU5DRSBzZXExKTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTRVFVRU5DRSBzZXExOworCUNSRUFURSBT RVFVRU5DRSBzZXEyOworCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxOworKSk7CisKKyMgV2FpdCBm b3IgaW5pdGlhbCBzeW5jIHRvIGZpbmlzaAorbXkgJHN5bmNlZF9xdWVyeSA9CisgICJTRUxFQ1Qg Y291bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0YXRlIE5P VCBJTiAoJ3InKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdy ZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIENoZWNrIHRoZSBpbml0aWFs IGRhdGEgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gc2VxMSIp OworaXMoJHJlc3VsdCwgJzF8ZicsICdzZXF1ZW5jZXMgaW4gRVhDRVBUIGxpc3QgaXMgZXhjbHVk ZWQnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gc2VxMiIpOworaXMoJHJlc3Vs dCwgJzEwMHx0JywgJ2luaXRpYWwgdGVzdCBkYXRhIHJlcGxpY2F0ZWQgZm9yIHNlcTInKTsKKwor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHdo ZW4gYSBzdWJzY3JpcHRpb24gaXMgc3Vic2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGljYXRpb25z CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyBzZXFf dGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsK KwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxMicpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIEFMTCBT RVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBzZXEyKTsKKykpOworCisjIFN1YnNjcmliZSB0byBt dWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBkaWZmZXJlbnQgRVhDRVBUIHNlcXVlbmNlIGxpc3QK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlBTFRFUiBT VUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyOwor CUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFJFRlJFU0ggU0VRVUVOQ0VTOworKSk7Ciskc3lu Y2VkX3F1ZXJ5ID0KKyAgIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25f cmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElOICgncicpOyI7Ciskbm9kZV9zdWJzY3JpYmVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCisgIG9yIGRpZSAiVGlt ZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0YSI7 CisKKyMgc2VxMSBpcyBleGNsdWRlZCBpbiB0YXBfcHViMSBidXQgaW5jbHVkZWQgaW4gdGFwX3B1 YjIsIHNvIG92ZXJhbGwgdGhlCisjIHN1YnNjcmlwdGlvbiB0cmVhdHMgaXQgYXMgaW5jbHVkZWQu CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSBzZXExIik7CitpcygkcmVzdWx0LCAnMjAw fHQnLAorCSdjaGVjayByZXBsaWNhdGlvbiBvZiBhIHNlcXVlbmNlIGluIHRoZSBFWENFUFQgY2xh dXNlIG9mIG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlcicKKyk7CisKKyMg c2VxMiBpcyBleGNsdWRlZCBpbiB0YXBfcHViMiBidXQgaW5jbHVkZWQgaW4gdGFwX3B1YjEsIHNv IG92ZXJhbGwgdGhlCisjIHN1YnNjcmlwdGlvbiB0cmVhdHMgaXQgYXMgaW5jbHVkZWQuCiskcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBs YXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSBzZXEyIik7CitpcygkcmVzdWx0LCAnMjAwfHQnLAor CSdjaGVjayByZXBsaWNhdGlvbiBvZiBhIHNlcXVlbmNlIGluIHRoZSBFWENFUFQgY2xhdXNlIG9m IG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlcicKKyk7CisKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1 YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElD QVRJT04gdGFwX3B1YjEnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CisKICRub2RlX3B1Ymxpc2hlci0+c3RvcCgn ZmFzdCcpOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg OGNmNDBjODcwNDMuLmEwNGQ3ZGUzY2RjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt MjQ3Myw4ICsyNDczLDggQEAgUHVibGljYXRpb25PYmpTcGVjVHlwZQogUHVibGljYXRpb25QYXJ0 T3B0CiBQdWJsaWNhdGlvblJlbEluZm8KIFB1YmxpY2F0aW9uUmVsS2luZAorUHVibGljYXRpb25S ZWxhdGlvbgogUHVibGljYXRpb25TY2hlbWFJbmZvCi1QdWJsaWNhdGlvblRhYmxlCiBQdWJsaXNo R2VuY29sc1R5cGUKIFB1bGxGaWx0ZXIKIFB1bGxGaWx0ZXJPcHMKLS0gCjIuMzQuMQoK --00000000000045aeb80652cc3cba Content-Type: application/octet-stream; name="v7-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLICA.patch" Content-Disposition: attachment; filename="v7-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLICA.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpo2r3821 RnJvbSAyNGUzYjhlZTc2NTAzZmI1OWRhZDIyM2RmNGVjZTUyN2Y0ZGI3MWM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTEgTWF5IDIwMjYgMTA6NTk6MjggKzA1MzAKU3ViamVjdDogW1BBVENIIHY3 IDIvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQUxURVIgUFVCTElDQVRJ T04KCkV4dGVuZCBBTFRFUiBQVUJMSUNBVElPTiB0byBzdXBwb3J0IGFuIEVYQ0VQVCBjbGF1c2Ug d2hlbiB1c2luZwpBTEwgU0VRVUVOQ0VTLCBhbGxvd2luZyBzcGVjaWZpYyBzZXF1ZW5jZXMgdG8g YmUgZXhjbHVkZWQgZnJvbSB0aGUKcHVibGljYXRpb24uCgpJZiB0aGUgRVhDRVBUIGNsYXVzZSBp cyBzcGVjaWZpZWQsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBmb3IgdGhlCnB1YmxpY2F0 aW9uIGlzIHJlcGxhY2VkIHdpdGggdGhlIHByb3ZpZGVkIHNlcXVlbmNlcy4gSWYgdGhlIEVYQ0VQ VApjbGF1c2UgaXMgb21pdHRlZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHNlcXVlbmNl cyBhcmUgY2xlYXJlZC4KCkV4YW1wbGU6CgogIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgU0VUIEFM TCBTRVFVRU5DRVM7CgpUaGlzIGNsZWFycyBhbnkgZXhpc3Rpbmcgc2VxdWVuY2UgZXhjbHVzaW9u cyBmb3IgdGhlIHB1YmxpY2F0aW9uLgoKICBBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFNFVCBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEsIHMyKTsKClRoaXMgc2V0cyB0aGUgZXhjbHVz aW9uIGxpc3QgdG8gdGhlIHNwZWNpZmllZCBzZXF1ZW5jZXMuCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgfCAgNDEgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgMzEgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyAgICB8IDI2MSArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNCArKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgIDE2ICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwgICAgICB8ICAgNSArCiA3IGZpbGVzIGNoYW5nZWQsIDIzMSBpbnNlcnRp b25zKCspLCAxNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlv bi5zZ21sCmluZGV4IGFhMzJiYjE2OWU5Li4xNWI5N2VmZDU2NiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzYsNyArMzYsNyBAQCBBTFRFUiBQVUJMSUNBVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFN RSBUTyA8cgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1Ymxp Y2F0aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAg ICBBTEwgVEFCTEVTIFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4 Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KLSAgICBBTEwgU0VR VUVOQ0VTCisgICAgQUxMIFNFUVVFTkNFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leGNlcHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNh dGlvbl9kcm9wX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAt NTQsNiArNTQsMTAgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKIDxwaHJhc2U+YW5kIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8 L3BocmFzZT4KIAogICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQorCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IGlz OjwvcGhyYXNlPgorCisgICAgU0VRVUVOQ0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnNlcXVlbmNlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3Jl ZnN5bm9wc2lzZGl2PgogCkBAIC03NSw3ICs3OSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxy CiAgICBUaGUgdGhpcmQgdmFyaWFudCBlaXRoZXIgbW9kaWZpZXMgdGhlIGluY2x1ZGVkIHRhYmxl cy9zY2hlbWFzCiAgICBvciBtYXJrcyB0aGUgcHVibGljYXRpb24gYXMgPGxpdGVyYWw+Rk9SIEFM TCBTRVFVRU5DRVM8L2xpdGVyYWw+IG9yCiAgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0 ZXJhbD4sIG9wdGlvbmFsbHkgdXNpbmcKLSAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gdG8g ZXhjbHVkZSBzcGVjaWZpYyB0YWJsZXMuIFRoZQorICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFs PiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBvciBzZXF1ZW5jZXMuIFRoZQogICAgPGxpdGVy YWw+U0VUIEFMTCBUQUJMRVM8L2xpdGVyYWw+IGNsYXVzZSBjYW4gdHJhbnNmb3JtIGFuIGVtcHR5 IHB1YmxpY2F0aW9uLAogICAgb3Igb25lIGRlZmluZWQgZm9yIDxsaXRlcmFsPkFMTCBTRVFVRU5D RVM8L2xpdGVyYWw+IChvciBib3RoCiAgICA8bGl0ZXJhbD5BTEwgVEFCTEVTPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4pLCBpbnRvCkBAIC04NiwxMSArOTAs MTUgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgIHB1YmxpY2F0aW9uIGRlZmluZWQgZm9y IDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBJbiBhZGRpdGlvbiwKICAgIDxsaXRl cmFsPlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlIHRh YmxlcyBzcGVjaWZpZWQKICAgIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVz ZSBvZiBhCi0gICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24u IElmIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgIGlzIHNwZWNpZmllZCB3aXRoIGEgbGlz dCBvZiB0YWJsZXMsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBpcyByZXBsYWNlZAotICAg d2l0aCB0aGUgc3BlY2lmaWVkIHRhYmxlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBp cyBvbWl0dGVkLCB0aGUKLSAgIGV4aXN0aW5nIGV4Y2x1c2lvbiBsaXN0IGlzIGNsZWFyZWQuIFRo ZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbgotICAgdXNlZCB3aXRoIGEgcHVi bGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKKyAg IDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBwdWJsaWNhdGlvbiBhbmQKKyAgIDxs aXRlcmFsPlNFVCBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUg dGhlIHNlcXVlbmNlcworICAgc3BlY2lmaWVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVy YWw+IGNsYXVzZSBvZiBhCisgICA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4g cHVibGljYXRpb24uIElmCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGlzIHNwZWNpZmll ZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMgb3Igc2VxdWVuY2VzLAorICAgdGhlIGV4aXN0aW5nIGV4 Y2x1c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCB0YWJsZXMgb3IKKyAg IHNlcXVlbmNlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUg ZXhpc3RpbmcgZXhjbHVzaW9uCisgICBsaXN0IGlzIGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8 L2xpdGVyYWw+IGNsYXVzZSwgd2hlbiB1c2VkIHdpdGggYQorICAgcHVibGljYXRpb24gZGVmaW5l ZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKICAgIDxsaXRlcmFsPkZPUiBU QUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgcmVwbGFjZXMgdGhlIGxpc3Qgb2YgdGFibGVzL3Nj aGVtYXMKICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhl IGV4aXN0aW5nIHRhYmxlcyBvciBzY2hlbWFzCiAgICB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUg cHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgpAQCAtMjc3LDYgKzI4NSwyNSBAQCBBTFRFUiBQ VUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdXNl cnMsIGRlcGFydG1lbnRzKQogICAgdGFibGVzOgogPHByb2dyYW1saXN0aW5nPgogQUxURVIgUFVC TElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgQUxMIFRBQkxFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+ PC9wYXJhPgorCisgIDxwYXJhPgorICAgUmVwbGFjZSB0aGUgc2VxdWVuY2UgbGlzdCBpbiB0aGUg cHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVC TElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNF IHNlcTEsIHNlcTIpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBS ZXNldCB0aGUgcHVibGljYXRpb24gdG8gYmUgYSBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9uIHdp dGggbm8gZXhjbHVkZWQKKyAgIHNlcXVlbmNlczoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBV QkxJQ0FUSU9OIG15cHVibGljYXRpb24gU0VUIEFMTCBTRVFVRU5DRVM7Cis8L3Byb2dyYW1saXN0 aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJlcGxhY2UgdGhlIHRhYmxlIGFuZCBzZXF1ZW5j ZSBsaXN0IGluIHRoZSBwdWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1c2U6Cis8cHJvZ3JhbWxpc3Rp bmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFCTEVTIEVYQ0VQ VCAoVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzKSwgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVF TkNFIHNlcTEsIHNlcTIpOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAgPHBhcmE+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWZkMmMyNzk1YWIuLjY4NjQ0MWZj YWI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC05NDYsNyArOTQ2LDcg QEAgR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAgKi8KIHN0YXRp YyBMaXN0ICoKIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlv blBhcnRPcHQgcHViX3BhcnRvcHQsCi0JCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcpCisJCQkJCQkg IGJvb2wgZXhjZXB0X2ZsYWcsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0CSAgICpyZXN1bHQ7 CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTk1NCw2ICs5NTQsOCBAQCBnZXRfcHVibGljYXRp b25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAog CVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2VydChwdWJyZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcHVicmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsK KwogCS8qIEZpbmQgYWxsIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9u LiAqLwogCXB1YnJlbHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwg QWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtOTczLDggKzk3NSwxNSBAQCBnZXRfcHVibGljYXRpb25f cmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAogCQlw dWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwogCiAJCWlm IChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQotCQkJcmVzdWx0ID0gR2V0UHViUGFy dGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJCQkJCQkJ cHVicmVsLT5wcnJlbGlkKTsKKwkJeworCQkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2lu ZChwdWJyZWwtPnBycmVsaWQpOworCisJCQlpZiAoKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9SRUxB VElPTiAmJiByZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pIHx8CisJCQkJKHB1YnJlbGtpbmQg PT0gUkVMS0lORF9SRUxBVElPTiAmJiByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpIHx8CisJCQkJKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAmJiByZWxraW5kID09 IFJFTEtJTkRfU0VRVUVOQ0UpKQorCQkJCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJl bGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVs aWQpOworCQl9CiAJfQogCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKQEAgLTk5OCw3ICsxMDA3 LDcgQEAgR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKIAlBc3NlcnQoIUdldFB1YmxpY2F0aW9uKHB1Ymlk KS0+YWxsdGFibGVzKTsKIAotCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKHB1Ymlk LCBwdWJfcGFydG9wdCwgZmFsc2UpOworCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25z KHB1YmlkLCBwdWJfcGFydG9wdCwgZmFsc2UsIFJFTEtJTkRfUkVMQVRJT04pOwogfQogCiAvKgpA QCAtMTAwNiwxMiArMTAxNSwxMyBAQCBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogICogJ0ZPUiBBTEwgVEFC TEVTJyBvciBhICdGT1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24uCiAgKi8KIExpc3QgKgot R2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFy dE9wdCBwdWJfcGFydG9wdCkKK0dldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1 YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCisJCQkJCQkJCWNoYXIgcHVicmVs a2luZCkKIHsKIAlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMgfHwKIAkJ ICAgR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGxzZXF1ZW5jZXMpOwogCi0JcmV0dXJuIGdldF9w dWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKKwlyZXR1cm4g Z2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUsIHB1YnJl bGtpbmQpOwogfQogCiAvKgpAQCAtMTA2NSw3ICsxMDc1LDcgQEAgR2V0QWxsVGFibGVzUHVibGlj YXRpb25zKHZvaWQpCiAgKiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMgbWVudGlvbmVkIGluIHRoZSBF WENFUFQgY2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitHZXRBbGxQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcHVicmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQog ewogCVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKQEAgLTEwNzQsMTkg KzEwODQsMjAgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJl bGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJTGlzdAkg ICAqZXhjZXB0bGlzdCA9IE5JTDsKIAotCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFV RU5DRSAmJiBwdWJ2aWFyb290KSk7CisJQXNzZXJ0KCEocHVicmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFICYmIHB1YnZpYXJvb3QpKTsKIAogCS8qIEVYQ0VQVCBmaWx0ZXJpbmcgYXBwbGllcyB0 byB0YWJsZXMgYW5kIHNlcXVlbmNlcyAqLwogCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1Ymxp Y2F0aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCSBQVUJMSUNB VElPTl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJ CQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJCQkJCQkJIHB1YnJlbGtp bmQpOwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNz U2hhcmVMb2NrKTsKIAogCVNjYW5LZXlJbml0KCZrZXlbMF0sCiAJCQkJQW51bV9wZ19jbGFzc19y ZWxraW5kLAogCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9DSEFSRVEsCi0JCQkJQ2hhckdl dERhdHVtKHJlbGtpbmQpKTsKKwkJCQlDaGFyR2V0RGF0dW0ocHVicmVsa2luZCkpOwogCiAJc2Nh biA9IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBrZXkpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IGU5NzU3OGRkZDc1Li42ZTFkMTc3MmU2 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTY2LDcgKzY2LDcg QEAgc3RhdGljIHZvaWQgQ2xvc2VSZWxhdGlvbkxpc3QoTGlzdCAqcmVscyk7CiBzdGF0aWMgdm9p ZCBMb2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0 aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3Rz LAogCQkJCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNoYXIgcHVicmVsa2luZCk7 Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxz LCBib29sIG1pc3Npbmdfb2spOworc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wUmVsYXRpb25z KE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyB2b2lkIFB1 YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90 X2V4aXN0cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBzdGF0aWMg dm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9v bCBtaXNzaW5nX29rKTsKQEAgLTEyNTEsMjYgKzEyNTEsMTMxIEBAIEludmFsaWRhdGVQdWJsaWNh dGlvblJlbHMoTGlzdCAqcmVsaWRzKQogfQogCiAvKgotICogQWRkIG9yIHJlbW92ZSB0YWJsZSB0 by9mcm9tIHB1YmxpY2F0aW9uLgorICogUmVjcmVhdGUgbGlzdCBvZiB0YWJsZXMvc2VxdWVuY2Vz IHRvIGJlIGRyb3BwZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCisgKiBUbyByZWNyZWF0ZSB0aGUg cmVsYXRpb24gbGlzdCBmb3IgdGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvciBleGlzdGluZworICog cmVsYXRpb25zIHRoYXQgZG8gbm90IG5lZWQgdG8gYmUgZHJvcHBlZC4KKyAqCisgKiAncmVscycg Y29udGFpbnMgdGhlIGdpdmVuIGxpc3Qgb2YgcmVsYXRpb25zLCBhbmQgJ29sZHJlbGlkcycgY29u dGFpbnMKKyAqIHRoZSBPSURzIG9mIGV4aXN0aW5nIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRp b24gaWRlbnRpZmllZCBieSAncHViaWQnLgorICovCitzdGF0aWMgTGlzdCAqCitnZXRfZGVsZXRl X3JlbHMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBMaXN0ICpvbGRyZWxpZHMpCit7CisJTGlzdCAq ZGVscmVscyA9IE5JTDsKKworCWZvcmVhY2hfb2lkKG9sZHJlbGlkLCBvbGRyZWxpZHMpCisJewor CQlMaXN0Q2VsbCAgICpuZXdsYzsKKwkJUHVibGljYXRpb25SZWxJbmZvICpvbGRyZWw7CisJCWJv b2wJCWZvdW5kID0gZmFsc2U7CisJCUhlYXBUdXBsZQlyZnR1cGxlOworCQlOb2RlCSAgICpvbGRy ZWx3aGVyZWNsYXVzZSA9IE5VTEw7CisJCUJpdG1hcHNldCAgKm9sZGNvbHVtbnMgPSBOVUxMOwor CisJCS8qIGxvb2sgdXAgdGhlIGNhY2hlIGZvciB0aGUgb2xkIHJlbG1hcCAqLworCQlyZnR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkgIE9iamVjdElk R2V0RGF0dW0ob2xkcmVsaWQpLAorCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsK KworCQkvKgorCQkgKiBTZWUgaWYgdGhlIGV4aXN0aW5nIHJlbGF0aW9uIGN1cnJlbnRseSBoYXMg YSBXSEVSRSBjbGF1c2Ugb3IgYQorCQkgKiBjb2x1bW4gbGlzdC4gV2UgbmVlZCB0byBjb21wYXJl IHRob3NlIHRvby4KKwkJICovCisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHJmdHVwbGUpKQorCQl7 CisJCQlib29sCQlpc251bGwgPSB0cnVlOworCQkJRGF0dW0JCXdoZXJlQ2xhdXNlRGF0dW07CisJ CQlEYXR1bQkJY29sdW1uTGlzdERhdHVtOworCisJCQkvKiBMb2FkIHRoZSBXSEVSRSBjbGF1c2Ug Zm9yIHRoaXMgdGFibGUuICovCisJCQl3aGVyZUNsYXVzZURhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLAorCQkJCQkJCQkJCQkgICBBbnVtX3BnX3B1Ymxp Y2F0aW9uX3JlbF9wcnF1YWwsCisJCQkJCQkJCQkJCSAgICZpc251bGwpOworCQkJaWYgKCFpc251 bGwpCisJCQkJb2xkcmVsd2hlcmVjbGF1c2UgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0 cmluZyh3aGVyZUNsYXVzZURhdHVtKSk7CisKKwkJCS8qIFRyYW5zZm9ybSB0aGUgaW50MnZlY3Rv ciBjb2x1bW4gbGlzdCB0byBhIGJpdG1hcC4gKi8KKwkJCWNvbHVtbkxpc3REYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKKwkJCQkJCQkJCQkJICBBbnVt X3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLAorCQkJCQkJCQkJCQkgICZpc251bGwpOworCisJ CQlpZiAoIWlzbnVsbCkKKwkJCQlvbGRjb2x1bW5zID0gcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0 KE5VTEwsIGNvbHVtbkxpc3REYXR1bSwgTlVMTCk7CisKKwkJCVJlbGVhc2VTeXNDYWNoZShyZnR1 cGxlKTsKKwkJfQorCisJCS8qCisJCSAqIENoZWNrIGlmIGFueSBvZiB0aGUgbmV3IHNldCBvZiBy ZWxhdGlvbnMgbWF0Y2hlcyB3aXRoIHRoZSBleGlzdGluZworCQkgKiByZWxhdGlvbnMgaW4gdGhl IHB1YmxpY2F0aW9uLiBBZGRpdGlvbmFsbHksIGlmIHRoZSByZWxhdGlvbiBoYXMgYW4KKwkJICog YXNzb2NpYXRlZCBXSEVSRSBjbGF1c2UsIGNoZWNrIHRoZSBXSEVSRSBleHByZXNzaW9ucyBhbHNv IG1hdGNoLgorCQkgKiBTYW1lIGZvciB0aGUgY29sdW1uIGxpc3QuIERyb3AgdGhlIHJlc3QuCisJ CSAqLworCQlmb3JlYWNoKG5ld2xjLCByZWxzKQorCQl7CisJCQlQdWJsaWNhdGlvblJlbEluZm8g Km5ld3B1YnJlbDsKKwkJCU9pZAkJCW5ld3JlbGlkOworCQkJQml0bWFwc2V0ICAqbmV3Y29sdW1u cyA9IE5VTEw7CisKKwkJCW5ld3B1YnJlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0 KG5ld2xjKTsKKwkJCW5ld3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChuZXdwdWJyZWwtPnJlbGF0 aW9uKTsKKworCQkJLyoKKwkJCSAqIFZhbGlkYXRlIHRoZSBjb2x1bW4gbGlzdC4gIElmIHRoZSBj b2x1bW4gbGlzdCBvciBXSEVSRSBjbGF1c2UKKwkJCSAqIGNoYW5nZXMsIHRoZW4gdGhlIHZhbGlk YXRpb24gZG9uZSBoZXJlIHdpbGwgYmUgZHVwbGljYXRlZAorCQkJICogaW5zaWRlIFB1YmxpY2F0 aW9uQWRkUmVsYXRpb25zKCkuICBUaGUgdmFsaWRhdGlvbiBpcyBjaGVhcAorCQkJICogZW5vdWdo IHRoYXQgdGhhdCBzZWVtcyBoYXJtbGVzcy4KKwkJCSAqLworCQkJbmV3Y29sdW1ucyA9IHB1Yl9j b2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+cmVsYXRpb24sCisJCQkJCQkJCQkJCSAgbmV3cHVi cmVsLT5jb2x1bW5zKTsKKworCQkJZm91bmQgPSAobmV3cmVsaWQgPT0gb2xkcmVsaWQpICYmCisJ CQkJCWVxdWFsKG9sZHJlbHdoZXJlY2xhdXNlLCBuZXdwdWJyZWwtPndoZXJlQ2xhdXNlKSAmJgor CQkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3Y29sdW1ucyk7CisKKwkJCWlmKGZvdW5kKQor CQkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJICogQWRkIG5vbi1tYXRjaGluZyByZWxhdGlvbnMg dG8gdGhlIGRyb3AgbGlzdC4gVGhlIHJlbGF0aW9uIHdpbGwgYmUKKwkJICogZHJvcHBlZCBpcnJl c3BlY3RpdmUgb2YgdGhlIGNvbHVtbiBsaXN0IGFuZCBXSEVSRSBjbGF1c2UuCisJCSAqLworCQlp ZiAoIWZvdW5kKQorCQl7CisJCQlvbGRyZWwgPSBwYWxsb2MwX29iamVjdCAoUHVibGljYXRpb25S ZWxJbmZvKTsKKwkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlkLAorCQkJ CQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJCWRlbHJlbHMgPSBsYXBwZW5k KGRlbHJlbHMsIG9sZHJlbCk7CisJCX0KKwl9CisKKwlyZXR1cm4gZGVscmVsczsKK30KKworLyoK KyAqIEFkZCBvciByZW1vdmUgdGFibGUgb3Igc2VxdWVuY2UgdG8vZnJvbSBwdWJsaWNhdGlvbi4K ICAqLwogc3RhdGljIHZvaWQKLUFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJCSAgIExpc3QgKnRhYmxlcywgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCi0JCQkJCSAgIGJvb2wgcHVibGlzaF9zY2hlbWEpCitBbHRlclB1 YmxpY2F0aW9uUmVsYXRpb25zKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUg dHVwLAorCQkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnNlcXVlbmNlcywgY29uc3QgY2hhciAq cXVlcnlTdHJpbmcsCisJCQkJCQkgIGJvb2wgcHVibGlzaF9zY2hlbWEpCiB7CiAJTGlzdAkgICAq cmVscyA9IE5JTDsKKwlMaXN0CSAgICpzZXFzID0gTklMOwogCUZvcm1fcGdfcHVibGljYXRpb24g cHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAlPaWQJCQlw dWJpZCA9IHB1YmZvcm0tPm9pZDsKIAogCS8qCiAJICogTm90aGluZyB0byBkbyBpZiBubyBvYmpl Y3RzLCBleGNlcHQgaW4gU0VUOiBmb3IgdGhhdCBpdCBpcyBxdWl0ZQotCSAqIHBvc3NpYmxlIHRo YXQgdXNlciBoYXMgbm90IHNwZWNpZmllZCBhbnkgdGFibGVzIGluIHdoaWNoIGNhc2Ugd2UgbmVl ZAotCSAqIHRvIHJlbW92ZSBhbGwgdGhlIGV4aXN0aW5nIHRhYmxlcy4KKwkgKiBwb3NzaWJsZSB0 aGF0IHVzZXIgaGFzIG5vdCBzcGVjaWZpZWQgYW55IHRhYmxlcyBvciBzZXF1ZW5jZXMgaW4gd2hp Y2gKKwkgKiBjYXNlIHdlIG5lZWQgdG8gcmVtb3ZlIGFsbCB0aGUgZXhpc3RpbmcgdGFibGVzIGFu ZCBzZXF1ZW5jZXMuCiAJICovCi0JaWYgKCF0YWJsZXMgJiYgc3RtdC0+YWN0aW9uICE9IEFQX1Nl dE9iamVjdHMpCisJaWYgKCF0YWJsZXMgJiYgIXNlcXVlbmNlcyAmJiBzdG10LT5hY3Rpb24gIT0g QVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCiAJcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QodGFi bGVzKTsKKwlzZXFzID0gT3BlblJlbGF0aW9uTGlzdChzZXF1ZW5jZXMpOwogCiAJaWYgKHN0bXQt PmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKQEAgLTEyODQsMjkgKzEzODksMzMgQEAgQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxl IHR1cCwKIAkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10 LCBSRUxLSU5EX1JFTEFUSU9OKTsKIAl9CiAJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09IEFQX0Ry b3BPYmplY3RzKQotCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIHJlbHMsIGZhbHNlKTsK KwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1YmlkLCByZWxzLCBmYWxzZSk7CiAJZWxzZQkJ CQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7CiAJCUxpc3QJICAgKm9sZHJlbGlkcyA9IE5JTDsK KwkJTGlzdAkgICAqb2xkc2VxaWRzID0gTklMOwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwot CQlMaXN0Q2VsbCAgICpvbGRsYzsKIAogCQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMgfHwgc3Rt dC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJCXsKIAkJCS8qCi0JCQkgKiBJbiBGT1IgQUxMIFRBQkxF UyBtb2RlLCByZWxhdGlvbnMgYXJlIHRyYWNrZWQgYXMgZXhjbHVzaW9ucwotCQkJICogKEVYQ0VQ VCBjbGF1c2UpLiBGZXRjaCB0aGUgY3VycmVudCBleGNsdWRlZCByZWxhdGlvbnMgc28gdGhleQot CQkJICogY2FuIGJlIHJlY29uY2lsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIEVYQ0VQVCBsaXN0Lgor CQkJICogSW4gRk9SIEFMTCBUQUJMRVMvIFNFUVVFTkNFUyBtb2RlLCByZWxhdGlvbnMgYXJlIHRy YWNrZWQgYXMKKwkJCSAqIGV4Y2x1c2lvbnMgKEVYQ0VQVCBjbGF1c2UpLiBGZXRjaCB0aGUgY3Vy cmVudCBleGNsdWRlZAorCQkJICogcmVsYXRpb25zIHNvIHRoZXkgY2FuIGJlIHJlY29uY2lsZWQg d2l0aCB0aGUgc3BlY2lmaWVkIEVYQ0VQVAorCQkJICogbGlzdC4KIAkJCSAqCiAJCQkgKiBUaGlz IGFwcGxpZXMgb25seSBpZiB0aGUgZXhpc3RpbmcgcHVibGljYXRpb24gaXMgYWxyZWFkeQotCQkJ ICogZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUzsgb3RoZXJ3aXNlLCB0aGVyZSBhcmUgbm8gZXhj bHVzaW9uCi0JCQkgKiBlbnRyaWVzIHRvIHByb2Nlc3MuCisJCQkgKiBkZWZpbmVkIGFzIEZPUiBB TEwgVEFCTEVTLyBGT1IgQUxMIFNFUVVFTkNFUzsgb3RoZXJ3aXNlLCB0aGVyZQorCQkJICogYXJl IG5vIGV4Y2x1c2lvbiBlbnRyaWVzIHRvIHByb2Nlc3MuCiAJCQkgKi8KIAkJCWlmIChwdWJmb3Jt LT5wdWJhbGx0YWJsZXMpCi0JCQl7CiAJCQkJb2xkcmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9P VCk7Ci0JCQl9CisJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QsCisJCQkJCQkJ CQkJCQkJCQlSRUxLSU5EX1JFTEFUSU9OKTsKKwkJCWlmIChwdWJmb3JtLT5wdWJhbGxzZXF1ZW5j ZXMpCisJCQkJb2xkc2VxaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJp ZCwKKwkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwKKwkJCQkJCQkJCQkJCQkJ CVJFTEtJTkRfU0VRVUVOQ0UpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTMxOSwxMTggKzE0Mjgs MjUgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwg SGVhcFR1cGxlIHR1cCwKIAkJCQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZpYXJvb3QpOwogCQl9CiAK LQkJLyoKLQkJICogVG8gcmVjcmVhdGUgdGhlIHJlbGF0aW9uIGxpc3QgZm9yIHRoZSBwdWJsaWNh dGlvbiwgbG9vayBmb3IKLQkJICogZXhpc3RpbmcgcmVsYXRpb25zIHRoYXQgZG8gbm90IG5lZWQg dG8gYmUgZHJvcHBlZC4KLQkJICovCi0JCWZvcmVhY2gob2xkbGMsIG9sZHJlbGlkcykKLQkJewot CQkJT2lkCQkJb2xkcmVsaWQgPSBsZmlyc3Rfb2lkKG9sZGxjKTsKLQkJCUxpc3RDZWxsICAgKm5l d2xjOwotCQkJUHVibGljYXRpb25SZWxJbmZvICpvbGRyZWw7Ci0JCQlib29sCQlmb3VuZCA9IGZh bHNlOwotCQkJSGVhcFR1cGxlCXJmdHVwbGU7Ci0JCQlOb2RlCSAgICpvbGRyZWx3aGVyZWNsYXVz ZSA9IE5VTEw7Ci0JCQlCaXRtYXBzZXQgICpvbGRjb2x1bW5zID0gTlVMTDsKLQotCQkJLyogbG9v ayB1cCB0aGUgY2FjaGUgZm9yIHRoZSBvbGQgcmVsbWFwICovCi0JCQlyZnR1cGxlID0gU2VhcmNo U3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAotCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVt KG9sZHJlbGlkKSwKLQkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOwotCi0JCQkv KgotCQkJICogU2VlIGlmIHRoZSBleGlzdGluZyByZWxhdGlvbiBjdXJyZW50bHkgaGFzIGEgV0hF UkUgY2xhdXNlIG9yIGEKLQkJCSAqIGNvbHVtbiBsaXN0LiBXZSBuZWVkIHRvIGNvbXBhcmUgdGhv c2UgdG9vLgotCQkJICovCi0JCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChyZnR1cGxlKSkKLQkJCXsK LQkJCQlib29sCQlpc251bGwgPSB0cnVlOwotCQkJCURhdHVtCQl3aGVyZUNsYXVzZURhdHVtOwot CQkJCURhdHVtCQljb2x1bW5MaXN0RGF0dW07Ci0KLQkJCQkvKiBMb2FkIHRoZSBXSEVSRSBjbGF1 c2UgZm9yIHRoaXMgdGFibGUuICovCi0JCQkJd2hlcmVDbGF1c2VEYXR1bSA9IFN5c0NhY2hlR2V0 QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKLQkJCQkJCQkJCQkJCSAgIEFudW1fcGdf cHVibGljYXRpb25fcmVsX3BycXVhbCwKLQkJCQkJCQkJCQkJCSAgICZpc251bGwpOwotCQkJCWlm ICghaXNudWxsKQotCQkJCQlvbGRyZWx3aGVyZWNsYXVzZSA9IHN0cmluZ1RvTm9kZShUZXh0RGF0 dW1HZXRDU3RyaW5nKHdoZXJlQ2xhdXNlRGF0dW0pKTsKLQotCQkJCS8qIFRyYW5zZm9ybSB0aGUg aW50MnZlY3RvciBjb2x1bW4gbGlzdCB0byBhIGJpdG1hcC4gKi8KLQkJCQljb2x1bW5MaXN0RGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJmdHVwbGUsCi0JCQkJCQkJ CQkJCQkgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMsCi0JCQkJCQkJCQkJCQkgICZp c251bGwpOwotCi0JCQkJaWYgKCFpc251bGwpCi0JCQkJCW9sZGNvbHVtbnMgPSBwdWJfY29sbGlz dF90b19iaXRtYXBzZXQoTlVMTCwgY29sdW1uTGlzdERhdHVtLCBOVUxMKTsKLQotCQkJCVJlbGVh c2VTeXNDYWNoZShyZnR1cGxlKTsKLQkJCX0KLQotCQkJZm9yZWFjaChuZXdsYywgcmVscykKLQkJ CXsKLQkJCQlQdWJsaWNhdGlvblJlbEluZm8gKm5ld3B1YnJlbDsKLQkJCQlPaWQJCQluZXdyZWxp ZDsKLQkJCQlCaXRtYXBzZXQgICpuZXdjb2x1bW5zID0gTlVMTDsKLQotCQkJCW5ld3B1YnJlbCA9 IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0KG5ld2xjKTsKLQkJCQluZXdyZWxpZCA9IFJl bGF0aW9uR2V0UmVsaWQobmV3cHVicmVsLT5yZWxhdGlvbik7Ci0KLQkJCQkvKgotCQkJCSAqIFZh bGlkYXRlIHRoZSBjb2x1bW4gbGlzdC4gIElmIHRoZSBjb2x1bW4gbGlzdCBvciBXSEVSRQotCQkJ CSAqIGNsYXVzZSBjaGFuZ2VzLCB0aGVuIHRoZSB2YWxpZGF0aW9uIGRvbmUgaGVyZSB3aWxsIGJl Ci0JCQkJICogZHVwbGljYXRlZCBpbnNpZGUgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoKS4gIFRo ZQotCQkJCSAqIHZhbGlkYXRpb24gaXMgY2hlYXAgZW5vdWdoIHRoYXQgdGhhdCBzZWVtcyBoYXJt bGVzcy4KLQkJCQkgKi8KLQkJCQluZXdjb2x1bW5zID0gcHViX2NvbGxpc3RfdmFsaWRhdGUobmV3 cHVicmVsLT5yZWxhdGlvbiwKLQkJCQkJCQkJCQkJCSAgbmV3cHVicmVsLT5jb2x1bW5zKTsKLQot CQkJCS8qCi0JCQkJICogQ2hlY2sgaWYgYW55IG9mIHRoZSBuZXcgc2V0IG9mIHJlbGF0aW9ucyBt YXRjaGVzIHdpdGggdGhlCi0JCQkJICogZXhpc3RpbmcgcmVsYXRpb25zIGluIHRoZSBwdWJsaWNh dGlvbi4gQWRkaXRpb25hbGx5LCBpZiB0aGUKLQkJCQkgKiByZWxhdGlvbiBoYXMgYW4gYXNzb2Np YXRlZCBXSEVSRSBjbGF1c2UsIGNoZWNrIHRoZSBXSEVSRQotCQkJCSAqIGV4cHJlc3Npb25zIGFs c28gbWF0Y2guIFNhbWUgZm9yIHRoZSBjb2x1bW4gbGlzdC4gRHJvcCB0aGUKLQkJCQkgKiByZXN0 LgotCQkJCSAqLwotCQkJCWlmIChuZXdyZWxpZCA9PSBvbGRyZWxpZCkKLQkJCQl7Ci0JCQkJCWlm IChlcXVhbChvbGRyZWx3aGVyZWNsYXVzZSwgbmV3cHVicmVsLT53aGVyZUNsYXVzZSkgJiYKLQkJ CQkJCWJtc19lcXVhbChvbGRjb2x1bW5zLCBuZXdjb2x1bW5zKSkKLQkJCQkJewotCQkJCQkJZm91 bmQgPSB0cnVlOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0KLQkJCS8qCi0J CQkgKiBBZGQgdGhlIG5vbi1tYXRjaGVkIHJlbGF0aW9ucyB0byBhIGxpc3Qgc28gdGhhdCB0aGV5 IGNhbiBiZQotCQkJICogZHJvcHBlZC4KLQkJCSAqLwotCQkJaWYgKCFmb3VuZCkKLQkJCXsKLQkJ CQlvbGRyZWwgPSBwYWxsb2Nfb2JqZWN0KFB1YmxpY2F0aW9uUmVsSW5mbyk7Ci0JCQkJb2xkcmVs LT53aGVyZUNsYXVzZSA9IE5VTEw7Ci0JCQkJb2xkcmVsLT5jb2x1bW5zID0gTklMOwotCQkJCW9s ZHJlbC0+ZXhjZXB0ID0gZmFsc2U7Ci0JCQkJb2xkcmVsLT5yZWxhdGlvbiA9IHRhYmxlX29wZW4o b2xkcmVsaWQsCi0JCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKLQkJCQlk ZWxyZWxzID0gbGFwcGVuZChkZWxyZWxzLCBvbGRyZWwpOwotCQkJfQotCQl9CisJCS8qIEdldCB0 YWJsZXMgYW5kIHNlcXVlbmNlcyB0byBiZSBkcm9wcGVkICovCisJCWRlbHJlbHMgPSBnZXRfZGVs ZXRlX3JlbHMocHViaWQsIHJlbHMsIG9sZHJlbGlkcyk7CisJCWRlbHJlbHMgPSBsaXN0X2NvbmNh dChkZWxyZWxzLCBnZXRfZGVsZXRlX3JlbHMocHViaWQsIHNlcXMsIG9sZHNlcWlkcykpOwogCiAJ CS8qIEFuZCBkcm9wIHRoZW0uICovCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgZGVs cmVscywgdHJ1ZSk7CisJCVB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhwdWJpZCwgZGVscmVscywg dHJ1ZSk7CiAKIAkJLyoKIAkJICogRG9uJ3QgYm90aGVyIGNhbGN1bGF0aW5nIHRoZSBkaWZmZXJl bmNlIGZvciBhZGRpbmcsIHdlJ2xsIGNhdGNoIGFuZAogCQkgKiBza2lwIGV4aXN0aW5nIG9uZXMg d2hlbiBkb2luZyBjYXRhbG9nIHVwZGF0ZS4KIAkJICovCiAJCVB1YmxpY2F0aW9uQWRkUmVsYXRp b25zKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10LCBSRUxLSU5EX1JFTEFUSU9OKTsKKwkJUHVibGlj YXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHNlcXMsIHRydWUsIHN0bXQsIFJFTEtJTkRfU0VRVUVO Q0UpOwogCiAJCUNsb3NlUmVsYXRpb25MaXN0KGRlbHJlbHMpOwogCX0KIAogCUNsb3NlUmVsYXRp b25MaXN0KHJlbHMpOworCUNsb3NlUmVsYXRpb25MaXN0KHNlcXMpOwogfQogCiAvKgpAQCAtMTcw Niw5ICsxNzIyLDYgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10KQogCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10 LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCiAJCQkJCQkJCSAgICZleGNlcHR0Ymxz LCAmZXhjZXB0c2VxcywgJnNjaGVtYWlkbGlzdCk7CiAKLQkJLyogRVhDRVBUIGNsYXVzZSBpcyBu b3Qgc3VwcG9ydGVkIHdpdGggQUxURVIgUFVCTElDQVRJT04gKi8KLQkJQXNzZXJ0KGV4Y2VwdHNl cXMgPT0gTklMKTsKLQogCQlDaGVja0FsdGVyUHVibGljYXRpb24oc3RtdCwgdHVwLCByZWxhdGlv bnMsIHNjaGVtYWlkbGlzdCk7CiAKIAkJaGVhcF9mcmVldHVwbGUodHVwKTsKQEAgLTE3MzEsOCAr MTc0NCw4IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAogCQlyZWxhdGlv bnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdHRibHMpOwotCQlBbHRlclB1YmxpY2F0 aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKLQkJ CQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKKwkJQWx0ZXJQdWJsaWNhdGlvblJlbGF0aW9u cyhzdG10LCB0dXAsIHJlbGF0aW9ucywgZXhjZXB0c2VxcywKKwkJCQkJCQkJICBwc3RhdGUtPnBf c291cmNldGV4dCwgc2NoZW1haWRsaXN0ICE9IE5JTCk7CiAJCUFsdGVyUHVibGljYXRpb25TY2hl bWFzKHN0bXQsIHR1cCwgc2NoZW1haWRsaXN0KTsKIAkJQWx0ZXJQdWJsaWNhdGlvbkFsbEZsYWdz KHN0bXQsIHJlbCwgdHVwKTsKIAl9CkBAIC0yMDg3LDEwICsyMTAwLDEwIEBAIFB1YmxpY2F0aW9u QWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAog fQogCiAvKgotICogUmVtb3ZlIGxpc3RlZCB0YWJsZXMgZnJvbSB0aGUgcHVibGljYXRpb24uCisg KiBSZW1vdmUgbGlzdGVkIHJlbGF0aW9ucyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3Rh dGljIHZvaWQKLVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJv b2wgbWlzc2luZ19vaykKK1B1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3Qg KnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIHsKIAlPYmplY3RBZGRyZXNzIG9iajsKIAlMaXN0Q2Vs bCAgICpsYzsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAxMmQyNzZjYmI2NS4uYWFmMDNlM2E5 NGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIzNTEsNiArMjM1MSwyMCBAQCBtYXRjaF9w cmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVF UlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBU IiwgIigiLCAiVEFCTEUiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkK IAkJQ09NUExFVEVfV0lUSCgiKSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAi KCIpKQorCQlDT01QTEVURV9XSVRIKCJTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIp KQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVF TkNFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCBTRVFVRU5DRSIpOworCWVsc2Ug aWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxM IiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKCJTRVFVRU5D RSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIpKQor CQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMp OworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJT RVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNo QW55TikgJiYgZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1B X1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygi QUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VT IiwgIkVYQ0VQVCIsICIoIiwgIlNFUVVFTkNFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHBy ZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIlRBQkxFUyIs ICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9s aXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxf JSUnIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA0OWMyOWE4NzYzMC4u MjFhMTUyN2JjYzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE3OCw5 ICsxNzgsMTEgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAogZXh0ZXJuIExpc3Qg KkdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLAogCQkJCQkJCQkJCQkg UHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0ICpHZXRFeGNsdWRl ZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwKLQkJCQkJCQkJCQkJIFB1YmxpY2F0aW9u UGFydE9wdCBwdWJfcGFydG9wdCk7CisJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHVi X3BhcnRvcHQsCisJCQkJCQkJCQkJCSBjaGFyIHB1YnJlbGtpbmQpOwogZXh0ZXJuIExpc3QgKkdl dEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNh dGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsK K2V4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIg cHVicmVsa2luZCwKKwkJCQkJCQkJCQlib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdl dFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1 YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJs aWNhdGlvbi5vdXQKaW5kZXggMTVjMzBmZmVlZmMuLjI2YjJmNTdmZDRmIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtNTYyLDE2ICs1NjIsMzIgQEAgSW5j bHVkZWQgaW4gcHVibGljYXRpb25zOgogRXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbnM6CiAgICAg InJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMiCiAKKy0tIE1vZGlmeSB0aGUgc2VxdWVuY2Ug bGlzdCBpbiB0aGUgRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gcmVncmVzc19wdWJf Zm9yYWxsc2VxdWVuY2VzMyBTRVQgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jl c3NfcHViX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g cmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMworICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9u IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorRXhjZXB0 IHNlcXVlbmNlczoKKyAgICAicHVibGljLnJlZ3Jlc3NfcHViX3NlcTAiCisKIFJFU0VUIGNsaWVu dF9taW5fbWVzc2FnZXM7CiAtLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlzIHNwZWNpZmllZCBp biBFWENFUFQgdGFibGUgbGlzdAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFs bHNlcXVlbmNlczQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3B1Yl9zZXEw KTsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEwIiBpbiB0 aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJMRSkgY2xhdXNlCiBERVRBSUw6ICBUaGlzIG9wZXJh dGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBzZXF1ZW5jZXMuCitBTFRFUiBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUg cmVncmVzc19wdWJfc2VxMCk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwdWJsaWMucmVncmVz c19wdWJfc2VxMCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoVEFCTEUpIGNsYXVzZQorREVU QUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igc2VxdWVuY2VzLgogLS0g ZmFpbCAtIHRhYmxlIG9iamVjdCBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHNlcXVlbmNlIGxpc3QK IENSRUFURSBUQUJMRSB0YWJfc2VxKGEgaW50KTsKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNz X3B1Yl9mb3JhbGxzZXF1ZW5jZXM0IEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ug dGFiX3NlcSk7CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwdWJsaWMudGFiX3NlcSIgaW4gdGhl IHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZQogREVUQUlMOiAgVGhpcyBvcGVy YXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorQUxURVIgUFVCTElDQVRJT04gcmVn cmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyBTRVQgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVF TkNFIHRhYl9zZXEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnRhYl9zZXEiIGlu IHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKK0RFVEFJTDogIFRoaXMg b3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KIC0tIFRlc3QgY29tYmluYXRp b24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1c2UKIFNF VCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiByZWdy ZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczEgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IChUQUJMRSB0ZXN0cHViX3RibDEpLCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVn cmVzc19wdWJfc2VxMCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNh dGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggZDQ3 MjU1M2M3Y2QuLjk5OGFlM2U0ZTRmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3Fs CkBAIC0yNjEsMTQgKzI2MSwxOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9y YWxsc2VxdWVuY2VzMyBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTgogLS0gQ2hlY2sg dGhhdCB0aGUgc2VxdWVuY2UgZGVzY3JpcHRpb24gc2hvd3MgdGhlIHB1YmxpY2F0aW9ucyB3aGVy ZSBpdCBpcyBsaXN0ZWQKIC0tIGluIHRoZSBFWENFUFQgY2xhdXNlCiBcZCsgcmVncmVzc19wdWJf c2VxMAorLS0gTW9kaWZ5IHRoZSBzZXF1ZW5jZSBsaXN0IGluIHRoZSBFWENFUFQgY2xhdXNlCitB TFRFUiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIFNFVCBBTEwgU0VR VUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMCk7CitcZFJwKyByZWdyZXNz X3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogCiAtLSBm YWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgdGFibGUgbGlzdAog Q1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3B1Yl9zZXEwKTsKK0FMVEVSIFBVQkxJQ0FUSU9O IHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJM RSByZWdyZXNzX3B1Yl9zZXEwKTsKIAogLS0gZmFpbCAtIHRhYmxlIG9iamVjdCBpcyBzcGVjaWZp ZWQgaW4gRVhDRVBUIHNlcXVlbmNlIGxpc3QKIENSRUFURSBUQUJMRSB0YWJfc2VxKGEgaW50KTsK IENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXM0IEZPUiBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgdGFiX3NlcSk7CitBTFRFUiBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VR VUVOQ0UgdGFiX3NlcSk7CiAKIC0tIFRlc3QgY29tYmluYXRpb24gb2YgQUxMIFNFUVVFTkNFUyBh bmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1c2UKIFNFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKLS0gCjIuMzQuMQoK --00000000000045aeb80652cc3cba--