From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 29742 invoked from network); 15 Aug 2021 04:11:15 -0000 Received: from 1ess.inri.net (216.126.196.35) by inbox.vuxu.org with ESMTPUTF8; 15 Aug 2021 04:11:15 -0000 Received: from mail-lj1-f179.google.com ([209.85.208.179]) by 1ess; Sat Aug 14 17:38:33 -0400 2021 Received: by mail-lj1-f179.google.com with SMTP id n6so21131932ljp.9 for <9front@9front.org>; Sat, 14 Aug 2021 14:38:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=jlk9Cn6r4BifNeNGeWIfLsoSXxhEEqisN6cQwJIoxys=; b=Up0E44f1qg0As7BxXXCRVX0rdDwASin+nn969EcbfFvHzMN6+t5s15gfMcOaO2q2sb +GjXo1j06Fh9N7ekb/7aKgp1lip5PZThClv4SA7J1E4On1Wkr758kIupVERpbcmLWR63 VBxgTqMTA0tl8QaEAQ+OifM8QTJ4lNVJBlw5W8J/YscqlkYtyiDWTXrjavabKL/YDH7G osoiJP5Rf79kwMUjLTMKBLGTDL+KxjqBYGBI3E9SivvfIkgNch20x59bx7dp+HrzuEB3 qWRUHW4jTxHfQR+akzhdYwVfD+nmbGqXiQFNHJZ6Hf8BUS1PJlfrZGtl9jcFv3hGkPMN JJ3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=jlk9Cn6r4BifNeNGeWIfLsoSXxhEEqisN6cQwJIoxys=; b=AiDvAGdEZ1DhvT6bImEZtyO/EmzXwhetfxzi9zpXqHtdxdKeFe80CsMatiJF/Wso6h ON6LHw8fUwvjrOvwQRbSvZEDAZo1+Gtb3WHHBhttXKor+P1hGBHSyIbH5NmY9+5TWlxa u2stZ4sdiVH3UKFxuF5f4WWDCZpfBAj52tC+7pmbA7VLGPZq0nOy1D95REK+g+kiMhfC HP84AT456t0U1RgIwGxhlEI2KMvFYRMiYcc8/zHOORZDIpwJcXVMZqHNEIR/jecZgZfG QVGG6oHgTc65LILfwQEcFPDjg9Y0DTJlfhk+ltXavg0g+BT1R69UrXt4sO75XQy80ZTs eBHg== X-Gm-Message-State: AOAM530FqSnWRr3/spO5GAJ55Sd8intc4feg3yT9dBcOfgGKYbL5tWF7 RpnyyzAFDFWMqoaC4/LTbggGgG+erZ6Fg7jSZzXCQFq33PM= X-Google-Smtp-Source: ABdhPJwioAmrKFtjukSxa+sRKe40W9OyN7rU/CQkKqy4oQfSIPgpcWLOl2WArjknxk/ItSEsaI1TNU/2W3Rv35U7XeI= X-Received: by 2002:a05:651c:1143:: with SMTP id h3mr6651853ljo.155.1628977100367; Sat, 14 Aug 2021 14:38:20 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:651c:160b:0:0:0:0 with HTTP; Sat, 14 Aug 2021 14:38:19 -0700 (PDT) In-Reply-To: <9537C8A9A3C1A643998908E9CDDF9FE4@musolino.id.au> References: <9537C8A9A3C1A643998908E9CDDF9FE4@musolino.id.au> From: Stuart Morrow Date: Sat, 14 Aug 2021 21:38:19 +0000 Message-ID: To: 9front@9front.org Content-Type: multipart/mixed; boundary="0000000000006a409705c98bc948" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: anonymous element core software Subject: Re: [9front] g Reply-To: 9front@9front.org Precedence: bulk --0000000000006a409705c98bc948 Content-Type: text/plain; charset="UTF-8" > You don't need to create a new program. Just specify the awk field > separator regex correctly, i.e. -F ': *'. For scripting you do - Plan 9 permits tarded filenames. Bprint thing is attached. Nfile is in there too, for anyone that has nfile (anticipating the dream of elastic tabstops?). I also patched g to do a grep dry-run before walk. So we don't have to wait on the disk or network to find out if we need to obtain a special typing wand. ls.c and ascii.c need a certain fix (hint: look at their 'Binit' line). Good night --0000000000006a409705c98bc948 Content-Type: application/octet-stream; name=diffs Content-Disposition: attachment; filename=diffs Content-Transfer-Encoding: base64 X-Attachment-Id: file0 LS0tIC8vLmdpdC9mcy9vYmplY3QvMmFmNDZlNDA2YmJkNDQzYWUxMDAyNTc3NzI0Nzc5OGE2ODVh ZmMzYy90cmVlL3N5cy9tYW4vMi9iaW8KKysrIHN5cy9tYW4vMi9iaW8KQEAgLTEyLDcgKzEyLDcg QEAKIC5mdCBMCiAubmYKIC50YSBcdycgICAgJ3UgK1x3JyAgICAndSArXHcnICAgICd1ICtcdycg ICAgJ3UgK1x3JyAgICAndQotdHlwZWRlZiBzdHJ1Y3QgQmlvYnVmaGRyCUJpb2J1ZmhkcjsKK3R5 cGVkZWYgc3RydWN0IEJpb2J1ZmhkciBCaW9idWZoZHI7CiBzdHJ1Y3QgQmlvYnVmaGRyIHsKIAl2 b2lkCSphdXg7CQkvKiB1c2VyIGRhdGEgKi8KIAkuLi4JCQkvKiBpbnRlcm5hbHMgKi8KLS0tIC8v LmdpdC9mcy9vYmplY3QvMmFmNDZlNDA2YmJkNDQzYWUxMDAyNTc3NzI0Nzc5OGE2ODVhZmMzYy90 cmVlL3N5cy9tYW4vMi9jb21wbGV0ZQorKysgc3lzL21hbi8yL2NvbXBsZXRlCkBAIC0xMSw3ICsx MSw3IEBACiAuZnQgTAogLm5mCiAudGEgXHcnICAgICd1ICtcdycgICAgJ3UgK1x3JyAgICAndSAr XHcnICAgICd1ICtcdycgICAgJ3UKLXR5cGVkZWYgc3RydWN0IENvbXBsZXRpb24JQ29tcGxldGlv bjsKK3R5cGVkZWYgc3RydWN0IENvbXBsZXRpb24gQ29tcGxldGlvbjsKIHN0cnVjdCBDb21wbGV0 aW9uewogCXVjaGFyIGFkdmFuY2U7CQkvKiB3aGV0aGVyIGZvcndhcmQgcHJvZ3Jlc3MgaGFzIGJl ZW4gbWFkZSAqLwogCXVjaGFyIGNvbXBsZXRlOwkvKiB3aGV0aGVyIHRoZSBjb21wbGV0aW9uIG5v dyByZXByZXNlbnRzIGEgZmlsZSBvciBkaXJlY3RvcnkgKi8KCi0tLSAvLy5naXQvZnMvb2JqZWN0 LzJhZjQ2ZTQwNmJiZDQ0M2FlMTAwMjU3NzcyNDc3OThhNjg1YWZjM2MvdHJlZS9yYy9iaW4vZwor KysgcmMvYmluL2cKQEAgLTE3LDYgKzE3LDcgQEAKIAogc3VmZml4ZXM9J1wuKFtiY0NobG1zeV18 YXNtfGF3a3xjY3xjZ2l8Y3BwfGNzfGdvfGdvY3xoc3xqYXZhfGx1YXxseHxta3xtbHxtbGl8bXN8 bXlyfHBsfHB5fHJjfHNofHRleHx4eSkkJwogZnVsbG5hbWVzPScoXnwvKW1rZmlsZSQnCitmbiBj aGVjayB7IGdyZXAgJHBhdHRlcm4gPC9kZXYvbnVsbCB8fCB+ICRzdGF0dXMgKnN5bnRheCogJiYg ZXhpdCAkc3RhdHVzIH0KIHN3aXRjaCgkIyopewogY2FzZSAwCiAJZWNobyAndXNhZ2U6IGcgW2Zs YWdzXSBwYXR0ZXJuIFtmaWxlc10nID5bMT0yXQpAQCAtMjMsOSArMjQsMTEgQEAKIAlleGl0IHVz YWdlCiBjYXNlIDEKIAlwYXR0ZXJuPSQxCisJY2hlY2sKIAlmaWxlcz1gJG5se3dhbGsgLWYgJHJl Y3Vyc2UgfCBncmVwIC1lICRmdWxsbmFtZXMgLWUgJHN1ZmZpeGVzID5bMl0vZGV2L251bGx9CiBj YXNlICoKIAlwYXR0ZXJuPSQxCisJY2hlY2sKIAlzaGlmdAogCWZvcihmIGluICQqKXsKIAkJaWYo dGVzdCAtZCAkZikKCi0tLSAvLy5naXQvZnMvb2JqZWN0LzJhZjQ2ZTQwNmJiZDQ0M2FlMTAwMjU3 NzcyNDc3OThhNjg1YWZjM2MvdHJlZS9zeXMvc3JjL2NtZC9maWxlLmMKKysrIHN5cy9zcmMvY21k L2ZpbGUuYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogI2RlZmluZQlMRU5ESUFOKHApCSgocClbMF0g fCAoKHApWzFdPDw4KSB8ICgocClbMl08PDE2KSB8ICgocClbM108PDI0KSkKIAorQmlvYnVmCWJv dXQ7CiB1Y2hhcglidWZbNjAwMV07CiBzaG9ydAljZnJlcVsxNDBdOwogc2hvcnQJd2ZyZXFbNTBd OwpAQCAtMjMzLDYgKzIzNCw4IEBACiAJCWV4aXRzKCJ1c2FnZSIpOwogCX1BUkdFTkQ7CiAKKwlC aW5pdCgmYm91dCwgMSwgT1dSSVRFKTsKKwogCW1heGxlbiA9IDA7CiAJaWYobWltZSA9PSAwIHx8 IGFyZ2MgPiAxKXsKIAkJZm9yKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CkBAIC0yNDQsNyArMjQ3 LDcgQEAKIAl9CiAJaWYgKGFyZ2MgPD0gMCkgewogCQlpZighbWltZSkKLQkJCXByaW50ICgic3Rk aW46ICIpOworCQkJQnByaW50KCZib3V0LCAic3RkaW46ICIpOwogCQlmaWxldHlwZSgwKTsKIAl9 CiAJZWxzZSB7CkBAIC0yNTEsNiArMjU0LDcgQEAKIAkJZm9yKGkgPSAwOyBpIDwgYXJnYzsgaSsr KQogCQkJdHlwZShhcmd2W2ldLCBtYXhsZW4pOwogCX0KKwlCdGVybSgmYm91dCk7CiAJZXhpdHMo MCk7CiB9CiAKQEAgLTI2OCwxMCArMjcyLDExIEBACiAJCQkJc2xhc2ggPSBwOwogCQkJcCArPSBj aGFydG9ydW5lKCZyLCBwKTsJCS8qIGNvdW50IHJ1bmVzICovCiAJCX0KLQkJcHJpbnQoIiVzOiUq cyIsZmlsZSwgbmxlbi1pKzEsICIiKTsKKwkJQnByaW50KCZib3V0LCAiJXM6JSpzIixmaWxlLCBu bGVuLWkrMSwgIiIpOwogCX0KIAlmbmFtZSA9IGZpbGU7CiAJaWYgKChmZCA9IG9wZW4oZmlsZSwg T1JFQUQpKSA8IDApIHsKKwkJQmZsdXNoKCZib3V0KTsKIAkJZnByaW50KDIsICJjYW5ub3Qgb3Bl bjogJXJcbiIpOwogCQlyZXR1cm47CiAJfQpAQCAtMjkyLDEyICsyOTcsMTIgQEAKIAogCWlmKG1l bWNtcChidWYsICJceDAwXHgwMFx4RkVceEZGIiwgNCkgPT0gMCl7CiAJCWlmKCFtaW1lKQotCQkJ cHJpbnQoInV0Zi0zMmJlICIpOworCQkJQnByaW50KCZib3V0LCAidXRmLTMyYmUgIik7CiAJCXJl dHVybjsKIAl9IGVsc2UKIAlpZihtZW1jbXAoYnVmLCAiXHhGRVx4RkZceDAwXHgwMCIsIDQpID09 IDApewogCQlpZighbWltZSkKLQkJCXByaW50KCJ1dGYtMzJsZSAiKTsKKwkJCUJwcmludCgmYm91 dCwgInV0Zi0zMmxlICIpOwogCQlyZXR1cm47CiAJfSBlbHNlCiAJaWYobWVtY21wKGJ1ZiwgIlx4 RUZceEJCXHhCRiIsIDMpID09IDApewpAQCAtMzA3LDcgKzMxMiw3IEBACiAJfSBlbHNlCiAJaWYo bWVtY21wKGJ1ZiwgIlx4RkVceEZGIiwgMikgPT0gMCl7CiAJCWlmKCFtaW1lKQotCQkJcHJpbnQo InV0Zi0xNmJlICIpOworCQkJQnByaW50KCZib3V0LCAidXRmLTE2YmUgIik7CiAKIAkJbmJ1ZiAt PSAyOwogCQlyYiA9IG1hbGxvYyhuYnVmKzEpOwpAQCAtMzI0LDcgKzMyOSw3IEBACiAJfSBlbHNl CiAJaWYobWVtY21wKGJ1ZiwgIlx4RkZceEZFIiwgMikgPT0gMCl7CiAJCWlmKCFtaW1lKQotCQkJ cHJpbnQoInV0Zi0xNmxlICIpOworCQkJQnByaW50KCZib3V0LCAidXRmLTE2bGUgIik7CiAKIAkJ bmJ1ZiAtPSAyOwogCQlyYiA9IG1hbGxvYyhuYnVmKzEpOwpAQCAtMzUxLDI4ICszNTYsMzAgQEAK IAlmcmVlKG1idWYpOwogCW1idWYgPSBkaXJmc3RhdChmZCk7CiAJaWYobWJ1ZiA9PSBuaWwpewor CQlCZmx1c2goJmJvdXQpOwogCQlmcHJpbnQoMiwgImNhbm5vdCBzdGF0OiAlclxuIik7CiAJCXJl dHVybjsKIAl9CiAJaWYobWJ1Zi0+bW9kZSAmIERNRElSKSB7Ci0JCXByaW50KCIlc1xuIiwgbWlt ZSA/IE9DVEVUIDogImRpcmVjdG9yeSIpOworCQlCcHJpbnQoJmJvdXQsICIlc1xuIiwgbWltZSA/ IE9DVEVUIDogImRpcmVjdG9yeSIpOwogCQlyZXR1cm47CiAJfQogCWlmKG1idWYtPnR5cGUgIT0g J00nICYmIG1idWYtPnR5cGUgIT0gJ3wnKSB7CiAJCWlmKG1pbWUpCi0JCQlwcmludCgiJXNcbiIs IE9DVEVUKTsKKwkJCUJwcmludCgmYm91dCwgIiVzXG4iLCBPQ1RFVCk7CiAJCWVsc2UKLQkJCXBy aW50KCJzcGVjaWFsIGZpbGUgIyVDLyVzXG4iLCBtYnVmLT50eXBlLCBtYnVmLT5uYW1lKTsKKwkJ CUJwcmludCgmYm91dCwgInNwZWNpYWwgZmlsZSAjJUMvJXNcbiIsIG1idWYtPnR5cGUsIG1idWYt Pm5hbWUpOwogCQlyZXR1cm47CiAJfQogCS8qIG1heSBiZSByZWFkaW5nIGEgcGlwZSBvbiBzdGFu ZGFyZCBpbnB1dCAqLwogCW5idWYgPSByZWFkbihmZCwgYnVmLCBzaXplb2YoYnVmKS0xKTsKIAlp ZihuYnVmIDwgMCkgeworCQlCZmx1c2goJmJvdXQpOwogCQlmcHJpbnQoMiwgImNhbm5vdCByZWFk OiAlclxuIik7CiAJCXJldHVybjsKIAl9CiAJaWYobmJ1ZiA9PSAwKSB7Ci0JCXByaW50KCIlc1xu IiwgbWltZSA/IFBMQUlOIDogImVtcHR5IGZpbGUiKTsKKwkJQnByaW50KCZib3V0LCAiJXNcbiIs IG1pbWUgPyBQTEFJTiA6ICJlbXB0eSBmaWxlIik7CiAJCXJldHVybjsKIAl9CiAJYnVmW25idWZd ID0gMDsKQEAgLTQ0MiwxNiArNDQ5LDE2IEBACiAJICogcHJpbnQgb3V0IGdyb3NzIGNsYXNzaWZp Y2F0aW9uCiAJICovCiAJaWYgKG5idWYgPCAxMDAgJiYgIW1pbWUpCi0JCXByaW50KG1pbWUgPyBQ TEFJTiA6ICJzaG9ydCAiKTsKKwkJQnByaW50KCZib3V0LCBtaW1lID8gUExBSU4gOiAic2hvcnQg Iik7CiAJaWYgKGd1ZXNzID09IEZhc2NpaSkKLQkJcHJpbnQoIiVzXG4iLCBtaW1lID8gUExBSU4g OiAiQXNjaWkiKTsKKwkJQnByaW50KCZib3V0LCAiJXNcbiIsIG1pbWUgPyBQTEFJTiA6ICJBc2Np aSIpOwogCWVsc2UgaWYgKGd1ZXNzID09IEZlYXNjaWkpCi0JCXByaW50KCIlc1xuIiwgbWltZSA/ IFBMQUlOIDogImV4dGVuZGVkIGFzY2lpIik7CisJCUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1l ID8gUExBSU4gOiAiZXh0ZW5kZWQgYXNjaWkiKTsKIAllbHNlIGlmIChndWVzcyA9PSBGbGF0aW4p Ci0JCXByaW50KCIlc1xuIiwgbWltZSA/IFBMQUlOIDogImxhdGluIGFzY2lpIik7CisJCUJwcmlu dCgmYm91dCwgIiVzXG4iLCBtaW1lID8gUExBSU4gOiAibGF0aW4gYXNjaWkiKTsKIAllbHNlIGlm IChndWVzcyA9PSBGdXRmICYmIHV0Zl9jb3VudCgpIDwgNCkKIAkJcHJpbnRfdXRmKCk7Ci0JZWxz ZSBwcmludCgiJXNcbiIsIG1pbWUgPyBPQ1RFVCA6ICJiaW5hcnkiKTsKKwllbHNlIEJwcmludCgm Ym91dCwgIiVzXG4iLCBtaW1lID8gT0NURVQgOiAiYmluYXJ5Iik7CiB9CiAKIHZvaWQKQEAgLTUy MiwxMiArNTI5LDEyIEBACiAJaW50IGksIHByaW50ZWQsIGo7CiAKIAlpZihtaW1lKXsKLQkJcHJp bnQoIiVzXG4iLCBQTEFJTik7CisJCUJwcmludCgmYm91dCwgIiVzXG4iLCBQTEFJTik7CiAJCXJl dHVybjsKIAl9CiAJaWYgKGNoa2FzY2lpKCkpIHsKIAkJcHJpbnRlZCA9IDE7Ci0JCXByaW50KCJB c2NpaSIpOworCQlCcHJpbnQoJmJvdXQsICJBc2NpaSIpOwogCX0gZWxzZQogCQlwcmludGVkID0g MDsKIAlmb3IgKGkgPSAwOyBsYW5ndWFnZVtpXS5uYW1lOyBpKyspCkBAIC01NDMsNyArNTUwLDcg QEAKIAkJCWNhc2UgTm9ybWFsOgogCQkJY2FzZSBGaXJzdDoKIAkJCQlpZiAocHJpbnRlZCkKLQkJ CQkJcHJpbnQoIiAmICIpOworCQkJCQlCcHJpbnQoJmJvdXQsICIgJiAiKTsKIAkJCQllbHNlIHBy aW50ZWQgPSAxOwogCQkJCXByaW50KCIlcyIsIGxhbmd1YWdlW2ldLm5hbWUpOwogCQkJCWJyZWFr OwpAQCAtNTUzLDggKzU2MCw4IEBACiAJCQl9CiAJCX0KIAlpZighcHJpbnRlZCkKLQkJcHJpbnQo IlVURiIpOwotCXByaW50KCIgdGV4dFxuIik7CisJCUJwcmludCgmYm91dCwgIlVURiIpOworCUJw cmludCgmYm91dCwgIiB0ZXh0XG4iKTsKIH0KIAogdm9pZApAQCAtNjQ4LDcgKzY1NSw3IEBACiAK IAlmb3IoaT0wOyBpPG50YWI7IGkrKykKIAkJaWYoKHgmdGFiW2ldLm1hc2spID09IHRhYltpXS54 KXsKLQkJCXByaW50KCIlc1xuIiwgbWltZSA/IHRhYltpXS5taW1lIDogdGFiW2ldLmRlc2MpOwor CQkJQnByaW50KCZib3V0LCAiJXNcbiIsIG1pbWUgPyB0YWJbaV0ubWltZSA6IHRhYltpXS5kZXNj KTsKIAkJCXJldHVybiAxOwogCQl9CiAJcmV0dXJuIDA7CkBAIC02OTgsNyArNzA1LDcgQEAKIAkJ CWNvbnRpbnVlOwogCQl4ID0gTEVORElBTihidWYpOwogCQlpZigoeCZ0cC0+bWFzaykgPT0gdHAt PngpewotCQkJcHJpbnQoIiVzXG4iLCBtaW1lID8gdHAtPm1pbWUgOiB0cC0+ZGVzYyk7CisJCQlC cHJpbnQoJmJvdXQsICIlc1xuIiwgbWltZSA/IHRwLT5taW1lIDogdHAtPmRlc2MpOwogCQkJcmV0 dXJuIDE7CiAJCX0KIAl9CkBAIC03MTgsNyArNzI1LDcgQEAKIAogCXNlZWsoZmQsIDAsIDApOwkJ LyogcmVwb3NpdGlvbiB0byBzdGFydCBvZiBmaWxlICovCiAJaWYoY3JhY2toZHIoZmQsICZmKSkg ewotCQlwcmludCgiJXNcbiIsIG1pbWUgPyBPQ1RFVCA6IGYubmFtZSk7CisJCUJwcmludCgmYm91 dCwgIiVzXG4iLCBtaW1lID8gT0NURVQgOiBmLm5hbWUpOwogCQlyZXR1cm4gMTsKIAl9CiAJcmV0 dXJuIDA7CkBAIC03NDQsMTkgKzc1MSwxOSBAQAogCQlwID0gdG1wOwogCiAJaWYgKHN0cmNtcCgi cmMiLCBwKSA9PSAwKQotCQlwcmludCgiJXNcbiIsIG1pbWUgPyBQTEFJTiA6ICJyYyBleGVjdXRh YmxlIGZpbGUiKTsKKwkJQnByaW50KCZib3V0LCAiJXNcbiIsIG1pbWUgPyBQTEFJTiA6ICJyYyBl eGVjdXRhYmxlIGZpbGUiKTsKIAllbHNlIGlmIChzdHJjbXAoInNoIiwgcCkgPT0gMCkKLQkJcHJp bnQoIiVzXG4iLCBtaW1lID8gImFwcGxpY2F0aW9uL3gtc2giIDogInNoIGV4ZWN1dGFibGUgZmls ZSIpOworCQlCcHJpbnQoJmJvdXQsICIlc1xuIiwgbWltZSA/ICJhcHBsaWNhdGlvbi94LXNoIiA6 ICJzaCBleGVjdXRhYmxlIGZpbGUiKTsKIAllbHNlIGlmIChzdHJjbXAoImJhc2giLCBwKSA9PSAw KQotCQlwcmludCgiJXNcbiIsIG1pbWUgPyAiYXBwbGljYXRpb24veC1zaCIgOiAiYmFzaCBleGVj dXRhYmxlIGZpbGUiKTsKKwkJQnByaW50KCZib3V0LCAiJXNcbiIsIG1pbWUgPyAiYXBwbGljYXRp b24veC1zaCIgOiAiYmFzaCBleGVjdXRhYmxlIGZpbGUiKTsKIAllbHNlIGlmIChzdHJjbXAoImF3 ayIsIHApID09IDApCi0JCXByaW50KCIlc1xuIiwgbWltZSA/IFBMQUlOIDogImF3ayBleGVjdXRh YmxlIGZpbGUiKTsKKwkJQnByaW50KCZib3V0LCAiJXNcbiIsIG1pbWUgPyBQTEFJTiA6ICJhd2sg ZXhlY3V0YWJsZSBmaWxlIik7CiAJZWxzZSBpZiAoc3RyY21wKCJzZWQiLCBwKSA9PSAwKQotCQlw cmludCgiJXNcbiIsIG1pbWUgPyBQTEFJTiA6ICJzZWQgZXhlY3V0YWJsZSBmaWxlIik7CisJCUJw cmludCgmYm91dCwgIiVzXG4iLCBtaW1lID8gUExBSU4gOiAic2VkIGV4ZWN1dGFibGUgZmlsZSIp OwogCWVsc2UgaWYgKHN0cmNtcCgicGVybCIsIHApID09IDApCi0JCXByaW50KCIlc1xuIiwgbWlt ZSA/IFBMQUlOIDogInBlcmwgZXhlY3V0YWJsZSBmaWxlIik7CisJCUJwcmludCgmYm91dCwgIiVz XG4iLCBtaW1lID8gUExBSU4gOiAicGVybCBleGVjdXRhYmxlIGZpbGUiKTsKIAllbHNlCi0JCXBy aW50KCIlc1xuIiwgbWltZSA/IFBMQUlOIDogInVua25vd24gZXhlY3V0YWJsZSBmaWxlIik7CisJ CUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1lID8gUExBSU4gOiAidW5rbm93biBleGVjdXRhYmxl IGZpbGUiKTsKIAlyZXR1cm4gMTsKIH0KIApAQCAtODE3LDkgKzgyNCw5IEBACiAJY2hrc3VtID0g c3RydG9sKGhkci0+Y2hrc3VtLCAwLCA4KTsKIAlpZiAoaGRyLT5uYW1lWzBdICE9ICdcMCcgJiYg Y2hlY2tzdW0oaHApID09IGNoa3N1bSkgewogCQlpZiAoc3RyY21wKGhkci0+bWFnaWMsICJ1c3Rh ciIpID09IDApCi0JCQlwcmludChtaW1lPyAiYXBwbGljYXRpb24veC11c3RhclxuIjogInBvc2l4 IHRhciBhcmNoaXZlXG4iKTsKKwkJCUJwcmludCgmYm91dCwgbWltZT8gImFwcGxpY2F0aW9uL3gt dXN0YXJcbiI6ICJwb3NpeCB0YXIgYXJjaGl2ZVxuIik7CiAJCWVsc2UKLQkJCXByaW50KG1pbWU/ ICJhcHBsaWNhdGlvbi94LXRhclxuIjogInRhciBhcmNoaXZlXG4iKTsKKwkJCUJwcmludCgmYm91 dCwgbWltZT8gImFwcGxpY2F0aW9uL3gtdGFyXG4iOiAidGFyIGFyY2hpdmVcbiIpOwogCQlyZXR1 cm4gMTsKIAl9CiAJcmV0dXJuIDA7CkBAIC05MzUsNyArOTQyLDcgQEAKIAkJaWYobCA9PSAtMSkK IAkJCWwgPSBzdHJsZW4ocC0+a2V5KTsKIAkJaWYobmJ1ZiA+PSBsICYmIG1lbWNtcChidWYsIHAt PmtleSwgbCkgPT0gMCkgewotCQkJcHJpbnQoIiVzXG4iLCBtaW1lID8gcC0+bWltZSA6IHAtPmZp bGV0eXBlKTsKKwkJCUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1lID8gcC0+bWltZSA6IHAtPmZp bGV0eXBlKTsKIAkJCXJldHVybiAxOwogCQl9CiAJfQpAQCAtOTQ0LDkgKzk1MSw5IEBACiAJCQlp ZihidWZbaV0gPT0gJ1xuJykKIAkJCQlicmVhazsKIAkJaWYobWltZSkKLQkJCXByaW50KCIlc1xu IiwgT0NURVQpOworCQkJQnByaW50KCZib3V0LCAiJXNcbiIsIE9DVEVUKTsKIAkJZWxzZQotCQkJ cHJpbnQoIiUuKnMgcGljdHVyZVxuIiwgdXRmbmxlbigoY2hhciopYnVmKzUsIGktNSksIChjaGFy KilidWYrNSk7CisJCQlCcHJpbnQoJmJvdXQsICIlLipzIHBpY3R1cmVcbiIsIHV0Zm5sZW4oKGNo YXIqKWJ1Zis1LCBpLTUpLCAoY2hhciopYnVmKzUpOwogCQlyZXR1cm4gMTsKIAl9CiAJcmV0dXJu IDA7CkBAIC05NzcsNyArOTg0LDcgQEAKIAkJaWYgKHJlYWRuKGZkLCBidWYsIG4pICE9IG4pCiAJ CQljb250aW51ZTsKIAkJaWYobWVtY21wKGJ1ZiwgcC0+a2V5LCBuKSA9PSAwKSB7Ci0JCQlwcmlu dCgiJXNcbiIsIG1pbWUgPyBwLT5taW1lIDogcC0+ZmlsZXR5cGUpOworCQkJQnByaW50KCZib3V0 LCAiJXNcbiIsIG1pbWUgPyBwLT5taW1lIDogcC0+ZmlsZXR5cGUpOwogCQkJcmV0dXJuIDE7CiAJ CX0KIAl9CkBAIC05ODksMTggKzk5NiwxOCBAQAogewogCWlmIChzdHJuY21wKChjaGFyKilidWYs ICJGT1JNIiwgNCkgPT0gMCAmJgogCSAgICBzdHJuY21wKChjaGFyKilidWYrOCwgIkFJRkYiLCA0 KSA9PSAwKSB7Ci0JCXByaW50KCIlc1xuIiwgbWltZT8gImF1ZGlvL3gtYWlmZiI6ICJhaWZmIGF1 ZGlvIik7CisJCUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1lPyAiYXVkaW8veC1haWZmIjogImFp ZmYgYXVkaW8iKTsKIAkJcmV0dXJuIDE7CiAJfQogCWlmIChzdHJuY21wKChjaGFyKilidWYsICJS SUZGIiwgNCkgPT0gMCkgewogCQlpZiAoc3RybmNtcCgoY2hhciopYnVmKzgsICJXQVZFIiwgNCkg PT0gMCkKLQkJCXByaW50KCIlc1xuIiwgbWltZT8gImF1ZGlvL3dhdmUiOiAid2F2ZSBhdWRpbyIp OworCQkJQnByaW50KCZib3V0LCAiJXNcbiIsIG1pbWU/ICJhdWRpby93YXZlIjogIndhdmUgYXVk aW8iKTsKIAkJZWxzZSBpZiAoc3RybmNtcCgoY2hhciopYnVmKzgsICJBVkkgIiwgNCkgPT0gMCkK LQkJCXByaW50KCIlc1xuIiwgbWltZT8gInZpZGVvL2F2aSI6ICJhdmkgdmlkZW8iKTsKKwkJCUJw cmludCgmYm91dCwgIiVzXG4iLCBtaW1lPyAidmlkZW8vYXZpIjogImF2aSB2aWRlbyIpOwogCQll bHNlIGlmIChzdHJuY21wKChjaGFyKilidWYrOCwgIldFQlAiLCA0KSA9PSAwKQotCQkJcHJpbnQo IiVzXG4iLCBtaW1lPyAiaW1hZ2Uvd2VicCI6ICJ3ZWJwIGltYWdlIik7CisJCQlCcHJpbnQoJmJv dXQsICIlc1xuIiwgbWltZT8gImltYWdlL3dlYnAiOiAid2VicCBpbWFnZSIpOwogCQllbHNlCi0J CQlwcmludCgiJXNcbiIsIG1pbWU/IE9DVEVUIDogInJpZmYgZmlsZSIpOworCQkJQnByaW50KCZi b3V0LCAiJXNcbiIsIG1pbWU/IE9DVEVUIDogInJpZmYgZmlsZSIpOwogCQlyZXR1cm4gMTsKIAl9 CiAJcmV0dXJuIDA7CkBAIC0xMDM2LDcgKzEwNDMsNyBAQAogCWlmKHN0cm5jbXAoKytwLCAiKysr ICIsIDQpID09IDApCiAJaWYoKHAgPSBzdHJjaHIocCwgJ1xuJykpICE9IG5pbCkKIAlpZihzdHJu Y21wKCsrcCwgIkBAICIsIDMpID09IDApewotCQlwcmludCgiJXNcbiIsIG1pbWUgPyAidGV4dC9w bGFpbiIgOiAidW5pZmllZCBkaWZmIG91dHB1dCIpOworCQlCcHJpbnQoJmJvdXQsICIlc1xuIiwg bWltZSA/ICJ0ZXh0L3BsYWluIiA6ICJ1bmlmaWVkIGRpZmYgb3V0cHV0Iik7CiAJCXJldHVybiAx OwogCX0KIAlyZXR1cm4gMDsKQEAgLTEwNjgsNyArMTA3NSw3IEBACiAJCQkJcCArPSBuOwogCQkJ CWlmKHAgPCBidWYrbmJ1ZiAmJiBzdHJjaHIoIlx0XHJcbiAvPiIsICpwKSl7CiAJCQkJCWlmKCsr Y291bnQgPiAyKSB7Ci0JCQkJCQlwcmludCgiJXNcbiIsIG1pbWUgPyAidGV4dC9odG1sIiA6ICJI VE1MIGZpbGUiKTsKKwkJCQkJCUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1lID8gInRleHQvaHRt bCIgOiAiSFRNTCBmaWxlIik7CiAJCQkJCQlyZXR1cm4gMTsKIAkJCQkJfQogCQkJCX0KQEAgLTEx MjYsNyArMTEzMyw3IEBACiAJCXAgPSBxKzE7CiAJfQogCWlmKGNvdW50ID49IDMpewotCQlwcmlu dCgiJXNcbiIsIG1pbWUgPyAibWVzc2FnZS9yZmM4MjIiIDogImVtYWlsIGZpbGUiKTsKKwkJQnBy aW50KCZib3V0LCAiJXNcbiIsIG1pbWUgPyAibWVzc2FnZS9yZmM4MjIiIDogImVtYWlsIGZpbGUi KTsKIAkJcmV0dXJuIDE7CiAJfQogCXJldHVybiAwOwpAQCAtMTE0Myw3ICsxMTUwLDcgQEAKIAkJ cmV0dXJuIDA7CiAJKnEgPSAwOwogCWlmKHN0cm5jbXAocCwgIkZyb20gIiwgNSkgPT0gMCAmJiBz dHJzdHIocCwgIiByZW1vdGUgZnJvbSAiKSA9PSBuaWwpewotCQlwcmludCgiJXNcbiIsIG1pbWUg PyAiYXBwbGljYXRpb24vbWJveCIgOiAibWFpbCBib3giKTsKKwkJQnByaW50KCZib3V0LCAiJXNc biIsIG1pbWUgPyAiYXBwbGljYXRpb24vbWJveCIgOiAibWFpbCBib3giKTsKIAkJcmV0dXJuIDE7 CiAJfQogCSpxID0gJ1xuJzsKQEAgLTExNjQsOSArMTE3MSw5IEBACiAJaWYodHlwZSA8IDApCiAJ CXJldHVybiAwOwogCWlmKG1pbWUpCi0JCXByaW50KCIlc1xuIiwgT0NURVQpOworCQlCcHJpbnQo JmJvdXQsICIlc1xuIiwgT0NURVQpOwogCWVsc2UKLQkJcHJpbnQoIiVzIGludGVybWVkaWF0ZVxu IiwgbmFtZSk7CisJCUJwcmludCgmYm91dCwgIiVzIGludGVybWVkaWF0ZVxuIiwgbmFtZSk7CiAJ cmV0dXJuIDE7CiB9CiAKQEAgLTExOTcsMTMgKzEyMDQsMTMgQEAKIAogeWVzOgogCWlmKG1pbWUp ewotCQlwcmludCgiJXNcbiIsIFBMQUlOKTsKKwkJQnByaW50KCZib3V0LCAiJXNcbiIsIFBMQUlO KTsKIAkJcmV0dXJuIDE7CiAJfQogCWlmKHdmcmVxW0Fsd29yZF0gPiAwKQotCQlwcmludCgiYWxl ZiBwcm9ncmFtXG4iKTsKKwkJQnByaW50KCZib3V0LCAiYWxlZiBwcm9ncmFtXG4iKTsKIAllbHNl Ci0JCXByaW50KCJjIHByb2dyYW1cbiIpOworCQlCcHJpbnQoJmJvdXQsICJjIHByb2dyYW1cbiIp OwogCXJldHVybiAxOwogfQogCkBAIC0xMjE1LDcgKzEyMjIsNyBAQAogCSAqLwogCWlmKHdmcmVx W0x3b3JkXSA8IDQpCiAJCXJldHVybiAwOwotCXByaW50KCIlc1xuIiwgbWltZSA/IFBMQUlOIDog ImxpbWJvIHByb2dyYW0iKTsKKwlCcHJpbnQoJmJvdXQsICIlc1xuIiwgbWltZSA/IFBMQUlOIDog ImxpbWJvIHByb2dyYW0iKTsKIAlyZXR1cm4gMTsKIH0KIApAQCAtMTIyNyw3ICsxMjM0LDcgQEAK IAkgKi8KIAlpZih3ZnJlcVtBd29yZF0gPCAyKQogCQlyZXR1cm4gMDsKLQlwcmludCgiJXNcbiIs IG1pbWUgPyBQTEFJTiA6ICJhcyBwcm9ncmFtIik7CisJQnByaW50KCZib3V0LCAiJXNcbiIsIG1p bWUgPyBQTEFJTiA6ICJhcyBwcm9ncmFtIik7CiAJcmV0dXJuIDE7CiB9CiAKQEAgLTEyNjAsNyAr MTI2Nyw3IEBACiAJCQlyZXR1cm4gMDsKIAl9IGVsc2UKIAkJcmV0dXJuIDA7Ci0JcHJpbnQoIiVz XG4iLCBtaW1lID8gImltYWdlL3RnYSIgOiAidGFyZ2EgaW1hZ2UiKTsKKwlCcHJpbnQoJmJvdXQs ICIlc1xuIiwgbWltZSA/ICJpbWFnZS90Z2EiIDogInRhcmdhIGltYWdlIik7CiAJcmV0dXJuIDE7 CiB9CiAKQEAgLTEyNzMsNyArMTI4MCw3IEBACiAJZSA9IHAgKyBuYnVmLTE7CiAJd2hpbGUoKHAg PCBlKSAmJiAocCA9IG1lbWNocihwLCAweEZGLCBlIC0gcCkpKXsKIAkJaWYoKHBbMV0gJiAweEZF KSA9PSAweEZBKXsKLQkJCXByaW50KCIlc1xuIiwgbWltZSA/ICJhdWRpby9tcGVnIiA6ICJtcDMg YXVkaW8iKTsKKwkJCUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1lID8gImF1ZGlvL21wZWciIDog Im1wMyBhdWRpbyIpOwogCQkJcmV0dXJuIDE7CiAJCX0KIAkJcCsrOwpAQCAtMTI4OSwxMSArMTI5 NiwxMSBAQAogCWlmKG1lbWNtcCgmYnVmWzRdLCAiZnR5cCIsIDQpICE9IDApCiAJCXJldHVybiAw OwogCWlmKG1lbWNtcCgmYnVmWzhdLCAiaXNvbSIsIDQpID09IDAgfHwgbWVtY21wKCZidWZbOF0s ICJtcDQiLCAzKSA9PSAwKXsKLQkJcHJpbnQoIiVzXG4iLCBtaW1lID8gInZpZGVvL21wNCIgOiAi bXA0IHZpZGVvIik7CisJCUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1lID8gInZpZGVvL21wNCIg OiAibXA0IHZpZGVvIik7CiAJCXJldHVybiAxOwogCX0KIAlpZihtZW1jbXAoJmJ1Zls4XSwgIk00 QSAiLCA0KSA9PSAwKXsKLQkJcHJpbnQoIiVzXG4iLCBtaW1lID8gImF1ZGlvL200YSIgOiAibTRh IGF1ZGlvIik7CisJCUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1lID8gImF1ZGlvL200YSIgOiAi bTRhIGF1ZGlvIik7CiAJCXJldHVybiAxOwogCX0KIAlyZXR1cm4gMDsKQEAgLTEzMjAsMTggKzEz MjcsMTggQEAKIAljcyAvPSA4LjsKIAlpZihjcyA8PSAyNC4zMjIpIHsKIAkJaWYoYnVmWzBdPT0w eDFmICYmIGJ1ZlsxXT09MHg5ZCkKLQkJCXByaW50KCIlc1xuIiwgbWltZSA/ICJhcHBsaWNhdGlv bi94LWNvbXByZXNzIiA6ICJjb21wcmVzc2VkIik7CisJCQlCcHJpbnQoJmJvdXQsICIlc1xuIiwg bWltZSA/ICJhcHBsaWNhdGlvbi94LWNvbXByZXNzIiA6ICJjb21wcmVzc2VkIik7CiAJCWVsc2UK IAkJaWYoYnVmWzBdPT0weDFmICYmIGJ1ZlsxXT09MHg4YikKLQkJCXByaW50KCIlc1xuIiwgbWlt ZSA/ICJhcHBsaWNhdGlvbi94LWd6aXAiIDogImd6aXAgY29tcHJlc3NlZCIpOworCQkJQnByaW50 KCZib3V0LCAiJXNcbiIsIG1pbWUgPyAiYXBwbGljYXRpb24veC1nemlwIiA6ICJnemlwIGNvbXBy ZXNzZWQiKTsKIAkJZWxzZQogCQlpZihidWZbMF09PSdCJyAmJiBidWZbMV09PSdaJyAmJiBidWZb Ml09PSdoJykKLQkJCXByaW50KCIlc1xuIiwgbWltZSA/ICJhcHBsaWNhdGlvbi94LWJ6aXAyIiA6 ICJiemlwMiBjb21wcmVzc2VkIik7CisJCQlCcHJpbnQoJmJvdXQsICIlc1xuIiwgbWltZSA/ICJh cHBsaWNhdGlvbi94LWJ6aXAyIiA6ICJiemlwMiBjb21wcmVzc2VkIik7CiAJCWVsc2UKIAkJaWYo YnVmWzBdPT0weDc4ICYmIGJ1ZlsxXT09MHg5YykKLQkJCXByaW50KCIlc1xuIiwgbWltZSA/ICJh cHBsaWNhdGlvbi94LWRlZmxhdGUiIDogInpsaWIgY29tcHJlc3NlZCIpOworCQkJQnByaW50KCZi b3V0LCAiJXNcbiIsIG1pbWUgPyAiYXBwbGljYXRpb24veC1kZWZsYXRlIiA6ICJ6bGliIGNvbXBy ZXNzZWQiKTsKIAkJZWxzZQotCQkJcHJpbnQoIiVzXG4iLCBtaW1lID8gT0NURVQgOiAiZW5jcnlw dGVkIik7CisJCQlCcHJpbnQoJmJvdXQsICIlc1xuIiwgbWltZSA/IE9DVEVUIDogImVuY3J5cHRl ZCIpOwogCQlyZXR1cm4gMTsKIAl9CiAJcmV0dXJuIDA7CkBAIC0xMzg2LDcgKzEzOTMsNyBAQAog CQlyYXJlICs9IGNmcmVxW3RvbG93ZXIoKnApXTsKIAl9CiAJaWYodm93KjUgPj0gbmJ1Zi1jZnJl cVsnICddICYmIGNvbW0gPj0gMTAqcmFyZSkgewotCQlwcmludCgiJXNcbiIsIG1pbWUgPyBQTEFJ TiA6ICJFbmdsaXNoIHRleHQiKTsKKwkJQnByaW50KCZib3V0LCAiJXNcbiIsIG1pbWUgPyBQTEFJ TiA6ICJFbmdsaXNoIHRleHQiKTsKIAkJcmV0dXJuIDE7CiAJfQogCXJldHVybiAwOwpAQCAtMTQ5 Myw3ICsxNTAwLDcgQEAKIAkgKiBmb3Igc3ViZm9udCwgdGhlIHN1YmZvbnQgaGVhZGVyIHNob3Vs ZCBmb2xsb3cgaW1tZWRpYXRlbHkuCiAJICovCiAJaWYgKGNtcHIpIHsKLQkJcHJpbnQobWltZSA/ ICJpbWFnZS9wOWJpdFxuIiA6ICJDb21wcmVzc2VkICVzcGxhbiA5IGltYWdlIG9yIHN1YmZvbnQs IGRlcHRoICVkLCBzaXplICVkeCVkXG4iLAorCQlCcHJpbnQoJmJvdXQsIG1pbWUgPyAiaW1hZ2Uv cDliaXRcbiIgOiAiQ29tcHJlc3NlZCAlc3BsYW4gOSBpbWFnZSBvciBzdWJmb250LCBkZXB0aCAl ZCwgc2l6ZSAlZHglZFxuIiwKIAkJCW5ld2xhYmVsLCBkZXAsIGhpeCwgaGl5KTsKIAkJcmV0dXJu IDE7CiAJfQpAQCAtMTUwMywxMiArMTUxMCwxMiBAQAogCSAqLwogCWlmIChsZW4gIT0gMCAmJiAo bWJ1Zi0+bGVuZ3RoID09IDAgfHwgbWJ1Zi0+bGVuZ3RoID09IGxlbiB8fAogCSAgICBtYnVmLT5s ZW5ndGggPiBsZW4gJiYgbWJ1Zi0+bGVuZ3RoIDwgbGVuK1A5QklUTEVOKSkgewotCQlwcmludCht aW1lID8gImltYWdlL3A5Yml0XG4iIDogIiVzcGxhbiA5IGltYWdlLCBkZXB0aCAlZCwgc2l6ZSAl ZHglZFxuIiwKKwkJQnByaW50KCZib3V0LCBtaW1lID8gImltYWdlL3A5Yml0XG4iIDogIiVzcGxh biA5IGltYWdlLCBkZXB0aCAlZCwgc2l6ZSAlZHglZFxuIiwKIAkJCW5ld2xhYmVsLCBkZXAsIGhp eCwgaGl5KTsKIAkJcmV0dXJuIDE7CiAJfQogCWlmIChwOXN1YmZvbnQoYnVmK2xlbikpIHsKLQkJ cHJpbnQobWltZSA/ICJpbWFnZS9wOWJpdFxuIiA6ICIlc3N1YmZvbnQgZmlsZSwgZGVwdGggJWQs IHNpemUgJWR4JWRcbiIsCisJCUJwcmludCgmYm91dCwgbWltZSA/ICJpbWFnZS9wOWJpdFxuIiA6 ICIlc3N1YmZvbnQgZmlsZSwgZGVwdGggJWQsIHNpemUgJWR4JWRcbiIsCiAJCQluZXdsYWJlbCwg ZGVwLCBoaXgsIGhpeSk7CiAJCXJldHVybiAxOwogCX0KQEAgLTE1NzksNyArMTU4Niw3IEBACiAJ CX0KIAl9CiAJaWYgKGkpIHsKLQkJcHJpbnQoIiVzXG4iLCBtaW1lID8gUExBSU4gOiAiZm9udCBm aWxlIik7CisJCUJwcmludCgmYm91dCwgIiVzXG4iLCBtaW1lID8gUExBSU4gOiAiZm9udCBmaWxl Iik7CiAJCXJldHVybiAxOwogCX0KIAlyZXR1cm4gMDsKQEAgLTE2MDQsNyArMTYxMSw3IEBACiBp c3J0Zih2b2lkKQogewogCWlmKHN0cnN0cigoY2hhciAqKWJ1ZiwgIlxccnRmMSIpKXsKLQkJcHJp bnQobWltZSA/ICJhcHBsaWNhdGlvbi9ydGZcbiIgOiAicmljaCB0ZXh0IGZvcm1hdFxuIik7CisJ CUJwcmludCgmYm91dCwgbWltZSA/ICJhcHBsaWNhdGlvbi9ydGZcbiIgOiAicmljaCB0ZXh0IGZv cm1hdFxuIik7CiAJCXJldHVybiAxOwogCX0KIAlyZXR1cm4gMDsKQEAgLTE2MTQsNyArMTYyMSw3 IEBACiBpc21zZG9zKHZvaWQpCiB7CiAJaWYgKGJ1ZlswXSA9PSAweDRkICYmIGJ1ZlsxXSA9PSAw eDVhKXsKLQkJcHJpbnQobWltZSA/ICJhcHBsaWNhdGlvbi94LW1zZG93bmxvYWRcbiIgOiAiTVNE T1MgZXhlY3V0YWJsZVxuIik7CisJCUJwcmludCgmYm91dCwgbWltZSA/ICJhcHBsaWNhdGlvbi94 LW1zZG93bmxvYWRcbiIgOiAiTVNET1MgZXhlY3V0YWJsZVxuIik7CiAJCXJldHVybiAxOwogCX0K IAlyZXR1cm4gMDsKQEAgLTE2MjksMTAgKzE2MzYsMTAgQEAKIAkJcmV0dXJuIDA7CiAJc3dpdGNo KGJ1ZlsyXSl7CiAJY2FzZSAxOgotCQlwcmludChtaW1lID8gImltYWdlL3gtaWNvblxuIiA6ICJN aWNyb3NvZnQgaWNvbiBmaWxlXG4iKTsKKwkJQnByaW50KCZib3V0LCBtaW1lID8gImltYWdlL3gt aWNvblxuIiA6ICJNaWNyb3NvZnQgaWNvbiBmaWxlXG4iKTsKIAkJcmV0dXJuIDE7CiAJY2FzZSAy OgotCQlwcmludChtaW1lID8gImltYWdlL3gtaWNvblxuIiA6ICJNaWNyb3NvZnQgY3Vyc29yIGZp bGVcbiIpOworCQlCcHJpbnQoJmJvdXQsIG1pbWUgPyAiaW1hZ2UveC1pY29uXG4iIDogIk1pY3Jv c29mdCBjdXJzb3IgZmlsZVxuIik7CiAJCXJldHVybiAxOwogCX0KIAlyZXR1cm4gMDsKQEAgLTE2 OTQsMTAgKzE3MDEsMTAgQEAKIAogCQkJaWYobj4wICYmIG4gPCBuZWxlbSh0eXBlKSAmJiB0eXBl W25dKQogCQkJCXQgPSB0eXBlW25dOwotCQkJcHJpbnQoIiVzIEVMRiAlc1xuIiwgcCwgdCk7CisJ CQlCcHJpbnQoJmJvdXQsICIlcyBFTEYgJXNcbiIsIHAsIHQpOwogCQl9CiAJCWVsc2UKLQkJCXBy aW50KCJhcHBsaWNhdGlvbi94LWVsZi1leGVjdXRhYmxlXG4iKTsKKwkJCUJwcmludCgmYm91dCwg ImFwcGxpY2F0aW9uL3gtZWxmLWV4ZWN1dGFibGVcbiIpOwogCQlyZXR1cm4gMTsKIAl9CiAKQEAg LTE3MzYsOCArMTc0Myw4IEBACiAJfQogCiAJaWYobWltZSkKLQkJcHJpbnQoImFwcGxpY2F0aW9u L3gtZmFjZVxuIik7CisJCUJwcmludCgmYm91dCwgImFwcGxpY2F0aW9uL3gtZmFjZVxuIik7CiAJ ZWxzZQotCQlwcmludCgiZmFjZSBpbWFnZSBkZXB0aCAlZFxuIiwgbGRlcHRoKTsKKwkJQnByaW50 KCZib3V0LCAiZmFjZSBpbWFnZSBkZXB0aCAlZFxuIiwgbGRlcHRoKTsKIAlyZXR1cm4gMTsKIH0K --0000000000006a409705c98bc948--