Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UAXXx-0005of-Pe for pgsql-docs@arkaria.postgresql.org; Wed, 27 Feb 2013 03:19:10 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.72) (envelope-from ) id 1UAXXw-0000Sh-Ta for pgsql-docs@arkaria.postgresql.org; Wed, 27 Feb 2013 03:19:08 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UAXXu-0000S7-1d for pgsql-docs@postgresql.org; Wed, 27 Feb 2013 03:19:06 +0000 Received: from mail-ve0-f172.google.com ([209.85.128.172]) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UAXXr-0002Lp-Oq for pgsql-docs@postgresql.org; Wed, 27 Feb 2013 03:19:05 +0000 Received: by mail-ve0-f172.google.com with SMTP id cz11so88970veb.31 for ; Tue, 26 Feb 2013 19:19:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:mime-version:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=3ULQXijeKxXM1IY0aWaXPB3vf1nN7clGVX0wtuB3UOk=; b=bv2vwxZqTcGE56NbK43QXqgAUx1rtk5V8tcMjMWfBB1NJzFQOZk7TaCunwm9HXPp8G B12TsBm/NP1LB0oLAgr/QFlfz/ie/szvD8pZaGCcH3ATax9Zm7URqtmxYSnODlxhV2kd sWkxX5m20KHNRcWHieNPlZcgvDkg1XmpZz80SJN3j34vQ810nx4y8CJ3C+Tpn3MOYbrE FyjqBh8EUZ7B+3hGlbYb2xzQnl2q+ihAoleehHCrzLv4flLHv5t/nx6/XlQt5QUTqgJ6 CzL8ZrkEvaVwO2T2uASHJ8sqWW4KpbR2Db/0oyvz+7U8qjXJ2VWP9oatnO3PWQSnKpZF 0aFQ== X-Received: by 10.52.76.164 with SMTP id l4mr203567vdw.122.1361935142396; Tue, 26 Feb 2013 19:19:02 -0800 (PST) MIME-Version: 1.0 Received: by 10.58.85.41 with HTTP; Tue, 26 Feb 2013 19:18:40 -0800 (PST) In-Reply-To: <1360895431.20348.4.camel@vanquo.pezone.net> References: <1360895431.20348.4.camel@vanquo.pezone.net> From: Josh Kupershmidt Date: Tue, 26 Feb 2013 20:18:40 -0700 Message-ID: Subject: Re: old testlo example code To: Peter Eisentraut Cc: Magnus Hagander , pgsql-docs Content-Type: multipart/mixed; boundary=bcaec50166d35f0b6b04d6ac3c26 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-docs Precedence: bulk Sender: pgsql-docs-owner@postgresql.org --bcaec50166d35f0b6b04d6ac3c26 Content-Type: text/plain; charset=ISO-8859-1 On Thu, Feb 14, 2013 at 7:30 PM, Peter Eisentraut wrote: > On Sat, 2013-01-05 at 15:14 +0100, Magnus Hagander wrote: >> ISTM we should either remove the example programs and replace them >> with just a reference, or find a way to include the source code into >> the documentation with some kind of include statement instead of >> haivng a copy of it. That should be done the same way for all the >> example programs, not just the testlo ones of course. >> >> Not sure if it's possible to create such an include though - someone >> who knows our toolchain better can hopefully comment on that? > > I've been looking into this. It's not easily possible with the current > SGML setup. (XInclude with XML would probably work.) So for now it > would be best if someone could just sync up the docs with the code until > we figure out a better way. OK, here's a patch to update the example code in the docs to match the example programs in ./src/test/examples . In addition to the testlo example discussed, I updated the libpq examples as well. There's a fair amount of whitespace churn in the diff, though I assume that's from a pgindent change of the test code at some point. Josh --bcaec50166d35f0b6b04d6ac3c26 Content-Type: application/octet-stream; name="example_code_in_documentation.diff" Content-Disposition: attachment; filename="example_code_in_documentation.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hdnluxuy0 KioqIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKLS0tIGIvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwKKioqKioqKioqKioqKioqCioqKiA3ODQwLDc5NzEg KioqKiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICA8IVtDREFUQVsK ICAvKgogICAqIHRlc3RsaWJwcTIuYwohICAqICAgICAgVGVzdCBvZiB0aGUg YXN5bmNocm9ub3VzIG5vdGlmaWNhdGlvbiBpbnRlcmZhY2UKICAgKgogICAq IFN0YXJ0IHRoaXMgcHJvZ3JhbSwgdGhlbiBmcm9tIHBzcWwgaW4gYW5vdGhl ciB3aW5kb3cgZG8KISAgKiAgIE5PVElGWSBUQkwyOwogICAqIFJlcGVhdCBm b3VyIHRpbWVzIHRvIGdldCB0aGlzIHByb2dyYW0gdG8gZXhpdC4KICAgKgog ICAqIE9yLCBpZiB5b3Ugd2FudCB0byBnZXQgZmFuY3ksIHRyeSB0aGlzOgog ICAqIHBvcHVsYXRlIGEgZGF0YWJhc2Ugd2l0aCB0aGUgZm9sbG93aW5nIGNv bW1hbmRzCiAgICogKHByb3ZpZGVkIGluIHNyYy90ZXN0L2V4YW1wbGVzL3Rl c3RsaWJwcTIuc3FsKToKICAgKgohICAqICAgQ1JFQVRFIFRBQkxFIFRCTDEg KGkgaW50NCk7CiAgICoKISAgKiAgIENSRUFURSBUQUJMRSBUQkwyIChpIGlu dDQpOwogICAqCiEgICogICBDUkVBVEUgUlVMRSByMSBBUyBPTiBJTlNFUlQg VE8gVEJMMSBETwohICAqICAgICAoSU5TRVJUIElOVE8gVEJMMiBWQUxVRVMg KG5ldy5pKTsgTk9USUZZIFRCTDIpOwogICAqCiAgICogYW5kIGRvIHRoaXMg Zm91ciB0aW1lczoKICAgKgohICAqICAgSU5TRVJUIElOVE8gVEJMMSBWQUxV RVMgKDEwKTsKICAgKi8KICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVk ZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRl IDxlcnJuby5oPgogICNpbmNsdWRlIDxzeXMvdGltZS5oPgohICNpbmNsdWRl IDxsaWJwcS1mZS5oPgogIAogIHN0YXRpYyB2b2lkCiAgZXhpdF9uaWNlbHko UEdjb25uICpjb25uKQogIHsKISAgICAgUFFmaW5pc2goY29ubik7CiEgICAg IGV4aXQoMSk7CiAgfQogIAogIGludAogIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogIHsKISAgICAgY29uc3QgY2hhciAqY29ubmluZm87CiEgICAg IFBHY29ubiAgICAgKmNvbm47CiEgICAgIFBHcmVzdWx0ICAgKnJlczsKISAg ICAgUEdub3RpZnkgICAqbm90aWZ5OwohICAgICBpbnQgICAgICAgICBubm90 aWZpZXM7CiEgCiEgICAgIC8qCiEgICAgICAqIElmIHRoZSB1c2VyIHN1cHBs aWVzIGEgcGFyYW1ldGVyIG9uIHRoZSBjb21tYW5kIGxpbmUsIHVzZSBpdCBh cyB0aGUKISAgICAgICogY29ubmluZm8gc3RyaW5nOyBvdGhlcndpc2UgZGVm YXVsdCB0byBzZXR0aW5nIGRibmFtZT1wb3N0Z3JlcyBhbmQgdXNpbmcKISAg ICAgICogZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIGRlZmF1bHRzIGZvciBh bGwgb3RoZXIgY29ubmVjdGlvbiBwYXJhbWV0ZXJzLgohICAgICAgKi8KISAg ICAgaWYgKGFyZ2MgPiAxKQohICAgICAgICAgY29ubmluZm8gPSBhcmd2WzFd OwohICAgICBlbHNlCiEgICAgICAgICBjb25uaW5mbyA9ICJkYm5hbWUgPSBw b3N0Z3JlcyI7CiEgCiEgICAgIC8qIE1ha2UgYSBjb25uZWN0aW9uIHRvIHRo ZSBkYXRhYmFzZSAqLwohICAgICBjb25uID0gUFFjb25uZWN0ZGIoY29ubmlu Zm8pOwohIAohICAgICAvKiBDaGVjayB0byBzZWUgdGhhdCB0aGUgYmFja2Vu ZCBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgbWFkZSAqLwohICAgICBp ZiAoUFFzdGF0dXMoY29ubikgIT0gQ09OTkVDVElPTl9PSykKISAgICAgewoh ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb25uZWN0aW9uIHRvIGRhdGFi YXNlIGZhaWxlZDogJXMiLAohICAgICAgICAgICAgICAgICBQUWVycm9yTWVz c2FnZShjb25uKSk7CiEgICAgICAgICBleGl0X25pY2VseShjb25uKTsKISAg ICAgfQohIAohICAgICAvKgohICAgICAgKiBJc3N1ZSBMSVNURU4gY29tbWFu ZCB0byBlbmFibGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoZSBydWxlJ3MgTk9U SUZZLgohICAgICAgKi8KISAgICAgcmVzID0gUFFleGVjKGNvbm4sICJMSVNU RU4gVEJMMiIpOwohICAgICBpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQ R1JFU19DT01NQU5EX09LKQohICAgICB7CiEgICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIkxJU1RFTiBjb21tYW5kIGZhaWxlZDogJXMiLCBQUWVycm9yTWVz c2FnZShjb25uKSk7CiEgICAgICAgICBQUWNsZWFyKHJlcyk7CiEgICAgICAg ICBleGl0X25pY2VseShjb25uKTsKISAgICAgfQohIAohICAgICAvKgohICAg ICAgKiBzaG91bGQgUFFjbGVhciBQR3Jlc3VsdCB3aGVuZXZlciBpdCBpcyBu byBsb25nZXIgbmVlZGVkIHRvIGF2b2lkIG1lbW9yeQohICAgICAgKiBsZWFr cwohICAgICAgKi8KISAgICAgUFFjbGVhcihyZXMpOwohIAohICAgICAvKiBR dWl0IGFmdGVyIGZvdXIgbm90aWZpZXMgYXJlIHJlY2VpdmVkLiAqLwohICAg ICBubm90aWZpZXMgPSAwOwohICAgICB3aGlsZSAobm5vdGlmaWVzIDwgNCkK ISAgICAgewohICAgICAgICAgLyoKISAgICAgICAgICAqIFNsZWVwIHVudGls IHNvbWV0aGluZyBoYXBwZW5zIG9uIHRoZSBjb25uZWN0aW9uLiAgV2UgdXNl IHNlbGVjdCgyKQohICAgICAgICAgICogdG8gd2FpdCBmb3IgaW5wdXQsIGJ1 dCB5b3UgY291bGQgYWxzbyB1c2UgcG9sbCgpIG9yIHNpbWlsYXIKISAgICAg ICAgICAqIGZhY2lsaXRpZXMuCiEgICAgICAgICAgKi8KISAgICAgICAgIGlu dCAgICAgICAgIHNvY2s7CiEgICAgICAgICBmZF9zZXQgICAgICBpbnB1dF9t YXNrOwohIAohICAgICAgICAgc29jayA9IFBRc29ja2V0KGNvbm4pOwohIAoh ICAgICAgICAgaWYgKHNvY2sgPCAwKQohICAgICAgICAgICAgIGJyZWFrOyAg ICAgICAgICAgICAgLyogc2hvdWxkbid0IGhhcHBlbiAqLwohIAohICAgICAg ICAgRkRfWkVSTygmaW5wdXRfbWFzayk7CiEgICAgICAgICBGRF9TRVQoc29j aywgJmlucHV0X21hc2spOwohIAohICAgICAgICAgaWYgKHNlbGVjdChzb2Nr ICsgMSwgJmlucHV0X21hc2ssIE5VTEwsIE5VTEwsIE5VTEwpIDwgMCkKISAg ICAgICAgIHsKISAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNlbGVj dCgpIGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CiEgICAgICAg ICAgICAgZXhpdF9uaWNlbHkoY29ubik7CiEgICAgICAgICB9CiEgCiEgICAg ICAgICAvKiBOb3cgY2hlY2sgZm9yIGlucHV0ICovCiEgICAgICAgICBQUWNv bnN1bWVJbnB1dChjb25uKTsKISAgICAgICAgIHdoaWxlICgobm90aWZ5ID0g UFFub3RpZmllcyhjb25uKSkgIT0gTlVMTCkKISAgICAgICAgIHsKISAgICAg ICAgICAgICBmcHJpbnRmKHN0ZGVyciwKISAgICAgICAgICAgICAgICAgICAg ICJBU1lOQyBOT1RJRlkgb2YgJyVzJyByZWNlaXZlZCBmcm9tIGJhY2tlbmQg UElEICVkXG4iLAohICAgICAgICAgICAgICAgICAgICAgbm90aWZ5LT5yZWxu YW1lLCBub3RpZnktPmJlX3BpZCk7CiEgICAgICAgICAgICAgUFFmcmVlbWVt KG5vdGlmeSk7CiEgICAgICAgICAgICAgbm5vdGlmaWVzKys7CiEgICAgICAg ICB9CiEgICAgIH0KISAKISAgICAgZnByaW50ZihzdGRlcnIsICJEb25lLlxu Iik7CiEgCiEgICAgIC8qIGNsb3NlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBk YXRhYmFzZSBhbmQgY2xlYW51cCAqLwohICAgICBQUWZpbmlzaChjb25uKTsK ISAKISAgICAgcmV0dXJuIDA7CiAgfQogIF1dPgogIDwvcHJvZ3JhbWxpc3Rp bmc+Ci0tLSA3ODQwLDc5NzYgLS0tLQogIDwhW0NEQVRBWwogIC8qCiAgICog dGVzdGxpYnBxMi5jCiEgICoJCVRlc3Qgb2YgdGhlIGFzeW5jaHJvbm91cyBu b3RpZmljYXRpb24gaW50ZXJmYWNlCiAgICoKICAgKiBTdGFydCB0aGlzIHBy b2dyYW0sIHRoZW4gZnJvbSBwc3FsIGluIGFub3RoZXIgd2luZG93IGRvCiEg ICoJIE5PVElGWSBUQkwyOwogICAqIFJlcGVhdCBmb3VyIHRpbWVzIHRvIGdl dCB0aGlzIHByb2dyYW0gdG8gZXhpdC4KICAgKgogICAqIE9yLCBpZiB5b3Ug d2FudCB0byBnZXQgZmFuY3ksIHRyeSB0aGlzOgogICAqIHBvcHVsYXRlIGEg ZGF0YWJhc2Ugd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCiAgICogKHBy b3ZpZGVkIGluIHNyYy90ZXN0L2V4YW1wbGVzL3Rlc3RsaWJwcTIuc3FsKToK ICAgKgohICAqCSBDUkVBVEUgVEFCTEUgVEJMMSAoaSBpbnQ0KTsKICAgKgoh ICAqCSBDUkVBVEUgVEFCTEUgVEJMMiAoaSBpbnQ0KTsKICAgKgohICAqCSBD UkVBVEUgUlVMRSByMSBBUyBPTiBJTlNFUlQgVE8gVEJMMSBETwohICAqCSAg IChJTlNFUlQgSU5UTyBUQkwyIFZBTFVFUyAobmV3LmkpOyBOT1RJRlkgVEJM Mik7CiAgICoKICAgKiBhbmQgZG8gdGhpcyBmb3VyIHRpbWVzOgogICAqCiEg ICoJIElOU0VSVCBJTlRPIFRCTDEgVkFMVUVTICgxMCk7CiAgICovCisgCisg I2lmZGVmIFdJTjMyCisgI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyAjZW5kaWYK ICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+CiAg I2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxlcnJuby5oPgogICNp bmNsdWRlIDxzeXMvdGltZS5oPgohICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K ISAjaW5jbHVkZSAibGlicHEtZmUuaCIKICAKICBzdGF0aWMgdm9pZAogIGV4 aXRfbmljZWx5KFBHY29ubiAqY29ubikKICB7CiEgCVBRZmluaXNoKGNvbm4p OwohIAlleGl0KDEpOwogIH0KICAKICBpbnQKICBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKICB7CiEgCWNvbnN0IGNoYXIgKmNvbm5pbmZvOwohIAlQ R2Nvbm4JICAgKmNvbm47CiEgCVBHcmVzdWx0ICAgKnJlczsKISAJUEdub3Rp ZnkgICAqbm90aWZ5OwohIAlpbnQJCQlubm90aWZpZXM7CiEgCiEgCS8qCiEg CSAqIElmIHRoZSB1c2VyIHN1cHBsaWVzIGEgcGFyYW1ldGVyIG9uIHRoZSBj b21tYW5kIGxpbmUsIHVzZSBpdCBhcyB0aGUKISAJICogY29ubmluZm8gc3Ry aW5nOyBvdGhlcndpc2UgZGVmYXVsdCB0byBzZXR0aW5nIGRibmFtZT1wb3N0 Z3JlcyBhbmQgdXNpbmcKISAJICogZW52aXJvbm1lbnQgdmFyaWFibGVzIG9y IGRlZmF1bHRzIGZvciBhbGwgb3RoZXIgY29ubmVjdGlvbiBwYXJhbWV0ZXJz LgohIAkgKi8KISAJaWYgKGFyZ2MgPiAxKQohIAkJY29ubmluZm8gPSBhcmd2 WzFdOwohIAllbHNlCiEgCQljb25uaW5mbyA9ICJkYm5hbWUgPSBwb3N0Z3Jl cyI7CiEgCiEgCS8qIE1ha2UgYSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFz ZSAqLwohIAljb25uID0gUFFjb25uZWN0ZGIoY29ubmluZm8pOwohIAohIAkv KiBDaGVjayB0byBzZWUgdGhhdCB0aGUgYmFja2VuZCBjb25uZWN0aW9uIHdh cyBzdWNjZXNzZnVsbHkgbWFkZSAqLwohIAlpZiAoUFFzdGF0dXMoY29ubikg IT0gQ09OTkVDVElPTl9PSykKISAJewohIAkJZnByaW50ZihzdGRlcnIsICJD b25uZWN0aW9uIHRvIGRhdGFiYXNlIGZhaWxlZDogJXMiLAohIAkJCQlQUWVy cm9yTWVzc2FnZShjb25uKSk7CiEgCQlleGl0X25pY2VseShjb25uKTsKISAJ fQohIAohIAkvKgohIAkgKiBJc3N1ZSBMSVNURU4gY29tbWFuZCB0byBlbmFi bGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoZSBydWxlJ3MgTk9USUZZLgohIAkg Ki8KISAJcmVzID0gUFFleGVjKGNvbm4sICJMSVNURU4gVEJMMiIpOwohIAlp ZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQoh IAl7CiEgCQlmcHJpbnRmKHN0ZGVyciwgIkxJU1RFTiBjb21tYW5kIGZhaWxl ZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiEgCQlQUWNsZWFyKHJl cyk7CiEgCQlleGl0X25pY2VseShjb25uKTsKISAJfQohIAohIAkvKgohIAkg KiBzaG91bGQgUFFjbGVhciBQR3Jlc3VsdCB3aGVuZXZlciBpdCBpcyBubyBs b25nZXIgbmVlZGVkIHRvIGF2b2lkIG1lbW9yeQohIAkgKiBsZWFrcwohIAkg Ki8KISAJUFFjbGVhcihyZXMpOwohIAohIAkvKiBRdWl0IGFmdGVyIGZvdXIg bm90aWZpZXMgYXJlIHJlY2VpdmVkLiAqLwohIAlubm90aWZpZXMgPSAwOwoh IAl3aGlsZSAobm5vdGlmaWVzIDwgNCkKISAJewohIAkJLyoKISAJCSAqIFNs ZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9uIHRoZSBjb25uZWN0aW9u LiAgV2UgdXNlIHNlbGVjdCgyKQohIAkJICogdG8gd2FpdCBmb3IgaW5wdXQs IGJ1dCB5b3UgY291bGQgYWxzbyB1c2UgcG9sbCgpIG9yIHNpbWlsYXIKISAJ CSAqIGZhY2lsaXRpZXMuCiEgCQkgKi8KISAJCWludAkJCXNvY2s7CiEgCQlm ZF9zZXQJCWlucHV0X21hc2s7CiEgCiEgCQlzb2NrID0gUFFzb2NrZXQoY29u bik7CiEgCiEgCQlpZiAoc29jayA8IDApCiEgCQkJYnJlYWs7CQkJCS8qIHNo b3VsZG4ndCBoYXBwZW4gKi8KISAKISAJCUZEX1pFUk8oJmlucHV0X21hc2sp OwohIAkJRkRfU0VUKHNvY2ssICZpbnB1dF9tYXNrKTsKISAKISAJCWlmIChz ZWxlY3Qoc29jayArIDEsICZpbnB1dF9tYXNrLCBOVUxMLCBOVUxMLCBOVUxM KSA8IDApCiEgCQl7CiEgCQkJZnByaW50ZihzdGRlcnIsICJzZWxlY3QoKSBm YWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwohIAkJCWV4aXRfbmlj ZWx5KGNvbm4pOwohIAkJfQohIAohIAkJLyogTm93IGNoZWNrIGZvciBpbnB1 dCAqLwohIAkJUFFjb25zdW1lSW5wdXQoY29ubik7CiEgCQl3aGlsZSAoKG5v dGlmeSA9IFBRbm90aWZpZXMoY29ubikpICE9IE5VTEwpCiEgCQl7CiEgCQkJ ZnByaW50ZihzdGRlcnIsCiEgCQkJCQkiQVNZTkMgTk9USUZZIG9mICclcycg cmVjZWl2ZWQgZnJvbSBiYWNrZW5kIFBJRCAlZFxuIiwKISAJCQkJCW5vdGlm eS0+cmVsbmFtZSwgbm90aWZ5LT5iZV9waWQpOwohIAkJCVBRZnJlZW1lbShu b3RpZnkpOwohIAkJCW5ub3RpZmllcysrOwohIAkJfQohIAl9CiEgCiEgCWZw cmludGYoc3RkZXJyLCAiRG9uZS5cbiIpOwohIAohIAkvKiBjbG9zZSB0aGUg Y29ubmVjdGlvbiB0byB0aGUgZGF0YWJhc2UgYW5kIGNsZWFudXAgKi8KISAJ UFFmaW5pc2goY29ubik7CiEgCiEgCXJldHVybiAwOwogIH0KICBdXT4KICA8 L3Byb2dyYW1saXN0aW5nPgoqKioqKioqKioqKioqKioKKioqIDc5NzgsNzk4 NCAqKioqIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIDwhW0NEQVRB WwogIC8qCiAgICogdGVzdGxpYnBxMy5jCiEgICogICAgICBUZXN0IG91dC1v Zi1saW5lIHBhcmFtZXRlcnMgYW5kIGJpbmFyeSBJL08uCiAgICoKICAgKiBC ZWZvcmUgcnVubmluZyB0aGlzLCBwb3B1bGF0ZSBhIGRhdGFiYXNlIHdpdGgg dGhlIGZvbGxvd2luZyBjb21tYW5kcwogICAqIChwcm92aWRlZCBpbiBzcmMv dGVzdC9leGFtcGxlcy90ZXN0bGlicHEzLnNxbCk6Ci0tLSA3OTgzLDc5ODkg LS0tLQogIDwhW0NEQVRBWwogIC8qCiAgICogdGVzdGxpYnBxMy5jCiEgICoJ CVRlc3Qgb3V0LW9mLWxpbmUgcGFyYW1ldGVycyBhbmQgYmluYXJ5IEkvTy4K ICAgKgogICAqIEJlZm9yZSBydW5uaW5nIHRoaXMsIHBvcHVsYXRlIGEgZGF0 YWJhc2Ugd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCiAgICogKHByb3Zp ZGVkIGluIHNyYy90ZXN0L2V4YW1wbGVzL3Rlc3RsaWJwcTMuc3FsKToKKioq KioqKioqKioqKioqCioqKiA3OTkxLDgwMTAgKioqKiBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKICAgKiBUaGUgZXhwZWN0ZWQgb3V0cHV0IGlzOgog ICAqCiAgICogdHVwbGUgMDogZ290CiEgICogIGkgPSAoNCBieXRlcykgMQoh ICAqICB0ID0gKDExIGJ5dGVzKSAnam9lJ3MgcGxhY2UnCiEgICogIGIgPSAo NSBieXRlcykgXDAwMFwwMDFcMDAyXDAwM1wwMDQKICAgKgogICAqIHR1cGxl IDA6IGdvdAohICAqICBpID0gKDQgYnl0ZXMpIDIKISAgKiAgdCA9ICg4IGJ5 dGVzKSAnaG8gdGhlcmUnCiEgICogIGIgPSAoNSBieXRlcykgXDAwNFwwMDNc MDAyXDAwMVwwMDAKICAgKi8KICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5j bHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNs dWRlIDxzeXMvdHlwZXMuaD4KISAjaW5jbHVkZSA8bGlicHEtZmUuaD4KICAK ICAvKiBmb3IgbnRvaGwvaHRvbmwgKi8KICAjaW5jbHVkZSA8bmV0aW5ldC9p bi5oPgotLS0gNzk5Niw4MDIxIC0tLS0KICAgKiBUaGUgZXhwZWN0ZWQgb3V0 cHV0IGlzOgogICAqCiAgICogdHVwbGUgMDogZ290CiEgICoJaSA9ICg0IGJ5 dGVzKSAxCiEgICoJdCA9ICgxMSBieXRlcykgJ2pvZSdzIHBsYWNlJwohICAq CWIgPSAoNSBieXRlcykgXDAwMFwwMDFcMDAyXDAwM1wwMDQKICAgKgogICAq IHR1cGxlIDA6IGdvdAohICAqCWkgPSAoNCBieXRlcykgMgohICAqCXQgPSAo OCBieXRlcykgJ2hvIHRoZXJlJwohICAqCWIgPSAoNSBieXRlcykgXDAwNFww MDNcMDAyXDAwMVwwMDAKICAgKi8KKyAKKyAjaWZkZWYgV0lOMzIKKyAjaW5j bHVkZSA8d2luZG93cy5oPgorICNlbmRpZgorIAogICNpbmNsdWRlIDxzdGRp by5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RkaW50 Lmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KISAjaW5jbHVkZSAibGlicHEtZmUuaCIKICAKICAvKiBmb3IgbnRv aGwvaHRvbmwgKi8KICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgoqKioqKioq KioqKioqKioKKioqIDgwMTQsODAyMSAqKioqIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogIHN0YXRpYyB2b2lkCiAgZXhpdF9uaWNlbHkoUEdjb25u ICpjb25uKQogIHsKISAgICAgUFFmaW5pc2goY29ubik7CiEgICAgIGV4aXQo MSk7CiAgfQogIAogIC8qCi0tLSA4MDI1LDgwMzIgLS0tLQogIHN0YXRpYyB2 b2lkCiAgZXhpdF9uaWNlbHkoUEdjb25uICpjb25uKQogIHsKISAJUFFmaW5p c2goY29ubik7CiEgCWV4aXQoMSk7CiAgfQogIAogIC8qCioqKioqKioqKioq KioqKgoqKiogODAyNiw4MTkxICoqKiogZXhpdF9uaWNlbHkoUEdjb25uICpj b25uKQogIHN0YXRpYyB2b2lkCiAgc2hvd19iaW5hcnlfcmVzdWx0cyhQR3Jl c3VsdCAqcmVzKQogIHsKISAgICAgaW50ICAgICAgICAgaSwKISAgICAgICAg ICAgICAgICAgajsKISAgICAgaW50ICAgICAgICAgaV9mbnVtLAohICAgICAg ICAgICAgICAgICB0X2ZudW0sCiEgICAgICAgICAgICAgICAgIGJfZm51bTsK ISAKISAgICAgLyogVXNlIFBRZm51bWJlciB0byBhdm9pZCBhc3N1bXB0aW9u cyBhYm91dCBmaWVsZCBvcmRlciBpbiByZXN1bHQgKi8KISAgICAgaV9mbnVt ID0gUFFmbnVtYmVyKHJlcywgImkiKTsKISAgICAgdF9mbnVtID0gUFFmbnVt YmVyKHJlcywgInQiKTsKISAgICAgYl9mbnVtID0gUFFmbnVtYmVyKHJlcywg ImIiKTsKISAKISAgICAgZm9yIChpID0gMDsgaSA8IFBRbnR1cGxlcyhyZXMp OyBpKyspCiEgICAgIHsKISAgICAgICAgIGNoYXIgICAgICAgKmlwdHI7CiEg ICAgICAgICBjaGFyICAgICAgICp0cHRyOwohICAgICAgICAgY2hhciAgICAg ICAqYnB0cjsKISAgICAgICAgIGludCAgICAgICAgIGJsZW47CiEgICAgICAg ICBpbnQgICAgICAgICBpdmFsOwohIAohICAgICAgICAgLyogR2V0IHRoZSBm aWVsZCB2YWx1ZXMgKHdlIGlnbm9yZSBwb3NzaWJpbGl0eSB0aGV5IGFyZSBu dWxsISkgKi8KISAgICAgICAgIGlwdHIgPSBQUWdldHZhbHVlKHJlcywgaSwg aV9mbnVtKTsKISAgICAgICAgIHRwdHIgPSBQUWdldHZhbHVlKHJlcywgaSwg dF9mbnVtKTsKISAgICAgICAgIGJwdHIgPSBQUWdldHZhbHVlKHJlcywgaSwg Yl9mbnVtKTsKISAKISAgICAgICAgIC8qCiEgICAgICAgICAgKiBUaGUgYmlu YXJ5IHJlcHJlc2VudGF0aW9uIG9mIElOVDQgaXMgaW4gbmV0d29yayBieXRl IG9yZGVyLCB3aGljaAohICAgICAgICAgICogd2UnZCBiZXR0ZXIgY29lcmNl IHRvIHRoZSBsb2NhbCBieXRlIG9yZGVyLgohICAgICAgICAgICovCiEgICAg ICAgICBpdmFsID0gbnRvaGwoKigodWludDMyX3QgKikgaXB0cikpOwohIAoh ICAgICAgICAgLyoKISAgICAgICAgICAqIFRoZSBiaW5hcnkgcmVwcmVzZW50 YXRpb24gb2YgVEVYVCBpcywgd2VsbCwgdGV4dCwgYW5kIHNpbmNlIGxpYnBx CiEgICAgICAgICAgKiB3YXMgbmljZSBlbm91Z2ggdG8gYXBwZW5kIGEgemVy byBieXRlIHRvIGl0LCBpdCdsbCB3b3JrIGp1c3QgZmluZQohICAgICAgICAg ICogYXMgYSBDIHN0cmluZy4KISAgICAgICAgICAqCiEgICAgICAgICAgKiBU aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIEJZVEVBIGlzIGEgYnVuY2gg b2YgYnl0ZXMsIHdoaWNoIGNvdWxkCiEgICAgICAgICAgKiBpbmNsdWRlIGVt YmVkZGVkIG51bGxzIHNvIHdlIGhhdmUgdG8gcGF5IGF0dGVudGlvbiB0byBm aWVsZCBsZW5ndGguCiEgICAgICAgICAgKi8KISAgICAgICAgIGJsZW4gPSBQ UWdldGxlbmd0aChyZXMsIGksIGJfZm51bSk7CiEgCiEgICAgICAgICBwcmlu dGYoInR1cGxlICVkOiBnb3RcbiIsIGkpOwohICAgICAgICAgcHJpbnRmKCIg aSA9ICglZCBieXRlcykgJWRcbiIsCiEgICAgICAgICAgICAgICAgUFFnZXRs ZW5ndGgocmVzLCBpLCBpX2ZudW0pLCBpdmFsKTsKISAgICAgICAgIHByaW50 ZigiIHQgPSAoJWQgYnl0ZXMpICclcydcbiIsCiEgICAgICAgICAgICAgICAg UFFnZXRsZW5ndGgocmVzLCBpLCB0X2ZudW0pLCB0cHRyKTsKISAgICAgICAg IHByaW50ZigiIGIgPSAoJWQgYnl0ZXMpICIsIGJsZW4pOwohICAgICAgICAg Zm9yIChqID0gMDsgaiA8IGJsZW47IGorKykKISAgICAgICAgICAgICBwcmlu dGYoIlxcJTAzbyIsIGJwdHJbal0pOwohICAgICAgICAgcHJpbnRmKCJcblxu Iik7CiEgICAgIH0KICB9CiAgCiAgaW50CiAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAgewohICAgICBjb25zdCBjaGFyICpjb25uaW5mbzsKISAg ICAgUEdjb25uICAgICAqY29ubjsKISAgICAgUEdyZXN1bHQgICAqcmVzOwoh ICAgICBjb25zdCBjaGFyICpwYXJhbVZhbHVlc1sxXTsKISAgICAgaW50ICAg ICAgICAgcGFyYW1MZW5ndGhzWzFdOwohICAgICBpbnQgICAgICAgICBwYXJh bUZvcm1hdHNbMV07CiEgICAgIHVpbnQzMl90ICAgIGJpbmFyeUludFZhbDsK ISAKISAgICAgLyoKISAgICAgICogSWYgdGhlIHVzZXIgc3VwcGxpZXMgYSBw YXJhbWV0ZXIgb24gdGhlIGNvbW1hbmQgbGluZSwgdXNlIGl0IGFzIHRoZQoh ICAgICAgKiBjb25uaW5mbyBzdHJpbmc7IG90aGVyd2lzZSBkZWZhdWx0IHRv IHNldHRpbmcgZGJuYW1lPXBvc3RncmVzIGFuZCB1c2luZwohICAgICAgKiBl bnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgZGVmYXVsdHMgZm9yIGFsbCBvdGhl ciBjb25uZWN0aW9uIHBhcmFtZXRlcnMuCiEgICAgICAqLwohICAgICBpZiAo YXJnYyA+IDEpCiEgICAgICAgICBjb25uaW5mbyA9IGFyZ3ZbMV07CiEgICAg IGVsc2UKISAgICAgICAgIGNvbm5pbmZvID0gImRibmFtZSA9IHBvc3RncmVz IjsKISAKISAgICAgLyogTWFrZSBhIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFi YXNlICovCiEgICAgIGNvbm4gPSBQUWNvbm5lY3RkYihjb25uaW5mbyk7CiEg CiEgICAgIC8qIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBiYWNrZW5kIGNvbm5l Y3Rpb24gd2FzIHN1Y2Nlc3NmdWxseSBtYWRlICovCiEgICAgIGlmIChQUXN0 YXR1cyhjb25uKSAhPSBDT05ORUNUSU9OX09LKQohICAgICB7CiEgICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgZmFp bGVkOiAlcyIsCiEgICAgICAgICAgICAgICAgIFBRZXJyb3JNZXNzYWdlKGNv bm4pKTsKISAgICAgICAgIGV4aXRfbmljZWx5KGNvbm4pOwohICAgICB9CiEg CiEgICAgIC8qCiEgICAgICAqIFRoZSBwb2ludCBvZiB0aGlzIHByb2dyYW0g aXMgdG8gaWxsdXN0cmF0ZSB1c2Ugb2YgUFFleGVjUGFyYW1zKCkgd2l0aAoh ICAgICAgKiBvdXQtb2YtbGluZSBwYXJhbWV0ZXJzLCBhcyB3ZWxsIGFzIGJp bmFyeSB0cmFuc21pc3Npb24gb2YgZGF0YS4KISAgICAgICoKISAgICAgICog VGhpcyBmaXJzdCBleGFtcGxlIHRyYW5zbWl0cyB0aGUgcGFyYW1ldGVycyBh cyB0ZXh0LCBidXQgcmVjZWl2ZXMgdGhlCiEgICAgICAqIHJlc3VsdHMgaW4g YmluYXJ5IGZvcm1hdC4gIEJ5IHVzaW5nIG91dC1vZi1saW5lIHBhcmFtZXRl cnMgd2UgY2FuCiEgICAgICAqIGF2b2lkIGEgbG90IG9mIHRlZGlvdXMgbXVj a2luZyBhYm91dCB3aXRoIHF1b3RpbmcgYW5kIGVzY2FwaW5nLCBldmVuCiEg ICAgICAqIHRob3VnaCB0aGUgZGF0YSBpcyB0ZXh0LiAgTm90aWNlIGhvdyB3 ZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nCiEgICAgICAqIHNwZWNpYWwg d2l0aCB0aGUgcXVvdGUgbWFyayBpbiB0aGUgcGFyYW1ldGVyIHZhbHVlLgoh ICAgICAgKi8KISAKISAgICAgLyogSGVyZSBpcyBvdXIgb3V0LW9mLWxpbmUg cGFyYW1ldGVyIHZhbHVlICovCiEgICAgIHBhcmFtVmFsdWVzWzBdID0gImpv ZSdzIHBsYWNlIjsKISAKISAgICAgcmVzID0gUFFleGVjUGFyYW1zKGNvbm4s CiEgICAgICAgICAgICAgICAgICAgICAgICAiU0VMRUNUICogRlJPTSB0ZXN0 MSBXSEVSRSB0ID0gJDEiLAohICAgICAgICAgICAgICAgICAgICAgICAgMSwg ICAgICAgLyogb25lIHBhcmFtICovCiEgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLCAgICAvKiBsZXQgdGhlIGJhY2tlbmQgZGVkdWNlIHBhcmFtIHR5 cGUgKi8KISAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWVzLAoh ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgLyogZG9uJ3QgbmVl ZCBwYXJhbSBsZW5ndGhzIHNpbmNlIHRleHQgKi8KISAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsICAgIC8qIGRlZmF1bHQgdG8gYWxsIHRleHQgcGFy YW1zICovCiEgICAgICAgICAgICAgICAgICAgICAgICAxKTsgICAgICAvKiBh c2sgZm9yIGJpbmFyeSByZXN1bHRzICovCiEgCiEgICAgIGlmIChQUXJlc3Vs dFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKISAgICAgewohICAg ICAgICAgZnByaW50ZihzdGRlcnIsICJTRUxFQ1QgZmFpbGVkOiAlcyIsIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKISAgICAgICAgIFBRY2xlYXIocmVzKTsK ISAgICAgICAgIGV4aXRfbmljZWx5KGNvbm4pOwohICAgICB9CiEgCiEgICAg IHNob3dfYmluYXJ5X3Jlc3VsdHMocmVzKTsKISAKISAgICAgUFFjbGVhcihy ZXMpOwohIAohICAgICAvKgohICAgICAgKiBJbiB0aGlzIHNlY29uZCBleGFt cGxlIHdlIHRyYW5zbWl0IGFuIGludGVnZXIgcGFyYW1ldGVyIGluIGJpbmFy eQohICAgICAgKiBmb3JtLCBhbmQgYWdhaW4gcmV0cmlldmUgdGhlIHJlc3Vs dHMgaW4gYmluYXJ5IGZvcm0uCiEgICAgICAqCiEgICAgICAqIEFsdGhvdWdo IHdlIHRlbGwgUFFleGVjUGFyYW1zIHdlIGFyZSBsZXR0aW5nIHRoZSBiYWNr ZW5kIGRlZHVjZQohICAgICAgKiBwYXJhbWV0ZXIgdHlwZSwgd2UgcmVhbGx5 IGZvcmNlIHRoZSBkZWNpc2lvbiBieSBjYXN0aW5nIHRoZSBwYXJhbWV0ZXIK ISAgICAgICogc3ltYm9sIGluIHRoZSBxdWVyeSB0ZXh0LiAgVGhpcyBpcyBh IGdvb2Qgc2FmZXR5IG1lYXN1cmUgd2hlbiBzZW5kaW5nCiEgICAgICAqIGJp bmFyeSBwYXJhbWV0ZXJzLgohICAgICAgKi8KISAKISAgICAgLyogQ29udmVy dCBpbnRlZ2VyIHZhbHVlICIyIiB0byBuZXR3b3JrIGJ5dGUgb3JkZXIgKi8K ISAgICAgYmluYXJ5SW50VmFsID0gaHRvbmwoKHVpbnQzMl90KSAyKTsKISAK ISAgICAgLyogU2V0IHVwIHBhcmFtZXRlciBhcnJheXMgZm9yIFBRZXhlY1Bh cmFtcyAqLwohICAgICBwYXJhbVZhbHVlc1swXSA9IChjaGFyICopICZiaW5h cnlJbnRWYWw7CiEgICAgIHBhcmFtTGVuZ3Roc1swXSA9IHNpemVvZihiaW5h cnlJbnRWYWwpOwohICAgICBwYXJhbUZvcm1hdHNbMF0gPSAxOyAgICAgICAg LyogYmluYXJ5ICovCiEgCiEgICAgIHJlcyA9IFBRZXhlY1BhcmFtcyhjb25u LAohICAgICAgICAgICAgICAgICAgICAgICAgIlNFTEVDVCAqIEZST00gdGVz dDEgV0hFUkUgaSA9ICQxOjppbnQ0IiwKISAgICAgICAgICAgICAgICAgICAg ICAgIDEsICAgICAgIC8qIG9uZSBwYXJhbSAqLwohICAgICAgICAgICAgICAg ICAgICAgICAgTlVMTCwgICAgLyogbGV0IHRoZSBiYWNrZW5kIGRlZHVjZSBw YXJhbSB0eXBlICovCiEgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZh bHVlcywKISAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTGVuZ3RocywK ISAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtRm9ybWF0cywKISAgICAg ICAgICAgICAgICAgICAgICAgIDEpOyAgICAgIC8qIGFzayBmb3IgYmluYXJ5 IHJlc3VsdHMgKi8KISAKISAgICAgaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykg IT0gUEdSRVNfVFVQTEVTX09LKQohICAgICB7CiEgICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIlNFTEVDVCBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOwohICAgICAgICAgUFFjbGVhcihyZXMpOwohICAgICAgICAgZXhp dF9uaWNlbHkoY29ubik7CiEgICAgIH0KISAKISAgICAgc2hvd19iaW5hcnlf cmVzdWx0cyhyZXMpOwohIAohICAgICBQUWNsZWFyKHJlcyk7CiEgCiEgICAg IC8qIGNsb3NlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZSBhbmQg Y2xlYW51cCAqLwohICAgICBQUWZpbmlzaChjb25uKTsKISAKISAgICAgcmV0 dXJuIDA7CiAgfQogIF1dPgogIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0tLSA4MDM3 LDgyMDIgLS0tLQogIHN0YXRpYyB2b2lkCiAgc2hvd19iaW5hcnlfcmVzdWx0 cyhQR3Jlc3VsdCAqcmVzKQogIHsKISAJaW50CQkJaSwKISAJCQkJajsKISAJ aW50CQkJaV9mbnVtLAohIAkJCQl0X2ZudW0sCiEgCQkJCWJfZm51bTsKISAK ISAJLyogVXNlIFBRZm51bWJlciB0byBhdm9pZCBhc3N1bXB0aW9ucyBhYm91 dCBmaWVsZCBvcmRlciBpbiByZXN1bHQgKi8KISAJaV9mbnVtID0gUFFmbnVt YmVyKHJlcywgImkiKTsKISAJdF9mbnVtID0gUFFmbnVtYmVyKHJlcywgInQi KTsKISAJYl9mbnVtID0gUFFmbnVtYmVyKHJlcywgImIiKTsKISAKISAJZm9y IChpID0gMDsgaSA8IFBRbnR1cGxlcyhyZXMpOyBpKyspCiEgCXsKISAJCWNo YXIJICAgKmlwdHI7CiEgCQljaGFyCSAgICp0cHRyOwohIAkJY2hhcgkgICAq YnB0cjsKISAJCWludAkJCWJsZW47CiEgCQlpbnQJCQlpdmFsOwohIAohIAkJ LyogR2V0IHRoZSBmaWVsZCB2YWx1ZXMgKHdlIGlnbm9yZSBwb3NzaWJpbGl0 eSB0aGV5IGFyZSBudWxsISkgKi8KISAJCWlwdHIgPSBQUWdldHZhbHVlKHJl cywgaSwgaV9mbnVtKTsKISAJCXRwdHIgPSBQUWdldHZhbHVlKHJlcywgaSwg dF9mbnVtKTsKISAJCWJwdHIgPSBQUWdldHZhbHVlKHJlcywgaSwgYl9mbnVt KTsKISAKISAJCS8qCiEgCQkgKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9u IG9mIElOVDQgaXMgaW4gbmV0d29yayBieXRlIG9yZGVyLCB3aGljaAohIAkJ ICogd2UnZCBiZXR0ZXIgY29lcmNlIHRvIHRoZSBsb2NhbCBieXRlIG9yZGVy LgohIAkJICovCiEgCQlpdmFsID0gbnRvaGwoKigodWludDMyX3QgKikgaXB0 cikpOwohIAohIAkJLyoKISAJCSAqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRp b24gb2YgVEVYVCBpcywgd2VsbCwgdGV4dCwgYW5kIHNpbmNlIGxpYnBxCiEg CQkgKiB3YXMgbmljZSBlbm91Z2ggdG8gYXBwZW5kIGEgemVybyBieXRlIHRv IGl0LCBpdCdsbCB3b3JrIGp1c3QgZmluZQohIAkJICogYXMgYSBDIHN0cmlu Zy4KISAJCSAqCiEgCQkgKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9m IEJZVEVBIGlzIGEgYnVuY2ggb2YgYnl0ZXMsIHdoaWNoIGNvdWxkCiEgCQkg KiBpbmNsdWRlIGVtYmVkZGVkIG51bGxzIHNvIHdlIGhhdmUgdG8gcGF5IGF0 dGVudGlvbiB0byBmaWVsZCBsZW5ndGguCiEgCQkgKi8KISAJCWJsZW4gPSBQ UWdldGxlbmd0aChyZXMsIGksIGJfZm51bSk7CiEgCiEgCQlwcmludGYoInR1 cGxlICVkOiBnb3RcbiIsIGkpOwohIAkJcHJpbnRmKCIgaSA9ICglZCBieXRl cykgJWRcbiIsCiEgCQkJICAgUFFnZXRsZW5ndGgocmVzLCBpLCBpX2ZudW0p LCBpdmFsKTsKISAJCXByaW50ZigiIHQgPSAoJWQgYnl0ZXMpICclcydcbiIs CiEgCQkJICAgUFFnZXRsZW5ndGgocmVzLCBpLCB0X2ZudW0pLCB0cHRyKTsK ISAJCXByaW50ZigiIGIgPSAoJWQgYnl0ZXMpICIsIGJsZW4pOwohIAkJZm9y IChqID0gMDsgaiA8IGJsZW47IGorKykKISAJCQlwcmludGYoIlxcJTAzbyIs IGJwdHJbal0pOwohIAkJcHJpbnRmKCJcblxuIik7CiEgCX0KICB9CiAgCiAg aW50CiAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgewohIAljb25z dCBjaGFyICpjb25uaW5mbzsKISAJUEdjb25uCSAgICpjb25uOwohIAlQR3Jl c3VsdCAgICpyZXM7CiEgCWNvbnN0IGNoYXIgKnBhcmFtVmFsdWVzWzFdOwoh IAlpbnQJCQlwYXJhbUxlbmd0aHNbMV07CiEgCWludAkJCXBhcmFtRm9ybWF0 c1sxXTsKISAJdWludDMyX3QJYmluYXJ5SW50VmFsOwohIAohIAkvKgohIAkg KiBJZiB0aGUgdXNlciBzdXBwbGllcyBhIHBhcmFtZXRlciBvbiB0aGUgY29t bWFuZCBsaW5lLCB1c2UgaXQgYXMgdGhlCiEgCSAqIGNvbm5pbmZvIHN0cmlu Zzsgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gc2V0dGluZyBkYm5hbWU9cG9zdGdy ZXMgYW5kIHVzaW5nCiEgCSAqIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciBk ZWZhdWx0cyBmb3IgYWxsIG90aGVyIGNvbm5lY3Rpb24gcGFyYW1ldGVycy4K ISAJICovCiEgCWlmIChhcmdjID4gMSkKISAJCWNvbm5pbmZvID0gYXJndlsx XTsKISAJZWxzZQohIAkJY29ubmluZm8gPSAiZGJuYW1lID0gcG9zdGdyZXMi OwohIAohIAkvKiBNYWtlIGEgY29ubmVjdGlvbiB0byB0aGUgZGF0YWJhc2Ug Ki8KISAJY29ubiA9IFBRY29ubmVjdGRiKGNvbm5pbmZvKTsKISAKISAJLyog Q2hlY2sgdG8gc2VlIHRoYXQgdGhlIGJhY2tlbmQgY29ubmVjdGlvbiB3YXMg c3VjY2Vzc2Z1bGx5IG1hZGUgKi8KISAJaWYgKFBRc3RhdHVzKGNvbm4pICE9 IENPTk5FQ1RJT05fT0spCiEgCXsKISAJCWZwcmludGYoc3RkZXJyLCAiQ29u bmVjdGlvbiB0byBkYXRhYmFzZSBmYWlsZWQ6ICVzIiwKISAJCQkJUFFlcnJv ck1lc3NhZ2UoY29ubikpOwohIAkJZXhpdF9uaWNlbHkoY29ubik7CiEgCX0K ISAKISAJLyoKISAJICogVGhlIHBvaW50IG9mIHRoaXMgcHJvZ3JhbSBpcyB0 byBpbGx1c3RyYXRlIHVzZSBvZiBQUWV4ZWNQYXJhbXMoKSB3aXRoCiEgCSAq IG91dC1vZi1saW5lIHBhcmFtZXRlcnMsIGFzIHdlbGwgYXMgYmluYXJ5IHRy YW5zbWlzc2lvbiBvZiBkYXRhLgohIAkgKgohIAkgKiBUaGlzIGZpcnN0IGV4 YW1wbGUgdHJhbnNtaXRzIHRoZSBwYXJhbWV0ZXJzIGFzIHRleHQsIGJ1dCBy ZWNlaXZlcyB0aGUKISAJICogcmVzdWx0cyBpbiBiaW5hcnkgZm9ybWF0LiAg QnkgdXNpbmcgb3V0LW9mLWxpbmUgcGFyYW1ldGVycyB3ZSBjYW4gYXZvaWQK ISAJICogYSBsb3Qgb2YgdGVkaW91cyBtdWNraW5nIGFib3V0IHdpdGggcXVv dGluZyBhbmQgZXNjYXBpbmcsIGV2ZW4gdGhvdWdoCiEgCSAqIHRoZSBkYXRh IGlzIHRleHQuICBOb3RpY2UgaG93IHdlIGRvbid0IGhhdmUgdG8gZG8gYW55 dGhpbmcgc3BlY2lhbCB3aXRoCiEgCSAqIHRoZSBxdW90ZSBtYXJrIGluIHRo ZSBwYXJhbWV0ZXIgdmFsdWUuCiEgCSAqLwohIAohIAkvKiBIZXJlIGlzIG91 ciBvdXQtb2YtbGluZSBwYXJhbWV0ZXIgdmFsdWUgKi8KISAJcGFyYW1WYWx1 ZXNbMF0gPSAiam9lJ3MgcGxhY2UiOwohIAohIAlyZXMgPSBQUWV4ZWNQYXJh bXMoY29ubiwKISAJCQkJCSAgICJTRUxFQ1QgKiBGUk9NIHRlc3QxIFdIRVJF IHQgPSAkMSIsCiEgCQkJCQkgICAxLAkJLyogb25lIHBhcmFtICovCiEgCQkJ CQkgICBOVUxMLAkvKiBsZXQgdGhlIGJhY2tlbmQgZGVkdWNlIHBhcmFtIHR5 cGUgKi8KISAJCQkJCSAgIHBhcmFtVmFsdWVzLAohIAkJCQkJICAgTlVMTCwJ LyogZG9uJ3QgbmVlZCBwYXJhbSBsZW5ndGhzIHNpbmNlIHRleHQgKi8KISAJ CQkJCSAgIE5VTEwsCS8qIGRlZmF1bHQgdG8gYWxsIHRleHQgcGFyYW1zICov CiEgCQkJCQkgICAxKTsJCS8qIGFzayBmb3IgYmluYXJ5IHJlc3VsdHMgKi8K ISAKISAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVT X09LKQohIAl7CiEgCQlmcHJpbnRmKHN0ZGVyciwgIlNFTEVDVCBmYWlsZWQ6 ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwohIAkJUFFjbGVhcihyZXMp OwohIAkJZXhpdF9uaWNlbHkoY29ubik7CiEgCX0KISAKISAJc2hvd19iaW5h cnlfcmVzdWx0cyhyZXMpOwohIAohIAlQUWNsZWFyKHJlcyk7CiEgCiEgCS8q CiEgCSAqIEluIHRoaXMgc2Vjb25kIGV4YW1wbGUgd2UgdHJhbnNtaXQgYW4g aW50ZWdlciBwYXJhbWV0ZXIgaW4gYmluYXJ5IGZvcm0sCiEgCSAqIGFuZCBh Z2FpbiByZXRyaWV2ZSB0aGUgcmVzdWx0cyBpbiBiaW5hcnkgZm9ybS4KISAJ ICoKISAJICogQWx0aG91Z2ggd2UgdGVsbCBQUWV4ZWNQYXJhbXMgd2UgYXJl IGxldHRpbmcgdGhlIGJhY2tlbmQgZGVkdWNlCiEgCSAqIHBhcmFtZXRlciB0 eXBlLCB3ZSByZWFsbHkgZm9yY2UgdGhlIGRlY2lzaW9uIGJ5IGNhc3Rpbmcg dGhlIHBhcmFtZXRlcgohIAkgKiBzeW1ib2wgaW4gdGhlIHF1ZXJ5IHRleHQu ICBUaGlzIGlzIGEgZ29vZCBzYWZldHkgbWVhc3VyZSB3aGVuIHNlbmRpbmcK ISAJICogYmluYXJ5IHBhcmFtZXRlcnMuCiEgCSAqLwohIAohIAkvKiBDb252 ZXJ0IGludGVnZXIgdmFsdWUgIjIiIHRvIG5ldHdvcmsgYnl0ZSBvcmRlciAq LwohIAliaW5hcnlJbnRWYWwgPSBodG9ubCgodWludDMyX3QpIDIpOwohIAoh IAkvKiBTZXQgdXAgcGFyYW1ldGVyIGFycmF5cyBmb3IgUFFleGVjUGFyYW1z ICovCiEgCXBhcmFtVmFsdWVzWzBdID0gKGNoYXIgKikgJmJpbmFyeUludFZh bDsKISAJcGFyYW1MZW5ndGhzWzBdID0gc2l6ZW9mKGJpbmFyeUludFZhbCk7 CiEgCXBhcmFtRm9ybWF0c1swXSA9IDE7CQkvKiBiaW5hcnkgKi8KISAKISAJ cmVzID0gUFFleGVjUGFyYW1zKGNvbm4sCiEgCQkJCQkgICAiU0VMRUNUICog RlJPTSB0ZXN0MSBXSEVSRSBpID0gJDE6OmludDQiLAohIAkJCQkJICAgMSwJ CS8qIG9uZSBwYXJhbSAqLwohIAkJCQkJICAgTlVMTCwJLyogbGV0IHRoZSBi YWNrZW5kIGRlZHVjZSBwYXJhbSB0eXBlICovCiEgCQkJCQkgICBwYXJhbVZh bHVlcywKISAJCQkJCSAgIHBhcmFtTGVuZ3RocywKISAJCQkJCSAgIHBhcmFt Rm9ybWF0cywKISAJCQkJCSAgIDEpOwkJLyogYXNrIGZvciBiaW5hcnkgcmVz dWx0cyAqLwohIAohIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JF U19UVVBMRVNfT0spCiEgCXsKISAJCWZwcmludGYoc3RkZXJyLCAiU0VMRUNU IGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiEgCQlQUWNs ZWFyKHJlcyk7CiEgCQlleGl0X25pY2VseShjb25uKTsKISAJfQohIAohIAlz aG93X2JpbmFyeV9yZXN1bHRzKHJlcyk7CiEgCiEgCVBRY2xlYXIocmVzKTsK ISAKISAJLyogY2xvc2UgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNl IGFuZCBjbGVhbnVwICovCiEgCVBRZmluaXNoKGNvbm4pOwohIAohIAlyZXR1 cm4gMDsKICB9CiAgXV0+CiAgPC9wcm9ncmFtbGlzdGluZz4KKioqIGEvZG9j L3NyYy9zZ21sL2xvYmouc2dtbAotLS0gYi9kb2Mvc3JjL3NnbWwvbG9iai5z Z21sCioqKioqKioqKioqKioqKgoqKiogNTg5LDg0MSAqKioqIFNFTEVDVCBs b19leHBvcnQoaW1hZ2UucmFzdGVyLCAnL3RtcC9tb3RkJykgRlJPTSBpbWFn ZQogICAgPGV4YW1wbGUgaWQ9ImxvLWV4YW1wbGUiPgogICAgIDx0aXRsZT5M YXJnZSBPYmplY3RzIHdpdGggPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNh dGlvbj4gRXhhbXBsZSBQcm9ncmFtPC90aXRsZT4KICA8cHJvZ3JhbWxpc3Rp bmc+PCFbQ0RBVEFbCiEgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqCiEgICog dGVzdGxvLmMtLQohICAqICAgIHRlc3QgdXNpbmcgbGFyZ2Ugb2JqZWN0cyB3 aXRoIGxpYnBxCiAgICoKISAgKiBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQogICAqCiEgICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICAqLwogICNpbmNsdWRlIDxzdGRpby5oPgog ICNpbmNsdWRlICJsaWJwcS1mZS5oIgogICNpbmNsdWRlICJsaWJwcS9saWJw cS1mcy5oIgogIAohICNkZWZpbmUgQlVGU0laRSAgICAgICAgICAxMDI0CiAg CiAgLyoKISAgKiBpbXBvcnRGaWxlCiEgICogICAgaW1wb3J0IGZpbGUgImlu X2ZpbGVuYW1lIiBpbnRvIGRhdGFiYXNlIGFzIGxhcmdlIG9iamVjdCAibG9i ak9pZCIKICAgKgogICAqLwohIE9pZAogIGltcG9ydEZpbGUoUEdjb25uICpj b25uLCBjaGFyICpmaWxlbmFtZSkKICB7CiEgICAgIE9pZCAgICAgICAgIGxv YmpJZDsKISAgICAgaW50ICAgICAgICAgbG9ial9mZDsKISAgICAgY2hhciAg ICAgICAgYnVmW0JVRlNJWkVdOwohICAgICBpbnQgICAgICAgICBuYnl0ZXMs CiEgICAgICAgICAgICAgICAgIHRtcDsKISAgICAgaW50ICAgICAgICAgZmQ7 CiEgCiEgICAgIC8qCiEgICAgICAqIG9wZW4gdGhlIGZpbGUgdG8gYmUgcmVh ZCBpbgohICAgICAgKi8KISAgICAgZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JE T05MWSwgMDY2Nik7CiEgICAgIGlmIChmZCA8IDApCiEgICAgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBlcnJvciAqLwohICAgICAgICAgZnBy aW50ZihzdGRlcnIsICJjYW5ub3Qgb3BlbiB1bml4IGZpbGUgJXNcbiIsIGZp bGVuYW1lKTsKISAgICAgfQohIAohICAgICAvKgohICAgICAgKiBjcmVhdGUg dGhlIGxhcmdlIG9iamVjdAohICAgICAgKi8KISAgICAgbG9iaklkID0gbG9f Y3JlYXQoY29ubiwgSU5WX1JFQUQgfCBJTlZfV1JJVEUpOwohICAgICBpZiAo bG9iaklkID09IDApCiEgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5v dCBjcmVhdGUgbGFyZ2Ugb2JqZWN0XG4iKTsKISAKISAgICAgbG9ial9mZCA9 IGxvX29wZW4oY29ubiwgbG9iaklkLCBJTlZfV1JJVEUpOwohIAohICAgICAv KgohICAgICAgKiByZWFkIGluIGZyb20gdGhlIFVuaXggZmlsZSBhbmQgd3Jp dGUgdG8gdGhlIGludmVyc2lvbiBmaWxlCiEgICAgICAqLwohICAgICB3aGls ZSAoKG5ieXRlcyA9IHJlYWQoZmQsIGJ1ZiwgQlVGU0laRSkpID4gMCkKISAg ICAgewohICAgICAgICAgdG1wID0gbG9fd3JpdGUoY29ubiwgbG9ial9mZCwg YnVmLCBuYnl0ZXMpOwohICAgICAgICAgaWYgKHRtcCA8IG5ieXRlcykKISAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yIHdoaWxlIHJlYWRp bmcgbGFyZ2Ugb2JqZWN0XG4iKTsKISAgICAgfQohIAohICAgICAodm9pZCkg Y2xvc2UoZmQpOwohICAgICAodm9pZCkgbG9fY2xvc2UoY29ubiwgbG9ial9m ZCk7CiEgCiEgICAgIHJldHVybiBsb2JqSWQ7CiAgfQogIAohIHZvaWQKICBw aWNrb3V0KFBHY29ubiAqY29ubiwgT2lkIGxvYmpJZCwgaW50IHN0YXJ0LCBp bnQgbGVuKQogIHsKISAgICAgaW50ICAgICAgICAgbG9ial9mZDsKISAgICAg Y2hhciAgICAgICAqYnVmOwohICAgICBpbnQgICAgICAgICBuYnl0ZXM7CiEg ICAgIGludCAgICAgICAgIG5yZWFkOwohIAohICAgICBsb2JqX2ZkID0gbG9f b3Blbihjb25uLCBsb2JqSWQsIElOVl9SRUFEKTsKISAgICAgaWYgKGxvYmpf ZmQgPCAwKQohICAgICB7CiEgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNh bm5vdCBvcGVuIGxhcmdlIG9iamVjdCAlZFxuIiwKISAgICAgICAgICAgICAg ICAgbG9iaklkKTsKISAgICAgfQohIAohICAgICBsb19sc2Vlayhjb25uLCBs b2JqX2ZkLCBzdGFydCwgU0VFS19TRVQpOwohICAgICBidWYgPSBtYWxsb2Mo bGVuICsgMSk7CiEgCiEgICAgIG5yZWFkID0gMDsKISAgICAgd2hpbGUgKGxl biAtIG5yZWFkID4gMCkKISAgICAgewohICAgICAgICAgbmJ5dGVzID0gbG9f cmVhZChjb25uLCBsb2JqX2ZkLCBidWYsIGxlbiAtIG5yZWFkKTsKISAgICAg ICAgIGJ1ZltuYnl0ZXNdID0gJyAnOwohICAgICAgICAgZnByaW50ZihzdGRl cnIsICI+Pj4gJXMiLCBidWYpOwohICAgICAgICAgbnJlYWQgKz0gbmJ5dGVz OwohICAgICB9CiEgICAgIGZyZWUoYnVmKTsKISAgICAgZnByaW50ZihzdGRl cnIsICJcbiIpOwohICAgICBsb19jbG9zZShjb25uLCBsb2JqX2ZkKTsKICB9 CiAgCiEgdm9pZAogIG92ZXJ3cml0ZShQR2Nvbm4gKmNvbm4sIE9pZCBsb2Jq SWQsIGludCBzdGFydCwgaW50IGxlbikKICB7CiEgICAgIGludCAgICAgICAg IGxvYmpfZmQ7CiEgICAgIGNoYXIgICAgICAgKmJ1ZjsKISAgICAgaW50ICAg ICAgICAgbmJ5dGVzOwohICAgICBpbnQgICAgICAgICBud3JpdHRlbjsKISAg ICAgaW50ICAgICAgICAgaTsKISAKISAgICAgbG9ial9mZCA9IGxvX29wZW4o Y29ubiwgbG9iaklkLCBJTlZfV1JJVEUpOwohICAgICBpZiAobG9ial9mZCA8 IDApCiEgICAgIHsKISAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90 IG9wZW4gbGFyZ2Ugb2JqZWN0ICVkXG4iLAohICAgICAgICAgICAgICAgICBs b2JqSWQpOwohICAgICB9CiEgCiEgICAgIGxvX2xzZWVrKGNvbm4sIGxvYmpf ZmQsIHN0YXJ0LCBTRUVLX1NFVCk7CiEgICAgIGJ1ZiA9IG1hbGxvYyhsZW4g KyAxKTsKISAKISAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQohICAg ICAgICAgYnVmW2ldID0gJ1gnOwohICAgICBidWZbaV0gPSAnICc7CiEgCiEg ICAgIG53cml0dGVuID0gMDsKISAgICAgd2hpbGUgKGxlbiAtIG53cml0dGVu ID4gMCkKISAgICAgewohICAgICAgICAgbmJ5dGVzID0gbG9fd3JpdGUoY29u biwgbG9ial9mZCwgYnVmICsgbndyaXR0ZW4sIGxlbiAtIG53cml0dGVuKTsK ISAgICAgICAgIG53cml0dGVuICs9IG5ieXRlczsKISAgICAgfQohICAgICBm cmVlKGJ1Zik7CiEgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKISAgICAg bG9fY2xvc2UoY29ubiwgbG9ial9mZCk7CiAgfQogIAogIC8qCiEgICogZXhw b3J0RmlsZQohICAqICAgIGV4cG9ydCBsYXJnZSBvYmplY3QgImxvYmpPaWQi IHRvIGZpbGUgIm91dF9maWxlbmFtZSIKICAgKgogICAqLwohIHZvaWQKICBl eHBvcnRGaWxlKFBHY29ubiAqY29ubiwgT2lkIGxvYmpJZCwgY2hhciAqZmls ZW5hbWUpCiAgewohICAgICBpbnQgICAgICAgICBsb2JqX2ZkOwohICAgICBj aGFyICAgICAgICBidWZbQlVGU0laRV07CiEgICAgIGludCAgICAgICAgIG5i eXRlcywKISAgICAgICAgICAgICAgICAgdG1wOwohICAgICBpbnQgICAgICAg ICBmZDsKISAKISAgICAgLyoKISAgICAgICogb3BlbiB0aGUgbGFyZ2Ugb2Jq ZWN0CiEgICAgICAqLwohICAgICBsb2JqX2ZkID0gbG9fb3Blbihjb25uLCBs b2JqSWQsIElOVl9SRUFEKTsKISAgICAgaWYgKGxvYmpfZmQgPCAwKQohICAg ICB7CiEgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuIGxh cmdlIG9iamVjdCAlZFxuIiwKISAgICAgICAgICAgICAgICAgbG9iaklkKTsK ISAgICAgfQohIAohICAgICAvKgohICAgICAgKiBvcGVuIHRoZSBmaWxlIHRv IGJlIHdyaXR0ZW4gdG8KISAgICAgICovCiEgICAgIGZkID0gb3BlbihmaWxl bmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZLCAwNjY2KTsKISAgICAgaWYgKGZk IDwgMCkKISAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVy cm9yICovCiEgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVu IHVuaXggZmlsZSAlc1xuIiwKISAgICAgICAgICAgICAgICAgZmlsZW5hbWUp OwohICAgICB9CiEgCiEgICAgIC8qCiEgICAgICAqIHJlYWQgaW4gZnJvbSB0 aGUgaW52ZXJzaW9uIGZpbGUgYW5kIHdyaXRlIHRvIHRoZSBVbml4IGZpbGUK ISAgICAgICovCiEgICAgIHdoaWxlICgobmJ5dGVzID0gbG9fcmVhZChjb25u LCBsb2JqX2ZkLCBidWYsIEJVRlNJWkUpKSA+IDApCiEgICAgIHsKISAgICAg ICAgIHRtcCA9IHdyaXRlKGZkLCBidWYsIG5ieXRlcyk7CiEgICAgICAgICBp ZiAodG1wIDwgbmJ5dGVzKQohICAgICAgICAgewohICAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiZXJyb3Igd2hpbGUgd3JpdGluZyAlc1xuIiwKISAg ICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKTsKISAgICAgICAgIH0KISAg ICAgfQohIAohICAgICAodm9pZCkgbG9fY2xvc2UoY29ubiwgbG9ial9mZCk7 CiEgICAgICh2b2lkKSBjbG9zZShmZCk7CiEgCiEgICAgIHJldHVybjsKICB9 CiAgCiEgdm9pZAogIGV4aXRfbmljZWx5KFBHY29ubiAqY29ubikKICB7CiEg ICAgIFBRZmluaXNoKGNvbm4pOwohICAgICBleGl0KDEpOwogIH0KICAKICBp bnQKICBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICB7CiEgICAgIGNo YXIgICAgICAgKmluX2ZpbGVuYW1lLAohICAgICAgICAgICAgICAgICpvdXRf ZmlsZW5hbWU7CiEgICAgIGNoYXIgICAgICAgKmRhdGFiYXNlOwohICAgICBP aWQgICAgICAgICBsb2JqT2lkOwohICAgICBQR2Nvbm4gICAgICpjb25uOwoh ICAgICBQR3Jlc3VsdCAgICpyZXM7CiEgCiEgICAgIGlmIChhcmdjICE9IDQp CiEgICAgIHsKISAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVz IGRhdGFiYXNlX25hbWUgaW5fZmlsZW5hbWUgb3V0X2ZpbGVuYW1lXG4iLAoh ICAgICAgICAgICAgICAgICBhcmd2WzBdKTsKISAgICAgICAgIGV4aXQoMSk7 CiEgICAgIH0KISAKISAgICAgZGF0YWJhc2UgPSBhcmd2WzFdOwohICAgICBp bl9maWxlbmFtZSA9IGFyZ3ZbMl07CiEgICAgIG91dF9maWxlbmFtZSA9IGFy Z3ZbM107CiEgCiEgICAgIC8qCiEgICAgICAqIHNldCB1cCB0aGUgY29ubmVj dGlvbgohICAgICAgKi8KISAgICAgY29ubiA9IFBRc2V0ZGIoTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCwgZGF0YWJhc2UpOwohIAohICAgICAvKiBjaGVjayB0 byBzZWUgdGhhdCB0aGUgYmFja2VuZCBjb25uZWN0aW9uIHdhcyBzdWNjZXNz ZnVsbHkgbWFkZSAqLwohICAgICBpZiAoUFFzdGF0dXMoY29ubikgPT0gQ09O TkVDVElPTl9CQUQpCiEgICAgIHsKISAgICAgICAgIGZwcmludGYoc3RkZXJy LCAiQ29ubmVjdGlvbiB0byBkYXRhYmFzZSAnJXMnIGZhaWxlZC5cbiIsIGRh dGFiYXNlKTsKISAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7CiEgICAgICAgICBleGl0X25pY2VseShjb25u KTsKISAgICAgfQohIAohICAgICByZXMgPSBQUWV4ZWMoY29ubiwgImJlZ2lu Iik7CiEgICAgIFBRY2xlYXIocmVzKTsKISAKISAgICAgcHJpbnRmKCJpbXBv cnRpbmcgZmlsZSAlc1xuIiwgaW5fZmlsZW5hbWUpOwohIC8qICBsb2JqT2lk ID0gaW1wb3J0RmlsZShjb25uLCBpbl9maWxlbmFtZSk7ICovCiEgICAgIGxv YmpPaWQgPSBsb19pbXBvcnQoY29ubiwgaW5fZmlsZW5hbWUpOwohIC8qCiEg ICAgIHByaW50ZigiYXMgbGFyZ2Ugb2JqZWN0ICVkLlxuIiwgbG9iak9pZCk7 CiEgCiEgICAgIHByaW50ZigicGlja2luZyBvdXQgYnl0ZXMgMTAwMC0yMDAw IG9mIHRoZSBsYXJnZSBvYmplY3RcbiIpOwohICAgICBwaWNrb3V0KGNvbm4s IGxvYmpPaWQsIDEwMDAsIDEwMDApOwohIAohICAgICBwcmludGYoIm92ZXJ3 cml0aW5nIGJ5dGVzIDEwMDAtMjAwMCBvZiB0aGUgbGFyZ2Ugb2JqZWN0IHdp dGggWCdzXG4iKTsKISAgICAgb3ZlcndyaXRlKGNvbm4sIGxvYmpPaWQsIDEw MDAsIDEwMDApOwohICovCiEgCiEgICAgIHByaW50ZigiZXhwb3J0aW5nIGxh cmdlIG9iamVjdCB0byBmaWxlICVzXG4iLCBvdXRfZmlsZW5hbWUpOwohIC8q ICAgIGV4cG9ydEZpbGUoY29ubiwgbG9iak9pZCwgb3V0X2ZpbGVuYW1lKTsg Ki8KISAgICAgbG9fZXhwb3J0KGNvbm4sIGxvYmpPaWQsIG91dF9maWxlbmFt ZSk7CiEgCiEgICAgIHJlcyA9IFBRZXhlYyhjb25uLCAiZW5kIik7CiEgICAg IFBRY2xlYXIocmVzKTsKISAgICAgUFFmaW5pc2goY29ubik7CiEgICAgIGV4 aXQoMCk7CiAgfQogIF1dPgogIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0tLSA1ODks ODU1IC0tLS0KICAgIDxleGFtcGxlIGlkPSJsby1leGFtcGxlIj4KICAgICA8 dGl0bGU+TGFyZ2UgT2JqZWN0cyB3aXRoIDxhcHBsaWNhdGlvbj5saWJwcTwv YXBwbGljYXRpb24+IEV4YW1wbGUgUHJvZ3JhbTwvdGl0bGU+CiAgPHByb2dy YW1saXN0aW5nPjwhW0NEQVRBWwohIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICAqCiEgICogdGVzdGxvLmMKISAgKgkgIHRlc3QgdXNpbmcg bGFyZ2Ugb2JqZWN0cyB3aXRoIGxpYnBxCiAgICoKISAgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAxMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKISAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQog ICAqCiEgICoKISAgKiBJREVOVElGSUNBVElPTgohICAqCSAgc3JjL3Rlc3Qv ZXhhbXBsZXMvdGVzdGxvLmMKISAgKgohICAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICAqLwogICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNs dWRlIDxzdGRsaWIuaD4KKyAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisg I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+Cisg I2luY2x1ZGUgPHVuaXN0ZC5oPgorIAogICNpbmNsdWRlICJsaWJwcS1mZS5o IgogICNpbmNsdWRlICJsaWJwcS9saWJwcS1mcy5oIgogIAohICNkZWZpbmUg QlVGU0laRQkJCTEwMjQKICAKICAvKgohICAqIGltcG9ydEZpbGUgLQohICAq CSAgaW1wb3J0IGZpbGUgImluX2ZpbGVuYW1lIiBpbnRvIGRhdGFiYXNlIGFz IGxhcmdlIG9iamVjdCAibG9iak9pZCIKICAgKgogICAqLwohIHN0YXRpYyBP aWQKICBpbXBvcnRGaWxlKFBHY29ubiAqY29ubiwgY2hhciAqZmlsZW5hbWUp CiAgewohIAlPaWQJCQlsb2JqSWQ7CiEgCWludAkJCWxvYmpfZmQ7CiEgCWNo YXIJCWJ1ZltCVUZTSVpFXTsKISAJaW50CQkJbmJ5dGVzLAohIAkJCQl0bXA7 CiEgCWludAkJCWZkOwohIAohIAkvKgohIAkgKiBvcGVuIHRoZSBmaWxlIHRv IGJlIHJlYWQgaW4KISAJICovCiEgCWZkID0gb3BlbihmaWxlbmFtZSwgT19S RE9OTFksIDA2NjYpOwohIAlpZiAoZmQgPCAwKQohIAl7CQkJCQkJCS8qIGVy cm9yICovCiEgCQlmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuIHVuaXgg ZmlsZVwiJXNcIlxuIiwgZmlsZW5hbWUpOwohIAl9CiEgCiEgCS8qCiEgCSAq IGNyZWF0ZSB0aGUgbGFyZ2Ugb2JqZWN0CiEgCSAqLwohIAlsb2JqSWQgPSBs b19jcmVhdChjb25uLCBJTlZfUkVBRCB8IElOVl9XUklURSk7CiEgCWlmIChs b2JqSWQgPT0gMCkKISAJCWZwcmludGYoc3RkZXJyLCAiY2Fubm90IGNyZWF0 ZSBsYXJnZSBvYmplY3QiKTsKISAKISAJbG9ial9mZCA9IGxvX29wZW4oY29u biwgbG9iaklkLCBJTlZfV1JJVEUpOwohIAohIAkvKgohIAkgKiByZWFkIGlu IGZyb20gdGhlIFVuaXggZmlsZSBhbmQgd3JpdGUgdG8gdGhlIGludmVyc2lv biBmaWxlCiEgCSAqLwohIAl3aGlsZSAoKG5ieXRlcyA9IHJlYWQoZmQsIGJ1 ZiwgQlVGU0laRSkpID4gMCkKISAJewohIAkJdG1wID0gbG9fd3JpdGUoY29u biwgbG9ial9mZCwgYnVmLCBuYnl0ZXMpOwohIAkJaWYgKHRtcCA8IG5ieXRl cykKISAJCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yIHdoaWxlIHJlYWRpbmcg XCIlc1wiIiwgZmlsZW5hbWUpOwohIAl9CiEgCiEgCWNsb3NlKGZkKTsKISAJ bG9fY2xvc2UoY29ubiwgbG9ial9mZCk7CiEgCiEgCXJldHVybiBsb2JqSWQ7 CiAgfQogIAohIHN0YXRpYyB2b2lkCiAgcGlja291dChQR2Nvbm4gKmNvbm4s IE9pZCBsb2JqSWQsIGludCBzdGFydCwgaW50IGxlbikKICB7CiEgCWludAkJ CWxvYmpfZmQ7CiEgCWNoYXIJICAgKmJ1ZjsKISAJaW50CQkJbmJ5dGVzOwoh IAlpbnQJCQlucmVhZDsKISAKISAJbG9ial9mZCA9IGxvX29wZW4oY29ubiwg bG9iaklkLCBJTlZfUkVBRCk7CiEgCWlmIChsb2JqX2ZkIDwgMCkKISAJCWZw cmludGYoc3RkZXJyLCAiY2Fubm90IG9wZW4gbGFyZ2Ugb2JqZWN0ICV1Iiwg bG9iaklkKTsKISAKISAJbG9fbHNlZWsoY29ubiwgbG9ial9mZCwgc3RhcnQs IFNFRUtfU0VUKTsKISAJYnVmID0gbWFsbG9jKGxlbiArIDEpOwohIAohIAlu cmVhZCA9IDA7CiEgCXdoaWxlIChsZW4gLSBucmVhZCA+IDApCiEgCXsKISAJ CW5ieXRlcyA9IGxvX3JlYWQoY29ubiwgbG9ial9mZCwgYnVmLCBsZW4gLSBu cmVhZCk7CiEgCQlidWZbbmJ5dGVzXSA9ICdcMCc7CiEgCQlmcHJpbnRmKHN0 ZGVyciwgIj4+PiAlcyIsIGJ1Zik7CiEgCQlucmVhZCArPSBuYnl0ZXM7CiEg CQlpZiAobmJ5dGVzIDw9IDApCiEgCQkJYnJlYWs7CQkJCS8qIG5vIG1vcmUg ZGF0YT8gKi8KISAJfQohIAlmcmVlKGJ1Zik7CiEgCWZwcmludGYoc3RkZXJy LCAiXG4iKTsKISAJbG9fY2xvc2UoY29ubiwgbG9ial9mZCk7CiAgfQogIAoh IHN0YXRpYyB2b2lkCiAgb3ZlcndyaXRlKFBHY29ubiAqY29ubiwgT2lkIGxv YmpJZCwgaW50IHN0YXJ0LCBpbnQgbGVuKQogIHsKISAJaW50CQkJbG9ial9m ZDsKISAJY2hhcgkgICAqYnVmOwohIAlpbnQJCQluYnl0ZXM7CiEgCWludAkJ CW53cml0dGVuOwohIAlpbnQJCQlpOwohIAohIAlsb2JqX2ZkID0gbG9fb3Bl bihjb25uLCBsb2JqSWQsIElOVl9XUklURSk7CiEgCWlmIChsb2JqX2ZkIDwg MCkKISAJCWZwcmludGYoc3RkZXJyLCAiY2Fubm90IG9wZW4gbGFyZ2Ugb2Jq ZWN0ICV1IiwgbG9iaklkKTsKISAKISAJbG9fbHNlZWsoY29ubiwgbG9ial9m ZCwgc3RhcnQsIFNFRUtfU0VUKTsKISAJYnVmID0gbWFsbG9jKGxlbiArIDEp OwohIAohIAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCiEgCQlidWZbaV0g PSAnWCc7CiEgCWJ1ZltpXSA9ICdcMCc7CiEgCiEgCW53cml0dGVuID0gMDsK ISAJd2hpbGUgKGxlbiAtIG53cml0dGVuID4gMCkKISAJewohIAkJbmJ5dGVz ID0gbG9fd3JpdGUoY29ubiwgbG9ial9mZCwgYnVmICsgbndyaXR0ZW4sIGxl biAtIG53cml0dGVuKTsKISAJCW53cml0dGVuICs9IG5ieXRlczsKISAJCWlm IChuYnl0ZXMgPD0gMCkKISAJCXsKISAJCQlmcHJpbnRmKHN0ZGVyciwgIlxu V1JJVEUgRkFJTEVEIVxuIik7CiEgCQkJYnJlYWs7CiEgCQl9CiEgCX0KISAJ ZnJlZShidWYpOwohIAlmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiEgCWxvX2Ns b3NlKGNvbm4sIGxvYmpfZmQpOwogIH0KICAKKyAKICAvKgohICAqIGV4cG9y dEZpbGUgLQohICAqCSAgZXhwb3J0IGxhcmdlIG9iamVjdCAibG9iak9pZCIg dG8gZmlsZSAib3V0X2ZpbGVuYW1lIgogICAqCiAgICovCiEgc3RhdGljIHZv aWQKICBleHBvcnRGaWxlKFBHY29ubiAqY29ubiwgT2lkIGxvYmpJZCwgY2hh ciAqZmlsZW5hbWUpCiAgewohIAlpbnQJCQlsb2JqX2ZkOwohIAljaGFyCQli dWZbQlVGU0laRV07CiEgCWludAkJCW5ieXRlcywKISAJCQkJdG1wOwohIAlp bnQJCQlmZDsKISAKISAJLyoKISAJICogb3BlbiB0aGUgbGFyZ2Ugb2JqZWN0 CiEgCSAqLwohIAlsb2JqX2ZkID0gbG9fb3Blbihjb25uLCBsb2JqSWQsIElO Vl9SRUFEKTsKISAJaWYgKGxvYmpfZmQgPCAwKQohIAkJZnByaW50ZihzdGRl cnIsICJjYW5ub3Qgb3BlbiBsYXJnZSBvYmplY3QgJXUiLCBsb2JqSWQpOwoh IAohIAkvKgohIAkgKiBvcGVuIHRoZSBmaWxlIHRvIGJlIHdyaXR0ZW4gdG8K ISAJICovCiEgCWZkID0gb3BlbihmaWxlbmFtZSwgT19DUkVBVCB8IE9fV1JP TkxZIHwgT19UUlVOQywgMDY2Nik7CiEgCWlmIChmZCA8IDApCiEgCXsJCQkJ CQkJLyogZXJyb3IgKi8KISAJCWZwcmludGYoc3RkZXJyLCAiY2Fubm90IG9w ZW4gdW5peCBmaWxlXCIlc1wiIiwKISAJCQkJZmlsZW5hbWUpOwohIAl9CiEg CiEgCS8qCiEgCSAqIHJlYWQgaW4gZnJvbSB0aGUgaW52ZXJzaW9uIGZpbGUg YW5kIHdyaXRlIHRvIHRoZSBVbml4IGZpbGUKISAJICovCiEgCXdoaWxlICgo bmJ5dGVzID0gbG9fcmVhZChjb25uLCBsb2JqX2ZkLCBidWYsIEJVRlNJWkUp KSA+IDApCiEgCXsKISAJCXRtcCA9IHdyaXRlKGZkLCBidWYsIG5ieXRlcyk7 CiEgCQlpZiAodG1wIDwgbmJ5dGVzKQohIAkJewohIAkJCWZwcmludGYoc3Rk ZXJyLCAiZXJyb3Igd2hpbGUgd3JpdGluZyBcIiVzXCIiLAohIAkJCQkJZmls ZW5hbWUpOwohIAkJfQohIAl9CiEgCiEgCWxvX2Nsb3NlKGNvbm4sIGxvYmpf ZmQpOwohIAljbG9zZShmZCk7CiEgCiEgCXJldHVybjsKICB9CiAgCiEgc3Rh dGljIHZvaWQKICBleGl0X25pY2VseShQR2Nvbm4gKmNvbm4pCiAgewohIAlQ UWZpbmlzaChjb25uKTsKISAJZXhpdCgxKTsKICB9CiAgCiAgaW50CiAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgewohIAljaGFyCSAgICppbl9m aWxlbmFtZSwKISAJCQkgICAqb3V0X2ZpbGVuYW1lOwohIAljaGFyCSAgICpk YXRhYmFzZTsKISAJT2lkCQkJbG9iak9pZDsKISAJUEdjb25uCSAgICpjb25u OwohIAlQR3Jlc3VsdCAgICpyZXM7CiEgCiEgCWlmIChhcmdjICE9IDQpCiEg CXsKISAJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIGRhdGFiYXNlX25h bWUgaW5fZmlsZW5hbWUgb3V0X2ZpbGVuYW1lXG4iLAohIAkJCQlhcmd2WzBd KTsKISAJCWV4aXQoMSk7CiEgCX0KISAKISAJZGF0YWJhc2UgPSBhcmd2WzFd OwohIAlpbl9maWxlbmFtZSA9IGFyZ3ZbMl07CiEgCW91dF9maWxlbmFtZSA9 IGFyZ3ZbM107CiEgCiEgCS8qCiEgCSAqIHNldCB1cCB0aGUgY29ubmVjdGlv bgohIAkgKi8KISAJY29ubiA9IFBRc2V0ZGIoTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCwgZGF0YWJhc2UpOwohIAohIAkvKiBjaGVjayB0byBzZWUgdGhhdCB0 aGUgYmFja2VuZCBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgbWFkZSAq LwohIAlpZiAoUFFzdGF0dXMoY29ubikgIT0gQ09OTkVDVElPTl9PSykKISAJ ewohIAkJZnByaW50ZihzdGRlcnIsICJDb25uZWN0aW9uIHRvIGRhdGFiYXNl IGZhaWxlZDogJXMiLAohIAkJCQlQUWVycm9yTWVzc2FnZShjb25uKSk7CiEg CQlleGl0X25pY2VseShjb25uKTsKISAJfQohIAohIAlyZXMgPSBQUWV4ZWMo Y29ubiwgImJlZ2luIik7CiEgCVBRY2xlYXIocmVzKTsKISAJcHJpbnRmKCJp bXBvcnRpbmcgZmlsZSBcIiVzXCIgLi4uXG4iLCBpbl9maWxlbmFtZSk7CiEg LyoJbG9iak9pZCA9IGltcG9ydEZpbGUoY29ubiwgaW5fZmlsZW5hbWUpOyAq LwohIAlsb2JqT2lkID0gbG9faW1wb3J0KGNvbm4sIGluX2ZpbGVuYW1lKTsK ISAJaWYgKGxvYmpPaWQgPT0gMCkKISAJCWZwcmludGYoc3RkZXJyLCAiJXNc biIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKISAJZWxzZQohIAl7CiEgCQlw cmludGYoIlx0YXMgbGFyZ2Ugb2JqZWN0ICV1LlxuIiwgbG9iak9pZCk7CiEg CiEgCQlwcmludGYoInBpY2tpbmcgb3V0IGJ5dGVzIDEwMDAtMjAwMCBvZiB0 aGUgbGFyZ2Ugb2JqZWN0XG4iKTsKISAJCXBpY2tvdXQoY29ubiwgbG9iak9p ZCwgMTAwMCwgMTAwMCk7CiEgCiEgCQlwcmludGYoIm92ZXJ3cml0aW5nIGJ5 dGVzIDEwMDAtMjAwMCBvZiB0aGUgbGFyZ2Ugb2JqZWN0IHdpdGggWCdzXG4i KTsKISAJCW92ZXJ3cml0ZShjb25uLCBsb2JqT2lkLCAxMDAwLCAxMDAwKTsK ISAKISAJCXByaW50ZigiZXhwb3J0aW5nIGxhcmdlIG9iamVjdCB0byBmaWxl IFwiJXNcIiAuLi5cbiIsIG91dF9maWxlbmFtZSk7CiEgLyoJCWV4cG9ydEZp bGUoY29ubiwgbG9iak9pZCwgb3V0X2ZpbGVuYW1lKTsgKi8KISAJCWlmIChs b19leHBvcnQoY29ubiwgbG9iak9pZCwgb3V0X2ZpbGVuYW1lKSA8IDApCiEg CQkJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgUFFlcnJvck1lc3NhZ2UoY29u bikpOwohIAl9CiEgCiEgCXJlcyA9IFBRZXhlYyhjb25uLCAiZW5kIik7CiEg CVBRY2xlYXIocmVzKTsKISAJUFFmaW5pc2goY29ubik7CiEgCXJldHVybiAw OwogIH0KICBdXT4KICA8L3Byb2dyYW1saXN0aW5nPgo= --bcaec50166d35f0b6b04d6ac3c26 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-docs --bcaec50166d35f0b6b04d6ac3c26--