Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1npruZ-0008M5-Gk for pgsql-hackers@arkaria.postgresql.org; Sat, 14 May 2022 13:34:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nprtY-0000Sr-Ad for pgsql-hackers@arkaria.postgresql.org; Sat, 14 May 2022 13:33:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nprtX-0000Qh-DT for pgsql-hackers@lists.postgresql.org; Sat, 14 May 2022 13:33:20 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nprtN-0002ll-Fk for pgsql-hackers@lists.postgresql.org; Sat, 14 May 2022 13:33:18 +0000 Received: by mail-ed1-x52e.google.com with SMTP id c12so12985233edv.10 for ; Sat, 14 May 2022 06:33:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=OQxWaM6VAkjQtM6yf09v9t755m/QlGG8uzZc7X5qoxg=; b=ncc1BJOTJCiCrJeYVQOVPf4IckaOOWQp7aXP4U1yrTS7rOyfPRGpBuVcKE5ODpanT3 4Q9gDW+FfHbz9SNprCDUyoyZ19xy92w7r7p5CKOCMEtHC5oQRCbs0JO5qG5PBhLHJBm6 IkEhd7e2wHpqIeVG9qPyf/NFPrlGd+GdavYcDCzxJN0i6xuC/4DPXpXRWdEH6pjN876X NhE23HJT4nH7qstsv4ISGOXSiSgwsfVInuiN1Bl/FehOYGBvg9u8W23wD9pqsa3kgRDb //bXVtaWkado4Uejd2yRM1hzYUtYk1HyWVTusz/SiFRQ5adsim4JiqKn7kld1uW38lHt uaBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=OQxWaM6VAkjQtM6yf09v9t755m/QlGG8uzZc7X5qoxg=; b=C3X/Yy5oh5VKJ5Y+/Qe+pvKYxI+N7Cu8g7QET8ULz1ebaFTOYAkqrmP4mJWjS2TDG7 4q+kcxCU93vwy8f7W1L91aNysFyxrSSb7FmIMzYXLiXuDdIAPD6Q8pLmH1gQK0qtgeLd PlW+L7WWtHtpvYTv8YtTNNYa8GHxMgVwj5taqfOtokq2GvsfsQ09Ecy32o2mdchJC7KY P5riL9e3lZ78N00iX/e6dRYgSi7nhYaP/yeknUbd3N3PIZdioJT4mGzeXxst2k/WoxZh izV+1GbLqkeVWHH0eULstfAVU6dETvzKZenGJtFZh0M8iQj5tt+eX+zjvKT/v9hrNi6w hnpw== X-Gm-Message-State: AOAM531hqBVc6qcGASF0/8PEHITDMUmS5+GwgBkIdQdb/HyKfPJn2YQn FvH/M7mLP52kc3i/H8Vvm8MEdcaPXLGfJiGP4eI= X-Google-Smtp-Source: ABdhPJw4tvt0d8MGTitV5xqaBAXb90647Lg+W0s7aeHYK1l0GhaqeBoFXyjVYpQd/BuiA1SsQZ/6MNkv/3xJmTKqoKk= X-Received: by 2002:aa7:d8d2:0:b0:425:e22b:35c0 with SMTP id k18-20020aa7d8d2000000b00425e22b35c0mr3761337eds.181.1652535187731; Sat, 14 May 2022 06:33:07 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Sat, 14 May 2022 19:02:54 +0530 Message-ID: Subject: Re: Skipping schema changes in publication To: Peter Smith Cc: Amit Kapila , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000d80c1705def8d4e6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d80c1705def8d4e6 Content-Type: text/plain; charset="UTF-8" On Fri, May 13, 2022 at 9:37 AM Peter Smith wrote: > > On Thu, May 12, 2022 at 2:24 PM vignesh C wrote: > > > ... > > The attached patch has the implementation for "ALTER PUBLICATION > > pubname RESET". This command will reset the publication to default > > state which includes resetting the publication options, setting ALL > > TABLES option to false and dropping the relations and schemas that are > > associated with the publication. > > > > Please see below my review comments for the v1-0001 (RESET) patch > > ====== > > 1. Commit message > > This patch adds a new RESET option to ALTER PUBLICATION which > > Wording: "RESET option" -> "RESET clause" Modified > ~~~ > > 2. doc/src/sgml/ref/alter_publication.sgml > > + > + The RESET clause will reset the publication to default > + state which includes resetting the publication options, setting > + ALL TABLES option to false > and drop the > + relations and schemas that are associated with the publication. > > > 2a. Wording: "to default state" -> "to the default state" Modified > 2b. Wording: "and drop the relations..." -> "and dropping all relations..." Modified > ~~~ > > 3. doc/src/sgml/ref/alter_publication.sgml > > + invoking user to be a superuser. RESET of publication > + requires invoking user to be a superuser. To alter the owner, you must also > > Wording: "requires invoking user" -> "requires the invoking user" Modified > ~~~ > > 4. doc/src/sgml/ref/alter_publication.sgml - Example > > @@ -207,6 +220,12 @@ ALTER PUBLICATION sales_publication ADD ALL > TABLES IN SCHEMA marketing, sales; > production_publication: > > ALTER PUBLICATION production_publication ADD TABLE users, > departments, ALL TABLES IN SCHEMA production; > + > + > + > + Resetting the publication production_publication: > + > +ALTER PUBLICATION production_publication RESET; > > Wording: "Resetting the publication" -> "Reset the publication" Modified > ~~~ > > 5. src/backend/commands/publicationcmds.c > > + /* Check and reset the options */ > > IMO the code can just reset all these options unconditionally. I did > not see the point to check for existing option values first. I feel > the simpler code outweighs any negligible performance difference in > this case. Modified > ~~~ > > 6. src/backend/commands/publicationcmds.c > > + /* Check and reset the options */ > > Somehow it seemed a pity having to hardcode all these default values > true/false in multiple places; e.g. the same is already hardcoded in > the parse_publication_options function. > > To avoid multiple hard coded bools you could just call the > parse_publication_options with an empty options list. That would set > the defaults which you can then use: > values[Anum_pg_publication_pubinsert - 1] = BoolGetDatum(pubactiondefs->insert); > > Alternatively, maybe there should be #defines to use instead of having > the scattered hardcoded bool defaults: > #define PUBACTION_DEFAULT_INSERT true > #define PUBACTION_DEFAULT_UPDATE true > etc I have used #define for default value and used it in both the functions. > ~~~ > > 7. src/include/nodes/parsenodes.h > > @@ -4033,7 +4033,8 @@ typedef enum AlterPublicationAction > { > AP_AddObjects, /* add objects to publication */ > AP_DropObjects, /* remove objects from publication */ > - AP_SetObjects /* set list of objects */ > + AP_SetObjects, /* set list of objects */ > + AP_ReSetPublication /* reset the publication */ > } AlterPublicationAction; > > Unusual case: "AP_ReSetPublication" -> "AP_ResetPublication" Modified > ~~~ > > 8. src/test/regress/sql/publication.sql > > 8a. > +-- Test for RESET PUBLICATION > SUGGESTED > +-- Tests for ALTER PUBLICATION ... RESET Modified > 8b. > +-- Verify that 'ALL TABLES' option is reset > SUGGESTED: > +-- Verify that 'ALL TABLES' flag is reset Modified > 8c. > +-- Verify that publish option and publish via root option is reset > SUGGESTED: > +-- Verify that publish options and publish_via_partition_root option are reset Modified > 8d. > +-- Verify that only superuser can execute RESET publication > SUGGESTED > +-- Verify that only superuser can reset a publication Modified Thanks for the comments, the attached v5 patch has the changes for the same. Also I have made the changes for SKIP Table based on the new syntax, the changes for the same are available in v5-0002-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch. Regards, Vignesh --000000000000d80c1705def8d4e6 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0001-Add-RESET-clause-to-Alter-Publication-which-will-.patch" Content-Disposition: attachment; filename="v5-0001-Add-RESET-clause-to-Alter-Publication-which-will-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l35wcin80 RnJvbSBiMzhiNWZhNzZjODhjMmQyZGY2YWJmNDZhNzYwYTk0MjIwNzJjOTg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogU2F0LCAxNCBNYXkgMjAyMiAxMzoxMzo0NiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjUg MS8yXSBBZGQgUkVTRVQgY2xhdXNlIHRvIEFsdGVyIFB1YmxpY2F0aW9uIHdoaWNoIHdpbGwgcmVz ZXQKICB0aGUgcHVibGljYXRpb24gd2l0aCBkZWZhdWx0IHZhbHVlcy4KClRoaXMgcGF0Y2ggYWRk cyBhIG5ldyBSRVNFVCBjbGF1c2UgdG8gQUxURVIgUFVCTElDQVRJT04gd2hpY2ggd2lsbCByZXNl dAp0aGUgcHVibGljYXRpb24gdG8gZGVmYXVsdCBzdGF0ZSB3aGljaCBpbmNsdWRlcyByZXNldHRp bmcgdGhlIHB1YmxpY2F0aW9uCm9wdGlvbnMsIHNldHRpbmcgQUxMIFRBQkxFUyBvcHRpb24gdG8g ZmFsc2UgYW5kIGRyb3BwaW5nIHRoZSByZWxhdGlvbnMgYW5kCnNjaGVtYXMgdGhhdCBhcmUgYXNz b2NpYXRlZCB3aXRoIHRoZSBwdWJsaWNhdGlvbi4KVXNhZ2U6CkFMVEVSIFBVQkxJQ0FUSU9OIHB1 YjEgUkVTRVQ7Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAg fCAzMyArKysrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAg fCA5OCArKysrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAg ICAgICAgICAgICAgICAgfCAgOSArKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyAgICAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAg ICAgIHwgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwg NjkgKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3Fs ICAgICAgfCAzNyArKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMjM3IGluc2VydGlvbnMoKyks IDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVi bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApp bmRleCBlMmNjZTQ5NDcxLi4xODk3MjdhZjYyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJs aWNhdGlvbi5zZ21sCkBAIC0yNyw2ICsyNyw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gRFJPUCA8cmVwbGFjCiBB TFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+IFNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlv bl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKQogQUxURVIgUFVCTElDQVRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBPV05FUiBUTyB7 IDxyZXBsYWNlYWJsZT5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfUk9MRSB8IENV UlJFTlRfVVNFUiB8IFNFU1NJT05fVVNFUiB9CiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cmVwbGFj ZWFibGU+bmV3X25hbWU8L3JlcGxhY2VhYmxlPgorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRVNFVAogCiA8cGhyYXNl PndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8 L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTY1LDcgKzY2LDE4IEBAIEFM VEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRoZSByZW1h aW5pbmcgdmFyaWFudHMgY2hhbmdlIHRoZSBvd25lciBhbmQgdGhlIG5hbWUgb2YgdGhlIHB1Ymxp Y2F0aW9uLgorICAgVGhlIDxsaXRlcmFsPk9XTkVSPC9saXRlcmFsPiBjbGF1c2Ugd2lsbCBjaGFu Z2UgdGhlIG93bmVyIG9mIHRoZSBwdWJsaWNhdGlvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgVGhlIDxsaXRlcmFsPlJFTkFNRTwvbGl0ZXJhbD4gY2xhdXNlIHdpbGwgY2hhbmdlIHRoZSBu YW1lIG9mIHRoZSBwdWJsaWNhdGlvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlIDxs aXRlcmFsPlJFU0VUPC9saXRlcmFsPiBjbGF1c2Ugd2lsbCByZXNldCB0aGUgcHVibGljYXRpb24g dG8gdGhlCisgICBkZWZhdWx0IHN0YXRlIHdoaWNoIGluY2x1ZGVzIHJlc2V0dGluZyB0aGUgcHVi bGljYXRpb24gb3B0aW9ucywgc2V0dGluZworICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJh bD4gb3B0aW9uIHRvIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiBhbmQKKyAgIGRyb3BwaW5nIGFs bCByZWxhdGlvbnMgYW5kIHNjaGVtYXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJs aWNhdGlvbi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtNzMsMTIgKzg1LDEzIEBAIEFMVEVS IFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gUkVOQU1FIFRPIDxyCiAgICBBZGRpbmcgYSB0YWJsZSB0byBhIHB1YmxpY2F0aW9uIGFk ZGl0aW9uYWxseSByZXF1aXJlcyBvd25pbmcgdGhhdCB0YWJsZS4KICAgIFRoZSA8bGl0ZXJhbD5B REQgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGFuZAogICAgPGxpdGVyYWw+U0VUIEFM TCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiB0byBhIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHRo ZQotICAgaW52b2tpbmcgdXNlciB0byBiZSBhIHN1cGVydXNlci4gIFRvIGFsdGVyIHRoZSBvd25l ciwgeW91IG11c3QgYWxzbyBiZSBhCi0gICBkaXJlY3Qgb3IgaW5kaXJlY3QgbWVtYmVyIG9mIHRo ZSBuZXcgb3duaW5nIHJvbGUuIFRoZSBuZXcgb3duZXIgbXVzdCBoYXZlCi0gICA8bGl0ZXJhbD5D UkVBVEU8L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgZGF0YWJhc2UuICBBbHNvLCB0aGUgbmV3 IG93bmVyCi0gICBvZiBhIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5GT1IgQUxMIFRBQkxFUyBJTgotICAgU0NIRU1BPC9saXRlcmFsPiBwdWJsaWNhdGlvbiBt dXN0IGJlIGEgc3VwZXJ1c2VyLiBIb3dldmVyLCBhIHN1cGVydXNlciBjYW4KLSAgIGNoYW5nZSB0 aGUgb3duZXJzaGlwIG9mIGEgcHVibGljYXRpb24gcmVnYXJkbGVzcyBvZiB0aGVzZSByZXN0cmlj dGlvbnMuCisgICBpbnZva2luZyB1c2VyIHRvIGJlIGEgc3VwZXJ1c2VyLiAgPGxpdGVyYWw+UkVT RVQ8L2xpdGVyYWw+IG9mIHB1YmxpY2F0aW9uCisgICByZXF1aXJlcyB0aGUgaW52b2tpbmcgdXNl ciB0byBiZSBhIHN1cGVydXNlci4gVG8gYWx0ZXIgdGhlIG93bmVyLCB5b3UgbXVzdAorICAgYWxz byBiZSBhIGRpcmVjdCBvciBpbmRpcmVjdCBtZW1iZXIgb2YgdGhlIG5ldyBvd25pbmcgcm9sZS4g VGhlIG5ldyBvd25lcgorICAgbXVzdCBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJp dmlsZWdlIG9uIHRoZSBkYXRhYmFzZS4gIEFsc28sIHRoZQorICAgbmV3IG93bmVyIG9mIGEgPGxp dGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVT CisgICBJTiBTQ0hFTUE8L2xpdGVyYWw+IHB1YmxpY2F0aW9uIG11c3QgYmUgYSBzdXBlcnVzZXIu IEhvd2V2ZXIsIGEgc3VwZXJ1c2VyCisgICBjYW4gY2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgYSBw dWJsaWNhdGlvbiByZWdhcmRsZXNzIG9mIHRoZXNlIHJlc3RyaWN0aW9ucy4KICAgPC9wYXJhPgog CiAgIDxwYXJhPgpAQCAtMjA3LDYgKzIyMCwxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBzYWxlc19w dWJsaWNhdGlvbiBBREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKICAg IDxzdHJ1Y3RuYW1lPnByb2R1Y3Rpb25fcHVibGljYXRpb248L3N0cnVjdG5hbWU+OgogPHByb2dy YW1saXN0aW5nPgogQUxURVIgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlvbiBBREQg VEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzLCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwcm9kdWN0aW9u OworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBSZXNldCB0aGUgcHVi bGljYXRpb24gPHN0cnVjdG5hbWU+cHJvZHVjdGlvbl9wdWJsaWNhdGlvbjwvc3RydWN0bmFtZT46 Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0 aW9uIFJFU0VUOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA4ZTY0NTc0MWU0Li45NTZiMDJk NTAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNTMsNiArNTMs MTMgQEAKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Zhcmxl bmEuaCIKIAorI2RlZmluZSBQVUJfQVRJT05fSU5TRVJUX0RFRkFVTFQgdHJ1ZQorI2RlZmluZSBQ VUJfQUNUSU9OX1VQREFURV9ERUZBVUxUIHRydWUKKyNkZWZpbmUgUFVCX0FDVElPTl9ERUxFVEVf REVGQVVMVCB0cnVlCisjZGVmaW5lIFBVQl9BQ1RJT05fVFJVTkNBVEVfREVGQVVMVCB0cnVlCisj ZGVmaW5lIFBVQl9WSUFfUk9PVF9ERUZBVUxUIGZhbHNlCisjZGVmaW5lIFBVQl9BTExfVEFCTEVT X0RFRkFVTFQgZmFsc2UKKwogLyoKICAqIEluZm9ybWF0aW9uIHVzZWQgdG8gdmFsaWRhdGUgdGhl IGNvbHVtbnMgaW4gdGhlIHJvdyBmaWx0ZXIgZXhwcmVzc2lvbi4gU2VlCiAgKiBjb250YWluX2lu dmFsaWRfcmZjb2x1bW5fd2Fsa2VyIGZvciBkZXRhaWxzLgpAQCAtOTEsMTEgKzk4LDExIEBAIHBh cnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSpwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdF9naXZlbiA9IGZhbHNlOwogCiAJLyogZGVmYXVsdHMgKi8KLQlwdWJh Y3Rpb25zLT5wdWJpbnNlcnQgPSB0cnVlOwotCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IHRydWU7 Ci0JcHViYWN0aW9ucy0+cHViZGVsZXRlID0gdHJ1ZTsKLQlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0 ZSA9IHRydWU7Ci0JKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2U7CisJcHViYWN0 aW9ucy0+cHViaW5zZXJ0ID0gUFVCX0FUSU9OX0lOU0VSVF9ERUZBVUxUOworCXB1YmFjdGlvbnMt PnB1YnVwZGF0ZSA9IFBVQl9BQ1RJT05fVVBEQVRFX0RFRkFVTFQ7CisJcHViYWN0aW9ucy0+cHVi ZGVsZXRlID0gUFVCX0FDVElPTl9ERUxFVEVfREVGQVVMVDsKKwlwdWJhY3Rpb25zLT5wdWJ0cnVu Y2F0ZSA9IFBVQl9BQ1RJT05fVFJVTkNBVEVfREVGQVVMVDsKKwkqcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSBQVUJfVklBX1JPT1RfREVGQVVMVDsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8K IAlmb3JlYWNoKGxjLCBvcHRpb25zKQpAQCAtMTEwNSw2ICsxMTEyLDg1IEBAIEludmFsaWRhdGVQ dWJsaWNhdGlvblJlbHMoTGlzdCAqcmVsaWRzKQogCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFs bCgpOwogfQogCisvKgorICogUmVzZXQgdGhlIHB1YmxpY2F0aW9uLgorICoKKyAqIFJlc2V0IHRo ZSBwdWJsaWNhdGlvbiBvcHRpb25zLCBwdWJsaWNhdGlvbiByZWxhdGlvbnMgYW5kIHB1YmxpY2F0 aW9uIHNjaGVtYXMuCisgKi8KK3N0YXRpYyB2b2lkCitBbHRlclB1YmxpY2F0aW9uUmVzZXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKKwkJCQkJCVJlbGF0 aW9uIHJlbCwgSGVhcFR1cGxlIHR1cCkKK3sKKwlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0g PSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CisJT2lkCQkJcHViaWQgPSBw dWJmb3JtLT5vaWQ7CisJTGlzdAkgICAqc2NoZW1hcyA9IE5JTDsKKwlMaXN0CSAgICpyZWxzID0g TklMOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKKwlib29sCQlyZXBsYWNl c1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19wdWJsaWNh dGlvbl07CisJT2JqZWN0QWRkcmVzcyBvYmo7CisJTGlzdENlbGwgICAqbGM7CisJT2lkCQkJcHJp ZDsKKworCS8qIFJFU0VUIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHN1cGVydXNlciAqLworCWlmICgh c3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VG RklDSUVOVF9QUklWSUxFR0UpLAorCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gUkVT RVQgcHVibGljYXRpb24iKSk7CisKKwltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7 CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJbWVtc2V0KHJlcGxhY2Vz LCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiBSZXNldCB0aGUgcHVibGljYXRpb24g b3B0aW9ucyAqLworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1Ymluc2VydCAtIDFdID0g Qm9vbEdldERhdHVtKFBVQl9BVElPTl9JTlNFUlRfREVGQVVMVCk7CisJcmVwbGFjZXNbQW51bV9w Z19wdWJsaWNhdGlvbl9wdWJpbnNlcnQgLSAxXSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9wZ19w dWJsaWNhdGlvbl9wdWJ1cGRhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShQVUJfQUNUSU9OX1VQREFU RV9ERUZBVUxUKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnVwZGF0ZSAtIDFd ID0gdHJ1ZTsKKworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRlbGV0ZSAtIDFdID0g Qm9vbEdldERhdHVtKFBVQl9BQ1RJT05fREVMRVRFX0RFRkFVTFQpOworCXJlcGxhY2VzW0FudW1f cGdfcHVibGljYXRpb25fcHViZGVsZXRlIC0gMV0gPSB0cnVlOworCisJdmFsdWVzW0FudW1fcGdf cHVibGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShQVUJfQUNUSU9OX1RS VU5DQVRFX0RFRkFVTFQpOworCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNh dGUgLSAxXSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ2aWFyb290 IC0gMV0gPSBCb29sR2V0RGF0dW0oUFVCX1ZJQV9ST09UX0RFRkFVTFQpOworCXJlcGxhY2VzW0Fu dW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0gdHJ1ZTsKKworCXZhbHVlc1tBbnVt X3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0gQm9vbEdldERhdHVtKFBVQl9BTExf VEFCTEVTX0RFRkFVTFQpOworCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFi bGVzIC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlv bkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyog VXBkYXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRf c2VsZiwgdHVwKTsKKworCS8qIERyb3AgdGhlIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBw dWJsaWNhdGlvbiAqLworCXNjaGVtYXMgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpOwor CVB1YmxpY2F0aW9uRHJvcFNjaGVtYXMocHViaWQsIHNjaGVtYXMsIGZhbHNlKTsKKworCS8qIERy b3AgdGhlIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uICovCisJcmVs cyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1Qp OworCWZvcmVhY2gobGMsIHJlbHMpCisJeworCQlPaWQJCQlyZWxpZCA9IGxmaXJzdF9vaWQobGMp OworCisJCXByaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05SRUxNQVAsIEFudW1fcGdf cHVibGljYXRpb25fcmVsX29pZCwKKwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwK KwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJCWlmICghT2lkSXNWYWxpZChw cmlkKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X09CSkVDVCksCisJCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBub3QgcGFydCBvZiB0 aGUgcHVibGljYXRpb24iLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7 CisKKwkJT2JqZWN0QWRkcmVzc1NldChvYmosIFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgcHJp ZCk7CisJCXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9QX0NBU0NBREUsIDApOworCX0KK30KKwog LyoKICAqIEFkZCBvciByZW1vdmUgdGFibGUgdG8vZnJvbSBwdWJsaWNhdGlvbi4KICAqLwpAQCAt MTQxNiw2ICsxNTAyLDggQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFs dGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJaWYgKHN0bXQtPm9wdGlvbnMpCiAJCUFsdGVy UHVibGljYXRpb25PcHRpb25zKHBzdGF0ZSwgc3RtdCwgcmVsLCB0dXApOworCWVsc2UgaWYgKHN0 bXQtPmFjdGlvbiA9PSBBUF9SZXNldFB1YmxpY2F0aW9uKQorCQlBbHRlclB1YmxpY2F0aW9uUmVz ZXQocHN0YXRlLCBzdG10LCByZWwsIHR1cCk7CiAJZWxzZQogCXsKIAkJTGlzdAkgICAqcmVsYXRp b25zID0gTklMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggOTg5ZGIwZGJlYy4uZDdlMTM2NjZhMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CkBAIC0xMDU1OCw2ICsxMDU1OCw4IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25P YmpTcGVjCiAgKgogICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgcHViX29iaiBbLCAuLi5d CiAgKgorICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBSRVNFVAorICoKICAqIHB1Yl9vYmogaXMg b25lIG9mOgogICoKICAqCQlUQUJMRSB0YWJsZV9uYW1lIFssIC4uLl0KQEAgLTEwNjA0LDYgKzEw NjA2LDEzIEBAIEFsdGVyUHVibGljYXRpb25TdG10OgogCQkJCQluLT5hY3Rpb24gPSBBUF9Ecm9w T2JqZWN0czsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQUxURVIgUFVCTElD QVRJT04gbmFtZSBSRVNFVAorCQkJCXsKKwkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBt YWtlTm9kZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7CisJCQkJCW4tPnB1Ym5hbWUgPSAkMzsKKwkJ CQkJbi0+YWN0aW9uID0gQVBfUmVzZXRQdWJsaWNhdGlvbjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47 CisJCQkJfQogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4 IDU1YWY5ZWIwNGUuLjYyZWNjM2NkYWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTE4MTksNyArMTgx OSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gKi8KIAllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgiQURE IiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlNFVCIpOworCQlDT01QTEVURV9X SVRIKCJBREQiLCAiRFJPUCIsICJPV05FUiBUTyIsICJSRU5BTUUgVE8iLCAiUkVTRVQiLCAiU0VU Iik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IEFERCAqLwogCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiKSkKIAkJQ09NUExFVEVf V0lUSCgiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCA3M2Y2MzViNDU1Li45NzI2ZmRhZTU4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBA IC00MDM1LDcgKzQwMzUsOCBAQCB0eXBlZGVmIGVudW0gQWx0ZXJQdWJsaWNhdGlvbkFjdGlvbgog ewogCUFQX0FkZE9iamVjdHMsCQkJCS8qIGFkZCBvYmplY3RzIHRvIHB1YmxpY2F0aW9uICovCiAJ QVBfRHJvcE9iamVjdHMsCQkJCS8qIHJlbW92ZSBvYmplY3RzIGZyb20gcHVibGljYXRpb24gKi8K LQlBUF9TZXRPYmplY3RzCQkJCS8qIHNldCBsaXN0IG9mIG9iamVjdHMgKi8KKwlBUF9TZXRPYmpl Y3RzLAkJCQkvKiBzZXQgbGlzdCBvZiBvYmplY3RzICovCisJQVBfUmVzZXRQdWJsaWNhdGlvbgkJ CS8qIHJlc2V0IHRoZSBwdWJsaWNhdGlvbiAqLwogfSBBbHRlclB1YmxpY2F0aW9uQWN0aW9uOwog CiB0eXBlZGVmIHN0cnVjdCBBbHRlclB1YmxpY2F0aW9uU3RtdApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAzOThjMGYzOGY2Li5mODUyN2RhZTAyIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMTY1Myw2ICsxNjUz LDc1IEBAIERST1AgUFVCTElDQVRJT04gcHViOwogRFJPUCBUQUJMRSBzY2gxLnRibDE7CiBEUk9Q IFNDSEVNQSBzY2gxIGNhc2NhZGU7CiBEUk9QIFNDSEVNQSBzY2gyIGNhc2NhZGU7CistLSBUZXN0 cyBmb3IgQUxURVIgUFVCTElDQVRJT04gLi4uIFJFU0VUCitDUkVBVEUgU0NIRU1BIHB1Yl9zY2gx OworQ1JFQVRFIFRBQkxFIHB1Yl9zY2gxLnRibDEgKGEgaW50KTsKK1NFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEZPUiBB TEwgVEFCTEVTOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIFZlcmlmeSB0aGF0ICdB TEwgVEFCTEVTJyBmbGFnIGlzIHJlc2V0CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorKDEgcm93KQorCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKygxIHJvdykKKwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgVEFCTEUgcHViX3NjaDEudGJsMSwg QUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljOworLS0gVmVyaWZ5IHRoYXQgdGFibGVzIGFuZCBz Y2hlbWFzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24gYXJlIGRyb3BwZWQKKy0tIGFm dGVyIFJFU0VUCitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzOgorICAgICJwdWJfc2NoMS50YmwxIgorVGFi bGVzIGZyb20gc2NoZW1hczoKKyAgICAicHVibGljIgorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9yZXNldCBTRVQgKFBVQkxJU0ggPSAnJywgUFVCTElTSF9WSUFfUEFSVElUSU9O X1JPT1QgPSAndHJ1ZScpOworLS0gVmVyaWZ5IHRoYXQgcHVibGlzaCBvcHRpb25zIGFuZCBwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBvcHRpb24gYXJlIHJlc2V0CitcZFJwKyB0ZXN0cHViX3Jl c2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgdAorKDEg cm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVz dHB1Yl9yZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKKygxIHJvdykKKworLS0gVmVyaWZ5IHRoYXQgb25seSBzdXBlcnVzZXIgY2FuIHJlc2V0IGEg cHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgT1dORVIgVE8gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyMjsKK1NFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl cjI7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOyAtLSBmYWlsCitFUlJP UjogIG11c3QgYmUgc3VwZXJ1c2VyIHRvIFJFU0VUIHB1YmxpY2F0aW9uCitTRVQgUk9MRSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQ7CitE Uk9QIFRBQkxFIHB1Yl9zY2gxLnRibDE7CitEUk9QIFNDSEVNQSBwdWJfc2NoMTsKIFJFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKIERST1AgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIs IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyX2R1bW15OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDllYjg2 ZmQ1NGYuLjA2MTIzMTU0ODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAg LTEwNTcsNiArMTA1Nyw0MyBAQCBEUk9QIFRBQkxFIHNjaDEudGJsMTsKIERST1AgU0NIRU1BIHNj aDEgY2FzY2FkZTsKIERST1AgU0NIRU1BIHNjaDIgY2FzY2FkZTsKIAorLS0gVGVzdHMgZm9yIEFM VEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVAorQ1JFQVRFIFNDSEVNQSBwdWJfc2NoMTsKK0NSRUFU RSBUQUJMRSBwdWJfc2NoMS50YmwxIChhIGludCk7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBGT1IgQUxMIFRBQkxF UzsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CisKKy0tIFZlcmlmeSB0aGF0ICdBTEwgVEFC TEVTJyBmbGFnIGlzIHJlc2V0CitcZFJwKyB0ZXN0cHViX3Jlc2V0CitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBUQUJMRSBwdWJfc2NoMS50YmwxLCBBTEwgVEFCTEVT IElOIFNDSEVNQSBwdWJsaWM7CisKKy0tIFZlcmlmeSB0aGF0IHRhYmxlcyBhbmQgc2NoZW1hcyBh c3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9wcGVkCistLSBhZnRlciBSRVNF VAorXGRScCsgdGVzdHB1Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBS RVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9y ZXNldCBTRVQgKFBVQkxJU0ggPSAnJywgUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgPSAndHJ1 ZScpOworCistLSBWZXJpZnkgdGhhdCBwdWJsaXNoIG9wdGlvbnMgYW5kIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290IG9wdGlvbiBhcmUgcmVzZXQKK1xkUnArIHRlc3RwdWJfcmVzZXQKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisK Ky0tIFZlcmlmeSB0aGF0IG9ubHkgc3VwZXJ1c2VyIGNhbiByZXNldCBhIHB1YmxpY2F0aW9uCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlcjI7CitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOworQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsgLS0gZmFpbAorU0VUIFJPTEUgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyOworCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQ7CitEUk9Q IFRBQkxFIHB1Yl9zY2gxLnRibDE7CitEUk9QIFNDSEVNQSBwdWJfc2NoMTsKKwogUkVTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciwg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIERST1AgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXJfZHVtbXk7Ci0tIAoyLjMyLjAKCg== --000000000000d80c1705def8d4e6 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0002-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch" Content-Disposition: attachment; filename="v5-0002-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l35wcmz41 RnJvbSBjZjBlMDMxZjhmODI1NDFiYmQxMGJkNDk2M2U3ZGEwNTFlMTdhMDIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogU2F0LCAxNCBNYXkgMjAyMiAxMzoyMjoxMSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjUg Mi8yXSBTa2lwIHB1Ymxpc2hpbmcgdGhlIHRhYmxlcyBzcGVjaWZpZWQgaW4gRVhDRVBUIFRBQkxF LgoKQSBuZXcgb3B0aW9uICJFWENFUFQgVEFCTEUiIGluIENyZWF0ZS9BbHRlciBQdWJsaWNhdGlv biBhbGxvd3MKb25lIG9yIG1vcmUgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLCBwdWJsaXNoZXIgd2ls bCBleGNsdWRlIHNlbmRpbmcgdGhlIGRhdGEKb2YgdGhlIGV4Y2x1ZGVkIHRhYmxlcyB0byB0aGUg c3Vic2NyaWJlci4KClRoZSBuZXcgc3ludGF4IGFsbG93cyBzcGVjaWZ5aW5nIGV4Y2x1ZGUgcmVs YXRpb25zIHdoaWxlIGNyZWF0aW5nIGEgcHVibGljYXRpb24Kb3IgZXhjbHVkZSByZWxhdGlvbnMg aW4gYWx0ZXIgcHVibGljYXRpb24uIEZvciBleGFtcGxlOgpDUkVBVEUgUFVCTElDQVRJT04gcHVi MSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgdDEsdDI7Cm9yCkFMVEVSIFBVQkxJQ0FUSU9O IHB1YjEgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHQxLHQyOwoKQSBuZXcgY29sdW1uIHBy ZXhjZXB0IGlzIGFkZGVkIHRvIHRhYmxlICJwZ19wdWJsaWNhdGlvbl9yZWwiLCB0byBtYWludGFp bgp0aGUgcmVsYXRpb25zIHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gZXhjbHVkZSBwdWJsaXNoaW5n IHRocm91Z2ggdGhlIHB1YmxpY2F0aW9uLgpNb2RpZmllZCB0aGUgb3V0cHV0IHBsdWdpbiAocGdv dXRwdXQpIHRvIGV4Y2x1ZGUgcHVibGlzaGluZyB0aGUgY2hhbmdlcyBvZiB0aGUKZXhjbHVkZWQg dGFibGVzLgoKVXBkYXRlcyBwZ19kdW1wIHRvIGlkZW50aWZ5IGFuZCBkdW1wIHRoZSBleGNsdWRl ZCB0YWJsZXMgb2YgdGhlIHB1YmxpY2F0aW9ucy4KVXBkYXRlcyB0aGUgXGQgZmFtaWx5IG9mIGNv bW1hbmRzIHRvIGRpc3BsYXkgZXhjbHVkZWQgdGFibGVzIG9mIHRoZQpwdWJsaWNhdGlvbnMgYW5k IFxkUnArIHZhcmlhbnQgd2lsbCBub3cgZGlzcGxheSBhc3NvY2lhdGVkIGV4Y2VwdCB0YWJsZXMg aWYgYW55LgoKQnVtcCBjYXRhbG9nIHZlcnNpb24uCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAgNSArLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w dWJsaWNhdGlvbi5zZ21sICAgICAgIHwgIDEzICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sICAgICAgfCAgMjkgKystCiBkb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVm LnNnbWwgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYyAgICAgICAgICB8ICAzOCArKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYyAgICAgICAgfCAxOTYgKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0OCArKysrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgIDI1ICstLQogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgIDE3ICstCiBzcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNjEgKysrKystCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iaW4vcGdf ZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAgICB8ICAxMiArKwogc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDU2ICsrKystCiBzcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8ICA5MCArKysrKysrLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICAgIHwgIDU0ICsrKystCiAuLi4vdC8wMzJf cmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsICAgICAgICAgfCAgODYgKysrKysrKysKIDI0IGZp bGVzIGNoYW5nZWQsIDY2MCBpbnNlcnRpb25zKCspLCAxMjIgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3JlcF9jaGFuZ2VzX2V4Y2Vw dF90YWJsZS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggYTUzM2EyMTUzZS4uNzhlOGMyMmE1OSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKQEAgLTY0MjYsNiArNjQyNiwxNSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNl YWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4m bAogICAgICAgaWYgdGhlcmUgaXMgbm8gcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25kaXRpb24u PC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgPHN0cnVjdGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhlIHRh YmxlIG11c3QgYmUgZXhjbHVkZWQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+cHJhdHRy czwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDJ2ZWN0b3I8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwt cmVwbGljYXRpb24uc2dtbAppbmRleCAxNDVlYTcxZDYxLi5kN2Q2YmEwNTI5IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExNjcsOCArMTE2Nyw5IEBAIENPTlRFWFQ6 ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1 IiBkdXJpbmcgIklOU0VSCiAgIDxwYXJhPgogICAgVG8gYWRkIHRhYmxlcyB0byBhIHB1YmxpY2F0 aW9uLCB0aGUgdXNlciBtdXN0IGhhdmUgb3duZXJzaGlwIHJpZ2h0cyBvbiB0aGUKICAgIHRhYmxl LiBUbyBhZGQgYWxsIHRhYmxlcyBpbiBzY2hlbWEgdG8gYSBwdWJsaWNhdGlvbiwgdGhlIHVzZXIg bXVzdCBiZSBhCi0gICBzdXBlcnVzZXIuIFRvIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVi bGlzaGVzIGFsbCB0YWJsZXMgb3IgYWxsIHRhYmxlcyBpbgotICAgc2NoZW1hIGF1dG9tYXRpY2Fs bHksIHRoZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIuCisgICBzdXBlcnVzZXIuIFRvIGFkZCBh bGwgdGFibGVzIHRvIGEgcHVibGljYXRpb24sIHRoZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIu CisgICBUbyBjcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgdGFibGVzIG9y IGFsbCB0YWJsZXMgaW4gc2NoZW1hCisgICBhdXRvbWF0aWNhbGx5LCB0aGUgdXNlciBtdXN0IGJl IGEgc3VwZXJ1c2VyLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggMTg5NzI3YWY2Mi4uZTg5NWFkZDI2MiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMjIsNiArMjIsNyBAQCBQb3N0Z3Jl U1FMIGRvY3VtZW50YXRpb24KICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+CiBBTFRFUiBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IEFERCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0 PC9yZXBsYWNlYWJsZT4gWywgLi4uXQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBREQgQUxMIFRBQkxFUyBbRVhDRVBU IFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0gWywgLi4uIF1dCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywg Li4uXQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBEUk9QIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJs aWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCiBBTFRFUiBQVUJMSUNBVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxh Y2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2Vh YmxlPl0gWywgLi4uIF0gKQpAQCAtODIsOCArODMsOCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFU0VUCiAKICAg PHBhcmE+CiAgICBZb3UgbXVzdCBvd24gdGhlIHB1YmxpY2F0aW9uIHRvIHVzZSA8Y29tbWFuZD5B TFRFUiBQVUJMSUNBVElPTjwvY29tbWFuZD4uCi0gICBBZGRpbmcgYSB0YWJsZSB0byBhIHB1Ymxp Y2F0aW9uIGFkZGl0aW9uYWxseSByZXF1aXJlcyBvd25pbmcgdGhhdCB0YWJsZS4KLSAgIFRoZSA8 bGl0ZXJhbD5BREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGFuZAorICAgQWRkaW5n IGEgdGFibGUgb3IgZXhjbHVkaW5nIGEgdGFibGUgdG8gYSBwdWJsaWNhdGlvbiBhZGRpdGlvbmFs bHkgcmVxdWlyZXMKKyAgIG93bmluZyB0aGF0IHRhYmxlLiBUaGUgPGxpdGVyYWw+QUREIEFMTCBU QUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBhbmQKICAgIDxsaXRlcmFsPlNFVCBBTEwgVEFCTEVT IElOIFNDSEVNQTwvbGl0ZXJhbD4gdG8gYSBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUKICAgIGlu dm9raW5nIHVzZXIgdG8gYmUgYSBzdXBlcnVzZXIuICA8bGl0ZXJhbD5SRVNFVDwvbGl0ZXJhbD4g b2YgcHVibGljYXRpb24KICAgIHJlcXVpcmVzIHRoZSBpbnZva2luZyB1c2VyIHRvIGJlIGEgc3Vw ZXJ1c2VyLiBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBtdXN0CkBAIC0yMTMsNiArMjE0LDE0IEBA IEFMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEFERCBBTEwgVEFCTEVTIElOIFND SEVNQSBtYXJrZXRpbmcsIHNhbGVzOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgogCisg IDxwYXJhPgorICAgQWx0ZXIgcHVibGljYXRpb24gPHN0cnVjdG5hbWU+cHJvZHVjdGlvbl9wdWJs aWNhdGlvbjwvc3RydWN0bmFtZT4gdGhhdAorICAgcHVibGlzaGVzIGFsbCB0YWJsZXMgZXhjZXB0 IDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1Y3RuYW1lPmRlcGFy dG1lbnRzPC9zdHJ1Y3RuYW1lPiB0YWJsZXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJM SUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSB1c2VycywgZGVwYXJ0bWVudHM7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKwogICA8cGFy YT4KICAgIEFkZCB0YWJsZXMgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+LAogICAgPHN0 cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+IGFuZCBzY2hlbWEKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDFhODI4ZThkMmYuLjljZTZiYzdlMzcg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjIsNyArMjIs NyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3Bz aXM+CiBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPgotICAgIFsgRk9SIEFMTCBUQUJMRVMKKyAgICBbIEZPUiBBTEwgVEFC TEVTIFtFWENFUFQgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbLCAuLi4gXV0KICAgICAgIHwgRk9SIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSBdCiAgICAgWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApIF0KIApAQCAt MTU2LDYgKzE1NiwyNCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIAorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQ VCBUQUJMRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIE1hcmtzIHRoZSBwdWJsaWNhdGlvbiBhcyBvbmUgdGhhdCBleGNsdWRlcyByZXBsaWNhdGlu ZyBjaGFuZ2VzIGZvciB0aGUKKyAgICAgIHNwZWNpZmllZCB0YWJsZXMuCisgICAgIDwvcGFyYT4K KworICAgICA8cGFyYT4KKyAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD4gY2Fu IGJlIHNwZWNpZmllZCBvbmx5IGZvcgorICAgICAgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xp dGVyYWw+IHB1YmxpY2F0aW9uLiBJdCBpcyBub3Qgc3VwcG9ydGVkIGZvcgorICAgICAgPGxpdGVy YWw+Rk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIDwvbGl0ZXJhbD4gcHVibGljYXRpb24gYW5kCisg ICAgICA8bGl0ZXJhbD5GT1IgVEFCTEU8L2xpdGVyYWw+IHB1YmxpY2F0aW9uLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVu dHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPldJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICk8L2xpdGVy YWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTM1MSw2ICszNjksMTUgQEAgQ1JFQVRFIFBV QkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gRk9SIFRBQkxFIHVzZXJzLCBkZXBhcnRt ZW50cywgQUxMIFRBQkwKIENSRUFURSBQVUJMSUNBVElPTiBzYWxlc19wdWJsaWNhdGlvbiBGT1Ig QUxMIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKIDwvcHJvZ3JhbWxpc3Rpbmc+ PC9wYXJhPgogCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNo ZXMgYWxsIGNoYW5nZXMgaW4gYWxsIHRoZSB0YWJsZXMgZXhjZXB0IGZvcgorICAgdGhlIGNoYW5n ZXMgb2YgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5hbWU+ ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+IHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRF IFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gRk9SIEFMTCBUQUJMRSBFWENFUFQgVEFCTEUgdXNl cnMsIGRlcGFydG1lbnRzOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxwYXJh PgogICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgZm9y IHRhYmxlIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwKICAgIGJ1dCByZXBsaWNhdGVz IG9ubHkgY29sdW1ucyA8c3RydWN0bmFtZT51c2VyX2lkPC9zdHJ1Y3RuYW1lPiBhbmQKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv cHNxbC1yZWYuc2dtbAppbmRleCA1ZmM2YjEwMzRhLi4zODg5Nzk2YjNmIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCkBAIC0xODY4LDggKzE4NjgsOSBAQCB0ZXN0ZGI9Jmd0OwogICAgICAgICBJZiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+IGlzCiAg ICAgICAgIHNwZWNpZmllZCwgb25seSB0aG9zZSBwdWJsaWNhdGlvbnMgd2hvc2UgbmFtZXMgbWF0 Y2ggdGhlIHBhdHRlcm4gYXJlCiAgICAgICAgIGxpc3RlZC4KLSAgICAgICAgSWYgPGxpdGVyYWw+ KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcyBh bmQKLSAgICAgICAgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUg c2hvd24gYXMgd2VsbC4KKyAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5k ZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcywKKyAgICAgICAgZXhjbHVkZWQgdGFi bGVzIGFuZCBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93 biBhcworICAgICAgICB3ZWxsLgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpp bmRleCBlMmM4YmNiMjc5Li5kODRhYWQ1MjZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jCkBAIC0yOTAsNyArMjkwLDggQEAgR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25z KExpc3QgKnJlc3VsdCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAogICogYW5jZXN0 b3IgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAqLwogT2lkCi1HZXRUb3BNb3N0QW5jZXN0 b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50ICphbmNlc3Rv cl9sZXZlbCkKK0dldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlz dCAqYW5jZXN0b3JzLAorCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsLCBib29sIHB1YmFsbHRh YmxlcykKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIAlPaWQJCQl0b3Btb3N0X3JlbGlkID0gSW52YWxp ZE9pZDsKQEAgLTMwMiw4ICszMDMsOSBAQCBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9u KE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50ICphbmNlc3Rvcl9sZXZlbAogCWZvcmVh Y2gobGMsIGFuY2VzdG9ycykKIAl7CiAJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7 Ci0JCUxpc3QJICAgKmFwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3Rvcik7 CisJCUxpc3QJICAgKmFwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3Rvciwg ZmFsc2UpOwogCQlMaXN0CSAgICphc2NoZW1hUHViaWRzID0gTklMOworCQlMaXN0CSAgICphZXhj ZXB0cHViaWRzID0gTklMOwogCiAJCWxldmVsKys7CiAKQEAgLTMxNyw3ICszMTksOSBAQCBHZXRU b3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywg aW50ICphbmNlc3Rvcl9sZXZlbAogCQllbHNlCiAJCXsKIAkJCWFzY2hlbWFQdWJpZHMgPSBHZXRT Y2hlbWFQdWJsaWNhdGlvbnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpKTsKLQkJCWlmIChs aXN0X21lbWJlcl9vaWQoYXNjaGVtYVB1YmlkcywgcHVib2lkKSkKKwkJCWFleGNlcHRwdWJpZHMg PSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgdHJ1ZSk7CisJCQlpZiAobGlzdF9t ZW1iZXJfb2lkKGFzY2hlbWFQdWJpZHMsIHB1Ym9pZCkgfHwKKwkJCQkocHViYWxsdGFibGVzICYm ICFsaXN0X21lbWJlcl9vaWQoYWV4Y2VwdHB1YmlkcywgcHVib2lkKSkpCiAJCQl7CiAJCQkJdG9w bW9zdF9yZWxpZCA9IGFuY2VzdG9yOwogCkBAIC0zMjgsNiArMzMyLDcgQEAgR2V0VG9wTW9zdEFu Y2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5j ZXN0b3JfbGV2ZWwKIAogCQlsaXN0X2ZyZWUoYXB1Ymlkcyk7CiAJCWxpc3RfZnJlZShhc2NoZW1h UHViaWRzKTsKKwkJbGlzdF9mcmVlKGFleGNlcHRwdWJpZHMpOwogCX0KIAogCXJldHVybiB0b3Bt b3N0X3JlbGlkOwpAQCAtMzk2LDYgKzQwMSw4IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihP aWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQlPYmplY3RJZEdldERhdHVtKHB1 YmlkKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJyZWxpZCAtIDFdID0KIAkJ T2JqZWN0SWRHZXREYXR1bShyZWxpZCk7CisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVs X3ByZXhjZXB0IC0gMV0gPQorCQlCb29sR2V0RGF0dW0ocHJpLT5leGNlcHQpOwogCiAJLyogQWRk IHF1YWxpZmljYXRpb25zLCBpZiBhdmFpbGFibGUgKi8KIAlpZiAocHJpLT53aGVyZUNsYXVzZSAh PSBOVUxMKQpAQCAtNjY2LDcgKzY3Myw3IEBAIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1 YmlkLCBPaWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0cykKIAogLyogR2V0cyBsaXN0IG9m IHB1YmxpY2F0aW9uIG9pZHMgZm9yIGEgcmVsYXRpb24gKi8KIExpc3QgKgotR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMoT2lkIHJlbGlkKQorR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlk LCBib29sIGJleGNlcHQpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUNhdENMaXN0ICAg KnB1YnJlbGxpc3Q7CkBAIC02ODAsNyArNjg3LDggQEAgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo T2lkIHJlbGlkKQogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnJlbGxpc3QtPm1lbWJlcnNbaV0tPnR1 cGxlOwogCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVD VCh0dXApKS0+cHJwdWJpZDsKIAotCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1Ymlk KTsKKwkJaWYgKGJleGNlcHQgPT0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNU KHR1cCkpLT5wcmV4Y2VwdCkKKwkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQp OwogCX0KIAogCVJlbGVhc2VTeXNDYWNoZUxpc3QocHVicmVsbGlzdCk7CkBAIC03NzksNyArNzg3 LDcgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAgKiByb290IHBhcnRpdGlvbmVk IHRhYmxlcy4KICAqLwogTGlzdCAqCi1HZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhi b29sIHB1YnZpYXJvb3QpCitHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHVi aWQsIGJvb2wgcHVidmlhcm9vdCkKIHsKIAlSZWxhdGlvbgljbGFzc1JlbDsKIAlTY2FuS2V5RGF0 YSBrZXlbMV07CkBAIC03ODcsNiArNzk1LDE1IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVs YXRpb25zKGJvb2wgcHVidmlhcm9vdCkKIAlIZWFwVHVwbGUJdHVwbGU7CiAJTGlzdAkgICAqcmVz dWx0ID0gTklMOwogCisJLyoKKwkgKiBwZ19wdWJsaWNhdGlvbl9yZWwgYW5kIHBnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZSB3aWxsIG9ubHkgaGF2ZSBleGNsdWRlZAorCSAqIHRhYmxlcyBpbiBjYXNl IG9mIGFsbCB0YWJsZXMgcHVibGljYXRpb24sIG5vIG5lZWQgdG8gcGFzcyBleGNlcHQgZmxhZwor CSAqIHRvIGdldCB0aGUgcmVsYXRpb25zLgorCSAqLworCUxpc3QJICAgKmV4Y2VwdHB1YnRhYmxl bGlzdDsKKworCWV4Y2VwdHB1YnRhYmxlbGlzdCA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1 YmlkLCBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CisKIAljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVs YXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCiAJU2NhbktleUluaXQoJmtleVsw XSwKQEAgLTgwMiw3ICs4MTksOCBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhi b29sIHB1YnZpYXJvb3QpCiAJCU9pZAkJCXJlbGlkID0gcmVsRm9ybS0+b2lkOwogCiAJCWlmIChp c19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJCSEocmVsRm9ybS0+cmVs aXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkpCisJCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9u ICYmIHB1YnZpYXJvb3QpICYmCisJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdHB1YnRhYmxlbGlz dCwgcmVsaWQpKQogCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJfQog CkBAIC04MjMsNyArODQxLDggQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoYm9v bCBwdWJ2aWFyb290KQogCQkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJCWlmIChp c19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJCQkhcmVsRm9ybS0+cmVs aXNwYXJ0aXRpb24pCisJCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmCisJCQkJIWxpc3Rf bWVtYmVyX29pZChleGNlcHRwdWJ0YWJsZWxpc3QsIHJlbGlkKSkKIAkJCQlyZXN1bHQgPSBsYXBw ZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMTA3LDcgKzExMjYsOCBAQCBwZ19n ZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCSAqLwogCQlpZiAocHVi bGljYXRpb24tPmFsbHRhYmxlcykKIAkJewotCQkJdGFibGVzID0gR2V0QWxsVGFibGVzUHVibGlj YXRpb25SZWxhdGlvbnMocHVibGljYXRpb24tPnB1YnZpYXJvb3QpOworCQkJdGFibGVzID0gR2V0 QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMocHVibGljYXRpb24tPm9pZCwKKwkJCQkJCQkJ CQkJCQkgIHB1YmxpY2F0aW9uLT5wdWJ2aWFyb290KTsKIAkJfQogCQllbHNlCiAJCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggOTU2YjAyZDUwMS4uY2E2ZWRiZDM5 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTE5Miw2ICsxOTIs MTEgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCXN3aXRjaCAocHVib2JqLT5wdWJvYmp0eXBlKQogCQl7CiAJ CQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2Vw dCA9IGZhbHNlOworCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7 CisJCQkJYnJlYWs7CisJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRToKKwkJCQlw dWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwogCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVs cywgcHVib2JqLT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JK X1RBQkxFU19JTl9TQ0hFTUE6CkBAIC0zMDQsNyArMzA5LDcgQEAgY29udGFpbl9pbnZhbGlkX3Jm Y29sdW1uX3dhbGtlcihOb2RlICpub2RlLCByZl9jb250ZXh0ICpjb250ZXh0KQogICovCiBib29s CiBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxh dGlvbiwgTGlzdCAqYW5jZXN0b3JzLAotCQkJCQkJCSAgIGJvb2wgcHVidmlhcm9vdCkKKwkJCQkJ CQkgICBib29sIHB1YnZpYXJvb3QsIGJvb2wgcHViYWxsdGFibGVzKQogewogCUhlYXBUdXBsZQly ZnR1cGxlOwogCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CkBAIC0z MzEsNyArMzM2LDggQEAgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwg UmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKIAlpZiAocHVidmlhcm9vdCAmJiBy ZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAl7CiAJCXB1Ymxpc2hfYXNfcmVsaWQK LQkJCT0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBO VUxMKTsKKwkJCT0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0 b3JzLCBOVUxMLAorCQkJCQkJCQkJCQkgIHB1YmFsbHRhYmxlcyk7CiAKIAkJaWYgKCFPaWRJc1Zh bGlkKHB1Ymxpc2hfYXNfcmVsaWQpKQogCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAt MzgwLDcgKzM4Niw3IEBAIHB1Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQs IFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiAgKi8KIGJvb2wKIHB1Yl9jb2xs aXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24s IExpc3QgKmFuY2VzdG9ycywKLQkJCQkJCQkJCWJvb2wgcHVidmlhcm9vdCkKKwkJCQkJCQkJCWJv b2wgcHVidmlhcm9vdCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJSGVhcFR1cGxlCXR1cGxlOwog CU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CkBAIC0zOTksNyArNDA1 LDcgQEAgcHViX2NvbGxpc3RfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxh dGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3IKIAkgKi8KIAlpZiAocHVidmlhcm9vdCAmJiBy ZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAl7Ci0JCXB1Ymxpc2hfYXNfcmVsaWQg PSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwp OworCQlwdWJsaXNoX2FzX3JlbGlkID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihw dWJpZCwgYW5jZXN0b3JzLCBOVUxMLCBwdWJhbGx0YWJsZXMpOwogCiAJCWlmICghT2lkSXNWYWxp ZChwdWJsaXNoX2FzX3JlbGlkKSkKIAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKQEAgLTg0 Myw1NCArODQ5LDUyIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCS8qIE1ha2UgdGhlIGNoYW5nZXMgdmlzaWJsZS4g Ki8KIAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCi0JLyogQXNzb2NpYXRlIG9iamVjdHMg d2l0aCB0aGUgcHVibGljYXRpb24uICovCi0JaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQotCXsK LQkJLyogSW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVi dWlsdC4gKi8KLQkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVBbGwoKTsKLQl9Ci0JZWxzZQotCXsK LQkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAm cmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKKwlPYmplY3RzSW5QdWJsaWNh dGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCQkJCQkJ CSZzY2hlbWFpZGxpc3QpOwogCi0JCS8qIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJl cyBzdXBlcnVzZXIgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHNjaGVtYWlkbGlzdCkgPiAwICYmICFz dXBlcnVzZXIoKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNV RkZJQ0lFTlRfUFJJVklMRUdFKSwKLQkJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBj cmVhdGUgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOworCS8qIEZPUiBB TEwgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KKwlpZiAobGlzdF9sZW5n dGgoc2NoZW1haWRsaXN0KSA+IDAgJiYgIXN1cGVydXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQllcnJtc2co Im11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVi bGljYXRpb24iKSk7CiAKLQkJaWYgKGxpc3RfbGVuZ3RoKHJlbGF0aW9ucykgPiAwKQotCQl7Ci0J CQlMaXN0CSAgICpyZWxzOworCWlmIChsaXN0X2xlbmd0aChyZWxhdGlvbnMpID4gMCkKKwl7CisJ CUxpc3QJICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7Ci0J CQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNjaGVtYWlkbGlz dCwKLQkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05PQkpfVEFCTEUpOworCQlyZWxzID0gT3BlblRh YmxlTGlzdChyZWxhdGlvbnMpOworCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1YmxpY2F0 aW9uKHJlbHMsIHNjaGVtYWlkbGlzdCwKKwkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OT0JKX1RBQkxF KTsKIAotCQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0 ZXh0LAotCQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJVHJhbnNmb3Jt UHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJCQkJcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlz dChyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwKLQkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290KTsKKwkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3QocmVscywgcHN0YXRl LT5wX3NvdXJjZXRleHQsCisJCQkJCQkJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIAot CQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNs b3NlVGFibGVMaXN0KHJlbHMpOwotCQl9CisJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwg cmVscywgdHJ1ZSwgTlVMTCk7CisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCX0KIAotCQlpZiAo bGlzdF9sZW5ndGgoc2NoZW1haWRsaXN0KSA+IDApCi0JCXsKLQkJCS8qCi0JCQkgKiBTY2hlbWEg bG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHRvIHByZXZlbnQK LQkJCSAqIGNvbmN1cnJlbnQgc2NoZW1hIGRlbGV0aW9uLgotCQkJICovCi0JCQlMb2NrU2NoZW1h TGlzdChzY2hlbWFpZGxpc3QpOwotCQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1Ym9pZCwgc2No ZW1haWRsaXN0LCB0cnVlLCBOVUxMKTsKLQkJfQorCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxp c3QpID4gMCkKKwl7CisJCS8qCisJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1 YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAorCQkgKiBjb25jdXJyZW50IHNjaGVtYSBk ZWxldGlvbi4KKwkJICovCisJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7CisJCVB1Ymxp Y2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7CiAJfQog CiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAorCS8qIEFzc29jaWF0ZSBv YmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLworCWlmIChzdG10LT5mb3JfYWxsX3RhYmxl cykKKwl7CisJCS8qIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZv IGlzIHJlYnVpbHQuICovCisJCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQWxsKCk7CisJfQorCiAJ SW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQs IDApOwogCiAJaWYgKHdhbF9sZXZlbCAhPSBXQUxfTEVWRUxfTE9HSUNBTCkKQEAgLTExOTEsNiAr MTE5NSw3NiBAQCBBbHRlclB1YmxpY2F0aW9uUmVzZXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAl9CiB9CiAKKy8qCisgKiBDaGVjayBpZiB0aGUgcHVi bGljYXRpb24gaGFzIGRlZmF1bHQgdmFsdWVzCisgKgorICogQ2hlY2sgdGhlIGZvbGxvd2luZzoK KyAqIAlQdWJsaWNhdGlvbiBpcyBoYXZpbmcgZGVmYXVsdCBvcHRpb25zCisgKiAgUHVibGljYXRp b24gaXMgbm90IGFzc29jaWF0ZWQgd2l0aCByZWxhdGlvbnMKKyAqICBQdWJsaWNhdGlvbiBpcyBu b3QgYXNzb2NpYXRlZCB3aXRoIHNjaGVtYXMKKyAqICBQdWJsaWNhdGlvbiBpcyBub3Qgc2V0IHdp dGggIkZPUiBBTEwgVEFCTEVTIgorICovCitzdGF0aWMgYm9vbAorQ2hlY2tQdWJsaWNhdGlvbkRl ZlZhbHVlcyhIZWFwVHVwbGUgdHVwKQoreworCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9 IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwlPaWQJCQlwdWJpZCA9IHB1 YmZvcm0tPm9pZDsKKwlMaXN0CSAgICpwdWJvYmpzID0gTklMOworCisJaWYgKHB1YmZvcm0tPnB1 YmFsbHRhYmxlcykKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFwdWJmb3JtLT5wdWJpbnNlcnQg fHwgIXB1YmZvcm0tPnB1YnVwZGF0ZSB8fCAhcHViZm9ybS0+cHViZGVsZXRlIHx8CisJCSFwdWJm b3JtLT5wdWJ0cnVuY2F0ZSB8fCBwdWJmb3JtLT5wdWJ2aWFyb290KQorCQlyZXR1cm4gZmFsc2U7 CisKKwlwdWJvYmpzID0gR2V0UHVibGljYXRpb25TY2hlbWFzKHB1YmlkKTsKKwlpZiAobGlzdF9s ZW5ndGgocHVib2JqcykpCisJCXJldHVybiBmYWxzZTsKKworCXB1Ym9ianMgPSBHZXRQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJpZCwgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwlpZiAobGlzdF9s ZW5ndGgocHVib2JqcykpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisv KgorICogUmVzZXQgdGhlIHB1YmxpY2F0aW9uLgorICoKKyAqIFJlc2V0IHRoZSBwdWJsaWNhdGlv biBvcHRpb25zLCBwdWJsaWNhdGlvbiByZWxhdGlvbnMgYW5kIHB1YmxpY2F0aW9uIHNjaGVtYXMu CisgKi8KK3N0YXRpYyB2b2lkCitBbHRlclB1YmxpY2F0aW9uU2V0QWxsVGFibGVzKFJlbGF0aW9u IHJlbCwgSGVhcFR1cGxlIHR1cCkKK3sKKwlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAo Rm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CisJYm9vbAkJbnVsbHNbTmF0dHNf cGdfcHVibGljYXRpb25dOworCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsK KwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKKworCUFzc2VydCghcHViZm9y bS0+cHViYWxsdGFibGVzKTsKKworCS8qIFJFU0VUIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHN1cGVy dXNlciAqLworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCWVycm1zZygibXVzdCBiZSBz dXBlcnVzZXIgdG8gUkVTRVQgcHVibGljYXRpb24iKSk7CisKKwltZW1zZXQodmFsdWVzLCAwLCBz aXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJ bWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiBzZXQgYWxs IHRhYmxlcyBvcHRpb24gKi8KKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGx0YWJs ZXMgLSAxXSA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0 aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxl KHR1cCwgUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxh Y2VzKTsKKworCS8qIFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUo cmVsLCAmdHVwLT50X3NlbGYsIHR1cCk7Cit9CisKIC8qCiAgKiBBZGQgb3IgcmVtb3ZlIHRhYmxl IHRvL2Zyb20gcHVibGljYXRpb24uCiAgKi8KQEAgLTE0NDIsNiArMTUxNiwxOSBAQCBDaGVja0Fs dGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAs CiAJCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0ICpzY2hlbWFpZGxpc3QpCiB7CiAJRm9ybV9wZ19w dWJsaWNhdGlvbiBwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXAp OworCUxpc3RDZWxsICAgKmxjOworCWJvb2wJCW5vbmV4Y2VwdHRhYmxlID0gZmFsc2U7CisJYm9v bAkJZXhjZXB0dGFibGUgPSBmYWxzZTsKKworCWZvcmVhY2gobGMsIHRhYmxlcykKKwl7CisJCVB1 YmxpY2F0aW9uVGFibGUgKnB1Yl90YWJsZSA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uVGFibGUs IGxjKTsKKworCQlpZiAoIXB1Yl90YWJsZS0+ZXhjZXB0KQorCQkJbm9uZXhjZXB0dGFibGUgPSB0 cnVlOworCQllbHNlCisJCQlleGNlcHR0YWJsZSA9IHRydWU7CisJfQogCiAJaWYgKChzdG10LT5h Y3Rpb24gPT0gQVBfQWRkT2JqZWN0cyB8fCBzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykg JiYKIAkJc2NoZW1haWRsaXN0ICYmICFzdXBlcnVzZXIoKSkKQEAgLTE0NjEsMTIgKzE1NDgsMTkg QEAgQ2hlY2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFw VHVwbGUgdHVwLAogCQkJCSBlcnJkZXRhaWwoIlRhYmxlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUg YWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0 aW9ucy4iKSkpOwogCiAJLyogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0 ZSB0aGUgcHVibGljYXRpb24gdGFibGVzLiAqLwotCWlmICh0YWJsZXMgJiYgcHViZm9ybS0+cHVi YWxsdGFibGVzKQorCWlmIChub25leGNlcHR0YWJsZSAmJiB0YWJsZXMgJiYgcHViZm9ybS0+cHVi YWxsdGFibGVzKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwi JXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTIiwKIAkJCQkJCU5hbWVTdHIocHViZm9y bS0+cHVibmFtZSkpLAogCQkJCSBlcnJkZXRhaWwoIlRhYmxlcyBjYW5ub3QgYmUgYWRkZWQgdG8g b3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4iKSkpOworCisJaWYg KGV4Y2VwdHRhYmxlICYmICFzdG10LT5mb3JfYWxsX3RhYmxlcykKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQkgZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgaXMgbm90IGRlZmluZWQgYXMgRk9SIEFM TCBUQUJMRVMiLAorCQkJCQkJTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCisJCQkJIGVycmRl dGFpbCgiZXhjZXB0IHRhYmxlIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBz ZXQgb24gTk9OIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLiIpKSk7CiB9CiAKIC8qCkBAIC0xNTAw LDYgKzE1OTQsMjAgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10KQogCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dO RVIsIE9CSkVDVF9QVUJMSUNBVElPTiwKIAkJCQkJICAgc3RtdC0+cHVibmFtZSk7CiAKKwlpZiAo c3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJeworCQlib29sIGlzZGVmYXVsdCA9IENoZWNrUHVibGlj YXRpb25EZWZWYWx1ZXModHVwKTsKKworCQlpZiAoIWlzZGVmYXVsdCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkJZXJybXNnKCJTZXR0aW5nIEFMTCBUQUJMRVMgcmVxdWlyZXMgcHVibGljYXRpb24gXCIlc1wi IHRvIGhhdmUgZGVmYXVsdCB2YWx1ZXMiLAorCQkJCQkJICAgc3RtdC0+cHVibmFtZSksCisJCQkJ CWVycmhpbnQoIkVpdGhlciB0aGUgcHVibGljYXRpb24gaGFzIHRhYmxlcy9zY2hlbWFzIGFzc29j aWF0ZWQgb3IgZG9lcyBub3QgaGF2ZSBkZWZhdWx0IHB1YmxpY2F0aW9uIG9wdGlvbnMgb3IgQUxM IFRBQkxFUyBvcHRpb24gaXMgc2V0LiIpKTsKKworCQlBbHRlclB1YmxpY2F0aW9uU2V0QWxsVGFi bGVzKHJlbCwgdHVwKTsKKwl9CisKIAlpZiAoc3RtdC0+b3B0aW9ucykKIAkJQWx0ZXJQdWJsaWNh dGlvbk9wdGlvbnMocHN0YXRlLCBzdG10LCByZWwsIHR1cCk7CiAJZWxzZSBpZiAoc3RtdC0+YWN0 aW9uID09IEFQX1Jlc2V0UHVibGljYXRpb24pCkBAIC0xNzQ1LDYgKzE4NTMsNyBAQCBPcGVuVGFi bGVMaXN0KExpc3QgKnRhYmxlcykKIAkJcHViX3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCXB1Yl9y ZWwtPndoZXJlQ2xhdXNlID0gdC0+d2hlcmVDbGF1c2U7CiAJCXB1Yl9yZWwtPmNvbHVtbnMgPSB0 LT5jb2x1bW5zOworCQlwdWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCXJlbHMgPSBsYXBw ZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIG15cmVs aWQpOwogCkBAIC0xODE3LDYgKzE5MjYsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykK IAogCQkJCS8qIGNoaWxkIGluaGVyaXRzIGNvbHVtbiBsaXN0IGZyb20gcGFyZW50ICovCiAJCQkJ cHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCQkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ ZXhjZXB0OwogCQkJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQkJCXJlbGlkcyA9 IGxhcHBlbmRfb2lkKHJlbGlkcywgY2hpbGRyZWxpZCk7CiAKQEAgLTE4OTIsOCArMjAwMiw2IEBA IFB1YmxpY2F0aW9uQWRkVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3Rf ZXhpc3RzLAogewogCUxpc3RDZWxsICAgKmxjOwogCi0JQXNzZXJ0KCFzdG10IHx8ICFzdG10LT5m b3JfYWxsX3RhYmxlcyk7Ci0KIAlmb3JlYWNoKGxjLCByZWxzKQogCXsKIAkJUHVibGljYXRpb25S ZWxJbmZvICpwdWJfcmVsID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBsZmlyc3QobGMpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAyZGUwZWJhY2VjLi41ZDk3ZWFkZjU0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTYyNzYsNyArMTYyNzYsNyBAQCBBVFByZXBDaGFuZ2VQ ZXJzaXN0ZW5jZShSZWxhdGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICogVU5MT0dHRUQgYXMg VU5MT0dHRUQgdGFibGVzIGNhbid0IGJlIHB1Ymxpc2hlZC4KIAkgKi8KIAlpZiAoIXRvTG9nZ2Vk ICYmCi0JCWxpc3RfbGVuZ3RoKEdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVs aWQocmVsKSkpID4gMCkKKwkJbGlzdF9sZW5ndGgoR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVs YXRpb25HZXRSZWxpZChyZWwpLCBmYWxzZSkpID4gMCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkg ZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlIFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNhdXNlIGl0 IGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIsCkBAIC0xNjQxMyw3ICsxNjQxMyw3IEBAIEFsdGVy VGFibGVOYW1lc3BhY2UoQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpzdG10LCBPaWQgKm9sZHNjaGVt YSkKIAl7CiAJCUxpc3RDZWxsICAgKmxjOwogCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRT Y2hlbWFQdWJsaWNhdGlvbnMobnNwT2lkKTsKLQkJTGlzdAkgICAqcmVsUHViaWRzID0gR2V0UmVs YXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJTGlzdAkgICAqcmVs UHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBm YWxzZSk7CiAKIAkJZm9yZWFjaChsYywgcmVsUHViaWRzKQogCQl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBk N2UxMzY2NmEyLi5iNmVhZDdkYTRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCXRyYW5zZm9ybV9lbGVtZW50X2xpc3QgdHJhbnNm b3JtX3R5cGVfbGlzdAogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcK IAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKLQkJCQlk cm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlzdAorCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29i al9saXN0IGV4Y2VwdF9wdWJfb2JqX2xpc3QKIAogJXR5cGUgPG5vZGU+CW9wdF9yb3V0aW5lX2Jv ZHkKICV0eXBlIDxncm91cGNsYXVzZT4gZ3JvdXBfY2xhdXNlCkBAIC01ODgsNiArNTg4LDcgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1 ZQogJXR5cGUgPHJvbGVzcGVjPiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAl dHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0eXBlIDxw dWJsaWNhdGlvbm9iamVjdHNwZWM+IEV4Y2VwdFB1YmxpY2F0aW9uT2JqU3BlYwogCiAldHlwZSA8 a2V5d29yZD4gdW5yZXNlcnZlZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKICV0eXBl IDxrZXl3b3JkPiBjb2xfbmFtZV9rZXl3b3JkIHJlc2VydmVkX2tleXdvcmQKQEAgLTEwNDEwLDcg KzEwNDExLDcgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0 aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICoKICAqIENSRUFURSBQVUJMSUNBVElPTiBu YW1lIFtXSVRIIG9wdGlvbnNdCiAgKgotICogQ1JFQVRFIFBVQkxJQ0FUSU9OIEZPUiBBTEwgVEFC TEVTIFtXSVRIIG9wdGlvbnNdCisgKiBDUkVBVEUgUFVCTElDQVRJT04gRk9SIEFMTCBUQUJMRVMg W0VYQ0VQVCBUQUJMRSB0YWJsZSBbLCAuLi5dXSBbV0lUSCBvcHRpb25zXQogICoKICAqIENSRUFU RSBQVUJMSUNBVElPTiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9wdGlvbnNdCiAgKgpAQCAt MTA0MzAsMTIgKzEwNDMxLDEzIEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+b3B0 aW9ucyA9ICQ0OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBDUkVBVEUgUFVC TElDQVRJT04gbmFtZSBGT1IgQUxMIFRBQkxFUyBvcHRfZGVmaW5pdGlvbgorCQkJfCBDUkVBVEUg UFVCTElDQVRJT04gbmFtZSBGT1IgQUxMIFRBQkxFUyBleGNlcHRfcHViX29ial9saXN0IG9wdF9k ZWZpbml0aW9uCiAJCQkJewogCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9k ZShDcmVhdGVQdWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4tPnB1Ym5hbWUgPSAkMzsKLQkJCQkJ bi0+b3B0aW9ucyA9ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDg7CisJCQkJCW4tPnB1Ym9iamVj dHMgPSAoTGlzdCAqKSQ3OwogCQkJCQluLT5mb3JfYWxsX3RhYmxlcyA9IHRydWU7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMDQ3Myw2ICsxMDQ3NSw3IEBAIFB1YmxpY2F0aW9u T2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOwogCQkJCQkkJC0+cHVi dGFibGUtPmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0 OworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQl8IEFMTCBUQUJMRVMgSU5fUCBT Q0hFTUEgQ29sSWQKIAkJCQl7CkBAIC0xMDU0OCw2ICsxMDU1MSwzNCBAQCBwdWJfb2JqX2xpc3Q6 CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwog CitFeGNlcHRQdWJsaWNhdGlvbk9ialNwZWM6CisJCQlFWENFUFQgVEFCTEUgcmVsYXRpb25fZXhw cgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkk JC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRTsKKwkJCQkJJCQtPnB1 YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJCQkJCSQkLT5wdWJ0YWJsZS0+ ZXhjZXB0ID0gJDE7CisJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMzsKKwkJCQkJJCQt PmxvY2F0aW9uID0gQDE7CisJCQkJfQorCQkJfCByZWxhdGlvbl9leHByCisJCQkJeworCQkJCQkk JCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0g UFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOworCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9k ZShQdWJsaWNhdGlvblRhYmxlKTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwor CQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAx OworCQkJCX0KKwk7CisKKyBleGNlcHRfcHViX29ial9saXN0OglFeGNlcHRQdWJsaWNhdGlvbk9i alNwZWMKKwkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IGV4Y2VwdF9wdWJfb2Jq X2xpc3QgJywnIEV4Y2VwdFB1YmxpY2F0aW9uT2JqU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgk MSwgJDMpOyB9CisJCQl8ICAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJOworCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIFNFVCAo IG9wdGlvbnMgKQpAQCAtMTA1ODYsNiArMTA2MTcsMTUgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6 CiAJCQkJCW4tPmFjdGlvbiA9IEFQX0FkZE9iamVjdHM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsK IAkJCQl9CisJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgQUREX1AgQUxMIFRBQkxFUyBleGNl cHRfcHViX29ial9saXN0CisJCQkJeworCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqbiA9IG1h a2VOb2RlKEFsdGVyUHVibGljYXRpb25TdG10KTsKKwkJCQkJbi0+cHVibmFtZSA9ICQzOworCQkJ CQluLT5wdWJvYmplY3RzID0gJDc7CisJCQkJCW4tPmZvcl9hbGxfdGFibGVzID0gdHJ1ZTsKKwkJ CQkJbi0+YWN0aW9uID0gQVBfQWRkT2JqZWN0czsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJ fQogCQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIFNFVCBwdWJfb2JqX2xpc3QKIAkJCQl7CiAJ CQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJQdWJsaWNhdGlvblN0 bXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXgg NDJjMDZhZjIzOS4uNjM5NDQ2NmRhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCkBAIC0xOTk2LDcgKzE5OTYsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnko UEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAlpZiAoIWVudHJ5LT5yZXBs aWNhdGVfdmFsaWQpCiAJewogCQlPaWQJCQlzY2hlbWFJZCA9IGdldF9yZWxfbmFtZXNwYWNlKHJl bGlkKTsKLQkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQp OworCQlMaXN0CSAgICpwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgZmFs c2UpOworCQlMaXN0CSAgICpleGNlcHRUYWJsZVB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRp b25zKHJlbGlkLCB0cnVlKTsKIAogCQkvKgogCQkgKiBXZSBkb24ndCBhY3F1aXJlIGEgbG9jayBv biB0aGUgbmFtZXNwYWNlIHN5c3RlbSB0YWJsZSBhcyB3ZSBidWlsZApAQCAtMjA4NSwyMiArMjA4 Niw2IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJl bGF0aW9uKQogCQkJT2lkCQkJcHViX3JlbGlkID0gcmVsaWQ7CiAJCQlpbnQJCQlhbmNlc3Rvcl9s ZXZlbCA9IDA7CiAKLQkJCS8qCi0JCQkgKiBJZiB0aGlzIGlzIGEgRk9SIEFMTCBUQUJMRVMgcHVi bGljYXRpb24sIHBpY2sgdGhlIHBhcnRpdGlvbgotCQkJICogcm9vdCBhbmQgc2V0IHRoZSBhbmNl c3RvciBsZXZlbCBhY2NvcmRpbmdseS4KLQkJCSAqLwotCQkJaWYgKHB1Yi0+YWxsdGFibGVzKQot CQkJewotCQkJCXB1Ymxpc2ggPSB0cnVlOwotCQkJCWlmIChwdWItPnB1YnZpYXJvb3QgJiYgYW1f cGFydGl0aW9uKQotCQkJCXsKLQkJCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlv bl9hbmNlc3RvcnMocmVsaWQpOwotCi0JCQkJCXB1Yl9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3Rv cnMpOwotCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9ycyk7Ci0JCQkJ fQotCQkJfQotCiAJCQlpZiAoIXB1Ymxpc2gpCiAJCQl7CiAJCQkJYm9vbAkJYW5jZXN0b3JfcHVi bGlzaGVkID0gZmFsc2U7CkBAIC0yMTE5LDcgKzIxMDQsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnko UEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAogCQkJCQlhbmNlc3RvciA9 IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViLT5vaWQsCiAJCQkJCQkJCQkJCQkJ CQkgICBhbmNlc3RvcnMsCi0JCQkJCQkJCQkJCQkJCQkgICAmbGV2ZWwpOworCQkJCQkJCQkJCQkJ CQkJICAgJmxldmVsLAorCQkJCQkJCQkJCQkJCQkJICAgcHViLT5hbGx0YWJsZXMpOwogCiAJCQkJ CWlmIChhbmNlc3RvciAhPSBJbnZhbGlkT2lkKQogCQkJCQl7CkBAIC0yMTM0LDYgKzIxMjAsOCBA QCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlv bikKIAogCQkJCWlmIChsaXN0X21lbWJlcl9vaWQocHViaWRzLCBwdWItPm9pZCkgfHwKIAkJCQkJ bGlzdF9tZW1iZXJfb2lkKHNjaGVtYVB1YmlkcywgcHViLT5vaWQpIHx8CisJCQkJCShwdWItPmFs bHRhYmxlcyAmJgorCQkJCQkgIWxpc3RfbWVtYmVyX29pZChleGNlcHRUYWJsZVB1YmlkcywgcHVi LT5vaWQpKSB8fAogCQkJCQlhbmNlc3Rvcl9wdWJsaXNoZWQpCiAJCQkJCXB1Ymxpc2ggPSB0cnVl OwogCQkJfQpAQCAtMjIwOSw2ICsyMTk3LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJbGlzdF9mcmVlKHB1Ymlkcyk7CiAJ CWxpc3RfZnJlZShzY2hlbWFQdWJpZHMpOworCQlsaXN0X2ZyZWUoZXhjZXB0VGFibGVQdWJpZHMp OwogCQlsaXN0X2ZyZWUocmVsX3B1YmxpY2F0aW9ucyk7CiAKIAkJZW50cnktPnJlcGxpY2F0ZV92 YWxpZCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA2MGU3MmY5ZThi Li40NjU5Yzc2NmRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU1NjEsNiAr NTU2MSw4IEBAIHZvaWQKIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVs YXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIHsKIAlMaXN0CSAgICpwdWJvaWRzOwor CUxpc3QJICAgKmFsbHRhYmxlc3B1Ym9pZHM7CisJTGlzdAkgICAqZXhjZXB0cHVib2lkcyA9IE5J TDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlPaWQJCQlzY2hl bWFpZDsKQEAgLTU1OTQsNyArNTU5Niw3IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2Mo UmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAlwdWJkZXNjLT5j b2xzX3ZhbGlkX2Zvcl9kZWxldGUgPSB0cnVlOwogCiAJLyogRmV0Y2ggdGhlIHB1YmxpY2F0aW9u IG1lbWJlcnNoaXAgaW5mby4gKi8KLQlwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo cmVsaWQpOworCXB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgZmFsc2Up OwogCXNjaGVtYWlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOwogCXB1Ym9pZHMg PSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhz Y2hlbWFpZCkpOwogCkBAIC01NjA4LDE0ICs1NjEwLDE5IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNh dGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJ CU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7CiAKIAkJCXB1Ym9pZHMgPSBsaXN0X2Nv bmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCi0JCQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1YmxpY2F0 aW9ucyhhbmNlc3RvcikpOworCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5j ZXN0b3IsIGZhbHNlKSk7CiAJCQlzY2hlbWFpZCA9IGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9y KTsKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCiAJCQkJCQkJ CQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwkJCWV4Y2VwdHB1Ym9pZHMg PSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKGV4Y2VwdHB1Ym9pZHMsCisJCQkJCQkJCQkJCQkgICBH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgdHJ1ZSkpOwogCQl9CiAJfQotCXB1Ym9p ZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0 aW9ucygpKTsKIAorCWFsbHRhYmxlc3B1Ym9pZHMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMo KTsKKwlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAorCQkJCQkJCQkJ IGxpc3RfZGlmZmVyZW5jZV9vaWQoYWxsdGFibGVzcHVib2lkcywKKwkJCQkJCQkJCQkJCQkJIGV4 Y2VwdHB1Ym9pZHMpKTsKIAlmb3JlYWNoKGxjLCBwdWJvaWRzKQogCXsKIAkJT2lkCQkJcHViaWQg PSBsZmlyc3Rfb2lkKGxjKTsKQEAgLTU2NDQsNyArNTY1MSw3IEBAIFJlbGF0aW9uQnVpbGRQdWJs aWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykK IAkJaWYgKCFwdWJmb3JtLT5wdWJhbGx0YWJsZXMgJiYKIAkJCShwdWJmb3JtLT5wdWJ1cGRhdGUg fHwgcHViZm9ybS0+cHViZGVsZXRlKSAmJgogCQkJcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29s dW1uKHB1YmlkLCByZWxhdGlvbiwgYW5jZXN0b3JzLAotCQkJCQkJCQkJCSAgIHB1YmZvcm0tPnB1 YnZpYXJvb3QpKQorCQkJCQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZpYXJvb3QsIHB1YmZvcm0tPnB1 YmFsbHRhYmxlcykpCiAJCXsKIAkJCWlmIChwdWJmb3JtLT5wdWJ1cGRhdGUpCiAJCQkJcHViZGVz Yy0+cmZfdmFsaWRfZm9yX3VwZGF0ZSA9IGZhbHNlOwpAQCAtNTY2MSw3ICs1NjY4LDcgQEAgUmVs YXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25E ZXNjICpwdWJkZXNjKQogCQlpZiAoIXB1YmZvcm0tPnB1YmFsbHRhYmxlcyAmJgogCQkJKHB1YmZv cm0tPnB1YnVwZGF0ZSB8fCBwdWJmb3JtLT5wdWJkZWxldGUpICYmCiAJCQlwdWJfY29sbGlzdF9j b250YWluc19pbnZhbGlkX2NvbHVtbihwdWJpZCwgcmVsYXRpb24sIGFuY2VzdG9ycywKLQkJCQkJ CQkJCQkJCXB1YmZvcm0tPnB1YnZpYXJvb3QpKQorCQkJCQkJCQkJCQkJcHViZm9ybS0+cHVidmlh cm9vdCwgcHViZm9ybS0+cHViYWxsdGFibGVzKSkKIAkJewogCQkJaWYgKHB1YmZvcm0tPnB1YnVw ZGF0ZSkKIAkJCQlwdWJkZXNjLT5jb2xzX3ZhbGlkX2Zvcl91cGRhdGUgPSBmYWxzZTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCmluZGV4IDdjYzljNzJlNDkuLjRlYzRjMzVjYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTI3LDYg KzEyNyw4IEBAIHN0YXRpYyBTaW1wbGVPaWRMaXN0IGZvcmVpZ25fc2VydmVyc19pbmNsdWRlX29p ZHMgPSB7TlVMTCwgTlVMTH07CiBzdGF0aWMgU2ltcGxlU3RyaW5nTGlzdCBleHRlbnNpb25faW5j bHVkZV9wYXR0ZXJucyA9IHtOVUxMLCBOVUxMfTsKIHN0YXRpYyBTaW1wbGVPaWRMaXN0IGV4dGVu c2lvbl9pbmNsdWRlX29pZHMgPSB7TlVMTCwgTlVMTH07CiAKK3N0YXRpYyBTaW1wbGVQdHJMaXN0 IGV4Y2VwdGluZm8gPSB7TlVMTCwgTlVMTH07CisKIHN0YXRpYyBjb25zdCBDYXRhbG9nSWQgbmls Q2F0YWxvZ0lkID0gezAsIDB9OwogCiAvKiBvdmVycmlkZSBmb3Igc3RhbmRhcmQgZXh0cmFfZmxv YXRfZGlnaXRzIHNldHRpbmcgKi8KQEAgLTM5ODAsOCArMzk4MiwzNCBAQCBkdW1wUHVibGljYXRp b24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKQogCQkJCQkg IHFwdWJuYW1lKTsKIAogCWlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJeworCQlTaW1wbGVQ dHJMaXN0Q2VsbCAqY2VsbDsKKwkJYm9vbCBmaXJzdCA9IHRydWU7CiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgVEFCTEVTIik7CiAKKwkJLyogSW5jbHVkZSBleGNlcHRp b24gdGFibGVzIGlmIHRoZSBwdWJsaWNhdGlvbiBoYXMgZXhjZXB0IHRhYmxlcyAqLworCQlmb3Ig KGNlbGwgPSBleGNlcHRpbmZvLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7CisJ CQlQdWJsaWNhdGlvblJlbEluZm8gKnB1YnJpbmZvID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBj ZWxsLT5wdHI7CisJCQlQdWJsaWNhdGlvbkluZm8gKnJlbHB1YmluZm8gPSBwdWJyaW5mby0+cHVi bGljYXRpb247CisJCQlUYWJsZUluZm8gICp0YmluZm87CisKKwkJCWlmIChwdWJpbmZvID09IHJl bHB1YmluZm8pCisJCQl7CisJCQkJdGJpbmZvID0gcHVicmluZm8tPnB1YnRhYmxlOworCisJCQkJ aWYgKGZpcnN0KQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRVhD RVBUIFRBQkxFIE9OTFkiKTsKKwkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJCQl9CisJCQkJZWxzZQor CQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisJCQkJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksICIgJXMiLCBmbXRRdWFsaWZpZWREdW1wYWJsZSh0YmluZm8pKTsKKwkJCX0K KwkJfQorCX0KKwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIFdJVEggKHB1Ymxpc2gg PSAnIik7CiAJaWYgKHB1YmluZm8tPnB1Ymluc2VydCkKIAl7CkBAIC00MTUxLDYgKzQxNzksNyBA QCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1td LCBpbnQgbnVtVGFibGVzKQogCWludAkJCWlfcHJyZWxpZDsKIAlpbnQJCQlpX3BycmVscXVhbDsK IAlpbnQJCQlpX3ByYXR0cnM7CisJaW50CQkJaV9wcmV4Y2VwdDsKIAlpbnQJCQlpLAogCQkJCWos CiAJCQkJbnR1cHM7CkBAIC00MTYyLDggKzQxOTEsMTcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAogCS8q IENvbGxlY3QgYWxsIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KIAlpZiAoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwKKwkJCQkJCQkiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsXG4iKTsK KworCQkvKiBGSVhNRTogMTUwMDAwIHNob3VsZCBiZSBjaGFuZ2VkIHRvIDE2MDAwMCBsYXRlciBm b3IgUEcxNi4gKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcHJleGNlcHQsXG4iKTsKKwkJZWxzZQorCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgcHJleGNlcHQsXG4iKTsKKwogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lk LCBwcnB1YmlkLCBwcnJlbGlkLCAiCiAJCQkJCQkJICJwZ19jYXRhbG9nLnBnX2dldF9leHByKHBy cXVhbCwgcHJyZWxpZCkgQVMgcHJyZWxxdWFsLCAiCiAJCQkJCQkJICIoQ0FTRVxuIgogCQkJCQkJ CSAiICBXSEVOIHByLnByYXR0cnMgSVMgTk9UIE5VTEwgVEhFTlxuIgpAQCAtNDE3NCw2ICs0MjEy LDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGlu Zm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkgIiAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIu cHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tzXSlcbiIKIAkJCQkJCQkgIiAgRUxTRSBOVUxM IEVORCkgcHJhdHRycyAiCiAJCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByIik7CisJfQogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJ CQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwgIgpAQCAtNDE4OSw2 ICs0MjI4LDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZv IHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpX3BycmVsaWQgPSBQUWZudW1iZXIocmVzLCAi cHJyZWxpZCIpOwogCWlfcHJyZWxxdWFsID0gUFFmbnVtYmVyKHJlcywgInBycmVscXVhbCIpOwog CWlfcHJhdHRycyA9IFBRZm51bWJlcihyZXMsICJwcmF0dHJzIik7CisJaV9wcmV4Y2VwdCA9IFBR Zm51bWJlcihyZXMsICJwcmV4Y2VwdCIpOwogCiAJLyogdGhpcyBhbGxvY2F0aW9uIG1heSBiZSBt b3JlIHRoYW4gd2UgbmVlZCAqLwogCXB1YnJpbmZvID0gcGdfbWFsbG9jKG50dXBzICogc2l6ZW9m KFB1YmxpY2F0aW9uUmVsSW5mbykpOwpAQCAtNDIwMCw2ICs0MjQwLDcgQEAgZ2V0UHVibGljYXRp b25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxl cykKIAkJT2lkCQkJcHJyZWxpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9wcnJlbGlk KSk7CiAJCVB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbzsKIAkJVGFibGVJbmZvICAqdGJpbmZvOwor CQljaGFyICAgICAgICpwcmV4Y2VwdCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9w cmV4Y2VwdCkpOwogCiAJCS8qCiAJCSAqIElnbm9yZSBhbnkgZW50cmllcyBmb3Igd2hpY2ggd2Ug YXJlbid0IGludGVyZXN0ZWQgaW4gZWl0aGVyIHRoZQpAQCAtNDIyMCw3ICs0MjYxLDExIEBAIGdl dFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGlu dCBudW1UYWJsZXMpCiAJCQljb250aW51ZTsKIAogCQkvKiBPSywgbWFrZSBhIER1bXBhYmxlT2Jq ZWN0IGZvciB0aGlzIHJlbGF0aW9uc2hpcCAqLwotCQlwdWJyaW5mb1tqXS5kb2JqLm9ialR5cGUg PSBET19QVUJMSUNBVElPTl9SRUw7CisJCWlmIChzdHJjbXAocHJleGNlcHQsICJmIikgPT0gMCkK KwkJCXB1YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERPX1BVQkxJQ0FUSU9OX1JFTDsKKwkJZWxz ZQorCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05fRVhDRVBUX1JF TDsKKwogCQlwdWJyaW5mb1tqXS5kb2JqLmNhdElkLnRhYmxlb2lkID0KIAkJCWF0b29pZChQUWdl dHZhbHVlKHJlcywgaSwgaV90YWJsZW9pZCkpOwogCQlwdWJyaW5mb1tqXS5kb2JqLmNhdElkLm9p ZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9vaWQpKTsKQEAgLTQyNTksNiArNDMwNCw5 IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZv W10sIGludCBudW1UYWJsZXMpCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBp dCAqLwogCQlzZWxlY3REdW1wYWJsZVB1YmxpY2F0aW9uT2JqZWN0KCYocHVicmluZm9bal0uZG9i aiksIGZvdXQpOwogCisJCWlmIChzdHJjbXAocHJleGNlcHQsICJ0IikgPT0gMCkKKwkJCXNpbXBs ZV9wdHJfbGlzdF9hcHBlbmQoJmV4Y2VwdGluZm8sICZwdWJyaW5mb1tqXSk7CisKIAkJaisrOwog CX0KIApAQCAtNDMzMCw4ICs0Mzc4LDExIEBAIGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUg KmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8pCiAKIAlxdWVyeSA9IGNy ZWF0ZVBRRXhwQnVmZmVyKCk7CiAKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFMVEVSIFBV QkxJQ0FUSU9OICVzIEFERCBUQUJMRSBPTkxZIiwKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwg IkFMVEVSIFBVQkxJQ0FUSU9OICVzIEFERCAiLAogCQkJCQkgIGZtdElkKHB1YmluZm8tPmRvYmou bmFtZSkpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJUQUJMRSBPTkxZIik7CisK IAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAlcyIsCiAJCQkJCSAgZm10UXVhbGlmaWVkRHVt cGFibGUodGJpbmZvKSk7CiAKQEAgLTk5MzYsNiArOTk4Nyw5IEBAIGR1bXBEdW1wYWJsZU9iamVj dChBcmNoaXZlICpmb3V0LCBEdW1wYWJsZU9iamVjdCAqZG9iaikKIAkJY2FzZSBET19QVUJMSUNB VElPTjoKIAkJCWR1bXBQdWJsaWNhdGlvbihmb3V0LCAoY29uc3QgUHVibGljYXRpb25JbmZvICop IGRvYmopOwogCQkJYnJlYWs7CisJCWNhc2UgRE9fUFVCTElDQVRJT05fRVhDRVBUX1JFTDoKKwkJ CS8qIHdpbGwgYmUgZHVtcGVkIGluIGR1bXBQdWJsaWNhdGlvbiAqLworCQkJYnJlYWs7CiAJCWNh c2UgRE9fUFVCTElDQVRJT05fUkVMOgogCQkJZHVtcFB1YmxpY2F0aW9uVGFibGUoZm91dCwgKGNv bnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOwpAQCAtMTc4NjksNiAr MTc5MjMsNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2llcyhEdW1wYWJsZU9iamVjdCAqKmRvYmpz LCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fREVGQVVMVF9BQ0w6CiAJCQljYXNlIERPX1BPTElD WToKIAkJCWNhc2UgRE9fUFVCTElDQVRJT046CisJCQljYXNlIERPX1BVQkxJQ0FUSU9OX0VYQ0VQ VF9SRUw6CiAJCQljYXNlIERPX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCWNhc2UgRE9fUFVCTElDQVRJ T05fVEFCTEVfSU5fU0NIRU1BOgogCQkJY2FzZSBET19TVUJTQ1JJUFRJT046CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApp bmRleCAxZDIxYzI5MDZmLi4wN2E1MGVjZTY4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTgwLDYgKzgwLDcg QEAgdHlwZWRlZiBlbnVtCiAJRE9fUkVGUkVTSF9NQVRWSUVXLAogCURPX1BPTElDWSwKIAlET19Q VUJMSUNBVElPTiwKKwlET19QVUJMSUNBVElPTl9FWENFUFRfUkVMLAogCURPX1BVQkxJQ0FUSU9O X1JFTCwKIAlET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEsCiAJRE9fU1VCU0NSSVBUSU9O CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcF9zb3J0LmMKaW5kZXggNWRlMzI0MWViNC4uYTY1OTVmMjVhNiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wX3NvcnQuYwpAQCAtOTAsNiArOTAsNyBAQCBlbnVtIGRiT2JqZWN0VHlwZVByaW9y aXRpZXMKIAlQUklPX0ZLX0NPTlNUUkFJTlQsCiAJUFJJT19QT0xJQ1ksCiAJUFJJT19QVUJMSUNB VElPTiwKKwlQUklPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUwsCiAJUFJJT19QVUJMSUNBVElPTl9S RUwsCiAJUFJJT19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEsCiAJUFJJT19TVUJTQ1JJUFRJ T04sCkBAIC0xNDQsNiArMTQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBkYk9iamVjdFR5cGVQcmlv cml0eVtdID0KIAlQUklPX1JFRlJFU0hfTUFUVklFVywJCS8qIERPX1JFRlJFU0hfTUFUVklFVyAq LwogCVBSSU9fUE9MSUNZLAkJCQkvKiBET19QT0xJQ1kgKi8KIAlQUklPX1BVQkxJQ0FUSU9OLAkJ CS8qIERPX1BVQkxJQ0FUSU9OICovCisJUFJJT19QVUJMSUNBVElPTl9FWENFUFRfUkVMLAkvKiBE T19QVUJMSUNBVElPTl9FWENFUFRfUkVMICovCiAJUFJJT19QVUJMSUNBVElPTl9SRUwsCQkvKiBE T19QVUJMSUNBVElPTl9SRUwgKi8KIAlQUklPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQSwJ LyogRE9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BICovCiAJUFJJT19TVUJTQ1JJUFRJT04J CQkvKiBET19TVUJTQ1JJUFRJT04gKi8KQEAgLTE0ODMsNiArMTQ4NSwxMSBAQCBkZXNjcmliZUR1 bXBhYmxlT2JqZWN0KER1bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUp CiAJCQkJCSAiUFVCTElDQVRJT04gKElEICVkIE9JRCAldSkiLAogCQkJCQkgb2JqLT5kdW1wSWQs IG9iai0+Y2F0SWQub2lkKTsKIAkJCXJldHVybjsKKwkJY2FzZSBET19QVUJMSUNBVElPTl9FWENF UFRfUkVMOgorCQkJc25wcmludGYoYnVmLCBidWZzaXplLAorCQkJCQkgIlBVQkxJQ0FUSU9OIEVY Q0VQVCBUQUJMRSAoSUQgJWQgT0lEICV1KSIsCisJCQkJCSBvYmotPmR1bXBJZCwgb2JqLT5jYXRJ ZC5vaWQpOworCQkJcmV0dXJuOwogCQljYXNlIERPX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCXNucHJp bnRmKGJ1ZiwgYnVmc2l6ZSwKIAkJCQkJICJQVUJMSUNBVElPTiBUQUJMRSAoSUQgJWQgT0lEICV1 KSIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDFmMDg3MTZmNjkuLjEzYTNiM2Y4NzUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yNDU0LDYgKzI0NTQsMTggQEAgbXkgJXRl c3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwg fSwKIAl9LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI1JyA9PiB7CisJCWNyZWF0ZV9vcmRl ciA9PiA1MCwKKwkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgUFVCTElDQVRJT04gcHViNSBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGU7JywKKwkJcmVnZXhw ID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUgV0lUSCAocHVibGlzaCA9ICdpbnNl cnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAl ZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCQl1bmxpa2UgPT4geworCQkJ ZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGUgICAg ICAgPT4gMSwKKwkJfSwKKwl9LAogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJ Y3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJ T04gc3ViMQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYwppbmRleCAxYTVkOTI0YTIzLi5mMGVmNDFjYjY4IDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAt Mjk1MCwxNyArMjk1MCwzNCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpz Y2hlbWFuYW1lLAogCQkJCQkJCQkgICIgICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJl bGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCQkgICIgICAgICAgIEVMU0Ug TlVMTCBFTkQpICIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBc biIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHBy IE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVSRSBw ci5wcnJlbGlkID0gJyVzJ1xuIgotCQkJCQkJCQkgICJVTklPTlxuIgorCQkJCQkJCQkgICIJCUpP SU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1Ymlk XG4iCisJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBw ci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnIiwKKwkJCQkJ CQkJICBvaWQsIG9pZCwgb2lkKTsKKworCQkJCS8qIEZJWE1FOiAxNTAwMDAgc2hvdWxkIGJlIGNo YW5nZWQgdG8gMTYwMDAwIGxhdGVyIGZvciBQRzE2LiAqLworCQkJCWlmIChwc2V0LnN2ZXJzaW9u ID49IDE1MDAwMCkKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiBBTkQgcHIucHJl eGNlcHQgPSAnZidcbiIpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlVOSU9OXG4i CiAJCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCiAJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4i CiAJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbiBwXG4iCi0JCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFORCBw Z19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCi0JCQkJCQkJCSAg Ik9SREVSIEJZIDE7IiwKLQkJCQkJCQkJICBvaWQsIG9pZCwgb2lkLCBvaWQpOworCQkJCQkJCQkg ICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJs aXNoYWJsZSgnJXMnKVxuIiwKKwkJCQkJCQkJICBvaWQpOworCisJCQkJLyogRklYTUU6IDE1MDAw MCBzaG91bGQgYmUgY2hhbmdlZCB0byAxNjAwMDAgbGF0ZXIgZm9yIFBHMTYuICovCisJCQkJaWYg KHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJCQkJICAiCQlBTkQgTk9UIEVYSVNUUyAoU0VMRUNUIDFcbiIKKwkJCQkJCQkJCSAgIgkJ CQkJCQlGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJCQkJCQkJCQkg ICIJCQkJCQkJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwY1xuIgorCQkJCQkJCQkJICAiCSAg CSAJCQkJCQlPTiBwci5wcnJlbGlkID0gcGMub2lkXG4iCisJCQkJCQkJCQkgICIJCQkJCQkJV0hF UkUgcHIucHJyZWxpZCA9ICclcycgQU5EIHByLnBycHViaWQgPSBwLm9pZClcbiIsCisJCQkJCQkJ CQkgIG9pZCk7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMTsi KTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTYzMDIsOCArNjMxOSwxMyBAQCBkZXNjcmliZVB1 YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCSAgIiAgICAgcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKIAkJCQkJCQkgICJXSEVSRSBjLnJlbG5hbWVzcGFj ZSA9IG4ub2lkXG4iCiAJCQkJCQkJICAiICBBTkQgYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJ CQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydcbiIKLQkJCQkJCQkgICJPUkRFUiBCWSAxLDIi LCBwdWJpZCk7CisJCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydcbiIsIHB1YmlkKTsK KworCQkJLyogRklYTUU6IDE1MDAwMCBzaG91bGQgYmUgY2hhbmdlZCB0byAxNjAwMDAgbGF0ZXIg Zm9yIFBHMTYuICovCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwgIiAgQU5EIHByLnByZXhjZXB0ID0gJ2YnXG4iKTsKKworCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIk9SREVSIEJZIDEsMiIpOwogCQkJaWYgKCFhZGRGb290ZXJU b1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6IiksIGZhbHNlLCAmY29udCkpCiAJCQkJ Z290byBlcnJvcl9yZXR1cm47CiAKQEAgLTYzMjIsNiArNjM0NCwyMiBAQCBkZXNjcmliZVB1Ymxp Y2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJfQogCQl9CiAKKwkJLyogRklYTUU6IDE1 MDAwMCBzaG91bGQgYmUgY2hhbmdlZCB0byAxNjAwMDAgbGF0ZXIgZm9yIFBHMTYuICovCisJCWlm IChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKKwkJeworCQkJLyogR2V0IHRoZSBleGNsdWRlZCB0 YWJsZXMgZm9yIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb24gKi8KKwkJCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIGNvbmNhdChjLnJlbG5hbWVzcGFjZTo6cmVnbmFt ZXNwYWNlLCAnLicsIGMucmVsbmFtZSlcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgY1xuIgorCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X3JlbCBwciBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkgICJXSEVSRSBwci5wcnB1 YmlkID0gJyVzJ1xuIgorCQkJCQkJCSAgIiAgQU5EIHByLnByZXhjZXB0ID0gJ3QnXG4iCisJCQkJ CQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlv bkRlc2MoJmJ1ZiwgIkV4Y2VwdCB0YWJsZXM6IiwKKwkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQor CQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQl9CisKIAkJcHJpbnRUYWJsZSgmY29udCwgcHNldC5x dWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOwogCQlwcmludFRhYmxlQ2xlYW51cCgmY29u dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuYwppbmRleCA2MmVjYzNjZGFiLi4zY2I1MTJkMTJjIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5jCkBAIC0xODIyLDkgKzE4MjIsMTMgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNo YXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiQUREIiwgIkRS T1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlJFU0VUIiwgIlNFVCIpOwogCS8qIEFMVEVS IFBVQkxJQ0FUSU9OIDxuYW1lPiBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIikpCi0JCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJM RVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4g U0NIRU1BIiwgIkFMTCBUQUJMRVMiLCAiVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIkFMTCIsICJUQUJMRVMiKSkKKwkJ Q09NUExFVEVfV0lUSCgiRVhDRVBUIFRBQkxFIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxTRVQiLCAiVEFCTEUiKSB8fAotCQkJIChI ZWFkTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxTRVQiLCAi VEFCTEUiKSAmJgorCQkJIE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJBREQiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiKSB8fAorCQkJICgoSGVh ZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRB QkxFIikgfHwKKwkJCSAgSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hB bnksICJBREQiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiKSkgJiYKIAkJCSAg ZW5kc193aXRoKHByZXZfd2QsICcsJykpKQogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShR dWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwogCkBAIC0yOTg2LDcgKzI5OTAsOSBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYg KE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIp KQogCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiLCAiVEFCTEVTIElOIFNDSEVNQSIpOwogCWVsc2Ug aWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFM TCIsICJUQUJMRVMiKSkKLQkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIiwgIldJVEggKCIpOwor CQlDT01QTEVURV9XSVRIKCJJTiBTQ0hFTUEiLCAiV0lUSCAoIiwgIkVYQ0VQVCBUQUJMRSIpOwor CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9S IiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7 CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJG T1IiLCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlD T01QTEVURV9XSVRIKCJXSEVSRSAoIiwgIldJVEggKCIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUg UFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJMRSIgd2l0aCAiPHRhYmxlPiwgLi4uIiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDQ4MjA1YmE0MjkuLmI2YTdlNTNiZjgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTEwOCwxMSArMTA4LDEyIEBA IHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbwogCVJlbGF0aW9uCXJlbGF0aW9uOwog CU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCUxpc3QJICAgKmNvbHVtbnM7CisJYm9vbAkJZXhjZXB0 OwogfSBQdWJsaWNhdGlvblJlbEluZm87CiAKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGlj YXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRpb25CeU5h bWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKLWV4dGVybiBMaXN0ICpH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIExpc3QgKkdldFJlbGF0 aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCwgYm9vbCBiZXhjZXB0KTsKIAogLyotLS0tLS0tLS0K ICAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRvcHQgcGFyYW1ldGVyIG9mIEdldFJlbGF0 aW9uUHVibGljYXRpb25zKCksCkBAIC0xMzIsNyArMTMzLDcgQEAgdHlwZWRlZiBlbnVtIFB1Ymxp Y2F0aW9uUGFydE9wdAogCiBleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lk IHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3QgKkdl dEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQ dWJsaWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpOworZXh0ZXJuIExpc3QgKkdldEFs bFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgYm9vbCBwdWJ2aWFyb290KTsK IGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBM aXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpH ZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsCkBAIC0xNDMsNyArMTQ0 LDcgQEAgZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpy ZXN1bHQsCiAJCQkJCQkJCQkJCVB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKIAkJCQkJ CQkJCQkJT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNh dGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCi0JCQkJCQkJCQkJCWludCAqYW5jZXN0 b3JfbGV2ZWwpOworCQkJCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsLCBib29sIHB1YmFsbHRh Ymxlcyk7CiAKIGV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJl bCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCmluZGV4IGVjZDM3MzlmMWEuLjU5NWM4 N2M1NDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVs LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAtMzEs NiArMzEsNyBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVs UmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcHJwdWJpZCBCS0lf TE9PS1VQKHBnX3B1YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCU9p ZAkJCXBycmVsaWQgQktJX0xPT0tVUChwZ19jbGFzcyk7CS8qIE9pZCBvZiB0aGUgcmVsYXRpb24g Ki8KKwlib29sCQlwcmV4Y2VwdCBCS0lfREVGQVVMVChmKTsJLyogZXhjZXB0IHRoZSByZWxhdGlv biAqLwogCiAjaWZkZWYJQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRz IHN0YXJ0IGhlcmUgKi8KIAlwZ19ub2RlX3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKaW5kZXggNTdkZjNmYzFlMy4u YTUxNWNkYjgwMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKQEAgLTMy LDggKzMyLDggQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJQdWJsaWNhdGlvbk93bmVyKGNv bnN0IGNoYXIgKm5hbWUsIE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEFsdGVyUHVibGlj YXRpb25Pd25lcl9vaWQoT2lkIHB1YmlkLCBPaWQgbmV3T3duZXJJZCk7CiBleHRlcm4gdm9pZCBJ bnZhbGlkYXRlUHVibGljYXRpb25SZWxzKExpc3QgKnJlbGlkcyk7CiBleHRlcm4gYm9vbCBwdWJf cmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwK LQkJCQkJCQkJCQkgICBMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9vdCk7CisJCQkJCQkJ CQkJICAgTGlzdCAqYW5jZXN0b3JzLCBib29sIHB1YnZpYXJvb3QsIGJvb2wgYWxsdGFibGVzKTsK IGV4dGVybiBib29sIHB1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJp ZCwgUmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJCQlMaXN0ICphbmNlc3RvcnMsIGJvb2wg cHVidmlhcm9vdCk7CisJCQkJCQkJCQkJCQlMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9v dCwgYm9vbCBhbGx0YWJsZXMpOwogCiAjZW5kaWYJCQkJCQkJLyogUFVCTElDQVRJT05DTURTX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA5NzI2ZmRhZTU4Li4xMzRhZDA1OTM2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zOTk5LDYgKzM5OTksNyBAQCB0eXBlZGVmIHN0cnVjdCBQ dWJsaWNhdGlvblRhYmxlCiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBi ZSBwdWJsaXNoZWQgKi8KIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMg Ki8KIAlMaXN0CSAgICpjb2x1bW5zOwkJLyogTGlzdCBvZiBjb2x1bW5zIGluIGEgcHVibGljYXRp b24gdGFibGUgKi8KKwlib29sCQlleGNlcHQ7CQkJLyogZXhjZXB0IHJlbGF0aW9uICovCiB9IFB1 YmxpY2F0aW9uVGFibGU7CiAKIC8qCkBAIC00MDA3LDYgKzQwMDgsNyBAQCB0eXBlZGVmIHN0cnVj dCBQdWJsaWNhdGlvblRhYmxlCiB0eXBlZGVmIGVudW0gUHVibGljYXRpb25PYmpTcGVjVHlwZQog ewogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFLAkJLyogQSB0YWJsZSAqLworCVBVQkxJQ0FUSU9OT0JK X0VYQ0VQVF9UQUJMRSwJCS8qIEFuIEV4Y2VwdCB0YWJsZSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RB QkxFU19JTl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gc2NoZW1hICovCiAJUFVCTElDQVRJT05P QkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gZmlyc3QgZWxlbWVudCBv ZgogCQkJCQkJCQkJCQkgKiBzZWFyY2hfcGF0aCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dAppbmRleCBmODUyN2RhZTAyLi45NGFkYjJiODczIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMTY1LDggKzE2NSwxOSBAQCBQ dWJsaWNhdGlvbnM6CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAorU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSB0 ZXN0cHViX3RibDE7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworXGRScCsgdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRl c3RwdWJfdGJsMSIKKwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVt YTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFi bGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTsK IENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKIENSRUFURSBUQUJMRSB0ZXN0cHVi X3RibDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOwpAQCAtMTY1OSw2ICsxNjcwLDEwIEBAIENSRUFURSBUQUJMRSBw dWJfc2NoMS50YmwxIChhIGludCk7CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBGT1IgQUxMIFRBQkxFUzsKIFJFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CistLSBjYW4ndCBhZGQgZXhjZXB0IHRhYmxlIHRvICdGT1Ig QUxMIFRBQkxFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQg QUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRibDE7CitFUlJPUjogIFNldHRp bmcgQUxMIFRBQkxFUyByZXF1aXJlcyBwdWJsaWNhdGlvbiAidGVzdHB1Yl9yZXNldCIgdG8gaGF2 ZSBkZWZhdWx0IHZhbHVlcworSElOVDogIEVpdGhlciB0aGUgcHVibGljYXRpb24gaGFzIHRhYmxl cy9zY2hlbWFzIGFzc29jaWF0ZWQgb3IgZG9lcyBub3QgaGF2ZSBkZWZhdWx0IHB1YmxpY2F0aW9u IG9wdGlvbnMgb3IgQUxMIFRBQkxFUyBvcHRpb24gaXMgc2V0LgogLS0gVmVyaWZ5IHRoYXQgJ0FM TCBUQUJMRVMnIGZsYWcgaXMgcmVzZXQKIFxkUnArIHRlc3RwdWJfcmVzZXQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKQEAgLTE2NzUs OSArMTY5MCwyMyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKLUFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgQUREIFRBQkxFIHB1Yl9zY2gxLnRibDEsIEFMTCBUQUJMRVMgSU4gU0NIRU1B IHB1YmxpYzsKLS0tIFZlcmlmeSB0aGF0IHRhYmxlcyBhbmQgc2NoZW1hcyBhc3NvY2lhdGVkIHdp dGggdGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9wcGVkCi0tLSBhZnRlciBSRVNFVAorLS0gc2hvdWxk IHdvcmsgbm93IGFmdGVyIHJlc2V0dGluZyB0aGUgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRi bDE7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3NjaDEudGJsMSIKKwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfcmVzZXQgQUREIFRBQkxFIHB1Yl9zY2gxLnRibDE7CistLSBjYW4ndCBhZGQgZXhj ZXB0IHRhYmxlIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBwdWJfc2NoMS50YmwxOwor RVJST1I6ICBTZXR0aW5nIEFMTCBUQUJMRVMgcmVxdWlyZXMgcHVibGljYXRpb24gInRlc3RwdWJf cmVzZXQiIHRvIGhhdmUgZGVmYXVsdCB2YWx1ZXMKK0hJTlQ6ICBFaXRoZXIgdGhlIHB1YmxpY2F0 aW9uIGhhcyB0YWJsZXMvc2NoZW1hcyBhc3NvY2lhdGVkIG9yIGRvZXMgbm90IGhhdmUgZGVmYXVs dCBwdWJsaWNhdGlvbiBvcHRpb25zIG9yIEFMTCBUQUJMRVMgb3B0aW9uIGlzIHNldC4KKy0tIFZl cmlmeSB0aGF0IHRhYmxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9w cGVkIGFmdGVyIFJFU0VUCiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CiAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IApAQCAtMTY4NSw2ICsxNzE0LDI2IEBAIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfcmVzZXQgQUREIFRBQkxFIHB1Yl9zY2gxLnRibDEsIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHB1CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi X3NjaDEudGJsMSIKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xk UnArIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisoMSByb3cpCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQURE IEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKKy0tIGNhbid0IGFkZCBleGNlcHQgdGFibGUg dG8gJ0ZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRi bDE7CitFUlJPUjogIFNldHRpbmcgQUxMIFRBQkxFUyByZXF1aXJlcyBwdWJsaWNhdGlvbiAidGVz dHB1Yl9yZXNldCIgdG8gaGF2ZSBkZWZhdWx0IHZhbHVlcworSElOVDogIEVpdGhlciB0aGUgcHVi bGljYXRpb24gaGFzIHRhYmxlcy9zY2hlbWFzIGFzc29jaWF0ZWQgb3IgZG9lcyBub3QgaGF2ZSBk ZWZhdWx0IHB1YmxpY2F0aW9uIG9wdGlvbnMgb3IgQUxMIFRBQkxFUyBvcHRpb24gaXMgc2V0Lgor LS0gVmVyaWZ5IHRoYXQgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uIGFy ZSBkcm9wcGVkIGFmdGVyIFJFU0VUCitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoK ICAgICAicHVibGljIgogCkBAIC0xNjk2LDEzICsxNzQ1LDQwIEBAIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKICgxIHJv dykKIAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBTRVQgKFBVQkxJU0ggPSAnJywg UFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgPSAndHJ1ZScpOwotLS0gVmVyaWZ5IHRoYXQgcHVi bGlzaCBvcHRpb25zIGFuZCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBvcHRpb24gYXJlIHJl c2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFNFVCAoUFVCTElTSCA9ICcnKTsK Ky0tIGNhbid0IGFkZCBleGNlcHQgdGFibGUgd2hlbiB0aGUgcHVibGljYXRpb24gb3B0aW9ucyBk b2VzIG5vdCBoYXZlIGRlZmF1bHQKKy0tIHZhbHVlcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKK0VSUk9S OiAgU2V0dGluZyBBTEwgVEFCTEVTIHJlcXVpcmVzIHB1YmxpY2F0aW9uICJ0ZXN0cHViX3Jlc2V0 IiB0byBoYXZlIGRlZmF1bHQgdmFsdWVzCitISU5UOiAgRWl0aGVyIHRoZSBwdWJsaWNhdGlvbiBo YXMgdGFibGVzL3NjaGVtYXMgYXNzb2NpYXRlZCBvciBkb2VzIG5vdCBoYXZlIGRlZmF1bHQgcHVi bGljYXRpb24gb3B0aW9ucyBvciBBTEwgVEFCTEVTIG9wdGlvbiBpcyBzZXQuCistLSBWZXJpZnkg dGhhdCBwdWJsaXNoIG9wdGlvbiBpcyByZXNldAorXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKygxIHJvdykKKworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVz ZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisoMSByb3cp CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIX1ZJQV9QQVJU SVRJT05fUk9PVCA9ICd0cnVlJyk7CistLSBjYW4ndCBhZGQgZXhjZXB0IHRhYmxlIHdoZW4gcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qgb3B0aW9uIGRvZXMgbm90CistLSBoYXZlIGRlZmF1bHQg dmFsdWUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFIHB1Yl9zY2gxLnRibDE7CitFUlJPUjogIFNldHRpbmcgQUxMIFRBQkxFUyByZXF1 aXJlcyBwdWJsaWNhdGlvbiAidGVzdHB1Yl9yZXNldCIgdG8gaGF2ZSBkZWZhdWx0IHZhbHVlcwor SElOVDogIEVpdGhlciB0aGUgcHVibGljYXRpb24gaGFzIHRhYmxlcy9zY2hlbWFzIGFzc29jaWF0 ZWQgb3IgZG9lcyBub3QgaGF2ZSBkZWZhdWx0IHB1YmxpY2F0aW9uIG9wdGlvbnMgb3IgQUxMIFRB QkxFUyBvcHRpb24gaXMgc2V0LgorLS0gVmVyaWZ5IHRoYXQgcHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3Qgb3B0aW9uIGlzIHJlc2V0CiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CiAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgdAorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCB0CiAoMSByb3cpCiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggMDYxMjMxNTQ4OC4uMzhkYzg4 NzI2MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtODksOCArODksMTQg QEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJF IHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGwKIFxkKyB0ZXN0cHViX3RibDIKIFxkUnArIHRlc3Rw dWJfZm9yYWxsdGFibGVzCiAKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKKworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKwogRFJPUCBU QUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVz LCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYTsKK0RST1AgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1h LCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTsKIAogQ1JFQVRFIFRBQkxFIHRlc3Rw dWJfdGJsMyAoYSBpbnQpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsM2EgKGIgdGV4dCkgSU5I RVJJVFMgKHRlc3RwdWJfdGJsMyk7CkBAIC0xMDY0LDIyICsxMDcwLDU4IEBAIFNFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0 IEZPUiBBTEwgVEFCTEVTOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIAorLS0gY2FuJ3Qg YWRkIGV4Y2VwdCB0YWJsZSB0byAnRk9SIEFMTCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBwdWJf c2NoMS50YmwxOworCiAtLSBWZXJpZnkgdGhhdCAnQUxMIFRBQkxFUycgZmxhZyBpcyByZXNldAog XGRScCsgdGVzdHB1Yl9yZXNldAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNF VDsKIFxkUnArIHRlc3RwdWJfcmVzZXQKIAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBBREQgVEFCTEUgcHViX3NjaDEudGJsMSwgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljOwor LS0gc2hvdWxkIHdvcmsgbm93IGFmdGVyIHJlc2V0dGluZyB0aGUgcHVibGljYXRpb24KK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1 Yl9zY2gxLnRibDE7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgUkVTRVQ7CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQURE IFRBQkxFIHB1Yl9zY2gxLnRibDE7CiAKLS0tIFZlcmlmeSB0aGF0IHRhYmxlcyBhbmQgc2NoZW1h cyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9wcGVkCi0tLSBhZnRlciBS RVNFVAorLS0gY2FuJ3QgYWRkIGV4Y2VwdCB0YWJsZSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlv bgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgcHViX3NjaDEudGJsMTsKKworLS0gVmVyaWZ5IHRoYXQgdGFibGVzIGFzc29jaWF0ZWQg d2l0aCB0aGUgcHVibGljYXRpb24gYXJlIGRyb3BwZWQgYWZ0ZXIgUkVTRVQKIFxkUnArIHRlc3Rw dWJfcmVzZXQKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiBcZFJwKyB0 ZXN0cHViX3Jlc2V0CiAKLUFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJM SVNIID0gJycsIFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UID0gJ3RydWUnKTsKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsK KworLS0gY2FuJ3QgYWRkIGV4Y2VwdCB0YWJsZSB0byAnRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1B JyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKKworLS0gVmVyaWZ5IHRoYXQgc2NoZW1h cyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9wcGVkIGFmdGVyIFJFU0VU CitcZFJwKyB0ZXN0cHViX3Jlc2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJF U0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jl c2V0IFNFVCAoUFVCTElTSCA9ICcnKTsKKworLS0gY2FuJ3QgYWRkIGV4Y2VwdCB0YWJsZSB3aGVu IHRoZSBwdWJsaWNhdGlvbiBvcHRpb25zIGRvZXMgbm90IGhhdmUgZGVmYXVsdAorLS0gdmFsdWVz CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBU QUJMRSBwdWJfc2NoMS50YmwxOworCistLSBWZXJpZnkgdGhhdCBwdWJsaXNoIG9wdGlvbiBpcyBy ZXNldAorXGRScCsgdGVzdHB1Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBTRVQgKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UID0gJ3RydWUnKTsKKworLS0g Y2FuJ3QgYWRkIGV4Y2VwdCB0YWJsZSB3aGVuIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IG9w dGlvbiBkb2VzIG5vdAorLS0gaGF2ZSBkZWZhdWx0IHZhbHVlCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBwdWJfc2NoMS50YmwxOwog Ci0tLSBWZXJpZnkgdGhhdCBwdWJsaXNoIG9wdGlvbnMgYW5kIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290IG9wdGlvbiBhcmUgcmVzZXQKKy0tIFZlcmlmeSB0aGF0IHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290IG9wdGlvbiBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9yZXNldAogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKIFxkUnArIHRlc3RwdWJfcmVzZXQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9yZXBfY2hhbmdlc19leGNlcHRfdGFi bGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfcmVwX2NoYW5nZXNfZXhjZXB0X3Rh YmxlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjgxNDI3NzlmMjIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfcmVwX2NoYW5n ZXNfZXhjZXB0X3RhYmxlLnBsCkBAIC0wLDAgKzEsODYgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIw MjEtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2Fs IHJlcGxpY2F0aW9uIHRlc3RzIGZvciBleGNlcHQgdGFibGUgcHVibGljYXRpb25zCit1c2Ugc3Ry aWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXpl IHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3Jl YXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChh bGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsK KworIyBUZXN0IHJlcGxpY2F0aW9uIHdpdGggcHVibGljYXRpb25zIGNyZWF0ZWQgdXNpbmcgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFCisjIG9wdGlvbi4KKyMgQ3JlYXRlIHNjaGVtYXMgYW5k IHRhYmxlcyBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJDUkVBVEUgU0NIRU1BIHNjaDEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSBzY2gxLnRhYjEgQVMgU0VMRUNUIGdlbmVyYXRlX3Nl cmllcygxLDEwKSBBUyBhIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgVEFCTEUgcHVibGljLnRhYjEoYSBpbnQpIik7CisKKyMgQ3JlYXRlIHNjaGVt YXMgYW5kIHRhYmxlcyBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkNSRUFURSBTQ0hFTUEgc2NoMSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGludCkiKTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHB1Ymxp Yy50YWIxIChhIGludCkiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVi bGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0 Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg UFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHNj aDEudGFiMSIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3NjaGVtYSBDT05ORUNUSU9OICckcHVibGlzaGVy X2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIgorKTsKKworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOworCisjIEFsc28gd2FpdCBm b3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorbXkgJHN5bmNlZF9xdWVyeSA9CisgICJT RUxFQ1QgY291bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0 YXRlIE5PVCBJTiAoJ3InLCAncycpOyI7Ciskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3Vu dGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCisgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0YSI7CisKKyMgQ2hlY2sg dGhlIHRhYmxlIGRhdGEgZG9lcyBub3Qgc3luYyBmb3IgZXhjbHVkZWQgdGFibGUKK215ICRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNv dW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEo MHx8KSwgJ2NoZWNrIHRhYmxlc3luYyBpcyBleGNsdWRlZCBmb3IgZXhjbHVkZWQgdGFibGVzJyk7 CisKKyMgSW5zZXJ0IHNvbWUgZGF0YSBpbnRvIGZldyB0YWJsZXMgYW5kIHZlcmlmeSB0aGF0IGlu c2VydGVkIGRhdGEgaXMgbm90CisjIHJlcGxpY2F0ZWQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoZ2VuZXJhdGVf c2VyaWVzKDExLDIwKSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0 YXBfc3ViX3NjaGVtYScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBzY2gx LnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByZXBsaWNhdGVkIGluc2VydHMg b24gc3Vic2NyaWJlcicpOworCisjIEFsdGVyIHB1YmxpY2F0aW9uIHRvIGV4Y2x1ZGUgZGF0YSBj aGFuZ2VzIGluIHB1YmxpYy50YWIxIGFuZCB2ZXJpZnkgdGhhdAorIyBzdWJzY3JpYmVyIGRvZXMg bm90IGdldCB0aGUgbmV3IHRhYmxlIGRhdGEuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorICAgICAgICAiQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgUkVT RVQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgICAgICJB TFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFC TEUgc2NoMS50YWIxLCBwdWJsaWMudGFiMSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKyAgICAgICAgIklOU0VSVCBJTlRPIHB1YmxpYy50YWIxIFZBTFVFUyhnZW5l cmF0ZV9zZXJpZXMoMSwxMCkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgndGFwX3N1Yl9zY2hlbWEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00g cHVibGljLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByb3dzIG9uIHN1YnNj cmliZXIgY2F0Y2h1cCcpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdmYXN0Jyk7Ciskbm9k ZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjMyLjAK Cg== --000000000000d80c1705def8d4e6--