Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vvrWM-006krU-14 for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Feb 2026 06:40:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vvrWJ-001KJR-3A for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Feb 2026 06:40:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vvrWJ-001KII-02 for pgsql-hackers@lists.postgresql.org; Fri, 27 Feb 2026 06:40:15 +0000 Received: from mail-yx1-xb133.google.com ([2607:f8b0:4864:20::b133]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vvrWF-00000001RIL-24Kv for pgsql-hackers@lists.postgresql.org; Fri, 27 Feb 2026 06:40:14 +0000 Received: by mail-yx1-xb133.google.com with SMTP id 956f58d0204a3-64c31ca77b4so1525055d50.2 for ; Thu, 26 Feb 2026 22:40:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772174412; cv=none; d=google.com; s=arc-20240605; b=X8gofWF+4/s2oW+CvqS7Rbgw/KmCRZG7dhSIK9EHM4sH/yzqPmFWtgL7cdzzjF50zg kpv/u8jYb9ka77oegh/8wzN++VMuCxiGgMOFe33+YOls9xEkVSASdgqwvRpZJs/lY21G nHn3ekWktkVTACXg77NCHLLOhXIbLLcue0jMGhalWNlf0C9F4bH2ViJLdmQNkv2OhjrS cIV8eHWgt+6/8dDzAD3b08bRJ4Mcoquv3VIRfxe8DCNBAaZ10d2x0Pr/zrbfRdlycZ/8 qAmz5dAvY378/5kbHEXZH7N8w/w6NrYmsuI+qzWGJdtojeNcFyDNcDOxVBSX3gYfAFSD KfzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=vZiWFIxuJm8o1hf9u8S/iRM157O7dKK67QW2TC6b0wg=; fh=RM1AGtOPzZN1NYaX3X9O0AXTdaEy/vuE1xbncOZgiLg=; b=BYlm6WJSk5UlDh6GuhenvDhxDqQNSObKMV3FV0bWrt1fXtvoKaOIs3y9rSMKRkVbLa XCZ4A/RODRidiKssURVUFXIA7xKPsbxkFql1k7g4Z4OGU8qY21u6ADJorLEHQdFqkLyE 6LU3zjU16qgCIMHHLMqWdPmihT5EkEcMBTpdq/033f0SvO2zdBfGxPOvNSdRJWEyv2HI r2WMCzUOYEMquCFJ8OigME2W4Bc0EWZN8KKWPl6G2GqIhG0nkc877DSjaRMQCdn7IzC3 G7LGp2bGIjHZo6QJUpBBkc866Nf7RkVgmtOi6J2piiajGkXHgJBx2eC7UfU0ajYF4yxW vaTQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772174412; x=1772779212; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vZiWFIxuJm8o1hf9u8S/iRM157O7dKK67QW2TC6b0wg=; b=XKCvuGdyTr2LcKTiEJWFAE9UEHfpRNX8spuHCR9O/ujwRU7ytvqYJ5/X+4tnHhKRrj m3i9SCUcE+dEYPDsGldrxWl7C5Q8HJhqTxjTKU+FHPdXPsWdRZhoGXSAIvq/WCgvy2tw D2PLy5kNsJKGzT4U2Q1HxgGX2Vfv6Gme+S7l40TCJmi3ido3K54Em1I8u82BCBmtvLE2 MWpRUEA6gzrsj+o45Keu6IBgihgTb+dvpZGTAzalWtWw/h42uRsKHLODDpfsw9gubsKX kITfCayxohV7SCoSrxi/41jai4w90rac/4DNJHIpX5ANhepqRCp9N6c5AxzkeDbjJyF7 F/vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772174412; x=1772779212; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vZiWFIxuJm8o1hf9u8S/iRM157O7dKK67QW2TC6b0wg=; b=L4VkpIdaE5JGypAe3cRhCfIIWetGllyLeUqVCkezP+Ot4BPyP12Rv4y0+i3V4x5uRi KF0ygHsGcKn/avuye2YDga2Gknaj3p1RqwWdymAh5+5j9V95HaJn4yKSmGPMLrivMCWk LSKWW+tUQ61fwx5VO4ZcIgSGDDcSBain0cHXgdDBHVwObLxkg1ZrE+GDONNfJIloMo/O TNmL0a9NVf9pYtjXkm8M/lBcSaQhYfRzv/fEttMpjLys2Hdw670DYfvyS+jaP94fpiHj 5TUMJm+Z5DKGEj8PEYA77h+84Fpn2ntXWfWB5IFv+YltYbhoLIXyLS16mTiXgVwRYkK6 2/4A== X-Forwarded-Encrypted: i=1; AJvYcCWZS5PQ1tBeaUGajoJL+QweD7hAX1Q4LJVl7verN0FduPBEAWJ262n0OgIw9b+jdfHafKmxV4JxCjjoF7Z/@lists.postgresql.org X-Gm-Message-State: AOJu0YxbXa9tJbaEyTvbREWpJU5kdaY6aYN6wyGfkFvHjb6VRDOx8p4Y KG3N6LUEX3PCsoGcVzKL4ptPtQqbJEUixJVcrSRLXLbzuyzhC7qrr5C0B4rkqFRoGpxpBwDTzpu xomx6iqgmUzWw3x/Zou1qloN/qEK8dCw= X-Gm-Gg: ATEYQzx8WI6LmBQ676TsmTjO5PpRR0IenEdTrUR9tpDiyaydAUWXwV8BN1ttMaaf4pQ eTXo/q90NTtXGN5jk27UV4oGYChI5xjHFPhLKpvlm/WBVWt+rQ29ly8/cFUq0uAbTSMWhhThp9c 3kEcOCPs+UGNpuO3+acask7/fNcmCb61KJupXWnhdqlWBDnR0SIaXcJCaYNm2GscDPovntLqEhB IWBJZN7ptFnuaulllGcp6LDz5YaguwLnpnmGvwku0gY2iMZlLIRVOTAXiUJi0VgTfCIbbvYXNwo V22dLsNARg== X-Received: by 2002:a05:690e:4ce:b0:644:444f:3bc2 with SMTP id 956f58d0204a3-64cc20cc0afmr1346867d50.22.1772174411894; Thu, 26 Feb 2026 22:40:11 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Fri, 27 Feb 2026 12:09:59 +0530 X-Gm-Features: AaiRm53-cgT2BMDJmBpJZ_cfDuorZbdCc-BeR4KhteKQRUkUJmmaNOsa_HotwJg Message-ID: Subject: Re: Skipping schema changes in publication To: shveta malik Cc: Shlok Kyal , Amit Kapila , Ashutosh Sharma , "David G. Johnston" , Dilip Kumar , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000004d4b70064bc882d0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004d4b70064bc882d0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 26 Feb 2026 at 11:42, shveta malik wrote: > > On Wed, Feb 25, 2026 at 10:43=E2=80=AFPM Shlok Kyal wrote: > > > > Hi Shveta, Ashutosh, Chao-san, > > > > Thanks for reviewing the patch. > > I have addressed the above comments and the comments in [1] and [2]. > > Attached is the latest v50 version. > > > > Thank You Shlok. Please find a few comments on v50-001. > > 1) > -check_publication_add_relation(Relation targetrel) > +check_publication_add_relation(PublicationRelInfo *pri, bool puballtable= s) > > Why do we need argument puballtables? I think we can give partition > related error even without checking 'puballtables', like we are giving > for temp and unlogged table error in EXCEPT list without checking > puballtables. Or let me know if I am missing the point here? This is required as this is a common function used by both all tables and table publication, since we allow child tables in case of table publication, alltables check is required. > 2) > publication_has_any_except_table(): Shall we optimize it: > a) if it is not all-table pub, return false there itself. > b) if it is all table, proceed with fetching tuples. At first tuple we > can break the loop irrespective of check 'pubrel->prexcept', as there > is no other feasibility. But we shall Assert (pubrel->prexcept) . > Thoughts? As Amit is also not in favor of this at [1], I'm not doing any change for t= his. Rest of the comments are addressed in the attached v51 version. Regarding the 12 comment from [2]: > 12) pg_dump dumped "ONLY" along with ROOT name in EXCEPT. I think it > should be avoided. > pg_dump output: > CREATE PUBLICATION pub4 FOR ALL TABLES EXCEPT TABLE (ONLY > public.tab_root) WITH (publish =3D 'insert, update, delete, truncate'); I felt this is ok, we dump similarly in case of table publications too like for the below publication: create publication pub1 for table tab_root ; Dump adds only here too: -- -- Name: pub1 tab_root; Type: PUBLICATION TABLE; Schema: public; Owner: vig= nesh -- ALTER PUBLICATION pub1 ADD TABLE ONLY public.tab_root; Rest of the comments from [2] have been addressed. [1] - https://www.postgresql.org/message-id/CAA4eK1%2BV0-HaxqiEJShTOh5%2BSG= w1p4kurK327n8w3WwLV9DD4Q%40mail.gmail.com [2] - https://www.postgresql.org/message-id/CAJpy0uDRv%3DVuG439QTVaX6pgBSvp= zAQd5Px9qH%2BE-XAnwpMuDQ%40mail.gmail.com Regards, Vignesh --0000000000004d4b70064bc882d0 Content-Type: application/octet-stream; name="v51-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v51-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4irdhd0 RnJvbSA0ZTM4Y2NhNGMyNjcxZmIzMDU2ZTcwNGFhZTY5OTc3Y2FlNjM0NzE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMTkgRmViIDIwMjYgMjA6MTY6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY1MSAxLzNd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURSBQVUJMSUNBVElPTiBhbGxvd3Mg b25lIG9yIG1vcmUKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlzaGVyIHdpbGwgbm90 IHNlbmQgdGhlIGRhdGEgb2YgZXhjbHVkZWQKdGFibGVzIHRvIHRoZSBzdWJzY3JpYmVyLgoKVGhl IG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRpb25zIHdoZW4gY3Jl YXRpbmcgYQpwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWIx IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodDEsdDIpOwoKQSBuZXcgY29sdW1uICJwcmV4 Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBnX3B1YmxpY2F0aW9uX3JlbCIsIHRvIGZsYWcKdGhl IHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGlj YXRpb25zLgoKT25seSByb290IHBhcnRpdGlvbmVkIHRhYmxlcyBjYW4gYmUgc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlLgpTcGVjaWZ5aW5nIGEgcm9vdCBwYXJ0aXRpb25lZCB0 YWJsZSBleGNsdWRlcyBhbGwgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8KdGhhdCBwYXJ0aXRpb24g aGllcmFyY2h5IGZyb20gcHVibGljYXRpb24uCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxp Y2F0aW9uLnNnbWwgICAgICAgICB8ICAgNiArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbCAgICAgIHwgIDYxICsrKy0KIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYu c2dtbCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jICAgICAgICAgIHwgMjgyICsrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICAgIHwgIDQ3ICsrLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgIDk2ICsrKysrKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDM5ICsrLQogc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDM5ICsrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgIDYyICsrKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8ICAyMSArLQogc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDc1ICsrKystCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9w Z19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDMwICsrCiBzcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgOTUgKysrKystCiBzcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8ICAxOCArLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8IDEzMCArKysrKysrLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICAgIHwgIDY1ICsrKy0KIHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiAuLi4vdC8wMzdf cmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsICAgICAgICAgfCAyNzQgKysrKysrKysrKysrKysr KysKIDI0IGZpbGVzIGNoYW5nZWQsIDEyNDAgaW5zZXJ0aW9ucygrKSwgMTM3IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hh bmdlc19leGNlcHRfdGFibGUucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGU3MDY3Yzg0ZWNlLi42OTU4 ODkzNzcxOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY1NzIsNiArNjU3MiwxNiBAQCBTQ1JBTS1TSEEt MjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+Ojxy ZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxkPnByZXhjZXB0PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9u LiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1z LWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+ LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgogICAgICAgPHN0cnVjdGZpZWxkPnBycXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBl PnBnX25vZGVfdHJlZTwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmlu ZGV4IDUwMjhmZTlhZjA5Li5iY2I0NzNjMDc4YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xv Z2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sCkBAIC0xMTYsNyArMTE2LDExIEBACiAgICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElO IFNDSEVNQTwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiwKICAg IG9yIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPi4gVW5saWtlIHRhYmxlcywg c2VxdWVuY2VzIGNhbiBiZQogICAgc3luY2hyb25pemVkIGF0IGFueSB0aW1lLiBGb3IgbW9yZSBp bmZvcm1hdGlvbiwgc2VlCi0gICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNl cXVlbmNlcyIvPi4KKyAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2VxdWVu Y2VzIi8+LiBXaGVuIGEgcHVibGljYXRpb24gaXMKKyAgIGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5G T1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIGEgdGFibGUgb3Igc2V0IG9mIHRhYmxlcyBjYW4KKyAg IGJlIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKKyAgIDxs aW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJs ZSI+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvbGluaz4KKyAgIGNsYXVzZS4KICAg PC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf cHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwKaW5kZXggNmVmYmI5MTVjZWMuLmMzMDVkZmM1MGI3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMyLDEyICszMiwxNiBAQCBDUkVBVEUgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fYWxs X29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIEFMTCBUQUJM RVMKKyAgICBBTEwgVEFCTEVTIFsgRVhDRVBUIFsgVEFCTEUgXSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdCiAgICAgQUxMIFNFUVVFTkNFUwogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4K IAogICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0KKworPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsgT05MWSBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KIDwvc3lu b3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTY0LDcgKzE2OCw4IEBAIENSRUFURSBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNh dGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KLSAg ICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUu CisgICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0 dXJlLiBUYWJsZXMgbGlzdGVkIGluCisgICAgICBFWENFUFQgVEFCTEUgYXJlIGV4Y2x1ZGVkIGZy b20gdGhlIHB1YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgpAQCAtMTg0LDYgKzE4OSw0MSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj4KKyAgICA8dGVybT48bGl0 ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHRhYmxlcyB0byBi ZSBleGNsdWRlZCBmcm9tIHRoZQorICAgICAgcHVibGljYXRpb24uCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+T05MWTwv bGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKKyAgICAgIHRhYmxlIG5hbWUsIG9ubHkg dGhhdCB0YWJsZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gSWYKKyAgICAgIDxs aXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB0YWJsZSBhbmQgYWxs IGl0cyBkZXNjZW5kYW50CisgICAgICB0YWJsZXMgKGlmIGFueSkgYXJlIGV4Y2x1ZGVkLiBPcHRp b25hbGx5LCA8bGl0ZXJhbD4qPC9saXRlcmFsPiBjYW4gYmUKKyAgICAgIHNwZWNpZmllZCBhZnRl ciB0aGUgdGFibGUgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQgZGVzY2VuZGFudAor ICAgICAgdGFibGVzIGFyZSBleGNsdWRlZC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAg ICAgIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIG9ubHkgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFi bGUgbWF5IGJlIHNwZWNpZmllZAorICAgICAgaW4gPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRl cmFsPi4gRG9pbmcgc28gZXhjbHVkZXMgdGhlIHJvb3QgdGFibGUgYW5kCisgICAgICBhbGwgb2Yg aXRzIHBhcnRpdGlvbnMgZnJvbSByZXBsaWNhdGlvbi4gVGhlIG9wdGlvbmFsCisgICAgICA8bGl0 ZXJhbD5PTkxZPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+KjwvbGl0ZXJhbD4gaGFzIG5vIGVmZmVj dCBmb3IKKyAgICAgIHBhcnRpdGlvbmVkIHRhYmxlcy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFy YT4KKyAgICAgIFRoZXJlIGNhbiBiZSBhIGNhc2Ugd2hlcmUgYSBzdWJzY3JpcHRpb24gaW5jbHVk ZXMgbXVsdGlwbGUgcHVibGljYXRpb25zLgorICAgICAgSW4gc3VjaCBhIGNhc2UsIGEgdGFibGUg b3IgcGFydGl0aW9uIHRoYXQgaXMgaW5jbHVkZWQgaW4gb25lIHB1YmxpY2F0aW9uCisgICAgICBh bmQgbGlzdGVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGNsYXVzZSBv ZiBhbm90aGVyIGlzCisgICAgICBjb25zaWRlcmVkIGluY2x1ZGVkIGZvciByZXBsaWNhdGlvbi4K KyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFN1YnNjcmliaW5nIHRvIG11bHRpcGxl IHB1YmxpY2F0aW9ucyB0aGF0IHNwZWNpZnkKKyAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwv bGl0ZXJhbD4gbGlzdHMgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy13aXRoIj4KICAgICA8dGVybT48bGl0ZXJhbD5XSVRIICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVw bGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFj ZWFibGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC00 ODksNiArNTI5LDIzIEBAIENSRUFURSBQVUJMSUNBVElPTiBhbGxfc2VxdWVuY2VzIEZPUiBBTEwg U0VRVUVOQ0VTOwogICAgYWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uOgogPHByb2dy YW1saXN0aW5nPgogQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfc2VxdWVuY2VzIEZPUiBB TEwgVEFCTEVTLCBBTEwgU0VRVUVOQ0VTOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor CisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNo YW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3Ru YW1lPiBhbmQgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1s aXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfZXhjZXB0IEZPUiBBTEwgVEFC TEVTIEVYQ0VQVCAodXNlcnMsIGRlcGFydG1lbnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVz IGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbiwgYW5kCisgICBhbGwgY2hhbmdlcyBp biBhbGwgdGFibGVzIGV4Y2VwdCA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCisg ICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+ CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwg U0VRVUVOQ0VTLCBBTEwgVEFCTEVTIEVYQ0VQVCAodXNlcnMsIGRlcGFydG1lbnRzKTsKIDwvcHJv Z3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21s CmluZGV4IDhiMWQ5NDhiYTA1Li4xMDQ1YmM2YTAyYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbApA QCAtMjEwMyw4ICsyMTAzLDkgQEAgU0VMRUNUICQxIFxwYXJzZSBzdG10MQogICAgICAgICBsaXN0 ZWQuCiAgICAgICAgIElmIDxsaXRlcmFsPng8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBj b21tYW5kIG5hbWUsIHRoZSByZXN1bHRzCiAgICAgICAgIGFyZSBkaXNwbGF5ZWQgaW4gZXhwYW5k ZWQgbW9kZS4KLSAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8g dGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcyBhbmQKLSAgICAgICAgc2NoZW1hcyBhc3NvY2lh dGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24gYXMgd2VsbC4KKyAgICAgICAgSWYg PGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhl IHRhYmxlcywKKyAgICAgICAgZXhjbHVkZWQgdGFibGVzLCBhbmQgc2NoZW1hcyBhc3NvY2lhdGVk IHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24KKyAgICAgICAgYXMgd2VsbC4KICAgICAg ICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggOWE0NzkxYzU3M2UuLmVjNzc2YjA2 NTk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC01MywzOCArNTMsODQg QEAgdHlwZWRlZiBzdHJ1Y3QKICAqIGVycm9yIGlmIG5vdC4KICAqLwogc3RhdGljIHZvaWQKLWNo ZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihSZWxhdGlvbiB0YXJnZXRyZWwpCitjaGVja19w dWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmksIGJvb2wgcHVi YWxsdGFibGVzKQogewotCS8qIE11c3QgYmUgYSByZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxl ICovCi0JaWYgKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRf UkVMQVRJT04gJiYKLQkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwlSZWxhdGlvbgl0YXJnZXRyZWwgPSBwcmktPnJlbGF0 aW9uOworCisJLyogSWYgaW4gRVhDRVBUIGNsYXVzZSwgbXVzdCBiZSByb290IHBhcnRpdGlvbmVk IHRhYmxlICovCisJaWYgKHB1YmFsbHRhYmxlcyAmJiBwcmktPmV4Y2VwdCAmJiB0YXJnZXRyZWwt PnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGFk ZCByZWxhdGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iLAorCQkJCSBlcnJtc2coImNhbm5vdCB1 c2UgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSBmb3IgcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAotCQkJCSBlcnJkZXRhaWxfcmVs a2luZF9ub3Rfc3VwcG9ydGVkKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kKSkp OworCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGlu ZGl2aWR1YWwgcGFydGl0aW9ucy4iKSkpOworCisJLyogTXVzdCBiZSBhIHJlZ3VsYXIgb3IgcGFy dGl0aW9uZWQgdGFibGUgKi8KKwlpZiAoUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtp bmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgorCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+ cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCXsKKwkJaWYgKHByaS0+ZXhj ZXB0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgcHVibGljYXRpb24gRVhD RVBUIGNsYXVzZSBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0 ZWQoUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQpKSk7CisJCWVsc2UKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNh dGlvbiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJCQkJ CSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRy ZWwpLT5yZWxraW5kKSkpOworCX0KIAogCS8qIENhbid0IGJlIHN5c3RlbSB0YWJsZSAqLwogCWlm IChJc0NhdGFsb2dSZWxhdGlvbih0YXJnZXRyZWwpKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2coImNh bm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKLQkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAotCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0 aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikpKTsKKwl7CisJCWlmIChw cmktPmV4Y2VwdCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHB1YmxpY2F0 aW9uIEVYQ0VQVCBjbGF1c2UgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0 aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikpKTsKKwkJZWxzZQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1Ymxp Y2F0aW9uIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJ CQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igc3lzdGVt IHRhYmxlcy4iKSkpOworCX0KIAogCS8qIFVOTE9HR0VEIGFuZCBURU1QIHJlbGF0aW9ucyBjYW5u b3QgYmUgcGFydCBvZiBwdWJsaWNhdGlvbi4gKi8KIAlpZiAodGFyZ2V0cmVsLT5yZF9yZWwtPnJl bHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCi0JCWVyZXBvcnQoRVJST1IsCi0J CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1z ZygiY2Fubm90IGFkZCByZWxhdGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iLAotCQkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCi0JCQkJIGVycmRldGFpbCgiVGhpcyBv cGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYXJ5IHRhYmxlcy4iKSkpOworCXsK KwkJaWYgKHByaS0+ZXhjZXB0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ug cHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhp cyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYXJ5IHRhYmxlcy4iKSkpOwor CQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IGFkZCByZWxhdGlvbiBcIiVz XCIgdG8gcHVibGljYXRpb24iLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdl dHJlbCkpLAorCQkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVk IGZvciB0ZW1wb3JhcnkgdGFibGVzLiIpKSk7CisJfQogCWVsc2UgaWYgKHRhcmdldHJlbC0+cmRf cmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCkKLQkJZXJlcG9y dChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK LQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNhdGlvbiIs Ci0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKLQkJCQkgZXJyZGV0 YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCB0YWJsZXMu IikpKTsKKwl7CisJCWlmIChwcmktPmV4Y2VwdCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJj YW5ub3QgdXNlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UgZm9yIHJlbGF0aW9uIFwiJXNcIiIs CisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJCQkJCSBlcnJk ZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2VkIHRhYmxl cy4iKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IGFkZCByZWxh dGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHRhcmdldHJlbCkpLAorCQkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qg c3VwcG9ydGVkIGZvciB1bmxvZ2dlZCB0YWJsZXMuIikpKTsKKwl9CiB9CiAKIC8qCkBAIC0zNjYs OSArNDEyLDExIEBAIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwg TGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsCiAJZm9yZWFjaChsYywgYW5jZXN0 b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKLQkJTGlzdAkgICAq YXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKTsKKwkJTGlzdAkgICAq YXB1YmlkcyA9IE5JTDsKIAkJTGlzdAkgICAqYXNjaGVtYVB1YmlkcyA9IE5JTDsKIAorCQlHZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgJmFwdWJpZHMsIE5VTEwpOworCiAJCWxldmVs Kys7CiAKIAkJaWYgKGxpc3RfbWVtYmVyX29pZChhcHViaWRzLCBwdWJvaWQpKQpAQCAtNDY2LDcg KzUxNCw3IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9u UmVsSW5mbyAqcHJpLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwg cHViLT5uYW1lKSkpOwogCX0KIAotCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbih0YXJn ZXRyZWwpOworCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwcmksIHB1Yi0+YWxsdGFi bGVzKTsKIAogCS8qIFZhbGlkYXRlIGFuZCB0cmFuc2xhdGUgY29sdW1uIG5hbWVzIGludG8gYSBC aXRtYXBzZXQgb2YgYXR0bnVtcy4gKi8KIAlhdHRudW1zID0gcHViX2NvbGxpc3RfdmFsaWRhdGUo cHJpLT5yZWxhdGlvbiwgcHJpLT5jb2x1bW5zKTsKQEAgLTQ4Miw2ICs1MzAsOCBAQCBwdWJsaWNh dGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJ T2JqZWN0SWRHZXREYXR1bShwdWJpZCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVs X3BycmVsaWQgLSAxXSA9CiAJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpOworCXZhbHVlc1tBbnVt X3BnX3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2VwdCAtIDFdID0KKwkJQm9vbEdldERhdHVtKHByaS0+ ZXhjZXB0KTsKIAogCS8qIEFkZCBxdWFsaWZpY2F0aW9ucywgaWYgYXZhaWxhYmxlICovCiAJaWYg KHByaS0+d2hlcmVDbGF1c2UgIT0gTlVMTCkKQEAgLTUzMCwxNyArNTgwLDI2IEBAIHB1YmxpY2F0 aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCXRh YmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkvKgotCSAqIEludmFsaWRhdGUg cmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuCi0JICoKLQkgKiBG b3IgdGhlIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UgbXVzdCBpbnZhbGlkYXRlIGFsbCBwYXJ0aXRp b25zIGNvbnRhaW5lZAotCSAqIGluIHRoZSByZXNwZWN0aXZlIHBhcnRpdGlvbiBoaWVyYXJjaGll cywgbm90IGp1c3QgdGhlIG9uZSBleHBsaWNpdGx5Ci0JICogbWVudGlvbmVkIGluIHRoZSBwdWJs aWNhdGlvbi4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIGltcGxpY2l0bHkKLQkgKiBwdWJs aXNoIHRoZSBjaGlsZCB0YWJsZXMgd2hlbiB0aGUgcGFyZW50IHRhYmxlIGlzIHB1Ymxpc2hlZC4K KwkgKiBSZWxhdGlvbnMgZXhjbHVkZWQgdmlhIHRoZSBFWENFUFQgY2xhdXNlIGRvIG5vdCBuZWVk IGV4cGxpY2l0CisJICogaW52YWxpZGF0aW9uIGFzIENyZWF0ZVB1YmxpY2F0aW9uKCkgZnVuY3Rp b24gaW52YWxpZGF0ZXMgYWxsIHJlbGF0aW9ucworCSAqIGFzIHBhcnQgb2YgZGVmaW5pbmcgYSBG T1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KIAkgKi8KLQlyZWxpZHMgPSBHZXRQdWJQYXJ0aXRp b25PcHRpb25SZWxhdGlvbnMocmVsaWRzLCBQVUJMSUNBVElPTl9QQVJUX0FMTCwKLQkJCQkJCQkJ CQkJcmVsaWQpOworCWlmICghcHJpLT5leGNlcHQpCisJeworCQkvKgorCQkgKiBJbnZhbGlkYXRl IHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LgorCQkgKgorCQkg KiBGb3IgdGhlIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UgbXVzdCBpbnZhbGlkYXRlIGFsbCBwYXJ0 aXRpb25zCisJCSAqIGNvbnRhaW5lZCBpbiB0aGUgcmVzcGVjdGl2ZSBwYXJ0aXRpb24gaGllcmFy Y2hpZXMsIG5vdCBqdXN0IHRoZSBvbmUKKwkJICogZXhwbGljaXRseSBtZW50aW9uZWQgaW4gdGhl IHB1YmxpY2F0aW9uLiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UKKwkJICogd2UgaW1wbGljaXRs eSBwdWJsaXNoIHRoZSBjaGlsZCB0YWJsZXMgd2hlbiB0aGUgcGFyZW50IHRhYmxlIGlzCisJCSAq IHB1Ymxpc2hlZC4KKwkJICovCisJCXJlbGlkcyA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0 aW9ucyhyZWxpZHMsIFBVQkxJQ0FUSU9OX1BBUlRfQUxMLAorCQkJCQkJCQkJCQkJcmVsaWQpOwog Ci0JSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVscyhyZWxpZHMpOworCQlJbnZhbGlkYXRlUHVibGlj YXRpb25SZWxzKHJlbGlkcyk7CisJfQogCiAJcmV0dXJuIG15c2VsZjsKIH0KQEAgLTc0OSwzOCAr ODA4LDU0IEBAIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQs IGJvb2wgaWZfbm90X2V4aXN0cykKIAlyZXR1cm4gbXlzZWxmOwogfQogCi0vKiBHZXRzIGxpc3Qg b2YgcHVibGljYXRpb24gb2lkcyBmb3IgYSByZWxhdGlvbiAqLwotTGlzdCAqCi1HZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCisvKgorICogR2V0IHRoZSBsaXN0IG9mIHB1YmxpY2F0 aW9uIG9pZHMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWVkIHJlbGF0aW9uLgorICoKKyAqICdw dWJpZHMnIHJldHVybnMgdGhlIE9pZHMgb2YgdGhlIHB1YmxpY2F0aW9ucyB0aGUgcmVsYXRpb24g aXMgcGFydCBvZi4KKyAqCisgKiAnZXhjZXB0X3B1YmlkcycgcmV0dXJucyB0aGUgT2lkcyBvZiBw dWJsaWNhdGlvbnMgdGhlIHJlbGF0aW9uIGlzIGV4Y2x1ZGVkCisgKiBmcm9tLgorICoKKyAqIFRo aXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZSByZWxhdGlvbiBpcyBwYXJ0IG9mIGFueSBw dWJsaWNhdGlvbi4KKyAqLworYm9vbAorR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlk LCBMaXN0ICoqcHViaWRzLCBMaXN0ICoqZXhjZXB0X3B1YmlkcykKIHsKLQlMaXN0CSAgICpyZXN1 bHQgPSBOSUw7CiAJQ2F0Q0xpc3QgICAqcHVicmVsbGlzdDsKLQlpbnQJCQlpOworCWJvb2wJCWZv dW5kID0gZmFsc2U7CiAKIAkvKiBGaW5kIGFsbCBwdWJsaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRo IHRoZSByZWxhdGlvbi4gKi8KIAlwdWJyZWxsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShQVUJM SUNBVElPTlJFTE1BUCwKIAkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7Ci0JZm9y IChpID0gMDsgaSA8IHB1YnJlbGxpc3QtPm5fbWVtYmVyczsgaSsrKQorCWZvciAoaW50IGkgPSAw OyBpIDwgcHVicmVsbGlzdC0+bl9tZW1iZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJdHVwID0g JnB1YnJlbGxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOwotCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9w Z19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJwdWJpZDsKKwkJRm9ybV9wZ19w dWJsaWNhdGlvbl9yZWwgcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJV Q1QodHVwKTsKKwkJT2lkCQkJcHViaWQgPSBwdWJyZWwtPnBycHViaWQ7CisJCUxpc3QJICAqKnRh cmdldF9saXN0ID0gcHVicmVsLT5wcmV4Y2VwdCA/IGV4Y2VwdF9wdWJpZHMgOiBwdWJpZHM7CiAK LQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CisJCWlmICh0YXJnZXRfbGlz dCkKKwkJCSp0YXJnZXRfbGlzdCA9IGxhcHBlbmRfb2lkKCp0YXJnZXRfbGlzdCwgcHViaWQpOwor CisJCWlmICghcHVicmVsLT5wcmV4Y2VwdCkKKwkJCWZvdW5kID0gdHJ1ZTsKIAl9CiAKIAlSZWxl YXNlU3lzQ2FjaGVMaXN0KHB1YnJlbGxpc3QpOwogCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4g Zm91bmQ7CiB9CiAKIC8qCi0gKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyBmb3IgYSBwdWJs aWNhdGlvbi4KKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiByZWxhdGlv biBPaWRzIGZvciBhIHB1YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNl ZCBGT1IgVEFCTEUgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCi0g KiBzaG91bGQgdXNlIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKiBJZiBleGNlcHRf ZmxhZyBpcyB0cnVlLCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBzcGVjaWZpZWQgaW4g dGhlCisgKiBFWENFUFQgY2xhdXNlIG9mIHRoZSBwdWJsaWNhdGlvbjsgb3RoZXJ3aXNlLCByZXR1 cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucworICogaW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9u LgogICovCi1MaXN0ICoKLUdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQorc3RhdGljIExpc3QgKgorZ2V0X3B1YmxpY2F0aW9u X3JlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJ CQkJCSAgYm9vbCBleGNlcHRfZmxhZykKIHsKIAlMaXN0CSAgICpyZXN1bHQ7CiAJUmVsYXRpb24J cHVicmVsc3JlbDsKQEAgLTgwNSw4ICs4ODAsMTAgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMo T2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJCUZvcm1fcGdfcHVi bGljYXRpb25fcmVsIHB1YnJlbDsKIAogCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9y ZWwpIEdFVFNUUlVDVCh0dXApOwotCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxh dGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKLQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7 CisKKwkJaWYgKGV4Y2VwdF9mbGFnID09IHB1YnJlbC0+cHJleGNlcHQpCisJCQlyZXN1bHQgPSBH ZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKKwkJCQkJ CQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwogCX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7 CkBAIC04MTksNiArODk2LDM0IEBAIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwg UHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8q CisgKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGgg YSBwdWJsaWNhdGlvbi4KKyAqCisgKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxF IHB1YmxpY2F0aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUworICogc2hvdWxkIHVz ZSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucygpLgorICovCitMaXN0ICoKK0dldEluY2x1ZGVk UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3Bh cnRvcHQpCit7CisJQXNzZXJ0KCFHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyk7CisK KwlyZXR1cm4gZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIGZh bHNlKTsKK30KKworLyoKKyAqIEdldHMgbGlzdCBvZiB0YWJsZSBvaWRzIHRoYXQgd2VyZSBzcGVj aWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIGEKKyAqIHB1YmxpY2F0aW9uLgorICoKKyAq IFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCisg Ki8KK0xpc3QgKgorR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQsIFB1Ymxp Y2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK3sKKwlBc3NlcnQoR2V0UHVibGljYXRpb24ocHVi aWQpLT5hbGx0YWJsZXMpOworCisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHVi aWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKK30KKwogLyoKICAqIEdldHMgbGlzdCBvZiBwdWJsaWNh dGlvbiBvaWRzIGZvciBwdWJsaWNhdGlvbnMgbWFya2VkIGFzIEZPUiBBTEwgVEFCTEVTLgogICov CkBAIC04NTgsMjQgKzk2MywzNiBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCkKIAog LyoKICAqIEdldHMgbGlzdCBvZiBhbGwgcmVsYXRpb25zIHB1Ymxpc2hlZCBieSBGT1IgQUxMIFRB QkxFUy9TRVFVRU5DRVMKLSAqIHB1YmxpY2F0aW9uKHMpLgorICogcHVibGljYXRpb24uCiAgKgog ICogSWYgdGhlIHB1YmxpY2F0aW9uIHB1Ymxpc2hlcyBwYXJ0aXRpb24gY2hhbmdlcyB2aWEgdGhl aXIgcmVzcGVjdGl2ZSByb290CiAgKiBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgZXhjbHVk ZSBwYXJ0aXRpb25zIGluIGZhdm9yIG9mIGluY2x1ZGluZyB0aGUKICAqIHJvb3QgcGFydGl0aW9u ZWQgdGFibGVzLiBUaGlzIGlzIG5vdCBhcHBsaWNhYmxlIHRvIEZPUiBBTEwgU0VRVUVOQ0VTCiAg KiBwdWJsaWNhdGlvbi4KKyAqCisgKiBGb3IgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiwg dGhlIHJldHVybmVkIGxpc3QgZXhjbHVkZXMgdGFibGVzIG1lbnRpb25lZAorICogaW4gRVhDRVBU IFRBQkxFIGNsYXVzZS4KICAqLwogTGlzdCAqCi1HZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhj aGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKK0dldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25z KFB1YmxpY2F0aW9uICpwdWIsIGNoYXIgcmVsa2luZCkKIHsKIAlSZWxhdGlvbgljbGFzc1JlbDsK IAlTY2FuS2V5RGF0YSBrZXlbMV07CiAJVGFibGVTY2FuRGVzYyBzY2FuOwogCUhlYXBUdXBsZQl0 dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0bGlzdCA9IE5J TDsKKwlib29sCQlwdWJ2aWFyb290ID0gcHViLT5wdWJ2aWFyb290OworCU9pZAkJCXB1YmlkID0g cHViLT5vaWQ7CiAKIAlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgcHVi dmlhcm9vdCkpOwogCisJLyogRVhDRVBUIGZpbHRlcmluZyBhcHBsaWVzIG9ubHkgdG8gcmVsYXRp b25zLCBub3Qgc2VxdWVuY2VzICovCisJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikK KwkJZXhjZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1YnZp YXJvb3QgPworCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJ CQkJICBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJl bGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCVNjYW5LZXlJbml0KCZrZXlb MF0sCkBAIC04OTEsNyArMTAwOCw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIg cmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0tPm9pZDsK IAogCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0pICYmCi0JCQkhKHJl bEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpKQorCQkJIShyZWxGb3JtLT5yZWxp c3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSAmJgorCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRs aXN0LCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAl9 CiAKQEAgLTkxMiw3ICsxMDMwLDggQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoY2hhciBy ZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0tPm9pZDsK IAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgotCQkJCSFy ZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYK KwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJCQlyZXN1bHQgPSBs YXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMTE2LDYgKzEyMzUsNTEgQEAg R2V0UHVibGljYXRpb25CeU5hbWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29r KQogCXJldHVybiBPaWRJc1ZhbGlkKG9pZCkgPyBHZXRQdWJsaWNhdGlvbihvaWQpIDogTlVMTDsK IH0KIAorLyoKKyAqIHB1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0X3RhYmxlCisgKgorICogUmV0 dXJuIHRydWUgaWYgdGhlIGdpdmVuIHB1YmxpY2F0aW9uIGhhcyBhbnkgcmVsYXRpb24gZW50cnkK KyAqIGluIHBnX3B1YmxpY2F0aW9uX3JlbCB3aXRoIHByZXhjZXB0IHNldC4KKyAqLworYm9vbAor cHVibGljYXRpb25faGFzX2FueV9leGNlcHRfdGFibGUoT2lkIHB1YmlkKQoreworCVJlbGF0aW9u CXB1YnJlbHNyZWw7CisJU2NhbktleURhdGEgc2NhbmtleTsKKwlTeXNTY2FuRGVzYyBzY2FuOwor CUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCXB1YnJlbHNyZWwgPSB0 YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwor CVNjYW5LZXlJbml0KCZzY2Fua2V5LAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycHVi aWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0 RGF0dW0ocHViaWQpKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocHVicmVsc3JlbCwK KwkJCQkJCQkgIFB1YmxpY2F0aW9uUmVsUHJwdWJpZEluZGV4SWQsCisJCQkJCQkJICB0cnVlLCBO VUxMLCAxLCAmc2NhbmtleSk7CisKKwkvKiBXZSBvbmx5IG5lZWQgdG8gZmluZCBhbnkgb2NjdXJy ZW5jZSBvZiBwcmV4Y2VwdCA9IHRydWUgKi8KKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAg PSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVs IHB1YnJlbDsKKworCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVD VCh0dXApOworCQlpZiAocHVicmVsLT5wcmV4Y2VwdCkKKwkJeworCQkJZm91bmQgPSB0cnVlOwor CQkJYnJlYWs7CisJCX0KKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Ns b3NlKHB1YnJlbHNyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gZm91bmQ7Cit9CisK IC8qCiAgKiBHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHRhYmxlcyBpbiB0aGUgZ2l2ZW4gcHVibGlj YXRpb24gYXJyYXkuCiAgKgpAQCAtMTE2OCwxNyArMTMzMiwxNyBAQCBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiB0aG9zZS4gT3RoZXJ3aXNlLCBnZXQg dGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZi4KIAkJCSAqLwogCQkJaWYgKHB1Yl9lbGVtLT5h bGx0YWJsZXMpCi0JCQkJcHViX2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlv bnMoUkVMS0lORF9SRUxBVElPTiwKLQkJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9v dCk7CisJCQkJcHViX2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMocHVi X2VsZW0sCisJCQkJCQkJCQkJCQkJCQkgUkVMS0lORF9SRUxBVElPTik7CiAJCQllbHNlCiAJCQl7 CiAJCQkJTGlzdAkgICAqcmVsaWRzLAogCQkJCQkJICAgKnNjaGVtYXJlbGlkczsKIAotCQkJCXJl bGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCi0JCQkJCQkJCQkJ CQkgcHViX2VsZW0tPnB1YnZpYXJvb3QgPwotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRf Uk9PVCA6Ci0JCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCQlyZWxpZHMg PSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJCQkJ CQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAkJ CQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxl bS0+b2lkLAogCQkJCQkJCQkJCQkJCQkJCXB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KIAkJCQkJCQkJ CQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgpAQCAtMTM2Nyw3ICsxNTMxLDcgQEAgcGdf Z2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQR19GVU5DVElPTl9BUkdTKQogCQlwdWJsaWNhdGlv biA9IEdldFB1YmxpY2F0aW9uQnlOYW1lKHB1Ym5hbWUsIGZhbHNlKTsKIAogCQlpZiAocHVibGlj YXRpb24tPmFsbHNlcXVlbmNlcykKLQkJCXNlcXVlbmNlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKFJFTEtJTkRfU0VRVUVOQ0UsIGZhbHNlKTsKKwkJCXNlcXVlbmNlcyA9IEdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9uLCBSRUxLSU5EX1NFUVVFTkNFKTsKIAogCQlm dW5jY3R4LT51c2VyX2ZjdHggPSBzZXF1ZW5jZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMKaW5kZXggZmMzYTRjMTllNjUuLmYwZmI0YTM4MTQ3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMTk4LDcgKzE5OCwxMiBAQCBPYmplY3RzSW5Q dWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlwZSkKIAkJeworCQkJY2FzZSBQVUJMSUNB VElPTk9CSl9FWENFUFRfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1 ZTsKKwkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOworCQkJCWJy ZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKKwkJCQlwdWJvYmotPnB1YnRhYmxl LT5leGNlcHQgPSBmYWxzZTsKIAkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVi dGFibGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NI RU1BOgpAQCAtNTE5LDggKzUyNCw4IEBAIEludmFsaWRhdGVQdWJSZWxTeW5jQ2FjaGUoT2lkIHB1 YmlkLCBib29sIHB1YmFsbHRhYmxlcykKIAkJICogYSB0YXJnZXQuIEhvd2V2ZXIsIFdBTCByZWNv cmRzIGZvciBUUlVOQ0FURSBzcGVjaWZ5IGJvdGggYSByb290IGFuZAogCQkgKiBpdHMgbGVhdmVz LgogCQkgKi8KLQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJ CQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJcmVsaWRzID0gR2V0SW5jbHVkZWRQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FM TCk7CiAJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1 YmlkLAogCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAKQEAgLTg0NSw2ICs4 NTAsNyBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCUxpc3QJICAgKnJlbGF0 aW9ucyA9IE5JTDsKIAlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CisJTGlzdAkgICAqcmVs cyA9IE5JTDsKIAogCS8qIG11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9uIGRhdGFiYXNlICov CiAJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKERhdGFiYXNlUmVsYXRpb25JZCwgTXlEYXRh YmFzZUlkLCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7CkBAIC05MjksOCArOTM1LDE3IEBAIENy ZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10 ICpzdG10KQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKIAkvKiBBc3NvY2lhdGUgb2Jq ZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KKwlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lk cyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCQkJCQkJICAgJnNjaGVt YWlkbGlzdCk7CisJaWYgKHJlbGF0aW9ucyAhPSBOSUwpCisJCXJlbHMgPSBPcGVuVGFibGVMaXN0 KHJlbGF0aW9ucyk7CisKIAlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJeworCQkvKiBQcm9j ZXNzIEVYQ0VQVCB0YWJsZSBsaXN0ICovCisJCWlmIChyZWxhdGlvbnMgIT0gTklMKQorCQkJUHVi bGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwogCQkvKgogCQkg KiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0 LiBTZXF1ZW5jZXMKIAkJICogcHVibGljYXRpb24gZG9lc24ndCByZXF1aXJlIGludmFsaWRhdGlv biwgYXMgcmVwbGljYSBpZGVudGl0eQpAQCAtOTQwLDkgKzk1NSw2IEBAIENyZWF0ZVB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCX0K IAllbHNlIGlmICghc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJewotCQlPYmplY3RzSW5QdWJs aWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJ CQkJCSAgICZzY2hlbWFpZGxpc3QpOwotCiAJCS8qIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHJlcXVp cmVzIHN1cGVydXNlciAqLwogCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2Vy KCkpCiAJCQllcmVwb3J0KEVSUk9SLApAQCAtOTUxLDkgKzk2Myw2IEBAIENyZWF0ZVB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJ CWlmIChyZWxhdGlvbnMgIT0gTklMKQogCQl7Ci0JCQlMaXN0CSAgICpyZWxzOwotCi0JCQlyZWxz ID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOwogCQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2Vz KHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290KTsKIApAQCAtOTYyLDcgKzk3MSw2IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQkJCQkJICAg cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCiAJCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhw dWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CiAJCX0K IAogCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKQEAgLTk3Niw2ICs5ODQsOSBAQCBDcmVhdGVQ dWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3Rt dCkKIAkJfQogCX0KIAorCWlmIChyZWxzICE9IE5JTCkKKwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7 CisKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJSW52b2tlT2JqZWN0 UG9zdENyZWF0ZUhvb2soUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDApOwpAQCAtMTA1 MCw4ICsxMDYxLDggQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJTG9ja0RhdGFiYXNlT2JqZWN0KFB1Ymxp Y2F0aW9uUmVsYXRpb25JZCwgcHViZm9ybS0+b2lkLCAwLAogCQkJCQkJICAgQWNjZXNzU2hhcmVM b2NrKTsKIAotCQlyb290X3JlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0t Pm9pZCwKLQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlyb290X3JlbGlk cyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJ CQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCByb290X3Jl bGlkcykKIAkJewpAQCAtMTE3MCw4ICsxMTgxLDggQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJICogdHJl ZXMsIG5vdCBqdXN0IHRob3NlIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlv bi4KIAkJICovCiAJCWlmIChyb290X3JlbGlkcyA9PSBOSUwpCi0JCQlyZWxpZHMgPSBHZXRQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCi0JCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9Q QVJUX0FMTCk7CisJCQlyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1 YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCQllbHNl CiAJCXsKIAkJCS8qCkBAIC0xMjU2LDggKzEyNjcsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVz KEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJsaWNhdGlv bkRyb3BUYWJsZXMocHViaWQsIHJlbHMsIGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2Jq ZWN0cyAqLwogCXsKLQkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlv bnMocHViaWQsCi0JCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCUxpc3QJ ICAgKm9sZHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJ CQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAkJTGlzdAkgICAqZGVscmVs cyA9IE5JTDsKIAkJTGlzdENlbGwgICAqb2xkbGM7CiAKQEAgLTEzNTgsNiArMTM2OSw3IEBAIEFs dGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBs ZSB0dXAsCiAJCQkJb2xkcmVsID0gcGFsbG9jX29iamVjdChQdWJsaWNhdGlvblJlbEluZm8pOwog CQkJCW9sZHJlbC0+d2hlcmVDbGF1c2UgPSBOVUxMOwogCQkJCW9sZHJlbC0+Y29sdW1ucyA9IE5J TDsKKwkJCQlvbGRyZWwtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCW9sZHJlbC0+cmVsYXRpb24gPSB0 YWJsZV9vcGVuKG9sZHJlbGlkLAogCQkJCQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9j ayk7CiAJCQkJZGVscmVscyA9IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKQEAgLTE0MDgsNyAr MTQyMCw4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LAogCQlMaXN0Q2VsbCAgICpsYzsKIAkJTGlzdAkgICAqcmVsb2lkczsKIAotCQlyZWxvaWRz ID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLCBQVUJMSUNBVElPTl9QQVJU X1JPT1QpOworCQlyZWxvaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJm b3JtLT5vaWQsCisJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9y ZWFjaChsYywgcmVsb2lkcykKIAkJewpAQCAtMTc3MSw2ICsxNzg0LDcgQEAgT3BlblRhYmxlTGlz dChMaXN0ICp0YWJsZXMpCiAJCXB1Yl9yZWwtPnJlbGF0aW9uID0gcmVsOwogCQlwdWJfcmVsLT53 aGVyZUNsYXVzZSA9IHQtPndoZXJlQ2xhdXNlOwogCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29s dW1uczsKKwkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQlyZWxzID0gbGFwcGVuZChy ZWxzLCBwdWJfcmVsKTsKIAkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBteXJlbGlkKTsK IApAQCAtMTg0Myw2ICsxODU3LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAKIAkJ CQkvKiBjaGlsZCBpbmhlcml0cyBjb2x1bW4gbGlzdCBmcm9tIHBhcmVudCAqLwogCQkJCXB1Yl9y ZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQkJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2Vw dDsKIAkJCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJCQlyZWxpZHMgPSBsYXBw ZW5kX29pZChyZWxpZHMsIGNoaWxkcmVsaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMKaW5kZXggNWUzYzA5NjRkMzguLjdiZGU5MDlmMjE2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3 b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKQEAgLTU3NSw2ICs1NzYs NzQgQEAgY2hlY2tfcHVibGljYXRpb25zKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpw dWJsaWNhdGlvbnMpCiAJfQogfQogCisvKgorICogRVJST1IgaWYgbXVsdGlwbGUgcHVibGljYXRp b25zIHdpdGggRVhDRVBUIGNsYXVzZXMgYXJlIHByZXNlbnQuCisgKgorICogTG9naWNhbCByZXBs aWNhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHN1YnNjcmliaW5nIHRvIG1vcmUgdGhhbiBvbmUKKyAq IHB1YmxpY2F0aW9uIHRoYXQgZGVmaW5lcyBhbiBleGNsdXNpb24gbGlzdC4KKyAqCisgKiBFeGNs dXNpb25zIGFyZSBldmFsdWF0ZWQgaW5kZXBlbmRlbnRseSBwZXIgcHVibGljYXRpb24sIGJ1dCBw dWJsaWNhdGlvbgorICogc2V0cyBhcmUgbWVyZ2VkIGF0IHN1YnNjcmlwdGlvbiB0aW1lLiBTdXBw b3J0aW5nIG11bHRpcGxlIGV4Y2x1c2lvbiBsaXN0cworICogd291bGQgeWllbGQgYW1iaWd1b3Vz IG9yIGNvbnRyYWRpY3Rvcnkgc2VtYW50aWNzIHVubGVzcyB0aGV5IGV4Y2x1ZGVkCisgKiBleGFj dGx5IHRoZSBzYW1lIHRhYmxlcy4gVG8gcHJldmVudCB0aGlzIGFtYmlndWl0eSwgYSBzdWJzY3Jp cHRpb24gbWF5CisgKiBpbmNsdWRlIGF0IG1vc3Qgb25lIHB1YmxpY2F0aW9uIHdpdGggYW4gRVhD RVBUIGNsYXVzZS4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3B1YmxpY2F0aW9uc19leGNlcHRf bGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGljYXRpb25zKQoreworCUxp c3QJICAgKmV4Y2VwdF9wdWJsaWNhdGlvbnMgPSBOSUw7CisJV2FsUmN2RXhlY1Jlc3VsdCAqcmVz OworCVN0cmluZ0luZm9EYXRhIGNtZDsKKwlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKKwlPaWQJCQl0 YWJsZVJvd1sxXSA9IHtURVhUT0lEfTsKKworCWlmIChsaXN0X2xlbmd0aChwdWJsaWNhdGlvbnMp IDw9IDEpCisJCXJldHVybjsKKworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmNtZCwKKwkJCQkJCSAgICJTRUxFQ1QgcC5wdWJuYW1lXG4iCisJCQkJCQkg ICAiIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkgICAiIFdIRVJF IHAucHVibmFtZSBJTiAoIik7CisKKwlHZXRQdWJsaWNhdGlvbnNTdHIocHVibGljYXRpb25zLCAm Y21kLCB0cnVlKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwKKwkJCQkJCSAgICIp XG4iCisJCQkJCQkgICAiICAgQU5EIEVYSVNUUyAoU0VMRUNUIDFcbiIKKwkJCQkJCSAgICIgICAg ICAgICAgICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKKwkJ CQkJCSAgICIgICAgICAgICAgICAgICAgV0hFUkUgcHIucHJwdWJpZCA9IHAub2lkXG4iCisJCQkJ CQkgICAiICAgICAgICAgICAgICAgICAgQU5EIHByLnByZXhjZXB0IElTIFRSVUUpIik7CisKKwly ZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4sIGNtZC5kYXRhLCAxLCB0YWJsZVJvdyk7CisJcGZyZWUo Y21kLmRhdGEpOworCisJaWYgKHJlcy0+c3RhdHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJybXNnKCJjb3VsZCBub3QgcmVjZWl2ZSBsaXN0IG9mIHB1Ymxp Y2F0aW9ucyBmcm9tIHRoZSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJICAgcmVzLT5lcnIpKTsKKwor CXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QocmVzLT50dXBsZWRlc2MsICZUVFNPcHNN aW5pbWFsVHVwbGUpOworCXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1cGxl c3RvcmUsIHRydWUsIGZhbHNlLCBzbG90KSkKKwl7CisJCWNoYXIJICAgKnB1Ym5hbWU7CisJCWJv b2wJCWlzbnVsbDsKKworCQlwdWJuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhzbG90X2dldGF0 dHIoc2xvdCwgMSwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJZXhjZXB0X3B1 YmxpY2F0aW9ucyA9IGxhcHBlbmQoZXhjZXB0X3B1YmxpY2F0aW9ucywgbWFrZVN0cmluZyhwdWJu YW1lKSk7CisJCUV4ZWNDbGVhclR1cGxlKHNsb3QpOworCX0KKworCUV4ZWNEcm9wU2luZ2xlVHVw bGVUYWJsZVNsb3Qoc2xvdCk7CisKKwl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CisKKwlDaGVj a1B1YmxpY2F0aW9uc0ZvckV4Y2VwdENsYXVzZXMoZXhjZXB0X3B1YmxpY2F0aW9ucyk7CisJbGlz dF9mcmVlX2RlZXAoZXhjZXB0X3B1YmxpY2F0aW9ucyk7Cit9CisKIC8qCiAgKiBBdXhpbGlhcnkg ZnVuY3Rpb24gdG8gYnVpbGQgYSB0ZXh0IGFycmF5IG91dCBvZiBhIGxpc3Qgb2YgU3RyaW5nIG5v ZGVzLgogICovCkBAIC04MzIsNiArOTAxLDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCWNoYXIJCXJlbGF0 aW9uX3N0YXRlOwogCiAJCQljaGVja19wdWJsaWNhdGlvbnMod3Jjb25uLCBwdWJsaWNhdGlvbnMp OworCQkJY2hlY2tfcHVibGljYXRpb25zX2V4Y2VwdF9saXN0KHdyY29ubiwgcHVibGljYXRpb25z KTsKIAkJCWNoZWNrX3B1YmxpY2F0aW9uc19vcmlnaW5fdGFibGVzKHdyY29ubiwgcHVibGljYXRp b25zLAogCQkJCQkJCQkJCQkgb3B0cy5jb3B5X2RhdGEsCiAJCQkJCQkJCQkJCSBvcHRzLnJldGFp bmRlYWR0dXBsZXMsIG9wdHMub3JpZ2luLApAQCAtOTk2LDYgKzEwNjYsOCBAQCBBbHRlclN1YnNj cmlwdGlvbl9yZWZyZXNoKFN1YnNjcmlwdGlvbiAqc3ViLCBib29sIGNvcHlfZGF0YSwKIAkJaWYg KHZhbGlkYXRlX3B1YmxpY2F0aW9ucykKIAkJCWNoZWNrX3B1YmxpY2F0aW9ucyh3cmNvbm4sIHZh bGlkYXRlX3B1YmxpY2F0aW9ucyk7CiAKKwkJY2hlY2tfcHVibGljYXRpb25zX2V4Y2VwdF9saXN0 KHdyY29ubiwgc3ViLT5wdWJsaWNhdGlvbnMpOworCiAJCS8qIEdldCB0aGUgcmVsYXRpb24gbGlz dCBmcm9tIHB1Ymxpc2hlci4gKi8KIAkJcHVicmVscyA9IGZldGNoX3JlbGF0aW9uX2xpc3Qod3Jj b25uLCBzdWItPnB1YmxpY2F0aW9ucyk7CiAKQEAgLTMyMzUsMyArMzMwNywyNyBAQCBkZWZHZXRT dHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZikKIAkJCQkJZGVmLT5kZWZuYW1lKSkpOwogCXJldHVy biBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIH0KKwor LyoKKyAqIEVuc3VyZSB0aGF0IGF0IG1vc3Qgb25lIHB1YmxpY2F0aW9uIGluIHRoZSBnaXZlbiBs aXN0IGRlZmluZXMgYW4KKyAqIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCisgKi8KK3ZvaWQKK0NoZWNr UHVibGljYXRpb25zRm9yRXhjZXB0Q2xhdXNlcyhMaXN0ICpleGNlcHRfcHVibGljYXRpb25zKQor eworCVN0cmluZ0luZm9EYXRhIHB1Ym5hbWVzOworCisJLyogTm90aGluZyB0byBkbyBpZiB6ZXJv IG9yIG9uZSBwdWJsaWNhdGlvbiBoYXMgRVhDRVBULiAqLworCWlmIChsaXN0X2xlbmd0aChleGNl cHRfcHVibGljYXRpb25zKSA8PSAxKQorCQlyZXR1cm47CisKKwlpbml0U3RyaW5nSW5mbygmcHVi bmFtZXMpOworCUdldFB1YmxpY2F0aW9uc1N0cihleGNlcHRfcHVibGljYXRpb25zLCAmcHVibmFt ZXMsIGZhbHNlKTsKKworCWxpc3RfZnJlZV9kZWVwKGV4Y2VwdF9wdWJsaWNhdGlvbnMpOworCisJ ZXJlcG9ydChFUlJPUiwKKwkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJZXJybXNnKCJjYW5ub3QgY29tYmluZSBwdWJsaWNhdGlvbnMgJXMgd2l0aCBhbiBFWENF UFQgVEFCTEUgY2xhdXNlIiwKKwkJCQkgICBwdWJuYW1lcy5kYXRhKSk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCmluZGV4IGIwNGIwZGJkMmEwLi5mYjU2YTZjNDFlMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKQEAgLTg2ODYsNyArODY4Niw3IEBAIEFURXhlY1NldEV4cHJlc3Npb24o QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUs CiAJICogZXhwcmVzc2lvbnMuCiAJICovCiAJaWYgKGF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVf R0VORVJBVEVEX1ZJUlRVQUwgJiYKLQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25H ZXRSZWxpZChyZWwpKSAhPSBOSUwpCisJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9u R2V0UmVsaWQocmVsKSwgTlVMTCwgTlVMTCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkFMVEVSIFRB QkxFIC8gU0VUIEVYUFJFU1NJT04gaXMgbm90IHN1cHBvcnRlZCBmb3IgdmlydHVhbCBnZW5lcmF0 ZWQgY29sdW1ucyBpbiB0YWJsZXMgdGhhdCBhcmUgcGFydCBvZiBhIHB1YmxpY2F0aW9uIiksCkBA IC0xODg4MSw3ICsxODg4MSw3IEBAIEFUUHJlcENoYW5nZVBlcnNpc3RlbmNlKEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBib29sIHRvTG9nZ2VkKQogCSAqIFVOTE9HR0VELCBh cyBVTkxPR0dFRCB0YWJsZXMgY2FuJ3QgYmUgcHVibGlzaGVkLgogCSAqLwogCWlmICghdG9Mb2dn ZWQgJiYKLQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKSAh PSBOSUwpCisJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg TlVMTCwgTlVMTCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygiY2Fubm90IGNoYW5n ZSB0YWJsZSBcIiVzXCIgdG8gdW5sb2dnZWQgYmVjYXVzZSBpdCBpcyBwYXJ0IG9mIGEgcHVibGlj YXRpb24iLApAQCAtMjAzMjIsNiArMjAzMjIsNyBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlz dCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAljb25zdCBjaGFy ICp0cmlnZ2VyX25hbWU7CiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CiAJTGlzdAkgICAqcGFydEJv dW5kQ29uc3RyYWludDsKKwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOwogCVBhcnNlU3Rh dGUgKnBzdGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxMKTsKIAogCXBzdGF0ZS0+cF9zb3VyY2V0 ZXh0ID0gY29udGV4dC0+cXVlcnlTdHJpbmc7CkBAIC0yMDM2MSw2ICsyMDM2Miw0MCBAQCBBVEV4 ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25D bWQgKmNtZCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkg ZXJybXNnKCJjYW5ub3QgYXR0YWNoIGEgdHlwZWQgdGFibGUgYXMgcGFydGl0aW9uIikpKTsKIAor CS8qCisJICogRGlzYWxsb3cgYXR0YWNoaW5nIGEgcGFydGl0aW9uIGlmIHRoZSB0YWJsZSBpcyBy ZWZlcmVuY2VkIGluIGEKKwkgKiBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNlLiBDaGFuZ2luZyB0 aGUgcGFydGl0aW9uIGhpZXJhcmNoeSBjb3VsZAorCSAqIGFsdGVyIHRoZSBlZmZlY3RpdmUgcHVi bGljYXRpb24gbWVtYmVyc2hpcC4KKwkgKi8KKwlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxh dGlvbkdldFJlbGlkKGF0dGFjaHJlbCksIE5VTEwsICZleGNlcHRwdWJvaWRzKTsKKwlpZiAoZXhj ZXB0cHVib2lkcyAhPSBOSUwpCisJeworCQlib29sIGZpcnN0ID0gdHJ1ZTsKKwkJU3RyaW5nSW5m b0RhdGEgcHVibmFtZXM7CisKKwkJaW5pdFN0cmluZ0luZm8oJnB1Ym5hbWVzKTsKKworCQlmb3Jl YWNoX29pZChwdWJpZCwgZXhjZXB0cHVib2lkcykKKwkJeworCQkJY2hhcgkgICAqcHVibmFtZSA9 IGdldF9wdWJsaWNhdGlvbl9uYW1lKHB1YmlkLCBmYWxzZSk7CisJCQlpZiAoIWZpcnN0KQorCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnB1Ym5hbWVzLCAiLCAiKTsKKworCQkJZmlyc3QgPSBm YWxzZTsKKworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcHVibmFtZXMsIHF1b3RlX2xpdGVy YWxfY3N0cihwdWJuYW1lKSk7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJZXJybXNnKCJj YW5ub3QgYXR0YWNoIHRhYmxlIFwiJXNcIiBhcyBwYXJ0aXRpb24gYmVjYXVzZSBpdCBpcyByZWZl cmVuY2VkIGluIHB1YmxpY2F0aW9uIFwiJXNcIiBFWENFUFQgY2xhdXNlIiwKKwkJCQkJICAgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoYXR0YWNocmVsKSwgcHVibmFtZXMuZGF0YSksCisJCQkJZXJy ZGV0YWlsKCJUaGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSBjYW5ub3QgY29udGFpbiB0YWJs ZXMgdGhhdCBhcmUgcGFydGl0aW9ucy4iKTsKKwkJCQllcnJoaW50KCJSZW1vdmUgdGhlIHRhYmxl IGZyb20gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UgYmVmb3JlIGF0dGFjaGluZyBpdC4i KSk7CisJfQorCisJbGlzdF9mcmVlKGV4Y2VwdHB1Ym9pZHMpOworCiAJLyoKIAkgKiBUYWJsZSBi ZWluZyBhdHRhY2hlZCBzaG91bGQgbm90IGFscmVhZHkgYmUgcGFydCBvZiBpbmhlcml0YW5jZTsg ZWl0aGVyCiAJICogYXMgYSBjaGlsZCB0YWJsZS4uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYzU2NzI1MmFj YzQuLjIxZWY3YmVlNzI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTIwMyw2ICsyMDMsNyBAQCBzdGF0aWMg dm9pZCBwcm9jZXNzQ0FTYml0cyhpbnQgY2FzX2JpdHMsIGludCBsb2NhdGlvbiwgY29uc3QgY2hh ciAqY29uc3RyVHlwZSwKIHN0YXRpYyBQYXJ0aXRpb25TdHJhdGVneSBwYXJzZVBhcnRpdGlvblN0 cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sCiAJCQkJCQkJCQkJCQljb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgdm9pZCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlw ZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsCisJCQkJCQkJCQkJCUxpc3QgKipwdWJvYmpl Y3RzLAogCQkJCQkJCQkJCQlib29sICphbGxfdGFibGVzLAogCQkJCQkJCQkJCQlib29sICphbGxf c2VxdWVuY2VzLAogCQkJCQkJCQkJCQljb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CkBAIC00NTUs NiArNDU2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlUcmlnZ2VyVHJhbnNpdGlv bnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJCQkJdmFjdXVtX3JlbGF0aW9uX2xpc3Qgb3B0X3ZhY3V1 bV9yZWxhdGlvbl9saXN0CiAJCQkJZHJvcF9vcHRpb25fbGlzdCBwdWJfb2JqX2xpc3QgcHViX2Fs bF9vYmpfdHlwZV9saXN0CisJCQkJcHViX2V4Y2VwdF9vYmpfbGlzdCBvcHRfcHViX2V4Y2VwdF9j bGF1c2UKIAogJXR5cGUgPHJldGNsYXVzZT4gcmV0dXJuaW5nX2NsYXVzZQogJXR5cGUgPG5vZGU+ CXJldHVybmluZ19vcHRpb24KQEAgLTU5Miw2ICs1OTQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogJXR5cGUgPG5vZGU+CXZhcl92YWx1ZSB6b25lX3ZhbHVlCiAldHlwZSA8cm9sZXNwZWM+ IGF1dGhfaWRlbnQgUm9sZVNwZWMgb3B0X2dyYW50ZWRfYnkKICV0eXBlIDxwdWJsaWNhdGlvbm9i amVjdHNwZWM+IFB1YmxpY2F0aW9uT2JqU3BlYworJXR5cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3Bl Yz4gUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCiAldHlwZSA8cHVibGljYXRpb25hbGxvYmplY3Rz cGVjPiBQdWJsaWNhdGlvbkFsbE9ialNwZWMKIAogJXR5cGUgPGtleXdvcmQ+IHVucmVzZXJ2ZWRf a2V5d29yZCB0eXBlX2Z1bmNfbmFtZV9rZXl3b3JkCkBAIC0xMDc5Miw3ICsxMDc5NSw3IEBAIEFs dGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dO RVIgVE8gUm9sZVNwZWMKICAqCiAgKiBwdWJfYWxsX29ial90eXBlIGlzIG9uZSBvZjoKICAqCi0g KgkJVEFCTEVTCisgKgkJVEFCTEVTIFtFWENFUFQgW1RBQkxFXSAoIHRhYmxlIFssIC4uLl0gKV0K ICAqCQlTRVFVRU5DRVMKICAqCiAgKiBDUkVBVEUgUFVCTElDQVRJT04gRk9SIHB1Yl9vYmogWywg Li4uXSBbV0lUSCBvcHRpb25zXQpAQCAtMTA4MTgsNyArMTA4MjEsOCBAQCBDcmVhdGVQdWJsaWNh dGlvblN0bXQ6CiAJCQkJCUNyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0 ZVB1YmxpY2F0aW9uU3RtdCk7CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwotCQkJCQlwcmVwcm9j ZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1LCAmbi0+Zm9yX2FsbF90YWJsZXMsCisJCQkJCXBy ZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoJDUsICZuLT5wdWJvYmplY3RzLAorCQkJCQkJ CQkJCQkJCSZuLT5mb3JfYWxsX3RhYmxlcywKIAkJCQkJCQkJCQkJCQkmbi0+Zm9yX2FsbF9zZXF1 ZW5jZXMsCiAJCQkJCQkJCQkJCQkJeXlzY2FubmVyKTsKIAkJCQkJbi0+b3B0aW9ucyA9ICQ2OwpA QCAtMTA5MzMsMTEgKzEwOTM3LDE3IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25PYmpTcGVj CiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKK29wdF9wdWJfZXhjZXB0X2Ns YXVzZToKKwkJCUVYQ0VQVCBvcHRfdGFibGUgJygnIHB1Yl9leGNlcHRfb2JqX2xpc3QgJyknCXsg JCQgPSAkNDsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCQkJeyAkJCA9IE5JTDsgfQorCQk7CisK IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzoKLQkJCQlBTEwgVEFCTEVTCisJCQkJQUxMIFRBQkxFUyBv cHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJCQkJewogCQkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNh dGlvbkFsbE9ialNwZWMpOwogCQkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTl9BTExf VEFCTEVTOworCQkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkMzsKIAkJCQkJCSQkLT5sb2NhdGlv biA9IEAxOwogCQkJCQl9CiAJCQkJfCBBTEwgU0VRVUVOQ0VTCkBAIC0xMDk1NCw2ICsxMDk2NCwy MyBAQCBwdWJfYWxsX29ial90eXBlX2xpc3Q6CVB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCQkJCQl7 ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCitQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWM6 CisJCQkgcmVsYXRpb25fZXhwcgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlv bk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9U QUJMRTsKKwkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJ CQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5yZWxh dGlvbiA9ICQxOworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKKwkJCQl9CisJOworCitwdWJfZXhj ZXB0X29ial9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxpc3Rf bWFrZTEoJDEpOyB9CisJCQl8IHB1Yl9leGNlcHRfb2JqX2xpc3QgJywnIFB1YmxpY2F0aW9uRXhj ZXB0T2JqU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJOwogCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKICAqCkBAIC0xOTgxMiw4ICsxOTgzOSw5IEBAIHBhcnNlUGFydGl0aW9u U3RyYXRlZ3koY2hhciAqc3RyYXRlZ3ksIGludCBsb2NhdGlvbiwgY29yZV95eXNjYW5fdCB5eXNj YW5uZXIpCiAgKiBBbHNvLCBjaGVja3MgaWYgdGhlIHB1Yl9vYmplY3RfdHlwZSBoYXMgYmVlbiBz cGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UuCiAgKi8KIHN0YXRpYyB2b2lkCi1wcmVwcm9jZXNzX3B1 Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIGJvb2wgKmFsbF90YWJs ZXMsCi0JCQkJCQkJCWJvb2wgKmFsbF9zZXF1ZW5jZXMsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVy KQorcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0 LCBMaXN0ICoqcHVib2JqZWN0cywKKwkJCQkJCQkJYm9vbCAqYWxsX3RhYmxlcywgYm9vbCAqYWxs X3NlcXVlbmNlcywKKwkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAJaWYgKCFh bGxfb2JqZWN0c19saXN0KQogCQlyZXR1cm47CkBAIC0xOTgzMyw2ICsxOTg2MSw3IEBAIHByZXBy b2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwgYm9vbCAq YWxsX3RhYmxlcywKIAkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihvYmotPmxvY2F0aW9uKSk7CiAK IAkJCSphbGxfdGFibGVzID0gdHJ1ZTsKKwkJCSpwdWJvYmplY3RzID0gbGlzdF9jb25jYXQoKnB1 Ym9iamVjdHMsIG9iai0+ZXhjZXB0X3RhYmxlcyk7CiAJCX0KIAkJZWxzZSBpZiAob2JqLT5wdWJv Ymp0eXBlID09IFBVQkxJQ0FUSU9OX0FMTF9TRVFVRU5DRVMpCiAJCXsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDdhNDkxODVkMjlkLi4zMDFlY2Zj NzVhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBA IC0xNzk3LDEyICsxNzk3LDE4IEBAIHBnb3V0cHV0X3NodXRkb3duKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCkKICAqIHRvIHNpbGVudGx5IGNvbnRpbnVlIHRoZSByZXBsaWNhdGlvbiBpbiB0 aGUgYWJzZW5jZSBvZiBhIG1pc3NpbmcgcHVibGljYXRpb24uCiAgKiBUaGlzIGlzIHJlcXVpcmVk IGJlY2F1c2Ugd2UgYWxsb3cgdGhlIHVzZXJzIHRvIGNyZWF0ZSBwdWJsaWNhdGlvbnMgYWZ0ZXIg dGhleQogICogaGF2ZSBzcGVjaWZpZWQgdGhlIHJlcXVpcmVkIHB1YmxpY2F0aW9ucyBhdCB0aGUg dGltZSBvZiByZXBsaWNhdGlvbiBzdGFydC4KKyAqCisgKiBXZSBhbHNvIGVuZm9yY2UgdGhhdCBu byBtb3JlIHRoYW4gb25lIHB1YmxpY2F0aW9uIGluIHRoZSBsaXN0IG1heSBjb250YWluCisgKiBh biBFWENFUFQgVEFCTEUgY2xhdXNlLiBVc2luZyBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBF WENFUFQgVEFCTEUgY2xhdXNlCisgKiBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgdG8gcHJldmVu dCBub24tZGV0ZXJtaW5pc3RpYyBmaWx0ZXJpbmcgYmVoYXZpb3IKKyAqIGFjcm9zcyBvdmVybGFw cGluZyBwdWJsaWNhdGlvbiBzZXRzLgogICovCiBzdGF0aWMgTGlzdCAqCiBMb2FkUHVibGljYXRp b25zKExpc3QgKnB1Ym5hbWVzKQogewogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlMaXN0Q2Vs bCAgICpsYzsKKwlMaXN0CSAgICpwdWJuYW1lc193aXRoX2V4Y2VwdCA9IE5JTDsKIAogCWZvcmVh Y2gobGMsIHB1Ym5hbWVzKQogCXsKQEAgLTE4MTAsNyArMTgxNiwxMyBAQCBMb2FkUHVibGljYXRp b25zKExpc3QgKnB1Ym5hbWVzKQogCQlQdWJsaWNhdGlvbiAqcHViID0gR2V0UHVibGljYXRpb25C eU5hbWUocHVibmFtZSwgdHJ1ZSk7CiAKIAkJaWYgKHB1YikKKwkJewogCQkJcmVzdWx0ID0gbGFw cGVuZChyZXN1bHQsIHB1Yik7CisKKwkJCS8qIENoZWNrIGlmIHRoaXMgcHVibGljYXRpb24gaGFz IGFuIEVYQ0VQVCBUQUJMRSBsaXN0LiAqLworCQkJaWYgKHB1YmxpY2F0aW9uX2hhc19hbnlfZXhj ZXB0X3RhYmxlKHB1Yi0+b2lkKSkKKwkJCQlwdWJuYW1lc193aXRoX2V4Y2VwdCA9IGxhcHBlbmQo cHVibmFtZXNfd2l0aF9leGNlcHQsIG1ha2VTdHJpbmcocHVibmFtZSkpOworCQl9CiAJCWVsc2UK IAkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKQEAgLTE4MTksNiArMTgzMSw5IEBAIExvYWRQdWJsaWNhdGlv bnMoTGlzdCAqcHVibmFtZXMpCiAJCQkJCWVycmhpbnQoIkNyZWF0ZSB0aGUgcHVibGljYXRpb24g aWYgaXQgZG9lcyBub3QgZXhpc3QuIikpOwogCX0KIAorCUNoZWNrUHVibGljYXRpb25zRm9yRXhj ZXB0Q2xhdXNlcyhwdWJuYW1lc193aXRoX2V4Y2VwdCk7CisKKwlsaXN0X2ZyZWVfZGVlcChwdWJu YW1lc193aXRoX2V4Y2VwdCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA4OSw3ICsyMTA0 LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVs YXRpb24pCiAJaWYgKCFlbnRyeS0+cmVwbGljYXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1h SWQgPSBnZXRfcmVsX25hbWVzcGFjZShyZWxpZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJl bGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwkJTGlzdAkgICAqcHViaWRzID0gTklMOwogCiAJ CS8qCiAJCSAqIFdlIGRvbid0IGFjcXVpcmUgYSBsb2NrIG9uIHRoZSBuYW1lc3BhY2Ugc3lzdGVt IHRhYmxlIGFzIHdlIGJ1aWxkCkBAIC0yMTA0LDYgKzIxMTksOCBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJY2hhcgkJcmVsa2lu ZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CiAJCUxpc3QJICAgKnJlbF9wdWJsaWNhdGlvbnMg PSBOSUw7CiAKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsICZwdWJpZHMsIE5VTEwp OworCiAJCS8qIFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICovCiAJ CWlmICghcHVibGljYXRpb25zX3ZhbGlkKQogCQl7CkBAIC0yMjA2LDE0ICsyMjIzLDQ5IEBAIGdl dF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQog CQkJICovCiAJCQlpZiAocHViLT5hbGx0YWJsZXMpCiAJCQl7Ci0JCQkJcHVibGlzaCA9IHRydWU7 Ci0JCQkJaWYgKHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRpb24pCisJCQkJTGlzdAkgICAq ZXhjZXB0cHViaWRzID0gTklMOworCisJCQkJaWYgKGFtX3BhcnRpdGlvbikKIAkJCQl7CiAJCQkJ CUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKIAot CQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKLQkJCQkJYW5jZXN0b3JfbGV2 ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOworCQkJCQkvKgorCQkJCQkgKiBPbmx5IHRoZSB0 b3AtbW9zdCBhbmNlc3RvciBtYXkgYXBwZWFyIGluIHRoZSBFWENFUFQKKwkJCQkJICogY2xhdXNl LiBUaGVyZWZvcmUsIGV4Y2x1c2lvbiBtdXN0IGJlIGV2YWx1YXRlZCBhdCB0aGUKKwkJCQkJICog dG9wLW1vc3QgYW5jZXN0b3IuCisJCQkJCSAqLworCQkJCQlpZiAocHViLT5wdWJ2aWFyb290KQor CQkJCQl7CisJCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKKwkJCQkJCWFu Y2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJCQkJfQorCQkJCQllbHNl CisJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkgKiBXaGVuIHB1Ymxpc2hpbmcgcGFydGl0aW9ucyBp bmRpdmlkdWFsbHksIHdlIG11c3QKKwkJCQkJCSAqIHN0aWxsIGNoZWNrIHdoZXRoZXIgdGhlIHRv cC1tb3N0IGFuY2VzdG9yIGlzCisJCQkJCQkgKiBleGNsdWRlZC4gSWYgdGhlIHJvb3QgaXMgZXhj bHVkZWQsIG5vbmUgb2YgaXRzCisJCQkJCQkgKiBwYXJ0aXRpb25zIHNob3VsZCBiZSBwdWJsaXNo ZWQuCisJCQkJCQkgKi8KKwkJCQkJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKGxsYXN0X29pZChh bmNlc3RvcnMpLCBOVUxMLAorCQkJCQkJCQkJCQkJJmV4Y2VwdHB1Ymlkcyk7CisJCQkJCX0KIAkJ CQl9CisKKwkJCQkvKgorCQkJCSAqIENoZWNrIGlmIHRoZSByZXNvbHZlZCByZWxhdGlvbiAodGhl IHRhYmxlIGl0c2VsZiBvciBpdHMKKwkJCQkgKiBwYXJ0aXRpb24gcm9vdCkgaXMgZXhwbGljaXRs eSBleGNsdWRlZCBmcm9tIHRoaXMKKwkJCQkgKiBwdWJsaWNhdGlvbi4KKwkJCQkgKi8KKwkJCQlH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhwdWJfcmVsaWQsIE5VTEwsICZleGNlcHRwdWJpZHMpOwor CisJCQkJaWYgKCFsaXN0X21lbWJlcl9vaWQoZXhjZXB0cHViaWRzLCBwdWItPm9pZCkpCisJCQkJ CXB1Ymxpc2ggPSB0cnVlOworCisJCQkJbGlzdF9mcmVlKGV4Y2VwdHB1Ymlkcyk7CisKKwkJCQlp ZiAoIXB1Ymxpc2gpCisJCQkJCWNvbnRpbnVlOwogCQkJfQogCiAJCQlpZiAoIXB1Ymxpc2gpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA2YjYzNGM5ZmZmMS4uZGMwMjFkYmI2Y2Qg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTc4OCw3ICs1Nzg4LDkgQEAgUmVs YXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiB2b2lkCiBSZWxh dGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRl c2MgKnB1YmRlc2MpCiB7Ci0JTGlzdAkgICAqcHVib2lkczsKKwlMaXN0CSAgICpwdWJvaWRzID0g TklMOworCUxpc3QJICAgKmV4Y2VwdHB1Ym9pZHMgPSBOSUw7CisJTGlzdAkgICAqYWxsdGFibGVz cHVib2lkczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlPaWQJ CQlzY2hlbWFpZDsKQEAgLTU4MjYsNyArNTgyOCw3IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlv bkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAlwdWJk ZXNjLT5nZW5jb2xzX3ZhbGlkX2Zvcl9kZWxldGUgPSB0cnVlOwogCiAJLyogRmV0Y2ggdGhlIHB1 YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KLQlwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMocmVsaWQpOworCUdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkLCAmcHVib2lk cywgJmV4Y2VwdHB1Ym9pZHMpOwogCXNjaGVtYWlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVs YXRpb24pOwogCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNj aGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOwogCkBAIC01ODM4LDE2ICs1ODQwLDI1IEBAIFJl bGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9u RGVzYyAqcHViZGVzYykKIAkJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCQl7CiAJCQlPaWQJCQlh bmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOworCQkJTGlzdAkgICAqYW5jZXN0b3JfcHVib2lkcyA9 IE5JTDsKKwkJCUxpc3QJICAgKmFuY2VzdG9yX2V4Y2VwdHB1Ym9pZHMgPSBOSUw7CiAKLQkJCXB1 Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCi0JCQkJCQkJCQkJCSBHZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvcikpOworCQkJR2V0UmVsYXRpb25QdWJsaWNhdGlv bnMoYW5jZXN0b3IsICZhbmNlc3Rvcl9wdWJvaWRzLAorCQkJCQkJCQkJJmFuY2VzdG9yX2V4Y2Vw dHB1Ym9pZHMpOworCisJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRz LCBhbmNlc3Rvcl9wdWJvaWRzKTsKIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5j ZXN0b3IpOwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKIAkJ CQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQkJZXhjZXB0cHVi b2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQoZXhjZXB0cHVib2lkcywKKwkJCQkJCQkJCQkJ CSAgIGFuY2VzdG9yX2V4Y2VwdHB1Ym9pZHMpOwogCQl9CiAJfQotCXB1Ym9pZHMgPSBsaXN0X2Nv bmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpKTsKIAor CWFsbHRhYmxlc3B1Ym9pZHMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMoKTsKKwlwdWJvaWRz ID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAorCQkJCQkJCQkJIGxpc3RfZGlmZmVy ZW5jZV9vaWQoYWxsdGFibGVzcHVib2lkcywKKwkJCQkJCQkJCQkJCQkJIGV4Y2VwdHB1Ym9pZHMp KTsKIAlmb3JlYWNoKGxjLCBwdWJvaWRzKQogCXsKIAkJT2lkCQkJcHViaWQgPSBsZmlyc3Rfb2lk KGxjKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCmluZGV4IDQ1MGNlYzI4NWIzLi4yMzhlNDRmNWI3NSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCkBAIC00NjIzLDkgKzQ2MjMsNTUgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQp CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnZpYXJvb3QpLCAidCIpID09IDAp OwogCQlwdWJpbmZvW2ldLnB1YmdlbmNvbHNfdHlwZSA9CiAJCQkqKFBRZ2V0dmFsdWUocmVzLCBp LCBpX3B1YmdlbmNvbHMpKTsKKwkJcHViaW5mb1tpXS5leGNlcHRfdGFibGVzID0gKFNpbXBsZVB0 ckxpc3QpCisJCXsKKwkJCU5VTEwsIE5VTEwKKwkJfTsKIAogCQkvKiBEZWNpZGUgd2hldGhlciB3 ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVPYmplY3QoJihwdWJpbmZvW2ld LmRvYmopLCBmb3V0KTsKKworCQkvKgorCQkgKiBHZXQgdGhlIGxpc3Qgb2YgdGFibGVzIGZvciBw dWJsaWNhdGlvbnMgc3BlY2lmaWVkIHdpdGggdGhlIEVYQ0VQVAorCQkgKiBUQUJMRSBjbGF1c2Uu IFRoaXMgaXMgaW50cm9kdWNlZCBpbiBQb3N0Z3JlU1FMIDE5LgorCQkgKgorCQkgKiBFWENFUFQg VEFCTEVTIGlzIHByb2Nlc3NlZCBoZXJlIGFuZCBvdXRwdXQgZGlyZWN0bHkgYnkKKwkJICogZHVt cFB1YmxpY2F0aW9uKCkuIFRoaXMgZGlmZmVycyBmcm9tIHRoZSBhcHByb2FjaCB1c2VkIGluCisJ CSAqIGR1bXBQdWJsaWNhdGlvblRhYmxlKCkgYW5kIGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZSgp LCBzaW5jZSB0aGF0CisJCSAqIGFwcHJvYWNoIHdvdWxkIHJlcXVpcmUgRVhDRVBUIFRBQkxFIHN1 cHBvcnQgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OLAorCQkgKiB3aGljaCBpcyBub3QgY3VycmVudGx5 IHN1cHBvcnRlZC4KKwkJICovCisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE5MDAwMCkK KwkJeworCQkJaW50CQkJbnRibHM7CisJCQlQR3Jlc3VsdCAgICpyZXNfdGJsczsKKworCQkJcmVz ZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJ CQkgICJTRUxFQ1QgcHJyZWxpZFxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJs aWNhdGlvbl9yZWxcbiIKKwkJCQkJCQkgICJXSEVSRSBwcnB1YmlkID0gJXUgYW5kIHByZXhjZXB0 IiwKKwkJCQkJCQkgIHB1YmluZm9baV0uZG9iai5jYXRJZC5vaWQpOworCisJCQlyZXNfdGJscyA9 IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKwor CQkJbnRibHMgPSBQUW50dXBsZXMocmVzX3RibHMpOworCisJCQlmb3IgKGludCBqID0gMDsgaiA8 IG50YmxzOyBqKyspCisJCQl7CisJCQkJT2lkCQkJcHJyZWxpZDsKKwkJCQlUYWJsZUluZm8gICp0 YmluZm87CisKKwkJCQlwcnJlbGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzX3RibHMsIGosIDAp KTsKKworCQkJCXRiaW5mbyA9IGZpbmRUYWJsZUJ5T2lkKHBycmVsaWQpOworCisJCQkJaWYgKHRi aW5mbyAhPSBOVUxMKQorCQkJCQlzaW1wbGVfcHRyX2xpc3RfYXBwZW5kKCZwdWJpbmZvW2ldLmV4 Y2VwdF90YWJsZXMsIHRiaW5mbyk7CisJCQl9CisKKwkJCVBRY2xlYXIocmVzX3RibHMpOworCQl9 CiAJfQogCiBjbGVhbnVwOgpAQCAtNDY2MiwxMCArNDcwOCwyOSBAQCBkdW1wUHVibGljYXRpb24o QXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKQogCWFwcGVuZFBR RXhwQnVmZmVyKHF1ZXJ5LCAiQ1JFQVRFIFBVQkxJQ0FUSU9OICVzIiwKIAkJCQkJICBxcHVibmFt ZSk7CiAKLQlpZiAocHViaW5mby0+cHViYWxsdGFibGVzICYmIHB1YmluZm8tPnB1YmFsbHNlcXVl bmNlcykKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMsIEFM TCBTRVFVRU5DRVMiKTsKLQllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJaWYgKHB1 YmluZm8tPnB1YmFsbHRhYmxlcykKKwl7CisJCWludAkJCW5fZXhjZXB0ID0gMDsKKwogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUyIpOworCisJCS8qIEluY2x1 ZGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpZiB0aGVyZSBhcmUgZXhjZXB0X3RhYmxlcy4gKi8KKwkJ Zm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4Y2VwdF90YWJsZXMuaGVh ZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJCXsKKwkJCVRhYmxlSW5mbyAgKnRiaW5mbyA9 IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCQlpZiAoKytuX2V4Y2VwdCA9PSAxKQorCQkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCBUQUJMRSAoIik7CisJCQllbHNl CisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsICIpOworCQkJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksICJPTkxZICVzIiwgZm10UXVhbGlmaWVkRHVtcGFibGUodGJpbmZvKSk7CisJ CX0KKwkJaWYgKG5fZXhjZXB0ID4gMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAi KSIpOworCisJCWlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMpCisJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiwgQUxMIFNFUVVFTkNFUyIpOworCX0KIAllbHNlIGlmIChwdWJpbmZv LT5wdWJhbGxzZXF1ZW5jZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBB TEwgU0VRVUVOQ0VTIik7CiAKQEAgLTQ4NDUsNiArNDkxMCw3IEBAIGdldFB1YmxpY2F0aW9uVGFi bGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAK IAkvKiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCiAJaWYgKGZv dXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwg IgogCQkJCQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfZXhwcihwcnF1YWwsIHBycmVsaWQpIEFTIHBy cmVscXVhbCwgIgpAQCAtNDg1Nyw2ICs0OTIzLDkgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJj aGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkg IiAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tz XSlcbiIKIAkJCQkJCQkgIiAgRUxTRSBOVUxMIEVORCkgcHJhdHRycyAiCiAJCQkJCQkJICJGUk9N IHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIik7CisJCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDE5MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIFdIRVJF IE5PVCBwci5wcmV4Y2VwdCIpOworCX0KIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCmluZGV4IDZkZWNlZWYyM2YzLi5lMTM4ZWYxMjc2YyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBA IC02NzYsNiArNjc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwogCWJvb2wJ CXB1YnRydW5jYXRlOwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGlzaEdlbmNvbHNUeXBlIHB1 YmdlbmNvbHNfdHlwZTsKKwlTaW1wbGVQdHJMaXN0IGV4Y2VwdF90YWJsZXM7CiB9IFB1YmxpY2F0 aW9uSW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggYmM3YTA4MmY1N2Eu LmYwMjkwZGU5YzNkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5w bAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMzE2NSw2ICszMTY1 LDM2IEBAIG15ICV0ZXN0cyA9ICgKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9z dF9kYXRhID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViOCcgPT4gewor CQljcmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChkdW1wX3Rlc3QudGVzdF90YWJsZSk7 JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjggRk9SIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSBXSVRIIChw dWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwK KwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwK KworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViOScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAs CisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVzdF90YWJsZSwgZHVtcF90ZXN0LnRlc3Rf c2Vjb25kX3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJ T04gcHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3Rf dGFibGUsIE9OTFkgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlKSBXSVRIIChwdWJsaXNoID0g J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9 PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdDUkVB VEUgUFVCTElDQVRJT04gcHViMTAnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDkyLAorCQljcmVh dGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgKGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNlX3BhcmVudCk7JywKKwkJcmVn ZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwIEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQsIE9O TFkgZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfY2hpbGQpIFdJVEggKHB1Ymxpc2ggPSAnaW5z ZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsg JWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCiAJJ0NSRUFURSBT VUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9z cWwgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA1NzFhNmEwMDNkNS4u ZjgxYWJlYjVjNzggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0zMDczLDE3ICszMDczLDQyIEBAIGRlc2NyaWJlT25l VGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCQkJCSAgIiAgICAgICAg ICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4i CiAJCQkJCQkJCSAgIiAgICAgICAgRUxTRSBOVUxMIEVORCkgIgogCQkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0 YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCi0JCQkJ CQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJl bGlkXG4iCi0JCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAg IgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBy cHViaWRcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBPTiBjLm9p ZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiIs CisJCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7CisKKwkJCQkvKgorCQkJCSAqIFNraXAgZW50cmll cyB3aGVyZSB0aGlzIHJlbGF0aW9uIGFwcGVhcnMgaW4gdGhlCisJCQkJICogcHVibGljYXRpb24n cyBFWENFUFQgVEFCTEUgbGlzdC4KKwkJCQkgKi8KKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAx OTAwMDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgQU5EIE5PVCBwci5wcmV4 Y2VwdFxuIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCQkgICJVTklP TlxuIgogCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgotCQkJCQkJCQkgICIgICAgICwgTlVM TFxuIgotCQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgor CQkJCQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb24gcFxuIgotCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdfY2F0 YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgotCQkJCQkJCQkgICJPUkRF UiBCWSAxOyIsCi0JCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCwgb2lkKTsKKwkJCQkJCQkJICAiV0hF UkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFi bGUoJyVzJylcbiIsCisJCQkJCQkJCSAgb2lkKTsKKworCQkJCS8qCisJCQkJICogRm9yIEZPUiBB TEwgVEFCTEVTIHB1YmxpY2F0aW9ucywgc2tpcCBwdWJsaWNhdGlvbnMgdGhhdAorCQkJCSAqIGV4 cGxpY2l0bHkgZXhjbHVkZSB0aGlzIHJlbGF0aW9uIHZpYSBFWENFUFQgVEFCTEUuCisJCQkJICov CisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkJCQkJICAiICAgICBBTkQgTk9UIEVYSVNUUyAoXG4iCisJCQkJCQkJCQkg ICIJCVNFTEVDVCAxXG4iCisJCQkJCQkJCQkgICIJCUZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbl9yZWwgcHJcbiIKKwkJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBj XG4iCisJCQkJCQkJCQkgICIJCU9OIHByLnBycmVsaWQgPSBwYy5vaWRcbiIKKwkJCQkJCQkJCSAg IgkJV0hFUkUgcHIucHJyZWxpZCA9ICclcycgQU5EIHByLnBycHViaWQgPSBwLm9pZClcbiIsCisJ CQkJCQkJCQkgIG9pZCk7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIg QlkgMTsiKTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTMxMzQsNiArMzE1OSwzNSBAQCBkZXNj cmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJUFFjbGVhcihy ZXN1bHQpOwogCQl9CiAKKwkJLyogUHJpbnQgcHVibGljYXRpb25zIHdoZXJlIHRoZSB0YWJsZSBp cyBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDAp CisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHB1Ym5h bWVcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgorCQkJ CQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBw ci5wcnB1YmlkXG4iCisJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcycgQU5EIHByLnBy ZXhjZXB0XG4iCisJCQkJCQkJICAiT1JERVIgQlkgMTsiLCBvaWQpOworCisJCQlyZXN1bHQgPSBQ U1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3JldHVy bjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJaWYgKHR1 cGxlcyA+IDApCisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgXygiRXhjZXB0IFB1Ymxp Y2F0aW9uczoiKSk7CisKKwkJCS8qIE1pZ2h0IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAq LworCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQorCQkJeworCQkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsICIgICAgXCIlc1wiIiwgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKKwor CQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRhKTsKKwkJCX0KKwkJCVBRY2xl YXIocmVzdWx0KTsKKwkJfQorCiAJCS8qCiAJCSAqIElmIHZlcmJvc2UsIHByaW50IE5PVCBOVUxM IGNvbnN0cmFpbnRzLgogCQkgKi8KQEAgLTY3NTMsOCArNjgwNywxMiBAQCBkZXNjcmliZVB1Ymxp Y2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCSAgIiAgICAgcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKIAkJCQkJCQkgICJXSEVSRSBjLnJlbG5hbWVzcGFjZSA9 IG4ub2lkXG4iCiAJCQkJCQkJICAiICBBTkQgYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJCQkJ ICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydcbiIKLQkJCQkJCQkgICJPUkRFUiBCWSAxLDIiLCBw dWJpZCk7CisJCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydcbiIsIHB1YmlkKTsKKwor CQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZi dWYsICIgIEFORCBOT1QgcHIucHJleGNlcHRcbiIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLCAiT1JERVIgQlkgMSwyIik7CiAJCQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNj KCZidWYsIF8oIlRhYmxlczoiKSwgZmFsc2UsICZjb250KSkKIAkJCQlnb3RvIGVycm9yX3JldHVy bjsKIApAQCAtNjc3Miw2ICs2ODMwLDIzIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNo YXIgKnBhdHRlcm4pCiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJfQogCQl9CisJCWVsc2UK KwkJeworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJeworCQkJCS8qIEdldCB0 YWJsZXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIHRoaXMgcHVibGljYXRpb24gKi8KKwkJCQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIHx8ICcu JyB8fCBjLnJlbG5hbWVcbiIKKwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNc biIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5v aWQgPSBjLnJlbG5hbWVzcGFjZVxuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAg IldIRVJFIHByLnBycHViaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkgICJP UkRFUiBCWSAxIiwgcHViaWQpOworCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2Mo JmJ1ZiwgXygiRXhjZXB0IHRhYmxlczoiKSwKKwkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJ CQkJZ290byBlcnJvcl9yZXR1cm47CisJCQl9CisJCX0KIAogCQlwcmludFRhYmxlKCZjb250LCBw c2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CiAJCXByaW50VGFibGVDbGVhbnVw KCZjb250KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA4YjkxYmMwMDA2Mi4uMzk0MDRlYTBm NjkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTM2NjksNyArMzY2OSwxNyBAQCBtYXRjaF9w cmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiKSkKIAkJQ09NUExFVEVfV0lU SCgiVEFCTEVTIiwgIlNFUVVFTkNFUyIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiKSkKLQkJQ09NUExF VEVfV0lUSCgiV0lUSCAoIik7CisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCBUQUJMRSAoIiwgIldJ VEggKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgo IlRBQkxFICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQorCQlD T01QTEVURV9XSVRIKCIoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUi LCAiKCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90 YWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigiLCBNYXRj aEFueU4pICYmIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIX1NDSEVN QV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNS RUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAi RVhDRVBUIiwgIlRBQkxFIiwgIigiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwg JywnKSkKKwkJQ09NUExFVEVfV0lUSCgiKSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIpKQogCQlDT01QTEVURV9X SVRIKCJJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRSIsIE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHBy ZXZfd2QsICcsJykpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggNmU1Zjcz Y2FhOWUuLmMzMzUyNGU0NDU2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBA IC0xNTAsMTYgKzE1MCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbEluZm8KIAlS ZWxhdGlvbglyZWxhdGlvbjsKIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlMaXN0CSAgICpjb2x1 bW5zOworCWJvb2wJCWV4Y2VwdDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiBleHRlcm4gUHVi bGljYXRpb24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVibGljYXRpb24g KkdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wgbWlzc2luZ19v ayk7Ci1leHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKTsKK2V4 dGVybiBib29sIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCwgTGlzdCAqKnB1Ymlk cywgTGlzdCAqKmV4Y2VwdF9wdWJpZHMpOwogCiAvKi0tLS0tLS0tLQotICogRXhwZWN0ZWQgdmFs dWVzIGZvciBwdWJfcGFydG9wdCBwYXJhbWV0ZXIgb2YgR2V0UHVibGljYXRpb25SZWxhdGlvbnMo KSwKLSAqIHdoaWNoIGFsbG93cyBjYWxsZXJzIHRvIHNwZWNpZnkgd2hpY2ggcGFydGl0aW9ucyBv ZiBwYXJ0aXRpb25lZCB0YWJsZXMKLSAqIG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24gdGhl eSBleHBlY3QgdG8gc2VlLgorICogRXhwZWN0ZWQgdmFsdWVzIGZvciBwdWJfcGFydG9wdCBwYXJh bWV0ZXIgb2YKKyAqIEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoKSwgd2hpY2ggYWxs b3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3aGljaAorICogcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25l ZCB0YWJsZXMgbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbiB0aGV5IGV4cGVjdCB0bworICog c2VlLgogICoKICAqCVJPT1Q6CW9ubHkgdGhlIHRhYmxlIGV4cGxpY2l0bHkgbWVudGlvbmVkIGlu IHRoZSBwdWJsaWNhdGlvbgogICoJTEVBRjoJb25seSBsZWFmIHBhcnRpdGlvbnMgaW4gZ2l2ZW4g dHJlZQpAQCAtMTcyLDkgKzE3NCwxMiBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRpb25QYXJ0T3B0 CiAJUFVCTElDQVRJT05fUEFSVF9BTEwsCiB9IFB1YmxpY2F0aW9uUGFydE9wdDsKIAotZXh0ZXJu IExpc3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVs YXRpb25zKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCk7CitleHRlcm4gTGlzdCAqR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHVi aWQsCisJCQkJCQkJCQkJICBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJu IExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVybiBMaXN0ICpHZXRB bGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCk7Citl eHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUHVibGljYXRpb24gKnB1Yiwg Y2hhciByZWxraW5kKTsKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1 YmlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsK IGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQs CkBAIC0xODksNiArMTk0LDcgQEAgZXh0ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1Ymxp Y2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKIAogZXh0ZXJuIGJvb2wgaXNfcHVi bGlzaGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVtYV9w dWJsaWNhdGlvbihPaWQgcHViaWQpOworZXh0ZXJuIGJvb2wgcHVibGljYXRpb25faGFzX2FueV9l eGNlcHRfdGFibGUoT2lkIHB1YmlkKTsKIGV4dGVybiBib29sIGNoZWNrX2FuZF9mZXRjaF9jb2x1 bW5fbGlzdChQdWJsaWNhdGlvbiAqcHViLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJTWVtb3J5Q29u dGV4dCBtY3h0LCBCaXRtYXBzZXQgKipjb2xzKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1Ymxp Y2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKaW5kZXggNjNlYjdjNzVmNTMu LmNlZmMzOGM5ZWQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uX3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgK QEAgLTMzLDYgKzMzLDcgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbl9yZWwsNjEwNixQdWJsaWNh dGlvblJlbFJlbGF0aW9uSWQpCiAJT2lkCQkJb2lkOwkJCS8qIG9pZCAqLwogCU9pZAkJCXBycHVi aWQgQktJX0xPT0tVUChwZ19wdWJsaWNhdGlvbik7IC8qIE9pZCBvZiB0aGUgcHVibGljYXRpb24g Ki8KIAlPaWQJCQlwcnJlbGlkIEJLSV9MT09LVVAocGdfY2xhc3MpOwkvKiBPaWQgb2YgdGhlIHJl bGF0aW9uICovCisJYm9vbAkJcHJleGNlcHQgQktJX0RFRkFVTFQoZik7CS8qIHJlbGF0aW9uIGlz IG5vdCBwdWJsaXNoZWQgKi8KIAogI2lmZGVmCUNBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUt bGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJcGdfbm9kZV90cmVlIHBycXVhbDsJCS8qIHF1 YWxpZmljYXRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKaW5k ZXggNjM1MDQyMzJhMTQuLjRiYjZmNWE0OTIxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5oCkBAIC0zNiw0ICszNiw2IEBAIGV4dGVybiB2b2lkIENoZWNrU3ViRGVhZFR1 cGxlUmV0ZW50aW9uKGJvb2wgY2hlY2tfZ3VjLCBib29sIHN1Yl9kaXNhYmxlZCwKIAkJCQkJCQkJ CSAgIGJvb2wgcmV0ZW50aW9uX2FjdGl2ZSwKIAkJCQkJCQkJCSAgIGJvb2wgbWF4X3JldGVudGlv bl9zZXQpOwogCitleHRlcm4gdm9pZCBDaGVja1B1YmxpY2F0aW9uc0ZvckV4Y2VwdENsYXVzZXMo TGlzdCAqZXhjZXB0X3B1YmxpY2F0aW9ucyk7CisKICNlbmRpZgkJCQkJCQkvKiBTVUJTQ1JJUFRJ T05DTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmMzcxMzE4MzViZS4uZmY0MTk0 M2E2ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQyOTksOSArNDI5OSwxMCBAQCB0eXBl ZGVmIHN0cnVjdCBBbHRlclRTQ29uZmlndXJhdGlvblN0bXQKIHR5cGVkZWYgc3RydWN0IFB1Ymxp Y2F0aW9uVGFibGUKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJ LyogcmVsYXRpb24gdG8gYmUgcHVibGlzaGVkICovCisJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkv KiBwdWJsaWNhdGlvbiByZWxhdGlvbiAqLwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFs aWZpY2F0aW9ucyAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBMaXN0IG9mIGNvbHVtbnMgaW4g YSBwdWJsaWNhdGlvbiB0YWJsZSAqLworCWJvb2wJCWV4Y2VwdDsJCQkvKiBUcnVlIGlmIGxpc3Rl ZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLwogfSBQdWJsaWNhdGlvblRhYmxlOwogCiAvKgpAQCAt NDMxMCw2ICs0MzExLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQogdHlwZWRl ZiBlbnVtIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIHsKIAlQVUJMSUNBVElPTk9CSl9UQUJMRSwJ CS8qIEEgdGFibGUgKi8KKwlQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEUsCS8qIEEgdGFibGUg aW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1B LAkvKiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9D VVJfU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIGZpcnN0IGVsZW1lbnQgb2YKIAkJCQkJCQkJCQkJ ICogc2VhcmNoX3BhdGggKi8KQEAgLTQzMzgsNiArNDM0MCw3IEBAIHR5cGVkZWYgc3RydWN0IFB1 YmxpY2F0aW9uQWxsT2JqU3BlYwogewogCU5vZGVUYWcJCXR5cGU7CiAJUHVibGljYXRpb25BbGxP YmpUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhpcyBwdWJsaWNhdGlvbiBvYmplY3QgKi8K KwlMaXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiB0YWJsZXMgc3BlY2lmaWVkIGluIHRoZSBFWENF UFQgY2xhdXNlICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3Ig LTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbkFsbE9ialNwZWM7CiAKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggN2ZiNDlhYWYyOWIuLjgwYjE1NDgy YTM0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMjEz LDMzICsyMTMsMTQxIEBAIE5vdC1udWxsIGNvbnN0cmFpbnRzOgogIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiAoMSByb3cpCiAK LURST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFs bHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9y X3RibF9zY2hlbWE7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUg VEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIFRB QkxFIHRlc3RzIGZvciBub3JtYWwgdGFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKKy0tIFNw ZWNpZnkgdGFibGUgbGlzdCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFCTEVT IHB1YmxpY2F0aW9uIGFuZAorLS0gdGhlIG9wdGlvbmFsIFRBQkxFIGtleXdvcmQuCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFi bGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBj b2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVz OgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgor CistLSBTcGVjaWZ5IHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIGEgRk9SIEFMTCBUQUJM RVMgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19l eGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHViX3RibDEpOworXGRScCsg dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2Vw dHRhYmxlMQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJh dGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0 YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIENoZWNrIHRoYXQgdGhlIHRh YmxlIGRlc2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNhdGlvbnMgd2hlcmUgaXQgaXMgbGlzdGVk CistLSBpbiB0aGUgRVhDRVBUIGNsYXVzZQorXGQgdGVzdHB1Yl90YmwxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiCisgQ29sdW1uIHwgIFR5 cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgIERlZmF1bHQgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGlkICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IG5leHR2YWwoJ3Rlc3RwdWJfdGJsMV9pZF9z ZXEnOjpyZWdjbGFzcykKKyBkYXRhICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKK0luZGV4ZXM6CisgICAgInRlc3RwdWJfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUg KGlkKQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIKK0V4Y2VwdCBQ dWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIgorICAg ICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEiCisKIFJFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKK0RST1AgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0 ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwg dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOworLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBUZXN0cyBmb3IgaW5oZXJpdGVkIHRhYmxlcywg YW5kCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIGluaGVyaXRlZCB0YWJsZXMKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQp OworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX2NoaWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0 cHViX3RibF9wYXJlbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0 ZXN0cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViMwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5z IHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6Ci0gICAgInB1Ymxp Yy50ZXN0cHViX3RibDMiCi0gICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgorICAgICJwdWJsaWMu dGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCiAKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibF9wYXJl bnQ7CiBcZFJwKyB0ZXN0cHViNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjQKICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg bm9uZSAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6Ci0gICAgInB1YmxpYy50ZXN0cHViX3RibDMi CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKKy0tIExpc3QgdGhlIHBhcmVudCB0 YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSAod2l0aG91dCBPTkxZIG9yICcqJykKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJf dGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJs aWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisK Ky0tIEVYQ0VQVCB3aXRoICcqJzogbGlzdCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFu dHMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRl c3RwdWI2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIK KyAgICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVudCIKKworLS0gRVhDRVBUIHdpdGggT05MWTog bGlzdCB0aGUgdGFibGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsIGJ1dCBub3QgaXRzIGRlc2NlbmRh bnRzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFIChPTkxZIHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjcKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVy YXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQg dGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCi1EUk9QIFRBQkxFIHRl c3RwdWJfdGJsMywgdGVzdHB1Yl90YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRl c3RwdWI0OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl90 YmxfcGFyZW50LCB0ZXN0cHViX3RibF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMs IHRlc3RwdWI0LCB0ZXN0cHViNSwgdGVzdHB1YjYsIHRlc3RwdWI3OworLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9y IHBhcnRpdGlvbmVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgVEFC TEUgdGVzdHB1Yl9yb290KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUgVEFC TEUgdGVzdHB1Yl9wYXJ0MSBQQVJUSVRJT04gT0YgdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEwMCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MiBQQVJUSVRJT04gT0Yg dGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKTsKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcm9v dCk7CitcZFJwKyB0ZXN0cHViODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI4CisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3Rw dWJfcm9vdCIKKworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI5IEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSAodGVzdHB1Yl9wYXJ0MSk7CitFUlJPUjogIGNhbm5vdCB1c2UgcHVibGljYXRp b24gRVhDRVBUIGNsYXVzZSBmb3IgcmVsYXRpb24gInRlc3RwdWJfcGFydDEiCitERVRBSUw6ICBU aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMu CitDUkVBVEUgVEFCTEUgdGFiX21haW4gKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7Cist LSBBdHRhY2hpbmcgYSBwYXJ0aXRpb24gaXMgbm90IGFsbG93ZWQgaWYgdGhlIHBhcnRpdGlvbmVk IHRhYmxlIGFwcGVhcnMgaW4gYQorLS0gcHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlLgorQUxU RVIgVEFCTEUgdGFiX21haW4gQVRUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Jvb3QgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMjAwKTsKK0VSUk9SOiAgY2Fubm90IGF0dGFjaCB0YWJsZSAidGVzdHB1 Yl9yb290IiBhcyBwYXJ0aXRpb24gYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGluIHB1YmxpY2F0 aW9uICIndGVzdHB1YjgnIiBFWENFUFQgY2xhdXNlCitERVRBSUw6ICBUaGUgcHVibGljYXRpb24g RVhDRVBUIGNsYXVzZSBjYW5ub3QgY29udGFpbiB0YWJsZXMgdGhhdCBhcmUgcGFydGl0aW9ucy4K K0hJTlQ6ICBSZW1vdmUgdGhlIHRhYmxlIGZyb20gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1 c2UgYmVmb3JlIGF0dGFjaGluZyBpdC4KK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9Q IFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVzdHB1Yl9wYXJ0MSwgdGVzdHB1Yl9wYXJ0MiwgdGFiX21h aW47CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlv bnMgd2l0aCBTRVFVRU5DRVMKIENSRUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JF QVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwKaW5kZXggODViMDBiZDY3YzguLjMxYjliN2Q0YzU0IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMDUsMjAgKzEwNSw2OSBAQCBTRUxFQ1QgcHVi bmFtZSwgcHViYWxsdGFibGVzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0 ZXN0cHViX2ZvcmFsbAogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJs ZXMKIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBF WENFUFQgVEFCTEUgdGVzdHMgZm9yIG5vcm1hbCB0YWJsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJS T1InOworLS0gU3BlY2lmeSB0YWJsZSBsaXN0IGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIGEgRk9S IEFMTCBUQUJMRVMgcHVibGljYXRpb24gYW5kCistLSB0aGUgb3B0aW9uYWwgVEFCTEUga2V5d29y ZC4KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBG T1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsK K1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCistLSBTcGVjaWZ5IHRhYmxl IGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24KK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFM TCBUQUJMRVMgRVhDRVBUICh0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJs ZXNfZXhjZXB0dGFibGUxCistLSBDaGVjayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93 cyB0aGUgcHVibGljYXRpb25zIHdoZXJlIGl0IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQVCBj bGF1c2UKK1xkIHRlc3RwdWJfdGJsMQorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJP UCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJs X3NjaGVtYTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJf Zm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0 dGFibGUxOwogCi1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFC TEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIGlu aGVyaXRlZCB0YWJsZXMsIGFuZAorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBpbmhlcml0ZWQg dGFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNF VCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0 IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKLVJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50IChhIGludCk7CitDUkVBVEUgVEFCTEUg dGVzdHB1Yl90YmxfY2hpbGQgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsX3BhcmVudCk7 CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVu dDsKIFxkUnArIHRlc3RwdWIzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxF IE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjQKKy0tIExpc3QgdGhlIHBh cmVudCB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSAod2l0aG91dCBPTkxZIG9yICcqJykKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRl c3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorLS0gRVhDRVBUIHdpdGggJyonOiBs aXN0IHRoZSB0YWJsZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBpbiB0aGUgRVhDRVBUIGNsYXVz ZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSAodGVzdHB1Yl90YmxfcGFyZW50ICopOworXGRScCsgdGVzdHB1YjYKKy0tIEVYQ0VQVCB3aXRo IE9OTFk6IGxpc3QgdGhlIHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlLCBidXQgbm90IGl0cyBk ZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSAoT05MWSB0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcKIAot RFJPUCBUQUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWIzLCB0ZXN0cHViNDsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRB QkxFIHRlc3RwdWJfdGJsX3BhcmVudCwgdGVzdHB1Yl90YmxfY2hpbGQ7CitEUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3RwdWI2LCB0ZXN0cHViNzsKKwor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQg VEFCTEUgdGVzdHMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJP Uic7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9yb290KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Uo YSk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MSBQQVJUSVRJT04gT0YgdGVzdHB1Yl9yb290 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwMCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0 MiBQQVJUSVRJT04gT0YgdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAw KTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFC TEUgKHRlc3RwdWJfcm9vdCk7CitcZFJwKyB0ZXN0cHViODsKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcGFydDEpOworCitD UkVBVEUgVEFCTEUgdGFiX21haW4gKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CistLSBB dHRhY2hpbmcgYSBwYXJ0aXRpb24gaXMgbm90IGFsbG93ZWQgaWYgdGhlIHBhcnRpdGlvbmVkIHRh YmxlIGFwcGVhcnMgaW4gYQorLS0gcHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlLgorQUxURVIg VEFCTEUgdGFiX21haW4gQVRUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Jvb3QgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMjAwKTsKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFC TEUgdGVzdHB1Yl9yb290LCB0ZXN0cHViX3BhcnQxLCB0ZXN0cHViX3BhcnQyLCB0YWJfbWFpbjsK K0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRpb25z IHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBhNGM3ZGJhZmY1OS4uMDcyODJhYTNjMTggMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVzdHMgKz0gewogICAg ICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAgICd0LzAzNV9jb25mbGljdHMucGwnLAogICAg ICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCisgICAgICAndC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0 X3RhYmxlLnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJs ZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFi bGUucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNhZGZmM2Q4YjZh Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFu Z2VzX2V4Y2VwdF90YWJsZS5wbApAQCAtMCwwICsxLDI3NCBAQAorCisjIENvcHlyaWdodCAoYykg MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJl cGxpY2F0aW9uIHRlc3RzIGZvciBFWENFUFQgVEFCTEUgcHVibGljYXRpb25zCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1 Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRwdWJs aXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3Rn cmVzJzsKKworIyBJbml0aWFsaXplIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVf c3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9z dWJzY3JpYmVyLT5zdGFydDsKKworbXkgJHJlc3VsdDsKKworc3ViIHRlc3RfZXhjZXB0X3Jvb3Rf cGFydGl0aW9uCit7CisJbXkgJHB1YnZpYXJvb3QgPSBAXzsKKworCSMgV2hlbiB0aGUgcm9vdCBw YXJ0aXRpb25lZCB0YWJsZSBpcyBsaXN0ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsCisJIyBhbGwg aXRzIHBhcnRpdGlvbnMgYXJlIG5vdCBwdWJsaXNoZWQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxKAorCQlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9w YXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgV0lUSCAocHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QgPSAkcHVidmlhcm9vdCk7CisJCUlOU0VSVCBJTlRPIHNjaDEudDEg VkFMVUVTICgxKSwgKDEwMSksICgxNTEpOworCSkpOworCSRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09O TkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiCisJ KTsKKwkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9w dWJsaXNoZXIsCisJCSd0YXBfc3ViX3BhcnQnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Ns b3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKKwkpOworCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyBzY2gx LnQxIFZBTFVFUyAoMiksICgxMDIpLCAoMTUyKSIpOworCisJIyBWZXJpZnkgdGhhdCBkYXRhIGlu c2VydGVkIGludG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbgor CSMgaXQgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UuCisJJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdf bG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwgTlVMTCwg J3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHViX3BhcnQn KSIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0 Jyk7CisKKwkjIENoZWNrIHRoYXQgbm8gcm93cyBhcmUgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy CisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCAqIEZST00gc2NoMS50MSIpOworCWlzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dz IG9uIHJvb3QgdGFibGUnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKKwlpcygkcmVz dWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQxJyk7CisKKwkkcmVzdWx0 ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICog RlJPTSBzY2gxLnBhcnQyIik7CisJaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFi bGUgc2NoMS5wYXJ0MicpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8xIik7CisJaXMoJHJl c3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8xJyk7CisKKwkkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU ICogRlJPTSBzY2gxLnBhcnQyXzIiKTsKKwlpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBv biB0YWJsZSBzY2gxLnBhcnQyXzInKTsKKworCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7CisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9w YXJ0OyIpOworfQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisjIEVYQ0VQVCBUQUJMRSB0ZXN0IGNhc2VzIGZvciBub3JtYWwgdGFibGVzCisjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIENyZWF0ZSBzY2hlbWFz IGFuZCB0YWJsZXMgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxFIHNjaDEu dGFiMSBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGE7CispKTsKKworIyBDcmVh dGUgc2NoZW1hcyBhbmQgdGFibGVzIG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRF IFRBQkxFIHNjaDEudGFiMSAoYSBpbnQpOworKSk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNh dGlvbiwgYW5kIGNyZWF0ZSBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCB0byBoZWxwIHdpdGgK KyMgbGF0ZXIgdGVzdHMuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IFRBQkxFIChzY2gxLnRhYjEpIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3Rl c3Rfc2xvdCcsICdwZ291dHB1dCcpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEiCispOwor CisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwKKwkndGFwX3N1 Yl9zY2hlbWEnKTsKKworIyBDaGVjayB0aGUgdGFibGUgZGF0YSBkb2VzIG5vdCBzeW5jIGZvciB0 aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgY2xhdXNlCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBz Y2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdjaGVjayB0aGVyZSBpcyBubyBpbml0 aWFsIGRhdGEgY29waWVkIGZvciB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiB0aGUgZXhjZXB0IGNs YXVzZScKKyk7CisKKyMgSW5zZXJ0IHNvbWUgZGF0YSBpbnRvIHRoZSB0YWJsZSBsaXN0ZWQgaW4g dGhlIEVYQ0VQVCBjbGF1c2UKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIklOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDExLDIwKSki KTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIGludG8gYSB0YWJsZSBsaXN0ZWQgaW4g dGhlIEVYQ0VQVCBjbGF1c2UgaXMgbm90CisjIHB1Ymxpc2hlZC4KKyRyZXN1bHQgPSAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZS T00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwg TlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfc3Vi X3NjaGVtYScpIgorKTsKK2lzKCRyZXN1bHQsIHFxKHQpLAorCSd2ZXJpZnkgbm8gY2hhbmdlcyBm b3IgdGFibGUgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlIGFyZSBwcmVzZW50IGluIHRoZSBy ZXBsaWNhdGlvbiBzbG90JworKTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIGludG8g YSB0YWJsZSBsaXN0ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgaXMgbm90CisjIHJlcGxpY2F0ZWQu Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1hJyk7Cisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnY2hlY2sg cmVwbGljYXRlZCBpbnNlcnRzIG9uIHN1YnNjcmliZXInKTsKKworIyBjbGVhbnVwCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9z dWJfc2NoZW1hIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cSgKKwlEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hOworCVRSVU5DQVRFIFRBQkxFIHNj aDEudGFiMTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJU UlVOQ0FURSBUQUJMRSBzY2gxLnRhYjEiKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQgVEFCTEUgdGVzdCBjYXNlcyBmb3IgcGFydGl0 aW9uZWQgdGFibGVzCisjIENoZWNrIGJlaGF2aW9yIG9mIEVYQ0VQVCBUQUJMRSB3aXRoIHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290IG9uIGEKKyMgcGFydGl0aW9uZWQgdGFibGUgYW5kIGl0cyBw YXJ0aXRpb25zLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorIyBTZXR1cCBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgcGFydGl0aW9ucyBvbiB0aGUgcHVibGlz aGVyIHRoYXQgbWFwIHRvIG5vcm1hbAorIyB0YWJsZXMgb24gdGhlIHN1YnNjcmliZXIKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSBz Y2gxLnQxKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CisJQ1JFQVRFIFRBQkxFIHNjaDEu cGFydDEgUEFSVElUSU9OIE9GIHNjaDEudDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAwKTsK KwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MiBQQVJUSVRJT04gT0Ygc2NoMS50MSBGT1IgVkFMVUVT IEZST00gKDEwMCkgVE8gKDIwMCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOzsKKwlDUkVBVEUgVEFC TEUgc2NoMS5wYXJ0Ml8xIFBBUlRJVElPTiBPRiBzY2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAo MTAwKSBUTyAoMTUwKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0Ml8yIFBBUlRJVElPTiBPRiBz Y2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTUwKSBUTyAoMjAwKTsKKykpOworCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHNj aDEudDEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQxKGEgaW50KTsKKwlDUkVBVEUg VEFCTEUgc2NoMS5wYXJ0MihhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMShhIGlu dCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMihhIGludCk7CispKTsKKwordGVzdF9leGNl cHRfcm9vdF9wYXJ0aXRpb24oJ2ZhbHNlJyk7Cit0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbign dHJ1ZScpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKCd0ZXN0X3Nsb3Qn LCBwZ19jdXJyZW50X3dhbF9sc24oKSk7IgorKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHdoZW4gYSBzdWJzY3JpcHRpb24gaXMgc3Vi c2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGljYXRpb25zCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIEVSUk9SIGlmIHN1YnNjcmliaW5nIHRvIG11bHRp cGxlIHB1YmxpY2F0aW9ucyBoYXZpbmcgRVhDRVBUIFRBQkxFLgorbXkgKCRzdGRvdXQsICRzdGRl cnIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlD UkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChzY2gxLnRh YjEpOworCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQg KHNjaDEudDEpOworKSk7CisKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1 YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3Vi IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRh cF9wdWIyIgorKTsKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9FUlJPUjogIGNhbm5vdCBjb21iaW5l IHB1YmxpY2F0aW9ucyAidGFwX3B1YjEiLCAidGFwX3B1YjIiIHdpdGggYW4gRVhDRVBUIFRBQkxF IGNsYXVzZS8sCisJJ3N1YnNjcmlwdGlvbiB3aXRoIG11bHRpcGxlIEVYQ0VQVCBUQUJMRSBwdWJs aWNhdGlvbicpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJP UCBQVUJMSUNBVElPTiB0YXBfcHViMicpOworCisjIE9LIHdoZW4gYSB0YWJsZSBpcyBleGNsdWRl ZCBieSBwdWIxIEVYQ0VQVCBUQUJMRSwgYnV0IGl0IGlzIGluY2x1ZGVkIGJ5IHB1YjIKKyMgRk9S IFRBQkxFCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlD UkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIFRBQkxFIHNjaDEudGFiMTsKKwlJTlNFUlQg SU5UTyBzY2gxLnRhYjEgVkFMVUVTKDEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMiIKKyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIs ICd0YXBfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx KElOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoMikpKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgndGFwX3N1YicpOworCiskcmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJPTSBzY2gxLnRhYjEgT1JERVIgQlkg YSIpOworaXMoICRyZXN1bHQsIHFxKDEKKzIpLAorCSJjaGVjayByZXBsaWNhdGlvbiBvZiBhIHRh YmxlIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQg YnkgYW5vdGhlciIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcSgKKwlEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyOworCVRSVU5DQVRFIHNjaDEudGFiMTsK KykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKFRSVU5DQVRF IHNjaDEudGFiMSkpOworCisjIE9LIHdoZW4gYSB0YWJsZSBpcyBleGNsdWRlZCBieSBwdWIxIEVY Q0VQVCBUQUJMRSwgYnV0IGl0IGlzIGluY2x1ZGVkIGJ5IHB1YjIKKyMgRk9SIEFMTCBUQUJMRVMK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViMiBGT1IgQUxMIFRBQkxFUzsKKwlJTlNFUlQgSU5UTyBzY2gxLnRh YjEgVkFMVUVTKDEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5z dHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViJyk7 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKElOU0VSVCBJTlRP IHNjaDEudGFiMSBWQUxVRVMoMikpKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgndGFwX3N1YicpOworCiskcmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUICogRlJPTSBzY2gxLnRhYjEgT1JERVIgQlkgYSIpOworaXMoICRy ZXN1bHQsIHFxKDEKKzIpLAorCSJjaGVjayByZXBsaWNhdGlvbiBvZiBhIHRhYmxlIGluIHRoZSBF WENFUFQgY2xhdXNlIG9mIG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlciIK Kyk7CisKKyMgRVJST1IgaWYgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FU SU9OIGNhdXNlcyB0aGUKKyMgc3Vic2NyaXB0aW9uIHRvIGVuZCB1cCB3aXRoIG11bHRpcGxlIHB1 YmxpY2F0aW9ucyBoYXZpbmcgRVhDRVBUIFRBQkxFLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXEoCisJRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMjsKKwlDUkVB VEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChzY2gxLnQxKTsK KykpOworCisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9zdWJzY3JpYmVyLT5w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFJFRlJFU0ggUFVC TElDQVRJT04iKTsKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9FUlJPUjogIGNhbm5vdCBjb21iaW5l IHB1YmxpY2F0aW9ucyAidGFwX3B1YjEiLCAidGFwX3B1YjIiIHdpdGggYW4gRVhDRVBUIFRBQkxF IGNsYXVzZS8sCisJJ3N1YnNjcmlwdGlvbiB3aXRoIG11bHRpcGxlIEVYQ0VQVCBUQUJMRSBwdWJs aWNhdGlvbicpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RS T1AgU1VCU0NSSVBUSU9OIHRhcF9zdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIxJyk7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMicpOworCisk bm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQz LjAKCg== --0000000000004d4b70064bc882d0 Content-Type: application/octet-stream; name="v51-0002-Support-SET-EXCEPT-TABLE-in-ALTER-PUBLICATION.patch" Content-Disposition: attachment; filename="v51-0002-Support-SET-EXCEPT-TABLE-in-ALTER-PUBLICATION.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4irdhk1 RnJvbSBjYTFjOGRiYmRkYzFjYWRmNTFkNTA2NWMwYzYyM2I2YjYyOGYzYmZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMjYgRmViIDIwMjYgMjI6NTA6NTcgKzA1MzAKU3ViamVjdDogW1BBVENIIHY1MSAyLzNd IFN1cHBvcnQgU0VUIEVYQ0VQVCBUQUJMRSBpbiBBTFRFUiBQVUJMSUNBVElPTgoKRXh0ZW5kIEFM VEVSIFBVQkxJQ0FUSU9OIHRvIHN1cHBvcnQgU0VUIEVYQ0VQVCBUQUJMRSBmb3IKcHVibGljYXRp b25zIGRlZmluZWQgd2l0aCBGT1IgQUxMIFRBQkxFUy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3B1YmxpY2F0aW9uLnNnbWwgICB8IDIzICsrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5jICAgIHwgNjEgKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICB8IDc3ICsrKysrKysrKysrKysrKysrKyst LS0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICA2ICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCB8IDM2ICsrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICB8IDI0ICsrKysrKysK IDYgZmlsZXMgY2hhbmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCAwMjg3NzBmMjE0OS4uZmVm YzRmY2JmNmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24u c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTIx LDE4ICsyMSwyNCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rp dj4KIDxzeW5vcHNpcz4KLUFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQUREIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCi1BTFRFUiBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9y ZXBsYWNlYWJsZT4gWywgLi4uXQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBREQgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2FkZF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCitB TFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25f c2V0X29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLl0KIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gRFJPUCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fZHJvcF9vYmplY3Q8L3JlcGxhY2Vh YmxlPiBbLCAuLi5dCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKQogQUxURVIg UFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPiBPV05FUiBUTyB7IDxyZXBsYWNlYWJsZT5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPiB8IENV UlJFTlRfUk9MRSB8IENVUlJFTlRfVVNFUiB8IFNFU1NJT05fVVNFUiB9CiBBTFRFUiBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJF TkFNRSBUTyA8cmVwbGFjZWFibGU+bmV3X25hbWU8L3JlcGxhY2VhYmxlPgogCi08cGhyYXNlPndo ZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+Cis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hZGRfb2JqZWN0PC9yZXBsYWNlYWJsZT4g aXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KICAgICBUQUJM RVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1l PC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiAKKzxwaHJhc2U+d2hl cmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3NldF9vYmplY3Q8 L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CisKKyAgICBFWENFUFQgVEFCTEUgWyBP TkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXQorICAgIFRBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IFssIC4uLiBdCisgICAgVEFCTEVTIElOIFND SEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFj ZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQorCiA8cGhyYXNlPmFuZCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fZHJvcF9vYmplY3Q8L3JlcGxhY2Vh YmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFssIC4u LiBdCkBAIC01NSwxMSArNjEsMTIgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgPHBhcmE+ CiAgICBUaGUgZmlyc3QgdGhyZWUgdmFyaWFudHMgY2hhbmdlIHdoaWNoIHRhYmxlcy9zY2hlbWFz IGFyZSBwYXJ0IG9mIHRoZQogICAgcHVibGljYXRpb24uICBUaGUgPGxpdGVyYWw+U0VUPC9saXRl cmFsPiBjbGF1c2Ugd2lsbCByZXBsYWNlIHRoZSBsaXN0IG9mCi0gICB0YWJsZXMvc2NoZW1hcyBp biB0aGUgcHVibGljYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3Q7IHRoZSBleGlzdGluZwot ICAgdGFibGVzL3NjaGVtYXMgdGhhdCB3ZXJlIHByZXNlbnQgaW4gdGhlIHB1YmxpY2F0aW9uIHdp bGwgYmUgcmVtb3ZlZC4gIFRoZQotICAgPGxpdGVyYWw+QUREPC9saXRlcmFsPiBhbmQgPGxpdGVy YWw+RFJPUDwvbGl0ZXJhbD4gY2xhdXNlcyB3aWxsIGFkZCBhbmQKLSAgIHJlbW92ZSBvbmUgb3Ig bW9yZSB0YWJsZXMvc2NoZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gIE5vdGUgdGhhdCBhZGRp bmcKLSAgIHRhYmxlcy9zY2hlbWFzIHRvIGEgcHVibGljYXRpb24gdGhhdCBpcyBhbHJlYWR5IHN1 YnNjcmliZWQgdG8gd2lsbCByZXF1aXJlIGFuCisgICBleGNlcHQgdGFibGVzL3RhYmxlcy9zY2hl bWFzIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhlCisgICBl eGlzdGluZyBleGNlcHQgdGFibGVzLyB0YWJsZXMvc2NoZW1hcyB0aGF0IHdlcmUgcHJlc2VudCBp biB0aGUgcHVibGljYXRpb24KKyAgIHdpbGwgYmUgcmVtb3ZlZC4gIFRoZSA8bGl0ZXJhbD5BREQ8 L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5EUk9QPC9saXRlcmFsPgorICAgY2xhdXNlcyB3aWxsIGFk ZCBhbmQgcmVtb3ZlIG9uZSBvciBtb3JlIHRhYmxlcy9zY2hlbWFzIGZyb20gdGhlIHB1YmxpY2F0 aW9uLgorICAgTm90ZSB0aGF0IGFkZGluZyB0YWJsZXMvc2NoZW1hcyB0byBhIHB1YmxpY2F0aW9u IHRoYXQgaXMgYWxyZWFkeSBzdWJzY3JpYmVkCisgICB0byB3aWxsIHJlcXVpcmUgYW4KICAgIDxs aW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1wdWJsaWNh dGlvbiI+CiAgICA8bGl0ZXJhbD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElD QVRJT048L2xpdGVyYWw+PC9saW5rPiBhY3Rpb24gb24gdGhlCiAgICBzdWJzY3JpYmluZyBzaWRl IGluIG9yZGVyIHRvIGJlY29tZSBlZmZlY3RpdmUuIE5vdGUgYWxzbyB0aGF0CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IGYwZmI0YTM4MTQ3Li5iMmZlMThiOTYwOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTE4MSw3ICsxODEsNyBA QCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKICAqLwogc3Rh dGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlz dCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3QgKipzY2hl bWFzKQorCQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHRyZWxzLCBMaXN0ICoqc2No ZW1hcykKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVib2Jq OwpAQCAtMjAwLDcgKzIwMCw3IEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1 Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQl7CiAJCQljYXNlIFBVQkxJQ0FU SU9OT0JKX0VYQ0VQVF9UQUJMRToKIAkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVl OwotCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJKmV4 Y2VwdHJlbHMgPSBsYXBwZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKIAkJCQli cmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEU6CiAJCQkJcHVib2JqLT5wdWJ0YWJs ZS0+ZXhjZXB0ID0gZmFsc2U7CkBAIC04NDksOCArODQ5LDggQEAgQ3JlYXRlUHVibGljYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJY2hhcgkJ cHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczsKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCUxpc3QJ ICAgKnJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CiAJ TGlzdAkgICAqc2NoZW1haWRsaXN0ID0gTklMOwotCUxpc3QJICAgKnJlbHMgPSBOSUw7CiAKIAkv KiBtdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwogCWFjbHJlc3VsdCA9 IG9iamVjdF9hY2xjaGVjayhEYXRhYmFzZVJlbGF0aW9uSWQsIE15RGF0YWJhc2VJZCwgR2V0VXNl cklkKCksIEFDTF9DUkVBVEUpOwpAQCAtOTM2LDE1ICs5MzYsMTkgQEAgQ3JlYXRlUHVibGljYXRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAkv KiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlPYmplY3RzSW5Q dWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0J CQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7Ci0JaWYgKHJlbGF0aW9ucyAhPSBOSUwpCi0JCXJlbHMg PSBPcGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7CisJCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywg JnNjaGVtYWlkbGlzdCk7CiAKIAlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJewogCQkvKiBQ cm9jZXNzIEVYQ0VQVCB0YWJsZSBsaXN0ICovCi0JCWlmIChyZWxhdGlvbnMgIT0gTklMKQorCQlp ZiAoZXhjZXB0cmVsYXRpb25zICE9IE5JTCkKKwkJeworCQkJTGlzdAkgICAqcmVsczsKKworCQkJ cmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0cmVsYXRpb25zKTsKIAkJCVB1YmxpY2F0aW9uQWRk VGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCQlDbG9zZVRhYmxlTGlzdChyZWxz KTsKKwkJfQogCiAJCS8qCiAJCSAqIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNh dGlvbiBpbmZvIGlzIHJlYnVpbHQuIFNlcXVlbmNlcwpAQCAtOTYzLDYgKzk2Nyw5IEBAIENyZWF0 ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpz dG10KQogCiAJCWlmIChyZWxhdGlvbnMgIT0gTklMKQogCQl7CisJCQlMaXN0CSAgICpyZWxzOwor CisJCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOwogCQkJVHJhbnNmb3JtUHViV2hl cmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJIHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290KTsKIApAQCAtOTcxLDYgKzk3OCw3IEBAIENyZWF0ZVB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJ CQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCiAJCQlQdWJsaWNhdGlvbkFk ZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOworCQkJQ2xvc2VUYWJsZUxpc3QocmVs cyk7CiAJCX0KIAogCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKQEAgLTk4NCw5ICs5OTIsNiBA QCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9u U3RtdCAqc3RtdCkKIAkJfQogCX0KIAotCWlmIChyZWxzICE9IE5JTCkKLQkJQ2xvc2VUYWJsZUxp c3QocmVscyk7Ci0KIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJSW52 b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDAp OwpAQCAtMTI2NywxNSArMTI3MiwyNCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJsaWNhdGlvbkRyb3BUYWJs ZXMocHViaWQsIHJlbHMsIGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0cyAqLwog CXsKLQkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJpZCwKLQkJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlib29s CQlpc2V4Y2VwdCA9IHB1YmZvcm0tPnB1YmFsbHRhYmxlczsKKwkJTGlzdAkgICAqb2xkcmVsaWRz OwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIAotCQlU cmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcXVlcnlTdHJpbmcsIHB1YmZvcm0tPnB1YnZp YXJvb3QpOworCQlpZiAoaXNleGNlcHQpCisJCQlvbGRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1Ymxp Y2F0aW9uVGFibGVzKHB1YmlkLAorCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1Qp OworCQllbHNlCisJCXsKKwkJCW9sZHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxh dGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKLQkJ Q2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywgcHVibGlzaF9z Y2hlbWEsCi0JCQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZpYXJvb3QpOworCQkJVHJhbnNmb3JtUHVi V2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5U3RyaW5nLCBwdWJmb3JtLT5wdWJ2aWFyb290KTsKKwor CQkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywgcHVibGlz aF9zY2hlbWEsCisJCQkJCQkJCQkgICBwdWJmb3JtLT5wdWJ2aWFyb290KTsKKwkJfQogCiAJCS8q CiAJCSAqIFRvIHJlY3JlYXRlIHRoZSByZWxhdGlvbiBsaXN0IGZvciB0aGUgcHVibGljYXRpb24s IGxvb2sgZm9yCkBAIC0xNDgzLDcgKzE0OTcsNyBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKICAqLwogc3RhdGljIHZvaWQKIENoZWNrQWx0ZXJQ dWJsaWNhdGlvbihBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKLQkJ CQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnNjaGVtYWlkbGlzdCkKKwkJCQkJICBMaXN0ICp0YWJs ZXMsIExpc3QgKmV4Y2VwdHRhYmxlcywgTGlzdCAqc2NoZW1haWRsaXN0KQogewogCUZvcm1fcGdf cHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVw KTsKIApAQCAtMTU0MSw2ICsxNTU1LDE0IEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkJCSAgIE5hbWVTdHIocHVi Zm9ybS0+cHVibmFtZSkpLAogCQkJCQllcnJkZXRhaWwoIlRhYmxlcyBvciBzZXF1ZW5jZXMgY2Fu bm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNh dGlvbnMuIikpOwogCX0KKworCS8qIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1hbmlw dWxhdGUgdGhlIHB1YmxpY2F0aW9uIHRhYmxlcy4gKi8KKwlpZiAoZXhjZXB0dGFibGVzICYmICFw dWJmb3JtLT5wdWJhbGx0YWJsZXMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coInB1Ymxp Y2F0aW9uIFwiJXNcIiBpcyBkZWZpbmVkIGFzIE5PTiBGT1IgQUxMIFRBQkxFUyIsCisJCQkJCSAg IE5hbWVTdHIocHViZm9ybS0+cHVibmFtZSkpLAorCQkJCWVycmRldGFpbCgiRVhDRVBUIFRhYmxl cyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIG5vbiBGT1IgQUxMIFRBQkxFUyBw dWJsaWNhdGlvbnMuIikpOwogfQogCiAvKgpAQCAtMTU3OSwxMyArMTYwMSwxNSBAQCBBbHRlclB1 YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQp CiAJZWxzZQogCXsKIAkJTGlzdAkgICAqcmVsYXRpb25zID0gTklMOworCQlMaXN0CSAgICpleGNl cHRyZWxhdGlvbnMgPSBOSUw7CiAJCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKIAkJT2lk CQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMo c3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1h aWRsaXN0KTsKKwkJCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CiAK LQkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxp c3QpOworCQlDaGVja0FsdGVyUHVibGljYXRpb24oc3RtdCwgdHVwLCByZWxhdGlvbnMsIGV4Y2Vw dHJlbGF0aW9ucywKKwkJCQkJCQkgIHNjaGVtYWlkbGlzdCk7CiAKIAkJaGVhcF9mcmVldHVwbGUo dHVwKTsKIApAQCAtMTYwNiw2ICsxNjMwLDcgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQllcnJtc2coInB1Ymxp Y2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7 CiAKKwkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25zLCBleGNlcHRyZWxhdGlvbnMp OwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUt PnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKIAkJQWx0ZXJQ dWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5k ZXggMjFlZjdiZWU3MjkuLjMyZWNiYjFjZjVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTIwNyw3ICsyMDcs NyBAQCBzdGF0aWMgdm9pZCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFs bF9vYmplY3RzX2xpc3QsCiAJCQkJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsCiAJCQkJCQkJCQkJ CWJvb2wgKmFsbF9zZXF1ZW5jZXMsCiAJCQkJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVy KTsKLXN0YXRpYyB2b2lkIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19s aXN0LAorc3RhdGljIGJvb2wgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVj X2xpc3QsCiAJCQkJCQkJCSAgIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAKQEAgLTU4MSw3ICs1ODEsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCQkJCUJpdCBDb25zdEJpdCBCaXRXaXRoTGVuZ3RoIEJpdFdpdGhvdXRMZW5ndGgKICV0eXBl IDxzdHI+CQljaGFyYWN0ZXIKICV0eXBlIDxzdHI+CQlleHRyYWN0X2FyZwotJXR5cGUgPGJvb2xl YW4+IG9wdF92YXJ5aW5nIG9wdF90aW1lem9uZSBvcHRfbm9faW5oZXJpdAorJXR5cGUgPGJvb2xl YW4+IG9wdF92YXJ5aW5nIG9wdF90aW1lem9uZSBvcHRfbm9faW5oZXJpdCBvcHRfZXhjZXB0CiAK ICV0eXBlIDxpdmFsPglJY29uc3QgU2lnbmVkSWNvbnN0CiAldHlwZSA8c3RyPgkJU2NvbnN0IGNv bW1lbnRfdGV4dCBub3RpZnlfcGF5bG9hZApAQCAtMTA4MzAsMTYgKzEwODMwLDI4IEBAIENyZWF0 ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQl9CiAJCQl8IENSRUFURSBQVUJMSUNBVElPTiBuYW1lIEZP UiBwdWJfb2JqX2xpc3Qgb3B0X2RlZmluaXRpb24KIAkJCQl7CisJCQkJCWJvb2wgaGFzX2V4Y2Vw dF90YWJsZTsKIAkJCQkJQ3JlYXRlUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRl UHVibGljYXRpb25TdG10KTsKIAogCQkJCQluLT5wdWJuYW1lID0gJDM7CiAJCQkJCW4tPm9wdGlv bnMgPSAkNjsKIAkJCQkJbi0+cHVib2JqZWN0cyA9IChMaXN0ICopICQ1OwotCQkJCQlwcmVwcm9j ZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lcik7CisJCQkJCWhhc19leGNl cHRfdGFibGUgPSBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsCisJCQkJCQkJ CQkJCQkJCQkgIHl5c2Nhbm5lcik7CisJCQkJCWlmIChoYXNfZXhjZXB0X3RhYmxlKQorCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCQkJCWVycm1zZygiRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIEFMTCBU QUJMRVMgUFVCTElDQVRJT04iKSk7CisKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJ OwogCitvcHRfZXhjZXB0OgorCQkJRVhDRVBUCQkJCQkJCQkJeyAkJCA9IHRydWU7IH0KKwkJCXwg LypFTVBUWSovCQkJCQkJCQl7ICQkID0gZmFsc2U7IH0KKwkJOworCiAvKgogICogRk9SIFRBQkxF IGFuZCBGT1IgVEFCTEVTIElOIFNDSEVNQSBzcGVjaWZpY2F0aW9ucwogICoKQEAgLTEwODU0LDE0 ICsxMDg2NiwxNCBAQCBDcmVhdGVQdWJsaWNhdGlvblN0bXQ6CiAgKiByZWxhdGlvbl9leHByIGhl cmUuCiAgKi8KIFB1YmxpY2F0aW9uT2JqU3BlYzoKLQkJCVRBQkxFIHJlbGF0aW9uX2V4cHIgb3B0 X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCisJCQlvcHRfZXhjZXB0IFRBQkxFIHJlbGF0aW9u X2V4cHIgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1h a2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7Ci0JCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElD QVRJT05PQkpfVEFCTEU7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gKCQxKSA/IFBVQkxJQ0FUSU9O T0JKX0VYQ0VQVF9UQUJMRSA6IFBVQkxJQ0FUSU9OT0JKX1RBQkxFOwogCQkJCQkkJC0+cHVidGFi bGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5yZWxh dGlvbiA9ICQyOwotCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKLQkJCQkJJCQtPnB1 YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0OworCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0g JDM7CisJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQ0OworCQkJCQkkJC0+cHVidGFibGUt PndoZXJlQ2xhdXNlID0gJDU7CiAJCQkJfQogCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQK IAkJCQl7CkBAIC0xMTAxMCwxMSArMTEwMjIsMTggQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJ CQkJfQogCQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIEFERF9QIHB1Yl9vYmpfbGlzdAogCQkJ CXsKKwkJCQkJYm9vbCBoYXNfZXhjZXB0X3RhYmxlID0gZmFsc2U7CiAJCQkJCUFsdGVyUHVibGlj YXRpb25TdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJQdWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4t PnB1Ym5hbWUgPSAkMzsKIAkJCQkJbi0+cHVib2JqZWN0cyA9ICQ1OwotCQkJCQlwcmVwcm9jZXNz X3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lcik7CisJCQkJCWhhc19leGNlcHRf dGFibGUgPSBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsCisJCQkJCQkJCQkJ CQkJCQkgIHl5c2Nhbm5lcik7CisJCQkJCWlmIChoYXNfZXhjZXB0X3RhYmxlKQorCQkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CQkJCWVycm1zZygiRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1 c2UiKSk7CisKIAkJCQkJbi0+YWN0aW9uID0gQVBfQWRkT2JqZWN0czsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwogCQkJCX0KQEAgLTExMDMwLDExICsxMTA0OSwxOCBAQCBBbHRlclB1YmxpY2F0aW9u U3RtdDoKIAkJCQl9CiAJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgRFJPUCBwdWJfb2JqX2xp c3QKIAkJCQl7CisJCQkJCWJvb2wgaGFzX2V4Y2VwdF90YWJsZSA9IGZhbHNlOwogCQkJCQlBbHRl clB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyUHVibGljYXRpb25TdG10KTsKIAog CQkJCQluLT5wdWJuYW1lID0gJDM7CiAJCQkJCW4tPnB1Ym9iamVjdHMgPSAkNTsKLQkJCQkJcHJl cHJvY2Vzc19wdWJvYmpfbGlzdChuLT5wdWJvYmplY3RzLCB5eXNjYW5uZXIpOworCQkJCQloYXNf ZXhjZXB0X3RhYmxlID0gcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChuLT5wdWJvYmplY3RzLAorCQkJ CQkJCQkJCQkJCQkJICB5eXNjYW5uZXIpOworCQkJCQlpZiAoaGFzX2V4Y2VwdF90YWJsZSkKKwkJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJCQllcnJtc2coIkVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxsb3dlZCBvbmx5IGZvciBT RVQgY2xhdXNlIikpOworCiAJCQkJCW4tPmFjdGlvbiA9IEFQX0Ryb3BPYmplY3RzOwogCQkJCQkk JCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTk4ODAsMTYgKzE5OTA2LDE5IEBAIHByZXByb2Nl c3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwgTGlzdCAqKnB1 Ym9iamVjdHMsCiAvKgogICogUHJvY2VzcyBwdWJvYmpzcGVjX2xpc3QgdG8gY2hlY2sgZm9yIGVy cm9ycyBpbiBhbnkgb2YgdGhlIG9iamVjdHMgYW5kCiAgKiBjb252ZXJ0IFBVQkxJQ0FUSU9OT0JK X0NPTlRJTlVBVElPTiBpbnRvIGFwcHJvcHJpYXRlIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUuCisg KgorICogUmV0dXJuIHRydWUgaWYgYW4gRVhDRVBUIHRhYmxlIGlzIGZvdW5kLgogICovCi1zdGF0 aWMgdm9pZAorc3RhdGljIGJvb2wKIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jq c3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIHsKIAlMaXN0Q2VsbCAgICpjZWxs OwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVib2JqOwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUg cHJldm9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CisJYm9vbAkJZm91bmRl eGNlcHR0YWJsZSA9IGZhbHNlOwogCiAJaWYgKCFwdWJvYmpzcGVjX2xpc3QpCi0JCXJldHVybjsK KwkJcmV0dXJuIGZhbHNlOwogCiAJcHVib2JqID0gKFB1YmxpY2F0aW9uT2JqU3BlYyAqKSBsaW5p dGlhbChwdWJvYmpzcGVjX2xpc3QpOwogCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElD QVRJT05PQkpfQ09OVElOVUFUSU9OKQpAQCAtMTk5MDYsNyArMTk5MzUsOCBAQCBwcmVwcm9jZXNz X3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5u ZXIpCiAJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFU SU9OKQogCQkJcHVib2JqLT5wdWJvYmp0eXBlID0gcHJldm9ianR5cGU7CiAKLQkJaWYgKHB1Ym9i ai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRSkKKwkJaWYgKHB1Ym9iai0+cHVi b2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRSB8fAorCQkJcHVib2JqLT5wdWJvYmp0eXBl ID09IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRSkKIAkJewogCQkJLyogcmVsYXRpb24gbmFt ZSBvciBwdWJ0YWJsZSBtdXN0IGJlIHNldCBmb3IgdGhpcyB0eXBlIG9mIG9iamVjdCAqLwogCQkJ aWYgKCFwdWJvYmotPm5hbWUgJiYgIXB1Ym9iai0+cHVidGFibGUpCkBAIC0xOTkyNSw2ICsxOTk1 NSwyNSBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29y ZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJcHVib2JqLT5wdWJ0YWJsZSA9IHB1YnRhYmxlOwog CQkJCXB1Ym9iai0+bmFtZSA9IE5VTEw7CiAJCQl9CisKKwkJCWlmIChwdWJvYmotPnB1Ym9ianR5 cGUgPT0gUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFKQorCQkJeworCQkJCWZvdW5kZXhjZXB0 dGFibGUgPSB0cnVlOworCisJCQkJLyogV0hFUkUgY2xhdXNlIGlzIG5vdCBhbGxvd2VkIG9uIGFu IGV4Y2VwdCB0YWJsZSAqLworCQkJCWlmIChwdWJvYmotPnB1YnRhYmxlLT53aGVyZUNsYXVzZSkK KwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCQllcnJtc2coIldIRVJFIGNsYXVzZSBub3QgYWxsb3dlZCBmb3IgZXhjZXB0IHRh YmxlIiksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKwor CQkJCS8qIENvbHVtbiBsaXN0IGlzIG5vdCBhbGxvd2VkIG9uIGEgZXhjZXB0IHRhYmxlICovCisJ CQkJaWYgKHB1Ym9iai0+cHVidGFibGUgJiYgcHVib2JqLT5wdWJ0YWJsZS0+Y29sdW1ucykKKwkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCQllcnJtc2coImNvbHVtbiBzcGVjaWZpY2F0aW9uIG5vdCBhbGxvd2VkIGZvciBleGNl cHQgdGFibGUiKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikp OworCQkJfQogCQl9CiAJCWVsc2UgaWYgKHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElP Tk9CSl9UQUJMRVNfSU5fU0NIRU1BIHx8CiAJCQkJIHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJM SUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSkKQEAgLTE5OTYwLDYgKzIwMDA5LDggQEAg cHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2Fu X3QgeXlzY2FubmVyKQogCiAJCXByZXZvYmp0eXBlID0gcHVib2JqLT5wdWJvYmp0eXBlOwogCX0K KworCXJldHVybiBmb3VuZGV4Y2VwdHRhYmxlOwogfQogCiAvKi0tLS0tLS0tLS0KZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuaW4uYwppbmRleCAzOTQwNGVhMGY2OS4uMGZjMTZhM2UxMTAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKQEAgLTIzMTgsOSArMjMxOCwxMSBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQg cGF0dGVybl9pZCwKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gRFJPUCAqLwogCWVsc2Ug aWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJEUk9QIikpCiAJ CUNPTVBMRVRFX1dJVEgoIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKLQkvKiBBTFRFUiBQ VUJMSUNBVElPTiA8bmFtZT4gU0VUICovCisJCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBT RVQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiU0VUIikpCi0JCUNPTVBMRVRFX1dJVEgoIigiLCAiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJM RSIpOworCQlDT01QTEVURV9XSVRIKCIoIiwgIkVYQ0VQVCIsICJUQUJMRVMgSU4gU0NIRU1BIiwg IlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIlNFVCIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUiKTsKIAllbHNl IGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8 U0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9Q TFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9U IExJS0UgRSdwZ1xcXFxfJSUnIiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQKaW5kZXggODBiMTU0ODJhMzQuLmExMjJmZTA4Y2VlIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMTI2LDYgKzEyNiwxNiBAQCBBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0Owog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKKy0tIGZhaWwgLSBjYW4ndCBh ZGQgYW4gRVhDRVBUIFRBQkxFIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOwor RVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFsbG93ZWQgb25seSBmb3IgU0VUIGNsYXVzZQor LS0gZmFpbCAtIGNhbid0IGRyb3AgYW4gRVhDRVBUIFRBQkxFIGZyb20gJ0ZPUiBUQUJMRScgcHVi bGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBFWENFUFQg VEFCTEUgdGVzdHB1Yl90YmwxOworRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFsbG93ZWQg b25seSBmb3IgU0VUIGNsYXVzZQorLS0gZmFpbCAtIGNhbid0IHNldCBhbiBFWENFUFQgVEFCTEUg dG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y dGFibGUgU0VUIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CitFUlJPUjogIHB1YmxpY2F0aW9u ICJ0ZXN0cHViX2ZvcnRhYmxlIiBpcyBkZWZpbmVkIGFzIE5PTiBGT1IgQUxMIFRBQkxFUworREVU QUlMOiAgRVhDRVBUIFRhYmxlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIG5v biBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiAtLSBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgcHVibGlj YXRpb24gd2l0aCBzY2hlbWEgYW5kIHRhYmxlIG9mIHRoZSBzYW1lCkBAIC0yMTMsNiArMjIzLDE2 IEBAIE5vdC1udWxsIGNvbnN0cmFpbnRzOgogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiAoMSByb3cpCiAKKy0tIGZhaWwgLSBj YW4ndCBhZGQgYW4gRVhDRVBUIFRBQkxFIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIEVYQ0VQVCBUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX25vcGs7CitFUlJPUjogIEVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxsb3dlZCBvbmx5IGZvciBT RVQgY2xhdXNlCistLSBmYWlsIC0gY2FuJ3QgZHJvcCBhbiBFWENFUFQgVEFCTEUgZnJvbSBzY2hl bWEgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIERST1Ag RVhDRVBUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKK0VSUk9SOiAgRVhDRVBUIFRBQkxF IGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1c2UKKy0tIGZhaWwgLSBjYW4ndCBzZXQg YW4gRVhDRVBUIFRBQkxFIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JzY2hlbWEgU0VUIEVYQ0VQVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7 CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNjaGVtYSIgaXMgZGVmaW5lZCBhcyBO T04gRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIEVYQ0VQVCBUYWJsZXMgY2Fubm90IGJlIGFkZGVk IHRvIG9yIGRyb3BwZWQgZnJvbSBub24gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBFWENFUFQgVEFC TEUgdGVzdHMgZm9yIG5vcm1hbCB0YWJsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpAQCAtMjU1LDYgKzI3NSwyMiBAQCBFeGNlcHQgUHVibGljYXRpb25z OgogICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSIKICAgICAidGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIgogCistLSBSZXBsYWNlIHRoZSBwdWJsaWNhdGlvbiBF WENFUFQgdGFibGUgbGlzdCB3aXRoIGEgc3BlY2lmaWMgRVhDRVBUIHRhYmxlLgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgU0VUIEVYQ0VQVCBUQUJM RSB0ZXN0cHViX3RibDE7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAg ICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgor CistLSBmYWlsIC0gRHJvcHBpbmcgRVhDRVBUIHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBEUk9QIEVYQ0VQ VCBUQUJMRSB0ZXN0cHViX3RibDE7CitFUlJPUjogIEVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxsb3dl ZCBvbmx5IGZvciBTRVQgY2xhdXNlCistLSBmYWlsIC0gQWRkaW5nIEVYQ0VQVCB0YWJsZSBpcyBu b3Qgc3VwcG9ydGVkLgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUgQUREIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CitFUlJPUjogIEVYQ0VQVCBU QUJMRSBjbGF1c2UgYWxsb3dlZCBvbmx5IGZvciBTRVQgY2xhdXNlCiBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7CiBEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwg dGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUs IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbAppbmRleCAzMWI5YjdkNGM1NC4uMjA4NjUzOWZkYzIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTc0LDYgKzc0LDEzIEBAIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKIAorLS0gZmFpbCAtIGNhbid0IGFkZCBhbiBFWENF UFQgVEFCTEUgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9ydGFibGUgQUREIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CistLSBmYWlsIC0g Y2FuJ3QgZHJvcCBhbiBFWENFUFQgVEFCTEUgZnJvbSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBEUk9QIEVYQ0VQVCBUQUJMRSB0ZXN0 cHViX3RibDE7CistLSBmYWlsIC0gY2FuJ3Qgc2V0IGFuIEVYQ0VQVCBUQUJMRSB0byAnRk9SIFRB QkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQg RVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKKwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEZPUiBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0OwogLS0gc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIHB1YmxpY2F0 aW9uIHdpdGggc2NoZW1hIGFuZCB0YWJsZSBvZiB0aGUgc2FtZQpAQCAtMTA1LDYgKzExMiwxMyBA QCBTRUxFQ1QgcHVibmFtZSwgcHViYWxsdGFibGVzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUg cHVibmFtZSA9ICd0ZXN0cHViX2ZvcmFsbAogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVzdHB1 Yl9mb3JhbGx0YWJsZXMKIAorLS0gZmFpbCAtIGNhbid0IGFkZCBhbiBFWENFUFQgVEFCTEUgdG8g c2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBB REQgRVhDRVBUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKKy0tIGZhaWwgLSBjYW4ndCBk cm9wIGFuIEVYQ0VQVCBUQUJMRSBmcm9tIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRFJPUCBFWENFUFQgVEFCTEUgcHViX3Rlc3QudGVzdHB1 Yl9ub3BrOworLS0gZmFpbCAtIGNhbid0IHNldCBhbiBFWENFUFQgVEFCTEUgdG8gc2NoZW1hIHB1 YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgRVhDRVBU IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKKwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIG5vcm1hbCB0 YWJsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt MTIwLDYgKzEzNCwxNiBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdAogLS0gaW4gdGhlIEVYQ0VQ VCBjbGF1c2UKIFxkIHRlc3RwdWJfdGJsMQogCistLSBSZXBsYWNlIHRoZSBwdWJsaWNhdGlvbiBF WENFUFQgdGFibGUgbGlzdCB3aXRoIGEgc3BlY2lmaWMgRVhDRVBUIHRhYmxlLgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgU0VUIEVYQ0VQVCBUQUJM RSB0ZXN0cHViX3RibDE7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQor CistLSBmYWlsIC0gRHJvcHBpbmcgRVhDRVBUIHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBEUk9QIEVYQ0VQ VCBUQUJMRSB0ZXN0cHViX3RibDE7CisKKy0tIGZhaWwgLSBBZGRpbmcgRVhDRVBUIHRhYmxlIGlz IG5vdCBzdXBwb3J0ZWQuCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19l eGNlcHR0YWJsZSBBREQgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKKwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwogRFJPUCBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hl bWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRh YmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTE7Ci0tIAoyLjQzLjAKCg== --0000000000004d4b70064bc882d0 Content-Type: application/octet-stream; name="v51-0003-Support-DROP-EXCEPT-TABLE-in-ALTER-PUBLICATION.patch" Content-Disposition: attachment; filename="v51-0003-Support-DROP-EXCEPT-TABLE-in-ALTER-PUBLICATION.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm4irdhp2 RnJvbSBkN2MyMGFlZDEyMjgzNTUwZmU5NmZkNTg1MDVlY2YzNjE2Y2Q4NTExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgRmViIDIwMjYgMjE6MjY6MTggKzA1MzAKU3ViamVjdDogW1BBVENIIHY1 MSAzLzNdIFN1cHBvcnQgRFJPUCBFWENFUFQgVEFCTEUgaW4gQUxURVIgUFVCTElDQVRJT04KCkV4 dGVuZCBBTFRFUiBQVUJMSUNBVElPTiB0byBzdXBwb3J0IERST1AgRVhDRVBUIFRBQkxFIGZvcgpw dWJsaWNhdGlvbnMgZGVmaW5lZCB3aXRoIEZPUiBBTEwgVEFCTEVTLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgICAgICB8IDExICsrKy0tLS0KIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8IDExICsrLS0tLS0KIHNyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICA2ICsrLS0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8IDIyICsrKysrKysrKy0t LS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgMyAr LQogLi4uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCAgICAgICAgIHwgMjkgKysr KysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAyNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0 aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXgg ZmVmYzRmY2JmNmQuLjBiNGE1Nzg1YjBmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNh dGlvbi5zZ21sCkBAIC00MSw3ICs0MSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAKIDxw aHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9kcm9w X29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIFRBQkxFIFsg T05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNl YWJsZT4gWyAqIF0gWywgLi4uIF0KKyAgICBbIEVYQ0VQVCBdIFRBQkxFIFsgT05MWSBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0g WywgLi4uIF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4u LiBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9h bmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgpAQCAtNjMsMTAgKzYzLDExIEBA IEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICBwdWJsaWNhdGlvbi4gIFRoZSA8bGl0ZXJhbD5T RVQ8L2xpdGVyYWw+IGNsYXVzZSB3aWxsIHJlcGxhY2UgdGhlIGxpc3Qgb2YKICAgIGV4Y2VwdCB0 YWJsZXMvdGFibGVzL3NjaGVtYXMgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmll ZCBsaXN0OyB0aGUKICAgIGV4aXN0aW5nIGV4Y2VwdCB0YWJsZXMvIHRhYmxlcy9zY2hlbWFzIHRo YXQgd2VyZSBwcmVzZW50IGluIHRoZSBwdWJsaWNhdGlvbgotICAgd2lsbCBiZSByZW1vdmVkLiAg VGhlIDxsaXRlcmFsPkFERDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkRST1A8L2xpdGVyYWw+Ci0g ICBjbGF1c2VzIHdpbGwgYWRkIGFuZCByZW1vdmUgb25lIG9yIG1vcmUgdGFibGVzL3NjaGVtYXMg ZnJvbSB0aGUgcHVibGljYXRpb24uCi0gICBOb3RlIHRoYXQgYWRkaW5nIHRhYmxlcy9zY2hlbWFz IHRvIGEgcHVibGljYXRpb24gdGhhdCBpcyBhbHJlYWR5IHN1YnNjcmliZWQKLSAgIHRvIHdpbGwg cmVxdWlyZSBhbgorICAgd2lsbCBiZSByZW1vdmVkLiAgVGhlIDxsaXRlcmFsPkFERDwvbGl0ZXJh bD4gY2xhdXNlcyB3aWxsIGFkZCBvbmUgb3IgbW9yZQorICAgdGFibGVzL3NjaGVtYXMgdG8gdGhl IHB1YmxpY2F0aW9uLiAgVGhlIDxsaXRlcmFsPkRST1A8L2xpdGVyYWw+IGNsYXVzZXMKKyAgIHdp bGwgcmVtb3ZlIG9uZSBvciBtb3JlIGV4Y2VwdCB0YWJsZXMvdGFibGVzL3NjaGVtYXMgZnJvbSB0 aGUgcHVibGljYXRpb24uCisgICBOb3RlIHRoYXQgYWRkaW5nIHRhYmxlcy9zY2hlbWFzIG9yIGRy b3BwaW5nIGV4Y2VwdCB0YWJsZXMgdG8gYSBwdWJsaWNhdGlvbgorICAgdGhhdCBpcyBhbHJlYWR5 IHN1YnNjcmliZWQgdG8gd2lsbCByZXF1aXJlIGFuCiAgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0 ZXJzdWJzY3JpcHRpb24tcGFyYW1zLXJlZnJlc2gtcHVibGljYXRpb24iPgogICAgPGxpdGVyYWw+ QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OPC9saXRlcmFsPjwvbGlu az4gYWN0aW9uIG9uIHRoZQogICAgc3Vic2NyaWJpbmcgc2lkZSBpbiBvcmRlciB0byBiZWNvbWUg ZWZmZWN0aXZlLiBOb3RlIGFsc28gdGhhdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMzJlY2JiMWNmNWEuLmFl NzgyNzM0MjZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTExMDMyLDcgKzExMDMyLDcgQEAgQWx0ZXJQdWJs aWNhdGlvblN0bXQ6CiAJCQkJCWlmIChoYXNfZXhjZXB0X3RhYmxlKQogCQkJCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCWVy cm1zZygiRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1c2UiKSk7 CisJCQkJCQkJCWVycm1zZygiRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNF VC9EUk9QIGNsYXVzZSIpKTsKIAogCQkJCQluLT5hY3Rpb24gPSBBUF9BZGRPYmplY3RzOwogCQkJ CQkkJCA9IChOb2RlICopIG47CkBAIC0xMTA0OSwxOCArMTEwNDksMTEgQEAgQWx0ZXJQdWJsaWNh dGlvblN0bXQ6CiAJCQkJfQogCQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIERST1AgcHViX29i al9saXN0CiAJCQkJewotCQkJCQlib29sIGhhc19leGNlcHRfdGFibGUgPSBmYWxzZTsKIAkJCQkJ QWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7 CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwogCQkJCQluLT5wdWJvYmplY3RzID0gJDU7Ci0JCQkJ CWhhc19leGNlcHRfdGFibGUgPSBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMs Ci0JCQkJCQkJCQkJCQkJCQkgIHl5c2Nhbm5lcik7Ci0JCQkJCWlmIChoYXNfZXhjZXB0X3RhYmxl KQotCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCi0JCQkJCQkJCWVycm1zZygiRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkg Zm9yIFNFVCBjbGF1c2UiKSk7Ci0KKwkJCQkJcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChuLT5wdWJv YmplY3RzLCB5eXNjYW5uZXIpOwogCQkJCQluLT5hY3Rpb24gPSBBUF9Ecm9wT2JqZWN0czsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAwZmMx NmEzZTExMC4uMGEzNzA1YmI4YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIzMTcsOCAr MjMxNywxMCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExF VEVfV0lUSCgiLCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBEUk9QICovCiAJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkRST1AiKSkK LQkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOwotCQkvKiBBTFRF UiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICovCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCIsICJU QUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkRST1AiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJ VEgoIlRBQkxFIik7CisJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IFNFVCAqLwogCWVsc2Ug aWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiKSkKIAkJ Q09NUExFVEVfV0lUSCgiKCIsICJFWENFUFQiLCAiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIp OwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJT RVQiLCAiRVhDRVBUIikpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CmluZGV4IGExMjJmZTA4Y2VlLi5mMzAxYjc0ODljMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTEyOCwxMCArMTI4LDExIEBAIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAKIC0tIGZhaWwgLSBjYW4ndCBhZGQgYW4gRVhDRVBUIFRBQkxFIHRvICdGT1IgVEFC TEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBF WENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOwotRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFs bG93ZWQgb25seSBmb3IgU0VUIGNsYXVzZQorRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFs bG93ZWQgb25seSBmb3IgU0VUL0RST1AgY2xhdXNlCiAtLSBmYWlsIC0gY2FuJ3QgZHJvcCBhbiBF WENFUFQgVEFCTEUgZnJvbSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZSBEUk9QIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7Ci1FUlJP UjogIEVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxsb3dlZCBvbmx5IGZvciBTRVQgY2xhdXNlCitFUlJP UjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIiBpcyBkZWZpbmVkIGFzIE5PTiBGT1Ig QUxMIFRBQkxFUworREVUQUlMOiAgRVhDRVBUIFRhYmxlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3Ig ZHJvcHBlZCBmcm9tIG5vbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCiAtLSBmYWlsIC0g Y2FuJ3Qgc2V0IGFuIEVYQ0VQVCBUQUJMRSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgRVhDRVBUIFRBQkxFIHRlc3RwdWJf dGJsMTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGFibGUiIGlzIGRlZmluZWQg YXMgTk9OIEZPUiBBTEwgVEFCTEVTCkBAIC0yMjUsMTAgKzIyNiwxMSBAQCBOb3QtbnVsbCBjb25z dHJhaW50czoKIAogLS0gZmFpbCAtIGNhbid0IGFkZCBhbiBFWENFUFQgVEFCTEUgdG8gc2NoZW1h IHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBBREQgRVhD RVBUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKLUVSUk9SOiAgRVhDRVBUIFRBQkxFIGNs YXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1c2UKK0VSUk9SOiAgRVhDRVBUIFRBQkxFIGNs YXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVC9EUk9QIGNsYXVzZQogLS0gZmFpbCAtIGNhbid0IGRy b3AgYW4gRVhDRVBUIFRBQkxFIGZyb20gc2NoZW1hIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBEUk9QIEVYQ0VQVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X25vcGs7Ci1FUlJPUjogIEVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxsb3dlZCBvbmx5IGZvciBTRVQg Y2xhdXNlCitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNjaGVtYSIgaXMgZGVmaW5l ZCBhcyBOT04gRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIEVYQ0VQVCBUYWJsZXMgY2Fubm90IGJl IGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBub24gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25z LgogLS0gZmFpbCAtIGNhbid0IHNldCBhbiBFWENFUFQgVEFCTEUgdG8gc2NoZW1hIHB1YmxpY2F0 aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgRVhDRVBUIFRBQkxF IHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9y c2NoZW1hIiBpcyBkZWZpbmVkIGFzIE5PTiBGT1IgQUxMIFRBQkxFUwpAQCAtMjg1LDEyICsyODcs MTggQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUg U0VUIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDEKIEV4Y2VwdCB0YWJsZXM6CiAgICAgInB1Ymxp Yy50ZXN0cHViX3RibDEiCiAKLS0tIGZhaWwgLSBEcm9wcGluZyBFWENFUFQgdGFibGUgaXMgbm90 IHN1cHBvcnRlZC4KKy0tIERyb3AgdGFibGUgZnJvbSB0aGUgRVhDRVBUIGxpc3Qgb2YgYSBGT1Ig QUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlIERST1AgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKLUVSUk9S OiAgRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1c2UKK1xkUnAr IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJh dGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKKygxIHJvdykK KwogLS0gZmFpbCAtIEFkZGluZyBFWENFUFQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4KIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIEFERCBFWENFUFQg VEFCTEUgdGVzdHB1Yl90YmwxOwotRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFsbG93ZWQg b25seSBmb3IgU0VUIGNsYXVzZQorRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFsbG93ZWQg b25seSBmb3IgU0VUL0RST1AgY2xhdXNlCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJP UCBUQUJMRSB0ZXN0cHViX3RibDI7CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJs X3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRl eCAyMDg2NTM5ZmRjMi4uMDIzZDRiZjJlYzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlv bi5zcWwKQEAgLTEzOCw4ICsxMzgsOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jh bGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdAogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgU0VUIEVYQ0VQVCBU QUJMRSB0ZXN0cHViX3RibDE7CiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZQogCi0tLSBmYWlsIC0gRHJvcHBpbmcgRVhDRVBUIHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCist LSBEcm9wIHRhYmxlIGZyb20gdGhlIEVYQ0VQVCBsaXN0IG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVi bGljYXRpb24uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZSBEUk9QIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CitcZFJwKyB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZQogCiAtLSBmYWlsIC0gQWRkaW5nIEVYQ0VQVCB0YWJsZSBpcyBu b3Qgc3VwcG9ydGVkLgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUgQUREIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbAppbmRl eCBjYWRmZjNkOGI2YS4uN2RjNmI3NjkzZTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbApAQCAtMTM3LDYgKzEz NywzNSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDAp LCAnY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9uIHN1YnNjcmliZXInKTsKIAorIyBSZW1vdmUg c2NoMS50YWIxIGZyb20gdGhlIHB1YmxpY2F0aW9uJ3MgRVhDRVBUIGxpc3Qgc28gdGhhdCBpdCBi ZWNvbWVzIHBhcnQKKyMgb2YgdGhlIEFMTCBUQUJMRVMgcHVibGljYXRpb24uCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHVi X3NjaGVtYSBEUk9QIEVYQ0VQVCBUQUJMRSBzY2gxLnRhYjEiKTsKKworIyBSZWZyZXNoIHRoZSBz dWJzY3JpcHRpb24gc28gdGhlIHN1YnNjcmliZXIgcGlja3MgdXAgdGhlIHVwZGF0ZWQKKyMgcHVi bGljYXRpb24gZGVmaW5pdGlvbiBhbmQgaW5pdGlhdGVzIHRhYmxlIHN5bmNocm9uaXphdGlvbi4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJ UFRJT04gdGFwX3N1Yl9zY2hlbWEgUkVGUkVTSCBQVUJMSUNBVElPTiIpOworCisjIFdhaXQgZm9y IGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwKKwkndGFwX3N1Yl9zY2hlbWEnKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWIxIik7CitpcygkcmVzdWx0LCBxcSgyMCksICdj aGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJlcicpOworCisjIEluc2VydCBhZGRp dGlvbmFsIHJvd3Mgb24gdGhlIHB1Ymxpc2hlciBhZnRlciBzeW5jaHJvbml6YXRpb24uCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnRh YjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygyMSwzMCkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9zY2hlbWEnKTsKKworIyBWZXJpZnkgdGhhdCB0aGUg bmV3IGluc2VydHMgYXJlIGFsc28gcmVwbGljYXRlZC4KKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEu dGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMzApLCAnY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9u IHN1YnNjcmliZXInKTsKKwogIyBjbGVhbnVwCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIik7CiAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLS0gCjIuNDMuMAoK --0000000000004d4b70064bc882d0--