From unknown Sun Jun 22 11:47:18 2025 X-Loop: help-debbugs@gnu.org Subject: bug#20989: [PATCH] tests: add coreutils' perl-driven test framework Resent-From: Jim Meyering Original-Sender: "Debbugs-submit" Resent-CC: bug-grep@gnu.org Resent-Date: Mon, 06 Jul 2015 02:36:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 20989 X-GNU-PR-Package: grep X-GNU-PR-Keywords: patch To: 20989@debbugs.gnu.org X-Debbugs-Original-To: bug-grep@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.143615014630091 (code B ref -1); Mon, 06 Jul 2015 02:36:01 +0000 Received: (at submit) by debbugs.gnu.org; 6 Jul 2015 02:35:46 +0000 Received: from localhost ([127.0.0.1]:41258 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZBwFy-0007p9-Vg for submit@debbugs.gnu.org; Sun, 05 Jul 2015 22:35:46 -0400 Received: from eggs.gnu.org ([208.118.235.92]:60469) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZBwFt-0007on-7l for submit@debbugs.gnu.org; Sun, 05 Jul 2015 22:35:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZBwFk-0005Ib-C1 for submit@debbugs.gnu.org; Sun, 05 Jul 2015 22:35:31 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: ** X-Spam-Status: No, score=2.5 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID,URIBL_BLACK autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:49103) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZBwFk-0005IW-7r for submit@debbugs.gnu.org; Sun, 05 Jul 2015 22:35:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45733) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZBwFg-0001U2-WA for bug-grep@gnu.org; Sun, 05 Jul 2015 22:35:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZBwFe-0005Hy-11 for bug-grep@gnu.org; Sun, 05 Jul 2015 22:35:24 -0400 Received: from mail-yk0-x233.google.com ([2607:f8b0:4002:c07::233]:32987) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZBwFd-0005Ht-P2 for bug-grep@gnu.org; Sun, 05 Jul 2015 22:35:21 -0400 Received: by ykeo3 with SMTP id o3so16263756yke.0 for ; Sun, 05 Jul 2015 19:35:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:from:date:message-id:subject:to:content-type; bh=w5aKJXN6ku7egSPrJHQEpdTZqiB/Kb7GJ8S7LtwTsxY=; b=kcYeI1DCS24/YwU+3xoUiFJoTpMMHAw1UCo1UTm8Q77DOWj0LUmCfdfuuhQfBL7Bh2 2W4MW5qe7ucohO21VtrimpXcf5szxqsmM1qDfqoftJzS0tDYCLEOK1vLflQpfS58PXAb fwj1nzZWcHoQXCmM9r8Jup775g7bAkdtSGhHF8N0aho5Hw5GIlLf9m0ADeB1qyGR2Dw1 yYO/5dSQikYzicEW3EFPvI2IGQBCqiBGMvrciw0/Z2OJw08JOmk4+tOQt6NmjcM0CMxQ j5EIiKdioSyAP7uQyk4rDPvjBom875NhUQO3XICGD+zPXVpcx+2MqnLoA5jG6Jhgggtf FVKA== X-Received: by 10.13.203.83 with SMTP id n80mr57104477ywd.10.1436150121284; Sun, 05 Jul 2015 19:35:21 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.201.66 with HTTP; Sun, 5 Jul 2015 19:35:01 -0700 (PDT) From: Jim Meyering Date: Sun, 5 Jul 2015 19:35:01 -0700 X-Google-Sender-Auth: oZa3uj3eHCmyKGh50JtgMTz7ovw Message-ID: Content-Type: multipart/mixed; boundary=001a11481e0ad33d4e051a2bc1f2 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --001a11481e0ad33d4e051a2bc1f2 Content-Type: text/plain; charset=UTF-8 I want to use this framework (from coreutils) here in grep, too, so... --001a11481e0ad33d4e051a2bc1f2 Content-Type: text/x-patch; charset=US-ASCII; name="0001-tests-add-coreutils-perl-driven-test-framework.patch" Content-Disposition: attachment; filename="0001-tests-add-coreutils-perl-driven-test-framework.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ibraog180 RnJvbSBlZjQwOTFmMDgxM2Y3YzA0NjVmNzJhY2U3NjFkZmNlZWU1NDdjMWRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gTWV5ZXJpbmcgPG1leWVyaW5nQGZiLmNvbT4KRGF0ZTog U2F0LCAyNyBKdW4gMjAxNSAwODo0MzozMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBh ZGQgY29yZXV0aWxzJyBwZXJsLWRyaXZlbiB0ZXN0IGZyYW1ld29yawoKKiBjb25maWd1cmUuYWM6 IFNldCB0aGUgQU1fQ09ORElUSU9OQUwgdmFyaWFibGUsIEhBVkVfUEVSTC4KKiB0ZXN0cy9Db3Jl dXRpbHMucG06IE5ldyBmaWxlLgoqIHRlc3RzL0N1U2tpcC5wbTogTmV3IGZpbGUuCiogdGVzdHMv Q3VUbXBkaXIucG06IE5ldyBmaWxlLgoqIHRlc3RzL25vLXBlcmw6IE5ldyBmaWxlLgoqIHRlc3Rz L01ha2VmaWxlLmFtOiBTZXQgdXAgdG8gdXNlIC5wbCB0ZXN0czoKKFRFU1RfRVhURU5TSU9OUywg VEVTVFNVSVRFX1BFUkwsIFRFU1RTVUlURV9QRVJMX09QVElPTlMpOiBEZWZpbmUuCihTSF9MT0df Q09NUElMRVIsIFBMX0xPR19DT01QSUxFUik6IERlZmluZS4KKEVYVFJBX0RJU1QpOiBBZGQgdGhl IGZvdXIgbmV3IGZpbGUgbmFtZXMuCi0tLQogY29uZmlndXJlLmFjICAgICAgIHwgICA3ICsKIHRl c3RzL0NvcmV1dGlscy5wbSB8IDYyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogdGVzdHMvQ3VTa2lwLnBtICAgIHwgIDM5ICsrKysKIHRlc3Rz L0N1VG1wZGlyLnBtICB8IDExMSArKysrKysrKysrCiB0ZXN0cy9NYWtlZmlsZS5hbSAgfCAgMjQg KysrCiB0ZXN0cy9uby1wZXJsICAgICAgfCAgIDYgKwogNiBmaWxlcyBjaGFuZ2VkLCA4MDcgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL0NvcmV1dGlscy5wbQogY3JlYXRl IG1vZGUgMTAwNjQ0IHRlc3RzL0N1U2tpcC5wbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL0N1 VG1wZGlyLnBtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvbm8tcGVybAoKZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzZjZkMzg5Li4wYTRmMDlkIDEwMDY0 NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC05NCw2ICs5NCwxMyBA QCBBQ19UWVBFX1NJWkVfVAogQUNfQ19DT05TVAogZ2xfSU5JVAoKKyMgVGhlIHRlc3Qgc3VpdGUg bmVlZHMgdG8ga25vdyBpZiB3ZSBoYXZlIGEgd29ya2luZyBwZXJsLgorIyBGSVhNRTogdGhpcyBp cyBzdWJvcHRpbWFsLiAgSWRlYWxseSwgd2Ugd291bGQgYmUgYWJsZSB0byBjYWxsIGdsX1BFUkwK KyMgd2l0aCBhbiBBQ1RJT04tSUYtTk9ULUZPVU5EIGFyZ3VtZW50IC4uLgorY3VfaGF2ZV9wZXJs PXllcworY2FzZSAkUEVSTCBpbiAqIi9taXNzaW5nICIqKSBjdV9oYXZlX3Blcmw9bm87OyBlc2Fj CitBTV9DT05ESVRJT05BTChbSEFWRV9QRVJMXSwgW3Rlc3QgJGN1X2hhdmVfcGVybCA9IHllc10p CisKIEFDX0FSR19FTkFCTEUoW2djYy13YXJuaW5nc10sCiAgIFtBU19IRUxQX1NUUklORyhbLS1l bmFibGUtZ2NjLXdhcm5pbmdzXSwKICAgICAgICAgICAgICAgICAgIFt0dXJuIG9uIGxvdHMgb2Yg R0NDIHdhcm5pbmdzIChmb3IgZGV2ZWxvcGVycyldKV0sCmRpZmYgLS1naXQgYS90ZXN0cy9Db3Jl dXRpbHMucG0gYi90ZXN0cy9Db3JldXRpbHMucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYmQyMDg4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0NvcmV1dGlscy5wbQpA QCAtMCwwICsxLDYyMCBAQAorcGFja2FnZSBDb3JldXRpbHM7CisjIFRoaXMgaXMgYSB0ZXN0aW5n IGZyYW1ld29yay4KKworIyBDb3B5cmlnaHQgKEMpIDE5OTgtMjAxNSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK3VzZSBzdHJpY3Q7Cit1c2UgdmFy cyBxdygkVkVSU0lPTiBASVNBIEBFWFBPUlQpOworCit1c2UgRmlsZUhhbmRsZTsKK3VzZSBGaWxl OjpDb21wYXJlIHF3KGNvbXBhcmUpOworCitASVNBID0gcXcoRXhwb3J0ZXIpOworKCRWRVJTSU9O ID0gJyRSZXZpc2lvbjogMS41ICQgJykgPX4gdHIvWzAtOV0uLy9jZDsKK0BFWFBPUlQgPSBxdyAo cnVuX3Rlc3RzIHRyaXBsZV90ZXN0IGdldGxpbWl0cyk7CisKK215ICRkZWJ1ZyA9ICRFTlZ7REVC VUd9OworCitteSBAVHlwZXMgPSBxdyAoSU4gSU5fUElQRSBPVVQgRVJSIEFVWCBDTVAgRVhJVCBQ UkUgUE9TVCBPVVRfU1VCU1QKKyAgICAgICAgICAgICAgICBFUlJfU1VCU1QgRU5WIEVOVl9ERUwp OworbXkgJVR5cGVzID0gbWFwIHskXyA9PiAxfSBAVHlwZXM7CitteSAlWmVyb19vbmVfdHlwZSA9 IG1hcCB7JF8gPT4gMX0KKyAgIHF3IChPVVQgRVJSIEVYSVQgUFJFIFBPU1QgT1VUX1NVQlNUIEVS Ul9TVUJTVCBFTlYpOworbXkgJHNyY2RpciA9ICIkRU5We3NyY2Rpcn0iOworbXkgJEdsb2JhbF9j b3VudCA9IDE7CisKKyMgV2hlbiBydW5uaW5nIGluIGEgREpHUFAgZW52aXJvbm1lbnQsIG1ha2Ug JEVOVntTSEVMTH0gcG9pbnQgdG8gYmFzaC4KKyMgT3RoZXJ3aXNlLCBhIGJhZCBzaGVsbCBtaWdo dCBiZSB1c2VkIChlLmcuIGNvbW1hbmQuY29tKSBhbmQgbWFueQorIyB0ZXN0cyB3b3VsZCBmYWls LgorZGVmaW5lZCAkRU5We0RKRElSfQorICBhbmQgJEVOVntTSEVMTH0gPSAiJEVOVntESkRJUn0v YmluL2Jhc2guZXhlIjsKKworIyBBIGZpbGUgc3BlYzogYSBzY2FsYXIgb3IgYSByZWZlcmVuY2Ug dG8gYSBzaW5nbGUta2V5ZWQgaGFzaAorIyA9PT09PT09PT09PT09PT09CisjICdjb250ZW50cycg ICAgICAgICAgICAgICBjb250ZW50cyBvbmx5IChmaWxlIG5hbWUgaXMgZGVyaXZlZCBmcm9tIHRl c3QgbmFtZSkKKyMge2ZpbGVuYW1lID0+ICdjb250ZW50cyd9IGZpbGVuYW1lIGFuZCBjb250ZW50 cworIyB7ZmlsZW5hbWUgPT4gdW5kZWZ9ICAgICAgZmlsZW5hbWUgb25seSAtLSAkKHNyY2Rpcikv dGVzdHMvZmlsZW5hbWUgbXVzdCBleGlzdAorIworIyBGSVhNRTogSWYgdGhlcmUgaXMgbW9yZSB0 aGFuIG9uZSBpbnB1dCBmaWxlLCB0aGVuIHlvdSBjYW4ndCBzcGVjaWZ5ICdSRURJUicuCisjIFBJ UEUgaXMgc3RpbGwgb2suCisjCisjIEkvTyBzcGVjOiBhIGhhc2ggcmVmIHdpdGggdGhlIGZvbGxv d2luZyBwcm9wZXJ0aWVzCisjID09PT09PT09PT09PT09PT0KKyMgLSBvbmUga2V5L3ZhbHVlIHBh aXIKKyMgLSB0aGUga2V5IG11c3QgYmUgb25lIG9mIHRoZXNlIHN0cmluZ3M6IElOLCBPVVQsIEVS UiwgQVVYLCBDTVAsIEVYSVQKKyMgLSB0aGUgdmFsdWUgbXVzdCBiZSBhIGZpbGUgc3BlYworIyB7 T1VUID0+ICdkYXRhJ30gICAgcHV0IGRhdGEgaW4gYSB0ZW1wIGZpbGUgYW5kIGNvbXBhcmUgaXQg dG8gc3Rkb3V0IGZyb20gY21kCisjIHtPVVQgPT4geydmaWxlbmFtZSc9PnVuZGVmfX0gY29tcGFy ZSBjb250ZW50cyBvZiBleGlzdGluZyBmaWxlbmFtZSB0bworIyAgICAgICAgICAgc3Rkb3V0IGZy b20gY21kCisjIHtPVVQgPT4geydmaWxlbmFtZSc9PlskQ1RPUiwgJERUT1JdfX0gJENUT1IgYW5k ICREVE9SIGFyZSByZWZlcmVuY2VzIHRvCisjICAgICAgICAgICBmdW5jdGlvbnMsIGVhY2ggd2hp Y2ggaXMgcGFzc2VkIHRoZSBzaW5nbGUgYXJndW1lbnQgJ2ZpbGVuYW1lJy4KKyMgICAgICAgICAg ICRDVE9SIG11c3QgY3JlYXRlICdmaWxlbmFtZScuCisjICAgICAgICAgICBEVE9SIG1heSBiZSBv bWl0dGVkIGluIHdoaWNoIGNhc2UgJ3N1Ynt1bmxpbmsgQF9bMF19JyBpcyB1c2VkLgorIyAgICAg ICAgICAgRklYTUU6IGltcGxlbWVudCB0aGlzCisjIHtFUlIgPT4gLi4ufQorIyAgICAgICAgICAg U2FtZSBhcyBmb3IgT1VULCBidXQgY29tcGFyZSB3aXRoIHN0ZGVyciwgbm90IHN0ZG91dC4KKyMg e09VVF9TVUJTVCA9PiAncy92YXJpYWJsZV9vdXRwdXQvZXhwZWN0ZWRfb3V0cHV0Lyd9CisjICAg VHJhbnNmb3JtIGFjdHVhbCBzdGFuZGFyZCBvdXRwdXQgYmVmb3JlIGNvbXBhcmluZyBpdCBhZ2Fp bnN0IGV4cGVjdGVkLgorIyAgIFRoaXMgaXMgdXNlZnVsIGUuZy4gZm9yIHByb2dyYW1zIGxpa2Ug ZHUgdGhhdCBwcm9kdWNlIG91dHB1dCB0aGF0CisjICAgdmFyaWVzIGEgbG90IGZyb20gc3lzdGVt LiAgRS5nLiwgYW4gZW1wdHkgZmlsZSBtYXkgY29uc3VtZSB6ZXJvIGZpbGUKKyMgICBibG9ja3Ms IG9yIG1vcmUsIGRlcGVuZGluZyBvbiB0aGUgT1MgYW5kIG9uIHRoZSBmaWxlIHN5c3RlbSB0eXBl LgorIyB7RVJSX1NVQlNUID0+ICdzL3ZhcmlhYmxlX291dHB1dC9leHBlY3RlZF9vdXRwdXQvJ30K KyMgICBUcmFuc2Zvcm0gYWN0dWFsIHN0ZGVyciBvdXRwdXQgYmVmb3JlIGNvbXBhcmluZyBpdCBh Z2FpbnN0IGV4cGVjdGVkLgorIyAgIFRoaXMgaXMgdXNlZnVsIHdoZW4gdmVyaWZ5aW5nIHRoYXQg d2UgZ2V0IGEgbWVhbmluZ2Z1bCBkaWFnbm9zdGljLgorIyAgIEZvciBleGFtcGxlLCBpbiBybS9m YWlsLTJlcGVybSwgd2UgaGF2ZSB0byBhY2NvdW50IGZvciB0aHJlZSBkaWZmZXJlbnQKKyMgICBk aWFnbm9zdGljczogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQsIE5vdCBvd25lciwgYW5kIFBlcm1p c3Npb24gZGVuaWVkLgorIyB7RVhJVCA9PiBOfSBleHBlY3QgZXhpdCBzdGF0dXMgb2YgY21kIHRv IGJlIE4KKyMge0VOViA9PiAnVkFSPXZhbCAuLi4nfQorIyAgIFByZXBlbmQgJ1ZBUj12YWwgLi4u JyB0byB0aGUgY29tbWFuZCB0aGF0IHdlIGV4ZWN1dGUgdmlhICdzeXN0ZW0nLgorIyB7RU5WX0RF TCA9PiAnVkFSJ30KKyMgICBSZW1vdmUgVkFSIGZyb20gdGhlIGVudmlyb25tZW50IGp1c3QgYmVm b3JlIHJ1bm5pbmcgdGhlIGNvcnJlc3BvbmRpbmcKKyMgICBjb21tYW5kLCBhbmQgcmVzdG9yZSBh bnkgdmFsdWUganVzdCBhZnRlcndhcmRzLgorIworIyBUaGVyZSBtYXkgYmUgbWFueSBpbnB1dCBm aWxlIHNwZWNzLiAgRmlsZSBuYW1lcyBmcm9tIHRoZSBpbnB1dCBzcGVjcworIyBhcmUgY29uY2F0 ZW5hdGVkIGluIG9yZGVyIG9uIHRoZSBjb21tYW5kIGxpbmUuCisjIFRoZXJlIG1heSBiZSBhdCBt b3N0IG9uZSBvZiB0aGUgT1VULSwgRVJSLSwgYW5kIEVYSVQta2V5ZWQgc3BlY3MuCisjIElmIHRo ZSBPVVQtKG9yIEVSUikta2V5ZWQgaGFzaCByZWYgaXMgb21pdHRlZCwgdGhlbiBleHBlY3Qgbm8g b3V0cHV0CisjICAgb24gc3Rkb3V0IChvciBzdGRlcnIpLgorIyBJZiB0aGUgRVhJVC1rZXllZCBv bmUgaXMgb21pdHRlZCwgdGhlbiBleHBlY3QgdGhlIGV4aXQgc3RhdHVzIHRvIGJlIHplcm8uCisK KyMgRklYTUU6IE1ha2Ugc3VyZSB0aGF0IG5vIGp1bmtmaWxlIGlzIGFsc28gbGlzdGVkIGFzIGEK KyMgbm9uLWp1bmtmaWxlIChpLmUuLCB3aXRoIHVuZGVmIGZvciBjb250ZW50cykKKworc3ViIF9z aGVsbF9xdW90ZSAoJCkKK3sKKyAgbXkgKCRzdHJpbmcpID0gQF87CisgICRzdHJpbmcgPX4gcy9c Jy9cJ1xcXCdcJy9nOworICByZXR1cm4gIickc3RyaW5nJyI7Cit9CisKK3N1YiBfY3JlYXRlX2Zp bGUgKCQkJCQpCit7CisgIG15ICgkcHJvZ3JhbV9uYW1lLCAkdGVzdF9uYW1lLCAkZmlsZV9uYW1l LCAkZGF0YSkgPSBAXzsKKyAgbXkgJGZpbGU7CisgIGlmIChkZWZpbmVkICRmaWxlX25hbWUpCisg ICAgeworICAgICAgJGZpbGUgPSAkZmlsZV9uYW1lOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgICRmaWxlID0gIiR0ZXN0X25hbWUuJEdsb2JhbF9jb3VudCI7CisgICAgICArKyRHbG9iYWxf Y291bnQ7CisgICAgfQorCisgIHdhcm4gImNyZWF0aW5nIGZpbGUgJyRmaWxlJyB3aXRoIGNvbnRl bnRzICckZGF0YSdcbiIgaWYgJGRlYnVnOworCisgICMgVGhlIHRlc3Qgc3BlYyBnYXZlIGEgc3Ry aW5nLgorICAjIFdyaXRlIGl0IHRvIGEgdGVtcCBmaWxlIGFuZCByZXR1cm4gdGVtcGZpbGUgbmFt ZS4KKyAgbXkgJGZoID0gbmV3IEZpbGVIYW5kbGUgIj4gJGZpbGUiOworICBkaWUgIiRwcm9ncmFt X25hbWU6ICRmaWxlOiAkIVxuIiBpZiAhICRmaDsKKyAgcHJpbnQgJGZoICRkYXRhOworICAkZmgt PmNsb3NlIHx8IGRpZSAiJHByb2dyYW1fbmFtZTogJGZpbGU6ICQhXG4iOworCisgIHJldHVybiAk ZmlsZTsKK30KKworc3ViIF9jb21wYXJlX2ZpbGVzICgkJCQkJCkKK3sKKyAgbXkgKCRwcm9ncmFt X25hbWUsICR0ZXN0X25hbWUsICRpbl9vcl9vdXQsICRhY3R1YWwsICRleHBlY3RlZCkgPSBAXzsK KworICBteSAkZGlmZmVyID0gY29tcGFyZSAoJGFjdHVhbCwgJGV4cGVjdGVkKTsKKyAgaWYgKCRk aWZmZXIpCisgICAgeworICAgICAgbXkgJGluZm8gPSAoZGVmaW5lZCAkaW5fb3Jfb3V0ID8gInN0 ZCRpbl9vcl9vdXQgIiA6ICcnKTsKKyAgICAgIHdhcm4gIiRwcm9ncmFtX25hbWU6IHRlc3QgJHRl c3RfbmFtZTogJHtpbmZvfW1pc21hdGNoLCBjb21wYXJpbmcgIgorICAgICAgICAuICIkZXhwZWN0 ZWQgKGV4cGVjdGVkKSBhbmQgJGFjdHVhbCAoYWN0dWFsKVxuIjsKKyAgICAgICMgSWdub3JlIGFu eSBmYWlsdXJlLCBkaXNjYXJkIHN0ZGVyci4KKyAgICAgIHN5c3RlbSAiZGlmZiAtYyAkZXhwZWN0 ZWQgJGFjdHVhbCAyPi9kZXYvbnVsbCI7CisgICAgfQorCisgIHJldHVybiAkZGlmZmVyOworfQor CitzdWIgX3Byb2Nlc3NfZmlsZV9zcGVjICgkJCQkJCkKK3sKKyAgbXkgKCRwcm9ncmFtX25hbWUs ICR0ZXN0X25hbWUsICRmaWxlX3NwZWMsICR0eXBlLCAkanVua19maWxlcykgPSBAXzsKKworICBt eSAoJGZpbGVfbmFtZSwgJGNvbnRlbnRzKTsKKyAgaWYgKCFyZWYgJGZpbGVfc3BlYykKKyAgICB7 CisgICAgICAoJGZpbGVfbmFtZSwgJGNvbnRlbnRzKSA9ICh1bmRlZiwgJGZpbGVfc3BlYyk7Cisg ICAgfQorICBlbHNpZiAocmVmICRmaWxlX3NwZWMgZXEgJ0hBU0gnKQorICAgIHsKKyAgICAgIG15 ICRuID0ga2V5cyAlJGZpbGVfc3BlYzsKKyAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3Rf bmFtZTogJHR5cGUgc3BlYyBoYXMgJG4gZWxlbWVudHMgLS0iCisgICAgICAgIC4gIiBleHBlY3Rl ZCAxXG4iCisgICAgICAgICAgaWYgJG4gIT0gMTsKKyAgICAgICgkZmlsZV9uYW1lLCAkY29udGVu dHMpID0gZWFjaCAlJGZpbGVfc3BlYzsKKworICAgICAgIyBUaGlzIGhhcHBlbnMgZm9yIHRoZSBB VVggaGFzaCBpbiBhbiBpb19zcGVjIGxpa2UgdGhpczoKKyAgICAgICMge0NNUD0+IFsnenkxMjN1 dHNycXBvbm1sa2ppJywgeydAQVVYQCc9PiB1bmRlZn1dfSwKKyAgICAgIGRlZmluZWQgJGNvbnRl bnRzCisgICAgICAgIG9yIHJldHVybiAkZmlsZV9uYW1lOworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogaW52YWxpZCBSSFMgaW4gJHR5 cGUtc3BlY1xuIgorICAgIH0KKworICBteSAkaXNfanVua19maWxlID0gKCEgZGVmaW5lZCAkZmls ZV9uYW1lCisgICAgICAgICAgICAgICAgICAgICAgfHwgKCgkdHlwZSBlcSAnSU4nIHx8ICR0eXBl IGVxICdBVVgnIHx8ICR0eXBlIGVxICdDTVAnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAm JiBkZWZpbmVkICRjb250ZW50cykpOworICBteSAkZmlsZSA9IF9jcmVhdGVfZmlsZSAoJHByb2dy YW1fbmFtZSwgJHRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlX25h bWUsICRjb250ZW50cyk7CisKKyAgaWYgKCRpc19qdW5rX2ZpbGUpCisgICAgeworICAgICAgcHVz aCBAJGp1bmtfZmlsZXMsICRmaWxlCisgICAgfQorICBlbHNlCisgICAgeworICAgICAgIyBGSVhN RTogcHV0ICRzcmNkaXIgaW4gaGVyZSBzb21ld2hlcmUKKyAgICAgIHdhcm4gIiRwcm9ncmFtX25h bWU6ICR0ZXN0X25hbWU6IHNwZWNpZmllZCBmaWxlICckZmlsZScgZG9lcyIKKyAgICAgICAgLiAi IG5vdCBleGlzdFxuIgorICAgICAgICAgIGlmICEgLWYgIiRzcmNkaXIvdGVzdHMvJGZpbGUiOwor ICAgIH0KKworICByZXR1cm4gJGZpbGU7Cit9CisKK3N1YiBfYXRfcmVwbGFjZSAoJCQpCit7Cisg IG15ICgkbWFwLCAkcykgPSBAXzsKKyAgZm9yZWFjaCBteSAkZW8gKHF3IChBVVggT1VUIEVSUikp CisgICAgeworICAgICAgbXkgJGYgPSAkbWFwLT57JGVvfTsKKyAgICAgICRmCisgICAgICAgIGFu ZCAkcyA9fiAvXEAkZW9cQC8KKyAgICAgICAgICBhbmQgJHMgPX4gcy9cQCRlb1xALyRmL2c7Cisg ICAgfQorICByZXR1cm4gJHM7Cit9CisKK3N1YiBnZXRsaW1pdHMoKQoreworICBteSAkTlY7Cisg IG9wZW4gJE5WLCAiZ2V0bGltaXRzIHwiIG9yIGRpZSAiRXJyb3IgcnVubmluZyBnZXRsaW1pdHNc biI7CisgIG15ICVsaW1pdHMgPSBtYXAge3NwbGl0IC89fFxuL30gPCROVj47CisgIHJldHVybiBc JWxpbWl0czsKK30KKworIyBGSVhNRTogY2xlYW51cCBvbiBpbnRlcnJ1cHQKKyMgRklYTUU6IGV4 dHJhY3QgJ2RvXzFfdGVzdCcgZnVuY3Rpb24KKworIyBGSVhNRTogaGF2aW5nIHRvIGluY2x1ZGUg JHByb2dyYW1fbmFtZSBoZXJlIGlzIGFuIGV4cGVkaWVudCBrbHVkZ2UuCisjIExpYnJhcnkgY29k ZSBkb2Vzbid0ICdkaWUnLgorc3ViIHJ1bl90ZXN0cyAoJCQkJCQpCit7CisgIG15ICgkcHJvZ3Jh bV9uYW1lLCAkcHJvZywgJHRfc3BlYywgJHNhdmVfdGVtcHMsICR2ZXJib3NlKSA9IEBfOworCisg ICMgVG8gaW5kaWNhdGUgdGhhdCAkcHJvZyBpcyBhIHNoZWxsIGJ1aWx0LWluLCB5b3UnZCBtYWtl IGl0IGEgc3RyaW5nICdyZWYnLgorICAjIEUuZy4sIGNhbGwgcnVuX3Rlc3RzICgkcHJvZywgXCRw cm9nLCBcQFRlc3RzLCAkc2F2ZV90ZW1wcywgJHZlcmJvc2UpOworICAjIElmIGl0J3MgYSByZWYs IGludm9rZSBpdCB2aWEgImVudiI6CisgIG15IEBwcm9nID0gcmVmICRwcm9nID8gKHF3KGVudiAt LSksICQkcHJvZykgOiAkcHJvZzsKKworICAjIFdhcm4gYWJvdXQgZW1wdHkgdF9zcGVjLgorICAj IEZJWE1FCisKKyAgIyBSZW1vdmUgYWxsIHRlbXAgZmlsZXMgdXBvbiBpbnRlcnJ1cHQuCisgICMg RklYTUUKKworICAjIFZlcmlmeSB0aGF0IHRlc3QgbmFtZXMgYXJlIGRpc3RpbmN0LgorICBteSAk YmFkX3Rlc3RfbmFtZSA9IDA7CisgIG15ICVzZWVuOworICBteSAlc2Vlbl84ZG90MzsKKyAgbXkg JHQ7CisgIGZvcmVhY2ggJHQgKEAkdF9zcGVjKQorICAgIHsKKyAgICAgIG15ICR0ZXN0X25hbWUg PSAkdC0+WzBdOworICAgICAgaWYgKCRzZWVueyR0ZXN0X25hbWV9KQorICAgICAgICB7CisgICAg ICAgICAgd2FybiAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogZHVwbGljYXRlIHRlc3QgbmFt ZVxuIjsKKyAgICAgICAgICAkYmFkX3Rlc3RfbmFtZSA9IDE7CisgICAgICAgIH0KKyAgICAgICRz ZWVueyR0ZXN0X25hbWV9ID0gMTsKKworICAgICAgaWYgKDApCisgICAgICAgIHsKKyAgICAgICAg ICBteSAkdDggPSBsYyBzdWJzdHIgJHRlc3RfbmFtZSwgMCwgODsKKyAgICAgICAgICBpZiAoJHNl ZW5fOGRvdDN7JHQ4fSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgd2FybiAiJHByb2dy YW1fbmFtZTogOC4zIHRlc3QgbmFtZSBjb25mbGljdDogIgorICAgICAgICAgICAgICAgIC4gIiR0 ZXN0X25hbWUsICRzZWVuXzhkb3QzeyR0OH1cbiI7CisgICAgICAgICAgICAgICRiYWRfdGVzdF9u YW1lID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAkc2Vlbl84ZG90M3skdDh9ID0gJHRl c3RfbmFtZTsKKyAgICAgICAgfQorCisgICAgICAjIFRoZSB0ZXN0IG5hbWUgbWF5IGJlIG5vIGxv bmdlciB0aGFuIDMwIGJ5dGVzLgorICAgICAgIyBZZXMsIHRoaXMgaXMgYW4gYXJiaXRyYXJ5IGxp bWl0LiAgSWYgaXQgY2F1c2VzIHRyb3VibGUsCisgICAgICAjIGNvbnNpZGVyIHJlbW92aW5nIGl0 LgorICAgICAgbXkgJG1heCA9IDMwOworICAgICAgaWYgKCRtYXggPCBsZW5ndGggJHRlc3RfbmFt ZSkKKyAgICAgICAgeworICAgICAgICAgIHdhcm4gIiRwcm9ncmFtX25hbWU6ICR0ZXN0X25hbWU6 IHRlc3QgbmFtZSBpcyB0b28gbG9uZyAoPiAkbWF4KVxuIjsKKyAgICAgICAgICAkYmFkX3Rlc3Rf bmFtZSA9IDE7CisgICAgICAgIH0KKyAgICB9CisgIHJldHVybiAxIGlmICRiYWRfdGVzdF9uYW1l OworCisgICMgRklYTUUgY2hlY2sgZXhpdCBzdGF0dXMKKyAgc3lzdGVtIChAcHJvZywgJy0tdmVy c2lvbicpIGlmICR2ZXJib3NlOworCisgIG15IEBqdW5rX2ZpbGVzOworICBteSAkZmFpbCA9IDA7 CisgIGZvcmVhY2ggbXkgJHR0IChAJHRfc3BlYykKKyAgICB7CisgICAgICBteSBAcG9zdF9jb21w YXJlOworICAgICAgbXkgQGR1bW15ID0gQCR0dDsKKyAgICAgIG15ICR0ID0gXEBkdW1teTsKKyAg ICAgIG15ICR0ZXN0X25hbWUgPSBzaGlmdCBAJHQ7CisgICAgICBteSAkZXhwZWN0ID0ge307Cisg ICAgICBteSAoJHByZSwgJHBvc3QpOworCisgICAgICAjIEZJWE1FOiBtYXliZSBkb24ndCByZXNl dCB0aGlzLgorICAgICAgJEdsb2JhbF9jb3VudCA9IDE7CisgICAgICBteSBAYXJnczsKKyAgICAg IG15ICRpb19zcGVjOworICAgICAgbXkgJXNlZW5fdHlwZTsKKyAgICAgIG15IEBlbnZfZGVsZXRl OworICAgICAgbXkgJGVudl9wcmVmaXggPSAnJzsKKyAgICAgIG15ICRpbnB1dF9waXBlX2NtZDsK KyAgICAgIGZvcmVhY2ggJGlvX3NwZWMgKEAkdCkKKyAgICAgICAgeworICAgICAgICAgIGlmICgh cmVmICRpb19zcGVjKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBwdXNoIEBhcmdzLCAk aW9fc3BlYzsKKyAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg IGlmIChyZWYgJGlvX3NwZWMgbmUgJ0hBU0gnKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICBldmFsICd1c2UgRGF0YTo6RHVtcGVyJzsKKyAgICAgICAgICAgICAgZGllICIkcHJvZ3JhbV9u YW1lOiAkdGVzdF9uYW1lOiBpbnZhbGlkIGVudHJ5IGluIHRlc3Qgc3BlYzsgIgorICAgICAgICAg ICAgICAgIC4gImV4cGVjdGVkIEhBU0gtcmVmLFxuYnV0IGdvdCB0aGlzOlxuIgorICAgICAgICAg ICAgICAgICAgLiBEYXRhOjpEdW1wZXItPkR1bXAgKFtcJGlvX3NwZWNdLCBbJyRpb19zcGVjJ10p IC4gIlxuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIG15ICRuID0ga2V5cyAlJGlvX3Nw ZWM7CisgICAgICAgICAgZGllICIkcHJvZ3JhbV9uYW1lOiAkdGVzdF9uYW1lOiBzcGVjIGhhcyAk biBlbGVtZW50cyAtLSIKKyAgICAgICAgICAgIC4gIiBleHBlY3RlZCAxXG4iCisgICAgICAgICAg ICAgIGlmICRuICE9IDE7CisgICAgICAgICAgbXkgKCR0eXBlLCAkdmFsKSA9IGVhY2ggJSRpb19z cGVjOworICAgICAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogaW52YWxpZCBr ZXkgJyR0eXBlJyBpbiB0ZXN0IHNwZWNcbiIKKyAgICAgICAgICAgIGlmICEgJFR5cGVzeyR0eXBl fTsKKworICAgICAgICAgICMgTWFrZSBzdXJlIHRoZXJlJ3Mgbm8gbW9yZSB0aGFuIG9uZSBvZiBP VVQsIEVSUiwgRVhJVCwgZXRjLgorICAgICAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3Rf bmFtZTogbW9yZSB0aGFuIG9uZSAkdHlwZSBzcGVjXG4iCisgICAgICAgICAgICBpZiAkWmVyb19v bmVfdHlwZXskdHlwZX0gYW5kICRzZWVuX3R5cGV7JHR5cGV9Kys7CisKKyAgICAgICAgICBpZiAo JHR5cGUgZXEgJ1BSRScgb3IgJHR5cGUgZXEgJ1BPU1QnKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAkZXhwZWN0LT57JHR5cGV9ID0gJHZhbDsKKyAgICAgICAgICAgICAgbmV4dDsKKyAg ICAgICAgICAgIH0KKworICAgICAgICAgIGlmICgkdHlwZSBlcSAnQ01QJykKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgbXkgJHQgPSByZWYgJHZhbDsKKyAgICAgICAgICAgICAgJHQgJiYg JHQgZXEgJ0FSUkFZJworICAgICAgICAgICAgICAgIG9yIGRpZSAiJHByb2dyYW1fbmFtZTogJHRl c3RfbmFtZTogaW52YWxpZCBDTVAgc3BlY1xuIjsKKyAgICAgICAgICAgICAgQCR2YWwgPT0gMgor ICAgICAgICAgICAgICAgIG9yIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogaW52YWxp ZCBDTVAgbGlzdDsgIG11c3QgaGF2ZSIKKyAgICAgICAgICAgICAgICAgIC4gIiBleGFjdGx5IDIg ZWxlbWVudHNcbiI7CisgICAgICAgICAgICAgIG15IEBjbXBfZmlsZXM7CisgICAgICAgICAgICAg IGZvcmVhY2ggbXkgJGUgKEAkdmFsKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgIG15ICRyID0gcmVmICRlOworICAgICAgICAgICAgICAgICAgJHIgJiYgJHIgbmUgJ0hBU0gn CisgICAgICAgICAgICAgICAgICAgIGFuZCBkaWUgIiRwcm9ncmFtX25hbWU6ICR0ZXN0X25hbWU6 IGludmFsaWQgZWxlbWVudCAoJHIpIgorICAgICAgICAgICAgICAgICAgICAgIC4gIiBpbiBDTVAg bGlzdDsgIG9ubHkgc2NhbGFycyBhbmQgaGFzaCByZWZlcmVuY2VzICIKKyAgICAgICAgICAgICAg ICAgICAgICAgIC4gImFyZSBhbGxvd2VkXG4iOworICAgICAgICAgICAgICAgICAgaWYgKCRyICYm ICRyIGVxICdIQVNIJykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICAgIG15ICRuID0ga2V5cyAlJGU7CisgICAgICAgICAgICAgICAgICAgICAgJG4gPT0gMQorICAg ICAgICAgICAgICAgICAgICAgICAgb3IgZGllICIkcHJvZ3JhbV9uYW1lOiAkdGVzdF9uYW1lOiBD TVAgc3BlYyBoYXMgJG4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAuICJlbGVtZW50cyAt LSBleHBlY3RlZCAxXG4iOworCisgICAgICAgICAgICAgICAgICAgICAgIyBSZXBsYWNlIGFueSAn QEFVWEAnIGluIHRoZSBrZXkgb2YgJSRlLgorICAgICAgICAgICAgICAgICAgICAgIG15ICgkZmYs ICR2YWwpID0gZWFjaCAlJGU7CisgICAgICAgICAgICAgICAgICAgICAgbXkgJG5ld19mZiA9IF9h dF9yZXBsYWNlICRleHBlY3QsICRmZjsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5ld19m ZiBuZSAkZmYpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICRlLT57JG5ld19mZn0gPSAkdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICBk ZWxldGUgJGUtPnskZmZ9OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICBteSAkY21wX2ZpbGUgPSBfcHJvY2Vzc19maWxl X3NwZWMgKCRwcm9ncmFtX25hbWUsICR0ZXN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlLCAkdHlwZSwgXEBqdW5rX2ZpbGVzKTsK KyAgICAgICAgICAgICAgICAgIHB1c2ggQGNtcF9maWxlcywgJGNtcF9maWxlOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgcHVzaCBAcG9zdF9jb21wYXJlLCBbQGNtcF9maWxlc107 CisKKyAgICAgICAgICAgICAgJGV4cGVjdC0+eyR0eXBlfSA9ICR2YWw7CisgICAgICAgICAgICAg IG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoJHR5cGUgZXEgJ0VYSVQnKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICBkaWUgIiRwcm9ncmFtX25hbWU6ICR0ZXN0X25h bWU6IGludmFsaWQgRVhJVCBjb2RlXG4iCisgICAgICAgICAgICAgICAgaWYgJHZhbCAhfiAvXlxk KyQvOworICAgICAgICAgICAgICAjIEZJWE1FOiBtYWtlIHN1cmUgJGRhdGEgaXMgbnVtZXJpYwor ICAgICAgICAgICAgICAkZXhwZWN0LT57RVhJVH0gPSAkdmFsOworICAgICAgICAgICAgICBuZXh0 OworICAgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKCR0eXBlID1+IC9eKE9VVHxFUlIpX1NV QlNUJC8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICRleHBlY3QtPntSRVNVTFRfU1VC U1R9IHx8PSB7fTsKKyAgICAgICAgICAgICAgJGV4cGVjdC0+e1JFU1VMVF9TVUJTVH0tPnskMX0g PSAkdmFsOworICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg aWYgKCR0eXBlIGVxICdFTlYnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAkZW52X3By ZWZpeCA9ICIkdmFsICI7CisgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICBpZiAoJHR5cGUgZXEgJ0VOVl9ERUwnKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBwdXNoIEBlbnZfZGVsZXRlLCAkdmFsOworICAgICAgICAgICAgICBuZXh0OworICAgICAg ICAgICAgfQorCisgICAgICAgICAgbXkgJGZpbGUgPSBfcHJvY2Vzc19maWxlX3NwZWMgKCRwcm9n cmFtX25hbWUsICR0ZXN0X25hbWUsICR2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICR0eXBlLCBcQGp1bmtfZmlsZXMpOworCisgICAgICAgICAgaWYgKCR0eXBl IGVxICdJTicgfHwgJHR5cGUgZXEgJ0lOX1BJUEUnKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBteSAkcXVvdGVkX2ZpbGUgPSBfc2hlbGxfcXVvdGUgJGZpbGU7CisgICAgICAgICAgICAg IGlmICgkdHlwZSBlcSAnSU5fUElQRScpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgZGVmaW5lZCAkaW5wdXRfcGlwZV9jbWQKKyAgICAgICAgICAgICAgICAgICAgYW5kIGRp ZSAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogb25seSBvbmUgaW5wdXQiCisgICAgICAgICAg ICAgICAgICAgICAgLiAiIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBJTl9QSVBFXG4iOworICAgICAg ICAgICAgICAgICAgJGlucHV0X3BpcGVfY21kID0gImNhdCAkcXVvdGVkX2ZpbGUgfCI7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgcHVzaCBAYXJncywgJHF1b3RlZF9maWxlOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNpZiAoJHR5cGUgZXEgJ0FVWCcgfHwgJHR5 cGUgZXEgJ09VVCcgfHwgJHR5cGUgZXEgJ0VSUicpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICRleHBlY3QtPnskdHlwZX0gPSAkZmlsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBl bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRl c3RfbmFtZTogaW52YWxpZCB0eXBlOiAkdHlwZVxuIgorICAgICAgICAgICAgfQorICAgICAgICB9 CisKKyAgICAgICMgRXhwZWN0IGFuIGV4aXQgc3RhdHVzIG9mIHplcm8gaWYgaXQncyBub3Qgc3Bl Y2lmaWVkLgorICAgICAgJGV4cGVjdC0+e0VYSVR9IHx8PSAwOworCisgICAgICAjIEFsbG93IEVS UiB0byBiZSBvbWl0dGVkIC0tIGluIHRoYXQgY2FzZSwgZXhwZWN0IG5vIGVycm9yIG91dHB1dC4K KyAgICAgIGZvcmVhY2ggbXkgJGVvIChxdyAoT1VUIEVSUikpCisgICAgICAgIHsKKyAgICAgICAg ICBpZiAoIWV4aXN0cyAkZXhwZWN0LT57JGVvfSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgJGV4cGVjdC0+eyRlb30gPSBfY3JlYXRlX2ZpbGUgKCRwcm9ncmFtX25hbWUsICR0ZXN0X25h bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwg JycpOworICAgICAgICAgICAgICBwdXNoIEBqdW5rX2ZpbGVzLCAkZXhwZWN0LT57JGVvfTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAjIEZJWE1FOiBEb2VzIGl0IGV2ZXIgbWFr ZSBzZW5zZSB0byBzcGVjaWZ5IGEgZmlsZW5hbWUgKmFuZCogY29udGVudHMKKyAgICAgICMgaW4g T1VUIG9yIEVSUiBzcGVjPworCisgICAgICAjIEZJWE1FOiB0aGlzIGlzIHJlYWxseSBzdWJvcHRp bWFsLi4uCisgICAgICBteSBAbmV3X2FyZ3M7CisgICAgICBmb3JlYWNoIG15ICRhIChAYXJncykK KyAgICAgICAgeworICAgICAgICAgICRhID0gX2F0X3JlcGxhY2UgJGV4cGVjdCwgJGE7CisgICAg ICAgICAgcHVzaCBAbmV3X2FyZ3MsICRhOworICAgICAgICB9CisgICAgICBAYXJncyA9IEBuZXdf YXJnczsKKworICAgICAgd2FybiAiJHRlc3RfbmFtZS4uLlxuIiBpZiAkdmVyYm9zZTsKKyAgICAg ICZ7JGV4cGVjdC0+e1BSRX19IGlmICRleHBlY3QtPntQUkV9OworICAgICAgbXkgJWFjdHVhbDsK KyAgICAgICRhY3R1YWx7T1VUfSA9ICIkdGVzdF9uYW1lLk8iOworICAgICAgJGFjdHVhbHtFUlJ9 ID0gIiR0ZXN0X25hbWUuRSI7CisgICAgICBwdXNoIEBqdW5rX2ZpbGVzLCAkYWN0dWFse09VVH0s ICRhY3R1YWx7RVJSfTsKKyAgICAgIG15IEBjbWQgPSAoQHByb2csIEBhcmdzLCAiPiAkYWN0dWFs e09VVH0iLCAiMj4gJGFjdHVhbHtFUlJ9Iik7CisgICAgICAkZW52X3ByZWZpeAorICAgICAgICBh bmQgdW5zaGlmdCBAY21kLCAkZW52X3ByZWZpeDsKKyAgICAgIGRlZmluZWQgJGlucHV0X3BpcGVf Y21kCisgICAgICAgIGFuZCB1bnNoaWZ0IEBjbWQsICRpbnB1dF9waXBlX2NtZDsKKyAgICAgIG15 ICRjbWRfc3RyID0gam9pbiAoJyAnLCBAY21kKTsKKworICAgICAgIyBEZWxldGUgZnJvbSB0aGUg ZW52aXJvbm1lbnQgYW55IHN5bWJvbHMgc3BlY2lmaWVkIGJ5IHN5bnRheAorICAgICAgIyBsaWtl IHRoaXM6IHtFTlZfREVMID0+ICdUWid9LgorICAgICAgbXkgJXB1c2hlZF9lbnY7CisgICAgICBm b3JlYWNoIG15ICRlbnZfc3ltIChAZW52X2RlbGV0ZSkKKyAgICAgICAgeworICAgICAgICAgIG15 ICR2YWwgPSBkZWxldGUgJEVOVnskZW52X3N5bX07CisgICAgICAgICAgZGVmaW5lZCAkdmFsCisg ICAgICAgICAgICBhbmQgJHB1c2hlZF9lbnZ7JGVudl9zeW19ID0gJHZhbDsKKyAgICAgICAgfQor CisgICAgICB3YXJuICJSdW5uaW5nIGNvbW1hbmQ6ICckY21kX3N0cidcbiIgaWYgJGRlYnVnOwor ICAgICAgbXkgJHJjID0gMHhmZmZmICYgc3lzdGVtICRjbWRfc3RyOworCisgICAgICAjIFJlc3Rv cmUgYW55IGVudmlyb25tZW50IHNldHRpbmcgd2UgY2hhbmdlZCB2aWEgYSBkZWxldGlvbi4KKyAg ICAgIGZvcmVhY2ggbXkgJGVudl9zeW0gKGtleXMgJXB1c2hlZF9lbnYpCisgICAgICAgIHsKKyAg ICAgICAgICAkRU5WeyRlbnZfc3ltfSA9ICRwdXNoZWRfZW52eyRlbnZfc3ltfTsKKyAgICAgICAg fQorCisgICAgICBpZiAoJHJjID09IDB4ZmYwMCkKKyAgICAgICAgeworICAgICAgICAgIHdhcm4g IiRwcm9ncmFtX25hbWU6IHRlc3QgJHRlc3RfbmFtZSBmYWlsZWQ6IGNvbW1hbmQgZmFpbGVkOlxu IgorICAgICAgICAgICAgLiAiICAnJGNtZF9zdHInOiAkIVxuIjsKKyAgICAgICAgICAkZmFpbCA9 IDE7CisgICAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICB9CisgICAgICAkcmMgPj49IDgg aWYgJHJjID4gMHg4MDsKKyAgICAgIGlmICgkZXhwZWN0LT57RVhJVH0gIT0gJHJjKQorICAgICAg ICB7CisgICAgICAgICAgd2FybiAiJHByb2dyYW1fbmFtZTogdGVzdCAkdGVzdF9uYW1lIGZhaWxl ZDogZXhpdCBzdGF0dXMgbWlzbWF0Y2g6IgorICAgICAgICAgICAgLiAiICBleHBlY3RlZCAkZXhw ZWN0LT57RVhJVH0sIGdvdCAkcmNcbiI7CisgICAgICAgICAgJGZhaWwgPSAxOworICAgICAgICAg IGdvdG8gY2xlYW51cDsKKyAgICAgICAgfQorCisgICAgICBteSAlYWN0dWFsX2RhdGE7CisgICAg ICAjIFJlY29yZCBhY3R1YWwgc3Rkb3V0IGFuZCBzdGRlcnIgY29udGVudHMsIGlmIFBPU1QgbWF5 IG5lZWQgdGhlbS4KKyAgICAgIGlmICgkZXhwZWN0LT57UE9TVH0pCisgICAgICAgIHsKKyAgICAg ICAgICBmb3JlYWNoIG15ICRlbyAocXcgKE9VVCBFUlIpKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICBteSAkb3V0X2ZpbGUgPSAkYWN0dWFseyRlb307CisgICAgICAgICAgICAgIG9wZW4g SU4sICRvdXRfZmlsZQorICAgICAgICAgICAgICAgIG9yICh3YXJuCisgICAgICAgICAgICAgICAg ICAgICIkcHJvZ3JhbV9uYW1lOiBjYW5ub3Qgb3BlbiAkb3V0X2ZpbGUgZm9yIHJlYWRpbmc6ICQh XG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWlsID0gMSwgbmV4dDsKKyAgICAgICAgICAgICAg JGFjdHVhbF9kYXRheyRlb30gPSA8SU4+OworICAgICAgICAgICAgICBjbG9zZSBJTgorICAgICAg ICAgICAgICAgIG9yICh3YXJuICIkcHJvZ3JhbV9uYW1lOiBmYWlsZWQgdG8gcmVhZCAkb3V0X2Zp bGU6ICQhXG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWlsID0gMTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorCisgICAgICBmb3JlYWNoIG15ICRlbyAocXcgKE9VVCBFUlIpKQorICAgICAg ICB7CisgICAgICAgICAgbXkgJHN1YnN0X2V4cHIgPSAkZXhwZWN0LT57UkVTVUxUX1NVQlNUfS0+ eyRlb307CisgICAgICAgICAgaWYgKGRlZmluZWQgJHN1YnN0X2V4cHIpCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIG15ICRvdXQgPSAkYWN0dWFseyRlb307CisgICAgICAgICAgICAgIG15 ICRvcmlnID0gIiRvdXQub3JpZyI7CisKKyAgICAgICAgICAgICAgIyBNb3ZlICRvdXQgYXNpZGUg KHRvICRvcmlnKSwgdGhlbiByZWNyZWF0ZSAkb3V0CisgICAgICAgICAgICAgICMgYnkgdHJhbnNm b3JtaW5nIGVhY2ggbGluZSBvZiAkb3JpZyB2aWEgJHN1YnN0X2V4cHIuCisgICAgICAgICAgICAg IHJlbmFtZSAkb3V0LCAkb3JpZworICAgICAgICAgICAgICAgIG9yICh3YXJuICIkcHJvZ3JhbV9u YW1lOiBjYW5ub3QgcmVuYW1lICRvdXQgdG8gJG9yaWc6ICQhXG4iKSwKKyAgICAgICAgICAgICAg ICAgICRmYWlsID0gMSwgbmV4dDsKKyAgICAgICAgICAgICAgb3BlbiBJTiwgJG9yaWcKKyAgICAg ICAgICAgICAgICBvciAod2FybiAiJHByb2dyYW1fbmFtZTogY2Fubm90IG9wZW4gJG9yaWcgZm9y IHJlYWRpbmc6ICQhXG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWlsID0gMSwgKHVubGluayAk b3JpZyksIG5leHQ7CisgICAgICAgICAgICAgIHVubGluayAkb3JpZworICAgICAgICAgICAgICAg IG9yICh3YXJuICIkcHJvZ3JhbV9uYW1lOiBjYW5ub3QgdW5saW5rICRvcmlnOiAkIVxuIiksCisg ICAgICAgICAgICAgICAgICAkZmFpbCA9IDE7CisgICAgICAgICAgICAgIG9wZW4gT1VULCAiPiRv dXQiCisgICAgICAgICAgICAgICAgb3IgKHdhcm4gIiRwcm9ncmFtX25hbWU6IGNhbm5vdCBvcGVu ICRvdXQgZm9yIHdyaXRpbmc6ICQhXG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWlsID0gMSwg bmV4dDsKKyAgICAgICAgICAgICAgd2hpbGUgKGRlZmluZWQgKG15ICRsaW5lID0gPElOPikpCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgZXZhbCAiXCRfID0gXCRsaW5lOyAk c3Vic3RfZXhwcjsgXCRsaW5lID0gXCRfIjsKKyAgICAgICAgICAgICAgICAgIHByaW50IE9VVCAk bGluZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGNsb3NlIElOOworICAgICAg ICAgICAgICBjbG9zZSBPVVQKKyAgICAgICAgICAgICAgICBvciAod2FybiAiJHByb2dyYW1fbmFt ZTogZmFpbGVkIHRvIHdyaXRlICRvdXQ6ICQhXG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWls ID0gMSwgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIG15ICRlb19sb3dlciA9IGxj ICRlbzsKKyAgICAgICAgICBfY29tcGFyZV9maWxlcyAoJHByb2dyYW1fbmFtZSwgJHRlc3RfbmFt ZSwgJGVvX2xvd2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAkYWN0dWFseyRlb30sICRl eHBlY3QtPnskZW99KQorICAgICAgICAgICAgYW5kICRmYWlsID0gMTsKKyAgICAgICAgfQorCisg ICAgICBmb3JlYWNoIG15ICRwYWlyIChAcG9zdF9jb21wYXJlKQorICAgICAgICB7CisgICAgICAg ICAgbXkgKCRleHBlY3RlZCwgJGFjdHVhbCkgPSBAJHBhaXI7CisgICAgICAgICAgX2NvbXBhcmVf ZmlsZXMgJHByb2dyYW1fbmFtZSwgJHRlc3RfbmFtZSwgdW5kZWYsICRhY3R1YWwsICRleHBlY3Rl ZAorICAgICAgICAgICAgYW5kICRmYWlsID0gMTsKKyAgICAgICAgfQorCisgICAgY2xlYW51cDoK KyAgICAgICRleHBlY3QtPntQT1NUfQorICAgICAgICBhbmQgJnskZXhwZWN0LT57UE9TVH19ICgk YWN0dWFsX2RhdGF7T1VUfSwgJGFjdHVhbF9kYXRhe0VSUn0pOworCisgICAgfQorCisgICMgRklY TUU6IG1heWJlIHVubGluayBmaWxlcyBpbnNpZGUgdGhlIGJpZyBmb3JlYWNoIGxvb3A/CisgIHVu bGluayBAanVua19maWxlcyBpZiAhICRzYXZlX3RlbXBzOworCisgIHJldHVybiAkZmFpbDsKK30K KworIyBGb3IgZWFjaCB0ZXN0IGluIEAkVEVTVFMsIGdlbmVyYXRlIHR3byBhZGRpdGlvbmFsIHRl c3RzLAorIyBvbmUgdXNpbmcgc3RkaW4sIHRoZSBvdGhlciB1c2luZyBhIHBpcGUuICBJLmUuLCBn aXZlbiB0aGlzIG9uZQorIyBbJ2lkZW0tMCcsIHtJTj0+Jyd9LCB7T1VUPT4nJ31dLAorIyBnZW5l cmF0ZSB0aGVzZToKKyMgWydpZGVtLTAucicsICc8Jywge0lOPT4nJ30sIHtPVVQ9PicnfV0sCisj IFsnaWRlbS0wLnAnLCB7SU5fUElQRT0+Jyd9LCB7T1VUPT4nJ31dLAorIyBHZW5lcmF0ZSBuZXcg dGVzdHMgb25seSBpZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBpbnB1dCBzcGVjLgorIyBUaGUgcmV0 dXJuZWQgbGlzdCBvZiB0ZXN0cyBjb250YWlucyBlYWNoIGlucHV0IHRlc3QsIGZvbGxvd2VkCisj IGJ5IHplcm8gb3IgdHdvIGRlcml2ZWQgdGVzdHMuCitzdWIgdHJpcGxlX3Rlc3QoJCkKK3sKKyAg bXkgKCR0ZXN0cykgPSBAXzsKKyAgbXkgQG5ldzsKKyAgZm9yZWFjaCBteSAkdCAoQCR0ZXN0cykK KyAgICB7CisgICAgICBwdXNoIEBuZXcsICR0OworCisgICAgICBteSBAaW47CisgICAgICBteSBA YXJnczsKKyAgICAgIG15IEBsaXN0X29mX2hhc2g7CisgICAgICBmb3JlYWNoIG15ICRlIChAJHQp CisgICAgICAgIHsKKyAgICAgICAgICAhcmVmICRlCisgICAgICAgICAgICBhbmQgcHVzaCAoQGFy Z3MsICRlKSwgbmV4dDsKKworICAgICAgICAgIHJlZiAkZSAmJiByZWYgJGUgZXEgJ0hBU0gnCisg ICAgICAgICAgICBvciAod2FybiAiJDA6ICR0LT5bMF06IHVuZXhwZWN0ZWQgZW50cnkgdHlwZVxu IiksIG5leHQ7CisgICAgICAgICAgZGVmaW5lZCAkZS0+e0lOfQorICAgICAgICAgICAgYW5kIChw dXNoIEBpbiwgJGUtPntJTn0pLCBuZXh0OworICAgICAgICAgIHB1c2ggQGxpc3Rfb2ZfaGFzaCwg JGU7CisgICAgICAgIH0KKyAgICAgICMgQWRkIHZhcmlhbnRzIElGRiB0aGVyZSBpcyBleGFjdGx5 IG9uZSBpbnB1dCBmaWxlLgorICAgICAgQGluID09IDEKKyAgICAgICAgb3IgbmV4dDsKKyAgICAg IHNoaWZ0IEBhcmdzOyAjIGRpc2NhcmQgdGVzdCBuYW1lCisgICAgICBwdXNoIEBuZXcsIFsiJHQt PlswXS5yIiwgQGFyZ3MsICc8Jywge0lOID0+ICRpblswXX0sIEBsaXN0X29mX2hhc2hdOworICAg ICAgcHVzaCBAbmV3LCBbIiR0LT5bMF0ucCIsIEBhcmdzLCB7SU5fUElQRSA9PiAkaW5bMF19LCBA bGlzdF9vZl9oYXNoXTsKKyAgICB9CisgIHJldHVybiBAbmV3OworfQorCisjIyBwYWNrYWdlIHJl dHVybgorMTsKZGlmZiAtLWdpdCBhL3Rlc3RzL0N1U2tpcC5wbSBiL3Rlc3RzL0N1U2tpcC5wbQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjU2ODhhCi0tLSAvZGV2L251bGwK KysrIGIvdGVzdHMvQ3VTa2lwLnBtCkBAIC0wLDAgKzEsMzkgQEAKK3BhY2thZ2UgQ3VTa2lwOwor IyBTa2lwIGEgdGVzdDogZW1pdCBkaWFnIHRvIGxvZyBhbmQgdG8gc3RkZXJyLCBhbmQgZXhpdCA3 NworCisjIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwor b3VyICRNRSA9ICQwIHx8ICI8Pz8/PiI7CisKKyMgRW1pdCBhIGRpYWdub3N0aWMgYm90aCB0byBz dGRlcnIgYW5kIHRvICRzdGRlcnJfZmlsZW5vXy4KKyMgRklYTUU6IGRvbid0IGhhcmQtY29kZSB0 aGF0IHZhbHVlICg5KSwgc2luY2UgaXQncyBhbHJlYWR5IGRlZmluZWQgaW4gaW5pdC5jZmcuCitz dWIgc2tpcCAoJCkKK3sKKyAgbXkgKCRtc2cpID0gQF87CisgIG15ICRzdGRlcnJfZmlsZW5vXyA9 IDk7CisgIHdhcm4gJG1zZzsKKyAgb3BlbiBGSCwgIj4mJHN0ZGVycl9maWxlbm9fIgorICAgIG9y IHdhcm4gIiRNRTogZmFpbGVkIHRvIGR1cCBzdGRlcnJcbiI7CisgIHByaW50IEZIICRtc2c7Cisg IGNsb3NlIEZICisgICAgb3Igd2FybiAiJE1FOiBmYWlsZWQgdG8gY2xvc2UgRkQgJHN0ZGVycl9m aWxlbm9fXG4iOworICBleGl0IDc3OworfQorCisxOwpkaWZmIC0tZ2l0IGEvdGVzdHMvQ3VUbXBk aXIucG0gYi90ZXN0cy9DdVRtcGRpci5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5mZDY1NTU2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvQ3VUbXBkaXIucG0KQEAgLTAs MCArMSwxMTEgQEAKK3BhY2thZ2UgQ3VUbXBkaXI7CisjIGNyZWF0ZSwgdGhlbiBjaGRpciBpbnRv IGEgdGVtcG9yYXJ5IHN1Yi1kaXJlY3RvcnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor CisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBGaWxlOjpUZW1wOwordXNlIEZpbGU6OkZpbmQ7 CisKK291ciAkTUUgPSAkMCB8fCAiPD8/Pz4iOworCitteSAkZGlyOworCitzdWIgc2tpcF90ZXN0 KCQpCit7CisgIHdhcm4gIiRNRTogc2tpcHBpbmcgdGVzdDogdW5zYWZlIHdvcmtpbmcgZGlyZWN0 b3J5IG5hbWU6ICckX1swXSdcbiI7CisgIGV4aXQgNzc7Cit9CisKK3N1YiBjaG1vZF8xCit7Cisg IG15ICRuYW1lID0gJF87CisKKyAgIyBTa2lwIHN5bWxpbmtzIGFuZCBub24tZGlyZWN0b3JpZXMu CisgIC1sICRuYW1lIHx8ICEtZCBfCisgICAgYW5kIHJldHVybjsKKworICBjaG1vZCAwNzAwLCAk bmFtZTsKK30KKworc3ViIGNobW9kX3RyZWUKK3sKKyAgIyBXaGVuIHRlbXBkaXIgZmFpbHMsIGl0 IGNyb2Frcywgd2hpY2ggbGVhdmVzICRkaXIgdW5kZWZpbmVkLgorICBkZWZpbmVkICRkaXIKKyAg ICBvciByZXR1cm47CisKKyAgIyBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGZpbmQgIiRkaXIi IC10eXBlIGQgLXByaW50MHx4YXJncyAtMCBjaG1vZCAtUiA3MDAuCisgIG15ICRvcHRpb25zID0g e3VudGFpbnQgPT4gMSwgd2FudGVkID0+IFwmY2htb2RfMX07CisgIGZpbmQgKCRvcHRpb25zLCAk ZGlyKTsKK30KKworc3ViIGltcG9ydCB7CisgIG15ICRwcmVmaXggPSAkX1sxXTsKKworICAkTUUg ZXEgJy0nICYmIGRlZmluZWQgJHByZWZpeAorICAgIGFuZCAkTUUgPSAkcHJlZml4OworCisgIGlm ICgkcHJlZml4ICF+IC9eXC8vKQorICAgIHsKKyAgICAgIGV2YWwgJ3VzZSBDd2QnOworICAgICAg bXkgJGN3ZCA9ICRAID8gJy4nIDogQ3dkOjpnZXRjd2QoKTsKKyAgICAgICRwcmVmaXggPSAiJGN3 ZC8kcHJlZml4IjsKKyAgICB9CisKKyAgIyBVbnRhaW50IGZvciB0aGUgdXBjb21pbmcgbWtkaXIu CisgICRwcmVmaXggPX4gbSFeKFstK1xAXHcuL10rKSQhCisgICAgb3Igc2tpcF90ZXN0ICRwcmVm aXg7CisgICRwcmVmaXggPSAkMTsKKworICBteSAkb3JpZ2luYWxfcGlkID0gJCQ7CisKKyAgbXkg JG9uX3NpZ19yZW1vdmVfdG1wZGlyID0gc3ViIHsKKyAgICBteSAoJHNpZykgPSBAXzsKKyAgICBp ZiAoJCQgPT0gJG9yaWdpbmFsX3BpZCBhbmQgZGVmaW5lZCAkZGlyKQorICAgICAgeworICAgICAg ICBjaG1vZF90cmVlOworICAgICAgICAjIE9sZGVyIHZlcnNpb25zIG9mIEZpbGU6OlRlbXAgbGFj ayB0aGlzIG1ldGhvZC4KKyAgICAgICAgZXhpc3RzICZGaWxlOjpUZW1wOjpjbGVhbnVwCisgICAg ICAgICAgYW5kICZGaWxlOjpUZW1wOjpjbGVhbnVwOworICAgICAgfQorICAgICRTSUd7JHNpZ30g PSAnREVGQVVMVCc7CisgICAga2lsbCAkc2lnLCAkJDsKKyAgfTsKKworICBmb3JlYWNoIG15ICRz aWcgKHF3IChJTlQgVEVSTSBIVVApKQorICAgIHsKKyAgICAgICRTSUd7JHNpZ30gPSAkb25fc2ln X3JlbW92ZV90bXBkaXI7CisgICAgfQorCisgICRkaXIgPSBGaWxlOjpUZW1wOjp0ZW1wZGlyKCIk cHJlZml4LnRtcC1YWFhYIiwgQ0xFQU5VUCA9PiAxICk7CisgIGNoZGlyICRkaXIKKyAgICBvciB3 YXJuICIkTUU6IGZhaWxlZCB0byBjaGRpciB0byAkZGlyOiAkIVxuIjsKK30KKworRU5EIHsKKyAg IyBNb3ZlIGN3ZCBvdXQgb2YgdGhlIGRpcmVjdG9yeSB3ZSdyZSBhYm91dCB0byByZW1vdmUuCisg ICMgVGhpcyBpcyByZXF1aXJlZCBvbiBzb21lIHN5c3RlbXMsIGFuZCBieSBzb21lIHZlcnNpb25z IG9mIEZpbGU6OlRlbXAuCisgIGNoZGlyICcuLicKKyAgICBvciB3YXJuICIkTUU6IGZhaWxlZCB0 byBjaGRpciB0byAuLiBmcm9tICRkaXI6ICQhXG4iOworCisgIG15ICRzYXZlZF9lcnJubyA9ICQ/ OworICBjaG1vZF90cmVlOworICAkPyA9ICRzYXZlZF9lcnJubzsKK30KKworMTsKZGlmZiAtLWdp dCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KaW5kZXggNjI5ZDMyMi4u Y2NkMDE5NiAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvTWFrZWZp bGUuYW0KQEAgLTE0LDYgKzE0LDI2IEBACiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKK1RF U1RfRVhURU5TSU9OUyA9IC5zaCAucGwKKworaWYgSEFWRV9QRVJMCitURVNUU1VJVEVfUEVSTCA9 ICQoUEVSTCkKK2Vsc2UKK1RFU1RTVUlURV9QRVJMID0gJChTSEVMTCkgJChzcmNkaXIpL25vLXBl cmwKK2VuZGlmCisKKyMgT3B0aW9ucyBwYXNzZWQgdG8gdGhlIHBlcmwgaW52b2NhdGlvbnMgcnVu bmluZyB0aGUgcGVybCB0ZXN0IHNjcmlwdHMuCitURVNUU1VJVEVfUEVSTF9PUFRJT05TID0gLXcg LUkkKHNyY2RpcikgLU1Db3JldXRpbHMgLU1DdVNraXAKKyMgJyRmJyBpcyBzZXQgYnkgdGhlIEF1 dG9tYWtlLWdlbmVyYXRlZCB0ZXN0IGhhcm5lc3MgdG8gdGhlIHBhdGggb2YgdGhlCisjIGN1cnJl bnQgdGVzdCBzY3JpcHQgc3RyaXBwZWQgb2YgVlBBVEggY29tcG9uZW50cywgYW5kIGlzIHVzZWQg YnkgdGhlCisjIEN1VG1wZGlyIG1vZHVsZSB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHRl bXBvcmFyeSBmaWxlcyB0byBiZQorIyB1c2VkLiAgTm90ZSB0aGF0ICRmIGlzIGEgc2hlbGwgdmFy aWFibGUsIG5vdCBhIG1ha2UgbWFjcm8sIHNvIHRoZSB1c2UKKyMgb2YgJyQkZicgYmVsb3cgaXMg Y29ycmVjdCwgYW5kIG5vdCBhIHR5cG8uCitURVNUU1VJVEVfUEVSTF9PUFRJT05TICs9IC1NIkN1 VG1wZGlyIHF3KCQkZikiCisKK1NIX0xPR19DT01QSUxFUiA9ICQoU0hFTEwpCitQTF9MT0dfQ09N UElMRVIgPSAkKFRFU1RTVUlURV9QRVJMKSAkKFRFU1RTVUlURV9QRVJMX09QVElPTlMpCisKIGNo ZWNrX1BST0dSQU1TID0gZ2V0LW1iLWN1ci1tYXggZGZhLW1hdGNoLWF1eAogQU1fQ1BQRkxBR1Mg PSAtSSQodG9wX2J1aWxkZGlyKS9saWIgLUkkKHRvcF9zcmNkaXIpL2xpYiBcCiAgIC1JJCh0b3Bf c3JjZGlyKS9zcmMKQEAgLTEzMSwxMiArMTUxLDE2IEBAIEVYVFJBX0RJU1QgPQkJCQkJXAogICAk KFRFU1RTKQkJCQkJXAogICBicmUuYXdrCQkJCQlcCiAgIGJyZS50ZXN0cwkJCQkJXAorICBDb3Jl dXRpbHMucG0JCQkJCVwKKyAgQ3VTa2lwLnBtCQkJCQlcCisgIEN1VG1wZGlyLnBtCQkJCQlcCiAg IGVyZS5hd2sJCQkJCVwKICAgZXJlLnRlc3RzCQkJCQlcCiAgIGluaXQuY2ZnCQkJCQlcCiAgIGlu aXQuc2gJCQkJCVwKICAga2hhZGFmeS5saW5lcwkJCQkJXAogICBraGFkYWZ5LnJlZ2V4cAkJCQlc CisgIG5vLXBlcmwgICAgICAgCQkJCVwKICAgc3BlbmNlcjEuYXdrCQkJCQlcCiAgIHNwZW5jZXIx LnRlc3RzCQkJCVwKICAgc3BlbmNlcjEtbG9jYWxlLmF3awpkaWZmIC0tZ2l0IGEvdGVzdHMvbm8t cGVybCBiL3Rlc3RzL25vLXBlcmwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u OTU2YTgyNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL25vLXBlcmwKQEAgLTAsMCArMSw2IEBA CisjISAvYmluL3NoCisjIFBlcmwgaXMgbm90IGF2YWlsYWJsZSwgdGhlIHRlc3Qgc2hvdWxkIGJl IGNvbnNpZGVyZWQgc2tpcHBlZC4KKyMgRkQgOSBzaG91bGQgaGF2ZSBiZWVuIG9wZW5lZCBieSB0 aGUgdGVzdCBzdWl0ZSBoYXJuZXNzLCBwb2ludGluZworIyB0byB0aGUgb3JpZ2luYWwgc3RkZXJy ICh1c3VhbGx5LCB0aGUgdXNlcidzIHRlcm1pbmFsKS4KK2VjaG8gInRlc3Qgc2tpcHBlZDogbm8g dXNhYmxlIHZlcnNpb24gb2YgUGVybCBmb3VuZCIgPiY5CitleGl0IDc3Ci0tIAoyLjMuNwoK --001a11481e0ad33d4e051a2bc1f2-- From unknown Sun Jun 22 11:47:18 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Jim Meyering Subject: bug#20989: closed (Re: bug#20989: [PATCH] tests: add coreutils' perl-driven test framework) Message-ID: References: X-Gnu-PR-Message: they-closed 20989 X-Gnu-PR-Package: grep X-Gnu-PR-Keywords: patch Reply-To: 20989@debbugs.gnu.org Date: Sat, 08 Oct 2016 21:16:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1475961362-21520-1" This is a multi-part message in MIME format... ------------=_1475961362-21520-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #20989: [PATCH] tests: add coreutils' perl-driven test framework which was filed against the grep package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 20989@debbugs.gnu.org. --=20 20989: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D20989 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1475961362-21520-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 20989-done) by debbugs.gnu.org; 8 Oct 2016 21:15:32 +0000 Received: from localhost ([127.0.0.1]:49082 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bsyxw-0005aL-JG for submit@debbugs.gnu.org; Sat, 08 Oct 2016 17:15:32 -0400 Received: from mail-vk0-f53.google.com ([209.85.213.53]:34611) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bsyxv-0005a7-7b for 20989-done@debbugs.gnu.org; Sat, 08 Oct 2016 17:15:31 -0400 Received: by mail-vk0-f53.google.com with SMTP id b186so68810870vkb.1 for <20989-done@debbugs.gnu.org>; Sat, 08 Oct 2016 14:15:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=T7eiyA990D+Bvd7Doal0AFijcMk9D0P2eGoHu1v963E=; b=hxGyFlHWW2yDV6okwK5JoTa9rH4PWC1Luv+pPBeJN0sdLg2Fxlr0rznOSafiIp+Rl2 zHJ7czMDRSYUPUHrcrsxK8LUWAp+/HMFMaj69rEBhTgEJUFfGkOs09dRBiIcqekpxv81 2ZghIo+6kt6/Be0kuxfEnKgdzevl1hZvxgrI69oxclLM7fRnlWIO2HHuiaDOxJuqlZpP IdglEggCTpYQRJfrD7F2AvKmDy91GFUWRvS0NrV6Tlu/gKlslQD3MBeg63mCqAh6RLTh jV9es7c4Hzk48tswwQKIUVu/6racZZ5OnajOFkMtIcyV9HY93ju5fCuL2JynUw/xHo26 s4jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to; bh=T7eiyA990D+Bvd7Doal0AFijcMk9D0P2eGoHu1v963E=; b=QOyflpWzHJvuXZIK/zo2mM0xPA8ODBWYSpFdM1mIBg4b8BnHsj33+d+KNMnkSAsJOI 8p/NWq6agu7Qda16+MCPo30sdMVjksWdzs9RLVY8iuK4k/JOqM+21uWYGLig30o7o2HM tWhzGwXDZu4WkVMdLZ8Z3NaI/TjNrSZ4gLM15IwKAcjPSkpwF4uPicuSeS00k9MxDJXW YYIgiTnXmJWApZRZ0h31HF4EYG917h9/fvQEB6WRYPPZat1t0SY7IG0x++ulG7euQSKw PsjM/OG9i1ibwih8OYaKLAfWp7TidZUs38lAe/zG6I8/uyuoa+pDZSd558zOKhgOhkvr 77HA== X-Gm-Message-State: AA6/9RnQDo8ATJT1UN0dcZuNXb41cTC+KVvPQv/br8D8Za2rYGjdayvgSG5OdyEFKBz/sSpUjgf31FetejWBmQ== X-Received: by 10.31.244.15 with SMTP id s15mr18594757vkh.31.1475961325683; Sat, 08 Oct 2016 14:15:25 -0700 (PDT) MIME-Version: 1.0 Received: by 10.176.80.207 with HTTP; Sat, 8 Oct 2016 14:15:05 -0700 (PDT) In-Reply-To: References: From: Jim Meyering Date: Sat, 8 Oct 2016 14:15:05 -0700 X-Google-Sender-Auth: HF885OFVO-HTV004kZu0dX2tod0 Message-ID: Subject: Re: bug#20989: [PATCH] tests: add coreutils' perl-driven test framework To: 20989-done@debbugs.gnu.org Content-Type: text/plain; charset=UTF-8 X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 20989-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On Sun, Jul 5, 2015 at 7:35 PM, Jim Meyering wrote: > I want to use this framework (from coreutils) here in grep, too, so... Done, so closing. ------------=_1475961362-21520-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 6 Jul 2015 02:35:46 +0000 Received: from localhost ([127.0.0.1]:41258 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZBwFy-0007p9-Vg for submit@debbugs.gnu.org; Sun, 05 Jul 2015 22:35:46 -0400 Received: from eggs.gnu.org ([208.118.235.92]:60469) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZBwFt-0007on-7l for submit@debbugs.gnu.org; Sun, 05 Jul 2015 22:35:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZBwFk-0005Ib-C1 for submit@debbugs.gnu.org; Sun, 05 Jul 2015 22:35:31 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: ** X-Spam-Status: No, score=2.5 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID,URIBL_BLACK autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:49103) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZBwFk-0005IW-7r for submit@debbugs.gnu.org; Sun, 05 Jul 2015 22:35:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45733) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZBwFg-0001U2-WA for bug-grep@gnu.org; Sun, 05 Jul 2015 22:35:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZBwFe-0005Hy-11 for bug-grep@gnu.org; Sun, 05 Jul 2015 22:35:24 -0400 Received: from mail-yk0-x233.google.com ([2607:f8b0:4002:c07::233]:32987) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZBwFd-0005Ht-P2 for bug-grep@gnu.org; Sun, 05 Jul 2015 22:35:21 -0400 Received: by ykeo3 with SMTP id o3so16263756yke.0 for ; Sun, 05 Jul 2015 19:35:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:from:date:message-id:subject:to:content-type; bh=w5aKJXN6ku7egSPrJHQEpdTZqiB/Kb7GJ8S7LtwTsxY=; b=kcYeI1DCS24/YwU+3xoUiFJoTpMMHAw1UCo1UTm8Q77DOWj0LUmCfdfuuhQfBL7Bh2 2W4MW5qe7ucohO21VtrimpXcf5szxqsmM1qDfqoftJzS0tDYCLEOK1vLflQpfS58PXAb fwj1nzZWcHoQXCmM9r8Jup775g7bAkdtSGhHF8N0aho5Hw5GIlLf9m0ADeB1qyGR2Dw1 yYO/5dSQikYzicEW3EFPvI2IGQBCqiBGMvrciw0/Z2OJw08JOmk4+tOQt6NmjcM0CMxQ j5EIiKdioSyAP7uQyk4rDPvjBom875NhUQO3XICGD+zPXVpcx+2MqnLoA5jG6Jhgggtf FVKA== X-Received: by 10.13.203.83 with SMTP id n80mr57104477ywd.10.1436150121284; Sun, 05 Jul 2015 19:35:21 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.201.66 with HTTP; Sun, 5 Jul 2015 19:35:01 -0700 (PDT) From: Jim Meyering Date: Sun, 5 Jul 2015 19:35:01 -0700 X-Google-Sender-Auth: oZa3uj3eHCmyKGh50JtgMTz7ovw Message-ID: Subject: [PATCH] tests: add coreutils' perl-driven test framework To: bug-grep@gnu.org Content-Type: multipart/mixed; boundary=001a11481e0ad33d4e051a2bc1f2 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --001a11481e0ad33d4e051a2bc1f2 Content-Type: text/plain; charset=UTF-8 I want to use this framework (from coreutils) here in grep, too, so... --001a11481e0ad33d4e051a2bc1f2 Content-Type: text/x-patch; charset=US-ASCII; name="0001-tests-add-coreutils-perl-driven-test-framework.patch" Content-Disposition: attachment; filename="0001-tests-add-coreutils-perl-driven-test-framework.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ibraog180 RnJvbSBlZjQwOTFmMDgxM2Y3YzA0NjVmNzJhY2U3NjFkZmNlZWU1NDdjMWRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gTWV5ZXJpbmcgPG1leWVyaW5nQGZiLmNvbT4KRGF0ZTog U2F0LCAyNyBKdW4gMjAxNSAwODo0MzozMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBh ZGQgY29yZXV0aWxzJyBwZXJsLWRyaXZlbiB0ZXN0IGZyYW1ld29yawoKKiBjb25maWd1cmUuYWM6 IFNldCB0aGUgQU1fQ09ORElUSU9OQUwgdmFyaWFibGUsIEhBVkVfUEVSTC4KKiB0ZXN0cy9Db3Jl dXRpbHMucG06IE5ldyBmaWxlLgoqIHRlc3RzL0N1U2tpcC5wbTogTmV3IGZpbGUuCiogdGVzdHMv Q3VUbXBkaXIucG06IE5ldyBmaWxlLgoqIHRlc3RzL25vLXBlcmw6IE5ldyBmaWxlLgoqIHRlc3Rz L01ha2VmaWxlLmFtOiBTZXQgdXAgdG8gdXNlIC5wbCB0ZXN0czoKKFRFU1RfRVhURU5TSU9OUywg VEVTVFNVSVRFX1BFUkwsIFRFU1RTVUlURV9QRVJMX09QVElPTlMpOiBEZWZpbmUuCihTSF9MT0df Q09NUElMRVIsIFBMX0xPR19DT01QSUxFUik6IERlZmluZS4KKEVYVFJBX0RJU1QpOiBBZGQgdGhl IGZvdXIgbmV3IGZpbGUgbmFtZXMuCi0tLQogY29uZmlndXJlLmFjICAgICAgIHwgICA3ICsKIHRl c3RzL0NvcmV1dGlscy5wbSB8IDYyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogdGVzdHMvQ3VTa2lwLnBtICAgIHwgIDM5ICsrKysKIHRlc3Rz L0N1VG1wZGlyLnBtICB8IDExMSArKysrKysrKysrCiB0ZXN0cy9NYWtlZmlsZS5hbSAgfCAgMjQg KysrCiB0ZXN0cy9uby1wZXJsICAgICAgfCAgIDYgKwogNiBmaWxlcyBjaGFuZ2VkLCA4MDcgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL0NvcmV1dGlscy5wbQogY3JlYXRl IG1vZGUgMTAwNjQ0IHRlc3RzL0N1U2tpcC5wbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL0N1 VG1wZGlyLnBtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvbm8tcGVybAoKZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzZjZkMzg5Li4wYTRmMDlkIDEwMDY0 NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC05NCw2ICs5NCwxMyBA QCBBQ19UWVBFX1NJWkVfVAogQUNfQ19DT05TVAogZ2xfSU5JVAoKKyMgVGhlIHRlc3Qgc3VpdGUg bmVlZHMgdG8ga25vdyBpZiB3ZSBoYXZlIGEgd29ya2luZyBwZXJsLgorIyBGSVhNRTogdGhpcyBp cyBzdWJvcHRpbWFsLiAgSWRlYWxseSwgd2Ugd291bGQgYmUgYWJsZSB0byBjYWxsIGdsX1BFUkwK KyMgd2l0aCBhbiBBQ1RJT04tSUYtTk9ULUZPVU5EIGFyZ3VtZW50IC4uLgorY3VfaGF2ZV9wZXJs PXllcworY2FzZSAkUEVSTCBpbiAqIi9taXNzaW5nICIqKSBjdV9oYXZlX3Blcmw9bm87OyBlc2Fj CitBTV9DT05ESVRJT05BTChbSEFWRV9QRVJMXSwgW3Rlc3QgJGN1X2hhdmVfcGVybCA9IHllc10p CisKIEFDX0FSR19FTkFCTEUoW2djYy13YXJuaW5nc10sCiAgIFtBU19IRUxQX1NUUklORyhbLS1l bmFibGUtZ2NjLXdhcm5pbmdzXSwKICAgICAgICAgICAgICAgICAgIFt0dXJuIG9uIGxvdHMgb2Yg R0NDIHdhcm5pbmdzIChmb3IgZGV2ZWxvcGVycyldKV0sCmRpZmYgLS1naXQgYS90ZXN0cy9Db3Jl dXRpbHMucG0gYi90ZXN0cy9Db3JldXRpbHMucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYmQyMDg4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0NvcmV1dGlscy5wbQpA QCAtMCwwICsxLDYyMCBAQAorcGFja2FnZSBDb3JldXRpbHM7CisjIFRoaXMgaXMgYSB0ZXN0aW5n IGZyYW1ld29yay4KKworIyBDb3B5cmlnaHQgKEMpIDE5OTgtMjAxNSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK3VzZSBzdHJpY3Q7Cit1c2UgdmFy cyBxdygkVkVSU0lPTiBASVNBIEBFWFBPUlQpOworCit1c2UgRmlsZUhhbmRsZTsKK3VzZSBGaWxl OjpDb21wYXJlIHF3KGNvbXBhcmUpOworCitASVNBID0gcXcoRXhwb3J0ZXIpOworKCRWRVJTSU9O ID0gJyRSZXZpc2lvbjogMS41ICQgJykgPX4gdHIvWzAtOV0uLy9jZDsKK0BFWFBPUlQgPSBxdyAo cnVuX3Rlc3RzIHRyaXBsZV90ZXN0IGdldGxpbWl0cyk7CisKK215ICRkZWJ1ZyA9ICRFTlZ7REVC VUd9OworCitteSBAVHlwZXMgPSBxdyAoSU4gSU5fUElQRSBPVVQgRVJSIEFVWCBDTVAgRVhJVCBQ UkUgUE9TVCBPVVRfU1VCU1QKKyAgICAgICAgICAgICAgICBFUlJfU1VCU1QgRU5WIEVOVl9ERUwp OworbXkgJVR5cGVzID0gbWFwIHskXyA9PiAxfSBAVHlwZXM7CitteSAlWmVyb19vbmVfdHlwZSA9 IG1hcCB7JF8gPT4gMX0KKyAgIHF3IChPVVQgRVJSIEVYSVQgUFJFIFBPU1QgT1VUX1NVQlNUIEVS Ul9TVUJTVCBFTlYpOworbXkgJHNyY2RpciA9ICIkRU5We3NyY2Rpcn0iOworbXkgJEdsb2JhbF9j b3VudCA9IDE7CisKKyMgV2hlbiBydW5uaW5nIGluIGEgREpHUFAgZW52aXJvbm1lbnQsIG1ha2Ug JEVOVntTSEVMTH0gcG9pbnQgdG8gYmFzaC4KKyMgT3RoZXJ3aXNlLCBhIGJhZCBzaGVsbCBtaWdo dCBiZSB1c2VkIChlLmcuIGNvbW1hbmQuY29tKSBhbmQgbWFueQorIyB0ZXN0cyB3b3VsZCBmYWls LgorZGVmaW5lZCAkRU5We0RKRElSfQorICBhbmQgJEVOVntTSEVMTH0gPSAiJEVOVntESkRJUn0v YmluL2Jhc2guZXhlIjsKKworIyBBIGZpbGUgc3BlYzogYSBzY2FsYXIgb3IgYSByZWZlcmVuY2Ug dG8gYSBzaW5nbGUta2V5ZWQgaGFzaAorIyA9PT09PT09PT09PT09PT09CisjICdjb250ZW50cycg ICAgICAgICAgICAgICBjb250ZW50cyBvbmx5IChmaWxlIG5hbWUgaXMgZGVyaXZlZCBmcm9tIHRl c3QgbmFtZSkKKyMge2ZpbGVuYW1lID0+ICdjb250ZW50cyd9IGZpbGVuYW1lIGFuZCBjb250ZW50 cworIyB7ZmlsZW5hbWUgPT4gdW5kZWZ9ICAgICAgZmlsZW5hbWUgb25seSAtLSAkKHNyY2Rpcikv dGVzdHMvZmlsZW5hbWUgbXVzdCBleGlzdAorIworIyBGSVhNRTogSWYgdGhlcmUgaXMgbW9yZSB0 aGFuIG9uZSBpbnB1dCBmaWxlLCB0aGVuIHlvdSBjYW4ndCBzcGVjaWZ5ICdSRURJUicuCisjIFBJ UEUgaXMgc3RpbGwgb2suCisjCisjIEkvTyBzcGVjOiBhIGhhc2ggcmVmIHdpdGggdGhlIGZvbGxv d2luZyBwcm9wZXJ0aWVzCisjID09PT09PT09PT09PT09PT0KKyMgLSBvbmUga2V5L3ZhbHVlIHBh aXIKKyMgLSB0aGUga2V5IG11c3QgYmUgb25lIG9mIHRoZXNlIHN0cmluZ3M6IElOLCBPVVQsIEVS UiwgQVVYLCBDTVAsIEVYSVQKKyMgLSB0aGUgdmFsdWUgbXVzdCBiZSBhIGZpbGUgc3BlYworIyB7 T1VUID0+ICdkYXRhJ30gICAgcHV0IGRhdGEgaW4gYSB0ZW1wIGZpbGUgYW5kIGNvbXBhcmUgaXQg dG8gc3Rkb3V0IGZyb20gY21kCisjIHtPVVQgPT4geydmaWxlbmFtZSc9PnVuZGVmfX0gY29tcGFy ZSBjb250ZW50cyBvZiBleGlzdGluZyBmaWxlbmFtZSB0bworIyAgICAgICAgICAgc3Rkb3V0IGZy b20gY21kCisjIHtPVVQgPT4geydmaWxlbmFtZSc9PlskQ1RPUiwgJERUT1JdfX0gJENUT1IgYW5k ICREVE9SIGFyZSByZWZlcmVuY2VzIHRvCisjICAgICAgICAgICBmdW5jdGlvbnMsIGVhY2ggd2hp Y2ggaXMgcGFzc2VkIHRoZSBzaW5nbGUgYXJndW1lbnQgJ2ZpbGVuYW1lJy4KKyMgICAgICAgICAg ICRDVE9SIG11c3QgY3JlYXRlICdmaWxlbmFtZScuCisjICAgICAgICAgICBEVE9SIG1heSBiZSBv bWl0dGVkIGluIHdoaWNoIGNhc2UgJ3N1Ynt1bmxpbmsgQF9bMF19JyBpcyB1c2VkLgorIyAgICAg ICAgICAgRklYTUU6IGltcGxlbWVudCB0aGlzCisjIHtFUlIgPT4gLi4ufQorIyAgICAgICAgICAg U2FtZSBhcyBmb3IgT1VULCBidXQgY29tcGFyZSB3aXRoIHN0ZGVyciwgbm90IHN0ZG91dC4KKyMg e09VVF9TVUJTVCA9PiAncy92YXJpYWJsZV9vdXRwdXQvZXhwZWN0ZWRfb3V0cHV0Lyd9CisjICAg VHJhbnNmb3JtIGFjdHVhbCBzdGFuZGFyZCBvdXRwdXQgYmVmb3JlIGNvbXBhcmluZyBpdCBhZ2Fp bnN0IGV4cGVjdGVkLgorIyAgIFRoaXMgaXMgdXNlZnVsIGUuZy4gZm9yIHByb2dyYW1zIGxpa2Ug ZHUgdGhhdCBwcm9kdWNlIG91dHB1dCB0aGF0CisjICAgdmFyaWVzIGEgbG90IGZyb20gc3lzdGVt LiAgRS5nLiwgYW4gZW1wdHkgZmlsZSBtYXkgY29uc3VtZSB6ZXJvIGZpbGUKKyMgICBibG9ja3Ms IG9yIG1vcmUsIGRlcGVuZGluZyBvbiB0aGUgT1MgYW5kIG9uIHRoZSBmaWxlIHN5c3RlbSB0eXBl LgorIyB7RVJSX1NVQlNUID0+ICdzL3ZhcmlhYmxlX291dHB1dC9leHBlY3RlZF9vdXRwdXQvJ30K KyMgICBUcmFuc2Zvcm0gYWN0dWFsIHN0ZGVyciBvdXRwdXQgYmVmb3JlIGNvbXBhcmluZyBpdCBh Z2FpbnN0IGV4cGVjdGVkLgorIyAgIFRoaXMgaXMgdXNlZnVsIHdoZW4gdmVyaWZ5aW5nIHRoYXQg d2UgZ2V0IGEgbWVhbmluZ2Z1bCBkaWFnbm9zdGljLgorIyAgIEZvciBleGFtcGxlLCBpbiBybS9m YWlsLTJlcGVybSwgd2UgaGF2ZSB0byBhY2NvdW50IGZvciB0aHJlZSBkaWZmZXJlbnQKKyMgICBk aWFnbm9zdGljczogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQsIE5vdCBvd25lciwgYW5kIFBlcm1p c3Npb24gZGVuaWVkLgorIyB7RVhJVCA9PiBOfSBleHBlY3QgZXhpdCBzdGF0dXMgb2YgY21kIHRv IGJlIE4KKyMge0VOViA9PiAnVkFSPXZhbCAuLi4nfQorIyAgIFByZXBlbmQgJ1ZBUj12YWwgLi4u JyB0byB0aGUgY29tbWFuZCB0aGF0IHdlIGV4ZWN1dGUgdmlhICdzeXN0ZW0nLgorIyB7RU5WX0RF TCA9PiAnVkFSJ30KKyMgICBSZW1vdmUgVkFSIGZyb20gdGhlIGVudmlyb25tZW50IGp1c3QgYmVm b3JlIHJ1bm5pbmcgdGhlIGNvcnJlc3BvbmRpbmcKKyMgICBjb21tYW5kLCBhbmQgcmVzdG9yZSBh bnkgdmFsdWUganVzdCBhZnRlcndhcmRzLgorIworIyBUaGVyZSBtYXkgYmUgbWFueSBpbnB1dCBm aWxlIHNwZWNzLiAgRmlsZSBuYW1lcyBmcm9tIHRoZSBpbnB1dCBzcGVjcworIyBhcmUgY29uY2F0 ZW5hdGVkIGluIG9yZGVyIG9uIHRoZSBjb21tYW5kIGxpbmUuCisjIFRoZXJlIG1heSBiZSBhdCBt b3N0IG9uZSBvZiB0aGUgT1VULSwgRVJSLSwgYW5kIEVYSVQta2V5ZWQgc3BlY3MuCisjIElmIHRo ZSBPVVQtKG9yIEVSUikta2V5ZWQgaGFzaCByZWYgaXMgb21pdHRlZCwgdGhlbiBleHBlY3Qgbm8g b3V0cHV0CisjICAgb24gc3Rkb3V0IChvciBzdGRlcnIpLgorIyBJZiB0aGUgRVhJVC1rZXllZCBv bmUgaXMgb21pdHRlZCwgdGhlbiBleHBlY3QgdGhlIGV4aXQgc3RhdHVzIHRvIGJlIHplcm8uCisK KyMgRklYTUU6IE1ha2Ugc3VyZSB0aGF0IG5vIGp1bmtmaWxlIGlzIGFsc28gbGlzdGVkIGFzIGEK KyMgbm9uLWp1bmtmaWxlIChpLmUuLCB3aXRoIHVuZGVmIGZvciBjb250ZW50cykKKworc3ViIF9z aGVsbF9xdW90ZSAoJCkKK3sKKyAgbXkgKCRzdHJpbmcpID0gQF87CisgICRzdHJpbmcgPX4gcy9c Jy9cJ1xcXCdcJy9nOworICByZXR1cm4gIickc3RyaW5nJyI7Cit9CisKK3N1YiBfY3JlYXRlX2Zp bGUgKCQkJCQpCit7CisgIG15ICgkcHJvZ3JhbV9uYW1lLCAkdGVzdF9uYW1lLCAkZmlsZV9uYW1l LCAkZGF0YSkgPSBAXzsKKyAgbXkgJGZpbGU7CisgIGlmIChkZWZpbmVkICRmaWxlX25hbWUpCisg ICAgeworICAgICAgJGZpbGUgPSAkZmlsZV9uYW1lOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgICRmaWxlID0gIiR0ZXN0X25hbWUuJEdsb2JhbF9jb3VudCI7CisgICAgICArKyRHbG9iYWxf Y291bnQ7CisgICAgfQorCisgIHdhcm4gImNyZWF0aW5nIGZpbGUgJyRmaWxlJyB3aXRoIGNvbnRl bnRzICckZGF0YSdcbiIgaWYgJGRlYnVnOworCisgICMgVGhlIHRlc3Qgc3BlYyBnYXZlIGEgc3Ry aW5nLgorICAjIFdyaXRlIGl0IHRvIGEgdGVtcCBmaWxlIGFuZCByZXR1cm4gdGVtcGZpbGUgbmFt ZS4KKyAgbXkgJGZoID0gbmV3IEZpbGVIYW5kbGUgIj4gJGZpbGUiOworICBkaWUgIiRwcm9ncmFt X25hbWU6ICRmaWxlOiAkIVxuIiBpZiAhICRmaDsKKyAgcHJpbnQgJGZoICRkYXRhOworICAkZmgt PmNsb3NlIHx8IGRpZSAiJHByb2dyYW1fbmFtZTogJGZpbGU6ICQhXG4iOworCisgIHJldHVybiAk ZmlsZTsKK30KKworc3ViIF9jb21wYXJlX2ZpbGVzICgkJCQkJCkKK3sKKyAgbXkgKCRwcm9ncmFt X25hbWUsICR0ZXN0X25hbWUsICRpbl9vcl9vdXQsICRhY3R1YWwsICRleHBlY3RlZCkgPSBAXzsK KworICBteSAkZGlmZmVyID0gY29tcGFyZSAoJGFjdHVhbCwgJGV4cGVjdGVkKTsKKyAgaWYgKCRk aWZmZXIpCisgICAgeworICAgICAgbXkgJGluZm8gPSAoZGVmaW5lZCAkaW5fb3Jfb3V0ID8gInN0 ZCRpbl9vcl9vdXQgIiA6ICcnKTsKKyAgICAgIHdhcm4gIiRwcm9ncmFtX25hbWU6IHRlc3QgJHRl c3RfbmFtZTogJHtpbmZvfW1pc21hdGNoLCBjb21wYXJpbmcgIgorICAgICAgICAuICIkZXhwZWN0 ZWQgKGV4cGVjdGVkKSBhbmQgJGFjdHVhbCAoYWN0dWFsKVxuIjsKKyAgICAgICMgSWdub3JlIGFu eSBmYWlsdXJlLCBkaXNjYXJkIHN0ZGVyci4KKyAgICAgIHN5c3RlbSAiZGlmZiAtYyAkZXhwZWN0 ZWQgJGFjdHVhbCAyPi9kZXYvbnVsbCI7CisgICAgfQorCisgIHJldHVybiAkZGlmZmVyOworfQor CitzdWIgX3Byb2Nlc3NfZmlsZV9zcGVjICgkJCQkJCkKK3sKKyAgbXkgKCRwcm9ncmFtX25hbWUs ICR0ZXN0X25hbWUsICRmaWxlX3NwZWMsICR0eXBlLCAkanVua19maWxlcykgPSBAXzsKKworICBt eSAoJGZpbGVfbmFtZSwgJGNvbnRlbnRzKTsKKyAgaWYgKCFyZWYgJGZpbGVfc3BlYykKKyAgICB7 CisgICAgICAoJGZpbGVfbmFtZSwgJGNvbnRlbnRzKSA9ICh1bmRlZiwgJGZpbGVfc3BlYyk7Cisg ICAgfQorICBlbHNpZiAocmVmICRmaWxlX3NwZWMgZXEgJ0hBU0gnKQorICAgIHsKKyAgICAgIG15 ICRuID0ga2V5cyAlJGZpbGVfc3BlYzsKKyAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3Rf bmFtZTogJHR5cGUgc3BlYyBoYXMgJG4gZWxlbWVudHMgLS0iCisgICAgICAgIC4gIiBleHBlY3Rl ZCAxXG4iCisgICAgICAgICAgaWYgJG4gIT0gMTsKKyAgICAgICgkZmlsZV9uYW1lLCAkY29udGVu dHMpID0gZWFjaCAlJGZpbGVfc3BlYzsKKworICAgICAgIyBUaGlzIGhhcHBlbnMgZm9yIHRoZSBB VVggaGFzaCBpbiBhbiBpb19zcGVjIGxpa2UgdGhpczoKKyAgICAgICMge0NNUD0+IFsnenkxMjN1 dHNycXBvbm1sa2ppJywgeydAQVVYQCc9PiB1bmRlZn1dfSwKKyAgICAgIGRlZmluZWQgJGNvbnRl bnRzCisgICAgICAgIG9yIHJldHVybiAkZmlsZV9uYW1lOworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogaW52YWxpZCBSSFMgaW4gJHR5 cGUtc3BlY1xuIgorICAgIH0KKworICBteSAkaXNfanVua19maWxlID0gKCEgZGVmaW5lZCAkZmls ZV9uYW1lCisgICAgICAgICAgICAgICAgICAgICAgfHwgKCgkdHlwZSBlcSAnSU4nIHx8ICR0eXBl IGVxICdBVVgnIHx8ICR0eXBlIGVxICdDTVAnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAm JiBkZWZpbmVkICRjb250ZW50cykpOworICBteSAkZmlsZSA9IF9jcmVhdGVfZmlsZSAoJHByb2dy YW1fbmFtZSwgJHRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlX25h bWUsICRjb250ZW50cyk7CisKKyAgaWYgKCRpc19qdW5rX2ZpbGUpCisgICAgeworICAgICAgcHVz aCBAJGp1bmtfZmlsZXMsICRmaWxlCisgICAgfQorICBlbHNlCisgICAgeworICAgICAgIyBGSVhN RTogcHV0ICRzcmNkaXIgaW4gaGVyZSBzb21ld2hlcmUKKyAgICAgIHdhcm4gIiRwcm9ncmFtX25h bWU6ICR0ZXN0X25hbWU6IHNwZWNpZmllZCBmaWxlICckZmlsZScgZG9lcyIKKyAgICAgICAgLiAi IG5vdCBleGlzdFxuIgorICAgICAgICAgIGlmICEgLWYgIiRzcmNkaXIvdGVzdHMvJGZpbGUiOwor ICAgIH0KKworICByZXR1cm4gJGZpbGU7Cit9CisKK3N1YiBfYXRfcmVwbGFjZSAoJCQpCit7Cisg IG15ICgkbWFwLCAkcykgPSBAXzsKKyAgZm9yZWFjaCBteSAkZW8gKHF3IChBVVggT1VUIEVSUikp CisgICAgeworICAgICAgbXkgJGYgPSAkbWFwLT57JGVvfTsKKyAgICAgICRmCisgICAgICAgIGFu ZCAkcyA9fiAvXEAkZW9cQC8KKyAgICAgICAgICBhbmQgJHMgPX4gcy9cQCRlb1xALyRmL2c7Cisg ICAgfQorICByZXR1cm4gJHM7Cit9CisKK3N1YiBnZXRsaW1pdHMoKQoreworICBteSAkTlY7Cisg IG9wZW4gJE5WLCAiZ2V0bGltaXRzIHwiIG9yIGRpZSAiRXJyb3IgcnVubmluZyBnZXRsaW1pdHNc biI7CisgIG15ICVsaW1pdHMgPSBtYXAge3NwbGl0IC89fFxuL30gPCROVj47CisgIHJldHVybiBc JWxpbWl0czsKK30KKworIyBGSVhNRTogY2xlYW51cCBvbiBpbnRlcnJ1cHQKKyMgRklYTUU6IGV4 dHJhY3QgJ2RvXzFfdGVzdCcgZnVuY3Rpb24KKworIyBGSVhNRTogaGF2aW5nIHRvIGluY2x1ZGUg JHByb2dyYW1fbmFtZSBoZXJlIGlzIGFuIGV4cGVkaWVudCBrbHVkZ2UuCisjIExpYnJhcnkgY29k ZSBkb2Vzbid0ICdkaWUnLgorc3ViIHJ1bl90ZXN0cyAoJCQkJCQpCit7CisgIG15ICgkcHJvZ3Jh bV9uYW1lLCAkcHJvZywgJHRfc3BlYywgJHNhdmVfdGVtcHMsICR2ZXJib3NlKSA9IEBfOworCisg ICMgVG8gaW5kaWNhdGUgdGhhdCAkcHJvZyBpcyBhIHNoZWxsIGJ1aWx0LWluLCB5b3UnZCBtYWtl IGl0IGEgc3RyaW5nICdyZWYnLgorICAjIEUuZy4sIGNhbGwgcnVuX3Rlc3RzICgkcHJvZywgXCRw cm9nLCBcQFRlc3RzLCAkc2F2ZV90ZW1wcywgJHZlcmJvc2UpOworICAjIElmIGl0J3MgYSByZWYs IGludm9rZSBpdCB2aWEgImVudiI6CisgIG15IEBwcm9nID0gcmVmICRwcm9nID8gKHF3KGVudiAt LSksICQkcHJvZykgOiAkcHJvZzsKKworICAjIFdhcm4gYWJvdXQgZW1wdHkgdF9zcGVjLgorICAj IEZJWE1FCisKKyAgIyBSZW1vdmUgYWxsIHRlbXAgZmlsZXMgdXBvbiBpbnRlcnJ1cHQuCisgICMg RklYTUUKKworICAjIFZlcmlmeSB0aGF0IHRlc3QgbmFtZXMgYXJlIGRpc3RpbmN0LgorICBteSAk YmFkX3Rlc3RfbmFtZSA9IDA7CisgIG15ICVzZWVuOworICBteSAlc2Vlbl84ZG90MzsKKyAgbXkg JHQ7CisgIGZvcmVhY2ggJHQgKEAkdF9zcGVjKQorICAgIHsKKyAgICAgIG15ICR0ZXN0X25hbWUg PSAkdC0+WzBdOworICAgICAgaWYgKCRzZWVueyR0ZXN0X25hbWV9KQorICAgICAgICB7CisgICAg ICAgICAgd2FybiAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogZHVwbGljYXRlIHRlc3QgbmFt ZVxuIjsKKyAgICAgICAgICAkYmFkX3Rlc3RfbmFtZSA9IDE7CisgICAgICAgIH0KKyAgICAgICRz ZWVueyR0ZXN0X25hbWV9ID0gMTsKKworICAgICAgaWYgKDApCisgICAgICAgIHsKKyAgICAgICAg ICBteSAkdDggPSBsYyBzdWJzdHIgJHRlc3RfbmFtZSwgMCwgODsKKyAgICAgICAgICBpZiAoJHNl ZW5fOGRvdDN7JHQ4fSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgd2FybiAiJHByb2dy YW1fbmFtZTogOC4zIHRlc3QgbmFtZSBjb25mbGljdDogIgorICAgICAgICAgICAgICAgIC4gIiR0 ZXN0X25hbWUsICRzZWVuXzhkb3QzeyR0OH1cbiI7CisgICAgICAgICAgICAgICRiYWRfdGVzdF9u YW1lID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAkc2Vlbl84ZG90M3skdDh9ID0gJHRl c3RfbmFtZTsKKyAgICAgICAgfQorCisgICAgICAjIFRoZSB0ZXN0IG5hbWUgbWF5IGJlIG5vIGxv bmdlciB0aGFuIDMwIGJ5dGVzLgorICAgICAgIyBZZXMsIHRoaXMgaXMgYW4gYXJiaXRyYXJ5IGxp bWl0LiAgSWYgaXQgY2F1c2VzIHRyb3VibGUsCisgICAgICAjIGNvbnNpZGVyIHJlbW92aW5nIGl0 LgorICAgICAgbXkgJG1heCA9IDMwOworICAgICAgaWYgKCRtYXggPCBsZW5ndGggJHRlc3RfbmFt ZSkKKyAgICAgICAgeworICAgICAgICAgIHdhcm4gIiRwcm9ncmFtX25hbWU6ICR0ZXN0X25hbWU6 IHRlc3QgbmFtZSBpcyB0b28gbG9uZyAoPiAkbWF4KVxuIjsKKyAgICAgICAgICAkYmFkX3Rlc3Rf bmFtZSA9IDE7CisgICAgICAgIH0KKyAgICB9CisgIHJldHVybiAxIGlmICRiYWRfdGVzdF9uYW1l OworCisgICMgRklYTUUgY2hlY2sgZXhpdCBzdGF0dXMKKyAgc3lzdGVtIChAcHJvZywgJy0tdmVy c2lvbicpIGlmICR2ZXJib3NlOworCisgIG15IEBqdW5rX2ZpbGVzOworICBteSAkZmFpbCA9IDA7 CisgIGZvcmVhY2ggbXkgJHR0IChAJHRfc3BlYykKKyAgICB7CisgICAgICBteSBAcG9zdF9jb21w YXJlOworICAgICAgbXkgQGR1bW15ID0gQCR0dDsKKyAgICAgIG15ICR0ID0gXEBkdW1teTsKKyAg ICAgIG15ICR0ZXN0X25hbWUgPSBzaGlmdCBAJHQ7CisgICAgICBteSAkZXhwZWN0ID0ge307Cisg ICAgICBteSAoJHByZSwgJHBvc3QpOworCisgICAgICAjIEZJWE1FOiBtYXliZSBkb24ndCByZXNl dCB0aGlzLgorICAgICAgJEdsb2JhbF9jb3VudCA9IDE7CisgICAgICBteSBAYXJnczsKKyAgICAg IG15ICRpb19zcGVjOworICAgICAgbXkgJXNlZW5fdHlwZTsKKyAgICAgIG15IEBlbnZfZGVsZXRl OworICAgICAgbXkgJGVudl9wcmVmaXggPSAnJzsKKyAgICAgIG15ICRpbnB1dF9waXBlX2NtZDsK KyAgICAgIGZvcmVhY2ggJGlvX3NwZWMgKEAkdCkKKyAgICAgICAgeworICAgICAgICAgIGlmICgh cmVmICRpb19zcGVjKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBwdXNoIEBhcmdzLCAk aW9fc3BlYzsKKyAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg IGlmIChyZWYgJGlvX3NwZWMgbmUgJ0hBU0gnKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICBldmFsICd1c2UgRGF0YTo6RHVtcGVyJzsKKyAgICAgICAgICAgICAgZGllICIkcHJvZ3JhbV9u YW1lOiAkdGVzdF9uYW1lOiBpbnZhbGlkIGVudHJ5IGluIHRlc3Qgc3BlYzsgIgorICAgICAgICAg ICAgICAgIC4gImV4cGVjdGVkIEhBU0gtcmVmLFxuYnV0IGdvdCB0aGlzOlxuIgorICAgICAgICAg ICAgICAgICAgLiBEYXRhOjpEdW1wZXItPkR1bXAgKFtcJGlvX3NwZWNdLCBbJyRpb19zcGVjJ10p IC4gIlxuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIG15ICRuID0ga2V5cyAlJGlvX3Nw ZWM7CisgICAgICAgICAgZGllICIkcHJvZ3JhbV9uYW1lOiAkdGVzdF9uYW1lOiBzcGVjIGhhcyAk biBlbGVtZW50cyAtLSIKKyAgICAgICAgICAgIC4gIiBleHBlY3RlZCAxXG4iCisgICAgICAgICAg ICAgIGlmICRuICE9IDE7CisgICAgICAgICAgbXkgKCR0eXBlLCAkdmFsKSA9IGVhY2ggJSRpb19z cGVjOworICAgICAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogaW52YWxpZCBr ZXkgJyR0eXBlJyBpbiB0ZXN0IHNwZWNcbiIKKyAgICAgICAgICAgIGlmICEgJFR5cGVzeyR0eXBl fTsKKworICAgICAgICAgICMgTWFrZSBzdXJlIHRoZXJlJ3Mgbm8gbW9yZSB0aGFuIG9uZSBvZiBP VVQsIEVSUiwgRVhJVCwgZXRjLgorICAgICAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3Rf bmFtZTogbW9yZSB0aGFuIG9uZSAkdHlwZSBzcGVjXG4iCisgICAgICAgICAgICBpZiAkWmVyb19v bmVfdHlwZXskdHlwZX0gYW5kICRzZWVuX3R5cGV7JHR5cGV9Kys7CisKKyAgICAgICAgICBpZiAo JHR5cGUgZXEgJ1BSRScgb3IgJHR5cGUgZXEgJ1BPU1QnKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAkZXhwZWN0LT57JHR5cGV9ID0gJHZhbDsKKyAgICAgICAgICAgICAgbmV4dDsKKyAg ICAgICAgICAgIH0KKworICAgICAgICAgIGlmICgkdHlwZSBlcSAnQ01QJykKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgbXkgJHQgPSByZWYgJHZhbDsKKyAgICAgICAgICAgICAgJHQgJiYg JHQgZXEgJ0FSUkFZJworICAgICAgICAgICAgICAgIG9yIGRpZSAiJHByb2dyYW1fbmFtZTogJHRl c3RfbmFtZTogaW52YWxpZCBDTVAgc3BlY1xuIjsKKyAgICAgICAgICAgICAgQCR2YWwgPT0gMgor ICAgICAgICAgICAgICAgIG9yIGRpZSAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogaW52YWxp ZCBDTVAgbGlzdDsgIG11c3QgaGF2ZSIKKyAgICAgICAgICAgICAgICAgIC4gIiBleGFjdGx5IDIg ZWxlbWVudHNcbiI7CisgICAgICAgICAgICAgIG15IEBjbXBfZmlsZXM7CisgICAgICAgICAgICAg IGZvcmVhY2ggbXkgJGUgKEAkdmFsKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgIG15ICRyID0gcmVmICRlOworICAgICAgICAgICAgICAgICAgJHIgJiYgJHIgbmUgJ0hBU0gn CisgICAgICAgICAgICAgICAgICAgIGFuZCBkaWUgIiRwcm9ncmFtX25hbWU6ICR0ZXN0X25hbWU6 IGludmFsaWQgZWxlbWVudCAoJHIpIgorICAgICAgICAgICAgICAgICAgICAgIC4gIiBpbiBDTVAg bGlzdDsgIG9ubHkgc2NhbGFycyBhbmQgaGFzaCByZWZlcmVuY2VzICIKKyAgICAgICAgICAgICAg ICAgICAgICAgIC4gImFyZSBhbGxvd2VkXG4iOworICAgICAgICAgICAgICAgICAgaWYgKCRyICYm ICRyIGVxICdIQVNIJykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICAgIG15ICRuID0ga2V5cyAlJGU7CisgICAgICAgICAgICAgICAgICAgICAgJG4gPT0gMQorICAg ICAgICAgICAgICAgICAgICAgICAgb3IgZGllICIkcHJvZ3JhbV9uYW1lOiAkdGVzdF9uYW1lOiBD TVAgc3BlYyBoYXMgJG4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAuICJlbGVtZW50cyAt LSBleHBlY3RlZCAxXG4iOworCisgICAgICAgICAgICAgICAgICAgICAgIyBSZXBsYWNlIGFueSAn QEFVWEAnIGluIHRoZSBrZXkgb2YgJSRlLgorICAgICAgICAgICAgICAgICAgICAgIG15ICgkZmYs ICR2YWwpID0gZWFjaCAlJGU7CisgICAgICAgICAgICAgICAgICAgICAgbXkgJG5ld19mZiA9IF9h dF9yZXBsYWNlICRleHBlY3QsICRmZjsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5ld19m ZiBuZSAkZmYpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICRlLT57JG5ld19mZn0gPSAkdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICBk ZWxldGUgJGUtPnskZmZ9OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICBteSAkY21wX2ZpbGUgPSBfcHJvY2Vzc19maWxl X3NwZWMgKCRwcm9ncmFtX25hbWUsICR0ZXN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlLCAkdHlwZSwgXEBqdW5rX2ZpbGVzKTsK KyAgICAgICAgICAgICAgICAgIHB1c2ggQGNtcF9maWxlcywgJGNtcF9maWxlOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgcHVzaCBAcG9zdF9jb21wYXJlLCBbQGNtcF9maWxlc107 CisKKyAgICAgICAgICAgICAgJGV4cGVjdC0+eyR0eXBlfSA9ICR2YWw7CisgICAgICAgICAgICAg IG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoJHR5cGUgZXEgJ0VYSVQnKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICBkaWUgIiRwcm9ncmFtX25hbWU6ICR0ZXN0X25h bWU6IGludmFsaWQgRVhJVCBjb2RlXG4iCisgICAgICAgICAgICAgICAgaWYgJHZhbCAhfiAvXlxk KyQvOworICAgICAgICAgICAgICAjIEZJWE1FOiBtYWtlIHN1cmUgJGRhdGEgaXMgbnVtZXJpYwor ICAgICAgICAgICAgICAkZXhwZWN0LT57RVhJVH0gPSAkdmFsOworICAgICAgICAgICAgICBuZXh0 OworICAgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKCR0eXBlID1+IC9eKE9VVHxFUlIpX1NV QlNUJC8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICRleHBlY3QtPntSRVNVTFRfU1VC U1R9IHx8PSB7fTsKKyAgICAgICAgICAgICAgJGV4cGVjdC0+e1JFU1VMVF9TVUJTVH0tPnskMX0g PSAkdmFsOworICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg aWYgKCR0eXBlIGVxICdFTlYnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAkZW52X3By ZWZpeCA9ICIkdmFsICI7CisgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICBpZiAoJHR5cGUgZXEgJ0VOVl9ERUwnKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBwdXNoIEBlbnZfZGVsZXRlLCAkdmFsOworICAgICAgICAgICAgICBuZXh0OworICAgICAg ICAgICAgfQorCisgICAgICAgICAgbXkgJGZpbGUgPSBfcHJvY2Vzc19maWxlX3NwZWMgKCRwcm9n cmFtX25hbWUsICR0ZXN0X25hbWUsICR2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICR0eXBlLCBcQGp1bmtfZmlsZXMpOworCisgICAgICAgICAgaWYgKCR0eXBl IGVxICdJTicgfHwgJHR5cGUgZXEgJ0lOX1BJUEUnKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBteSAkcXVvdGVkX2ZpbGUgPSBfc2hlbGxfcXVvdGUgJGZpbGU7CisgICAgICAgICAgICAg IGlmICgkdHlwZSBlcSAnSU5fUElQRScpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgZGVmaW5lZCAkaW5wdXRfcGlwZV9jbWQKKyAgICAgICAgICAgICAgICAgICAgYW5kIGRp ZSAiJHByb2dyYW1fbmFtZTogJHRlc3RfbmFtZTogb25seSBvbmUgaW5wdXQiCisgICAgICAgICAg ICAgICAgICAgICAgLiAiIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBJTl9QSVBFXG4iOworICAgICAg ICAgICAgICAgICAgJGlucHV0X3BpcGVfY21kID0gImNhdCAkcXVvdGVkX2ZpbGUgfCI7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgcHVzaCBAYXJncywgJHF1b3RlZF9maWxlOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNpZiAoJHR5cGUgZXEgJ0FVWCcgfHwgJHR5 cGUgZXEgJ09VVCcgfHwgJHR5cGUgZXEgJ0VSUicpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICRleHBlY3QtPnskdHlwZX0gPSAkZmlsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBl bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGRpZSAiJHByb2dyYW1fbmFtZTogJHRl c3RfbmFtZTogaW52YWxpZCB0eXBlOiAkdHlwZVxuIgorICAgICAgICAgICAgfQorICAgICAgICB9 CisKKyAgICAgICMgRXhwZWN0IGFuIGV4aXQgc3RhdHVzIG9mIHplcm8gaWYgaXQncyBub3Qgc3Bl Y2lmaWVkLgorICAgICAgJGV4cGVjdC0+e0VYSVR9IHx8PSAwOworCisgICAgICAjIEFsbG93IEVS UiB0byBiZSBvbWl0dGVkIC0tIGluIHRoYXQgY2FzZSwgZXhwZWN0IG5vIGVycm9yIG91dHB1dC4K KyAgICAgIGZvcmVhY2ggbXkgJGVvIChxdyAoT1VUIEVSUikpCisgICAgICAgIHsKKyAgICAgICAg ICBpZiAoIWV4aXN0cyAkZXhwZWN0LT57JGVvfSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgJGV4cGVjdC0+eyRlb30gPSBfY3JlYXRlX2ZpbGUgKCRwcm9ncmFtX25hbWUsICR0ZXN0X25h bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwg JycpOworICAgICAgICAgICAgICBwdXNoIEBqdW5rX2ZpbGVzLCAkZXhwZWN0LT57JGVvfTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAjIEZJWE1FOiBEb2VzIGl0IGV2ZXIgbWFr ZSBzZW5zZSB0byBzcGVjaWZ5IGEgZmlsZW5hbWUgKmFuZCogY29udGVudHMKKyAgICAgICMgaW4g T1VUIG9yIEVSUiBzcGVjPworCisgICAgICAjIEZJWE1FOiB0aGlzIGlzIHJlYWxseSBzdWJvcHRp bWFsLi4uCisgICAgICBteSBAbmV3X2FyZ3M7CisgICAgICBmb3JlYWNoIG15ICRhIChAYXJncykK KyAgICAgICAgeworICAgICAgICAgICRhID0gX2F0X3JlcGxhY2UgJGV4cGVjdCwgJGE7CisgICAg ICAgICAgcHVzaCBAbmV3X2FyZ3MsICRhOworICAgICAgICB9CisgICAgICBAYXJncyA9IEBuZXdf YXJnczsKKworICAgICAgd2FybiAiJHRlc3RfbmFtZS4uLlxuIiBpZiAkdmVyYm9zZTsKKyAgICAg ICZ7JGV4cGVjdC0+e1BSRX19IGlmICRleHBlY3QtPntQUkV9OworICAgICAgbXkgJWFjdHVhbDsK KyAgICAgICRhY3R1YWx7T1VUfSA9ICIkdGVzdF9uYW1lLk8iOworICAgICAgJGFjdHVhbHtFUlJ9 ID0gIiR0ZXN0X25hbWUuRSI7CisgICAgICBwdXNoIEBqdW5rX2ZpbGVzLCAkYWN0dWFse09VVH0s ICRhY3R1YWx7RVJSfTsKKyAgICAgIG15IEBjbWQgPSAoQHByb2csIEBhcmdzLCAiPiAkYWN0dWFs e09VVH0iLCAiMj4gJGFjdHVhbHtFUlJ9Iik7CisgICAgICAkZW52X3ByZWZpeAorICAgICAgICBh bmQgdW5zaGlmdCBAY21kLCAkZW52X3ByZWZpeDsKKyAgICAgIGRlZmluZWQgJGlucHV0X3BpcGVf Y21kCisgICAgICAgIGFuZCB1bnNoaWZ0IEBjbWQsICRpbnB1dF9waXBlX2NtZDsKKyAgICAgIG15 ICRjbWRfc3RyID0gam9pbiAoJyAnLCBAY21kKTsKKworICAgICAgIyBEZWxldGUgZnJvbSB0aGUg ZW52aXJvbm1lbnQgYW55IHN5bWJvbHMgc3BlY2lmaWVkIGJ5IHN5bnRheAorICAgICAgIyBsaWtl IHRoaXM6IHtFTlZfREVMID0+ICdUWid9LgorICAgICAgbXkgJXB1c2hlZF9lbnY7CisgICAgICBm b3JlYWNoIG15ICRlbnZfc3ltIChAZW52X2RlbGV0ZSkKKyAgICAgICAgeworICAgICAgICAgIG15 ICR2YWwgPSBkZWxldGUgJEVOVnskZW52X3N5bX07CisgICAgICAgICAgZGVmaW5lZCAkdmFsCisg ICAgICAgICAgICBhbmQgJHB1c2hlZF9lbnZ7JGVudl9zeW19ID0gJHZhbDsKKyAgICAgICAgfQor CisgICAgICB3YXJuICJSdW5uaW5nIGNvbW1hbmQ6ICckY21kX3N0cidcbiIgaWYgJGRlYnVnOwor ICAgICAgbXkgJHJjID0gMHhmZmZmICYgc3lzdGVtICRjbWRfc3RyOworCisgICAgICAjIFJlc3Rv cmUgYW55IGVudmlyb25tZW50IHNldHRpbmcgd2UgY2hhbmdlZCB2aWEgYSBkZWxldGlvbi4KKyAg ICAgIGZvcmVhY2ggbXkgJGVudl9zeW0gKGtleXMgJXB1c2hlZF9lbnYpCisgICAgICAgIHsKKyAg ICAgICAgICAkRU5WeyRlbnZfc3ltfSA9ICRwdXNoZWRfZW52eyRlbnZfc3ltfTsKKyAgICAgICAg fQorCisgICAgICBpZiAoJHJjID09IDB4ZmYwMCkKKyAgICAgICAgeworICAgICAgICAgIHdhcm4g IiRwcm9ncmFtX25hbWU6IHRlc3QgJHRlc3RfbmFtZSBmYWlsZWQ6IGNvbW1hbmQgZmFpbGVkOlxu IgorICAgICAgICAgICAgLiAiICAnJGNtZF9zdHInOiAkIVxuIjsKKyAgICAgICAgICAkZmFpbCA9 IDE7CisgICAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICB9CisgICAgICAkcmMgPj49IDgg aWYgJHJjID4gMHg4MDsKKyAgICAgIGlmICgkZXhwZWN0LT57RVhJVH0gIT0gJHJjKQorICAgICAg ICB7CisgICAgICAgICAgd2FybiAiJHByb2dyYW1fbmFtZTogdGVzdCAkdGVzdF9uYW1lIGZhaWxl ZDogZXhpdCBzdGF0dXMgbWlzbWF0Y2g6IgorICAgICAgICAgICAgLiAiICBleHBlY3RlZCAkZXhw ZWN0LT57RVhJVH0sIGdvdCAkcmNcbiI7CisgICAgICAgICAgJGZhaWwgPSAxOworICAgICAgICAg IGdvdG8gY2xlYW51cDsKKyAgICAgICAgfQorCisgICAgICBteSAlYWN0dWFsX2RhdGE7CisgICAg ICAjIFJlY29yZCBhY3R1YWwgc3Rkb3V0IGFuZCBzdGRlcnIgY29udGVudHMsIGlmIFBPU1QgbWF5 IG5lZWQgdGhlbS4KKyAgICAgIGlmICgkZXhwZWN0LT57UE9TVH0pCisgICAgICAgIHsKKyAgICAg ICAgICBmb3JlYWNoIG15ICRlbyAocXcgKE9VVCBFUlIpKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICBteSAkb3V0X2ZpbGUgPSAkYWN0dWFseyRlb307CisgICAgICAgICAgICAgIG9wZW4g SU4sICRvdXRfZmlsZQorICAgICAgICAgICAgICAgIG9yICh3YXJuCisgICAgICAgICAgICAgICAg ICAgICIkcHJvZ3JhbV9uYW1lOiBjYW5ub3Qgb3BlbiAkb3V0X2ZpbGUgZm9yIHJlYWRpbmc6ICQh XG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWlsID0gMSwgbmV4dDsKKyAgICAgICAgICAgICAg JGFjdHVhbF9kYXRheyRlb30gPSA8SU4+OworICAgICAgICAgICAgICBjbG9zZSBJTgorICAgICAg ICAgICAgICAgIG9yICh3YXJuICIkcHJvZ3JhbV9uYW1lOiBmYWlsZWQgdG8gcmVhZCAkb3V0X2Zp bGU6ICQhXG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWlsID0gMTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorCisgICAgICBmb3JlYWNoIG15ICRlbyAocXcgKE9VVCBFUlIpKQorICAgICAg ICB7CisgICAgICAgICAgbXkgJHN1YnN0X2V4cHIgPSAkZXhwZWN0LT57UkVTVUxUX1NVQlNUfS0+ eyRlb307CisgICAgICAgICAgaWYgKGRlZmluZWQgJHN1YnN0X2V4cHIpCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIG15ICRvdXQgPSAkYWN0dWFseyRlb307CisgICAgICAgICAgICAgIG15 ICRvcmlnID0gIiRvdXQub3JpZyI7CisKKyAgICAgICAgICAgICAgIyBNb3ZlICRvdXQgYXNpZGUg KHRvICRvcmlnKSwgdGhlbiByZWNyZWF0ZSAkb3V0CisgICAgICAgICAgICAgICMgYnkgdHJhbnNm b3JtaW5nIGVhY2ggbGluZSBvZiAkb3JpZyB2aWEgJHN1YnN0X2V4cHIuCisgICAgICAgICAgICAg IHJlbmFtZSAkb3V0LCAkb3JpZworICAgICAgICAgICAgICAgIG9yICh3YXJuICIkcHJvZ3JhbV9u YW1lOiBjYW5ub3QgcmVuYW1lICRvdXQgdG8gJG9yaWc6ICQhXG4iKSwKKyAgICAgICAgICAgICAg ICAgICRmYWlsID0gMSwgbmV4dDsKKyAgICAgICAgICAgICAgb3BlbiBJTiwgJG9yaWcKKyAgICAg ICAgICAgICAgICBvciAod2FybiAiJHByb2dyYW1fbmFtZTogY2Fubm90IG9wZW4gJG9yaWcgZm9y IHJlYWRpbmc6ICQhXG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWlsID0gMSwgKHVubGluayAk b3JpZyksIG5leHQ7CisgICAgICAgICAgICAgIHVubGluayAkb3JpZworICAgICAgICAgICAgICAg IG9yICh3YXJuICIkcHJvZ3JhbV9uYW1lOiBjYW5ub3QgdW5saW5rICRvcmlnOiAkIVxuIiksCisg ICAgICAgICAgICAgICAgICAkZmFpbCA9IDE7CisgICAgICAgICAgICAgIG9wZW4gT1VULCAiPiRv dXQiCisgICAgICAgICAgICAgICAgb3IgKHdhcm4gIiRwcm9ncmFtX25hbWU6IGNhbm5vdCBvcGVu ICRvdXQgZm9yIHdyaXRpbmc6ICQhXG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWlsID0gMSwg bmV4dDsKKyAgICAgICAgICAgICAgd2hpbGUgKGRlZmluZWQgKG15ICRsaW5lID0gPElOPikpCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgZXZhbCAiXCRfID0gXCRsaW5lOyAk c3Vic3RfZXhwcjsgXCRsaW5lID0gXCRfIjsKKyAgICAgICAgICAgICAgICAgIHByaW50IE9VVCAk bGluZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGNsb3NlIElOOworICAgICAg ICAgICAgICBjbG9zZSBPVVQKKyAgICAgICAgICAgICAgICBvciAod2FybiAiJHByb2dyYW1fbmFt ZTogZmFpbGVkIHRvIHdyaXRlICRvdXQ6ICQhXG4iKSwKKyAgICAgICAgICAgICAgICAgICRmYWls ID0gMSwgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIG15ICRlb19sb3dlciA9IGxj ICRlbzsKKyAgICAgICAgICBfY29tcGFyZV9maWxlcyAoJHByb2dyYW1fbmFtZSwgJHRlc3RfbmFt ZSwgJGVvX2xvd2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAkYWN0dWFseyRlb30sICRl eHBlY3QtPnskZW99KQorICAgICAgICAgICAgYW5kICRmYWlsID0gMTsKKyAgICAgICAgfQorCisg ICAgICBmb3JlYWNoIG15ICRwYWlyIChAcG9zdF9jb21wYXJlKQorICAgICAgICB7CisgICAgICAg ICAgbXkgKCRleHBlY3RlZCwgJGFjdHVhbCkgPSBAJHBhaXI7CisgICAgICAgICAgX2NvbXBhcmVf ZmlsZXMgJHByb2dyYW1fbmFtZSwgJHRlc3RfbmFtZSwgdW5kZWYsICRhY3R1YWwsICRleHBlY3Rl ZAorICAgICAgICAgICAgYW5kICRmYWlsID0gMTsKKyAgICAgICAgfQorCisgICAgY2xlYW51cDoK KyAgICAgICRleHBlY3QtPntQT1NUfQorICAgICAgICBhbmQgJnskZXhwZWN0LT57UE9TVH19ICgk YWN0dWFsX2RhdGF7T1VUfSwgJGFjdHVhbF9kYXRhe0VSUn0pOworCisgICAgfQorCisgICMgRklY TUU6IG1heWJlIHVubGluayBmaWxlcyBpbnNpZGUgdGhlIGJpZyBmb3JlYWNoIGxvb3A/CisgIHVu bGluayBAanVua19maWxlcyBpZiAhICRzYXZlX3RlbXBzOworCisgIHJldHVybiAkZmFpbDsKK30K KworIyBGb3IgZWFjaCB0ZXN0IGluIEAkVEVTVFMsIGdlbmVyYXRlIHR3byBhZGRpdGlvbmFsIHRl c3RzLAorIyBvbmUgdXNpbmcgc3RkaW4sIHRoZSBvdGhlciB1c2luZyBhIHBpcGUuICBJLmUuLCBn aXZlbiB0aGlzIG9uZQorIyBbJ2lkZW0tMCcsIHtJTj0+Jyd9LCB7T1VUPT4nJ31dLAorIyBnZW5l cmF0ZSB0aGVzZToKKyMgWydpZGVtLTAucicsICc8Jywge0lOPT4nJ30sIHtPVVQ9PicnfV0sCisj IFsnaWRlbS0wLnAnLCB7SU5fUElQRT0+Jyd9LCB7T1VUPT4nJ31dLAorIyBHZW5lcmF0ZSBuZXcg dGVzdHMgb25seSBpZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBpbnB1dCBzcGVjLgorIyBUaGUgcmV0 dXJuZWQgbGlzdCBvZiB0ZXN0cyBjb250YWlucyBlYWNoIGlucHV0IHRlc3QsIGZvbGxvd2VkCisj IGJ5IHplcm8gb3IgdHdvIGRlcml2ZWQgdGVzdHMuCitzdWIgdHJpcGxlX3Rlc3QoJCkKK3sKKyAg bXkgKCR0ZXN0cykgPSBAXzsKKyAgbXkgQG5ldzsKKyAgZm9yZWFjaCBteSAkdCAoQCR0ZXN0cykK KyAgICB7CisgICAgICBwdXNoIEBuZXcsICR0OworCisgICAgICBteSBAaW47CisgICAgICBteSBA YXJnczsKKyAgICAgIG15IEBsaXN0X29mX2hhc2g7CisgICAgICBmb3JlYWNoIG15ICRlIChAJHQp CisgICAgICAgIHsKKyAgICAgICAgICAhcmVmICRlCisgICAgICAgICAgICBhbmQgcHVzaCAoQGFy Z3MsICRlKSwgbmV4dDsKKworICAgICAgICAgIHJlZiAkZSAmJiByZWYgJGUgZXEgJ0hBU0gnCisg ICAgICAgICAgICBvciAod2FybiAiJDA6ICR0LT5bMF06IHVuZXhwZWN0ZWQgZW50cnkgdHlwZVxu IiksIG5leHQ7CisgICAgICAgICAgZGVmaW5lZCAkZS0+e0lOfQorICAgICAgICAgICAgYW5kIChw dXNoIEBpbiwgJGUtPntJTn0pLCBuZXh0OworICAgICAgICAgIHB1c2ggQGxpc3Rfb2ZfaGFzaCwg JGU7CisgICAgICAgIH0KKyAgICAgICMgQWRkIHZhcmlhbnRzIElGRiB0aGVyZSBpcyBleGFjdGx5 IG9uZSBpbnB1dCBmaWxlLgorICAgICAgQGluID09IDEKKyAgICAgICAgb3IgbmV4dDsKKyAgICAg IHNoaWZ0IEBhcmdzOyAjIGRpc2NhcmQgdGVzdCBuYW1lCisgICAgICBwdXNoIEBuZXcsIFsiJHQt PlswXS5yIiwgQGFyZ3MsICc8Jywge0lOID0+ICRpblswXX0sIEBsaXN0X29mX2hhc2hdOworICAg ICAgcHVzaCBAbmV3LCBbIiR0LT5bMF0ucCIsIEBhcmdzLCB7SU5fUElQRSA9PiAkaW5bMF19LCBA bGlzdF9vZl9oYXNoXTsKKyAgICB9CisgIHJldHVybiBAbmV3OworfQorCisjIyBwYWNrYWdlIHJl dHVybgorMTsKZGlmZiAtLWdpdCBhL3Rlc3RzL0N1U2tpcC5wbSBiL3Rlc3RzL0N1U2tpcC5wbQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjU2ODhhCi0tLSAvZGV2L251bGwK KysrIGIvdGVzdHMvQ3VTa2lwLnBtCkBAIC0wLDAgKzEsMzkgQEAKK3BhY2thZ2UgQ3VTa2lwOwor IyBTa2lwIGEgdGVzdDogZW1pdCBkaWFnIHRvIGxvZyBhbmQgdG8gc3RkZXJyLCBhbmQgZXhpdCA3 NworCisjIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwor b3VyICRNRSA9ICQwIHx8ICI8Pz8/PiI7CisKKyMgRW1pdCBhIGRpYWdub3N0aWMgYm90aCB0byBz dGRlcnIgYW5kIHRvICRzdGRlcnJfZmlsZW5vXy4KKyMgRklYTUU6IGRvbid0IGhhcmQtY29kZSB0 aGF0IHZhbHVlICg5KSwgc2luY2UgaXQncyBhbHJlYWR5IGRlZmluZWQgaW4gaW5pdC5jZmcuCitz dWIgc2tpcCAoJCkKK3sKKyAgbXkgKCRtc2cpID0gQF87CisgIG15ICRzdGRlcnJfZmlsZW5vXyA9 IDk7CisgIHdhcm4gJG1zZzsKKyAgb3BlbiBGSCwgIj4mJHN0ZGVycl9maWxlbm9fIgorICAgIG9y IHdhcm4gIiRNRTogZmFpbGVkIHRvIGR1cCBzdGRlcnJcbiI7CisgIHByaW50IEZIICRtc2c7Cisg IGNsb3NlIEZICisgICAgb3Igd2FybiAiJE1FOiBmYWlsZWQgdG8gY2xvc2UgRkQgJHN0ZGVycl9m aWxlbm9fXG4iOworICBleGl0IDc3OworfQorCisxOwpkaWZmIC0tZ2l0IGEvdGVzdHMvQ3VUbXBk aXIucG0gYi90ZXN0cy9DdVRtcGRpci5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5mZDY1NTU2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvQ3VUbXBkaXIucG0KQEAgLTAs MCArMSwxMTEgQEAKK3BhY2thZ2UgQ3VUbXBkaXI7CisjIGNyZWF0ZSwgdGhlbiBjaGRpciBpbnRv IGEgdGVtcG9yYXJ5IHN1Yi1kaXJlY3RvcnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor CisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBGaWxlOjpUZW1wOwordXNlIEZpbGU6OkZpbmQ7 CisKK291ciAkTUUgPSAkMCB8fCAiPD8/Pz4iOworCitteSAkZGlyOworCitzdWIgc2tpcF90ZXN0 KCQpCit7CisgIHdhcm4gIiRNRTogc2tpcHBpbmcgdGVzdDogdW5zYWZlIHdvcmtpbmcgZGlyZWN0 b3J5IG5hbWU6ICckX1swXSdcbiI7CisgIGV4aXQgNzc7Cit9CisKK3N1YiBjaG1vZF8xCit7Cisg IG15ICRuYW1lID0gJF87CisKKyAgIyBTa2lwIHN5bWxpbmtzIGFuZCBub24tZGlyZWN0b3JpZXMu CisgIC1sICRuYW1lIHx8ICEtZCBfCisgICAgYW5kIHJldHVybjsKKworICBjaG1vZCAwNzAwLCAk bmFtZTsKK30KKworc3ViIGNobW9kX3RyZWUKK3sKKyAgIyBXaGVuIHRlbXBkaXIgZmFpbHMsIGl0 IGNyb2Frcywgd2hpY2ggbGVhdmVzICRkaXIgdW5kZWZpbmVkLgorICBkZWZpbmVkICRkaXIKKyAg ICBvciByZXR1cm47CisKKyAgIyBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGZpbmQgIiRkaXIi IC10eXBlIGQgLXByaW50MHx4YXJncyAtMCBjaG1vZCAtUiA3MDAuCisgIG15ICRvcHRpb25zID0g e3VudGFpbnQgPT4gMSwgd2FudGVkID0+IFwmY2htb2RfMX07CisgIGZpbmQgKCRvcHRpb25zLCAk ZGlyKTsKK30KKworc3ViIGltcG9ydCB7CisgIG15ICRwcmVmaXggPSAkX1sxXTsKKworICAkTUUg ZXEgJy0nICYmIGRlZmluZWQgJHByZWZpeAorICAgIGFuZCAkTUUgPSAkcHJlZml4OworCisgIGlm ICgkcHJlZml4ICF+IC9eXC8vKQorICAgIHsKKyAgICAgIGV2YWwgJ3VzZSBDd2QnOworICAgICAg bXkgJGN3ZCA9ICRAID8gJy4nIDogQ3dkOjpnZXRjd2QoKTsKKyAgICAgICRwcmVmaXggPSAiJGN3 ZC8kcHJlZml4IjsKKyAgICB9CisKKyAgIyBVbnRhaW50IGZvciB0aGUgdXBjb21pbmcgbWtkaXIu CisgICRwcmVmaXggPX4gbSFeKFstK1xAXHcuL10rKSQhCisgICAgb3Igc2tpcF90ZXN0ICRwcmVm aXg7CisgICRwcmVmaXggPSAkMTsKKworICBteSAkb3JpZ2luYWxfcGlkID0gJCQ7CisKKyAgbXkg JG9uX3NpZ19yZW1vdmVfdG1wZGlyID0gc3ViIHsKKyAgICBteSAoJHNpZykgPSBAXzsKKyAgICBp ZiAoJCQgPT0gJG9yaWdpbmFsX3BpZCBhbmQgZGVmaW5lZCAkZGlyKQorICAgICAgeworICAgICAg ICBjaG1vZF90cmVlOworICAgICAgICAjIE9sZGVyIHZlcnNpb25zIG9mIEZpbGU6OlRlbXAgbGFj ayB0aGlzIG1ldGhvZC4KKyAgICAgICAgZXhpc3RzICZGaWxlOjpUZW1wOjpjbGVhbnVwCisgICAg ICAgICAgYW5kICZGaWxlOjpUZW1wOjpjbGVhbnVwOworICAgICAgfQorICAgICRTSUd7JHNpZ30g PSAnREVGQVVMVCc7CisgICAga2lsbCAkc2lnLCAkJDsKKyAgfTsKKworICBmb3JlYWNoIG15ICRz aWcgKHF3IChJTlQgVEVSTSBIVVApKQorICAgIHsKKyAgICAgICRTSUd7JHNpZ30gPSAkb25fc2ln X3JlbW92ZV90bXBkaXI7CisgICAgfQorCisgICRkaXIgPSBGaWxlOjpUZW1wOjp0ZW1wZGlyKCIk cHJlZml4LnRtcC1YWFhYIiwgQ0xFQU5VUCA9PiAxICk7CisgIGNoZGlyICRkaXIKKyAgICBvciB3 YXJuICIkTUU6IGZhaWxlZCB0byBjaGRpciB0byAkZGlyOiAkIVxuIjsKK30KKworRU5EIHsKKyAg IyBNb3ZlIGN3ZCBvdXQgb2YgdGhlIGRpcmVjdG9yeSB3ZSdyZSBhYm91dCB0byByZW1vdmUuCisg ICMgVGhpcyBpcyByZXF1aXJlZCBvbiBzb21lIHN5c3RlbXMsIGFuZCBieSBzb21lIHZlcnNpb25z IG9mIEZpbGU6OlRlbXAuCisgIGNoZGlyICcuLicKKyAgICBvciB3YXJuICIkTUU6IGZhaWxlZCB0 byBjaGRpciB0byAuLiBmcm9tICRkaXI6ICQhXG4iOworCisgIG15ICRzYXZlZF9lcnJubyA9ICQ/ OworICBjaG1vZF90cmVlOworICAkPyA9ICRzYXZlZF9lcnJubzsKK30KKworMTsKZGlmZiAtLWdp dCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KaW5kZXggNjI5ZDMyMi4u Y2NkMDE5NiAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvTWFrZWZp bGUuYW0KQEAgLTE0LDYgKzE0LDI2IEBACiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKK1RF U1RfRVhURU5TSU9OUyA9IC5zaCAucGwKKworaWYgSEFWRV9QRVJMCitURVNUU1VJVEVfUEVSTCA9 ICQoUEVSTCkKK2Vsc2UKK1RFU1RTVUlURV9QRVJMID0gJChTSEVMTCkgJChzcmNkaXIpL25vLXBl cmwKK2VuZGlmCisKKyMgT3B0aW9ucyBwYXNzZWQgdG8gdGhlIHBlcmwgaW52b2NhdGlvbnMgcnVu bmluZyB0aGUgcGVybCB0ZXN0IHNjcmlwdHMuCitURVNUU1VJVEVfUEVSTF9PUFRJT05TID0gLXcg LUkkKHNyY2RpcikgLU1Db3JldXRpbHMgLU1DdVNraXAKKyMgJyRmJyBpcyBzZXQgYnkgdGhlIEF1 dG9tYWtlLWdlbmVyYXRlZCB0ZXN0IGhhcm5lc3MgdG8gdGhlIHBhdGggb2YgdGhlCisjIGN1cnJl bnQgdGVzdCBzY3JpcHQgc3RyaXBwZWQgb2YgVlBBVEggY29tcG9uZW50cywgYW5kIGlzIHVzZWQg YnkgdGhlCisjIEN1VG1wZGlyIG1vZHVsZSB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHRl bXBvcmFyeSBmaWxlcyB0byBiZQorIyB1c2VkLiAgTm90ZSB0aGF0ICRmIGlzIGEgc2hlbGwgdmFy aWFibGUsIG5vdCBhIG1ha2UgbWFjcm8sIHNvIHRoZSB1c2UKKyMgb2YgJyQkZicgYmVsb3cgaXMg Y29ycmVjdCwgYW5kIG5vdCBhIHR5cG8uCitURVNUU1VJVEVfUEVSTF9PUFRJT05TICs9IC1NIkN1 VG1wZGlyIHF3KCQkZikiCisKK1NIX0xPR19DT01QSUxFUiA9ICQoU0hFTEwpCitQTF9MT0dfQ09N UElMRVIgPSAkKFRFU1RTVUlURV9QRVJMKSAkKFRFU1RTVUlURV9QRVJMX09QVElPTlMpCisKIGNo ZWNrX1BST0dSQU1TID0gZ2V0LW1iLWN1ci1tYXggZGZhLW1hdGNoLWF1eAogQU1fQ1BQRkxBR1Mg PSAtSSQodG9wX2J1aWxkZGlyKS9saWIgLUkkKHRvcF9zcmNkaXIpL2xpYiBcCiAgIC1JJCh0b3Bf c3JjZGlyKS9zcmMKQEAgLTEzMSwxMiArMTUxLDE2IEBAIEVYVFJBX0RJU1QgPQkJCQkJXAogICAk KFRFU1RTKQkJCQkJXAogICBicmUuYXdrCQkJCQlcCiAgIGJyZS50ZXN0cwkJCQkJXAorICBDb3Jl dXRpbHMucG0JCQkJCVwKKyAgQ3VTa2lwLnBtCQkJCQlcCisgIEN1VG1wZGlyLnBtCQkJCQlcCiAg IGVyZS5hd2sJCQkJCVwKICAgZXJlLnRlc3RzCQkJCQlcCiAgIGluaXQuY2ZnCQkJCQlcCiAgIGlu aXQuc2gJCQkJCVwKICAga2hhZGFmeS5saW5lcwkJCQkJXAogICBraGFkYWZ5LnJlZ2V4cAkJCQlc CisgIG5vLXBlcmwgICAgICAgCQkJCVwKICAgc3BlbmNlcjEuYXdrCQkJCQlcCiAgIHNwZW5jZXIx LnRlc3RzCQkJCVwKICAgc3BlbmNlcjEtbG9jYWxlLmF3awpkaWZmIC0tZ2l0IGEvdGVzdHMvbm8t cGVybCBiL3Rlc3RzL25vLXBlcmwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u OTU2YTgyNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL25vLXBlcmwKQEAgLTAsMCArMSw2IEBA CisjISAvYmluL3NoCisjIFBlcmwgaXMgbm90IGF2YWlsYWJsZSwgdGhlIHRlc3Qgc2hvdWxkIGJl IGNvbnNpZGVyZWQgc2tpcHBlZC4KKyMgRkQgOSBzaG91bGQgaGF2ZSBiZWVuIG9wZW5lZCBieSB0 aGUgdGVzdCBzdWl0ZSBoYXJuZXNzLCBwb2ludGluZworIyB0byB0aGUgb3JpZ2luYWwgc3RkZXJy ICh1c3VhbGx5LCB0aGUgdXNlcidzIHRlcm1pbmFsKS4KK2VjaG8gInRlc3Qgc2tpcHBlZDogbm8g dXNhYmxlIHZlcnNpb24gb2YgUGVybCBmb3VuZCIgPiY5CitleGl0IDc3Ci0tIAoyLjMuNwoK --001a11481e0ad33d4e051a2bc1f2-- ------------=_1475961362-21520-1--