Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fBmba-0000Ki-Mq for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Apr 2018 19:30:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fBmbZ-00017t-JI for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Apr 2018 19:30:57 +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.89) (envelope-from ) id 1fBmbZ-00017k-4b for pgsql-hackers@lists.postgresql.org; Thu, 26 Apr 2018 19:30:57 +0000 Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fBmbQ-0004SF-5w for pgsql-hackers@lists.postgresql.org; Thu, 26 Apr 2018 19:30:56 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 86D7A21BDA; Thu, 26 Apr 2018 15:30:45 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Thu, 26 Apr 2018 15:30:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=cLf+EMFUBC+2a0lllUKZkjMbQrqh5 9F0UlCSNGJEk/Y=; b=SUDY+iCKdJ5AA/5MWDai8HVJiylLnbgnSGDFqfKnp3+iU rDecPeOXo2/mXRP4veXDERWWkJN4NUM4Hd95zUhflULWR2fD4OTdJ9PZM9UwER26 T+8NZypOe+CQv70YydP8yGzXFTck0bpypfA9iKSNu0l0JedZ1DsRwK6ZYb6JmznR 1kr0L2/wd9DMCLb5K9GytmzFbrTh70zIRspsFnNl9wXg3mPKHrScb4sZhntLVdc4 tShpj1fJNp7TjXH7CwWGi7lX/+4r4Om+Hac6prfmiBTZOsoIBwRUlStAyxSeaq+w BYArxr0dDsDUou3kmXhc1VsohVJfhwg/QloytZkAw== X-ME-Sender: Received: from april.local (c-73-13-66-39.hsd1.pa.comcast.net [73.13.66.39]) by mail.messagingengine.com (Postfix) with ESMTPA id DA5F310268; Thu, 26 Apr 2018 15:30:44 -0400 (EDT) Subject: Re: Transform for pl/perl To: Andrew Dunstan , =?UTF-8?Q?Dagfinn_Ilmari_Manns=c3=a5ker?= , Tom Lane References: <20171127132439.23dc26ef@anthony-24-g082ur> <20180112114739.6a9f0d4c@anthony-24-g082ur> <20180131103621.GA19345@zakirov.localdomain> <20180215125313.290468ae@anthony-24-g082ur> <20180312110821.29c80420@anthony-24-g082ur> <505345c5-0159-077d-f64e-60afb01e5fbe@postgrespro.ru> <26a0840a-6b09-44fc-9e4e-8200c1887882@2ndquadrant.com> <15075.1523287460@sss.pgh.pa.us> <17423.1523368349@sss.pgh.pa.us> <5d7b91e8-ea88-6811-e215-e7ea1013dca9@2ndquadrant.com> <84fba634-71ba-4482-7e1b-5877bff5c6cb@2ndQuadrant.com> Cc: Pavel Stehule , Nikita Glukhov , PostgreSQL Hackers From: Peter Eisentraut Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= xsFNBFUUt6kBEADZd9NNTBJbHmAXXJgPGOdd6Q73l80oifIVgn2tRxP9dYkCfTlo/yLqbKTl JNqTcyM6XrJDnB2sMEUGYCewYZXl+9C4bBJWyNqcEI1ae9u71vEq/fknFLArJ+2wN+f7QuRx Q8d94ZJAiJQ5g3fNk2HVeedCQCKP5dCzU+ZLt2dbsx1PDZLjTO9gf+JswWuGFb5wY5PZVM5V hq66Xk7ZJzHuARacza2RT7J2fkMmQBY+kr7L98Perb0GhafnlhXB0PvUB+N3xpmggMfwuhTu BngS/G/r3GvemxJuFxouw8xsMqrsfdksJXA2gLXYtwRCssdPV3PO0rlD9twqDo8URfIJ5fb6 1g/MV8aTOKjg3Q8MpJPtkwJqN4o3PvbwYdedeFnOVkkYAJdu/aX1v1BeCBDu7Hy3sF52scD3 pQbyQSl9vUDpTLarASAxNbAV0NRJE8dp4vfW6AH1ccryGiFqw/czPK/iN0+MT8wsjAW6WW4w hvjm5UPA1KTwi3ZT8eT5uycuH7QpuNk7LnGGXQ6KaRALFywzkr0A0V0AvFNa+l4wstMaXaB6 dmMXyF0/hfryqyOeu1gAdq4q0/PNC2dPgb/6uoh4eMjN6A5GXcprilhz5DulmsilY21hfSoU S64ODed96pKhprsOxjZiDRsN1QM5MwB+uwVWUNfsX7fIxE0BrwARAQABzSdQZXRlciBFaXNl bnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz7CwXoEEwEIACQCGwMFCwkIBwMFFQoJCAsF FgIDAQACHgECF4AFAlUUuKQCGQEACgkQoZ8SQ+xBJp8llw//RbGoXnF72FZTlOFsnNyxnWbF vViPCfdAlZl1GGK9OYCvV1dp/956HuhB0wpaGQHiBmQfOPJf/jLOPjXFYm2iEChEycrBChuE j4TSYemMp5BSPILYk9Uwd16kVD/+U6fQfK6H5pOhfBvbM6asMnmpY2wQuvktxHvaGlytFw84 EzFWNZtAZfxkw28w3AhIQkKe9hJanfyDL750RcbyEr8AAHty5IErrvS7tM5vQwIeh5BF26ND CyKPRdZgOgMpcwFfROKBDpAt052CgWIpNdhBdfIKlkCs4/ILxmC3rT/Mb/qZiHcoMMwEu6k+ T7vRAFZZAk62Yrr/U8/vUGKlzRZQoo86fyojCfI0ibCIc0z8rwCVY9P40G9wD9BTCZS/z8Vh jjpBlNnIKw2hM6hbxavKndCJjFFJD08rXrTyrLF/of18xD37vNdYooP9VATB5QjOWFRrscSZ 4a89e+to3m7YVnd4xdXwGp47dYusoax84C8tg1gZrH38ol9dPmnKX6GZrXeS7tH9k8VeUpJ8 HQbRThQRWAT936QpYbLConBmOtmbLmjQOGtiXPo1oK57X/7U/WBja5vWmm2q+Yxtt+3uHGVg DdDU4CJpXo4lX0v2n3QV5EBSW9hjdF3bNfl6GFBb1pPEhqNcMDUc7zkx/2uENdAdk/BnqMgH umip7b0pVfvOwU0EVRS3qQEQAJf6p0P7D+hMYUgCPkvgrcz6OJYsAYdUMUmokfqmkKwK0oJM ew8TNGM53ocKAgQGma5f10rwbZNPlpVPNRX5hwUmwVlcwSut0oE+JfUBH7mpysWvpF05RKIy q9RCoJZrAbXS7Tig56A1QD8IcM00rERZMcCOlI1+q9m4u9AOI+0LyGGSH+VvoyDHD/Jew4R2 TmPEF8Pu7lYiNYK88Q6u0kBkc+Tz3BNlyc6fi3HxnFfp0b75HLXPSTu2SwA/0Q31wHZXwrEU BR9KgSn/qbgy8ydPc97i82fhiFE3cbGexfPrQSMYmDGi+dcQ0s+AMQwC3XyMC0JkHpYUuFkR QdlIvaIhgFUUN2Vr4xF2ADaNTNFc4DYaiPHFAgHZw+3pZWqS4uIiWgJynrEaHw4F3QWU8/JB iyEWDhNq4WBrRA0u914TCCAoFOOKMnRdl8eJrRQKM/5/lXbHFjjlI/LDKhLRFsuQsnJJ3331 RjCzpHPZG5/p5KR1RHiAXa0p/DW5lXyq21hS3kjDlleoHqOxCN/cy0Jgz7qLDq1vZoCl67Sy RAH60c2Xu4may9SVltmot0OzWVHdrfS+85FQGp9580DaeLio7YMFKy2bfEvwQJ/c9xD2QPB+ oSb3V8ueSznXBG5+dyfOsZFRPxceA0wA2rSWZSjxLdKxvyGTj9vsCjaDu13rABEBAAHCwV8E GAEIAAkFAlUUt6kCGwwACgkQoZ8SQ+xBJp+HJhAAxmSTsC5y7p9Zu+nnLpucv/h88oEx985e qWeXzQiwM3pfRZS+PdTH9TyzHK0KOgKoAiubk0vt+BrT91D9d0G5kVQaTctAErGBoMkTaZJT XVEcNphiPzysdSqvprjojMp1y7rG8AP+Xd6m0rE1LRnkRRm8HyI8vdXsuLQPITGWXDLMjaNq AOV3BUnzkgtjMuIYw7SCr+12ZOb5dEKvaG4kjC4kaJ/TLbuBhVANcXkC90yp0AOZLs/cB1Dj OAXno/RUUruJ3r27a+pFv768UAi9QWcdw58yPxreMNMLqAgsS9oTHwHfGNWcB2dJ4UW+GMLJ hTf9TjQ2f+N/sIx5XMQ9pYw6CAJMK29qPx6/ZayrPxf22EXf0D3zTwIEZgwfSkynFVwV25L7 awQq60fifdMYheSxq7GbhpsixmcD+e161cCmLIt75YDt5bQ0B1yf7EmxG8n7pGZAOM6LoNsU fkSldba5XVwh8LuN5mK0nQBELGW6Os4TDq4REggLpfcvFC215zpuo0iCGnmE/Bns4nowqUSP u4tkWL+nxW4qgv8wo8HJ52jd79EJ8iqfIBoidBfy9AIUiEUApGQzWPu6yWcI8fY0rN5D+tc+ Yw1Zt6Mm+huYJpgCRsTcfzEcahnBn521CWcWvhW1ff3KFileFMtNmnBBhMncmRKHphtTKEpN 3jI= Organization: 2ndQuadrant Message-ID: Date: Thu, 26 Apr 2018 15:30:44 -0400 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <84fba634-71ba-4482-7e1b-5877bff5c6cb@2ndQuadrant.com> Content-Type: multipart/mixed; boundary="------------739B8DFEDFD746E6BFD5BF65" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------739B8DFEDFD746E6BFD5BF65 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 4/24/18 14:31, Andrew Dunstan wrote: > There is the routine IsValidJsonNumber that helps - see among others > hstore_io.c for an example use. I would need something like that taking a double/float8 input. But I think there is no such shortcut available, so I just wrote out the tests for isinf and isnan explicitly. Attached patch should fix it. jsonb_plpython will need a similar fix. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------739B8DFEDFD746E6BFD5BF65 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Prevent-infinity-and-NaN-in-jsonb-plperl-transform.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Prevent-infinity-and-NaN-in-jsonb-plperl-transform.patc"; filename*1="h" RnJvbSBlYzg1MjkzNDgwMDhlNTg4MjY0NDJlNDM4MDk3NzJjMTlkMDJhMDY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlcl9lQGdteC5u ZXQ+CkRhdGU6IFRodSwgMjYgQXByIDIwMTggMTU6MjA6NDMgLTA0MDAKU3ViamVjdDogW1BB VENIXSBQcmV2ZW50IGluZmluaXR5IGFuZCBOYU4gaW4ganNvbmIvcGxwZXJsIHRyYW5zZm9y bQoKanNvbmIgdXNlcyBudW1lcmljIGludGVybmFsbHksIGFuZCBudW1lcmljIGNhbiBzdG9y ZSBOYU4sIGJ1dCB0aGF0IGlzCm5vdCBhbGxvd2VkIGJ5IGpzb25iIG9uIGlucHV0LCBzbyB3 ZSBzaG91bGRuJ3Qgc3RvcmUgaXQuICBBbHNvIHByZXZlbnQKaW5maW5pdHkgdG8gZ2V0IGEg Y29uc2lzdGVudCBlcnJvciBtZXNzYWdlLiAgKG51bWVyaWMgaW5wdXQgd291bGQgcmVqZWN0 CmluZmluaXR5IGFueXdheS4pCi0tLQogLi4uL2pzb25iX3BscGVybC9leHBlY3RlZC9qc29u Yl9wbHBlcmwub3V0ICAgIHwgMjQgKysrKysrKysrKysrKysrKystLQogLi4uL2pzb25iX3Bs cGVybC9leHBlY3RlZC9qc29uYl9wbHBlcmx1Lm91dCAgIHwgMjQgKysrKysrKysrKysrKysr KystLQogY29udHJpYi9qc29uYl9wbHBlcmwvanNvbmJfcGxwZXJsLmMgICAgICAgICAgIHwg MTYgKysrKysrKysrKystLQogY29udHJpYi9qc29uYl9wbHBlcmwvc3FsL2pzb25iX3BscGVy bC5zcWwgICAgIHwgMjMgKysrKysrKysrKysrKysrKystCiBjb250cmliL2pzb25iX3BscGVy bC9zcWwvanNvbmJfcGxwZXJsdS5zcWwgICAgfCAyMiArKysrKysrKysrKysrKysrKwogNSBm aWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9jb250cmliL2pzb25iX3BscGVybC9leHBlY3RlZC9qc29uYl9wbHBlcmwub3V0 IGIvY29udHJpYi9qc29uYl9wbHBlcmwvZXhwZWN0ZWQvanNvbmJfcGxwZXJsLm91dAppbmRl eCA5OWEyZThlMTM1Li5kNmMzYmVjZjYzIDEwMDY0NAotLS0gYS9jb250cmliL2pzb25iX3Bs cGVybC9leHBlY3RlZC9qc29uYl9wbHBlcmwub3V0CisrKyBiL2NvbnRyaWIvanNvbmJfcGxw ZXJsL2V4cGVjdGVkL2pzb25iX3BscGVybC5vdXQKQEAgLTM5LDYgKzM5LDI2IEBAIFNFTEVD VCB0ZXN0U1ZUb0pzb25iKCk7CiAgMQogKDEgcm93KQogCitDUkVBVEUgRlVOQ1RJT04gdGVz dEluZigpIFJFVFVSTlMganNvbmIKK0xBTkdVQUdFIHBscGVybAorVFJBTlNGT1JNIEZPUiBU WVBFIGpzb25iCitBUyAkJAorJHZhbCA9IDAgKyAnSW5mJzsKK3JldHVybiAkdmFsOworJCQ7 CitTRUxFQ1QgdGVzdEluZigpOworRVJST1I6ICBjYW5ub3QgY29udmVydCBpbmZpbml0eSB0 byBqc29uYgorQ09OVEVYVDogIFBML1BlcmwgZnVuY3Rpb24gInRlc3RpbmYiCitDUkVBVEUg RlVOQ1RJT04gdGVzdE5hTigpIFJFVFVSTlMganNvbmIKK0xBTkdVQUdFIHBscGVybAorVFJB TlNGT1JNIEZPUiBUWVBFIGpzb25iCitBUyAkJAorJHZhbCA9IDAgKyAnTmFOJzsKK3JldHVy biAkdmFsOworJCQ7CitTRUxFQ1QgdGVzdE5hTigpOworRVJST1I6ICBjYW5ub3QgY29udmVy dCBOYU4gdG8ganNvbmIKK0NPTlRFWFQ6ICBQTC9QZXJsIGZ1bmN0aW9uICJ0ZXN0bmFuIgog LS0gdGhpcyByZXZlYWxlZCBhIGJ1ZyBpbiB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24K IENSRUFURSBGVU5DVElPTiB0ZXN0UmVnZXhwUmVzdWx0VG9Kc29uYigpIFJFVFVSTlMganNv bmIKIExBTkdVQUdFIHBscGVybApAQCAtNzEsNyArOTEsNyBAQCBTRUxFQ1Qgcm91bmR0cmlw KCcxJyk7CiAoMSByb3cpCiAKIFNFTEVDVCByb3VuZHRyaXAoJzFFKzEzMTA3MScpOwotRVJS T1I6ICBjYW5ub3QgY29udmVydCBpbmZpbml0ZSB2YWx1ZSB0byBqc29uYgorRVJST1I6ICBj YW5ub3QgY29udmVydCBpbmZpbml0eSB0byBqc29uYgogQ09OVEVYVDogIFBML1BlcmwgZnVu Y3Rpb24gInJvdW5kdHJpcCIKIFNFTEVDVCByb3VuZHRyaXAoJy0xJyk7CiAgcm91bmR0cmlw IApAQCAtMjA3LDQgKzIyNyw0IEBAIFNFTEVDVCByb3VuZHRyaXAoJ3siMSI6IHsiMiI6IFsz LCA0LCA1XX0sICIyIjogM30nKTsKIAogXHNldCBWRVJCT1NJVFkgdGVyc2UgXFwgLS0gc3Vw cHJlc3MgY2FzY2FkZSBkZXRhaWxzCiBEUk9QIEVYVEVOU0lPTiBwbHBlcmwgQ0FTQ0FERTsK LU5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gNiBvdGhlciBvYmplY3RzCitOT1RJQ0U6ICBk cm9wIGNhc2NhZGVzIHRvIDggb3RoZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvY29udHJpYi9q c29uYl9wbHBlcmwvZXhwZWN0ZWQvanNvbmJfcGxwZXJsdS5vdXQgYi9jb250cmliL2pzb25i X3BscGVybC9leHBlY3RlZC9qc29uYl9wbHBlcmx1Lm91dAppbmRleCA4MDUzY2Y2YWE4Li42 NWVkMjFmM2IyIDEwMDY0NAotLS0gYS9jb250cmliL2pzb25iX3BscGVybC9leHBlY3RlZC9q c29uYl9wbHBlcmx1Lm91dAorKysgYi9jb250cmliL2pzb25iX3BscGVybC9leHBlY3RlZC9q c29uYl9wbHBlcmx1Lm91dApAQCAtMzksNiArMzksMjYgQEAgU0VMRUNUIHRlc3RTVlRvSnNv bmIoKTsKICAxCiAoMSByb3cpCiAKK0NSRUFURSBGVU5DVElPTiB0ZXN0SW5mKCkgUkVUVVJO UyBqc29uYgorTEFOR1VBR0UgcGxwZXJsdQorVFJBTlNGT1JNIEZPUiBUWVBFIGpzb25iCitB UyAkJAorJHZhbCA9IDAgKyAnSW5mJzsKK3JldHVybiAkdmFsOworJCQ7CitTRUxFQ1QgdGVz dEluZigpOworRVJST1I6ICBjYW5ub3QgY29udmVydCBpbmZpbml0eSB0byBqc29uYgorQ09O VEVYVDogIFBML1BlcmwgZnVuY3Rpb24gInRlc3RpbmYiCitDUkVBVEUgRlVOQ1RJT04gdGVz dE5hTigpIFJFVFVSTlMganNvbmIKK0xBTkdVQUdFIHBscGVybHUKK1RSQU5TRk9STSBGT1Ig VFlQRSBqc29uYgorQVMgJCQKKyR2YWwgPSAwICsgJ05hTic7CityZXR1cm4gJHZhbDsKKyQk OworU0VMRUNUIHRlc3ROYU4oKTsKK0VSUk9SOiAgY2Fubm90IGNvbnZlcnQgTmFOIHRvIGpz b25iCitDT05URVhUOiAgUEwvUGVybCBmdW5jdGlvbiAidGVzdG5hbiIKIC0tIHRoaXMgcmV2 ZWFsZWQgYSBidWcgaW4gdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uCiBDUkVBVEUgRlVO Q1RJT04gdGVzdFJlZ2V4cFJlc3VsdFRvSnNvbmIoKSBSRVRVUk5TIGpzb25iCiBMQU5HVUFH RSBwbHBlcmx1CkBAIC03MSw3ICs5MSw3IEBAIFNFTEVDVCByb3VuZHRyaXAoJzEnKTsKICgx IHJvdykKIAogU0VMRUNUIHJvdW5kdHJpcCgnMUUrMTMxMDcxJyk7Ci1FUlJPUjogIGNhbm5v dCBjb252ZXJ0IGluZmluaXRlIHZhbHVlIHRvIGpzb25iCitFUlJPUjogIGNhbm5vdCBjb252 ZXJ0IGluZmluaXR5IHRvIGpzb25iCiBDT05URVhUOiAgUEwvUGVybCBmdW5jdGlvbiAicm91 bmR0cmlwIgogU0VMRUNUIHJvdW5kdHJpcCgnLTEnKTsKICByb3VuZHRyaXAgCkBAIC0yMDcs NCArMjI3LDQgQEAgU0VMRUNUIHJvdW5kdHJpcCgneyIxIjogeyIyIjogWzMsIDQsIDVdfSwg IjIiOiAzfScpOwogCiBcc2V0IFZFUkJPU0lUWSB0ZXJzZSBcXCAtLSBzdXBwcmVzcyBjYXNj YWRlIGRldGFpbHMKIERST1AgRVhURU5TSU9OIHBscGVybHUgQ0FTQ0FERTsKLU5PVElDRTog IGRyb3AgY2FzY2FkZXMgdG8gNiBvdGhlciBvYmplY3RzCitOT1RJQ0U6ICBkcm9wIGNhc2Nh ZGVzIHRvIDggb3RoZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvY29udHJpYi9qc29uYl9wbHBl cmwvanNvbmJfcGxwZXJsLmMgYi9jb250cmliL2pzb25iX3BscGVybC9qc29uYl9wbHBlcmwu YwppbmRleCA4MzdiYWUyYWI1Li4zZjk4MDJjNjk2IDEwMDY0NAotLS0gYS9jb250cmliL2pz b25iX3BscGVybC9qc29uYl9wbHBlcmwuYworKysgYi9jb250cmliL2pzb25iX3BscGVybC9q c29uYl9wbHBlcmwuYwpAQCAtMjA5LDEwICsyMDksMjIgQEAgU1ZfdG9fSnNvbmJWYWx1ZShT ViAqaW4sIEpzb25iUGFyc2VTdGF0ZSAqKmpzb25iX3N0YXRlLCBib29sIGlzX2VsZW0pCiAJ CQl7CiAJCQkJZG91YmxlCQludmFsID0gU3ZOVihpbik7CiAKKwkJCQkvKgorCQkJCSAqIGpz b25iIGRvZXNuJ3QgYWxsb3cgaW5maW5pdHkgb3IgTmFOIChwZXIgSlNPTgorCQkJCSAqIHNw ZWNpZmljYXRpb24pLCBidXQgdGhlIG51bWVyaWMgdHlwZSB0aGF0IGlzIHVzZWQgZm9yIHRo ZQorCQkJCSAqIHN0b3JhZ2UgYWNjZXB0cyBOYU4sIHNvIHdlIGhhdmUgdG8gcHJldmVudCBp dCBoZXJlCisJCQkJICogZXhwbGljaXRseS4gIFdlIGRvbid0IHJlYWxseSBoYXZlIHRvIGNo ZWNrIGZvciBpc2luZigpCisJCQkJICogaGVyZSwgYXMgbnVtZXJpYyBkb2Vzbid0IGFsbG93 IGl0IGFuZCBpdCB3b3VsZCBiZSBjYXVnaHQKKwkJCQkgKiBsYXRlciwgYnV0IGl0IG1ha2Vz IGZvciBhIG5pY2VyIGVycm9yIG1lc3NhZ2UuCisJCQkJICovCiAJCQkJaWYgKGlzaW5mKG52 YWwpKQogCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJCQkgKGVycm1zZygiY2Fubm90IGNvbnZlcnQg aW5maW5pdGUgdmFsdWUgdG8ganNvbmIiKSkpKTsKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RF X05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJCQkJCQkgKGVycm1zZygiY2Fubm90 IGNvbnZlcnQgaW5maW5pdHkgdG8ganNvbmIiKSkpKTsKKwkJCQlpZiAoaXNuYW4obnZhbCkp CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklD X1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJCQkJIChlcnJtc2coImNhbm5vdCBjb252ZXJ0 IE5hTiB0byBqc29uYiIpKSkpOwogCiAJCQkJb3V0LnR5cGUgPSBqYnZOdW1lcmljOwogCQkJ CW91dC52YWwubnVtZXJpYyA9CmRpZmYgLS1naXQgYS9jb250cmliL2pzb25iX3BscGVybC9z cWwvanNvbmJfcGxwZXJsLnNxbCBiL2NvbnRyaWIvanNvbmJfcGxwZXJsL3NxbC9qc29uYl9w bHBlcmwuc3FsCmluZGV4IDhiMGE4NzY0YWYuLmI1NDM1NzllYWIgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvanNvbmJfcGxwZXJsL3NxbC9qc29uYl9wbHBlcmwuc3FsCisrKyBiL2NvbnRyaWIv anNvbmJfcGxwZXJsL3NxbC9qc29uYl9wbHBlcmwuc3FsCkBAIC0zNCw2ICszNCwyOCBAQCBD UkVBVEUgRlVOQ1RJT04gdGVzdFNWVG9Kc29uYigpIFJFVFVSTlMganNvbmIKIFNFTEVDVCB0 ZXN0U1ZUb0pzb25iKCk7CiAKIAorQ1JFQVRFIEZVTkNUSU9OIHRlc3RJbmYoKSBSRVRVUk5T IGpzb25iCitMQU5HVUFHRSBwbHBlcmwKK1RSQU5TRk9STSBGT1IgVFlQRSBqc29uYgorQVMg JCQKKyR2YWwgPSAwICsgJ0luZic7CityZXR1cm4gJHZhbDsKKyQkOworCitTRUxFQ1QgdGVz dEluZigpOworCisKK0NSRUFURSBGVU5DVElPTiB0ZXN0TmFOKCkgUkVUVVJOUyBqc29uYgor TEFOR1VBR0UgcGxwZXJsCitUUkFOU0ZPUk0gRk9SIFRZUEUganNvbmIKK0FTICQkCiskdmFs ID0gMCArICdOYU4nOworcmV0dXJuICR2YWw7CiskJDsKKworU0VMRUNUIHRlc3ROYU4oKTsK KworCiAtLSB0aGlzIHJldmVhbGVkIGEgYnVnIGluIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRh dGlvbgogQ1JFQVRFIEZVTkNUSU9OIHRlc3RSZWdleHBSZXN1bHRUb0pzb25iKCkgUkVUVVJO UyBqc29uYgogTEFOR1VBR0UgcGxwZXJsCkBAIC04Myw2ICsxMDUsNSBAQCBDUkVBVEUgRlVO Q1RJT04gcm91bmR0cmlwKHZhbCBqc29uYikgUkVUVVJOUyBqc29uYgogCiBTRUxFQ1Qgcm91 bmR0cmlwKCd7IjEiOiB7IjIiOiBbMywgNCwgNV19LCAiMiI6IDN9Jyk7CiAKLQogXHNldCBW RVJCT1NJVFkgdGVyc2UgXFwgLS0gc3VwcHJlc3MgY2FzY2FkZSBkZXRhaWxzCiBEUk9QIEVY VEVOU0lPTiBwbHBlcmwgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvanNvbmJfcGxw ZXJsL3NxbC9qc29uYl9wbHBlcmx1LnNxbCBiL2NvbnRyaWIvanNvbmJfcGxwZXJsL3NxbC9q c29uYl9wbHBlcmx1LnNxbAppbmRleCA5Mjg3Zjc2NzJmLi45YzBjMDgzYzk5IDEwMDY0NAot LS0gYS9jb250cmliL2pzb25iX3BscGVybC9zcWwvanNvbmJfcGxwZXJsdS5zcWwKKysrIGIv Y29udHJpYi9qc29uYl9wbHBlcmwvc3FsL2pzb25iX3BscGVybHUuc3FsCkBAIC0zNCw2ICsz NCwyOCBAQCBDUkVBVEUgRlVOQ1RJT04gdGVzdFNWVG9Kc29uYigpIFJFVFVSTlMganNvbmIK IFNFTEVDVCB0ZXN0U1ZUb0pzb25iKCk7CiAKIAorQ1JFQVRFIEZVTkNUSU9OIHRlc3RJbmYo KSBSRVRVUk5TIGpzb25iCitMQU5HVUFHRSBwbHBlcmx1CitUUkFOU0ZPUk0gRk9SIFRZUEUg anNvbmIKK0FTICQkCiskdmFsID0gMCArICdJbmYnOworcmV0dXJuICR2YWw7CiskJDsKKwor U0VMRUNUIHRlc3RJbmYoKTsKKworCitDUkVBVEUgRlVOQ1RJT04gdGVzdE5hTigpIFJFVFVS TlMganNvbmIKK0xBTkdVQUdFIHBscGVybHUKK1RSQU5TRk9STSBGT1IgVFlQRSBqc29uYgor QVMgJCQKKyR2YWwgPSAwICsgJ05hTic7CityZXR1cm4gJHZhbDsKKyQkOworCitTRUxFQ1Qg dGVzdE5hTigpOworCisKIC0tIHRoaXMgcmV2ZWFsZWQgYSBidWcgaW4gdGhlIG9yaWdpbmFs IGltcGxlbWVudGF0aW9uCiBDUkVBVEUgRlVOQ1RJT04gdGVzdFJlZ2V4cFJlc3VsdFRvSnNv bmIoKSBSRVRVUk5TIGpzb25iCiBMQU5HVUFHRSBwbHBlcmx1CgpiYXNlLWNvbW1pdDogZGQ0 Y2M5ZDcwNjljMDRkMGVlOGFlMDQwNTExMjc0YzZlNzFiNjBmNwotLSAKMi4xNy4wCgo= --------------739B8DFEDFD746E6BFD5BF65--