Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dXs6X-0001lH-O5 for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Jul 2017 16:45:42 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dXs6W-0005bs-Q5 for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Jul 2017 16:45:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dXs4s-0008GA-4q for pgsql-hackers@postgresql.org; Wed, 19 Jul 2017 16:43:58 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by magus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dXs4n-0007G3-5m for pgsql-hackers@postgresql.org; Wed, 19 Jul 2017 16:43:57 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id DB23221C1CDA for ; Wed, 19 Jul 2017 19:43:51 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1500482631; bh=S2JK5cTXADmN43keQjgBdbVkp3/gLkrPoTxe9C1++Ag=; h=Date:From:To:Subject; b=jwBgJdAsbB1D6Hb2nv7L9pM/B0AiqOigYAzRWPantpMDgFLejrg9YbFR3yMpguzs3 aCmdhvautRcjLFQ7titiQJeaWXghavKXMAqbeGURbpI85Xex+d4R4p0/6CUSb4fYWk idW1QVyVyPrSYzLO6BfVig7FRXXUp9QglIeHeZBM= Content-Type: multipart/mixed; boundary="=_9302a17c905a8baed909a9d4b61a4c4e" Date: Wed, 19 Jul 2017 19:43:51 +0300 From: Victor Drobny To: pgsql-hackers@postgresql.org Subject: new function for tsquery creartion Organization: Postgres Professional Message-ID: X-Sender: v.drobny@postgrespro.ru User-Agent: Roundcube Webmail/1.2.4 List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org --=_9302a17c905a8baed909a9d4b61a4c4e Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Dear all, Now Postgres has a few functions to create tsqueries for full text search. The main one is the to_tsquery function that allows to make query with any operation. But to make correct query all of the operators should be specified explicitly. In order to make it easier postgres has functions like plainto_tsquery and phraseto_tsquery which allow to make tsqueries from strings. But they are not flexible enough. Let me introduce new function for full text search query creation(which is called 'queryto_tsquery'). It takes 'google like' query string and translates it to tsquery. The main features are the following: All the text inside double quotes would be treated as a phrase("a b c" -> 'a <-> b <-> c') New operator AROUND(N). It matches if the distance between words(or maybe phrases) is less than or equal to N. Alias for !('-rat' is the same as '!rat') Alias for |('dog OR cat' is the same as 'dog | cat') As a plainto_tsquery and phraseto_tsquery it will fill operators by itself, but already placed operations won't be ignored. It allows to combine two approaches. In the attachment you can find patch with the new features, tests and documentation for it. What do you think about it? Thank you very much for the attention! -- ------ Victor Drobny Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --=_9302a17c905a8baed909a9d4b61a4c4e Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=queryto_tsquery.patch Content-Disposition: attachment; filename=queryto_tsquery.patch; size=33271 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvZnVuYy5zZ21sCmluZGV4IGUwNzNmN2IuLmQ2ZmI0Y2UgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbApAQCAtOTQ5NCw2ICs5NDk0LDE4IEBAIENSRUFURSBU WVBFIHJhaW5ib3cgQVMgRU5VTSAoJ3JlZCcsICdvcmFuZ2UnLCAneWVsbG93 JywgJ2dyZWVuJywgJ2JsdWUnLCAncHVycGxlCiAgICAgICAgPHJvdz4KICAg ICAgICAgPGVudHJ5PgogICAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAg ICA8cHJpbWFyeT5xdWVyeXRvX3RzcXVlcnk8L3ByaW1hcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICAgPGxpdGVyYWw+PGZ1bmN0aW9uPnF1 ZXJ5dG9fdHNxdWVyeSg8b3B0aW9uYWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0i UEFSQU1FVEVSIj5jb25maWc8Lz4gPHR5cGU+cmVnY29uZmlnPC8+ICwgPC9v cHRpb25hbD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnF1ZXJ5 PC8+IDx0eXBlPnRleHQ8L3R5cGU+KTwvZnVuY3Rpb24+PC9saXRlcmFsPgor ICAgICAgICA8L2VudHJ5PgorICAgICAgICA8ZW50cnk+PHR5cGU+dHNxdWVy eTwvdHlwZT48L2VudHJ5PgorICAgICAgICA8ZW50cnk+cHJvZHVjZSA8dHlw ZT50c3F1ZXJ5PC8+IGZyb20gZ29vZ2xlIGxpa2UgcXVlcnk8L2VudHJ5Pgor ICAgICAgICA8ZW50cnk+PGxpdGVyYWw+cXVlcnl0b190c3F1ZXJ5KCdlbmds aXNoJywgJ1RoZSBGYXQgUmF0cycpPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeT48bGl0ZXJhbD4nZmF0JyAmYW1wOyAncmF0JzwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeT4KKyAgICAgICAgIDxpbmRleHRlcm0+CiAgICAgICAgICAg PHByaW1hcnk+cXVlcnl0cmVlPC9wcmltYXJ5PgogICAgICAgICAgPC9pbmRl eHRlcm0+CiAgICAgICAgICA8bGl0ZXJhbD48ZnVuY3Rpb24+cXVlcnl0cmVl KDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5xdWVyeTwvcmVwbGFj ZWFibGU+IDx0eXBlPnRzcXVlcnk8Lz4pPC9mdW5jdGlvbj48L2xpdGVyYWw+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvdGV4dHNlYXJjaC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3RleHRzZWFyY2guc2dtbAppbmRleCBmZTYzMGE2Li45 OTllNGFkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvdGV4dHNlYXJjaC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC90ZXh0c2VhcmNoLnNnbWwKQEAgLTc5 NywxMyArNzk3LDE1IEBAIFVQREFURSB0dCBTRVQgdGkgPQogICAgPHBhcmE+ CiAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBw cm92aWRlcyB0aGUKICAgICBmdW5jdGlvbnMgPGZ1bmN0aW9uPnRvX3RzcXVl cnk8L2Z1bmN0aW9uPiwKLSAgICA8ZnVuY3Rpb24+cGxhaW50b190c3F1ZXJ5 PC9mdW5jdGlvbj4sIGFuZAotICAgIDxmdW5jdGlvbj5waHJhc2V0b190c3F1 ZXJ5PC9mdW5jdGlvbj4KKyAgICA8ZnVuY3Rpb24+cGxhaW50b190c3F1ZXJ5 PC9mdW5jdGlvbj4sCisgICAgPGZ1bmN0aW9uPnBocmFzZXRvX3RzcXVlcnk8 L2Z1bmN0aW9uPiBhbmQKKyAgICA8ZnVuY3Rpb24+cXVlcnl0b190c3F1ZXJ5 PC9mdW5jdGlvbj4KICAgICBmb3IgY29udmVydGluZyBhIHF1ZXJ5IHRvIHRo ZSA8dHlwZT50c3F1ZXJ5PC90eXBlPiBkYXRhIHR5cGUuCiAgICAgPGZ1bmN0 aW9uPnRvX3RzcXVlcnk8L2Z1bmN0aW9uPiBvZmZlcnMgYWNjZXNzIHRvIG1v cmUgZmVhdHVyZXMKICAgICB0aGFuIGVpdGhlciA8ZnVuY3Rpb24+cGxhaW50 b190c3F1ZXJ5PC9mdW5jdGlvbj4gb3IKICAgICA8ZnVuY3Rpb24+cGhyYXNl dG9fdHNxdWVyeTwvZnVuY3Rpb24+LCBidXQgaXQgaXMgbGVzcyBmb3JnaXZp bmcKLSAgICBhYm91dCBpdHMgaW5wdXQuCisgICAgYWJvdXQgaXRzIGlucHV0 LiA8ZnVuY3Rpb24+cXVlcnl0b190c3F1ZXJ5PC9mdW5jdGlvbj4gcHJvdmlk ZXMgYSAKKyAgICBkaWZmZXJlbnQsIEdvb2dsZSBsaWtlIHN5bnRheCB0byBj cmVhdGUgdHNxdWVyeS4KICAgIDwvcGFyYT4KIAogICAgPGluZGV4dGVybT4K QEAgLTk2MCw4ICs5NjIsNjggQEAgU0VMRUNUIHBocmFzZXRvX3RzcXVlcnko J2VuZ2xpc2gnLCAnVGhlIEZhdCAmYW1wOyBSYXRzOkMnKTsKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgJ2ZhdCcgJmx0Oy0mZ3Q7ICdyYXQn ICZsdDstJmd0OyAnYycKIDwvc2NyZWVuPgorPC9wYXJhPgorCis8c3lub3Bz aXM+CitxdWVyeXRvX3RzcXVlcnkoPG9wdGlvbmFsPiA8cmVwbGFjZWFibGUg Y2xhc3M9IlBBUkFNRVRFUiI+Y29uZmlnPC9yZXBsYWNlYWJsZT4gPHR5cGU+ cmVnY29uZmlnPC8+LCA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGUgY2xhc3M9 IlBBUkFNRVRFUiI+cXVlcnl0ZXh0PC9yZXBsYWNlYWJsZT4gPHR5cGU+dGV4 dDwvPikgcmV0dXJucyA8dHlwZT50c3F1ZXJ5PC8+Cis8L3N5bm9wc2lzPgor CisgICA8cGFyYT4KKyAgICA8ZnVuY3Rpb24+cXVlcnl0b190c3F1ZXJ5PC8+ IGNyZWF0ZXMgYSA8dHlwZT50c3F1ZXJ5PC90eXBlPiBmcm9tIGEgdW5mb3Jt YXRlZCB0ZXh0LgorICAgIEJ1dCBpbnN0ZWFkIG9mIDxmdW5jdGlvbj5wbGFp bnRvX3RzcXVlcnk8Lz4gYW5kIDxmdW5jdGlvbj5waHJhc2V0b190c3F1ZXJ5 PC8+IGl0IHdvbid0CisgICAgaWdub3JlIGFscmVhZHkgcGxhY2VkIG9wZXJh dGlvbnMuIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgZm9sbG93aW5nIG9wZXJh dG9yczoKKyAgICA8aXRlbWl6ZWRsaXN0ICBzcGFjaW5nPSJjb21wYWN0IiBt YXJrPSJidWxsZXQiPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4K KyAgICAgICAnInNvbWUgdGV4dCIgLSBhbnkgdGV4dCBpbnNpZGUgcXVvdGUg c2lnbnMgd2lsbCBiZSB0cmVhdGVkIGFzIGEgcGhyYXNlIGFuZCB3aWxsIGJl CisgICAgICAgIHBlcmZvcm1lZCBsaWtlIGluIDxmdW5jdGlvbj5waHJhc2V0 b190c3F1ZXJ5PC8+LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVt PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICAnT1In IC0gc3RhbmRhcmQgbG9naWNhbCBvcGVyYXRvci4gSXQgaXMganVzdCBhbiBh bGlhcyBmb3IgJ3wnJyBzaWduLgorICAgICAgPC9wYXJhPgorICAgICA8L2xp c3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAg ICAndGVybWEgQVJPVU5EKE4pIHRlcm1iJyAtIHRoaXMgb3BlcmF0aW9uIHdp bGwgbWF0Y2ggaWYgdGhlIGRpc3RhbmNlIGJldHdlZW4gCisgICAgICAgdGVy bWEgYW5kIHRlcm1iIGlzIGxlc3MgdGhhbiBOLgorICAgICAgPC9wYXJhPgor ICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFy YT4KKyAgICAgICAnLScgLSBzdGFuZGFyZCBsb2dpY2FsIG5lZ2F0aW9uIHNp Z24uIEl0IGlzIGFuIGFsaWFzIGZvciAnIScgc2lnbi4KKyAgICAgIDwvcGFy YT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKyAg ICBPdGhlciBtaXNzaW5nIG9wZXJhdG9ycyB3aWxsIGJlIHJlcGxhY2VkIGJ5 IEFORCBsaWtlIGluIDxmdW5jdGlvbj5wbGFpbnRvX3RzcXVlcnk8Lz4uCiAg ICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIEV4YW1wbGVzOgorICAgIDxz Y3JlZW4+CisgICAgICBzZWxlY3QgcXVlcnl0b190c3F1ZXJ5KCdUaGUgZmF0 IHJhdHMnKTsKKyAgICAgICBxdWVyeXRvX3RzcXVlcnkgCisgICAgICAtLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICdmYXQnICYgJ3JhdCcKKyAgICAgICgx IHJvdykKKyAgICA8L3NjcmVlbj4KKyAgICA8c2NyZWVuPgorICAgICAgc2Vs ZWN0IHF1ZXJ5dG9fdHNxdWVyeSgnInN1cGVybm92YWUgc3RhcnMiIEFORCAt Y3JhYicpOworICAgICAgICAgICAgIHF1ZXJ5dG9fdHNxdWVyeSAgICAgICAg ICAKKyAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAnc3VwZXJub3ZhJyA8LT4gJ3N0YXInICYgISdjcmFiJworICAg ICgxIHJvdykKKyAgICA8L3NjcmVlbj4KKyAgICA8c2NyZWVuPgorICAgICAg c2VsZWN0IHF1ZXJ5dG9fdHNxdWVyeSgnLXJ1biBBUk9VTkQoNSkgImdudSBk ZWJ1Z2dlciIgT1IgIkkgbGlrZSBiYW5hbmFzIicpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHF1ZXJ5dG9fdHNxdWVyeSAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgISdydW4n IEFST1VORCg1KSAnZ251JyA8LT4gJ2RlYnVnZycgfCAnbGlrZScgPC0+ICdi YW5hbmEnCisgICAgICAoMSByb3cpCisgICAgPC9zY3JlZW4+CisgICAgPC9w YXJhPgorCiAgIDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJ0ZXh0c2VhcmNo LXJhbmtpbmciPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90 b190c2FueS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90b190c2FueS5jCmlu ZGV4IDE4MzY4ZDEuLjEwZmQ4YzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3RzZWFyY2gvdG9fdHNhbnkuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNo L3RvX3RzYW55LmMKQEAgLTQxNCw3ICs0MTQsOCBAQCBhZGRfdG9fdHN2ZWN0 b3Iodm9pZCAqX3N0YXRlLCBjaGFyICplbGVtX3ZhbHVlLCBpbnQgZWxlbV9s ZW4pCiAgKiBhbmQgZGlmZmVyZW50IHZhcmlhbnRzIGFyZSBPUmVkIHRvZ2V0 aGVyLgogICovCiBzdGF0aWMgdm9pZAotcHVzaHZhbF9tb3JwaChEYXR1bSBv cGFxdWUsIFRTUXVlcnlQYXJzZXJTdGF0ZSBzdGF0ZSwgY2hhciAqc3RydmFs LCBpbnQgbGVudmFsLCBpbnQxNiB3ZWlnaHQsIGJvb2wgcHJlZml4KQorcHVz aHZhbF9tb3JwaChEYXR1bSBvcGFxdWUsIFRTUXVlcnlQYXJzZXJTdGF0ZSBz dGF0ZSwgY2hhciAqc3RydmFsLCBpbnQgbGVudmFsLAorCQkJCQkJCWludDE2 IHdlaWdodCwgYm9vbCBwcmVmaXgsIGJvb2wgaXNwaHJhc2UpCiB7CiAJaW50 MzIJCWNvdW50ID0gMDsKIAlQYXJzZWRUZXh0CXByczsKQEAgLTQ0Nyw3ICs0 NDgsMTIgQEAgcHVzaHZhbF9tb3JwaChEYXR1bSBvcGFxdWUsIFRTUXVlcnlQ YXJzZXJTdGF0ZSBzdGF0ZSwgY2hhciAqc3RydmFsLCBpbnQgbGVudmFsLAog CQkJCQkvKiBwdXQgcGxhY2Vob2xkZXJzIGZvciBlYWNoIG1pc3Npbmcgc3Rv cCB3b3JkICovCiAJCQkJCXB1c2hTdG9wKHN0YXRlKTsKIAkJCQkJaWYgKGNu dHBvcykKLQkJCQkJCXB1c2hPcGVyYXRvcihzdGF0ZSwgZGF0YS0+cW9wZXJh dG9yLCAxKTsKKwkJCQkJeworCQkJCQkJaWYgKGlzcGhyYXNlKQorCQkJCQkJ CXB1c2hPcGVyYXRvcihzdGF0ZSwgT1BfUEhSQVNFLCAxKTsKKwkJCQkJCWVs c2UKKwkJCQkJCQlwdXNoT3BlcmF0b3Ioc3RhdGUsIGRhdGEtPnFvcGVyYXRv ciwgMSk7CisJCQkJCX0KIAkJCQkJY250cG9zKys7CiAJCQkJCXBvcysrOwog CQkJCX0KQEAgLTQ4OCw3ICs0OTQsMTAgQEAgcHVzaHZhbF9tb3JwaChEYXR1 bSBvcGFxdWUsIFRTUXVlcnlQYXJzZXJTdGF0ZSBzdGF0ZSwgY2hhciAqc3Ry dmFsLCBpbnQgbGVudmFsLAogCQkJaWYgKGNudHBvcykKIAkJCXsKIAkJCQkv KiBkaXN0YW5jZSBtYXkgYmUgdXNlZnVsICovCi0JCQkJcHVzaE9wZXJhdG9y KHN0YXRlLCBkYXRhLT5xb3BlcmF0b3IsIDEpOworCQkJCWlmIChpc3BocmFz ZSkKKwkJCQkJcHVzaE9wZXJhdG9yKHN0YXRlLCBPUF9QSFJBU0UsIDEpOwor CQkJCWVsc2UKKwkJCQkJcHVzaE9wZXJhdG9yKHN0YXRlLCBkYXRhLT5xb3Bl cmF0b3IsIDEpOwogCQkJfQogCiAJCQljbnRwb3MrKzsKQEAgLTUxNCw2ICs1 MjMsNyBAQCB0b190c3F1ZXJ5X2J5aWQoUEdfRlVOQ1RJT05fQVJHUykKIAlx dWVyeSA9IHBhcnNlX3RzcXVlcnkodGV4dF90b19jc3RyaW5nKGluKSwKIAkJ CQkJCSAgcHVzaHZhbF9tb3JwaCwKIAkJCQkJCSAgUG9pbnRlckdldERhdHVt KCZkYXRhKSwKKwkJCQkJCSAgZmFsc2UsCiAJCQkJCQkgIGZhbHNlKTsKIAog CVBHX1JFVFVSTl9UU1FVRVJZKHF1ZXJ5KTsKQEAgLTU0NCw3ICs1NTQsOCBA QCBwbGFpbnRvX3RzcXVlcnlfYnlpZChQR19GVU5DVElPTl9BUkdTKQogCXF1 ZXJ5ID0gcGFyc2VfdHNxdWVyeSh0ZXh0X3RvX2NzdHJpbmcoaW4pLAogCQkJ CQkJICBwdXNodmFsX21vcnBoLAogCQkJCQkJICBQb2ludGVyR2V0RGF0dW0o JmRhdGEpLAotCQkJCQkJICB0cnVlKTsKKwkJCQkJCSAgdHJ1ZSwKKwkJCQkJ CSAgZmFsc2UpOwogCiAJUEdfUkVUVVJOX1BPSU5URVIocXVlcnkpOwogfQpA QCAtNTc1LDcgKzU4Niw4IEBAIHBocmFzZXRvX3RzcXVlcnlfYnlpZChQR19G VU5DVElPTl9BUkdTKQogCXF1ZXJ5ID0gcGFyc2VfdHNxdWVyeSh0ZXh0X3Rv X2NzdHJpbmcoaW4pLAogCQkJCQkJICBwdXNodmFsX21vcnBoLAogCQkJCQkJ ICBQb2ludGVyR2V0RGF0dW0oJmRhdGEpLAotCQkJCQkJICB0cnVlKTsKKwkJ CQkJCSAgdHJ1ZSwKKwkJCQkJCSAgZmFsc2UpOwogCiAJUEdfUkVUVVJOX1RT UVVFUlkocXVlcnkpOwogfQpAQCAtNTkxLDMgKzYwMywzNiBAQCBwaHJhc2V0 b190c3F1ZXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJCQkJT2JqZWN0 SWRHZXREYXR1bShjZmdJZCksCiAJCQkJCQkJCQkJUG9pbnRlckdldERhdHVt KGluKSkpOwogfQorCitEYXR1bQorcXVlcnl0b190c3F1ZXJ5X2J5aWQoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwl0ZXh0CSAgICppbiA9IFBHX0dFVEFSR19U RVhUX1BQKDEpOworCU1vcnBoT3BhcXVlCWRhdGE7CisJVFNRdWVyeQkJcXVl cnkgPSBOVUxMOworCQorCWRhdGEuY2ZnX2lkID0gUEdfR0VUQVJHX09JRCgw KTsKKworCWRhdGEucW9wZXJhdG9yID0gT1BfQU5EOworCisJcXVlcnkgPSBw YXJzZV90c3F1ZXJ5KHRleHRfdG9fY3N0cmluZyhpbiksCisJCQkJCQkgIHB1 c2h2YWxfbW9ycGgsCisJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSgmZGF0YSks CisJCQkJCQkgIGZhbHNlLAorCQkJCQkJICB0cnVlKTsKKworCVBHX1JFVFVS Tl9UU1FVRVJZKHF1ZXJ5KTsKK30KKworRGF0dW0KK3F1ZXJ5dG9fdHNxdWVy eShQR19GVU5DVElPTl9BUkdTKQoreworCXRleHQJICAgKmluID0gUEdfR0VU QVJHX1RFWFRfUFAoMCk7CisJT2lkCQkJY2ZnSWQ7CisKKwljZmdJZCA9IGdl dFRTQ3VycmVudENvbmZpZyh0cnVlKTsKKwlQR19SRVRVUk5fREFUVU0oRGly ZWN0RnVuY3Rpb25DYWxsMihxdWVyeXRvX3RzcXVlcnlfYnlpZCwKKwkJCQkJ CQkJCQlPYmplY3RJZEdldERhdHVtKGNmZ0lkKSwKKwkJCQkJCQkJCQlQb2lu dGVyR2V0RGF0dW0oaW4pKSk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3RzZWFyY2gvdHNfc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfc2VsZnVuY3MuYwppbmRleCAwNDZmNTQzLi4zNzVjYjVjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3NlbGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19zZWxmdW5jcy5jCkBAIC0zOTYs NiArMzk2LDcgQEAgdHNxdWVyeV9vcHJfc2VsZWMoUXVlcnlJdGVtICppdGVt LCBjaGFyICpvcGVyYW5kLAogCQkJCWJyZWFrOwogCiAJCQljYXNlIE9QX1BI UkFTRToKKwkJCWNhc2UgT1BfQVJPVU5EOgogCQkJY2FzZSBPUF9BTkQ6CiAJ CQkJczEgPSB0c3F1ZXJ5X29wcl9zZWxlYyhpdGVtICsgMSwgb3BlcmFuZCwK IAkJCQkJCQkJCSAgIGxvb2t1cCwgbGVuZ3RoLCBtaW5mcmVxKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c2dpbmlkeC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3RzZ2luaWR4LmMKaW5kZXggODNhOTM5ZC4u N2RjOGYzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Rz Z2luaWR4LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzZ2luaWR4 LmMKQEAgLTIzOSw2ICsyMzksNyBAQCBUU19leGVjdXRlX3Rlcm5hcnkoR2lu Q2hrVmFsICpnY3YsIFF1ZXJ5SXRlbSAqY3VyaXRlbSwgYm9vbCBpbl9waHJh c2UpCiAJCQlyZXR1cm4gIXJlc3VsdDsKIAogCQljYXNlIE9QX1BIUkFTRToK KwkJY2FzZSBPUF9BUk9VTkQ6CiAKIAkJCS8qCiAJCQkgKiBHSU4gZG9lc24n dCBjb250YWluIGFueSBpbmZvcm1hdGlvbiBhYm91dCBwb3NpdGlvbnMsIHNv IHRyZWF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNx dWVyeS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnkuYwppbmRl eCAzZTJmYzZlLi5iOWNiN2VhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvdHNxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC90c3F1ZXJ5LmMKQEAgLTI5LDYgKzI5LDcgQEAgY29uc3QgaW50CXRzZWFy Y2hfb3BfcHJpb3JpdHlbT1BfQ09VTlRdID0KIAk0LAkJCQkJCQkvKiBPUF9O T1QgKi8KIAkyLAkJCQkJCQkvKiBPUF9BTkQgKi8KIAkxLAkJCQkJCQkvKiBP UF9PUiAqLworCTMsCQkJCQkJCS8qIE9QX0FST1VORCAqLwogCTMJCQkJCQkJ LyogT1BfUEhSQVNFICovCiB9OwogCkBAIC01OCwxMCArNTksMTEgQEAgc3Ry dWN0IFRTUXVlcnlQYXJzZXJTdGF0ZURhdGEKIH07CiAKIC8qIHBhcnNlcidz IHN0YXRlcyAqLwotI2RlZmluZSBXQUlUT1BFUkFORCAxCi0jZGVmaW5lIFdB SVRPUEVSQVRPUgkyCi0jZGVmaW5lIFdBSVRGSVJTVE9QRVJBTkQgMwotI2Rl ZmluZSBXQUlUU0lOR0xFT1BFUkFORCA0CisjZGVmaW5lIFdBSVRPUEVSQU5E CQkJMQorI2RlZmluZSBXQUlUT1BFUkFUT1IJCTIKKyNkZWZpbmUgV0FJVEZJ UlNUT1BFUkFORAkzCisjZGVmaW5lIFdBSVRTSU5HTEVPUEVSQU5ECTQKKyNk ZWZpbmUgSU5TSURFUVVPVEVTCQk1CiAKIC8qCiAgKiBzdWJyb3V0aW5lIHRv IHBhcnNlIHRoZSBtb2RpZmllcnMgKHdlaWdodCBhbmQgcHJlZml4IGZsYWcg Y3VycmVudGx5KQpAQCAtMjEwLDYgKzIxMiw2OSBAQCB0eXBlZGVmIGVudW0K IAlQVF9DTE9TRSA9IDUKIH0gdHNfdG9rZW50eXBlOwogCisKK3N0YXRpYyBi b29sCitoYXNfcHJlZml4KGNoYXIgKiBzdHIsIGNoYXIgKiBwcmVmaXgpCit7 CisJaWYgKHN0cmxlbihwcmVmaXgpID4gc3RybGVuKHN0cikpCisJeworCQly ZXR1cm4gZmFsc2U7CisJfQorCXdoaWxlICgqcHJlZml4ICE9ICdcMCcpCisJ eworCQlpZiAoKihzdHIrKykgIT0gKihwcmVmaXgrKykpCisJCXsKKwkJCXJl dHVybiBmYWxzZTsKKwkJfQorCX0KKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoK KyAqIFBhcnNlIGFyb3VuZCBvcGVyYXRvci4gVGhlIG9wZXJhdG9yCisgKiBo YXZlIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAqCisgKgkJYSBBUk9VTkQoWCkg YiAoZGlzdGFuY2UgaXMgbm8gZ3JlYXRlciB0aGFuIFgpCisgKgorICogVGhl IGJ1ZmZlciBzaG91bGQgYmVnaW4gd2l0aCAiQVJPVU5EKCIgcHJlZml4Cisg Ki8KK3N0YXRpYyBjaGFyICoKK3BhcnNlX2Fyb3VuZF9vcGVyYXRvcihjaGFy ICpidWYsIGludDE2ICpkaXN0YW5jZSkKK3sKKwljaGFyCSAgICpwdHIgPSBi dWY7CisJY2hhcgkgICAqZW5kcHRyOworCWxvbmcJCWwgPSAxOworCisJQXNz ZXJ0KGhhc19wcmVmaXgocHRyLCAiQVJPVU5EKCIpKTsKKworCXB0ciArPSBz dHJsZW4oIkFST1VORCgiKTsKKworCXdoaWxlICh0X2lzc3BhY2UocHRyKSkK KwkJcHRyKys7CisKKwlsID0gc3RydG9sKHB0ciwgJmVuZHB0ciwgMTApOwor CWlmIChwdHIgPT0gZW5kcHRyKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJ CSBlcnJtc2coIkludmFsaWQgQVJPVU5EKFgpIG9wZXJhdG9yISIpKSk7CisJ ZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFIHx8IGwgPiBNQVhFTlRSWVBPUykK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJkaXN0YW5jZSBp biBBUk9VTkQgb3BlcmF0b3Igc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4g JWQiLAorCQkJCQkJTUFYRU5UUllQT1MpKSk7CisKKwlwdHIgPSBlbmRwdHI7 CisJKmRpc3RhbmNlID0gbDsKKwl3aGlsZSAodF9pc3NwYWNlKHB0cikpCisJ CXB0cisrOworCisJaWYgKCF0X2lzZXEocHRyLCAnKScpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCSBlcnJtc2coIk1pc3NpbmcgJyknIGluIEFST1VO RChYKSBvcGVyYXRvciIpKSk7CisKKwlyZXR1cm4gKytwdHI7Cit9CiAvKgog ICogZ2V0IHRva2VuIGZyb20gcXVlcnkgc3RyaW5nCiAgKgpAQCAtMjIxLDcg KzI4Niw4IEBAIHR5cGVkZWYgZW51bQogc3RhdGljIHRzX3Rva2VudHlwZQog Z2V0dG9rZW5fcXVlcnkoVFNRdWVyeVBhcnNlclN0YXRlIHN0YXRlLAogCQkJ ICAgaW50OCAqb3BlcmF0b3IsCi0JCQkgICBpbnQgKmxlbnZhbCwgY2hhciAq KnN0cnZhbCwgaW50MTYgKndlaWdodCwgYm9vbCAqcHJlZml4KQorCQkJICAg aW50ICpsZW52YWwsIGNoYXIgKipzdHJ2YWwsIGludDE2ICp3ZWlnaHQsIGJv b2wgKnByZWZpeCwKKwkJCSAgIGJvb2wgaXNxdWVyeSkKIHsKIAkqd2VpZ2h0 ID0gMDsKIAkqcHJlZml4ID0gZmFsc2U7CkBAIC0yMzIsNyArMjk4LDcgQEAg Z2V0dG9rZW5fcXVlcnkoVFNRdWVyeVBhcnNlclN0YXRlIHN0YXRlLAogCQl7 CiAJCQljYXNlIFdBSVRGSVJTVE9QRVJBTkQ6CiAJCQljYXNlIFdBSVRPUEVS QU5EOgotCQkJCWlmICh0X2lzZXEoc3RhdGUtPmJ1ZiwgJyEnKSkKKwkJCQlp ZiAodF9pc2VxKHN0YXRlLT5idWYsICchJykgfHwgKGlzcXVlcnkgJiYgdF9p c2VxKHN0YXRlLT5idWYsICctJykpKQogCQkJCXsKIAkJCQkJKHN0YXRlLT5i dWYpKys7CQkvKiBjYW4gc2FmZWx5ICsrLCB0X2lzZXEgZ3VhcmFudGVlCiAJ CQkJCQkJCQkJICogdGhhdCBwZ19tYmxlbigpPT0xICovCkBAIC0yNTQsNiAr MzIwLDIwIEBAIGdldHRva2VuX3F1ZXJ5KFRTUXVlcnlQYXJzZXJTdGF0ZSBz dGF0ZSwKIAkJCQkJCQkgZXJybXNnKCJzeW50YXggZXJyb3IgaW4gdHNxdWVy eTogXCIlc1wiIiwKIAkJCQkJCQkJCXN0YXRlLT5idWZmZXIpKSk7CiAJCQkJ fQorCQkJCWVsc2UgaWYgKGlzcXVlcnkgJiYgdF9pc2VxKHN0YXRlLT5idWYs ICciJykpCisJCQkJeworCQkJCQljaGFyCSAgICpxdW90ZSA9IHN0cmNocihz dGF0ZS0+YnVmICsgMSwgJyInKTsKKwkJCQkJaWYgKHF1b3RlID09IE5VTEwp CisJCQkJCXsKKwkJCQkJCXN0YXRlLT5idWYrKzsKKwkJCQkJCWNvbnRpbnVl OworCQkJCQl9CisJCQkJCSpzdHJ2YWwgPSBzdGF0ZS0+YnVmICsgMTsKKwkJ CQkJKmxlbnZhbCA9IHF1b3RlIC0gc3RhdGUtPmJ1ZiAtIDE7CisJCQkJCXN0 YXRlLT5idWYgPSBxdW90ZSArIDE7CisJCQkJCXN0YXRlLT5zdGF0ZSA9IElO U0lERVFVT1RFUzsKKwkJCQkJcmV0dXJuIFBUX1ZBTDsKKwkJCQl9CiAJCQkJ ZWxzZSBpZiAoIXRfaXNzcGFjZShzdGF0ZS0+YnVmKSkKIAkJCQl7CiAJCQkJ CS8qCkBAIC0yOTEsNiArMzcxLDEzIEBAIGdldHRva2VuX3F1ZXJ5KFRTUXVl cnlQYXJzZXJTdGF0ZSBzdGF0ZSwKIAkJCQkJKHN0YXRlLT5idWYpKys7CiAJ CQkJCXJldHVybiBQVF9PUFI7CiAJCQkJfQorCQkJCWVsc2UgaWYgKGlzcXVl cnkgJiYgaGFzX3ByZWZpeChzdGF0ZS0+YnVmLCAiT1IgIikpCisJCQkJewor CQkJCQlzdGF0ZS0+c3RhdGUgPSBXQUlUT1BFUkFORDsKKwkJCQkJKm9wZXJh dG9yID0gT1BfT1I7CisJCQkJCShzdGF0ZS0+YnVmKSArPSAzOworCQkJCQly ZXR1cm4gUFRfT1BSOworCQkJCX0KIAkJCQllbHNlIGlmICh0X2lzZXEoc3Rh dGUtPmJ1ZiwgJzwnKSkKIAkJCQl7CiAJCQkJCXN0YXRlLT5zdGF0ZSA9IFdB SVRPUEVSQU5EOwpAQCAtMzAxLDE0ICszODgsMzkgQEAgZ2V0dG9rZW5fcXVl cnkoVFNRdWVyeVBhcnNlclN0YXRlIHN0YXRlLAogCQkJCQkJcmV0dXJuIFBU X0VSUjsKIAkJCQkJcmV0dXJuIFBUX09QUjsKIAkJCQl9CisJCQkJZWxzZSBp ZiAoaXNxdWVyeSAmJiBoYXNfcHJlZml4KHN0YXRlLT5idWYsICJBUk9VTkQo IikpCisJCQkJeworCQkJCQlzdGF0ZS0+c3RhdGUgPSBXQUlUT1BFUkFORDsK KwkJCQkJKm9wZXJhdG9yID0gT1BfQVJPVU5EOworCQkJCQkvKiB3ZWlnaHQg dmFyIGlzIHVzZWQgYXMgc3RvcmFnZSBmb3IgZGlzdGFuY2UgKi8KKwkJCQkJ c3RhdGUtPmJ1ZiA9IHBhcnNlX2Fyb3VuZF9vcGVyYXRvcihzdGF0ZS0+YnVm LCB3ZWlnaHQpOworCQkJCQlpZiAoKndlaWdodCA8IDApCisJCQkJCQlyZXR1 cm4gUFRfRVJSOworCQkJCQlyZXR1cm4gUFRfT1BSOworCQkJCX0KIAkJCQll bHNlIGlmICh0X2lzZXEoc3RhdGUtPmJ1ZiwgJyknKSkKIAkJCQl7CiAJCQkJ CShzdGF0ZS0+YnVmKSsrOwogCQkJCQlzdGF0ZS0+Y291bnQtLTsKIAkJCQkJ cmV0dXJuIChzdGF0ZS0+Y291bnQgPCAwKSA/IFBUX0VSUiA6IFBUX0NMT1NF OwogCQkJCX0KKwkJCQllbHNlIGlmICh0X2lzZXEoc3RhdGUtPmJ1ZiwgJygn KSkKKwkJCQl7CisJCQkJCSpvcGVyYXRvciA9IE9QX0FORDsKKwkJCQkJc3Rh dGUtPnN0YXRlID0gV0FJVE9QRVJBTkQ7CisJCQkJCXJldHVybiBQVF9PUFI7 CisJCQkJfQogCQkJCWVsc2UgaWYgKCooc3RhdGUtPmJ1ZikgPT0gJ1wwJykK IAkJCQkJcmV0dXJuIChzdGF0ZS0+Y291bnQpID8gUFRfRVJSIDogUFRfRU5E OworCQkJCWVsc2UgaWYgKGlzcXVlcnkgJiYKKwkJCQkJCQkodF9pc2FscGhh KHN0YXRlLT5idWYpIHx8IHRfaXNlcShzdGF0ZS0+YnVmLCAnIScpCisJCQkJ CQkJCQkJCQkgICB8fCB0X2lzZXEoc3RhdGUtPmJ1ZiwgJy0nKQorCQkJCQkJ CQkJCQkJICAgfHwgdF9pc2VxKHN0YXRlLT5idWYsICciJykpKQorCQkJCXsK KwkJCQkJc3RhdGUtPnN0YXRlID0gV0FJVE9QRVJBTkQ7CisJCQkJCSpvcGVy YXRvciA9IE9QX0FORDsKKwkJCQkJcmV0dXJuIFBUX09QUjsKKwkJCQl9CiAJ CQkJZWxzZSBpZiAoIXRfaXNzcGFjZShzdGF0ZS0+YnVmKSkKIAkJCQkJcmV0 dXJuIFBUX0VSUjsKIAkJCQlicmVhazsKQEAgLTMyMCw2ICs0MzIsOSBAQCBn ZXR0b2tlbl9xdWVyeShUU1F1ZXJ5UGFyc2VyU3RhdGUgc3RhdGUsCiAJCQkJ c3RhdGUtPmJ1ZiArPSBzdHJsZW4oc3RhdGUtPmJ1Zik7CiAJCQkJc3RhdGUt PmNvdW50Kys7CiAJCQkJcmV0dXJuIFBUX1ZBTDsKKwkJCWNhc2UgSU5TSURF UVVPVEVTOgorCQkJCXN0YXRlLT5zdGF0ZSA9IFdBSVRPUEVSQVRPUjsKKwkJ CQljb250aW51ZTsKIAkJCWRlZmF1bHQ6CiAJCQkJcmV0dXJuIFBUX0VSUjsK IAkJCQlicmVhazsKQEAgLTMzNiwxMiArNDUxLDEyIEBAIHB1c2hPcGVyYXRv cihUU1F1ZXJ5UGFyc2VyU3RhdGUgc3RhdGUsIGludDggb3BlciwgaW50MTYg ZGlzdGFuY2UpCiB7CiAJUXVlcnlPcGVyYXRvciAqdG1wOwogCi0JQXNzZXJ0 KG9wZXIgPT0gT1BfTk9UIHx8IG9wZXIgPT0gT1BfQU5EIHx8IG9wZXIgPT0g T1BfT1IgfHwgb3BlciA9PSBPUF9QSFJBU0UpOworCUFzc2VydChvcGVyID09 IE9QX05PVCB8fCBvcGVyID09IE9QX0FORCB8fCBvcGVyID09IE9QX09SIHx8 IG9wZXIgPT0gT1BfUEhSQVNFIHx8IG9wZXIgPT0gT1BfQVJPVU5EKTsKIAog CXRtcCA9IChRdWVyeU9wZXJhdG9yICopIHBhbGxvYzAoc2l6ZW9mKFF1ZXJ5 T3BlcmF0b3IpKTsKIAl0bXAtPnR5cGUgPSBRSV9PUFI7CiAJdG1wLT5vcGVy ID0gb3BlcjsKLQl0bXAtPmRpc3RhbmNlID0gKG9wZXIgPT0gT1BfUEhSQVNF KSA/IGRpc3RhbmNlIDogMDsKKwl0bXAtPmRpc3RhbmNlID0gKG9wZXIgPT0g T1BfUEhSQVNFIHx8IG9wZXIgPT0gT1BfQVJPVU5EKSA/IGRpc3RhbmNlIDog MDsKIAkvKiBsZWZ0IGlzIGZpbGxlZCBpbiBsYXRlciB3aXRoIGZpbmRvcHJu ZCAqLwogCiAJc3RhdGUtPnBvbHN0ciA9IGxjb25zKHRtcCwgc3RhdGUtPnBv bHN0cik7CkBAIC00NzUsNyArNTkwLDggQEAgY2xlYW5PcFN0YWNrKFRTUXVl cnlQYXJzZXJTdGF0ZSBzdGF0ZSwKIHN0YXRpYyB2b2lkCiBtYWtlcG9sKFRT UXVlcnlQYXJzZXJTdGF0ZSBzdGF0ZSwKIAkJUHVzaEZ1bmN0aW9uIHB1c2h2 YWwsCi0JCURhdHVtIG9wYXF1ZSkKKwkJRGF0dW0gb3BhcXVlLAorCQlib29s IGlzcXVlcnkpCiB7CiAJaW50OAkJb3BlcmF0b3IgPSAwOwogCXRzX3Rva2Vu dHlwZSB0eXBlOwpAQCAtNDg5LDE5ICs2MDUsMTkgQEAgbWFrZXBvbChUU1F1 ZXJ5UGFyc2VyU3RhdGUgc3RhdGUsCiAJLyogc2luY2UgdGhpcyBmdW5jdGlv biByZWN1cnNlcywgaXQgY291bGQgYmUgZHJpdmVuIHRvIHN0YWNrIG92ZXJm bG93ICovCiAJY2hlY2tfc3RhY2tfZGVwdGgoKTsKIAotCXdoaWxlICgodHlw ZSA9IGdldHRva2VuX3F1ZXJ5KHN0YXRlLCAmb3BlcmF0b3IsICZsZW52YWws ICZzdHJ2YWwsICZ3ZWlnaHQsICZwcmVmaXgpKSAhPSBQVF9FTkQpCisJd2hp bGUgKCh0eXBlID0gZ2V0dG9rZW5fcXVlcnkoc3RhdGUsICZvcGVyYXRvciwg JmxlbnZhbCwgJnN0cnZhbCwgJndlaWdodCwgJnByZWZpeCwgaXNxdWVyeSkp ICE9IFBUX0VORCkKIAl7CiAJCXN3aXRjaCAodHlwZSkKIAkJewogCQkJY2Fz ZSBQVF9WQUw6Ci0JCQkJcHVzaHZhbChvcGFxdWUsIHN0YXRlLCBzdHJ2YWws IGxlbnZhbCwgd2VpZ2h0LCBwcmVmaXgpOworCQkJCXB1c2h2YWwob3BhcXVl LCBzdGF0ZSwgc3RydmFsLCBsZW52YWwsIHdlaWdodCwgcHJlZml4LCBzdGF0 ZS0+c3RhdGUgPT0gSU5TSURFUVVPVEVTKTsKIAkJCQlicmVhazsKIAkJCWNh c2UgUFRfT1BSOgogCQkJCWNsZWFuT3BTdGFjayhzdGF0ZSwgb3BzdGFjaywg JmxlbnN0YWNrLCBvcGVyYXRvcik7CiAJCQkJcHVzaE9wU3RhY2sob3BzdGFj aywgJmxlbnN0YWNrLCBvcGVyYXRvciwgd2VpZ2h0KTsKIAkJCQlicmVhazsK IAkJCWNhc2UgUFRfT1BFTjoKLQkJCQltYWtlcG9sKHN0YXRlLCBwdXNodmFs LCBvcGFxdWUpOworCQkJCW1ha2Vwb2woc3RhdGUsIHB1c2h2YWwsIG9wYXF1 ZSwgaXNxdWVyeSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBUX0NMT1NFOgog CQkJCWNsZWFuT3BTdGFjayhzdGF0ZSwgb3BzdGFjaywgJmxlbnN0YWNrLCBP UF9PUiAvKiBsb3dlc3QgKi8gKTsKQEAgLTU1NSw3ICs2NzEsOCBAQCBmaW5k b3BybmRfcmVjdXJzZShRdWVyeUl0ZW0gKnB0ciwgdWludDMyICpwb3MsIGlu dCBubm9kZXMsIGJvb2wgKm5lZWRjbGVhbnVwKQogCiAJCQlBc3NlcnQoY3Vy aXRlbS0+b3BlciA9PSBPUF9BTkQgfHwKIAkJCQkgICBjdXJpdGVtLT5vcGVy ID09IE9QX09SIHx8Ci0JCQkJICAgY3VyaXRlbS0+b3BlciA9PSBPUF9QSFJB U0UpOworCQkJCSAgIGN1cml0ZW0tPm9wZXIgPT0gT1BfUEhSQVNFIHx8CisJ CQkJICAgY3VyaXRlbS0+b3BlciA9PSBPUF9BUk9VTkQpOwogCiAJCQkoKnBv cykrKzsKIApAQCAtNjA1LDcgKzcyMiw4IEBAIFRTUXVlcnkKIHBhcnNlX3Rz cXVlcnkoY2hhciAqYnVmLAogCQkJICBQdXNoRnVuY3Rpb24gcHVzaHZhbCwK IAkJCSAgRGF0dW0gb3BhcXVlLAotCQkJICBib29sIGlzcGxhaW4pCisJCQkg IGJvb2wgaXNwbGFpbiwKKwkJCSAgYm9vbCBpc3F1ZXJ5KQogewogCXN0cnVj dCBUU1F1ZXJ5UGFyc2VyU3RhdGVEYXRhIHN0YXRlOwogCWludAkJCWk7CkBA IC02MzIsNyArNzUwLDcgQEAgcGFyc2VfdHNxdWVyeShjaGFyICpidWYsCiAJ KihzdGF0ZS5jdXJvcCkgPSAnXDAnOwogCiAJLyogcGFyc2UgcXVlcnkgJiBt YWtlIHBvbGlzaCBub3RhdGlvbiAocG9zdGZpeCwgYnV0IGluIHJldmVyc2Ug b3JkZXIpICovCi0JbWFrZXBvbCgmc3RhdGUsIHB1c2h2YWwsIG9wYXF1ZSk7 CisJbWFrZXBvbCgmc3RhdGUsIHB1c2h2YWwsIG9wYXF1ZSwgaXNxdWVyeSk7 CiAKIAljbG9zZV90c3ZlY3Rvcl9wYXJzZXIoc3RhdGUudmFsc3RhdGUpOwog CkBAIC03MDMsNyArODIxLDcgQEAgcGFyc2VfdHNxdWVyeShjaGFyICpidWYs CiAKIHN0YXRpYyB2b2lkCiBwdXNodmFsX2FzaXMoRGF0dW0gb3BhcXVlLCBU U1F1ZXJ5UGFyc2VyU3RhdGUgc3RhdGUsIGNoYXIgKnN0cnZhbCwgaW50IGxl bnZhbCwKLQkJCSBpbnQxNiB3ZWlnaHQsIGJvb2wgcHJlZml4KQorCQkJIGlu dDE2IHdlaWdodCwgYm9vbCBwcmVmaXgsIGJvb2wgaXNwaHJhc2UpCiB7CiAJ cHVzaFZhbHVlKHN0YXRlLCBzdHJ2YWwsIGxlbnZhbCwgd2VpZ2h0LCBwcmVm aXgpOwogfQpAQCAtNzE2LDcgKzgzNCw3IEBAIHRzcXVlcnlpbihQR19GVU5D VElPTl9BUkdTKQogewogCWNoYXIJICAgKmluID0gUEdfR0VUQVJHX0NTVFJJ TkcoMCk7CiAKLQlQR19SRVRVUk5fVFNRVUVSWShwYXJzZV90c3F1ZXJ5KGlu LCBwdXNodmFsX2FzaXMsIFBvaW50ZXJHZXREYXR1bShOVUxMKSwgZmFsc2Up KTsKKwlQR19SRVRVUk5fVFNRVUVSWShwYXJzZV90c3F1ZXJ5KGluLCBwdXNo dmFsX2FzaXMsIFBvaW50ZXJHZXREYXR1bShOVUxMKSwgZmFsc2UsIGZhbHNl KSk7CiB9CiAKIC8qCkBAIC04ODQsNiArMTAwMiw5IEBAIGluZml4KElORklY ICppbiwgaW50IHBhcmVudFByaW9yaXR5LCBib29sIHJpZ2h0UGhyYXNlT3Ap CiAJCQkJZWxzZQogCQkJCQlzcHJpbnRmKGluLT5jdXIsICIgPC0+ICVzIiwg bnJtLmJ1Zik7CiAJCQkJYnJlYWs7CisJCQljYXNlIE9QX0FST1VORDoKKwkJ CQlzcHJpbnRmKGluLT5jdXIsICIgQVJPVU5EKCVkKSAlcyIsIGRpc3RhbmNl LCBucm0uYnVmKTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyog T1BfTk9UIGlzIGhhbmRsZWQgaW4gYWJvdmUgaWYtYnJhbmNoICovCiAJCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvcGVyYXRvciB0eXBlOiAlZCIs IG9wKTsKQEAgLTk2Niw3ICsxMDg3LDcgQEAgdHNxdWVyeXNlbmQoUEdfRlVO Q1RJT05fQVJHUykKIAkJCQlicmVhazsKIAkJCWNhc2UgUUlfT1BSOgogCQkJ CXBxX3NlbmRpbnQoJmJ1ZiwgaXRlbS0+cW9wZXJhdG9yLm9wZXIsIHNpemVv ZihpdGVtLT5xb3BlcmF0b3Iub3BlcikpOwotCQkJCWlmIChpdGVtLT5xb3Bl cmF0b3Iub3BlciA9PSBPUF9QSFJBU0UpCisJCQkJaWYgKGl0ZW0tPnFvcGVy YXRvci5vcGVyID09IE9QX1BIUkFTRSB8fCBpdGVtLT5xb3BlcmF0b3Iub3Bl ciA9PSBPUF9BUk9VTkQpCiAJCQkJCXBxX3NlbmRpbnQoJmJ1ZiwgaXRlbS0+ cW9wZXJhdG9yLmRpc3RhbmNlLAogCQkJCQkJCSAgIHNpemVvZihpdGVtLT5x b3BlcmF0b3IuZGlzdGFuY2UpKTsKIAkJCQlicmVhazsKQEAgLTEwNjIsMTQg KzExODMsMTQgQEAgdHNxdWVyeXJlY3YoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CWludDgJCW9wZXI7CiAKIAkJCW9wZXIgPSAoaW50OCkgcHFfZ2V0bXNnaW50 KGJ1Ziwgc2l6ZW9mKGludDgpKTsKLQkJCWlmIChvcGVyICE9IE9QX05PVCAm JiBvcGVyICE9IE9QX09SICYmIG9wZXIgIT0gT1BfQU5EICYmIG9wZXIgIT0g T1BfUEhSQVNFKQorCQkJaWYgKG9wZXIgIT0gT1BfTk9UICYmIG9wZXIgIT0g T1BfT1IgJiYgb3BlciAhPSBPUF9BTkQgJiYgb3BlciAhPSBPUF9QSFJBU0Ug JiYgb3BlciAhPSBPUF9BUk9VTkQpCiAJCQkJZWxvZyhFUlJPUiwgImludmFs aWQgdHNxdWVyeTogdW5yZWNvZ25pemVkIG9wZXJhdG9yIHR5cGUgJWQiLAog CQkJCQkgKGludCkgb3Blcik7CiAJCQlpZiAoaSA9PSBzaXplIC0gMSkKIAkJ CQllbG9nKEVSUk9SLCAiaW52YWxpZCBwb2ludGVyIHRvIHJpZ2h0IG9wZXJh bmQiKTsKIAogCQkJaXRlbS0+cW9wZXJhdG9yLm9wZXIgPSBvcGVyOwotCQkJ aWYgKG9wZXIgPT0gT1BfUEhSQVNFKQorCQkJaWYgKG9wZXIgPT0gT1BfUEhS QVNFIHx8IG9wZXIgPT0gT1BfQVJPVU5EKQogCQkJCWl0ZW0tPnFvcGVyYXRv ci5kaXN0YW5jZSA9IChpbnQxNikgcHFfZ2V0bXNnaW50KGJ1Ziwgc2l6ZW9m KGludDE2KSk7CiAJCX0KIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3RzcXVlcnlfY2xlYW51cC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3RzcXVlcnlfY2xlYW51cC5jCmluZGV4IDM1MDE3MWMuLmNh OTlhMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1 ZXJ5X2NsZWFudXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNx dWVyeV9jbGVhbnVwLmMKQEAgLTE2MSw3ICsxNjEsOCBAQCBjbGVhbl9OT1Rf aW50cmVlKE5PREUgKm5vZGUpCiAJCU5PREUJICAgKnJlcyA9IG5vZGU7CiAK IAkJQXNzZXJ0KG5vZGUtPnZhbG5vZGUtPnFvcGVyYXRvci5vcGVyID09IE9Q X0FORCB8fAotCQkJICAgbm9kZS0+dmFsbm9kZS0+cW9wZXJhdG9yLm9wZXIg PT0gT1BfUEhSQVNFKTsKKwkJCSAgIG5vZGUtPnZhbG5vZGUtPnFvcGVyYXRv ci5vcGVyID09IE9QX1BIUkFTRSB8fAorCQkJICAgbm9kZS0+dmFsbm9kZS0+ cW9wZXJhdG9yLm9wZXIgPT0gT1BfQVJPVU5EKTsKIAogCQlub2RlLT5sZWZ0 ID0gY2xlYW5fTk9UX2ludHJlZShub2RlLT5sZWZ0KTsKIAkJbm9kZS0+cmln aHQgPSBjbGVhbl9OT1RfaW50cmVlKG5vZGUtPnJpZ2h0KTsKQEAgLTI3Nyw3 ICsyNzgsOCBAQCBjbGVhbl9zdG9wd29yZF9pbnRyZWUoTk9ERSAqbm9kZSwg aW50ICpsYWRkLCBpbnQgKnJhZGQpCiAJCW5vZGUtPnJpZ2h0ID0gY2xlYW5f c3RvcHdvcmRfaW50cmVlKG5vZGUtPnJpZ2h0LCAmcmxhZGQsICZycmFkZCk7 CiAKIAkJLyogQ2hlY2sgaWYgY3VycmVudCBub2RlIGlzIE9QX1BIUkFTRSwg Z2V0IGl0cyBkaXN0YW5jZSAqLwotCQlpc3BocmFzZSA9IChub2RlLT52YWxu b2RlLT5xb3BlcmF0b3Iub3BlciA9PSBPUF9QSFJBU0UpOworCQlpc3BocmFz ZSA9IChub2RlLT52YWxub2RlLT5xb3BlcmF0b3Iub3BlciA9PSBPUF9QSFJB U0UgCisJCQkJCXx8IG5vZGUtPnZhbG5vZGUtPnFvcGVyYXRvci5vcGVyID09 IE9QX0FST1VORCk7CiAJCW5kaXN0YW5jZSA9IGlzcGhyYXNlID8gbm9kZS0+ dmFsbm9kZS0+cW9wZXJhdG9yLmRpc3RhbmNlIDogMDsKIAogCQlpZiAobm9k ZS0+bGVmdCA9PSBOVUxMICYmIG5vZGUtPnJpZ2h0ID09IE5VTEwpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV9vcC5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfb3AuYwppbmRleCA3NTVj M2U5Li43Y2Y5YjhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdHNxdWVyeV9vcC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90 c3F1ZXJ5X29wLmMKQEAgLTM3LDcgKzM3LDcgQEAgam9pbl90c3F1ZXJpZXMo VFNRdWVyeSBhLCBUU1F1ZXJ5IGIsIGludDggb3BlcmF0b3IsIHVpbnQxNiBk aXN0YW5jZSkKIAlyZXMtPnZhbG5vZGUgPSAoUXVlcnlJdGVtICopIHBhbGxv YzAoc2l6ZW9mKFF1ZXJ5SXRlbSkpOwogCXJlcy0+dmFsbm9kZS0+dHlwZSA9 IFFJX09QUjsKIAlyZXMtPnZhbG5vZGUtPnFvcGVyYXRvci5vcGVyID0gb3Bl cmF0b3I7Ci0JaWYgKG9wZXJhdG9yID09IE9QX1BIUkFTRSkKKwlpZiAob3Bl cmF0b3IgPT0gT1BfUEhSQVNFIHx8IG9wZXJhdG9yID09IE9QX0FST1VORCkK IAkJcmVzLT52YWxub2RlLT5xb3BlcmF0b3IuZGlzdGFuY2UgPSBkaXN0YW5j ZTsKIAogCXJlcy0+Y2hpbGQgPSAoUVROb2RlICoqKSBwYWxsb2MwKHNpemVv ZihRVE5vZGUgKikgKiAyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC90c3F1ZXJ5X3V0aWwuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC90c3F1ZXJ5X3V0aWwuYwppbmRleCA5NzFiYjgxLi41NDhhODQ2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeV91dGlsLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfdXRpbC5jCkBA IC0xMjEsNyArMTIxLDcgQEAgUVROb2RlQ29tcGFyZShRVE5vZGUgKmFuLCBR VE5vZGUgKmJuKQogCQkJCQlyZXR1cm4gcmVzOwogCQl9CiAKLQkJaWYgKGFv LT5vcGVyID09IE9QX1BIUkFTRSAmJiBhby0+ZGlzdGFuY2UgIT0gYm8tPmRp c3RhbmNlKQorCQlpZiAoKGFvLT5vcGVyID09IE9QX1BIUkFTRSB8fCBhby0+ b3BlciA9PSBPUF9BUk9VTkQpICYmIGFvLT5kaXN0YW5jZSAhPSBiby0+ZGlz dGFuY2UpCiAJCQlyZXR1cm4gKGFvLT5kaXN0YW5jZSA+IGJvLT5kaXN0YW5j ZSkgPyAtMSA6IDE7CiAKIAkJcmV0dXJuIDA7CkBAIC0xNzEsNyArMTcxLDgg QEAgUVROU29ydChRVE5vZGUgKmluKQogCiAJZm9yIChpID0gMDsgaSA8IGlu LT5uY2hpbGQ7IGkrKykKIAkJUVROU29ydChpbi0+Y2hpbGRbaV0pOwotCWlm IChpbi0+bmNoaWxkID4gMSAmJiBpbi0+dmFsbm9kZS0+cW9wZXJhdG9yLm9w ZXIgIT0gT1BfUEhSQVNFKQorCWlmIChpbi0+bmNoaWxkID4gMSAmJiBpbi0+ dmFsbm9kZS0+cW9wZXJhdG9yLm9wZXIgIT0gT1BfUEhSQVNFCisJCSYmIGlu LT52YWxub2RlLT5xb3BlcmF0b3Iub3BlciAhPSBPUF9BUk9VTkQpCiAJCXFz b3J0KCh2b2lkICopIGluLT5jaGlsZCwgaW4tPm5jaGlsZCwgc2l6ZW9mKFFU Tm9kZSAqKSwgY21wUVROKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3RzcmFuay5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RzcmFuay5jCmluZGV4IDc2ZTVlNTQuLjM2MzdhYzEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3JhbmsuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvdHNyYW5rLmMKQEAgLTM2Niw3ICszNjYsOCBAQCBj YWxjX3JhbmsoY29uc3QgZmxvYXQgKncsIFRTVmVjdG9yIHQsIFRTUXVlcnkg cSwgaW50MzIgbWV0aG9kKQogCiAJLyogWFhYOiBXaGF0IGFib3V0IE5PVD8g Ki8KIAlyZXMgPSAoaXRlbS0+dHlwZSA9PSBRSV9PUFIgJiYgKGl0ZW0tPnFv cGVyYXRvci5vcGVyID09IE9QX0FORCB8fAotCQkJCQkJCQkJaXRlbS0+cW9w ZXJhdG9yLm9wZXIgPT0gT1BfUEhSQVNFKSkgPworCQkJCQkJCQkJaXRlbS0+ cW9wZXJhdG9yLm9wZXIgPT0gT1BfUEhSQVNFIHx8CisJCQkJCQkJCQlpdGVt LT5xb3BlcmF0b3Iub3BlciA9PSBPUF9BUk9VTkQpKSA/CiAJCWNhbGNfcmFu a19hbmQodywgdCwgcSkgOgogCQljYWxjX3Jhbmtfb3IodywgdCwgcSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9v cC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX29wLmMKaW5k ZXggYzY5NDYzNy4uMDU0M2U5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3RzdmVjdG9yX29wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3RzdmVjdG9yX29wLmMKQEAgLTE0MjksNiArMTQyOSw3IEBAIGNo ZWNrY29uZGl0aW9uX3N0cih2b2lkICpjaGVja3ZhbCwgUXVlcnlPcGVyYW5k ICp2YWwsIEV4ZWNQaHJhc2VEYXRhICpkYXRhKQogI2RlZmluZSBUU1BPX0xf T05MWQkJMHgwMQkvKiBlbWl0IHBvc2l0aW9ucyBhcHBlYXJpbmcgb25seSBp biBMICovCiAjZGVmaW5lIFRTUE9fUl9PTkxZCQkweDAyCS8qIGVtaXQgcG9z aXRpb25zIGFwcGVhcmluZyBvbmx5IGluIFIgKi8KICNkZWZpbmUgVFNQT19C T1RICQkweDA0CS8qIGVtaXQgcG9zaXRpb25zIGFwcGVhcmluZyBpbiBib3Ro IEwmUiAqLworI2RlZmluZSBUU19OT1RfRVhBQwkJMHgwOAkvKiBub3QgZXhh Y3QgZGlzdGFuY2UgZm9yIEFST1VORChYKSAqLwogCiBzdGF0aWMgYm9vbAog VFNfcGhyYXNlX291dHB1dChFeGVjUGhyYXNlRGF0YSAqZGF0YSwKQEAgLTE0 NzMsOCArMTQ3NCwxOCBAQCBUU19waHJhc2Vfb3V0cHV0KEV4ZWNQaHJhc2VE YXRhICpkYXRhLAogCQkJUnBvcyA9IElOVF9NQVg7CiAJCX0KIAorCQkvKiBQ cm9jZXNzaW5nIE9QX0FST1VORCAqLworCQlpZiAoKGVtaXQgJiBUU19OT1Rf RVhBQykgJiYKKwkJCUxwb3MgLSBScG9zID49IDAgJiYgCisJCQlMcG9zIC0g UnBvcyA8PSAoTG9mZnNldCArIFJvZmZzZXQpICogMiAtIFJkYXRhLT53aWR0 aCArIExkYXRhLT53aWR0aCkKKwkJeworCQkJaWYgKGVtaXQgJiBUU1BPX0JP VEgpCisJCQkJb3V0cHV0X3BvcyA9IFJwb3M7CisJCQlMaW5kZXgrKzsKKwkJ CVJpbmRleCsrOworCQl9CiAJCS8qIE1lcmdlLWpvaW4gdGhlIHR3byBpbnB1 dCBsaXN0cyAqLwotCQlpZiAoTHBvcyA8IFJwb3MpCisJCWVsc2UgaWYgKExw b3MgPCBScG9zKQogCQl7CiAJCQkvKiBMcG9zIGlzIG5vdCBtYXRjaGVkIGlu IFJkYXRhLCBzaG91bGQgd2Ugb3V0cHV0IGl0PyAqLwogCQkJaWYgKGVtaXQg JiBUU1BPX0xfT05MWSkKQEAgLTE2MjUsNiArMTYzNiw3IEBAIFRTX3BocmFz ZV9leGVjdXRlKFF1ZXJ5SXRlbSAqY3VyaXRlbSwgdm9pZCAqYXJnLCB1aW50 MzIgZmxhZ3MsCiAJCQl9CiAKIAkJY2FzZSBPUF9QSFJBU0U6CisJCWNhc2Ug T1BfQVJPVU5EOgogCQljYXNlIE9QX0FORDoKIAkJCW1lbXNldCgmTGRhdGEs IDAsIHNpemVvZihMZGF0YSkpOwogCQkJbWVtc2V0KCZSZGF0YSwgMCwgc2l6 ZW9mKFJkYXRhKSk7CkBAIC0xNjQ3LDcgKzE2NTksNyBAQCBUU19waHJhc2Vf ZXhlY3V0ZShRdWVyeUl0ZW0gKmN1cml0ZW0sIHZvaWQgKmFyZywgdWludDMy IGZsYWdzLAogCQkJCShSZGF0YS5ucG9zID09IDAgJiYgIVJkYXRhLm5lZ2F0 ZSkpCiAJCQkJcmV0dXJuIChmbGFncyAmIFRTX0VYRUNfUEhSQVNFX05PX1BP UykgPyB0cnVlIDogZmFsc2U7CiAKLQkJCWlmIChjdXJpdGVtLT5xb3BlcmF0 b3Iub3BlciA9PSBPUF9QSFJBU0UpCisJCQlpZiAoY3VyaXRlbS0+cW9wZXJh dG9yLm9wZXIgPT0gT1BfUEhSQVNFIHx8IGN1cml0ZW0tPnFvcGVyYXRvci5v cGVyID09IE9QX0FST1VORCkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIENvbXB1 dGUgTG9mZnNldCBhbmQgUm9mZnNldCBzdWl0YWJsZSBmb3IgcGhyYXNlIG1h dGNoLCBhbmQKQEAgLTE3MDMsNyArMTcxNSw3IEBAIFRTX3BocmFzZV9leGVj dXRlKFF1ZXJ5SXRlbSAqY3VyaXRlbSwgdm9pZCAqYXJnLCB1aW50MzIgZmxh Z3MsCiAJCQl7CiAJCQkJLyogc3RyYWlnaHQgQU5EICovCiAJCQkJcmV0dXJu IFRTX3BocmFzZV9vdXRwdXQoZGF0YSwgJkxkYXRhLCAmUmRhdGEsCi0JCQkJ CQkJCQkJVFNQT19CT1RILAorCQkJCQkJCQkJCVRTUE9fQk9USCB8IChjdXJp dGVtLT5xb3BlcmF0b3Iub3BlciA9PSBPUF9BUk9VTkQgPyBUU19OT1RfRVhB QyA6IDApLAogCQkJCQkJCQkJCUxvZmZzZXQsIFJvZmZzZXQsCiAJCQkJCQkJ CQkJTWluKExkYXRhLm5wb3MsIFJkYXRhLm5wb3MpKTsKIAkJCX0KQEAgLTE4 NDMsNiArMTg1NSw3IEBAIFRTX2V4ZWN1dGUoUXVlcnlJdGVtICpjdXJpdGVt LCB2b2lkICphcmcsIHVpbnQzMiBmbGFncywKIAkJCQlyZXR1cm4gVFNfZXhl Y3V0ZShjdXJpdGVtICsgMSwgYXJnLCBmbGFncywgY2hrY29uZCk7CiAKIAkJ Y2FzZSBPUF9QSFJBU0U6CisJCWNhc2UgT1BfQVJPVU5EOgogCQkJcmV0dXJu IFRTX3BocmFzZV9leGVjdXRlKGN1cml0ZW0sIGFyZywgZmxhZ3MsIGNoa2Nv bmQsIE5VTEwpOwogCiAJCWRlZmF1bHQ6CkBAIC0xODgyLDYgKzE4OTUsNyBA QCB0c3F1ZXJ5X3JlcXVpcmVzX21hdGNoKFF1ZXJ5SXRlbSAqY3VyaXRlbSkK IAkJCXJldHVybiBmYWxzZTsKIAogCQljYXNlIE9QX1BIUkFTRToKKwkJY2Fz ZSBPUF9BUk9VTkQ6CiAKIAkJCS8qCiAJCQkgKiBUcmVhdCBPUF9QSFJBU0Ug YXMgT1BfQU5EIGhlcmUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmgK aW5kZXggZjIyY2M0Zi4uZmUxNGJhMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmgKQEAgLTQ4NTcsNiArNDg1Nyw4IEBAIERBVEEoaW5zZXJ0 IE9JRCA9IDM3NDYgKCAgdG9fdHNxdWVyeQkJUEdOU1AgUEdVSUQgMTIgMTAw IDAgMCAwIGYgZiBmIGYgdCBmIGkgcyAyCiBERVNDUigibWFrZSB0c3F1ZXJ5 Iik7CiBEQVRBKGluc2VydCBPSUQgPSAzNzQ3ICggIHBsYWludG9fdHNxdWVy eQlQR05TUCBQR1VJRCAxMiAxMDAgMCAwIDAgZiBmIGYgZiB0IGYgaSBzIDIg MCAzNjE1ICIzNzM0IDI1IiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8g X251bGxfIHBsYWludG9fdHNxdWVyeV9ieWlkIF9udWxsXyBfbnVsbF8gX251 bGxfICkpOwogREVTQ1IoInRyYW5zZm9ybSB0byB0c3F1ZXJ5Iik7CitEQVRB KGluc2VydCBPSUQgPSA4ODg5ICggIHF1ZXJ5dG9fdHNxdWVyeQlQR05TUCBQ R1VJRCAxMiAxMDAgMCAwIDAgZiBmIGYgZiB0IGYgaSBzIDIgMCAzNjE1ICIz NzM0IDI1IiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIHF1 ZXJ5dG9fdHNxdWVyeV9ieWlkIF9udWxsXyBfbnVsbF8gX251bGxfICkpOwor REVTQ1IoInRyYW5zZm9ybSB0byB0c3F1ZXJ5Iik7CiBEQVRBKGluc2VydCBP SUQgPSA1MDA2ICggIHBocmFzZXRvX3RzcXVlcnkJUEdOU1AgUEdVSUQgMTIg MTAwIDAgMCAwIGYgZiBmIGYgdCBmIGkgcyAyIDAgMzYxNSAiMzczNCAyNSIg X251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBwaHJhc2V0b190 c3F1ZXJ5X2J5aWQgX251bGxfIF9udWxsXyBfbnVsbF8gKSk7CiBERVNDUigi dHJhbnNmb3JtIHRvIHRzcXVlcnkiKTsKIERBVEEoaW5zZXJ0IE9JRCA9IDM3 NDkgKCAgdG9fdHN2ZWN0b3IJCVBHTlNQIFBHVUlEIDEyIDEwMCAwIDAgMCBm IGYgZiBmIHQgZiBzIHMgMSAwIDM2MTQgIjI1IiBfbnVsbF8gX251bGxfIF9u dWxsXyBfbnVsbF8gX251bGxfIHRvX3RzdmVjdG9yIF9udWxsXyBfbnVsbF8g X251bGxfICkpOwpAQCAtNDg2NSw2ICs0ODY3LDggQEAgREFUQShpbnNlcnQg T0lEID0gMzc1MCAoICB0b190c3F1ZXJ5CQlQR05TUCBQR1VJRCAxMiAxMDAg MCAwIDAgZiBmIGYgZiB0IGYgcyBzIDEKIERFU0NSKCJtYWtlIHRzcXVlcnki KTsKIERBVEEoaW5zZXJ0IE9JRCA9IDM3NTEgKCAgcGxhaW50b190c3F1ZXJ5 CVBHTlNQIFBHVUlEIDEyIDEwMCAwIDAgMCBmIGYgZiBmIHQgZiBzIHMgMSAw IDM2MTUgIjI1IiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxf IHBsYWludG9fdHNxdWVyeSBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKIERF U0NSKCJ0cmFuc2Zvcm0gdG8gdHNxdWVyeSIpOworREFUQShpbnNlcnQgT0lE ID0gODg5MCAoICBxdWVyeXRvX3RzcXVlcnkJUEdOU1AgUEdVSUQgMTIgMTAw IDAgMCAwIGYgZiBmIGYgdCBmIHMgcyAxIDAgMzYxNSAiMjUiIF9udWxsXyBf bnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gcXVlcnl0b190c3F1ZXJ5IF9u dWxsXyBfbnVsbF8gX251bGxfICkpOworREVTQ1IoInRyYW5zZm9ybSB0byB0 c3F1ZXJ5Iik7CiBEQVRBKGluc2VydCBPSUQgPSA1MDAxICggIHBocmFzZXRv X3RzcXVlcnkJUEdOU1AgUEdVSUQgMTIgMTAwIDAgMCAwIGYgZiBmIGYgdCBm IHMgcyAxIDAgMzYxNSAiMjUiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxs XyBfbnVsbF8gcGhyYXNldG9fdHNxdWVyeSBfbnVsbF8gX251bGxfIF9udWxs XyApKTsKIERFU0NSKCJ0cmFuc2Zvcm0gdG8gdHNxdWVyeSIpOwogREFUQShp bnNlcnQgT0lEID0gNDIwOSAoICB0b190c3ZlY3RvcgkJUEdOU1AgUEdVSUQg MTIgMTAwIDAgMCAwIGYgZiBmIGYgdCBmIHMgcyAxIDAgMzYxNCAiMzgwMiIg X251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBqc29uYl90b190 c3ZlY3RvciBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3RzZWFyY2gvdHNfdHlwZS5oIGIvc3JjL2luY2x1ZGUv dHNlYXJjaC90c190eXBlLmgKaW5kZXggODczZTJlMS4uNDlmOGU2OCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdHNlYXJjaC90c190eXBlLmgKKysrIGIv c3JjL2luY2x1ZGUvdHNlYXJjaC90c190eXBlLmgKQEAgLTE3NSw4ICsxNzUs OSBAQCB0eXBlZGVmIHN0cnVjdAogI2RlZmluZSBPUF9OT1QJCQkxCiAjZGVm aW5lIE9QX0FORAkJCTIKICNkZWZpbmUgT1BfT1IJCQkzCisjZGVmaW5lIE9Q X0FST1VORAkJNQogI2RlZmluZSBPUF9QSFJBU0UJCTQJCS8qIGhpZ2hlc3Qg Y29kZSwgdHNxdWVyeV9jbGVhbnVwLmMgKi8KLSNkZWZpbmUgT1BfQ09VTlQJ CTQKKyNkZWZpbmUgT1BfQ09VTlQJCTUKIAogZXh0ZXJuIGNvbnN0IGludCB0 c2VhcmNoX29wX3ByaW9yaXR5W09QX0NPVU5UXTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdHNlYXJjaC90c191dGlscy5oIGIvc3JjL2luY2x1ZGUv dHNlYXJjaC90c191dGlscy5oCmluZGV4IDIwZDkwYjEuLmNiZDdjM2YgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3RzZWFyY2gvdHNfdXRpbHMuaAorKysg Yi9zcmMvaW5jbHVkZS90c2VhcmNoL3RzX3V0aWxzLmgKQEAgLTQ1LDExICs0 NSwxMiBAQCB0eXBlZGVmIHZvaWQgKCpQdXNoRnVuY3Rpb24pIChEYXR1bSBv cGFxdWUsIFRTUXVlcnlQYXJzZXJTdGF0ZSBzdGF0ZSwKIAkJCQkJCQkJCQkg IGludDE2IHRva2Vud2VpZ2h0cywJLyogYml0bWFwIGFzIGRlc2NyaWJlZAog CQkJCQkJCQkJCQkJCQkJCSAqIGluIFF1ZXJ5T3BlcmFuZAogCQkJCQkJCQkJ CQkJCQkJCSAqIHN0cnVjdCAqLwotCQkJCQkJCQkJCSAgYm9vbCBwcmVmaXgp OworCQkJCQkJCQkJCSAgYm9vbCBwcmVmaXgsCisJCQkJCQkJCQkJICBib29s IGlzcGhyYXNlKTsKIAogZXh0ZXJuIFRTUXVlcnkgcGFyc2VfdHNxdWVyeShj aGFyICpidWYsCiAJCQkgIFB1c2hGdW5jdGlvbiBwdXNodmFsLAotCQkJICBE YXR1bSBvcGFxdWUsIGJvb2wgaXNwbGFpbik7CisJCQkgIERhdHVtIG9wYXF1 ZSwgYm9vbCBpc3BsYWluLCBib29sIGlzcXVlcnkpOwogCiAvKiBGdW5jdGlv bnMgZm9yIHVzZSBieSBQdXNoRnVuY3Rpb24gaW1wbGVtZW50YXRpb25zICov CiBleHRlcm4gdm9pZCBwdXNoVmFsdWUoVFNRdWVyeVBhcnNlclN0YXRlIHN0 YXRlLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90 c2VhcmNoLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJj aC5vdXQKaW5kZXggYjJmYzllMi4uYmRjM2UxNCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RzZWFyY2gub3V0CkBAIC0xNjYxLDMg KzE2NjEsMTE1IEBAIHNlbGVjdCAqIGZyb20gcGhyYXNlX2luZGV4X3Rlc3Qg d2hlcmUgZnRzIEBAIHBocmFzZXRvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnZmF0 IGNhCiAoMSByb3cpCiAKIHNldCBlbmFibGVfc2Vxc2NhbiA9IG9uOworLS10 ZXN0IHF1ZXJ5dG9fdHNxdWVyeSBmdW5jdGlvbgorc2VsZWN0IHF1ZXJ5dG9f dHNxdWVyeSgnTXkgYnJhbmQgbmV3IHNtYXJ0cGhvbmUnKTsKKyAgICAgICAg cXVlcnl0b190c3F1ZXJ5ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAnYnJhbmQnICYgJ25ldycgJiAnc21hcnRwaG9uJwor KDEgcm93KQorCitzZWxlY3QgcXVlcnl0b190c3F1ZXJ5KCdNeSBicmFuZCAi bmV3IHNtYXJ0cGhvbmUiJyk7CisgICAgICAgICBxdWVyeXRvX3RzcXVlcnkg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICdicmFuZCcgJiAnbmV3JyA8LT4gJ3NtYXJ0cGhvbicKKygxIHJvdykKKwor c2VsZWN0IHF1ZXJ5dG9fdHNxdWVyeSgnIkEgZmF0IGNhdCIgaGFzIGp1c3Qg ZWF0ZW4gYSAtcmF0LicpOworICAgICAgICAgIHF1ZXJ5dG9fdHNxdWVyeSAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAnZmF0JyA8LT4gJ2NhdCcgJiAnZWF0ZW4nICYgISdyYXQnCisoMSBy b3cpCisKK3NlbGVjdCBxdWVyeXRvX3RzcXVlcnkoJyJBIGZhdCBjYXQiIGhh cyBqdXN0IGVhdGVuIE9SIC1yYXQuJyk7CisgICAgICAgICAgcXVlcnl0b190 c3F1ZXJ5ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICdmYXQnIDwtPiAnY2F0JyAmICdlYXRlbicgfCAhJ3Jh dCcKKygxIHJvdykKKworc2VsZWN0IHF1ZXJ5dG9fdHNxdWVyeSgnIkEgZmF0 IGNhdCIgaGFzIGp1c3QgKGVhdGVuIE9SIC1yYXQpJyk7CisgICAgICAgICAg ICBxdWVyeXRvX3RzcXVlcnkgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2ZhdCcgPC0+ICdjYXQn ICYgKCAnZWF0ZW4nIHwgISdyYXQnICkKKygxIHJvdykKKworLS0gdGVzdGlu ZyBBUk9VTkQgb3BlcmF0b3IgZXZhbHVhdGlvbgorc2VsZWN0IHRvX3RzdmVj dG9yKCdUaGUgR05VIERlYnVnZ2VyIGlzIGEgcG9ydGFibGUgZGVidWdnZXIg dGhhdCBydW5zIG9uIG1hbnkgVW5peCBsaWtlIHN5c3RlbXMgYW5kIHdvcmtz IGZvciBtYW55IHByb2dyYW1taW5nIGxhbmd1YWdlcycpIEBAIAorcXVlcnl0 b190c3F1ZXJ5KCciZ251IGRlYnVnZ2VyIiBBUk9VTkQoNSkgcnVucycpOwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworc2VsZWN0 IHRvX3RzdmVjdG9yKCdUaGUgR05VIERlYnVnZ2VyIGlzIGEgcG9ydGFibGUg ZGVidWdnZXIgdGhhdCBydW5zIG9uIG1hbnkgVW5peCBsaWtlIHN5c3RlbXMg YW5kIHdvcmtzIGZvciBtYW55IHByb2dyYW1taW5nIGxhbmd1YWdlcycpIEBA IAorcXVlcnl0b190c3F1ZXJ5KCdydW4gQVJPVU5EKDUpICJnbnUgZGVidWdn ZXIiJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZgorKDEgcm93KQor CitzZWxlY3QgdG9fdHN2ZWN0b3IoJ1RoZSBHTlUgRGVidWdnZXIgaXMgYSBw b3J0YWJsZSBkZWJ1Z2dlciB0aGF0IHJ1bnMgb24gbWFueSBVbml4IGxpa2Ug c3lzdGVtcyBhbmQgd29ya3MgZm9yIG1hbnkgcHJvZ3JhbW1pbmcgbGFuZ3Vh Z2VzJykgQEAgCitxdWVyeXRvX3RzcXVlcnkoJyJnbnUgZGVidWdnZXIiIEFS T1VORCg2KSBydW5zJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAor KDEgcm93KQorCitzZWxlY3QgdG9fdHN2ZWN0b3IoJ1RoZSBHTlUgRGVidWdn ZXIgaXMgYSBwb3J0YWJsZSBkZWJ1Z2dlciB0aGF0IHJ1bnMgb24gbWFueSBV bml4IGxpa2Ugc3lzdGVtcyBhbmQgd29ya3MgZm9yIG1hbnkgcHJvZ3JhbW1p bmcgbGFuZ3VhZ2VzJykgQEAgCitxdWVyeXRvX3RzcXVlcnkoJ3J1biBBUk9V TkQoNikgImdudSBkZWJ1Z2dlciInKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyB0CisoMSByb3cpCisKK3NlbGVjdCB0b190c3ZlY3RvcignVGhlIEdO VSBEZWJ1Z2dlciBpcyBhIHBvcnRhYmxlIGRlYnVnZ2VyIHRoYXQgcnVucyBv biBtYW55IFVuaXggbGlrZSBzeXN0ZW1zIGFuZCB3b3JrcyBmb3IgbWFueSBw cm9ncmFtbWluZyBsYW5ndWFnZXMnKSBAQCAKK3F1ZXJ5dG9fdHNxdWVyeSgn Im1hbnkgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIiBBUk9VTkQoMTApICJwb3J0 YWJsZSBkZWJ1Z2dlciInKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBm CisoMSByb3cpCisKK3NlbGVjdCB0b190c3ZlY3RvcignVGhlIEdOVSBEZWJ1 Z2dlciBpcyBhIHBvcnRhYmxlIGRlYnVnZ2VyIHRoYXQgcnVucyBvbiBtYW55 IFVuaXggbGlrZSBzeXN0ZW1zIGFuZCB3b3JrcyBmb3IgbWFueSBwcm9ncmFt bWluZyBsYW5ndWFnZXMnKSBAQCAKK3F1ZXJ5dG9fdHNxdWVyeSgnInBvcnRh YmxlIGRlYnVnZ2VyIiBBUk9VTkQoMTApICJtYW55IHByb2dyYW1taW5nIGxh bmd1YWdlcyInKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSBy b3cpCisKK3NlbGVjdCB0b190c3ZlY3RvcignVGhlIEdOVSBEZWJ1Z2dlciBp cyBhIHBvcnRhYmxlIGRlYnVnZ2VyIHRoYXQgcnVucyBvbiBtYW55IFVuaXgg bGlrZSBzeXN0ZW1zIGFuZCB3b3JrcyBmb3IgbWFueSBwcm9ncmFtbWluZyBs YW5ndWFnZXMnKSBAQCAKK3F1ZXJ5dG9fdHNxdWVyeSgnIm1hbnkgcHJvZ3Jh bW1pbmcgbGFuZ3VhZ2VzIiBBUk9VTkQoMTEpICJwb3J0YWJsZSBkZWJ1Z2dl ciInKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisK K3NlbGVjdCB0b190c3ZlY3RvcignVGhlIEdOVSBEZWJ1Z2dlciBpcyBhIHBv cnRhYmxlIGRlYnVnZ2VyIHRoYXQgcnVucyBvbiBtYW55IFVuaXggbGlrZSBz eXN0ZW1zIGFuZCB3b3JrcyBmb3IgbWFueSBwcm9ncmFtbWluZyBsYW5ndWFn ZXMnKSBAQCAKK3F1ZXJ5dG9fdHNxdWVyeSgnInBvcnRhYmxlIGRlYnVnZ2Vy IiBBUk9VTkQoMTEpICJtYW55IHByb2dyYW1taW5nIGxhbmd1YWdlcyInKTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK3NlbGVj dCBxdWVyeXRvX3RzcXVlcnkoJyJmYXQgY2F0IEFST1VORCg1KSByYXQiJyk7 CisgICAgICAgICAgICAgICAgcXVlcnl0b190c3F1ZXJ5ICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICdmYXQnIDwtPiAnY2F0JyA8LT4gJ2Fyb3VuZCcgPC0+ ICc1JyA8LT4gJ3JhdCcKKygxIHJvdykKKworc2VsZWN0IHF1ZXJ5dG9fdHNx dWVyeSgnc2ltcGxlJywnImZhdCBjYXQgT1IgcmF0IicpOworICAgICAgICAg IHF1ZXJ5dG9fdHNxdWVyeSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnZmF0JyA8LT4gJ2NhdCcgPC0+ICdv cicgPC0+ICdyYXQnCisoMSByb3cpCisKK3NlbGVjdCBxdWVyeXRvX3RzcXVl cnkoJ2ZhdCpyYXQnKTsKKyBxdWVyeXRvX3RzcXVlcnkgCistLS0tLS0tLS0t LS0tLS0tLQorICdmYXQnICYgJ3JhdCcKKygxIHJvdykKKworc2VsZWN0IHF1 ZXJ5dG9fdHNxdWVyeSgnZmF0LXJhdCcpOworICAgICAgcXVlcnl0b190c3F1 ZXJ5ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnZmF0 LXJhdCcgJiAnZmF0JyAmICdyYXQnCisoMSByb3cpCisKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdHNlYXJjaC5zcWwKaW5kZXggZTRiMjFmOC4uNzVmYmVk YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwKQEAg LTUzNSwzICs1MzUsMzQgQEAgY3JlYXRlIGluZGV4IHBocmFzZV9pbmRleF90 ZXN0X2lkeCBvbiBwaHJhc2VfaW5kZXhfdGVzdCB1c2luZyBnaW4oZnRzKTsK IHNldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKIHNlbGVjdCAqIGZyb20gcGhy YXNlX2luZGV4X3Rlc3Qgd2hlcmUgZnRzIEBAIHBocmFzZXRvX3RzcXVlcnko J2VuZ2xpc2gnLCAnZmF0IGNhdCcpOwogc2V0IGVuYWJsZV9zZXFzY2FuID0g b247CisKKy0tdGVzdCBxdWVyeXRvX3RzcXVlcnkgZnVuY3Rpb24KK3NlbGVj dCBxdWVyeXRvX3RzcXVlcnkoJ015IGJyYW5kIG5ldyBzbWFydHBob25lJyk7 CitzZWxlY3QgcXVlcnl0b190c3F1ZXJ5KCdNeSBicmFuZCAibmV3IHNtYXJ0 cGhvbmUiJyk7CitzZWxlY3QgcXVlcnl0b190c3F1ZXJ5KCciQSBmYXQgY2F0 IiBoYXMganVzdCBlYXRlbiBhIC1yYXQuJyk7CitzZWxlY3QgcXVlcnl0b190 c3F1ZXJ5KCciQSBmYXQgY2F0IiBoYXMganVzdCBlYXRlbiBPUiAtcmF0Licp Oworc2VsZWN0IHF1ZXJ5dG9fdHNxdWVyeSgnIkEgZmF0IGNhdCIgaGFzIGp1 c3QgKGVhdGVuIE9SIC1yYXQpJyk7CisKKy0tIHRlc3RpbmcgQVJPVU5EIG9w ZXJhdG9yIGV2YWx1YXRpb24KK3NlbGVjdCB0b190c3ZlY3RvcignVGhlIEdO VSBEZWJ1Z2dlciBpcyBhIHBvcnRhYmxlIGRlYnVnZ2VyIHRoYXQgcnVucyBv biBtYW55IFVuaXggbGlrZSBzeXN0ZW1zIGFuZCB3b3JrcyBmb3IgbWFueSBw cm9ncmFtbWluZyBsYW5ndWFnZXMnKSBAQCAKK3F1ZXJ5dG9fdHNxdWVyeSgn ImdudSBkZWJ1Z2dlciIgQVJPVU5EKDUpIHJ1bnMnKTsKK3NlbGVjdCB0b190 c3ZlY3RvcignVGhlIEdOVSBEZWJ1Z2dlciBpcyBhIHBvcnRhYmxlIGRlYnVn Z2VyIHRoYXQgcnVucyBvbiBtYW55IFVuaXggbGlrZSBzeXN0ZW1zIGFuZCB3 b3JrcyBmb3IgbWFueSBwcm9ncmFtbWluZyBsYW5ndWFnZXMnKSBAQCAKK3F1 ZXJ5dG9fdHNxdWVyeSgncnVuIEFST1VORCg1KSAiZ251IGRlYnVnZ2VyIicp Oworc2VsZWN0IHRvX3RzdmVjdG9yKCdUaGUgR05VIERlYnVnZ2VyIGlzIGEg cG9ydGFibGUgZGVidWdnZXIgdGhhdCBydW5zIG9uIG1hbnkgVW5peCBsaWtl IHN5c3RlbXMgYW5kIHdvcmtzIGZvciBtYW55IHByb2dyYW1taW5nIGxhbmd1 YWdlcycpIEBAIAorcXVlcnl0b190c3F1ZXJ5KCciZ251IGRlYnVnZ2VyIiBB Uk9VTkQoNikgcnVucycpOworc2VsZWN0IHRvX3RzdmVjdG9yKCdUaGUgR05V IERlYnVnZ2VyIGlzIGEgcG9ydGFibGUgZGVidWdnZXIgdGhhdCBydW5zIG9u IG1hbnkgVW5peCBsaWtlIHN5c3RlbXMgYW5kIHdvcmtzIGZvciBtYW55IHBy b2dyYW1taW5nIGxhbmd1YWdlcycpIEBAIAorcXVlcnl0b190c3F1ZXJ5KCdy dW4gQVJPVU5EKDYpICJnbnUgZGVidWdnZXIiJyk7CisKK3NlbGVjdCB0b190 c3ZlY3RvcignVGhlIEdOVSBEZWJ1Z2dlciBpcyBhIHBvcnRhYmxlIGRlYnVn Z2VyIHRoYXQgcnVucyBvbiBtYW55IFVuaXggbGlrZSBzeXN0ZW1zIGFuZCB3 b3JrcyBmb3IgbWFueSBwcm9ncmFtbWluZyBsYW5ndWFnZXMnKSBAQCAKK3F1 ZXJ5dG9fdHNxdWVyeSgnIm1hbnkgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIiBB Uk9VTkQoMTApICJwb3J0YWJsZSBkZWJ1Z2dlciInKTsKK3NlbGVjdCB0b190 c3ZlY3RvcignVGhlIEdOVSBEZWJ1Z2dlciBpcyBhIHBvcnRhYmxlIGRlYnVn Z2VyIHRoYXQgcnVucyBvbiBtYW55IFVuaXggbGlrZSBzeXN0ZW1zIGFuZCB3 b3JrcyBmb3IgbWFueSBwcm9ncmFtbWluZyBsYW5ndWFnZXMnKSBAQCAKK3F1 ZXJ5dG9fdHNxdWVyeSgnInBvcnRhYmxlIGRlYnVnZ2VyIiBBUk9VTkQoMTAp ICJtYW55IHByb2dyYW1taW5nIGxhbmd1YWdlcyInKTsKK3NlbGVjdCB0b190 c3ZlY3RvcignVGhlIEdOVSBEZWJ1Z2dlciBpcyBhIHBvcnRhYmxlIGRlYnVn Z2VyIHRoYXQgcnVucyBvbiBtYW55IFVuaXggbGlrZSBzeXN0ZW1zIGFuZCB3 b3JrcyBmb3IgbWFueSBwcm9ncmFtbWluZyBsYW5ndWFnZXMnKSBAQCAKK3F1 ZXJ5dG9fdHNxdWVyeSgnIm1hbnkgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIiBB Uk9VTkQoMTEpICJwb3J0YWJsZSBkZWJ1Z2dlciInKTsKK3NlbGVjdCB0b190 c3ZlY3RvcignVGhlIEdOVSBEZWJ1Z2dlciBpcyBhIHBvcnRhYmxlIGRlYnVn Z2VyIHRoYXQgcnVucyBvbiBtYW55IFVuaXggbGlrZSBzeXN0ZW1zIGFuZCB3 b3JrcyBmb3IgbWFueSBwcm9ncmFtbWluZyBsYW5ndWFnZXMnKSBAQCAKK3F1 ZXJ5dG9fdHNxdWVyeSgnInBvcnRhYmxlIGRlYnVnZ2VyIiBBUk9VTkQoMTEp ICJtYW55IHByb2dyYW1taW5nIGxhbmd1YWdlcyInKTsKKworc2VsZWN0IHF1 ZXJ5dG9fdHNxdWVyeSgnImZhdCBjYXQgQVJPVU5EKDUpIHJhdCInKTsKK3Nl bGVjdCBxdWVyeXRvX3RzcXVlcnkoJ3NpbXBsZScsJyJmYXQgY2F0IE9SIHJh dCInKTsKK3NlbGVjdCBxdWVyeXRvX3RzcXVlcnkoJ2ZhdCpyYXQnKTsKK3Nl bGVjdCBxdWVyeXRvX3RzcXVlcnkoJ2ZhdC1yYXQnKTsKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCg== --=_9302a17c905a8baed909a9d4b61a4c4e Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --=_9302a17c905a8baed909a9d4b61a4c4e--