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 1vnrvf-00CnSN-26 for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Feb 2026 05:29:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vnrve-00FMNC-2J for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Feb 2026 05:29:22 +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 1vnrvd-00FMMF-2Q for pgsql-hackers@lists.postgresql.org; Thu, 05 Feb 2026 05:29:22 +0000 Received: from mail-oi1-x22d.google.com ([2607:f8b0:4864:20::22d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vnrvb-00000000dM0-0vpY for pgsql-hackers@lists.postgresql.org; Thu, 05 Feb 2026 05:29:20 +0000 Received: by mail-oi1-x22d.google.com with SMTP id 5614622812f47-45f171cb842so403040b6e.1 for ; Wed, 04 Feb 2026 21:29:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770269358; cv=none; d=google.com; s=arc-20240605; b=h2hLRdGXs435GqtNTGNT7Q2cSWM0H9aMd+XWuaWSeFF30/td7IqdTZ7r4Ujq9ZtCBO 79wIrFa33nEE9ucMGtkL4Kn+PRWX2z/RFkQBjfgspWTmdyXwUBGlCybtygekUGazeGrG EPaN94wLpjhMdTQPm+aTyayLJev22SwiyugBJVMxzFyPe7mhvs1KqTSAiMSNWa7AVl/V +lDAcluhcjcseWsF9PbeDL2PkKFlPAFiD1xTSUSHIAVumjZ3wHP5nMMnU67IW8fpImIB bAIvLwMXbpJV+cHAaoLdXcizT6B6/jrxO82zd44SpgX7XJ+oWTq7VYVN/rb+ScIO7ys9 bovQ== 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=s69v98wzYM0U32dDPn4z6eBZheeI+o3vRN2BP7B3YXY=; fh=3BmLBj23jqyyBewm9vbSIvbG9l9X2Vgtk2sasROEmgA=; b=bD/Z16VK1rT5WrrMlA75OA6PI/J2YwZ5yhTZDTO18cL7el7rywI5o+KOF6jv0Z8OcO PmzlWjNX00b491JTcbzrtodlmLbRplZaS8tTIevY1k8qOC8D1DDF7t7oB1Fwdz/lOLuK UWea183kOpbHhOKmnfzyA3xjLgA8DYvmvK/hy0vax3rv25m+Hb71fTaIKZkKcbXD858n AtkOKEMVSmXDa/mPRkQsTKtXa/chgHOIgqg02wfeftSgd2D4nBakgvYBfb5GRmEsn7dG Nvb7ab7f+AFBAB80qXbNdJmXFbrtBizrbPsKlusiGPtrhgtIGokfI+pHMpCoYqMjBgSP IDkg==; 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=1770269358; x=1770874158; 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=s69v98wzYM0U32dDPn4z6eBZheeI+o3vRN2BP7B3YXY=; b=QjiLYnVnoFo66fQFWBtx8Pa+VMr4KdvkVnPL/KHFlXGvykpI6kGhqu8M0dhm17qLIo rqUlAHeRJUhdjEFgpdJf2SH7D9HON7xBIejvbSwSeI0dU7v00ee3Ubsj01EWVp0wmGnh 48SdNXaY0HAyco9LRqwseQhBuYx+5EkxVDRIfnwRfEmDUimoHYmkPZxz65feytwzCDVp AjEaDTijTUXIBHaEALAJupPtxXfcEGc9eXuOSV6HIrQ8DcrqjUKIL+wUgmT08BwvOVsN h2arFi84yuCOavNB+DFP6iTM+Irx6k1N/971+BQV93shTo3bJNUpiK8HH/EhXnM6xDy5 SLyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770269358; x=1770874158; 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=s69v98wzYM0U32dDPn4z6eBZheeI+o3vRN2BP7B3YXY=; b=OJpkdd4S4bD7iXpK/LBWC0mm4QEG4Ccd7WmjjnyOKT7RtJY5Vk9v0RpiwmM9y7KQEQ odcglx2sYbfixIwDcsAQWpgIltp28qjjQzsR2mTrJSx3CN2mRIpS4f2qK2h1/thYKdfc ZWG/V1yvzAyR/wzKJ+0jThKx3sYT2iSSSp1SXCmdo6q727KN4pzHHpSn+dCtLpYPIh2i zD9G6zdy9W0GQgTWFd3ZuZQtjcSYfZK9d4jYHmOotiXXcfvChPKGaSVWefQuCmpefgjH nXEOOlzzN2yClydqOkqyFMbvl8RwWuaChJFT5Q3FsW1s0Q4BnravFTSc0wVgFCWg3VsX GrdQ== X-Forwarded-Encrypted: i=1; AJvYcCVMF6GrIfFU19XXFzJ5AOlH/ONuJ8XxGhuFtgCmzP++P/PKkOQXUqzX0p7eSrOSmmewBIiekD8+SHn1mdeo@lists.postgresql.org X-Gm-Message-State: AOJu0YzxIgastv1AtwaWaZZRRxREp4xtnw4t6Njmaid9a0IYC0a4qBBu HqD0b/yRzA6wNgAFqC9HW6ebM4jxh3Je0WIDQ3K72P334SDSmNCkjolA/prvA6lUg7Qa/ktxG7Q bbHNpGNSKQugigW8HUCZ7jo89QvLaHms= X-Gm-Gg: AZuq6aLUzECghMB5FVqQP6wW+XXhFp4Vrv9/H6zzxWyEYNU6skbTEnSQpFUqhJTAbCw HH+3JySy292hdR8y/rIJGO3HA3y2TePbyuMhOPnwcbJoe/MlzS+/8rU5xSUx+4FeAuLAr8VICwh 1uNkBAkmL3EWejztqbsKR1MH8vyCtKxdFEBpzA0rhc/9EPzZfHvajX3qrEuJtTGs8XbWr5ekWWx /phLKp85lmebtM1I2pYtgpLboeZZ9cDxJw0e7zE9z1pC7bgtK5913AkSFscPKxRd635lvz3r7tp jWGpXw== X-Received: by 2002:a05:6808:1584:b0:450:b249:71bb with SMTP id 5614622812f47-462e9ca6423mr845876b6e.19.1770269358112; Wed, 04 Feb 2026 21:29:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Thu, 5 Feb 2026 10:59:06 +0530 X-Gm-Features: AZwV_Qi5gjujiIP9woWX1vtjyxRRT-yrl3dPGG90O2xUNu1roDMbWCOYQ__oNZk Message-ID: Subject: Re: Skipping schema changes in publication To: vignesh C Cc: shveta malik , Dilip Kumar , Amit Kapila , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000003f82b5064a0cf46c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003f82b5064a0cf46c Content-Type: text/plain; charset="UTF-8" On Tue, 3 Feb 2026 at 22:23, vignesh C wrote: > > On Mon, 2 Feb 2026 at 17:18, Shlok Kyal wrote: > > > > I reviewed v38-0002-handle-EXCEPT-TABLE-correctly-with-partitioned-approach-1.patch > > patch. Here are my comments: > > > > 4. While testing, I noticed that the new query introduced in tablesync > > can be invoked for "FOR TABLE". SHould we only call it for "ALL > > TABLES" publications? > > + if (server_version >= 190000 && !is_partition && > > + lrel->relkind == RELKIND_PARTITIONED_TABLE) > > + { > > + resetStringInfo(&cmd); > > + > > + /* > > + * This query recursively traverses the inheritance (partition) tree > > + * starting from the given table OID and determines which leaf > > + * relations should be included for replication. Exclusion propagates > > + * from parent to child, and a relation is also treated as excluded if > > + * it is explicitly marked with prexcept = true in pg_publication_rel > > + * for the specified publications. The final result returns only > > + * non excluded leaf relations. > > + */ > > Test: > > Create publication for table sc1.t1 using (publish_via_partition_root > > = true) and create subscription on it. In subscriber logs we can see > > the logs for the new query. > > sc1.t1 has the same structure as in comment 1. > > We will not know if it is a table publication or all tables > publication from here. Also there can be a possibility of multiple > publications. We will invoke it and handle it from the publisher to > return appropriate tables. > > Thanks for the review and detailed comments. All remaining feedback > has been addressed in the attached v39 patch. > > In addition, the SQL query previously used to compute the set of > effective tables has been replaced with a C implementation. The SQL > approach had become increasingly complex and difficult to reason > about, especially as more publication combinations were added. > Implementing this logic in C significantly improves readability and > maintainability, and makes it easier to handle complex scenarios, such > as: > a) Multiple publications where one publication has no EXCEPT tables > and another does. > b) Multiple publications where one publication is an ALL TABLES > publication with EXCEPT, while another is a table-specific > publication. > c) Multiple publications where none of the publications define any > EXCEPT tables. > > Peter's comments from [1] and Shveta's comments form [2] will be > addressed in the next version. > [1] - https://www.postgresql.org/message-id/CAHut%2BPsiWwmNSuCXTWM0iPDm3yGskLts-fukELTB__rbBids-A%40mail.gmail.com > [2] - https://www.postgresql.org/message-id/CAJpy0uAOvtMBP-oV9Tgoznt5-UsE2dzAjZW3eJmgKcU-X-vEzg%40mail.gmail.com Hi Vignesh, I found one bug. For Partition structure: sc1.t1 - sc1.child1 - sc1.child1_1 - sc1.child1_2 - sc1.child2 If we specify sc1.child1 and sc1.child2 in the EXCEPT list and publish_via_partition_root = true, tablesync publish all the changes. It is wrong. Behavour of incremental sync is correct and it donot publish any changes. Publication: CREATE PUBLICATION pub1 FOR ALL TABLES EXCEPT TABLE (sc1.child1, sc1.child2) WITH (publish_via_partition_root = true); I checked, pg_get_publication_effective_tables is not returning any row: postgres=# SELECT schemaname, relname FROM pg_get_publication_effective_tables(16385, ARRAY['pub1']); schemaname | relname ------------+--------- (0 rows) But the COPY command in tablesync is formed as: COPY sc1.t1 (id) TO STDOUT Same behaviour when publication is: CREATE PUBLICATION pub1 FOR ALL TABLES EXCEPT TABLE (sc1.child1_1, sc1.child1_2, sc1.child2) WITH (publish_via_partition_root = true); I think it is because, when we specify all the partitions of a partitioned table in the EXCEPT list, the function 'fetch_remote_table_info' will have 'effective_relations' as an empty list. So, instead of the condition 'if (effective_relations && list_length(effective_relations))' it will go inside the 'else if' condition and form the above COPY command. One possible solution I can think of is if all the partitions of a partitioned table is excluded using EXCEPT TABLE, we can avoid having the partitioned table in 'pg_publication_tables' and hence the pg_subsciption_rel will also not have the corresponding entry. So, the issue can be avoided. I have added the fix of the same in the latest v41 patch and added the corresponding test in 101_test.pl file. I have also merged the v40-0001 and v40-0002 patches to form v41-0001 patch and v41-0002 has the extended tests. Thanks, Shlok Kyal --0000000000003f82b5064a0cf46c Content-Type: application/octet-stream; name="v41-0002-Extended-tests-for-EXCEPT-TABLE-patch.patch" Content-Disposition: attachment; filename="v41-0002-Extended-tests-for-EXCEPT-TABLE-patch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml90g9i71 RnJvbSBiNmEyYjhiZjM0YjU1NjRhMWU0ZGUzNGJmNTMzMTNlNjIxNjM0Y2EyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxMjoyNzo1NyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjQx IDIvMl0gRXh0ZW5kZWQgdGVzdHMgZm9yIEVYQ0VQVCBUQUJMRSBwYXRjaAoKVGhpcyBwYXRjaCBj b250YWlucyBleHRyYSB0ZXN0cyBmb3IgRVhDRVBUIFRBQkxFIHBhdGNoLiBQdXJwb3NlIG9mIHRo aXMKdGVzdHMgdG8ga2VlcCB0cmFjayBvZiB0ZXN0cyB3aGljaCBvbmNlIGJyb2tlIHRoZSBwYXRj aC4KCkJhc2VkIG9uIGRpc2N1c3Npb24gaW4gZnV0dXJlIHdlIG1heSBwaWNrIHVwIHNvbWUgdGVz dCB0byBpbmNsdWRlIGluCnRoZSBtYWluIHBhdGNoLgotLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzEwMV90ZXN0LnBsIHwgMTc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmls ZSBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzEwMV90ZXN0LnBsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMTAxX3Rlc3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8xMDFfdGVzdC5w bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODE1ZTMzY2MxYjAKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8xMDFfdGVzdC5wbApAQCAt MCwwICsxLDE3NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisjCisjIEV4dGVuZGVkIHRlc3QgZm9yIEVYQ0VQVCBUQUJMRQorCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCisjIC0tLS0tLS0tCisjIFB1Ymxpc2hlcgorIyAtLS0tLS0tLQorbXkgJHB1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiskcHVi bGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRwdWJsaXNoZXIt PmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxKAord2FsX2xldmVsID0gbG9naWNh bAorbG9nX21pbl9tZXNzYWdlcyA9IElORk8KK2xvZ19zdGF0ZW1lbnQgPSBhbGwKK3dhbF9yZWNl aXZlcl90aW1lb3V0ID0gMAord2FsX3NlbmRlcl90aW1lb3V0ID0gMAorKSk7CiskcHVibGlzaGVy LT5zdGFydDsKKworIyBDcmVhdGUgYSBwYXJ0aXRpb24gc3RydWN0dXJlOgorIyBzYzEudDEKKyMg ICAtIHNjMS5jaGlsZDEKKyMgICAgICAgLSBzYzEuY2hpbGQxXzEKKyMgICAgICAgLSBzYzEuY2hp bGQxXzIKKyMgICAtIHNjMS5jaGlsZDIKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxKAorCUNSRUFURSBTQ0hFTUEgc2MxOworCUNSRUFURSBUQUJMRSBzYzEudDEoaWQgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UoaWQpOworCUNSRUFURSBUQUJMRSBzYzEuY2hpbGQxKGlkIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKKwlDUkVBVEUgVEFCTEUgc2MxLmNoaWxkMiBQQVJU SVRJT04gT0Ygc2MxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAoMjAwKTsKKwlDUkVBVEUg VEFCTEUgc2MxLmNoaWxkMV8xIFBBUlRJVElPTiBPRiBzYzEuY2hpbGQxIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDUwKTsKKwlDUkVBVEUgVEFCTEUgc2MxLmNoaWxkMV8yIFBBUlRJVElPTiBPRiBz YzEuY2hpbGQxIEZPUiBWQUxVRVMgRlJPTSAoNTEpIFRPICgxMDApOworCUFMVEVSIFRBQkxFIHNj MS50MSBBVFRBQ0ggUEFSVElUSU9OIHNjMS5jaGlsZDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MTAwKTsKKwlJTlNFUlQgSU5UTyBzYzEudDEgVkFMVUVTICgxKSwgKDUxKSwgKDEwMSk7CispKTsK KworIyAtLS0tLS0tLS0tCisjIFN1YnNjcmliZXIKKyMgLS0tLS0tLS0tLQorbXkgJGNvbm5zdHIg PSAkcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworbXkgJHN1YnNjcmli ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRzdWJz Y3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRzdWJzY3JpYmVy LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcSgKK3dhbF9sZXZlbCA9IGxvZ2lj YWwKK2xvZ19taW5fbWVzc2FnZXMgPSBJTkZPCitsb2dfc3RhdGVtZW50ID0gYWxsCit3YWxfcmVj ZWl2ZXJfdGltZW91dCA9IDAKK3dhbF9zZW5kZXJfdGltZW91dCA9IDAKKykpOworJHN1YnNjcmli ZXItPnN0YXJ0OworCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHEoCisJ Q1JFQVRFIFNDSEVNQSBzYzE7CisJQ1JFQVRFIFRBQkxFIHNjMS50MShpZCBpbnQpOworCUNSRUFU RSBUQUJMRSBzYzEuY2hpbGQxKGlkIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjMS5jaGlsZDFfMShp ZCBpbnQpOworCUNSRUFURSBUQUJMRSBzYzEuY2hpbGQxXzIoaWQgaW50KTsKKwlDUkVBVEUgVEFC TEUgc2MxLmNoaWxkMihpZCBpbnQpOworKSk7CisKKyMgVGVzdDogMQorIyBDcmVhdGUgdHdvIHB1 YmxpY2F0aW9ucyB3aXRoICJBTEwgVEFCTEUgRVhDRVBUIiBhbmQgRVhDRVBUIGlzIG9uIGRpZmZl cmVudAorIyBub2RlcyBvZiBhIHBhcnRpdGlvbiB0cmVlCiskcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHNjMS5jaGlsZDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gdHJ1ZSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFIChzYzEudDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1 ZSk7CispKTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNV QlNDUklQVElPTiBzdWIxIENPTk5FQ1RJT04gJyRjb25uc3RyJyBQVUJMSUNBVElPTiBwdWIxLCBw dWIyOyIpOworCisjIFdhaXQgZm9yIGluaXRpYWwgc3luYworJHN1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWIxJyk7CisKKyMgQ2hlY2sgaWYgdGFi bGVzeW5jIGdpdmVzIGNvcnJlY3Qgb3V0cHV0CitteSAkcmVzdWx0ID0gJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzYzEudDEiKTsKK2lzKCRyZXN1bHQs IHFxKDEwMSksICdjaGVjayBkYXRhIGFmdGVyIHRhYmxlc3luYycpOworCisjIENoZWNrIGZvciBp bmNyZW1lbnRhbCBzeW5jCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5T RVJUIElOVE8gc2MxLnQxIFZBTFVFUyAoMSksICg1MSksICgxMDEpIik7Ciskc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YjEnKTsKKyRyZXN1bHQg PSAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjMS50 MSIpOworaXMoICRyZXN1bHQsIHFxKDEwMQorMTAxKSwgJ2NoZWNrIGRhdGEgYWZ0ZXIgaW5jcmVt ZW50YWwgc3luYycpOworCisjIGNsZWFudXAKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxKAorCURST1AgUFVCTElDQVRJT04gcHViMSwgcHViMjsKKwlUUlVOQ0FURSBzYzEu dDE7CispKTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcSgKKwlEUk9Q IFNVQlNDUklQVElPTiBzdWIxOworCVRSVU5DQVRFIHNjMS50MTsKKykpOworCisjIFRlc3QgMjoK KyMgQ3JlYXRlIHR3byBwdWJsaWNhdGlvbnMsIG9uZSB3aXRoICJBTEwgVEFCTEVTIEVYQ0VQVCIs IG90aGVyIHdpdGggIkZPUiBUQUJMRSIKKyMgVGFibGVzIHNwZWNpZmllZCBpbiAiRVhDRVBUIiBh bmQgIkZPUiBUQUJMRSIgYXJlIHBhcnQgb2Ygc2FtZSBwYXJ0aXRpb24gdHJlZQorJHB1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHEoCisJSU5TRVJUIElOVE8gc2MxLnQxIFZBTFVF UyAoMSksICg1MSksICgxMDEpOworCUNSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFC TEVTIEVYQ0VQVCBUQUJMRSAoc2MxLmNoaWxkMikgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QgPSB0cnVlKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViMiBGT1IgVEFCTEUgc2MxLmNo aWxkMV8xIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKKyRz dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBz dWIxIENPTk5FQ1RJT04gJyRjb25uc3RyJyBQVUJMSUNBVElPTiBwdWIxLCBwdWIyOyIpOworCisj IENoZWNrIGZvciB0YWJsZXN5bmMKKyRzdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYygkcHVibGlzaGVyLCAnc3ViMScpOworJHJlc3VsdCA9CisgICRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2MxLnQxIE9SREVSIEJZIGlkIik7Citp cyggJHJlc3VsdCwgcXEoMQorNTEpLCAnY2hlY2sgZGF0YSBhZnRlciB0YWJsZXN5bmMnKTsKKwor IyBDaGVjayBmb3IgaW5jcmVtZW50YWwgc3luYworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjMS50MSBWQUxVRVMgKDEpLCAoNTEpLCAoMTAxKSIpOwor JHN1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWIx Jyk7CiskcmVzdWx0ID0KKyAgJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUICogRlJPTSBzYzEudDEgT1JERVIgQlkgaWQiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisxCis1 MQorNTEpLCAnY2hlY2sgZGF0YSBhZnRlciBpbmNyZW1lbnRhbCBzeW5jJyk7CisKKyMgY2xlYW51 cAorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHEoCisJRFJPUCBQVUJMSUNB VElPTiBwdWIxLCBwdWIyOworCVRSVU5DQVRFIHNjMS50MTsKKykpOworJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxKAorCURST1AgU1VCU0NSSVBUSU9OIHN1YjE7CisJVFJV TkNBVEUgc2MxLnQxOworKSk7CisKKyMgVGVzdCAzOiBDcmVhdGUgcHVibGljYXRpb24gd2l0aCBF WENFUFQgVEFCTEUgbGlzdCBoYXZpbmcgYWxsIHBhcnRpdGlvbnMgb2YKKyMgcGFydGljdWxhciBs ZXZlbAorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHEoCisJSU5TRVJUIElO VE8gc2MxLnQxIFZBTFVFUyAoMSksICg1MSksICgxMDEpOworCUNSRUFURSBQVUJMSUNBVElPTiBw dWIxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2MxLmNoaWxkMiwgc2MxLmNoaWxkMSkg V0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKKykpOworJHN1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEgQ09O TkVDVElPTiAnJGNvbm5zdHInIFBVQkxJQ0FUSU9OIHB1YjE7Iik7CisKKyMgQ2hlY2sgZm9yIHRh Ymxlc3luYworJHN1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNo ZXIsICdzdWIxJyk7CiskcmVzdWx0ID0KKyAgJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUICogRlJPTSBzYzEudDEgT1JERVIgQlkgaWQiKTsKK2lzKCRyZXN1bHQsIHFx KCksICdjaGVjayBkYXRhIGFmdGVyIHRhYmxlc3luYycpOworCisjIENoZWNrIGZvciBpbmNyZW1l bnRhbCBzeW5jCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElO VE8gc2MxLnQxIFZBTFVFUyAoMSksICg1MSksICgxMDEpIik7Ciskc3Vic2NyaWJlci0+d2FpdF9m b3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YjEnKTsKKyRyZXN1bHQgPQorICAk c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjMS50MSBP UkRFUiBCWSBpZCIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIGRhdGEgYWZ0ZXIgaW5jcmVt ZW50YWwgc3luYycpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --0000000000003f82b5064a0cf46c Content-Type: application/octet-stream; name="v41-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v41-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml90g9hu0 RnJvbSBjZmVlNjFkN2M4ZTQ0ZGNlOTVkM2M0YzE0MzU5N2MzYWIyMWNlZmIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjggSmFuIDIwMjYgMTA6NDc6MDIgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0MSAxLzJd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURSBQVUJMSUNBVElPTiBhbGxvd3Mg b25lIG9yIG1vcmUKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlzaGVyIHdpbGwgbm90 IHNlbmQgdGhlIGRhdGEgb2YgZXhjbHVkZWQKdGFibGVzIHRvIHRoZSBzdWJzY3JpYmVyLgoKVGhl IG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRpb25zIHdoZW4gY3Jl YXRpbmcgYQpwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWIx IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodDEsdDIpOwoKQSBuZXcgY29sdW1uICJwcmV4 Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBnX3B1YmxpY2F0aW9uX3JlbCIsIHRvIGZsYWcKdGhl IHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGlj YXRpb25zLgoKRm9yIEVYQ0VQVCBUQUJMRSBvbiBwYXJ0aXRpb24gdGFibGVzLCBleHRlbmRlZCBm ZXRjaF9yZW1vdGVfdGFibGVfaW5mbygpIHRvCmNvbXB1dGUgdGhlIGVmZmVjdGl2ZSBzZXQgb2Yg cmVsYXRpb25zIHVzZWQgZm9yIHRoZSBpbml0aWFsIENPUFkuIFdoZW4KZXhjbHVzaW9ucyBhcmUg cHJlc2VudCwgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgY2FuIG5vIGxvbmdlciBiZSB1c2Vk CmRpcmVjdGx5OyBpbnN0ZWFkLCBkZXJpdmUgdGhlIGxpc3Qgb2Ygbm9uLWV4Y2x1ZGVkIGxlYWYg cGFydGl0aW9ucyBhbmQKY29tYmluZSB0aGVtIHdpdGggVU5JT04gQUxMLiBXaGVuIG5vIGV4Y2x1 c2lvbnMgZXhpc3QsIHJldGFpbiB0aGUgZXhpc3RpbmcKYmVoYXZpb3IgYW5kIGNvcHkgZnJvbSB0 aGUgcm9vdCByZWxhdGlvbiBhcyBiZWZvcmUuCkFsc28gdXBkYXRlZCB0aGUgYmVoYXZpb3VyIG9m IGluY3JlbWVudGFsIHN5bmMgZm9yIHBhcnRpdGlvbiB0YWJsZXMgYXMKcGVyIGFwcHJvYWNoIDEu CkFwcHJvYWNoIDEgaXMgZGlzY3Vzc2VkIGF0OgpodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9t ZXNzYWdlLWlkL0NBSnB5MHVEODFIUnJNWXI3Uy02QVY0VzJQdGJHS00tbmYyRDg5enNvTUhKOWpa c3NVZ0BtYWlsLmdtYWlsLmNvbQoKcGdfZHVtcCBpcyB1cGRhdGVkIGZvciB0aGUgbmV3IEVYQ0VQ VCBUQUJMRSBzeW50YXguCgpUaGUgcHNxbCBcZCBmYW1pbHkgb2YgY29tbWFuZHMgY2FuIG5vdyBk aXNwbGF5IGV4Y2x1ZGVkIHRhYmxlcy4KCkJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgotLS0KIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBkb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDYgKy0KIGRvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8ICA1NSArLQogZG9jL3NyYy9z Z21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCA1OTcgKysrKysrKysrKysrKysr KystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAxMDkg KystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgICAy ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDQyICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAxNTAgKysr Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICA0NCAr LQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgIDIxICst CiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNjggKysK IHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgMzAgKwogc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDg3ICsrLQogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgIDEyICstCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICAgIHwgIDEzICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICAgfCAgOTIgKystCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgMzYgKy0KIHNyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiAuLi4vdC8wMzdfcmVwX2No YW5nZXNfZXhjZXB0X3RhYmxlLnBsICAgICAgICAgfCAyNTAgKysrKysrKysKIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAyNyBmaWxlcyBjaGFu Z2VkLCAxNTEyIGluc2VydGlvbnMoKyksIDE0MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxl LnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCAzMzIxOTM1NjVlMi4uZDQwZTVjYzEwOTAgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCkBAIC02NTgxLDYgKzY1ODEsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+ Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAg ICAgIGlmIHRoZXJlIGlzIG5vIHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcgY29uZGl0aW9uLjwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgIDxzdHJ1Y3RmaWVsZD5wcmV4Y2VwdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoZSByZWxhdGlv biBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gU2VlCisgICAgICAgPGxpbmsgbGlu a2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0 ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC9saW5rPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3Ry dWN0ZmllbGQ+cHJhdHRyczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDJ2ZWN0b3I8L3R5cGU+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA1MDI4ZmU5YWYwOS4uZjAxMjgx ZmQ0ZjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTE2LDcgKzEx NiwxMSBAQAogICAgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCA8bGl0 ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sCiAgICBvciA8bGl0ZXJhbD5GT1IgQUxMIFNF UVVFTkNFUzwvbGl0ZXJhbD4uIFVubGlrZSB0YWJsZXMsIHNlcXVlbmNlcyBjYW4gYmUKICAgIHN5 bmNocm9uaXplZCBhdCBhbnkgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQotICAgPHhy ZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uCisgICA8eHJlZiBs aW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4gV2hlbiBhIHB1YmxpY2F0 aW9uIGlzCisgICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+ LCB0YWJsZXMgY2FuIGJlIGV4cGxpY2l0bHkKKyAgIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24g dXNpbmcgdGhlCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1z LWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+ CisgICBjbGF1c2UuCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDZlZmJiOTE1Y2VjLi43MzBiOWM0YmNlZCAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBAIC0zMiwxMiArMzIsMTYgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4KIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnB1YmxpY2F0aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+ CiAKLSAgICBBTEwgVEFCTEVTCisgICAgQUxMIFRBQkxFUyBbIEVYQ0VQVCBbIFRBQkxFIF0gKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFj ZWFibGU+IFssIC4uLiBdICkgXQogICAgIEFMTCBTRVFVRU5DRVMKIAogPHBocmFzZT5hbmQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJs ZT4gaXM6PC9waHJhc2U+CiAKICAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBX SEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gKSBdCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICBbIE9O TFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+IFsgKiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTE2NCw3ICsx NjgsOCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBN YXJrcyB0aGUgcHVibGljYXRpb24gYXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBh bGwgdGFibGVzIGluCi0gICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRl ZCBpbiB0aGUgZnV0dXJlLgorICAgICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNy ZWF0ZWQgaW4gdGhlIGZ1dHVyZS4gVGFibGVzIGxpc3RlZCBpbgorICAgICAgRVhDRVBUIFRBQkxF IGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAgICAgPC9wYXJhPgogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE4NCw2ICsxODksMzUgQEAgQ1JFQVRF IFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+ CisgICAgPHRlcm0+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2Ugc3BlY2lmaWVzIGEgbGlz dCBvZiB0YWJsZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUKKyAgICAgIHB1YmxpY2F0aW9uLgor ICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgRm9yIGluaGVyaXRlZCB0YWJsZXMsIGlm IDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCBiZWZvcmUgdGhlCisgICAgICB0 YWJsZSBuYW1lLCBvbmx5IHRoYXQgdGFibGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRp b24uIElmCisgICAgICA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBub3Qgc3BlY2lmaWVkLCB0 aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudAorICAgICAgdGFibGVzIChpZiBhbnkpIGFy ZSBleGNsdWRlZC4gT3B0aW9uYWxseSwgPGxpdGVyYWw+KjwvbGl0ZXJhbD4gY2FuIGJlCisgICAg ICBzcGVjaWZpZWQgYWZ0ZXIgdGhlIHRhYmxlIG5hbWUgdG8gZXhwbGljaXRseSBpbmRpY2F0ZSB0 aGF0IGRlc2NlbmRhbnQKKyAgICAgIHRhYmxlcyBhcmUgZXhjbHVkZWQuCisgICAgIDwvcGFyYT4K KyAgICAgPHBhcmE+CisgICAgICBGb3IgcGFydGl0aW9uZWQgdGFibGVzLCB3aGVuIGEgdGFibGUg aXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBUQUJMRSwgdGhlbgorICAgICAgY2hhbmdlcyB0byB0aGF0 IHRhYmxlIGFuZCBhbGwgb2YgaXRzIHBhcnRpdGlvbnMgKHRoYXQgaXMsIHRoZSBlbnRpcmUKKyAg ICAgIHBhcnRpdGlvbiBzdWJ0cmVlIHJvb3RlZCBhdCB0aGF0IHRhYmxlKSBhcmUgbm90IHJlcGxp Y2F0ZWQuIFRoaXMgYmVoYXZpb3IKKyAgICAgIGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2Ygd2hl dGhlcgorICAgICAgPGxpdGVyYWw+cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q8L2xpdGVyYWw+ IGlzIHNldCB0bworICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ZmFs c2U8L2xpdGVyYWw+LiBUaGUKKyAgICAgIDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290PC9saXRlcmFsPiBzZXR0aW5nIG9ubHkgZGV0ZXJtaW5lcworICAgICAgd2hpY2ggcmVsYXRp b24gaXMgdXNlZCBhcyB0aGUgcHVibGlzaGluZyByZWxhdGlvbiBmb3IgcmVwbGljYXRlZCBjaGFu Z2VzLAorICAgICAgYW5kIGRvZXMgbm90IGFmZmVjdCBleGNsdXNpb24gc2VtYW50aWNzLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFy bGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLXdpdGgiPgogICAgIDx0 ZXJtPjxsaXRlcmFsPldJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGlj YXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgog ICAgIDxsaXN0aXRlbT4KQEAgLTQ4OSw2ICs1MjMsMjMgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIGFs bF9zZXF1ZW5jZXMgRk9SIEFMTCBTRVFVRU5DRVM7CiAgICBhbGwgc2VxdWVuY2VzIGZvciBzeW5j aHJvbml6YXRpb246CiA8cHJvZ3JhbWxpc3Rpbmc+CiBDUkVBVEUgUFVCTElDQVRJT04gYWxsX3Rh Ymxlc19zZXF1ZW5jZXMgRk9SIEFMTCBUQUJMRVMsIEFMTCBTRVFVRU5DRVM7Cis8L3Byb2dyYW1s aXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0 aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBpbiBhbGwgdGFibGVzIGV4Y2VwdAorICAgPHN0cnVj dG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3Ry dWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3RhYmxl c19leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh1c2VycywgZGVwYXJ0bWVudHMpOworPC9w cm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGlj YXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uLCBh bmQKKyAgIGFsbCBjaGFuZ2VzIGluIGFsbCB0YWJsZXMgZXhjZXB0IDxzdHJ1Y3RuYW1lPnVzZXJz PC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1l PjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElPTiBhbGxfc2VxdWVuY2VzX3Rh Ymxlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5DRVMsIEFMTCBUQUJMRVMgRVhDRVBUICh1c2Vycywg ZGVwYXJ0bWVudHMpOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL3BzcWwtcmVmLnNnbWwKaW5kZXggOGIxZDk0OGJhMDUuLjEwNDViYzZhMDJjIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9wc3FsLXJlZi5zZ21sCkBAIC0yMTAzLDggKzIxMDMsOSBAQCBTRUxFQ1QgJDEgXHBhcnNl IHN0bXQxCiAgICAgICAgIGxpc3RlZC4KICAgICAgICAgSWYgPGxpdGVyYWw+eDwvbGl0ZXJhbD4g aXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHJlc3VsdHMKICAgICAgICAgYXJl IGRpc3BsYXllZCBpbiBleHBhbmRlZCBtb2RlLgotICAgICAgICBJZiA8bGl0ZXJhbD4rPC9saXRl cmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgdGFibGVzIGFuZAotICAg ICAgICBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93biBh cyB3ZWxsLgorICAgICAgICBJZiA8bGl0ZXJhbD4rPC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0 aGUgY29tbWFuZCBuYW1lLCB0aGUgdGFibGVzLAorICAgICAgICBleGNsdWRlZCB0YWJsZXMsIGFu ZCBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93bgorICAg ICAgICBhcyB3ZWxsLgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCA5 YTQ3OTFjNTczZS4uNGQ4YzlhODI3YTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmMKQEAgLTM2Niw5ICszNjYsMTEgQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihP aWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwKIAlmb3JlYWNo KGxjLCBhbmNlc3RvcnMpCiAJewogCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOwot CQlMaXN0CSAgICphcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpOwor CQlMaXN0CSAgICphcHViaWRzID0gTklMOwogCQlMaXN0CSAgICphc2NoZW1hUHViaWRzID0gTklM OwogCisJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCAmYXB1YmlkcywgTlVMTCk7 CisKIAkJbGV2ZWwrKzsKIAogCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFwdWJpZHMsIHB1Ym9pZCkp CkBAIC00ODIsNiArNDg0LDggQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwg UHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpOwogCXZh bHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnJlbGlkIC0gMV0gPQogCQlPYmplY3RJZEdl dERhdHVtKHJlbGlkKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJleGNlcHQg LSAxXSA9CisJCUJvb2xHZXREYXR1bShwcmktPmV4Y2VwdCk7CiAKIAkvKiBBZGQgcXVhbGlmaWNh dGlvbnMsIGlmIGF2YWlsYWJsZSAqLwogCWlmIChwcmktPndoZXJlQ2xhdXNlICE9IE5VTEwpCkBA IC03NDksMzggKzc1Myw1OCBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lk IHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJcmV0dXJuIG15c2VsZjsKIH0KIAotLyog R2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIGEgcmVsYXRpb24gKi8KLUxpc3QgKgot R2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKQorLyoKKyAqIEdldCB0aGUgbGlzdCBv ZiBwdWJsaWNhdGlvbiBvaWRzIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmllZCByZWxhdGlvbi4K KyAqCisgKiBQYXJhbWV0ZXIgJ3B1YmlkcycgcmV0dXJucyB0aGUgT2lkcyBvZiB0aGUgcHVibGlj YXRpb25zIHRoZSByZWxhdGlvbiBpcyBwYXJ0CisgKiBvZi4gUGFyYW1ldGVyICdleGNlcHRfcHVi aWRzJyByZXR1cm5zIHRoZSBPaWRzIG9mIHB1YmxpY2F0aW9ucyB0aGUgcmVsYXRpb24KKyAqIGlz IGV4Y2x1ZGVkIGZyb20uCisgKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhl IHJlbGF0aW9uIGlzIHBhcnQgb2YgYW55IHB1YmxpY2F0aW9uLgorICovCitib29sCitHZXRSZWxh dGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIExpc3QgKipwdWJpZHMsIExpc3QgKipleGNlcHRf cHViaWRzKQogewotCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlDYXRDTGlzdCAgICpwdWJyZWxs aXN0OwotCWludAkJCWk7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAogCS8qIEZpbmQgYWxsIHB1 YmxpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbGF0aW9uLiAqLwogCXB1YnJlbGxpc3Qg PSBTZWFyY2hTeXNDYWNoZUxpc3QxKFBVQkxJQ0FUSU9OUkVMTUFQLAogCQkJCQkJCQkJIE9iamVj dElkR2V0RGF0dW0ocmVsaWQpKTsKLQlmb3IgKGkgPSAwOyBpIDwgcHVicmVsbGlzdC0+bl9tZW1i ZXJzOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBwdWJyZWxsaXN0LT5uX21lbWJlcnM7IGkr KykKIAl7CiAJCUhlYXBUdXBsZQl0dXAgPSAmcHVicmVsbGlzdC0+bWVtYmVyc1tpXS0+dHVwbGU7 Ci0JCU9pZAkJCXB1YmlkID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1 cCkpLT5wcnB1YmlkOworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWwgPSAoRm9ybV9w Z19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQlPaWQJCQlwdWJpZCA9IHB1YnJl bC0+cHJwdWJpZDsKIAotCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YmlkKTsKKwkJ aWYgKHB1YnJlbC0+cHJleGNlcHQpCisJCXsKKwkJCWlmIChleGNlcHRfcHViaWRzKQorCQkJCSpl eGNlcHRfcHViaWRzID0gbGFwcGVuZF9vaWQoKmV4Y2VwdF9wdWJpZHMsIHB1YmlkKTsKKwkJfQor CQllbHNlCisJCXsKKwkJCWlmIChwdWJpZHMpCisJCQkJKnB1YmlkcyA9IGxhcHBlbmRfb2lkKCpw dWJpZHMsIHB1YmlkKTsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJfQogCX0KIAogCVJlbGVhc2VTeXND YWNoZUxpc3QocHVicmVsbGlzdCk7CiAKLQlyZXR1cm4gcmVzdWx0OworCXJldHVybiBmb3VuZDsK IH0KIAogLyoKLSAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIGZvciBhIHB1YmxpY2F0aW9u LgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZ2V0IHRoZSBsaXN0IG9mIHJlbGF0aW9uIE9pZHMg Zm9yIGEgcHVibGljYXRpb24uCiAgKgotICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBU QUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMKLSAqIHNob3Vs ZCB1c2UgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqIElmIGV4Y2VwdF9mbGFnIGlz IHRydWUsIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zIGV4Y2x1ZGVkIGZyb20gdGhlCisg KiBwdWJsaWNhdGlvbjsgb3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBp bmNsdWRlZCBpbiB0aGUKKyAqIHB1YmxpY2F0aW9uLgogICovCi1MaXN0ICoKLUdldFB1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQor c3RhdGljIExpc3QgKgorZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhPaWQgcHViaWQsIFB1Ymxp Y2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJCQkJCSAgYm9vbCBleGNlcHRfZmxhZykKIHsK IAlMaXN0CSAgICpyZXN1bHQ7CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTgwNSw4ICs4Mjks MTAgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQpCiAJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKIAogCQlw dWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwotCQlyZXN1 bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwK LQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CisKKwkJaWYgKGV4Y2VwdF9mbGFnID09IHB1 YnJlbC0+cHJleGNlcHQpCisJCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlv bnMocmVzdWx0LCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwog CX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC04MTksNiArODQ1LDg1IEBAIEdldFB1 YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0 b3B0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcmVs YXRpb24gT2lkcyBmb3IgYSBwdWJsaWNhdGlvbi4KKyAqCisgKiBGb3IgYSBGT1IgVEFCTEUgcHVi bGljYXRpb24sIHRoaXMgcmV0dXJucyB0aGUgbGlzdCBvZiByZWxhdGlvbnMgZXhwbGljaXRseQor ICogaW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgorICoKKyAqIFB1YmxpY2F0aW9ucyBkZWNs YXJlZCB3aXRoIEZPUiBBTEwgVEFCTEVTIHNob3VsZCB1c2UKKyAqIEdldEFsbFB1YmxpY2F0aW9u UmVsYXRpb25zKCkgdG8gb2J0YWluIHRoZSBjb21wbGV0ZSBzZXQgb2YgdGFibGVzIGNvdmVyZWQg YnkKKyAqIHRoZSBwdWJsaWNhdGlvbi4KKyAqLworTGlzdCAqCitHZXRQdWJsaWNhdGlvbkluY2x1 ZGVkUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQor eworCUFzc2VydCghR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMpOworCisJcmV0dXJu IGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCBmYWxzZSk7Cit9 CisKKy8qCisgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgdGFibGVzIE9pZHMgZXhjbHVkZWQgZnJvbSBh IHB1YmxpY2F0aW9uLgorICogVGhpcyBpcyBvbmx5IGFwcGxpY2FibGUgZm9yIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9ucy4KKyAqLworTGlzdCAqCitHZXRBbGxQdWJsaWNhdGlvbkV4Y2x1ZGVk VGFibGVzKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQoreworCUxp c3QJICAgKnJlbGlkcyA9IGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0 b3B0LCB0cnVlKTsKKwlib29sCQlpc19wYXJlbnRfZXhjbHVkZWQgPSB0cnVlOworCisJQXNzZXJ0 KEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKKworCXdoaWxlIChpc19wYXJlbnRf ZXhjbHVkZWQpCisJeworCQlMaXN0CSAgICpwYXJlbnRpZHMgPSBOSUw7CisJCUxpc3QJICAgKmN1 cnIgPSBOSUw7CisKKwkJZm9yZWFjaF9vaWQocmVsaWQsIHJlbGlkcykKKwkJeworCQkJT2lkCQkJ cGFyZW50aWQ7CisKKwkJCWlmICghZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihyZWxpZCkpCisJCQkJ Y29udGludWU7CisKKwkJCXBhcmVudGlkID0gZ2V0X3BhcnRpdGlvbl9wYXJlbnQocmVsaWQsIGZh bHNlKTsKKworCQkJaWYgKGxpc3RfbWVtYmVyX29pZChyZWxpZHMsIHBhcmVudGlkKSkKKwkJCQlj b250aW51ZTsKKworCQkJcGFyZW50aWRzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZChwYXJlbnRp ZHMsIHBhcmVudGlkKTsKKwkJfQorCisJCWZvcmVhY2hfb2lkKHBhcmVudGlkLCBwYXJlbnRpZHMp CisJCXsKKwkJCUxpc3QJICAgKnBhcnRpdGlvbmlkczsKKwkJCWJvb2wJCWFsbF9wYXJ0aXRpb25z X2V4Y2x1ZGVkID0gdHJ1ZTsKKworCQkJcGFydGl0aW9uaWRzID0gZmluZF9pbmhlcml0YW5jZV9j aGlsZHJlbihwYXJlbnRpZCwgTm9Mb2NrKTsKKworCQkJZm9yZWFjaF9vaWQocGFydGl0aW9uaWQs IHBhcnRpdGlvbmlkcykKKwkJCXsKKwkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChyZWxpZHMsIHBh cnRpdGlvbmlkKSkKKwkJCQl7CisJCQkJCWFsbF9wYXJ0aXRpb25zX2V4Y2x1ZGVkID0gZmFsc2U7 CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGFsbF9wYXJ0aXRpb25zX2V4Y2x1 ZGVkKQorCQkJCWN1cnIgPSBsYXBwZW5kX29pZChjdXJyLCBwYXJlbnRpZCk7CisJCX0KKworCQlp ZiAoY3VyciA9PSBOSUwpCisJCQlpc19wYXJlbnRfZXhjbHVkZWQgPSBmYWxzZTsKKwkJZWxzZQor CQkJcmVsaWRzID0gbGlzdF9jb25jYXQocmVsaWRzLCBjdXJyKTsKKwl9CisKKwlyZXR1cm4gcmVs aWRzOworfQorCiAvKgogICogR2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIHB1Ymxp Y2F0aW9ucyBtYXJrZWQgYXMgRk9SIEFMTCBUQUJMRVMuCiAgKi8KQEAgLTg2NCwxOCArOTY5LDMw IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcGFydGl0aW9uZWQgdGFibGVz LCB3ZSBtdXN0IGV4Y2x1ZGUgcGFydGl0aW9ucyBpbiBmYXZvciBvZiBpbmNsdWRpbmcgdGhlCiAg KiByb290IHBhcnRpdGlvbmVkIHRhYmxlcy4gVGhpcyBpcyBub3QgYXBwbGljYWJsZSB0byBGT1Ig QUxMIFNFUVVFTkNFUwogICogcHVibGljYXRpb24uCisgKgorICogRm9yIGEgRk9SIEFMTCBUQUJM RVMgcHVibGljYXRpb24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcyBtZW50aW9u ZWQKKyAqIGluIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCiAgKi8KIExpc3QgKgotR2V0QWxsUHVibGlj YXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitHZXRBbGxQdWJs aWNhdGlvblJlbGF0aW9ucyhQdWJsaWNhdGlvbiAqcHViLCBjaGFyIHJlbGtpbmQpCiB7CiAJUmVs YXRpb24JY2xhc3NSZWw7CiAJU2NhbktleURhdGEga2V5WzFdOwogCVRhYmxlU2NhbkRlc2Mgc2Nh bjsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOworCUxpc3QJICAg KmV4Y2VwdGxpc3QgPSBOSUw7CisJYm9vbAkJcHVidmlhcm9vdCA9IHB1Yi0+cHVidmlhcm9vdDsK KwlPaWQJCQlwdWJpZCA9IHB1Yi0+b2lkOwogCiAJQXNzZXJ0KCEocmVsa2luZCA9PSBSRUxLSU5E X1NFUVVFTkNFICYmIHB1YnZpYXJvb3QpKTsKIAorCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVM QVRJT04pCisJCWV4Y2VwdGxpc3QgPSBHZXRBbGxQdWJsaWNhdGlvbkV4Y2x1ZGVkVGFibGVzKHB1 YmlkLCBwdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoK KwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKworCiAJY2xhc3NSZWwgPSB0 YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCVNjYW5L ZXlJbml0KCZrZXlbMF0sCkBAIC04OTEsNyArMTAwOCw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQlPaWQJCQlyZWxpZCA9IHJl bEZvcm0tPm9pZDsKIAogCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0p ICYmCi0JCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpKQorCQkJIShy ZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSAmJgorCQkJIWxpc3RfbWVtYmVy X29pZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQs IHJlbGlkKTsKIAl9CiAKQEAgLTkxMiw3ICsxMDMwLDggQEAgR2V0QWxsUHVibGljYXRpb25SZWxh dGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCQlPaWQJCQlyZWxpZCA9IHJl bEZvcm0tPm9pZDsKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3Jt KSAmJgotCQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNw YXJ0aXRpb24gJiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJ CQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMTE2LDYg KzEyMzUsNDMwIEBAIEdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJv b2wgbWlzc2luZ19vaykKIAlyZXR1cm4gT2lkSXNWYWxpZChvaWQpID8gR2V0UHVibGljYXRpb24o b2lkKSA6IE5VTEw7CiB9CiAKKworLyogSGVscGVyOiBSZXNvbHZlIHRoZSBpbW1lZGlhdGUgcGFy ZW50IG9mIGEgcGFydGl0aW9uICovCitzdGF0aWMgT2lkCitnZXRfcGFyZW50X29pZChPaWQgcmVs aWQpCit7CisJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVs aWQpOworCisJaWYgKGFuY2VzdG9ycyA9PSBOSUwpCisJCXJldHVybiBJbnZhbGlkT2lkOworCXJl dHVybiBsaW5pdGlhbF9vaWQoYW5jZXN0b3JzKTsKK30KKworLyogSGVscGVyOiBDaGVjayBzeXNj YWNoZSBmb3IgcHJleGNlcHQgZmxhZyAqLworc3RhdGljIGJvb2wKK2lzX3JlbGlkX3B1Ymxpc2hl ZF9hc19leGNlcHQoT2lkIHJlbGlkLCBPaWQgcHViaWQpCit7CisJSGVhcFR1cGxlCXR1cDsKKwli b29sCQlyZXN1bHQgPSBmYWxzZTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElP TlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksIE9iamVjdElkR2V0RGF0dW0ocHViaWQp KTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCXsKKwkJRm9ybV9wZ19wdWJsaWNhdGlv bl9yZWwgcHJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsK KworCQlyZXN1bHQgPSBwcmZvcm0tPnByZXhjZXB0OworCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsK Kwl9CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIHB1YmxpY2F0aW9uX2hhc19hbnlfZXhj ZXB0aW9uCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBwdWJsaWNhdGlvbiBPSUQg aGFzIGF0IGxlYXN0IG9uZSBlbnRyeSBpbgorICogcGdfcHVibGljYXRpb25fcmVsIG1hcmtlZCBh cyBhbiBleGNlcHRpb24gKHByZXhjZXB0ID0gdHJ1ZSkuCisgKi8KK3N0YXRpYyBib29sCitwdWJs aWNhdGlvbl9oYXNfYW55X2V4Y2VwdGlvbihPaWQgcHViaWQpCit7CisJUmVsYXRpb24JcHViUmVs OworCVNjYW5LZXlEYXRhIHNrZXk7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlIZWFwVHVwbGUJdHVw OworCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkvKiBPcGVuIHBnX3B1YmxpY2F0aW9uX3JlbCB3 aXRoIEFjY2Vzc1NoYXJlTG9jayAqLworCXB1YlJlbCA9IHRhYmxlX29wZW4oUHVibGljYXRpb25S ZWxSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyoKKwkgKiAqIExvb2sgdXAgYnkg cHVibGljYXRpb24gT0lELiBVc2luZyB0aGUgaW5kZXggb24gKHBycHViaWQpIGlzIGhpZ2hseQor CSAqIGVmZmljaWVudC4KKwkgKi8KKwlTY2FuS2V5SW5pdCgmc2tleSwKKwkJCQlBbnVtX3BnX3B1 YmxpY2F0aW9uX3JlbF9wcnB1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURF USwKKwkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVn aW5zY2FuKHB1YlJlbCwKKwkJCQkJCQkgIFB1YmxpY2F0aW9uUmVsUHJyZWxpZFBycHViaWRJbmRl eElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJnNrZXkpOworCisJLyogV2Ugb25seSBuZWVk IHRvIGZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgcHJleGNlcHQgPSB0cnVlICovCisJd2hp bGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJewor CQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWxmb3JtID0gKEZvcm1fcGdfcHVibGljYXRp b25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKworCQlpZiAocHVicmVsZm9ybS0+cHJleGNlcHQpCisJ CXsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3lzdGFibGVfZW5k c2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShwdWJSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwly ZXR1cm4gZm91bmQ7Cit9CisKKy8qCisgKiBpc19yZWxpZF9wdWJsaXNoZWRfZXhwbGljaXRseQor ICoKKyAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gT0lEIGlzIGV4cGxpY2l0bHkgcGFy dCBvZiB0aGUgcHVibGljYXRpb24uCisgKiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSAnRk9SIFRB QkxFJyBzeW50YXguCisgKi8KK3N0YXRpYyBib29sCitpc19yZWxpZF9wdWJsaXNoZWRfZXhwbGlj aXRseShPaWQgcmVsaWQsIE9pZCBwdWJpZCkKK3sKKwkvKgorCSAqIFNlYXJjaCB0aGUgc3lzY2Fj aGUgZm9yIHBnX3B1YmxpY2F0aW9uX3JlbCB1c2luZyB0aGUgKHJlbGlkLCBwdWJpZCkKKwkgKiBp bmRleC4KKwkgKi8KKwlyZXR1cm4gU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBVQkxJQ0FUSU9OUkVM TUFQLAorCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkJCSBPYmplY3RJ ZEdldERhdHVtKHB1YmlkKSk7Cit9CisKKy8qCisgKiBpc19zY2hlbWFfcHVibGlzaGVkCisgKgor ICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBuYW1lc3BhY2UgT0lEIGlzIHBhcnQgb2YgdGhlIHB1Ymxp Y2F0aW9uJ3MKKyAqIHNjaGVtYSBsaXN0LiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSAnRk9SIFRB QkxFUyBJTiBTQ0hFTUEnIHN5bnRheC4KKyAqLworc3RhdGljIGJvb2wKK2lzX3NjaGVtYV9wdWJs aXNoZWQoT2lkIG5zcGlkLCBPaWQgcHViaWQpCit7CisJLyoKKwkgKiBTZWFyY2ggdGhlIHN5c2Nh Y2hlIGZvciBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgdXNpbmcgdGhlIChuc3BpZCwKKwkgKiBw dWJpZCkgaW5kZXguCisJICovCisJcmV0dXJuIFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNB VElPTk5BTUVTUEFDRU1BUCwKKwkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0obnNwaWQpLAorCQkJ CQkJCQkgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworfQorCisvKgorICogcGdfZ2V0X3B1Ymxp Y2F0aW9uX2VmZmVjdGl2ZV90YWJsZXMKKyAqCisgKiBHaXZlbiBhIHJvb3QgcmVsYXRpb24gYW5k IGEgbGlzdCBvZiBwdWJsaWNhdGlvbnMsIGNhbGN1bGF0ZSB0aGUgc2V0IG9mCisgKiByZWxhdGlv bnMgdGhhdCBhcmUgZWZmZWN0aXZlbHkgcHVibGlzaGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IK KyAqICJGT1IgQUxMIFRBQkxFUyIgcHVibGljYXRpb25zIHRoYXQgdXNlICJFWENFUFQgVEFCTEUi IGZpbHRlcnMuCisgKgorICogVGhlIGZ1bmN0aW9uIHJlc29sdmVzIHRoZSBzbWFsbGVzdCBwb3Nz aWJsZSBzZXQgb2YgYW5jZXN0b3JzIHRoYXQgY292ZXIKKyAqIGFsbCBub24tZXhjbHVkZWQgbGVh ZiBwYXJ0aXRpb25zLgorICovCitEYXR1bQorcGdfZ2V0X3B1YmxpY2F0aW9uX2VmZmVjdGl2ZV90 YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisJ TGlzdAkgICAqcmVzdWx0czsKKworCWlmIChTUkZfSVNfRklSU1RDQUxMKCkpCisJeworCQlPaWQJ CQlyb290X3JlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwkJQXJyYXlUeXBlICAqcHViX25hbWVz X2FycmF5ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDEpOworCQlNZW1vcnlDb250ZXh0IG9sZGNv bnRleHQ7CisJCUxpc3QJICAgKnB1Yl9vaWRzID0gTklMOworCQlEYXR1bQkgICAqcHViX2RhdHVt czsKKwkJYm9vbAkgICAqcHViX251bGxzOworCQlpbnQJCQlwdWJfY291bnQ7CisJCVR1cGxlRGVz Ywl0dXBkZXNjOworCQlMaXN0CSAgICpmaW5hbF9vdXRwdXQgPSBOSUw7CisJCWJvb2wJCWhhc19j bGVhbl9hbGxfdGFibGVzX3B1YiA9IGZhbHNlOworCQlib29sCQloYXNfYW55X2V4Y2x1c2lvbiA9 IGZhbHNlOworCQlMaXN0Q2VsbCAgICpsYzsKKworCQlmdW5jY3R4ID0gU1JGX0ZJUlNUQ0FMTF9J TklUKCk7CisKKwkJZGVjb25zdHJ1Y3RfYXJyYXkocHViX25hbWVzX2FycmF5LCBURVhUT0lELCAt MSwgZmFsc2UsICdpJywKKwkJCQkJCSAgJnB1Yl9kYXR1bXMsICZwdWJfbnVsbHMsICZwdWJfY291 bnQpOworCQlmb3IgKGludCBpID0gMDsgaSA8IHB1Yl9jb3VudDsgaSsrKQorCQl7CisJCQlpZiAo IXB1Yl9udWxsc1tpXSkKKwkJCXsKKwkJCQljaGFyCSAgICpwdWJuYW1lID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhwdWJfZGF0dW1zW2ldKTsKKworCQkJCXB1Yl9vaWRzID0gbGFwcGVuZF9vaWQocHVi X29pZHMsIGdldF9wdWJsaWNhdGlvbl9vaWQocHVibmFtZSwgZmFsc2UpKTsKKwkJCX0KKwkJfQor CisJCS8qCisJCSAqIERldGVybWluZSBpZiB3ZSBjYW4gYXZvaWQgdGhlIGV4cGVuc2l2ZSBleHBh bnNpb24uIElmIGFueQorCQkgKiBwdWJsaWNhdGlvbiBpcyAnRk9SIEFMTCBUQUJMRVMnIHdpdGgg bm8gZXhjZXB0aW9ucywgb3IgaWYKKwkJICogYWJzb2x1dGVseSBubyBleGNlcHRpb25zIGV4aXN0 IGFjcm9zcyBhbGwgcHVicywgdGhlIHJvb3QgaXMgdGhlCisJCSAqIHJlc3VsdC4KKwkJICovCisJ CWZvcmVhY2gobGMsIHB1Yl9vaWRzKQorCQl7CisJCQlPaWQJCQlwdWJvaWQgPSBsZmlyc3Rfb2lk KGxjKTsKKwkJCUhlYXBUdXBsZQlwdWJUdXA7CisJCQlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZv cm07CisKKwkJCXB1YlR1cCA9IFNlYXJjaFN5c0NhY2hlMShQVUJMSUNBVElPTk9JRCwgT2JqZWN0 SWRHZXREYXR1bShwdWJvaWQpKTsKKwkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwdWJUdXApKQor CQkJCWNvbnRpbnVlOworCisJCQlwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNU UlVDVChwdWJUdXApOworCisJCQkvKiBDaGVjayBmb3IgYW55IGV4Y2x1c2lvbiBlbnRyaWVzIGlu IHRoaXMgcHVibGljYXRpb24gKi8KKwkJCWlmIChwdWJsaWNhdGlvbl9oYXNfYW55X2V4Y2VwdGlv bihwdWJvaWQpKQorCQkJCWhhc19hbnlfZXhjbHVzaW9uID0gdHJ1ZTsKKwkJCWVsc2UgaWYgKHB1 YmZvcm0tPnB1YmFsbHRhYmxlcykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEZvdW5kIGEgcHVibGlj YXRpb24gdGhhdCBpbmNsdWRlcyBldmVyeXRoaW5nIHdpdGhvdXQKKwkJCQkgKiBleGNlcHRpb24K KwkJCQkgKi8KKwkJCQloYXNfY2xlYW5fYWxsX3RhYmxlc19wdWIgPSB0cnVlOworCQkJCVJlbGVh c2VTeXNDYWNoZShwdWJUdXApOworCQkJCWJyZWFrOworCQkJfQorCQkJUmVsZWFzZVN5c0NhY2hl KHB1YlR1cCk7CisJCX0KKworCQkvKiBSZXR1cm4gcm9vdCBpbW1lZGlhdGVseSBpZiBubyBmaWx0 ZXJpbmcgbG9naWMgaXMgbmVlZGVkICovCisJCWlmIChoYXNfY2xlYW5fYWxsX3RhYmxlc19wdWIg fHwgIWhhc19hbnlfZXhjbHVzaW9uKQorCQl7CisJCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisJCQlmaW5hbF9vdXRw dXQgPSBsaXN0X21ha2UxX29pZChyb290X3JlbGlkKTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUxpc3QJICAgKmFsbF90YWJsZXM7 CisJCQlMaXN0CSAgICphbGxfbGVhdmVzID0gTklMOworCQkJTGlzdAkgICAqZXhjbHVkZWRfbGVh dmVzID0gTklMOworCQkJTGlzdAkgICAqYWxsb3dlZF9sZWF2ZXMgPSBOSUw7CisJCQlMaXN0CSAg ICpjYW5kaWRhdGVfbGlzdCA9IE5JTDsKKworCQkJLyogR2V0IGFsbCB0aGUgbGVhZiByZWxhdGlv bnMgKi8KKwkJCWFsbF9sZWF2ZXMgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoYWxs X2xlYXZlcywKKwkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJCQkJ CQkJCQlyb290X3JlbGlkKTsKKworCQkJLyoKKwkJCSAqIElkZW50aWZ5IGNvbW1vbiBleGNsdWRl ZCByZWxhdGlvbnMgKEluaGVyaXRhbmNlLWF3YXJlKS4gQSB0YWJsZQorCQkJICogaXMgZXhjbHVk ZWQgb25seSBpZiBldmVyeSBwdWJsaWNhdGlvbiBleGNsdWRlcyBpdCwgZWl0aGVyCisJCQkgKiBl eHBsaWNpdGx5IG9yIGJ5IGV4Y2x1ZGluZyBvbmUgb2YgaXRzIGFuY2VzdG9ycy4KKwkJCSAqLwor CQkJZm9yZWFjaChsYywgYWxsX2xlYXZlcykKKwkJCXsKKwkJCQlPaWQJCQljdXJyX3JlbGlkID0g bGZpcnN0X29pZChsYyk7CisJCQkJTGlzdENlbGwgICAqbHA7CisJCQkJYm9vbAkJaXNfY292ZXJl ZF9ieV9hbnlfcHViID0gZmFsc2U7CisKKwkJCQkvKiBHZXQgdGhlIGluaGVyaXRhbmNlIGNoYWlu IGZvciB0aGUgY3VycmVudCB0YWJsZSBvbmNlICovCisJCQkJTGlzdAkgICAqYW5jZXN0b3JzID0g Z2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMoY3Vycl9yZWxpZCk7CisKKwkJCQlmb3JlYWNoKGxwLCBw dWJfb2lkcykKKwkJCQl7CisJCQkJCU9pZAkJCXB1YmlkID0gbGZpcnN0X29pZChscCk7CisJCQkJ CUhlYXBUdXBsZQlwdWJUdXA7CisJCQkJCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybTsKKwkJ CQkJYm9vbAkJaXNfYWxsX3RhYmxlczsKKworCQkJCQlwdWJUdXAgPSBTZWFyY2hTeXNDYWNoZTEo UFVCTElDQVRJT05PSUQsIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwkJCQkJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHB1YlR1cCkpCisJCQkJCQljb250aW51ZTsKKworCQkJCQlwdWJmb3JtID0g KEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVChwdWJUdXApOworCQkJCQlpc19hbGxfdGFi bGVzID0gcHViZm9ybS0+cHViYWxsdGFibGVzOworCQkJCQlSZWxlYXNlU3lzQ2FjaGUocHViVHVw KTsKKworCQkJCQlpZiAoaXNfYWxsX3RhYmxlcykKKwkJCQkJeworCQkJCQkJLyogRk9SIEFMTCBU QUJMRVM6IENoZWNrIHRoYXQgaXQgaXNuJ3QgZXhjbHVkZWQgKi8KKwkJCQkJCWJvb2wJCWlzX2V4 Y2x1ZGVkID0gZmFsc2U7CisKKwkJCQkJCWlmIChpc19yZWxpZF9wdWJsaXNoZWRfYXNfZXhjZXB0 KGN1cnJfcmVsaWQsIHB1YmlkKSkKKwkJCQkJCQlpc19leGNsdWRlZCA9IHRydWU7CisJCQkJCQll bHNlCisJCQkJCQl7CisJCQkJCQkJTGlzdENlbGwgICAqbGE7CisKKwkJCQkJCQlmb3JlYWNoKGxh LCBhbmNlc3RvcnMpCisJCQkJCQkJeworCQkJCQkJCQlpZiAoaXNfcmVsaWRfcHVibGlzaGVkX2Fz X2V4Y2VwdChsZmlyc3Rfb2lkKGxhKSwgcHViaWQpKQorCQkJCQkJCQl7CisJCQkJCQkJCQlpc19l eGNsdWRlZCA9IHRydWU7CisJCQkJCQkJCQlicmVhazsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJ CQkJCX0KKworCQkJCQkJaWYgKCFpc19leGNsdWRlZCkKKwkJCQkJCXsKKwkJCQkJCQlpc19jb3Zl cmVkX2J5X2FueV9wdWIgPSB0cnVlOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisJ CQkJCWVsc2UKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIENoZWNrIGlmIHRoZSB0YWJsZSBp dHNlbGYgb3IgaXRzIHNjaGVtYSBpcyBpbiB0aGUKKwkJCQkJCSAqIHB1Yi4KKwkJCQkJCSAqLwor CQkJCQkJaWYgKGlzX3JlbGlkX3B1Ymxpc2hlZF9leHBsaWNpdGx5KGN1cnJfcmVsaWQsIHB1Ymlk KSB8fAorCQkJCQkJCWlzX3NjaGVtYV9wdWJsaXNoZWQoZ2V0X3JlbF9uYW1lc3BhY2UoY3Vycl9y ZWxpZCksIHB1YmlkKSkKKwkJCQkJCXsKKwkJCQkJCQlpc19jb3ZlcmVkX2J5X2FueV9wdWIgPSB0 cnVlOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJeworCQkJCQkJCS8qCisJCQkJCQkJICog Q2hlY2sgaWYgYW55IGFuY2VzdG9yIG9yIGFuIGFuY2VzdG9yJ3Mgc2NoZW1hCisJCQkJCQkJICog aXMgaW4gdGhlIHB1Yi4KKwkJCQkJCQkgKi8KKwkJCQkJCQlMaXN0Q2VsbCAgICpsYTsKKworCQkJ CQkJCWZvcmVhY2gobGEsIGFuY2VzdG9ycykKKwkJCQkJCQl7CisJCQkJCQkJCU9pZAkJCWFuY19v aWQgPSBsZmlyc3Rfb2lkKGxhKTsKKworCQkJCQkJCQlpZiAoaXNfcmVsaWRfcHVibGlzaGVkX2V4 cGxpY2l0bHkoYW5jX29pZCwgcHViaWQpIHx8CisJCQkJCQkJCQlpc19zY2hlbWFfcHVibGlzaGVk KGdldF9yZWxfbmFtZXNwYWNlKGFuY19vaWQpLCBwdWJpZCkpCisJCQkJCQkJCXsKKwkJCQkJCQkJ CWlzX2NvdmVyZWRfYnlfYW55X3B1YiA9IHRydWU7CisJCQkJCQkJCQlicmVhazsKKwkJCQkJCQkJ fQorCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCS8qCisJCQkJCSAqIElmIGFueSBw dWJsaWNhdGlvbiBjb3ZlcnMgdGhpcyB0YWJsZSwgd2UgY2FuIHN0b3AKKwkJCQkJICogY2hlY2tp bmcgb3RoZXJzCisJCQkJCSAqLworCQkJCQlpZiAoaXNfY292ZXJlZF9ieV9hbnlfcHViKQorCQkJ CQkJYnJlYWs7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBJbnN0ZWFkIG9mIGlkZW50aWZ5aW5n ICdleGNsdWRlZCcsIHdlIGlkZW50aWZ5ICdhbGxvd2VkJy4KKwkJCQkgKiBJZiBubyBwdWJsaWNh dGlvbiBjb3ZlcnMgdGhpcyB0YWJsZSwgaXQncyBlZmZlY3RpdmVseQorCQkJCSAqIGV4Y2x1ZGVk LgorCQkJCSAqLworCQkJCWlmICghaXNfY292ZXJlZF9ieV9hbnlfcHViKQorCQkJCQlleGNsdWRl ZF9sZWF2ZXMgPSBsYXBwZW5kX29pZChleGNsdWRlZF9sZWF2ZXMsIGN1cnJfcmVsaWQpOworCisJ CQkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7CisJCQl9CisKKwkJCS8qIENhbGN1bGF0ZSBhbGxvd2Vk IGxlYXZlcyAoVG90YWwgLSBFeGNsdWRlZCkgKi8KKwkJCWZvcmVhY2gobGMsIGFsbF9sZWF2ZXMp CisJCQl7CisJCQkJT2lkCQkJY3Vycl9yZWxpZCA9IGxmaXJzdF9vaWQobGMpOworCisJCQkJaWYg KCFsaXN0X21lbWJlcl9vaWQoZXhjbHVkZWRfbGVhdmVzLCBjdXJyX3JlbGlkKSkKKwkJCQkJYWxs b3dlZF9sZWF2ZXMgPSBsYXBwZW5kX29pZChhbGxvd2VkX2xlYXZlcywgY3Vycl9yZWxpZCk7CisJ CQl9CisKKwkJCS8qIEJvdHRvbS1VcCBDb2xsYXBzZS4gQ2hlY2sgaWYgcGFyZW50cyBjYW4gcmVw cmVzZW50IGNoaWxkcmVuICovCisJCQlhbGxfdGFibGVzID0gZmluZF9hbGxfaW5oZXJpdG9ycyhy b290X3JlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIE5VTEwpOworCQkJY2FuZGlkYXRlX2xpc3QgPSBs aXN0X2NvcHkoYWxsb3dlZF9sZWF2ZXMpOworCQkJZm9yZWFjaChsYywgYWxsX3RhYmxlcykKKwkJ CXsKKwkJCQlPaWQJCQljdXJyX3JlbGlkID0gbGZpcnN0X29pZChsYyk7CisKKwkJCQlpZiAoZ2V0 X3JlbF9yZWxraW5kKGN1cnJfcmVsaWQpID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJ CQkJeworCQkJCQlMaXN0CSAgICpicmFuY2hfdHJlZSA9IGZpbmRfYWxsX2luaGVyaXRvcnMoY3Vy cl9yZWxpZCwgQWNjZXNzU2hhcmVMb2NrLCBOVUxMKTsKKwkJCQkJTGlzdAkgICAqYnJhbmNoX2xl YXZlcyA9IE5JTDsKKwkJCQkJTGlzdENlbGwgICAqbGNiOworCQkJCQlib29sCQlhbGxfYWxsb3dl ZCA9IHRydWU7CisKKwkJCQkJZm9yZWFjaChsY2IsIGJyYW5jaF90cmVlKQorCQkJCQl7CisJCQkJ CQlPaWQJCQliX29pZCA9IGxmaXJzdF9vaWQobGNiKTsKKworCQkJCQkJaWYgKGdldF9yZWxfcmVs a2luZChiX29pZCkgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCQkJCQlicmFuY2hf bGVhdmVzID0gbGFwcGVuZF9vaWQoYnJhbmNoX2xlYXZlcywgYl9vaWQpOworCQkJCQl9CisKKwkJ CQkJaWYgKGxpc3RfbGVuZ3RoKGJyYW5jaF9sZWF2ZXMpID09IDApCisJCQkJCQlhbGxfYWxsb3dl ZCA9IGZhbHNlOworCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWZvcmVhY2gobGNiLCBicmFuY2hf bGVhdmVzKQorCQkJCQkJeworCQkJCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGFsbG93ZWRfbGVh dmVzLCBsZmlyc3Rfb2lkKGxjYikpKQorCQkJCQkJCXsKKwkJCQkJCQkJYWxsX2FsbG93ZWQgPSBm YWxzZTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJ aWYgKGFsbF9hbGxvd2VkKQorCQkJCQkJY2FuZGlkYXRlX2xpc3QgPSBsaXN0X2FwcGVuZF91bmlx dWVfb2lkKGNhbmRpZGF0ZV9saXN0LCBjdXJyX3JlbGlkKTsKKwkJCQl9CisJCQl9CisKKwkJCS8q CisJCQkgKiBEZWR1cGxpY2F0ZTogT25seSBrZWVwIHRoZSBoaWdoZXN0IGxldmVsIHJlcHJlc2Vu dGF0aXZlIG9mIGFueQorCQkJICogYnJhbmNoCisJCQkgKi8KKwkJCW9sZGNvbnRleHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKwkJCWZv cmVhY2gobGMsIGNhbmRpZGF0ZV9saXN0KQorCQkJeworCQkJCU9pZAkJCWN1cnJfcmVsaWQgPSBs Zmlyc3Rfb2lkKGxjKTsKKwkJCQlPaWQJCQlwYXJlbnRfb2lkID0gZ2V0X3BhcmVudF9vaWQoY3Vy cl9yZWxpZCk7CisKKwkJCQlpZiAocGFyZW50X29pZCA9PSBJbnZhbGlkT2lkIHx8ICFsaXN0X21l bWJlcl9vaWQoY2FuZGlkYXRlX2xpc3QsIHBhcmVudF9vaWQpKQorCQkJCQlmaW5hbF9vdXRwdXQg PSBsYXBwZW5kX29pZChmaW5hbF9vdXRwdXQsIGN1cnJfcmVsaWQpOworCQkJfQorCisJCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCX0KKworCQlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisJCS8q IENvbnN0cnVjdCBhIHR1cGxlIGRlc2NyaXB0b3IgZm9yIHRoZSByZXN1bHQgcm93cy4gKi8KKwkJ dHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDIpOworCQlUdXBsZURlc2NJbml0RW50 cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJzY2hlbWFuYW1lIiwKKwkJCQkJCSAgIFRFWFRP SUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAy LCAicmVsbmFtZSIsCisJCQkJCQkgICBURVhUT0lELCAtMSwgMCk7CisKKwkJZnVuY2N0eC0+dHVw bGVfZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOworCQlmdW5jY3R4LT51c2VyX2ZjdHgg PSBmaW5hbF9vdXRwdXQ7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwor CX0KKworCS8qIFNSRiBQZXItY2FsbCBSZXN1bWUgKi8KKwlmdW5jY3R4ID0gU1JGX1BFUkNBTExf U0VUVVAoKTsKKwlyZXN1bHRzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9mY3R4OworCisJaWYg KGZ1bmNjdHgtPmNhbGxfY250ciA8IGxpc3RfbGVuZ3RoKHJlc3VsdHMpKQorCXsKKwkJT2lkCQkJ Y3VycmVudF9yZWxpZCA9IGxpc3RfbnRoX29pZChyZXN1bHRzLCAoaW50KSBmdW5jY3R4LT5jYWxs X2NudHIpOworCQlIZWFwVHVwbGUJcmV0dHVwbGU7CisJCURhdHVtCQl2YWx1ZXNbMl07CisJCWJv b2wJCW51bGxzWzJdID0ge2ZhbHNlLCBmYWxzZX07CisKKwkJdmFsdWVzWzBdID0gQ1N0cmluZ0dl dFRleHREYXR1bShnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UoY3VycmVudF9y ZWxpZCkpKTsKKwkJdmFsdWVzWzFdID0gQ1N0cmluZ0dldFRleHREYXR1bShnZXRfcmVsX25hbWUo Y3VycmVudF9yZWxpZCkpOworCisJCXJldHR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKGZ1bmNjdHgt PnR1cGxlX2Rlc2MsIHZhbHVlcywgbnVsbHMpOworCQlTUkZfUkVUVVJOX05FWFQoZnVuY2N0eCwg SGVhcFR1cGxlR2V0RGF0dW0ocmV0dHVwbGUpKTsKKwl9CisKKwlTUkZfUkVUVVJOX0RPTkUoZnVu Y2N0eCk7Cit9CisKIC8qCiAgKiBHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHRhYmxlcyBpbiB0aGUg Z2l2ZW4gcHVibGljYXRpb24gYXJyYXkuCiAgKgpAQCAtMTE2OCwxNyArMTcxMSwxNyBAQCBwZ19n ZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiB0aG9zZS4gT3Ro ZXJ3aXNlLCBnZXQgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZi4KIAkJCSAqLwogCQkJaWYg KHB1Yl9lbGVtLT5hbGx0YWJsZXMpCi0JCQkJcHViX2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGlj YXRpb25SZWxhdGlvbnMoUkVMS0lORF9SRUxBVElPTiwKLQkJCQkJCQkJCQkJCQkJCSBwdWJfZWxl bS0+cHVidmlhcm9vdCk7CisJCQkJcHViX2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGljYXRpb25S ZWxhdGlvbnMocHViX2VsZW0sCisJCQkJCQkJCQkJCQkJCQkgUkVMS0lORF9SRUxBVElPTik7CiAJ CQllbHNlCiAJCQl7CiAJCQkJTGlzdAkgICAqcmVsaWRzLAogCQkJCQkJICAgKnNjaGVtYXJlbGlk czsKIAotCQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQs Ci0JCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZpYXJvb3QgPwotCQkJCQkJCQkJCQkJIFBVQkxJ Q0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsK KwkJCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1Yl9lbGVtLT5v aWQsCisJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJ CSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFS VF9MRUFGKTsKIAkJCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0 aW9ucyhwdWJfZWxlbS0+b2lkLAogCQkJCQkJCQkJCQkJCQkJCXB1Yl9lbGVtLT5wdWJ2aWFyb290 ID8KIAkJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgpAQCAtMTM2Nyw3ICsx OTEwLDcgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQR19GVU5DVElPTl9BUkdTKQog CQlwdWJsaWNhdGlvbiA9IEdldFB1YmxpY2F0aW9uQnlOYW1lKHB1Ym5hbWUsIGZhbHNlKTsKIAog CQlpZiAocHVibGljYXRpb24tPmFsbHNlcXVlbmNlcykKLQkJCXNlcXVlbmNlcyA9IEdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKFJFTEtJTkRfU0VRVUVOQ0UsIGZhbHNlKTsKKwkJCXNlcXVlbmNl cyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9uLCBSRUxLSU5EX1NFUVVF TkNFKTsKIAogCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBzZXF1ZW5jZXM7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggZmMzYTRjMTllNjUuLjZiYjgxNmIyMTljIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMTk4LDcgKzE5OCwxMiBA QCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlwZSkKIAkJeworCQkJ Y2FzZSBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFi bGUpOworCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKKwkJCQlwdWJv YmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKIAkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMs IHB1Ym9iai0+cHVidGFibGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9U QUJMRVNfSU5fU0NIRU1BOgpAQCAtNTE5LDggKzUyNCw4IEBAIEludmFsaWRhdGVQdWJSZWxTeW5j Q2FjaGUoT2lkIHB1YmlkLCBib29sIHB1YmFsbHRhYmxlcykKIAkJICogYSB0YXJnZXQuIEhvd2V2 ZXIsIFdBTCByZWNvcmRzIGZvciBUUlVOQ0FURSBzcGVjaWZ5IGJvdGggYSByb290IGFuZAogCQkg KiBpdHMgbGVhdmVzLgogCQkgKi8KLQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMo cHViaWQsCi0JCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJcmVsaWRzID0gR2V0 UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCSBQVUJMSUNB VElPTl9QQVJUX0FMTCk7CiAJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKHB1YmlkLAogCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAK QEAgLTkyOSw1NSArOTM0LDYxIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50 KCk7CiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KLQlp ZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3Rt dC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAorCQkJCQkJCSAgICZzY2hlbWFpZGxp c3QpOworCisJLyogRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCisJ aWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQllcnJt c2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJs aWNhdGlvbiIpKTsKKworCS8qIEFkZCByZWxhdGlvbnMgKHRhYmxlcykgdG8gdGhlIHB1YmxpY2F0 aW9uLiAqLworCWlmIChyZWxhdGlvbnMgIT0gTklMKQogCXsKIAkJLyoKLQkJICogSW52YWxpZGF0 ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4gU2VxdWVuY2Vz Ci0JCSAqIHB1YmxpY2F0aW9uIGRvZXNuJ3QgcmVxdWlyZSBpbnZhbGlkYXRpb24sIGFzIHJlcGxp Y2EgaWRlbnRpdHkKLQkJICogY2hlY2tzIGRvbid0IGFwcGx5IHRvIHRoZW0uCisJCSAqIFRoZSAn cmVsYXRpb25zJyBsaXN0IGNhbiBiZSBub24tZW1wdHkgaW4gb25seSB0d28gY2FzZXM6CisJCSAq CisJCSAqIDEuIENSRUFURSBQVUJMSUNBVElPTiAuLi4gRk9SIFRBQkxFIEluIHRoaXMgY2FzZSwg J3JlbGF0aW9ucycKKwkJICogY29udGFpbnMgdGhlIGxpc3Qgb2Ygc3BlY2lmaWVkIHRhYmxlcy4K KwkJICoKKwkJICogMi4gQ1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgQUxMIFRBQkxFUyBJbiB0 aGlzIGNhc2UsICdyZWxhdGlvbnMnCisJCSAqIGNvbnRhaW5zIHRoZSBsaXN0IG9mIHRhYmxlcyBz cGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCisJCSAqIER1cmluZyBwYXJzaW5n LCB0aGUgJ2V4Y2VwdCcgZmxhZyBpcyBzZXQgZm9yIHRoZSBhc3NvY2lhdGVkCisJCSAqIFB1Ymxp Y2F0aW9uUmVsSW5mbyBvYmplY3RzLgogCQkgKi8KLQkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVB bGwoKTsKLQl9Ci0JZWxzZSBpZiAoIXN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKQotCXsKLQkJT2Jq ZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRp b25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKKwkJTGlzdAkgICAqcmVsczsKIAotCQkv KiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KLQkJaWYgKHNjaGVt YWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAotCQkJCQllcnJtc2coIm11 c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlv biIpKTsKLQotCQlpZiAocmVsYXRpb25zICE9IE5JTCkKLQkJewotCQkJTGlzdAkgICAqcmVsczsK KwkJcmVscyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKKwkJVHJhbnNmb3JtUHViV2hlcmVD bGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJCQkgcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QpOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOwot CQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAot CQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJQ2hlY2tQdWJSZWxhdGlv bkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywKKwkJCQkJCQkJICAgc2NoZW1haWRsaXN0 ICE9IE5JTCwKKwkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlD aGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxzLAotCQkJCQkJCQkJ ICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKLQkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290KTsKLQotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBO VUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwotCQl9CisJCVB1YmxpY2F0aW9uQWRkVGFi bGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwor CX0KIAotCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKLQkJewotCQkJLyoKLQkJCSAqIFNjaGVt YSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVu dAotCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCi0JCQkgKi8KLQkJCUxvY2tTY2hl bWFMaXN0KHNjaGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLCBz Y2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwotCQl9CisJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwp CisJeworCQkvKgorCQkgKiBTY2hlbWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlv biBpcyBjcmVhdGVkIHRvIHByZXZlbnQKKwkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24u CisJCSAqLworCQlMb2NrU2NoZW1hTGlzdChzY2hlbWFpZGxpc3QpOworCQlQdWJsaWNhdGlvbkFk ZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwogCX0KIAogCXRhYmxl X2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJs ZXMpCisJeworCQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5m byBpcyByZWJ1aWx0LiAqLworCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOworCX0KKwog CUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgcHVib2lk LCAwKTsKIAogCS8qCkBAIC0xMDUwLDggKzEwNjEsOCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9u cyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQlMb2Nr RGF0YWJhc2VPYmplY3QoUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJmb3JtLT5vaWQsIDAsCiAJ CQkJCQkgICBBY2Nlc3NTaGFyZUxvY2spOwogCi0JCXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRp b25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRf Uk9PVCk7CisJCXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhw dWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCiAJ CWZvcmVhY2gobGMsIHJvb3RfcmVsaWRzKQogCQl7CkBAIC0xMTcwLDggKzExODEsOCBAQCBBbHRl clB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LAogCQkgKiB0cmVlcywgbm90IGp1c3QgdGhvc2UgZXhwbGljaXRseSBtZW50aW9u ZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgogCQkgKi8KIAkJaWYgKHJvb3RfcmVsaWRzID09IE5JTCkK LQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKLQkJCQkJ CQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9u SW5jbHVkZWRSZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX0FMTCk7CiAJCWVsc2UKIAkJewogCQkJLyoKQEAgLTEyNTYsOCArMTI2Nyw4IEBAIEFs dGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBs ZSB0dXAsCiAJCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UpOwogCWVs c2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICovCiAJewotCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBH ZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05f UEFSVF9ST09UKTsKKwkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRl ZFJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1Qp OwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIApAQCAt MTM1OCw2ICsxMzY5LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQlvbGRyZWwgPSBwYWxsb2Nfb2JqZWN0KFB1 YmxpY2F0aW9uUmVsSW5mbyk7CiAJCQkJb2xkcmVsLT53aGVyZUNsYXVzZSA9IE5VTEw7CiAJCQkJ b2xkcmVsLT5jb2x1bW5zID0gTklMOworCQkJCW9sZHJlbC0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJ b2xkcmVsLT5yZWxhdGlvbiA9IHRhYmxlX29wZW4ob2xkcmVsaWQsCiAJCQkJCQkJCQkJCSAgU2hh cmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJCQlkZWxyZWxzID0gbGFwcGVuZChkZWxyZWxzLCBv bGRyZWwpOwpAQCAtMTQwOCw3ICsxNDIwLDggQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxpc3RDZWxsICAgKmxjOwogCQlMaXN0CSAgICpy ZWxvaWRzOwogCi0JCXJlbG9pZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5v aWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCXJlbG9pZHMgPSBHZXRQdWJsaWNhdGlvbklu Y2x1ZGVkUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05f UEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCByZWxvaWRzKQogCQl7CkBAIC0xNzcxLDYgKzE3 ODQsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkJcHViX3JlbC0+cmVsYXRpb24g PSByZWw7CiAJCXB1Yl9yZWwtPndoZXJlQ2xhdXNlID0gdC0+d2hlcmVDbGF1c2U7CiAJCXB1Yl9y ZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQlwdWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7 CiAJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQlyZWxpZHMgPSBsYXBwZW5kX29p ZChyZWxpZHMsIG15cmVsaWQpOwogCkBAIC0xODQzLDYgKzE4NTcsNyBAQCBPcGVuVGFibGVMaXN0 KExpc3QgKnRhYmxlcykKIAogCQkJCS8qIGNoaWxkIGluaGVyaXRzIGNvbHVtbiBsaXN0IGZyb20g cGFyZW50ICovCiAJCQkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCQkJcHViX3Jl bC0+ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQkJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwp OwogCQkJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgY2hpbGRyZWxpZCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCAwYjNjODQ5OWI0OS4uODA0YWUy ZjM0OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTI5NDAs NiArMjk0MCw4IEBAIGZldGNoX3JlbGF0aW9uX2xpc3QoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4s IExpc3QgKnB1YmxpY2F0aW9ucykKIAkJCQkJCSBwdWJfbmFtZXMuZGF0YSk7CiAJfQogCisJZWxv ZyhMT0csICJmZXRjaF9yZWxhdGlvbl9saXN0OiBleGVjdXRpbmcgcXVlcnkgdG8gZmV0Y2ggZWZm ZWN0aXZlcmVsYXRpb25zOiBcbiVzIiwKKwkJIGNtZC5kYXRhKTsKIAlwZnJlZShwdWJfbmFtZXMu ZGF0YSk7CiAKIAlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4sIGNtZC5kYXRhLCBjb2x1bW5fY291 bnQsIHRhYmxlUm93KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZjk3NmMwZTVjN2Uu LmE1MzUxZmM1OWM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtODY4OCw3ICs4Njg4 LDcgQEAgQVRFeGVjU2V0RXhwcmVzc2lvbihBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkgKiBleHByZXNzaW9ucy4KIAkgKi8KIAlpZiAo YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCAmJgotCQlHZXRSZWxh dGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpICE9IE5JTCkKKwkJR2V0UmVs YXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBOVUxMLCBOVUxMKSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCiAJCQkJIGVycm1zZygiQUxURVIgVEFCTEUgLyBTRVQgRVhQUkVTU0lPTiBpcyBub3Qgc3Vw cG9ydGVkIGZvciB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGluIHRhYmxlcyB0aGF0IGFyZSBw YXJ0IG9mIGEgcHVibGljYXRpb24iKSwKQEAgLTE4ODg0LDcgKzE4ODg0LDcgQEAgQVRQcmVwQ2hh bmdlUGVyc2lzdGVuY2UoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGJvb2wg dG9Mb2dnZWQpCiAJICogVU5MT0dHRUQsIGFzIFVOTE9HR0VEIHRhYmxlcyBjYW4ndCBiZSBwdWJs aXNoZWQuCiAJICovCiAJaWYgKCF0b0xvZ2dlZCAmJgotCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9u cyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpICE9IE5JTCkKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlv bnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBOVUxMLCBOVUxMKSkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK IAkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlIFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNh dXNlIGl0IGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA3MTNlZTVj MTBhMi4uZDNjM2U5ZjU5YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjAzLDYgKzIwMyw3IEBAIHN0YXRp YyB2b2lkIHByb2Nlc3NDQVNiaXRzKGludCBjYXNfYml0cywgaW50IGxvY2F0aW9uLCBjb25zdCBj aGFyICpjb25zdHJUeXBlLAogc3RhdGljIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnNlUGFydGl0aW9u U3RyYXRlZ3koY2hhciAqc3RyYXRlZ3ksIGludCBsb2NhdGlvbiwKIAkJCQkJCQkJCQkJCWNvcmVf eXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyB2b2lkIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0 eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwKKwkJCQkJCQkJCQkJTGlzdCAqKnB1Ym9i amVjdHMsCiAJCQkJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsCiAJCQkJCQkJCQkJCWJvb2wgKmFs bF9zZXF1ZW5jZXMsCiAJCQkJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKQEAgLTQ1 NSw2ICs0NTYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCVRyaWdnZXJUcmFuc2l0 aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFj dXVtX3JlbGF0aW9uX2xpc3QKIAkJCQlkcm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlzdCBwdWJf YWxsX29ial90eXBlX2xpc3QKKwkJCQlwdWJfZXhjZXB0X29ial9saXN0IG9wdF9wdWJfZXhjZXB0 X2NsYXVzZQogCiAldHlwZSA8cmV0Y2xhdXNlPiByZXR1cm5pbmdfY2xhdXNlCiAldHlwZSA8bm9k ZT4JcmV0dXJuaW5nX29wdGlvbgpAQCAtNTkyLDYgKzU5NCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAldHlwZSA8bm9kZT4JdmFyX3ZhbHVlIHpvbmVfdmFsdWUKICV0eXBlIDxyb2xlc3Bl Yz4gYXV0aF9pZGVudCBSb2xlU3BlYyBvcHRfZ3JhbnRlZF9ieQogJXR5cGUgPHB1YmxpY2F0aW9u b2JqZWN0c3BlYz4gUHVibGljYXRpb25PYmpTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmplY3Rz cGVjPiBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKICV0eXBlIDxwdWJsaWNhdGlvbmFsbG9iamVj dHNwZWM+IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5yZXNlcnZl ZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKQEAgLTEwNzkyLDcgKzEwNzk1LDcgQEAg QWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBP V05FUiBUTyBSb2xlU3BlYwogICoKICAqIHB1Yl9hbGxfb2JqX3R5cGUgaXMgb25lIG9mOgogICoK LSAqCQlUQUJMRVMKKyAqCQlUQUJMRVMgW0VYQ0VQVCBbVEFCTEVdICggdGFibGUgWywgLi4uXSAp XQogICoJCVNFUVVFTkNFUwogICoKICAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgcHViX29iaiBb LCAuLi5dIFtXSVRIIG9wdGlvbnNdCkBAIC0xMDgxOCw3ICsxMDgyMSw4IEBAIENyZWF0ZVB1Ymxp Y2F0aW9uU3RtdDoKIAkJCQkJQ3JlYXRlUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQ3Jl YXRlUHVibGljYXRpb25TdG10KTsKIAogCQkJCQluLT5wdWJuYW1lID0gJDM7Ci0JCQkJCXByZXBy b2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoJDUsICZuLT5mb3JfYWxsX3RhYmxlcywKKwkJCQkJ cHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdCgkNSwgJm4tPnB1Ym9iamVjdHMsCisJCQkJ CQkJCQkJCQkJJm4tPmZvcl9hbGxfdGFibGVzLAogCQkJCQkJCQkJCQkJCSZuLT5mb3JfYWxsX3Nl cXVlbmNlcywKIAkJCQkJCQkJCQkJCQl5eXNjYW5uZXIpOwogCQkJCQluLT5vcHRpb25zID0gJDY7 CkBAIC0xMDg1OCw2ICsxMDg2Miw3IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1 YnRhYmxlLT5yZWxhdGlvbiA9ICQyOwogCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMzsK IAkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0OworCQkJCQkkJC0+bG9jYXRpb24g PSBAMTsKIAkJCQl9CiAJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJCXsKQEAgLTEw OTMzLDExICsxMDkzOCwxOSBAQCBwdWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJ CQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCitvcHRfcHViX2V4Y2VwdF9jbGF1c2U6 CisJCQlFWENFUFQgb3B0X3RhYmxlICcoJyBwdWJfZXhjZXB0X29ial9saXN0ICcpJwl7ICQkID0g JDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCiBQdWJs aWNhdGlvbkFsbE9ialNwZWM6Ci0JCQkJQUxMIFRBQkxFUworCQkJCUFMTCBUQUJMRVMgb3B0X3B1 Yl9leGNlcHRfY2xhdXNlCiAJCQkJCXsKIAkJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25B bGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05fQUxMX1RBQkxF UzsKKwkJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDM7CisJCQkJCQlpZigkJC0+ZXhjZXB0X3Rh YmxlcyAhPSBOVUxMKQorCQkJCQkJCXByZXByb2Nlc3NfcHVib2JqX2xpc3QoJCQtPmV4Y2VwdF90 YWJsZXMsIHl5c2Nhbm5lcik7CiAJCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQkJfQogCQkJ CXwgQUxMIFNFUVVFTkNFUwpAQCAtMTA5NTQsNiArMTA5NjcsMjMgQEAgcHViX2FsbF9vYmpfdHlw ZV9saXN0OglQdWJsaWNhdGlvbkFsbE9ialNwZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQz KTsgfQogCTsKIAorUHVibGljYXRpb25FeGNlcHRPYmpTcGVjOgorCQkJIHJlbGF0aW9uX2V4cHIK KwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQt PnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEU7CisJCQkJCSQkLT5wdWJ0 YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOworCQkJCQkkJC0+cHVidGFibGUtPmV4 Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMTsKKwkJCQkJJCQt PmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsKKworcHViX2V4Y2VwdF9vYmpfbGlzdDogUHVibGlj YXRpb25FeGNlcHRPYmpTcGVjCisJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBw dWJfZXhjZXB0X29ial9saXN0ICcsJyBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCQkJeyAk JCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpA QCAtMTk3OTQsOCArMTk4MjQsOSBAQCBwYXJzZVBhcnRpdGlvblN0cmF0ZWd5KGNoYXIgKnN0cmF0 ZWd5LCBpbnQgbG9jYXRpb24sIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogICogQWxzbywgY2hl Y2tzIGlmIHRoZSBwdWJfb2JqZWN0X3R5cGUgaGFzIGJlZW4gc3BlY2lmaWVkIG1vcmUgdGhhbiBv bmNlLgogICovCiBzdGF0aWMgdm9pZAotcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChM aXN0ICphbGxfb2JqZWN0c19saXN0LCBib29sICphbGxfdGFibGVzLAotCQkJCQkJCQlib29sICph bGxfc2VxdWVuY2VzLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKK3ByZXByb2Nlc3NfcHViX2Fs bF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMs CisJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsIGJvb2wgKmFsbF9zZXF1ZW5jZXMsCisJCQkJCQkJ CWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogewogCWlmICghYWxsX29iamVjdHNfbGlzdCkKIAkJ cmV0dXJuOwpAQCAtMTk4MTUsNiArMTk4NDYsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlw ZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIGJvb2wgKmFsbF90YWJsZXMsCiAJCQkJCQlw YXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2NhdGlvbikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRy dWU7CisJCQkqcHVib2JqZWN0cyA9IGxpc3RfY29uY2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2Vw dF90YWJsZXMpOwogCQl9CiAJCWVsc2UgaWYgKG9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElP Tl9BTExfU0VRVUVOQ0VTKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYwppbmRleCAxOWEzYzIxYTg2My4uYzQxZmU0MWVhN2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNzE2LDIxICs3MTYsMjggQEAg Y29weV9yZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAg KiBtZXNzYWdlIHByb3ZpZGVzIGR1cmluZyByZXBsaWNhdGlvbi4KICAqCiAgKiBUaGlzIGZ1bmN0 aW9uIGFsc28gcmV0dXJucyAoYSkgdGhlIHJlbGF0aW9uIHF1YWxpZmljYXRpb25zIHRvIGJlIHVz ZWQgaW4KLSAqIHRoZSBDT1BZIGNvbW1hbmQsIGFuZCAoYikgd2hldGhlciB0aGUgcmVtb3RlIHJl bGF0aW9uIGhhcyBwdWJsaXNoZWQgYW55Ci0gKiBnZW5lcmF0ZWQgY29sdW1uLgorICogdGhlIENP UFkgY29tbWFuZCwgKGIpIHdoZXRoZXIgdGhlIHJlbW90ZSByZWxhdGlvbiBoYXMgcHVibGlzaGVk IGFueQorICogZ2VuZXJhdGVkIGNvbHVtbiwgYW5kIChjKSBjb21wdXRlcyB0aGUgZWZmZWN0aXZl IHNldCBvZiByZWxhdGlvbnMgdG8gYmUgdXNlZAorICogYXMgQ09QWSBzb3VyY2VzIHdoZW4gZXhj bHVzaW9ucyBhcmUgcHJlc2VudC4gV2hlbiBubyBleGNsdXNpb25zIGV4aXN0LCB0aGUKKyAqIGxp c3QgcmVtYWlucyBlbXB0eSBhbmQgdGhlIHJvb3QgcmVsYXRpb24gaXMgdXNlZCBhcy1pcy4gV2hl biBleGNsdXNpb25zCisgKiBleGlzdCwgdGhlIGxpc3QgY29udGFpbnMgbGVhZiByZWxhdGlvbnMg dGhhdCBhcmUgbm90IGV4Y2x1ZGVkIGFuZCBtdXN0IGJlCisgKiBjb21iaW5lZCB1c2luZyBVTklP TiBBTEwuCiAgKi8KIHN0YXRpYyB2b2lkCiBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpu c3BuYW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCi0JCQkJCQlM aXN0ICoqcXVhbCwgYm9vbCAqZ2VuY29sX3B1Ymxpc2hlZCkKKwkJCQkJCUxpc3QgKipxdWFsLCBi b29sICpnZW5jb2xfcHVibGlzaGVkLAorCQkJCQkJTGlzdCAqKmVmZmVjdGl2ZV9yZWxhdGlvbnMp CiB7CiAJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOwogCVN0cmluZ0luZm9EYXRhIGNtZDsKIAlUdXBs ZVRhYmxlU2xvdCAqc2xvdDsKLQlPaWQJCQl0YWJsZVJvd1tdID0ge09JRE9JRCwgQ0hBUk9JRCwg Q0hBUk9JRH07CisJT2lkCQkJdGFibGVSb3dbXSA9IHtPSURPSUQsIENIQVJPSUQsIENIQVJPSUQs IEJPT0xPSUR9OwogCU9pZAkJCWF0dHJSb3dbXSA9IHtJTlQyT0lELCBURVhUT0lELCBPSURPSUQs IEJPT0xPSUQsIEJPT0xPSUR9OwogCU9pZAkJCXF1YWxSb3dbXSA9IHtURVhUT0lEfTsKKwlPaWQJ CQlmaWx0ZXJ0YWJsZVJvd1tdID0ge1RFWFRPSUQsIFRFWFRPSUR9OwogCWJvb2wJCWlzbnVsbDsK IAlpbnQJCQluYXR0OworCWJvb2wJCWlzX3BhcnRpdGlvbjsKIAlTdHJpbmdJbmZvCXB1Yl9uYW1l cyA9IE5VTEw7CiAJQml0bWFwc2V0ICAqaW5jbHVkZWRfY29scyA9IE5VTEw7CiAJaW50CQkJc2Vy dmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29u bik7CkBAIC03NDAsNyArNzQ3LDcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNw bmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCiAJLyogRmly c3QgZmV0Y2ggT2lkIGFuZCByZXBsaWNhIGlkZW50aXR5LiAqLwogCWluaXRTdHJpbmdJbmZvKCZj bWQpOwotCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIlNFTEVDVCBjLm9pZCwgYy5yZWxyZXBsaWRl bnQsIGMucmVsa2luZCIKKwlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJTRUxFQ1QgYy5vaWQsIGMu cmVscmVwbGlkZW50LCBjLnJlbGtpbmQsIGMucmVsaXNwYXJ0aXRpb24iCiAJCQkJCSAiICBGUk9N IHBnX2NhdGFsb2cucGdfY2xhc3MgYyIKIAkJCQkJICIgIElOTkVSIEpPSU4gcGdfY2F0YWxvZy5w Z19uYW1lc3BhY2UgbiIKIAkJCQkJICIgICAgICAgIE9OIChjLnJlbG5hbWVzcGFjZSA9IG4ub2lk KSIKQEAgLTc3MCw2ICs3NzcsOCBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3Bu YW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCiAJQXNzZXJ0KCFp c251bGwpOwogCWxyZWwtPnJlbGtpbmQgPSBEYXR1bUdldENoYXIoc2xvdF9nZXRhdHRyKHNsb3Qs IDMsICZpc251bGwpKTsKIAlBc3NlcnQoIWlzbnVsbCk7CisJaXNfcGFydGl0aW9uID0gRGF0dW1H ZXRCb29sKHNsb3RfZ2V0YXR0cihzbG90LCA0LCAmaXNudWxsKSk7CisJQXNzZXJ0KCFpc251bGwp OwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAl3YWxyY3ZfY2xlYXJf cmVzdWx0KHJlcyk7CkBAIC05NTQsNiArOTYzLDc1IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZv KGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBSZWxhdGlvbiAqbHJlbCwK IAogCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKIAorCWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAx OTAwMDAgJiYgIWlzX3BhcnRpdGlvbiAmJgorCQlscmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpCisJeworCQlyZXNldFN0cmluZ0luZm8oJmNtZCk7CisKKwkJLyoKKwkJ ICogVGhpcyBxdWVyeSByZWN1cnNpdmVseSB0cmF2ZXJzZXMgdGhlIGluaGVyaXRhbmNlIChwYXJ0 aXRpb24pIHRyZWUKKwkJICogc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gdGFibGUgT0lEIGFuZCBk ZXRlcm1pbmVzIHdoaWNoIGxlYWYKKwkJICogcmVsYXRpb25zIHNob3VsZCBiZSBpbmNsdWRlZCBm b3IgcmVwbGljYXRpb24uIEV4Y2x1c2lvbiBwcm9wYWdhdGVzCisJCSAqIGZyb20gcGFyZW50IHRv IGNoaWxkLCBhbmQgYSByZWxhdGlvbiBpcyBhbHNvIHRyZWF0ZWQgYXMgZXhjbHVkZWQgaWYKKwkJ ICogaXQgaXMgZXhwbGljaXRseSBtYXJrZWQgd2l0aCBwcmV4Y2VwdCA9IHRydWUgaW4gcGdfcHVi bGljYXRpb25fcmVsCisJCSAqIGZvciB0aGUgc3BlY2lmaWVkIHB1YmxpY2F0aW9ucy4gVGhlIGZp bmFsIHJlc3VsdCByZXR1cm5zIG9ubHkKKwkJICogbm9uIGV4Y2x1ZGVkIGxlYWYgcmVsYXRpb25z LgorCQkgKi8KKwkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiU0VMRUNUIHNjaGVtYW5hbWUsIHJl bG5hbWUgRlJPTSBwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0aXZlX3RhYmxlcygldSwgQVJSQVlb JXNdKTsiLAorCQkJCQkJIGxyZWwtPnJlbW90ZWlkLAorCQkJCQkJIHB1Yl9uYW1lcy0+ZGF0YSk7 CisKKwkJZWxvZyhMT0csICJFeGVjdXRpbmcgcXVlcnkgdG8gZ2V0IHRoZSB0YWJsZXM6XG4lcyIs IGNtZC5kYXRhKTsKKwkJcmVzID0gd2FscmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwg Y21kLmRhdGEsCisJCQkJCQkgIGxlbmd0aG9mKGZpbHRlcnRhYmxlUm93KSwgZmlsdGVydGFibGVS b3cpOworCisJCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfVFVQTEVTKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCisJCQkJ CWVycm1zZygiY291bGQgbm90IGdldCBub24gZXhjbHVkZWQgdGFibGUgbGlzdCBmb3IgdGFibGUg XCIlcy4lc1wiIGZyb20gcHVibGlzaGVyOiAlcyIsCisJCQkJCQkJbnNwbmFtZSwgcmVsbmFtZSwg cmVzLT5lcnIpKTsKKworCQkvKgorCQkgKiBTdG9yZSB0aGUgdGFibGVzIGFzIGEgbGlzdCBvZiBz Y2hlbWFuYW1lIGFuZCB0YWJsZW5hbWUuCisJCSAqLworCQlzbG90ID0gTWFrZVNpbmdsZVR1cGxl VGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsKKwkJd2hpbGUg KHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNs b3QpKQorCQl7CisJCQlRdWFsaWZpZWRSZWxhdGlvbk5hbWUgKnJlbGluZm8gPSBwYWxsb2Nfb2Jq ZWN0KFF1YWxpZmllZFJlbGF0aW9uTmFtZSk7CisKKwkJCXJlbGluZm8tPnNjaGVtYW5hbWUgPSBU ZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAxLCAmaXNudWxsKSk7CisJCQlB c3NlcnQoIWlzbnVsbCk7CisJCQlyZWxpbmZvLT5yZWxuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmlu ZyhzbG90X2dldGF0dHIoc2xvdCwgMiwgJmlzbnVsbCkpOworCQkJQXNzZXJ0KCFpc251bGwpOwor CisJCQkqZWZmZWN0aXZlX3JlbGF0aW9ucyA9IGxhcHBlbmQoKmVmZmVjdGl2ZV9yZWxhdGlvbnMs IHJlbGluZm8pOworCisJCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwkJfQorCisJCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwkJLyoKKwkJICogSWYgdGhlcmUgaXMgZXhh Y3RseSBvbmUgaXRlbSBpbiB0aGUgZWZmZWN0aXZlX3JlbGF0aW9ucyBsaXN0IGFuZCBpdAorCQkg KiBlcXVhbHMgdGhlIHRhYmxlIGJlaW5nIHByb2Nlc3NlZCwgdGhhdCBtZWFucyBubyBhY3R1YWwg ZXhjbHVzaW9uCisJCSAqIG9jY3VycmVkLgorCQkgKi8KKwkJaWYgKGxpc3RfbGVuZ3RoKCplZmZl Y3RpdmVfcmVsYXRpb25zKSA9PSAxKQorCQl7CisJCQlRdWFsaWZpZWRSZWxhdGlvbk5hbWUgKnJl bGluZm87CisKKwkJCXJlbGluZm8gPSBsaW5pdGlhbCgqZWZmZWN0aXZlX3JlbGF0aW9ucyk7CisJ CQlpZiAoc3RyY21wKG5zcG5hbWUsIHJlbGluZm8tPnNjaGVtYW5hbWUpID09IDAgJiYKKwkJCQlz dHJjbXAocmVsbmFtZSwgcmVsaW5mby0+cmVsbmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlwZnJlZShy ZWxpbmZvLT5zY2hlbWFuYW1lKTsKKwkJCQlwZnJlZShyZWxpbmZvLT5yZWxuYW1lKTsKKwkJCQls aXN0X2ZyZWVfZGVlcCgqZWZmZWN0aXZlX3JlbGF0aW9ucyk7CisJCQkJKmVmZmVjdGl2ZV9yZWxh dGlvbnMgPSBOSUw7CisJCQl9CisJCX0KKwl9CisKIAkvKgogCSAqIEdldCByZWxhdGlvbidzIHJv dyBmaWx0ZXIgZXhwcmVzc2lvbnMuIERJU1RJTkNUIGF2b2lkcyB0aGUgc2FtZQogCSAqIGV4cHJl c3Npb24gb2YgYSB0YWJsZSBpbiBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgZnJvbSBiZWluZyBpbmNs dWRlZApAQCAtMTA0Myw2ICsxMTIxLDcgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAJTG9n aWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxtYXBlbnRyeTsKIAlMb2dpY2FsUmVwUmVsYXRpb24gbHJl bDsKIAlMaXN0CSAgICpxdWFsID0gTklMOworCUxpc3QJICAgKmVmZmVjdGl2ZV9yZWxhdGlvbnMg PSBOSUw7CiAJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOwogCVN0cmluZ0luZm9EYXRhIGNtZDsKIAlD b3B5RnJvbVN0YXRlIGNzdGF0ZTsKQEAgLTEwNTQsNyArMTEzMyw3IEBAIGNvcHlfdGFibGUoUmVs YXRpb24gcmVsKQogCS8qIEdldCB0aGUgcHVibGlzaGVyIHJlbGF0aW9uIGluZm8uICovCiAJZmV0 Y2hfcmVtb3RlX3RhYmxlX2luZm8oZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNw YWNlKHJlbCkpLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksICZscmVsLCAm cXVhbCwKLQkJCQkJCQkmZ2VuY29sX3B1Ymxpc2hlZCk7CisJCQkJCQkJJmdlbmNvbF9wdWJsaXNo ZWQsICZlZmZlY3RpdmVfcmVsYXRpb25zKTsKIAogCS8qIFB1dCB0aGUgcmVsYXRpb24gaW50byBy ZWxtYXAuICovCiAJbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKCZscmVsKTsKQEAgLTEwNjYsMTIg KzExNDUsNjQgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAJLyogU3RhcnQgY29weSBvbiB0 aGUgcHVibGlzaGVyLiAqLwogCWluaXRTdHJpbmdJbmZvKCZjbWQpOwogCisKKwlpZiAoZWZmZWN0 aXZlX3JlbGF0aW9ucyAmJiBsaXN0X2xlbmd0aChlZmZlY3RpdmVfcmVsYXRpb25zKSkKKwl7CisJ CWJvb2wgZmlyc3QgPSB0cnVlOworCisJCS8qCisJCSAqIEJ1aWxkIGEgc2luZ2xlIENPUFkgY29t bWFuZCB0byBzeW5jaHJvbml6ZSBhbGwgcmVzb2x2ZWQgcmVsYXRpb25zCisJCSAqIGludG8gdGhl IHJvb3QgdGFibGUuCisJCSAqCisJCSAqIFRoZSBhcnJheSAnZWZmZWN0aXZlX3JlbGF0aW9ucycg Y29udGFpbnMgdGhlIGxlYWYgdGFibGVzIG9mCisJCSAqIHBhcnRpdGlvbiBoaWVyYXJjaGllcywg d2l0aCBleGNsdWRlZCBzdWJ0cmVlcyByZW1vdmVkIGFjY29yZGluZyB0bworCQkgKiB0aGUgRVhD RVBUIGNsYXVzZXMuIFRoaXMgYXBwbGllcyBvbmx5IHdoZW4KKwkJICogJ3B1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290JyBpcyBlbmFibGVkLCBzaW5jZSB0aGUgaW5pdGlhbCBzeW5jIG11c3QKKwkJ ICogcm91dGUgYWxsIGNoYW5nZXMgdG8gdGhlIHJvb3QgdGFibGUuCisJCSAqCisJCSAqIFdlIGNv bnN0cnVjdCBhIFVOSU9OIEFMTCBxdWVyeSB0aGF0IGNvbWJpbmVzIGRhdGEgZnJvbSBtdWx0aXBs ZSBsZWFmCisJCSAqIHJlbGF0aW9ucyBpbnRvIG9uZSBzdWItQ09QWSBzdGF0ZW1lbnQsIGVuc3Vy aW5nIGFsbCByb3dzIGFyZSBjb3BpZWQKKwkJICogY29uc2lzdGVudGx5IGludG8gdGhlIHJvb3Qg dGFibGUuCisJCSAqLworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICJDT1BZIChcbiIp OworCQlmb3JlYWNoX3B0cihRdWFsaWZpZWRSZWxhdGlvbk5hbWUsIHJlbGluZm8sIGVmZmVjdGl2 ZV9yZWxhdGlvbnMpCisJCXsKKwkJCWlmICghZmlyc3QpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmY21kLCAiVU5JT04gQUxMXG4iKTsKKworCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiU0VMRUNUICIpOworCisJCQkvKiBJZiB0aGUgdGFi bGUgaGFzIGNvbHVtbnMsIHRoZW4gc3BlY2lmeSB0aGUgY29sdW1ucyAqLworCQkJaWYgKGxyZWwu bmF0dHMpCisJCQl7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBscmVsLm5hdHRzOyBpKyspCisJ CQkJeworCQkJCQlpZiAoaSA+IDApCisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQs ICIsICIpOworCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgcXVvdGVfaWRlbnRp ZmllcihscmVsLmF0dG5hbWVzW2ldKSk7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiAqICIpOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZj bWQsICIgRlJPTSAgJXNcbiIsCisJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKHJl bGluZm8tPnNjaGVtYW5hbWUsCisJCQkJCQkJCQkJCQkJCXJlbGluZm8tPnJlbG5hbWUpKTsKKwkJ fQorCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIilcbiIpOworCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZjbWQsICJUTyBTVERPVVQiKTsKKwl9CiAJLyogUmVndWxhciBvciBwYXJ0 aXRpb25lZCB0YWJsZSB3aXRoIG5vIHJvdyBmaWx0ZXIgb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKi8K LQlpZiAoKGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8IGxyZWwucmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQkmJiBxdWFsID09IE5JTCAmJiAhZ2VuY29s X3B1Ymxpc2hlZCkKKwllbHNlIGlmICgobHJlbC5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04g fHwKKwkJCSAgbHJlbC5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICYmCisJ CQkgcXVhbCA9PSBOSUwgJiYgIWdlbmNvbF9wdWJsaXNoZWQpCiAJewogCQlhcHBlbmRTdHJpbmdJ bmZvKCZjbWQsICJDT1BZICVzIiwKLQkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihs cmVsLm5zcG5hbWUsIGxyZWwucmVsbmFtZSkpOworCQkJCQkJcXVvdGVfcXVhbGlmaWVkX2lkZW50 aWZpZXIobHJlbC5uc3BuYW1lLCBscmVsLnJlbG5hbWUpKTsKIAogCQkvKiBJZiB0aGUgdGFibGUg aGFzIGNvbHVtbnMsIHRoZW4gc3BlY2lmeSB0aGUgY29sdW1ucyAqLwogCQlpZiAobHJlbC5uYXR0 cykKQEAgLTExNTcsNiArMTI4OCw3IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCX0KIAog CXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sIGNtZC5kYXRhLCAwLCBO VUxMKTsKKwllbG9nKExPRywgIlRhYmxlc3luYyB3b3JrZXI6IEV4ZWN1dGluZyBxdWVyeSB0byBn ZXQgdGhlIGluaXRpYWwgc3luYyBkYXRhOlxuJXMiLCBjbWQuZGF0YSk7CiAJcGZyZWUoY21kLmRh dGEpOwogCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfQ09QWV9PVVQpCiAJCWVyZXBvcnQo RVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRl eCBlMDE2ZjY0ZTBiMy4uZjAxYzlhNDBmYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjA4OCw3ICsyMDg4LDcgQEAgZ2V0X3JlbF9zeW5jX2Vu dHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRyeS0+ cmVwbGljYXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVzcGFj ZShyZWxpZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJl bGlkKTsKKwkJTGlzdAkgICAqcHViaWRzID0gTklMOwogCiAJCS8qCiAJCSAqIFdlIGRvbid0IGFj cXVpcmUgYSBsb2NrIG9uIHRoZSBuYW1lc3BhY2Ugc3lzdGVtIHRhYmxlIGFzIHdlIGJ1aWxkCkBA IC0yMTAzLDYgKzIxMDMsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRh LCBSZWxhdGlvbiByZWxhdGlvbikKIAkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChy ZWxpZCk7CiAJCUxpc3QJICAgKnJlbF9wdWJsaWNhdGlvbnMgPSBOSUw7CiAKKwkJR2V0UmVsYXRp b25QdWJsaWNhdGlvbnMocmVsaWQsICZwdWJpZHMsIE5VTEwpOworCiAJCS8qIFJlbG9hZCBwdWJs aWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICovCiAJCWlmICghcHVibGljYXRpb25zX3Zh bGlkKQogCQl7CkBAIC0yMjAyLDIwICsyMjA0LDQ1IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091 dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJLyoKIAkJCSAqIElmIHRoaXMg aXMgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiwgcGljayB0aGUgcGFydGl0aW9uCiAJCQkg KiByb290IGFuZCBzZXQgdGhlIGFuY2VzdG9yIGxldmVsIGFjY29yZGluZ2x5LgorCQkJICoKKwkJ CSAqIElmIHRoaXMgaXMgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiBhbmQgaXQgaGFzIGFu IEVYQ0VQVAorCQkJICogVEFCTEUgbGlzdDoKKwkJCSAqCisJCQkgKiBJZiB0aGUgcmVsYXRpb24g aXMgYSBwYXJ0aXRpb24sIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQKKwkJCSAqIHJlbGF0aW9u IG9yIGFueSBvZiB0aGUgYW5jZXN0b3JzIGlzIGluY2x1ZGVkIGluIHRoZSBFWENFUFQKKwkJCSAq IFRBQkxFIGxpc3QuIElmIHNvLCBkbyBub3QgcHVibGlzaCB0aGUgY2hhbmdlLiBUaGlzIGlzIGRv bmUKKwkJCSAqIGlycmVzcGVjdGl2ZSBvZiBwdWJ2aWFyb290IHNldHRpbmcuCisJCQkgKgorCQkJ ICogIkRvIG5vdCBwdWJsaXNoIHRoZSBjaGFuZ2UiIGlzIGFjaGlldmVkIGJ5IGtlZXBpbmcgdGhl IHZhcmlhYmxlCisJCQkgKiAicHVibGlzaCIgc2V0IHRvIGZhbHNlLiBBbmQgZXZlbnR1YWxseSwg ZW50cnktPnB1YmFjdGlvbnMgd2lsbAorCQkJICogcmVtYWluIGFsbCBmYWxzZSBmb3IgdGhpcyBw dWJsaWNhdGlvbi4KIAkJCSAqLwogCQkJaWYgKHB1Yi0+YWxsdGFibGVzKQogCQkJewotCQkJCXB1 Ymxpc2ggPSB0cnVlOwotCQkJCWlmIChwdWItPnB1YnZpYXJvb3QgJiYgYW1fcGFydGl0aW9uKQor CQkJCUxpc3QJICAgKmV4Y2VwdHB1YmlkcyA9IE5JTDsKKworCQkJCWlmIChhbV9wYXJ0aXRpb24p CiAJCQkJewogCQkJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9y cyhyZWxpZCk7CiAKLQkJCQkJcHViX3JlbGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7Ci0JCQkJ CWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJCQkJZm9yZWFjaF9v aWQoYW5jZXN0b3IsIGFuY2VzdG9ycykKKwkJCQkJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKGFu Y2VzdG9yLCBOVUxMLCAmZXhjZXB0cHViaWRzKTsKKworCQkJCQlpZiAocHViLT5wdWJ2aWFyb290 KQorCQkJCQl7CisJCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKKwkJCQkJ CWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJCQkJfQogCQkJCX0K LQkJCX0KIAotCQkJaWYgKCFwdWJsaXNoKQorCQkJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKHJl bGlkLCBOVUxMLCAmZXhjZXB0cHViaWRzKTsKKworCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4 Y2VwdHB1YmlkcywgcHViLT5vaWQpKQorCQkJCQlwdWJsaXNoID0gdHJ1ZTsKKworCQkJCWxpc3Rf ZnJlZShleGNlcHRwdWJpZHMpOworCQkJfQorCQkJZWxzZSBpZiAoIXB1Ymxpc2gpCiAJCQl7CiAJ CQkJYm9vbAkJYW5jZXN0b3JfcHVibGlzaGVkID0gZmFsc2U7CiAKQEAgLTIyNTksNiArMjI4Niw5 IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0 aW9uKQogCQkJICogRG9uJ3QgcHVibGlzaCBjaGFuZ2VzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMs IGJlY2F1c2UKIAkJCSAqIHB1Ymxpc2hpbmcgdGhvc2Ugb2YgaXRzIHBhcnRpdGlvbnMgc3VmZmlj ZXMsIHVubGVzcyBwYXJ0aXRpb24KIAkJCSAqIGNoYW5nZXMgd29uJ3QgYmUgcHVibGlzaGVkIGR1 ZSB0byBwdWJ2aWFyb290IGJlaW5nIHNldC4KKwkJCSAqCisJCQkgKiBJZiB0aGUgcmVsYXRpb24g aXMgcGFydCBvZiBFWENFUFQgVEFCTEUgbGlzdCBvZiBhIHB1YmxpY2F0aW9uLAorCQkJICogdGhl ICdwdWJsaXNoJyB2YXJpYWJsZSBpcyBhbHJlYWR5IHNldCB0byBmYWxzZS4KIAkJCSAqLwogCQkJ aWYgKHB1Ymxpc2ggJiYKIAkJCQkocmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF IHx8IHB1Yi0+cHVidmlhcm9vdCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA2 YjYzNGM5ZmZmMS4uZGMwMjFkYmI2Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpA QCAtNTc4OCw3ICs1Nzg4LDkgQEAgUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGlu ZGV4UmVsYXRpb24sCiB2b2lkCiBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9u IHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiB7Ci0JTGlzdAkgICAqcHVib2lk czsKKwlMaXN0CSAgICpwdWJvaWRzID0gTklMOworCUxpc3QJICAgKmV4Y2VwdHB1Ym9pZHMgPSBO SUw7CisJTGlzdAkgICAqYWxsdGFibGVzcHVib2lkczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlNZW1v cnlDb250ZXh0IG9sZGN4dDsKIAlPaWQJCQlzY2hlbWFpZDsKQEAgLTU4MjYsNyArNTgyOCw3IEBA IFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0 aW9uRGVzYyAqcHViZGVzYykKIAlwdWJkZXNjLT5nZW5jb2xzX3ZhbGlkX2Zvcl9kZWxldGUgPSB0 cnVlOwogCiAJLyogRmV0Y2ggdGhlIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KLQlw dWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQpOworCUdldFJlbGF0aW9uUHVi bGljYXRpb25zKHJlbGlkLCAmcHVib2lkcywgJmV4Y2VwdHB1Ym9pZHMpOwogCXNjaGVtYWlkID0g UmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOwogCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91 bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOwogCkBA IC01ODM4LDE2ICs1ODQwLDI1IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRp b24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJZm9yZWFjaChsYywgYW5j ZXN0b3JzKQogCQl7CiAJCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOworCQkJTGlz dAkgICAqYW5jZXN0b3JfcHVib2lkcyA9IE5JTDsKKwkJCUxpc3QJICAgKmFuY2VzdG9yX2V4Y2Vw dHB1Ym9pZHMgPSBOSUw7CiAKLQkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1 Ym9pZHMsCi0JCQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvcikpOwor CQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsICZhbmNlc3Rvcl9wdWJvaWRzLAor CQkJCQkJCQkJJmFuY2VzdG9yX2V4Y2VwdHB1Ym9pZHMpOworCisJCQlwdWJvaWRzID0gbGlzdF9j b25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBhbmNlc3Rvcl9wdWJvaWRzKTsKIAkJCXNjaGVtYWlk ID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0 X3VuaXF1ZV9vaWQocHVib2lkcywKIAkJCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhz Y2hlbWFpZCkpOworCQkJZXhjZXB0cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQoZXhj ZXB0cHVib2lkcywKKwkJCQkJCQkJCQkJCSAgIGFuY2VzdG9yX2V4Y2VwdHB1Ym9pZHMpOwogCQl9 CiAJfQotCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRh Ymxlc1B1YmxpY2F0aW9ucygpKTsKIAorCWFsbHRhYmxlc3B1Ym9pZHMgPSBHZXRBbGxUYWJsZXNQ dWJsaWNhdGlvbnMoKTsKKwlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRz LAorCQkJCQkJCQkJIGxpc3RfZGlmZmVyZW5jZV9vaWQoYWxsdGFibGVzcHVib2lkcywKKwkJCQkJ CQkJCQkJCQkJIGV4Y2VwdHB1Ym9pZHMpKTsKIAlmb3JlYWNoKGxjLCBwdWJvaWRzKQogCXsKIAkJ T2lkCQkJcHViaWQgPSBsZmlyc3Rfb2lkKGxjKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDJiZWJlZmQwYmEy Li45OWUwMTA3Zjk1NSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NjQ4LDkgKzQ2NDgsNTUgQEAgZ2V0UHVi bGljYXRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBp X3B1YnZpYXJvb3QpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YmdlbmNvbHNfdHlwZSA9 CiAJCQkqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmdlbmNvbHMpKTsKKwkJcHViaW5mb1tpXS5l eGNlcHRfdGFibGVzID0gKFNpbXBsZVB0ckxpc3QpCisJCXsKKwkJCU5VTEwsIE5VTEwKKwkJfTsK IAogCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVt cGFibGVPYmplY3QoJihwdWJpbmZvW2ldLmRvYmopLCBmb3V0KTsKKworCQkvKgorCQkgKiBHZXQg dGhlIGxpc3Qgb2YgdGFibGVzIGZvciBwdWJsaWNhdGlvbnMgc3BlY2lmaWVkIHdpdGggdGhlIEVY Q0VQVAorCQkgKiBUQUJMRSBjbGF1c2UuIFRoaXMgaXMgaW50cm9kdWNlZCBpbiBQb3N0Z3JlU1FM IDE5LgorCQkgKgorCQkgKiBFWENFUFQgVEFCTEVTIGlzIHByb2Nlc3NlZCBoZXJlIGFuZCBvdXRw dXQgZGlyZWN0bHkgYnkKKwkJICogZHVtcFB1YmxpY2F0aW9uKCkuIFRoaXMgZGlmZmVycyBmcm9t IHRoZSBhcHByb2FjaCB1c2VkIGluCisJCSAqIGR1bXBQdWJsaWNhdGlvblRhYmxlKCkgYW5kIGR1 bXBQdWJsaWNhdGlvbk5hbWVzcGFjZSgpLCBzaW5jZSB0aGF0CisJCSAqIGFwcHJvYWNoIHdvdWxk IHJlcXVpcmUgRVhDRVBUIFRBQkxFIHN1cHBvcnQgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OLAorCQkg KiB3aGljaCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKwkJICovCisJCWlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uID49IDE5MDAwMCkKKwkJeworCQkJaW50CQkJbnRibHM7CisJCQlQR3Jlc3Vs dCAgICpyZXNfdGJsczsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisJCQlhcHBlbmRQ UUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCQkgICJTRUxFQ1QgcHJyZWxpZFxuIgorCQkJCQkJCSAg IkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWxcbiIKKwkJCQkJCQkgICJXSEVSRSBw cnB1YmlkID0gJXUgYW5kIHByZXhjZXB0IiwKKwkJCQkJCQkgIHB1YmluZm9baV0uZG9iai5jYXRJ ZC5vaWQpOworCisJCQlyZXNfdGJscyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0 YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCQkJbnRibHMgPSBQUW50dXBsZXMocmVzX3RibHMpOwor CisJCQlmb3IgKGludCBqID0gMDsgaiA8IG50YmxzOyBqKyspCisJCQl7CisJCQkJT2lkCQkJcHJy ZWxpZDsKKwkJCQlUYWJsZUluZm8gICp0YmluZm87CisKKwkJCQlwcnJlbGlkID0gYXRvb2lkKFBR Z2V0dmFsdWUocmVzX3RibHMsIGosIDApKTsKKworCQkJCXRiaW5mbyA9IGZpbmRUYWJsZUJ5T2lk KHBycmVsaWQpOworCisJCQkJaWYgKHRiaW5mbyAhPSBOVUxMKQorCQkJCQlzaW1wbGVfcHRyX2xp c3RfYXBwZW5kKCZwdWJpbmZvW2ldLmV4Y2VwdF90YWJsZXMsIHRiaW5mbyk7CisJCQl9CisKKwkJ CVBRY2xlYXIocmVzX3RibHMpOworCQl9CiAJfQogCiBjbGVhbnVwOgpAQCAtNDY5MCw3ICs0NzM2 LDI1IEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbklu Zm8gKnB1YmluZm8pCiAJaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcyAmJiBwdWJpbmZvLT5wdWJh bGxzZXF1ZW5jZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgVEFC TEVTLCBBTEwgU0VRVUVOQ0VTIik7CiAJZWxzZSBpZiAocHViaW5mby0+cHViYWxsdGFibGVzKQor CXsKKwkJaW50CQkJbl9leGNsdWRlZCA9IDA7CisKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgRk9SIEFMTCBUQUJMRVMiKTsKKworCQkvKiBJbmNsdWRlIEVYQ0VQVCBUQUJMRSBjbGF1 c2UgaWYgdGhlcmUgYXJlIGV4Y2VwdF90YWJsZXMuICovCisJCWZvciAoU2ltcGxlUHRyTGlzdENl bGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRfdGFibGVzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxs LT5uZXh0KQorCQl7CisJCQlUYWJsZUluZm8gICp0YmluZm8gPSAoVGFibGVJbmZvICopIGNlbGwt PnB0cjsKKworCQkJaWYgKCsrbl9leGNsdWRlZCA9PSAxKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiIEVYQ0VQVCBUQUJMRSAoIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsICIpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJPTkxZ ICVzIiwgZm10UXVhbGlmaWVkRHVtcGFibGUodGJpbmZvKSk7CisJCX0KKwkJaWYgKG5fZXhjbHVk ZWQgPiAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIpIik7CisJfQogCWVsc2Ug aWYgKHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgRk9SIEFMTCBTRVFVRU5DRVMiKTsKIApAQCAtNDg3MCw2ICs0OTM0LDcgQEAgZ2V0UHVi bGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51 bVRhYmxlcykKIAogCS8qIENvbGxlY3QgYWxsIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4g Ki8KIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCisJewogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1Ymlk LCBwcnJlbGlkLCAiCiAJCQkJCQkJICJwZ19jYXRhbG9nLnBnX2dldF9leHByKHBycXVhbCwgcHJy ZWxpZCkgQVMgcHJyZWxxdWFsLCAiCkBAIC00ODgyLDYgKzQ5NDcsOSBAQCBnZXRQdWJsaWNhdGlv blRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVz KQogCQkJCQkJCSAiICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0g PSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCSAiICBFTFNFIE5VTEwgRU5EKSBwcmF0dHJzICIKIAkJ CQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIiKTsKKwkJaWYgKGZv dXQtPnJlbW90ZVZlcnNpb24gPj0gMTkwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgV0hFUkUgTk9UIHByLnByZXhjZXB0Iik7CisJfQogCWVsc2UKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwg cHJyZWxpZCwgIgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggNGM0YjE0ZTVmYzcuLmQxNDFlYjY2ZDE3IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmgKQEAgLTY3Niw2ICs2NzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfUHVibGljYXRpb25J bmZvCiAJYm9vbAkJcHVidHJ1bmNhdGU7CiAJYm9vbAkJcHVidmlhcm9vdDsKIAlQdWJsaXNoR2Vu Y29sc1R5cGUgcHViZ2VuY29sc190eXBlOworCVNpbXBsZVB0ckxpc3QgZXhjZXB0X3RhYmxlczsK IH0gUHVibGljYXRpb25JbmZvOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBh OGRjYzJiNWM3NS4uNTRlYWU1NzdjOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0z MTcwLDYgKzMxNzAsMzYgQEAgbXkgJXRlc3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywg c2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBw dWI4JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1MCwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdD UkVBVEUgUFVCTElDQVRJT04gcHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKGR1bXBfdGVzdC50 ZXN0X3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04g cHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFi bGUpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtc RQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4g MSwgfSwKKwl9LAorCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI5JyA9PiB7CisJCWNyZWF0ZV9v cmRlciA9PiA1MCwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHVi OSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKGR1bXBfdGVzdC50ZXN0X3RhYmxlLCBkdW1w X3Rlc3QudGVzdF9zZWNvbmRfdGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFU RSBQVUJMSUNBVElPTiBwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSBkdW1w X3Rlc3QudGVzdF90YWJsZSwgT05MWSBkdW1wX3Rlc3QudGVzdF9zZWNvbmRfdGFibGUpIFdJVEgg KHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3ht LAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9 LAorCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMCcgPT4geworCQljcmVhdGVfb3JkZXIgPT4g OTIsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwIEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFyZW50 KTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTAgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNl X3BhcmVudCwgT05MWSBkdW1wX3Rlc3QudGVzdF9pbmhlcml0YW5jZV9jaGlsZCkgV0lUSCAocHVi bGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJ CWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisK IAknQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA1MCwK IAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxCmRpZmYgLS1naXQgYS9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDM1 ODRjNGUxNDI4Li4xYmZlYzBiZDNlZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTMwNzMsMTcgKzMwNzMsMzQgQEAg ZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJCQkJ ICAiICAgICAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJh dHRyc1tzXSlcbiIKIAkJCQkJCQkJICAiICAgICAgICBFTFNFIE5VTEwgRU5EKSAiCiAJCQkJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCi0JCQkJCQkJCSAgIiAgICAg Sk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHVi aWRcbiIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBPTiBjLm9p ZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiIK KwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAu b2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFz cyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlk ID0gJyVzJ1xuIiwKKwkJCQkJCQkJICBvaWQsIG9pZCwgb2lkKTsKKworCQkJCWlmIChwc2V0LnN2 ZXJzaW9uID49IDE5MDAwMCkKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiBBTkQg Tk9UIHByLnByZXhjZXB0XG4iKTsKKworCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJ CQkJCSAgIlVOSU9OXG4iCiAJCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCi0JCQkJCQkJCSAg IiAgICAgLCBOVUxMXG4iCi0JCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCisJCQkJCQkJCSAgIgkJ LCBOVUxMXG4iCisJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0 YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCi0JCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVz IEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCi0JCQkJ CQkJCSAgIk9SREVSIEJZIDE7IiwKLQkJCQkJCQkJICBvaWQsIG9pZCwgb2lkLCBvaWQpOworCQkJ CQkJCQkgICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9p c19wdWJsaXNoYWJsZSgnJXMnKVxuIiwKKwkJCQkJCQkJICBvaWQpOworCisJCQkJaWYgKHBzZXQu c3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJ CQkJICAiICAgICBBTkQgTk9UIEVYSVNUUyAoXG4iCisJCQkJCQkJCQkgICIJCVNFTEVDVCAxXG4i CisJCQkJCQkJCQkgICIJCUZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIK KwkJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBjXG4iCisJCQkJCQkJCQkg ICIJCU9OIHByLnBycmVsaWQgPSBwYy5vaWRcbiIKKwkJCQkJCQkJCSAgIgkJV0hFUkUgcHIucHJy ZWxpZCA9ICclcycgQU5EIHByLnBycHViaWQgPSBwLm9pZClcbiIsCisJCQkJCQkJCQkgIG9pZCk7 CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMTsiKTsKIAkJCX0K IAkJCWVsc2UKIAkJCXsKQEAgLTMxMzQsNiArMzE1MSwzNSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJUFFjbGVhcihyZXN1bHQpOwogCQl9CiAK KwkJLyogUHJpbnQgcHVibGljYXRpb25zIHRoYXQgdGhlIHRhYmxlIGlzIGV4cGxpY2l0bHkgZXhj bHVkZWQgZnJvbSAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCXsKKwkJCXBy aW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJCQkJ CQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgorCQkJCQkJCSAgIkpPSU4g cGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4i CisJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiBBTkQgcHIucHJleGNlcHRcbiIK KwkJCQkJCQkgICJPUkRFUiBCWSAxOyIsIG9pZCk7CisKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1 Zi5kYXRhKTsKKwkJCWlmICghcmVzdWx0KQorCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJZWxz ZQorCQkJCXR1cGxlcyA9IFBRbnR1cGxlcyhyZXN1bHQpOworCisJCQlpZiAodHVwbGVzID4gMCkK KwkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBfKCJFeGNlcHQgUHVibGljYXRpb25zOiIp KTsKKworCQkJLyogTWlnaHQgYmUgYW4gZW1wdHkgc2V0IC0gdGhhdCdzIG9rICovCisJCQlmb3Ig KGkgPSAwOyBpIDwgdHVwbGVzOyBpKyspCisJCQl7CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1 ZiwgIiAgICBcIiVzXCIiLCBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCkpOworCisJCQkJcHJpbnRU YWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRhdGEpOworCQkJfQorCQkJUFFjbGVhcihyZXN1bHQp OworCQl9CisKIAkJLyoKIAkJICogSWYgdmVyYm9zZSwgcHJpbnQgTk9UIE5VTEwgY29uc3RyYWlu dHMuCiAJCSAqLwpAQCAtNjc1Myw4ICs2Nzk5LDEyIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNv bnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uX3JlbCBwclxuIgogCQkJCQkJCSAgIldIRVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIK IAkJCQkJCQkgICIgIEFORCBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkgICIgIEFORCBw ci5wcnB1YmlkID0gJyVzJ1xuIgotCQkJCQkJCSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKKwkJ CQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIiwgcHViaWQpOworCisJCQlpZiAocHNl dC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgQU5E IE5PVCBwci5wcmV4Y2VwdFxuIik7CisKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJPUkRF UiBCWSAxLDIiKTsKIAkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygi VGFibGVzOiIpLCBmYWxzZSwgJmNvbnQpKQogCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCkBAIC02 NzcyLDYgKzY4MjIsMjMgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy bikKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQl9CiAJCX0KKwkJZWxzZQorCQl7CisJCQlp ZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQl7CisJCQkJLyogR2V0IHRoZSBleGNsdWRl ZCB0YWJsZXMgZm9yIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb24gKi8KKwkJCQlwcmludGZQUUV4 cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICJTRUxFQ1QgY29uY2F0KGMucmVsbmFtZXNwYWNlOjpy ZWduYW1lc3BhY2UsICcuJywgYy5yZWxuYW1lKVxuIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFs b2cucGdfY2xhc3MgY1xuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJs aWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJF IHByLnBycHViaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAgIiAgQU5EIHByLnByZXhjZXB0XG4iCisJ CQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1Ymxp Y2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgdGFibGVzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwg JmNvbnQpKQorCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXByaW50VGFi bGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRU YWJsZUNsZWFudXAoJmNvbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDhiOTFiYzAwMDYy Li4zOTQwNGVhMGY2OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMzY2OSw3ICszNjY5LDE3 IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIpKQogCQlD T01QTEVURV9XSVRIKCJUQUJMRVMiLCAiU0VRVUVOQ0VTIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygi Q1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIp KQotCQlDT01QTEVURV9XSVRIKCJXSVRIICgiKTsKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUIFRB QkxFICgiLCAiV0lUSCAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiKSkKKwkJQ09N UExFVEVfV0lUSCgiVEFCTEUgKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRB QkxFIikpCisJCUNPTVBMRVRFX1dJVEgoIigiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQ VCIsICJUQUJMRSIsICIoIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zv cl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUi LCAiKCIsIE1hdGNoQW55TikgJiYgZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRF X1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwg IlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiLCAiKCIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0 aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7CiAJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIikpCiAJ CUNPTVBMRVRFX1dJVEgoIklOIFNDSEVNQSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hBbnkpICYmICFl bmRzX3dpdGgocHJldl93ZCwgJywnKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDgzZjY1 MDFkZjM4Li5iNmRhMjAwZmZlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjMzNiw2 ICsxMjMzNiwxMyBAQAogICBwcm9uYW1lID0+ICdwZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZScs IHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVz ID0+ICdyZWdjbGFzcycsCiAgIHByb3NyYyA9PiAncGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUn IH0sCit7IG9pZCA9PiAnOTAwMicsIGRlc2NyID0+ICdnZXQgZWZmZWN0aXZlIHRhYmxlcyBmb3Ig cHVibGljYXRpb24nLAorICBwcm9uYW1lID0+ICdwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0aXZl X3RhYmxlcycsICBwcm9yb3dzID0+ICcxMDAwJywKKyAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9s YXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAn b2lkIF90ZXh0JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsX3RleHQsdGV4dCx0ZXh0fScs IHByb2FyZ21vZGVzID0+ICd7aSxpLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3Jvb3RfcmVs aWQscHViX25hbWVzLHNjaGVtYW5hbWUscmVsbmFtZX0nLAorICBwcm9zcmMgPT4gJ3BnX2dldF9w dWJsaWNhdGlvbl9lZmZlY3RpdmVfdGFibGVzJyB9LAogCiAjIHJscwogeyBvaWQgPT4gJzMyOTgn LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDM2OGJlY2NhODk5Li41MTI2 Yzk5NmZmNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTQ2LDE0ICsx NDYsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCiAJUmVsYXRpb24JcmVs YXRpb247CiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTGlzdAkgICAqY29sdW1uczsKKwlib29s CQlleGNlcHQ7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogZXh0ZXJuIFB1YmxpY2F0aW9uICpH ZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNh dGlvbkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwotZXh0ZXJu IExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIExpc3QgKipwdWJpZHMsIExpc3QgKipl eGNlcHRfcHViaWRzKTsKIAogLyotLS0tLS0tLS0KLSAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHVi X3BhcnRvcHQgcGFyYW1ldGVyIG9mIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKCksCisgKiBFeHBl Y3RlZCB2YWx1ZXMgZm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZgorICogR2V0UHVibGljYXRp b25JbmNsdWRlZFJlbGF0aW9ucygpLCBhbmQgR2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRhYmxl cygpLAogICogd2hpY2ggYWxsb3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3aGljaCBwYXJ0aXRpb25z IG9mIHBhcnRpdGlvbmVkIHRhYmxlcwogICogbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbiB0 aGV5IGV4cGVjdCB0byBzZWUuCiAgKgpAQCAtMTY4LDkgKzE3MCwxMiBAQCB0eXBlZGVmIGVudW0g UHVibGljYXRpb25QYXJ0T3B0CiAJUFVCTElDQVRJT05fUEFSVF9BTEwsCiB9IFB1YmxpY2F0aW9u UGFydE9wdDsKIAotZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJp ZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRQdWJs aWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25F eGNsdWRlZFRhYmxlcyhPaWQgcHViaWQsCisJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lk KTsKLWV4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQs IGJvb2wgcHVidmlhcm9vdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlv bnMoUHVibGljYXRpb24gKnB1YiwgY2hhciByZWxraW5kKTsKIGV4dGVybiBMaXN0ICpHZXRQdWJs aWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNh dGlvbnMoT2lkIHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgc2NoZW1haWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uX3JlbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9y ZWwuaAppbmRleCAzYTg3OTBlODQ4Mi4uZTNjY2JhNWVjNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAtMzEsNiArMzEsNyBAQCBDQVRBTE9HKHBnX3B1Ymxp Y2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJ Lyogb2lkICovCiAJT2lkCQkJcHJwdWJpZCBCS0lfTE9PS1VQKHBnX3B1YmxpY2F0aW9uKTsgLyog T2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCU9pZAkJCXBycmVsaWQgQktJX0xPT0tVUChwZ19j bGFzcyk7CS8qIE9pZCBvZiB0aGUgcmVsYXRpb24gKi8KKwlib29sCQlwcmV4Y2VwdCBCS0lfREVG QVVMVChmKTsJLyogZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIAogI2lmZGVmCUNBVEFMT0dfVkFS TEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJcGdfbm9kZV90 cmVlIHBycXVhbDsJCS8qIHF1YWxpZmljYXRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5k ZXggNjQ2ZDZjZWQ3NjMuLjUyODI0MjViNGRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00 MzAwLDYgKzQzMDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCiAJUmFuZ2VW YXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQgKi8KIAlOb2RlCSAg ICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KIAlMaXN0CSAgICpjb2x1bW5zOwkJ LyogTGlzdCBvZiBjb2x1bW5zIGluIGEgcHVibGljYXRpb24gdGFibGUgKi8KKwlib29sCQlleGNl cHQ7CQkJLyogZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIH0gUHVibGljYXRpb25UYWJsZTsKIAog LyoKQEAgLTQzMDgsNiArNDMwOSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uVGFibGUK IHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiB7CiAJUFVCTElDQVRJT05PQkpf VEFCTEUsCQkvKiBBIHRhYmxlICovCisJUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFLAkvKiBB IHRhYmxlIHRvIGJlIGV4Y2x1ZGVkICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVN QSwJLyogQWxsIHRhYmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5f Q1VSX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJ CSAqIHNlYXJjaF9wYXRoICovCkBAIC00MzM2LDYgKzQzMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQ dWJsaWNhdGlvbkFsbE9ialNwZWMKIHsKIAlOb2RlVGFnCQl0eXBlOwogCVB1YmxpY2F0aW9uQWxs T2JqVHlwZSBwdWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGljYXRpb24gb2JqZWN0ICov CisJTGlzdAkgICAqZXhjZXB0X3RhYmxlczsJLyogTGlzdCBvZiB0YWJsZXMgdG8gYmUgZXhjbHVk ZWQgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1 bmtub3duICovCiB9IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBjMTI4NWZkZDFiYy4uY2FiOTc1MzEyNzYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMzQsNiArMjM0 LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCiAJUGFyYWxsZWxB cHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOwogfSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbzsKIAor dHlwZWRlZiBzdHJ1Y3QgUXVhbGlmaWVkUmVsYXRpb25OYW1lCit7CisJY2hhcgkgICAqc2NoZW1h bmFtZTsKKwljaGFyCSAgICpyZWxuYW1lOworfSBRdWFsaWZpZWRSZWxhdGlvbk5hbWU7CisKIC8q IE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmluZyB3 b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBs eUNvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5k ZXggN2ZiNDlhYWYyOWIuLmE4ZTIxZThlOWIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dApAQCAtMjEzLDMzICsyMTMsMTAzIEBAIE5vdC1udWxsIGNvbnN0cmFp bnRzOgogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgbm9uZSAgICAg ICAgICAgICAgfCBmCiAoMSByb3cpCiAKLURST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1 Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWE7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1 Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhF UklUUyAodGVzdHB1Yl90YmwzKTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK LUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKKy0t IEV4Y2x1ZGUgdGFibGVzIHVzaW5nIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGFibGVs aXN0KQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxl IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIp OworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFi bGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgor RXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKyAgICAicHVibGljLnRl c3RwdWJfdGJsMiIKKworLS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhD RVBUICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90YmwxKTsKK1xkUnAr IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZTEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVy YXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQg dGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorCistLSBDaGVjayB0aGF0IHRoZSB0 YWJsZSBkZXNjcmlwdGlvbiBsaXN0cyB3aGF0IHB1YmxpY2F0aW9ucyBhcmUgZXhjbHVkaW5nIGl0 CitcZCB0ZXN0cHViX3RibDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVi bGljLnRlc3RwdWJfdGJsMSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBu dWxsIHwgbmV4dHZhbCgndGVzdHB1Yl90YmwxX2lkX3NlcSc6OnJlZ2NsYXNzKQorIGRhdGEgICB8 IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdHB1 Yl90YmwxX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaWQpCitQdWJsaWNhdGlvbnM6CisgICAg InRlc3RwdWJfZm9yYWxsdGFibGVzIgorRXhjZXB0IFB1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1 Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUiCisgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4 Y2VwdHRhYmxlMSIKKwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVz dHB1Yl90YmwyOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1 Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEsIHRl c3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZTE7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50IChhIGludCk7CitDUkVB VEUgVEFCTEUgdGVzdHB1Yl90YmxfY2hpbGQgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJs X3BhcmVudCk7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRl c3RwdWIzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMwogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKIFRhYmxlczoKLSAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKLSAgICAicHVibGlj LnRlc3RwdWJfdGJsM2EiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAgICAicHVi bGljLnRlc3RwdWJfdGJsX3BhcmVudCIKIAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZP UiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWI0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViNAogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2Vu ZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCiAgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKIFRhYmxl czoKLSAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3Bh cmVudCIKIAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsKKy0tIEV4Y2x1ZGUgcGFyZW50IHRhYmxlLCBv bWl0dGluZyBib3RoIG9mICdPTkxZJyBhbmQgJyonCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQpOworXGRS cCsgdGVzdHB1YjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAg ICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX2No aWxkIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgorCistLSBFWENFUFQgd2l0aCAn Kic6IGV4Y2x1ZGUgdGFibGUgYW5kIGFsbCBkZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWI2IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmxfcGFyZW50 ICopOworXGRScCsgdGVzdHB1YjYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2CisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3Rw dWJfdGJsX2NoaWxkIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgorCistLSBFWENF UFQgd2l0aCBPTkxZOiBleGNsdWRlIHRhYmxlIGJ1dCBub3QgZGVzY2VuZGFudHMKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViNyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgdGVz dHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3RwdWI3CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNworICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg dCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAg InB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCwgdGVzdHB1Yl90YmxfY2hpbGQ7CitEUk9Q IFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3RwdWI2LCB0ZXN0 cHViNzsKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUg U0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdy ZXNzX3B1Yl9zZXExOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDg1YjAw YmQ2N2M4Li5mNzkwZmU0OTUxOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVi bGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApA QCAtMTA1LDIwICsxMDUsNDAgQEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcyBGUk9NIHBn X3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGwKIFxkKyB0ZXN0cHVi X3RibDIKIFxkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCiAKK1NFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gJ0VSUk9SJzsKKy0tIEV4Y2x1ZGUgdGFibGVzIHVzaW5nIEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSAodGFibGVsaXN0KQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90 YmwxLCB0ZXN0cHViX3RibDIpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFi bGUKKy0tIEV4Y2x1ZGUgdGFibGVzIHVzaW5nIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGFibGVs aXN0KQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxl MSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0cHViX2Zv cmFsbHRhYmxlc19leGNlcHR0YWJsZTEKKy0tIENoZWNrIHRoYXQgdGhlIHRhYmxlIGRlc2NyaXB0 aW9uIGxpc3RzIHdoYXQgcHVibGljYXRpb25zIGFyZSBleGNsdWRpbmcgaXQKK1xkIHRlc3RwdWJf dGJsMQorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3Ri bDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRh YmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKK0RST1AgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJf Zm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19l eGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOwogCi1DUkVBVEUg VEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAo YiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3Ri bF9wYXJlbnQgKGEgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9jaGlsZCAoYiB0ZXh0 KSBJTkhFUklUUyAodGVzdHB1Yl90YmxfcGFyZW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1 Yl90YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3Rw dWJfdGJsMzsKLVJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWIzCitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFy ZW50OwogXGRScCsgdGVzdHB1YjQKKy0tIEV4Y2x1ZGUgcGFyZW50IHRhYmxlLCBvbWl0dGluZyBi b3RoIG9mICdPTkxZJyBhbmQgJyonCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1 YjUKKy0tIEVYQ0VQVCB3aXRoICcqJzogZXhjbHVkZSB0YWJsZSBhbmQgYWxsIGRlc2NlbmRhbnRz CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF ICh0ZXN0cHViX3RibF9wYXJlbnQgKik7CitcZFJwKyB0ZXN0cHViNgorLS0gRVhDRVBUIHdpdGgg T05MWTogZXhjbHVkZSB0YWJsZSBidXQgbm90IGRlc2NlbmRhbnRzCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1YjcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIHRlc3RwdWJfdGJs X3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNwogCi1EUk9QIFRBQkxFIHRlc3RwdWJfdGJsMywgdGVz dHB1Yl90YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0OworUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50LCB0ZXN0 cHViX3RibF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0LCB0ZXN0 cHViNSwgdGVzdHB1YjYsIHRlc3RwdWI3OwogCiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3 aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vbWVzb24uYnVpbGQKaW5kZXggYTRjN2RiYWZmNTkuLjA3MjgyYWEzYzE4IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC00Niw2ICs0Niw3IEBAIHRlc3RzICs9IHsKICAgICAg ICd0LzAzNF90ZW1wb3JhbC5wbCcsCiAgICAgICAndC8wMzVfY29uZmxpY3RzLnBsJywKICAgICAg ICd0LzAzNl9zZXF1ZW5jZXMucGwnLAorICAgICAgJ3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90 YWJsZS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUu cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxl LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NjI5ZjMxMTVmYgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdl c19leGNlcHRfdGFibGUucGwKQEAgLTAsMCArMSwyNTAgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIw MjEtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2Fs IHJlcGxpY2F0aW9uIHRlc3RzIGZvciBFWENFUFQgVEFCTEUgcHVibGljYXRpb25zCit1c2Ugc3Ry aWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXpl IHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgSW5p dGlhbGl6ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3Rh cnQ7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMg RVhDRVBUIFRBQkxFIHRlc3QgY2FzZXMgZm9yIG5vcm1hbCB0YWJsZXMKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRh YmxlcyBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIEFT IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYTsKKykpOworCisjIENyZWF0ZSBzY2hl bWFzIGFuZCB0YWJsZXMgb24gc3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUg c2NoMS50YWIxIChhIGludCk7CispKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uLCBh bmQgY3JlYXRlIGEgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IHRvIGhlbHAgd2l0aAorIyBsYXRl ciB0ZXN0cy4KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0 ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHNjaDEudGFiMSkiCispOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25f c2xvdCgndGVzdF9zbG90JywgJ3Bnb3V0cHV0JykiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9zY2hlbWEg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVt YSIKKyk7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLAor CSd0YXBfc3ViX3NjaGVtYScpOworCisjIENoZWNrIHRoZSB0YWJsZSBkYXRhIGRvZXMgbm90IHN5 bmMgZm9yIGV4Y2x1ZGVkIHRhYmxlCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJP TSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksCisJJ2NoZWNrIHRoZXJlIGlzIG5v IGluaXRpYWwgZGF0YSBjb3BpZWQgZm9yIHRoZSBleGNsdWRlZCB0YWJsZScpOworCisjIEluc2Vy dCBzb21lIGRhdGEgdG8gdGhlIGV4Y2x1ZGVkIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUyhnZW5lcmF0 ZV9zZXJpZXMoMTEsMjApKSIpOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgdG8gZXhj bHVkZWQgdGFibGUgaXMgbm90IHB1Ymxpc2hlZC4KKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdfbG9n aWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwgTlVMTCwgJ3By b3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfc3ViX3NjaGVtYScp IgorKTsKK2lzKCRyZXN1bHQsIHFxKHQpLCAnY2hlY2sgbm8gY2hhbmdlcyBmb3IgZXhjbHVkZWQg dGFibGUgaW4gcmVwbGljYXRpb24gc2xvdCcpOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0 ZWQgdG8gdGhlIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCByZXBsaWNhdGVkLgorJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOworCiskcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwg bWluKGEpLCBtYXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksICdj aGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJlcicpOworCisjIGNsZWFudXAKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRh cF9wdWJfc2NoZW1hIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIik7CisKKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIFRBQkxFIHRlc3QgY2FzZXMg Zm9yIHBhcnRpdGlvbmVkIHRhYmxlcworIyBDaGVjayBiZWhhdmlvciBvZiBFWENFUFQgVEFCTEUg d2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBvbiBhCisjIHBhcnRpdGlvbmVkIHRhYmxl IGFuZCBpdHMgcGFydGl0aW9ucy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyMgU2V0dXAgcGFydGl0aW9uZWQgdGFibGUgYW5kIHBhcnRpdGlvbnMgb24g dGhlIHB1Ymxpc2hlciB0aGF0IG1hcCB0byBub3JtYWwKKyMgdGFibGVzIG9uIHRoZSBzdWJzY3Jp YmVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVB VEUgVEFCTEUgc2NoMS50MShhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworCUNSRUFURSBU QUJMRSBzY2gxLnBhcnQxIFBBUlRJVElPTiBPRiBzY2gxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEwMCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDIoYSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRShhKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0Ml8xIFBBUlRJVElPTiBPRiBzY2gxLnBh cnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAoMTUwKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5w YXJ0Ml8yIFBBUlRJVElPTiBPRiBzY2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTUxKSBUTyAo MjAwKTsKKwlBTFRFUiBUQUJMRSBzY2gxLnQxIEFUVEFDSCBQQVJUSVRJT04gc2NoMS5wYXJ0MiBG T1IgVkFMVUVTIEZST00gKDEwMSkgVE8gKDIwMCk7CispKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSBzY2gxLnQxKGEgaW50 KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MShhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEu cGFydDIoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzEoYSBpbnQpOworCUNSRUFU RSBUQUJMRSBzY2gxLnBhcnQyXzIoYSBpbnQpOworKSk7CisKKyMgRXhjbHVkaW5nIHRoZSByb290 IHBhcnRpdGlvbmVkIHRhYmxlIGV4Y2x1ZGVzIGFsbCBpdHMgcGFydGl0aW9ucyBhcyB3ZWxsIHdo ZW4KKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZS4KKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBf cHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnQxKSBXSVRIIChwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQxIFZB TFVFUyAoMSksICgxMDEpLCAoMTUxKTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgorKTsKKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hl ciwgJ3RhcF9zdWJfcGFydCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgn dGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKKyk7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMiks ICgxMDIpLCAoMTUyKSIpOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgdG8gdGhlIHBh cnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbiBpdCBpcworIyBleGNsdWRlZCB3 aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4KKyRyZXN1bHQgPSAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZS T00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwg TlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHVi X3BhcnQnKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJf cGFydCcpOworCisjIENoZWNrIHRoYXQgbm8gcm93cyBhcmUgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9u IHJvb3QgdGFibGUnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7CitpcygkcmVzdWx0LCBxcSgp LCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQxJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0 MiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Micp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNr IHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8xJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8y Iik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzIn KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlND UklQVElPTiB0YXBfc3ViX3BhcnQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDsiKTsKKworIyBFeGNsdWRpbmcg dGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgZXhjbHVkZXMgYWxsIGl0cyBwYXJ0aXRpb25zIGFz IHdlbGwgd2hlbgorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgV0lU SCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKKykpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1 Yl9wYXJ0IgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5j KCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9u X3Nsb3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKKyk7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gx LnQxIFZBTFVFUyAoMyksICgxMDMpLCAoMTUzKTsiKTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGlu c2VydGVkIHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkIHdoZW4gaXQg aXMKKyMgZXhjbHVkZWQgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCisk cmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rl c3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90b192ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25f bmFtZXMnLCAndGFwX3B1Yl9wYXJ0JykiCispOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKworIyBDaGVjayB0aGF0IG5vIHJvd3MgYXJlIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIik7CitpcygkcmVzdWx0LCBxcSgp LCAnY2hlY2sgcm93cyBvbiByb290IHRhYmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOwor aXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MScpOworCisk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg KiBGUk9NIHNjaDEucGFydDIiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRh YmxlIHNjaDEucGFydDInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzEiKTsKK2lzKCRyZXN1 bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMScpOworCiskcmVzdWx0 ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBG Uk9NIHNjaDEucGFydDJfMiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFi bGUgc2NoMS5wYXJ0Ml8yJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc2xvdF9u YW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKCd0ZXN0X3Nsb3QnLCBwZ19jdXJy ZW50X3dhbF9sc24oKSk7IgorKTsKKworIyBFeGNsdWRpbmcgb25lIG9mIHRoZSBjaGlsZCBwYXJ0 aXRpb24gdGFibGUgd2l0aAorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUgc2hv dWxkIHJlcGxpY2F0ZSB0aGUgb3RoZXIgcGFydGl0aW9ucy4KKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVRSVU5DQVRFIHNjaDEudDE7CisJSU5TRVJUIElO VE8gc2NoMS50MSBWQUxVRVMgKDMpLCAoMTAzKSwgKDE1Myk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDIpIFdJ VEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlUUlVOQ0FURSBzY2gxLnQxOwor CUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJf Y29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0OworKSk7Ciskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX3Bh cnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBz bG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xvdCcsIHBn X2N1cnJlbnRfd2FsX2xzbigpKTsiCispOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQg dG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbiBpdCBpcworIyBl eGNsdWRlZCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4KKyRyZXN1bHQg PSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQo KikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90 JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycs ICd0YXBfcHViX3BhcnQnKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J3RhcF9zdWJfcGFydCcpOworCisjIENoZWNrIHRoYXQgdGFibGUgZGF0YSAxMDMgYW5kIDE1MyB3 aGljaCBpcyBwcmVzZW50IGluIHNjaDEuc2NoMS5wYXJ0MiBzaG91bGQKKyMgbm90IGJlIHJlcGxp Y2F0ZWQuCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsKK2lzKCRyZXN1bHQsIHFxKDMpLCAnY2hlY2sgcm93 cyBvbiByb290IHRhYmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOworaXMoJHJlc3VsdCwg cXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MScpOworCiskcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEu cGFydDIiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFy dDInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdj aGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMScpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFy dDJfMiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0 Ml8yJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBT VUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7CisKKyRub2RlX3B1 Ymxpc2hlci0+c3RvcCgnZmFzdCcpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggOWY1ZWU4ZmQ0ODIuLmI1NGZhODRhMDI1IDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtMjQxOCw2ICsyNDE4LDcgQEAgUVROb2RlCiBRVUVSWVRZUEUKIFF1YWxD b3N0CiBRdWFsSXRlbQorUXVhbGlmaWVkUmVsYXRpb25OYW1lCiBRdWVyeQogUXVlcnlDb21wbGV0 aW9uCiBRdWVyeURlc2MKLS0gCjIuMzQuMQoK --0000000000003f82b5064a0cf46c--