From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id eOIqB89m4GHKIAEAgWs5BA (envelope-from ) for ; Thu, 13 Jan 2022 18:52:15 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id iKKPO85m4GH6ZwEAG6o9tA (envelope-from ) for ; Thu, 13 Jan 2022 18:52:14 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 8F3181DE22 for ; Thu, 13 Jan 2022 18:52:08 +0100 (CET) Received: from localhost ([::1]:33466 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n84Gd-0001DQ-8i for larch@yhetil.org; Thu, 13 Jan 2022 12:52:07 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38900) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n84GY-0001C4-85 for guix-patches@gnu.org; Thu, 13 Jan 2022 12:52:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:41626) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1n84GX-0006ca-Ur for guix-patches@gnu.org; Thu, 13 Jan 2022 12:52:01 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1n84GX-0003F6-Rt for guix-patches@gnu.org; Thu, 13 Jan 2022 12:52:01 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#48463] gnu: Add j. Resent-From: Liliana Marie Prikler Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 13 Jan 2022 17:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48463 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: elaexuotee@wilsonb.com Cc: Maxime Devos , 48463@debbugs.gnu.org Received: via spool by 48463-submit@debbugs.gnu.org id=B48463.164209629312423 (code B ref 48463); Thu, 13 Jan 2022 17:52:01 +0000 Received: (at 48463) by debbugs.gnu.org; 13 Jan 2022 17:51:33 +0000 Received: from localhost ([127.0.0.1]:34529 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n84Fy-0003E8-1B for submit@debbugs.gnu.org; Thu, 13 Jan 2022 12:51:33 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:41632) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n84Fv-0003De-6M for 48463@debbugs.gnu.org; Thu, 13 Jan 2022 12:51:24 -0500 Received: by mail-wr1-f65.google.com with SMTP id v6so11522432wra.8 for <48463@debbugs.gnu.org>; Thu, 13 Jan 2022 09:51:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version; bh=TiLzPqS84Soyeo+KYJJ2y1c2+4NiIpOQa+ALShIxOcc=; b=mPI+ar5FM5BtuF3iEHFmVwmPgU2cllQreG937dFG3A+cueXNeybXbfJRo1KuwNil6N MdmeX0AV9S9RdGM2677pm1hshA3QY29y8JMUAM4qyPoX3vN3rVQ7KzPoLMKD9wIr2f73 JZfADFuzWRXujC/nvOHx0G7LV3BeplzwcmhQ8WA5mM3m2ls6anlBdbwEJn/AWy7KDz4H wpdm2MyMpbHwtUUxvitjcL+u8CtDLiFknKtruKGfJNg6AqbAPM5Co9r19a+lF6ZMMEKV 82vQ0umIFohg6iMZwHpShAkUWkGWUHUPy5JdMMIPDETI5eaakGMjuI+9v5Vrf1diQknd +pAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version; bh=TiLzPqS84Soyeo+KYJJ2y1c2+4NiIpOQa+ALShIxOcc=; b=z+DQstol/67lmWX/+aUjZoJiJIIK+hhmiNSdAh590ab0mCl1WUQOE4GbuheAG54ERZ teRxPh04sgoBaAm/WTKIbnVdDsnpPMXDdVVfQp3sFULbz7Hex4NJTuOVv8/fJH9JpYQ4 gSwAg9ro4IiOFwAcTow6kjamekfvkqben8RCDFaqmGwstqOt6Dz5UTodd+x7JzrFFNw/ 7lmhXKNb4BCfk5lR6RxilZW3VGFP/G/cpFyLTKMPMY4lA0BK3qsF8KJgXSLZbrgdeYjU EFxBTQRN5i5ZGZLdJHA4TPVDXUQ6zQE4ps94xlQhB0xky7xW9QogcLxCOyk32RXfdaj7 nxoQ== X-Gm-Message-State: AOAM5313jFkhohLYq4WSh805Vs3e4K/gjx+s3u7kSc/UaaqMa15J8vJk CzQ+vv1tvAiGntCpyg3BXRI= X-Google-Smtp-Source: ABdhPJzL2W5BKjhYXvb0oR3+7IF51aIz5YKdJsLEdlUAvoLQ39qY9nLTBxReGBM9j1rIDd9W1/HbwA== X-Received: by 2002:adf:e291:: with SMTP id v17mr4869706wri.479.1642096277247; Thu, 13 Jan 2022 09:51:17 -0800 (PST) Received: from nijino.fritz.box (85-127-52-93.dsl.dynamic.surfer.at. [85.127.52.93]) by smtp.gmail.com with ESMTPSA id m35sm14254388wms.1.2022.01.13.09.51.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Jan 2022 09:51:16 -0800 (PST) Message-ID: <62d37956f16c08bc4ce26e44da16dce704ddd0f8.camel@gmail.com> From: Liliana Marie Prikler Date: Thu, 13 Jan 2022 18:51:14 +0100 In-Reply-To: <3MMTDZQJQ8IR6.334ZWY8AD0487@wilsonb.com> References: <3LOAUDT0FLL4U.2SOD925YP915T@wilsonb.com> <8b853d0585505ce29c9afc638b644fa34805e6c0.camel@student.tugraz.at> <293L8YPQS4CLB.3VK1B1A36XNAY@wilsonb.com> <5d30160bd2a4592459cd407f99cbd3edadb1db1b.camel@student.tugraz.at> <27DCD25Y68ZWJ.2HRC4G65PWIA7@wilsonb.com> <94f4625dcb0479d873cf60449631527e841fd457.camel@gmail.com> <2JQJMV0O718S1.31FZE8GKCTLPF@wilsonb.com> <90704c2259f576a14fb1268219e8c0dc2b3bf289.camel@telenet.be> <2P322C327XW0Q.21O5A4IFGMNDI@wilsonb.com> <72aff035c93f9f91afa54ef5b51c7381b0b02ccb.camel@gmail.com> <3MMTDZQJQ8IR6.334ZWY8AD0487@wilsonb.com> Content-Type: multipart/mixed; boundary="=-oVps8UgJulS5Eykt4b4j" User-Agent: Evolution 3.42.1 MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1642096334; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=TiLzPqS84Soyeo+KYJJ2y1c2+4NiIpOQa+ALShIxOcc=; b=RxMKlKq6STUh9RUJZRRmC3T1wFBHUP5TSvlOgvUqZ/6aDjolicI3/My6omjXLJYApRQu0o f18dGVvPjhBORtFjjwUwV1LNsBq0jFazen4J4JZ4Y1Q2Bo3dCUL61pWEyc8dXJMOfR1RwU Ko0bW1/5iqgJ+367jUP7m7Xi2mdiSWzvSehPs7L4qJTeneqwuoQs5jwPM02Dj+Wh8VUtLM IrxDteEBQ1z9wyoUUvqCBUgyEREfE3X3merJzF63hu94RBjpY17yr9TC7MfRqyqcSrOhRT jbdL1Us8BCvaZcNwB9YEZO0i1ZVDIlDwXLuYAj3OYcjl4TdQW+Rx04cKgClWvQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1642096334; a=rsa-sha256; cv=none; b=rx9Y+maUHlIP+h79xlwUE0P/5RfoMxWETbHpb1Ukrgzd0xPmS5/c2z+kZOcMUYOck3KGsH SzOzxhtBQNRU0e+xzi6BY36+Tdmz5GR3Kk7gsoQkB8dIZQDQbijF966V52Z7wmV9wpaQfb o4FvHGetpx13rqTzP+C4nJNGfMHcyIGC4njteeP+a3ydsHQDmo9FgxcCfSHxH3zS+iMrf2 gd8OX6aG8NyloTQ4OmbogswSFa01KGK0ILp3gal+iHf1T91mHyTMEznigjc+xpyQG75Hzr pkE2N4XFvPqaGPUBTafKbkeFJt9ZapNXXll06fAVcXS62Csd5iwuIb6diNLRng== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=mPI+ar5F; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.72 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=mPI+ar5F; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 8F3181DE22 X-Spam-Score: -2.72 X-Migadu-Scanner: scn0.migadu.com X-TUID: PrDR8H1RqsUb --=-oVps8UgJulS5Eykt4b4j Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Hi, Am Donnerstag, dem 13.01.2022 um 16:51 +0900 schrieb elaexuotee@wilsonb.com: > > > > > +(define* (make-j #:key > > > +                 (builder "guix.gnu.org") > > > +                 vername > > > +                 revision > > > +                 hash > > > +                 (type 'release) > > > +                 commit > > > +                 (patches '()) > > > +                 (extra-inputs '()) > > > +                 (extra-envars '())) > > > + (package > > > +   (name (jname "jsoftware-j" type)) > > > +   (version (jversion->string vername revision)) > > > +   (source > > > +    (origin > > > +      (method git-fetch) > > > +      (uri (git-reference > > > +            (url "https://github.com/jsoftware/jsource") > > > +            (commit (or commit (jinfo->git-tag vername type > > > revision)))) > > Vername sounds a little weird, make that version-base or something > > clearer.  Also, the argument #:commit is used in an unclear fashion > > -- > > if you were to pass an actual commit hash to it, it'd still be > > treated > > as a release and not be using git-version. > > Cool. I had a similar sense, but our ideas are a lot sharper than the > ones I had. This actually prompted me to do some code cleanup, > leveraging now-me who has a bit more Guile experience than past-me. > At the very least, variable names should be more descriptive and > consistent, overall. Note, that the current version still ignores commit. I've attached a proof of concept patch, which fixes that, plus some other minor things, but it now uses a pair for version. Also it's untested, so treat with care. > Good idea. Upstream's build scripts condition a *lot* of behaviour on > the j64avx environment variable, so it might not be straightforward, > but I will put this on the to-do list of future improvements. > > (Note, the code block quoted here got much simplified in the current > patch.) Reading /proc/cpuinfo is not nice. Please use (guix cpu), which also provides you the flags that you need. Cheers --=-oVps8UgJulS5Eykt4b4j Content-Disposition: attachment; filename="0001-gnu-Add-j.patch" Content-Type: text/x-patch; name="0001-gnu-Add-j.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5M2JkNDc4NTY1NjVhZjE0MDdiNjYyYWNmYWU4ODU3ODIxYzU3MWM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQi4gV2lsc29uIiA8ZWxhZXh1b3RlZUB3aWxzb25iLmNvbT4K RGF0ZTogV2VkLCAxMiBKYW4gMjAyMiAxODo0NDozNiArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIGdu dTogQWRkIGouCgoqIGdudS9wYWNrYWdlcy9qc29mdHdhcmUuc2NtOiBOZXcgZmlsZS4KKiBnbnUv cGFja2FnZXMvcGF0Y2hlcy9qc29mdHdhcmUtajkwMS1mLWZpeGVzLnBhdGNoOiBOZXcgZmlsZS4K KiBnbnUvbG9jYWwubWsgW0dOVV9TWVNURU1fTU9EVUxFU106IFJlZ2lzdGVyIGpzb2Z0d2FyZS4K W2Rpc3RfcGF0Y2hfREFUQV06IEFkZCBqc29mdHdhcmUtajkwMS1mLWZpeGVzLnBhdGNoLgotLS0K IGdudS9sb2NhbC5tayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBn bnUvcGFja2FnZXMvanNvZnR3YXJlLnNjbSAgICAgICAgICAgICAgICAgICAgfCA0NTkgKysrKysr KysrKysrKysrKysrCiAuLi4vcGF0Y2hlcy9qc29mdHdhcmUtajkwMS1mLWZpeGVzLnBhdGNoICAg ICAgfCAgODAgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDU0MSBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL2pzb2Z0d2FyZS5zY20KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9qc29mdHdhcmUtajkwMS1mLWZpeGVzLnBhdGNoCgpkaWZm IC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IGVmNzNmOTIzN2EuLmU2 OWE2OTAyN2EgMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsKQEAg LTMyNSw2ICszMjUsNyBAQCBHTlVfU1lTVEVNX01PRFVMRVMgPQkJCQlcCiAgICVEJS9wYWNrYWdl cy9qZW1hbGxvYy5zY20JCQlcCiAgICVEJS9wYWNrYWdlcy9qcm5sLnNjbQkJCQlcCiAgICVEJS9w YWNrYWdlcy9qb3NlLnNjbQkJCQlcCisgICVEJS9wYWNrYWdlcy9qc29mdHdhcmUuc2NtCQkJCVwK ICAgJUQlL3BhY2thZ2VzL2p1bGlhLnNjbQkJCVwKICAgJUQlL3BhY2thZ2VzL2p1bGlhLWpsbC5z Y20JCQlcCiAgICVEJS9wYWNrYWdlcy9qdWxpYS14eXouc2NtCQkJXApAQCAtMTI5MCw2ICsxMjkx LDcgQEAgZGlzdF9wYXRjaF9EQVRBID0JCQkJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2ly cmxpY2h0LXVzZS1zeXN0ZW0tbGlicy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9p c2MtZGhjcC1nY2MtY29tcGF0LnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2lzbC0w LjExLjEtYWFyY2g2NC1zdXBwb3J0LnBhdGNoCVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvanNv ZnR3YXJlLWo5MDEtZi1maXhlcy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9qc29u LWMtMC4xMy1DVkUtMjAyMC0xMjc2Mi5wYXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2pz b24tYy0wLjEyLUNWRS0yMDIwLTEyNzYyLnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMv anNvbmNwcC1wa2ctY29uZmlnLXZlcnNpb24ucGF0Y2gJCVwKZGlmZiAtLWdpdCBhL2dudS9wYWNr YWdlcy9qc29mdHdhcmUuc2NtIGIvZ251L3BhY2thZ2VzL2pzb2Z0d2FyZS5zY20KbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTE5NjRkZDVhYgotLS0gL2Rldi9udWxsCisr KyBiL2dudS9wYWNrYWdlcy9qc29mdHdhcmUuc2NtCkBAIC0wLDAgKzEsNDU5IEBACis7OzsgR05V IEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZvciBHTlUKKzs7OyBDb3B5 cmlnaHQgwqkgMjAyMiBCLiBXaWxzb24gPGVsYWV4dW90ZWVAd2lsc29uYi5jb20+Cis7OzsKKzs7 OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKzs7 OyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorOzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdAorOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorOzs7IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7OyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OzsgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7OworOzs7IFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7 OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKworKGRlZmluZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBqc29mdHdhcmUpCisg ICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1dGlscykKKyAgIzp1c2UtbW9kdWxlIChndWl4IGJ1 aWxkLXN5c3RlbSBnbnUpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZC1zeXN0ZW0gdHJpdmlh bCkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGdpdC1kb3dubG9hZCkKKyAgIzp1c2UtbW9kdWxlICgo Z3VpeCBsaWNlbnNlcykgIzpwcmVmaXggbGljZW5zZTopCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBw YWNrYWdlcykKKyAgIzp1c2UtbW9kdWxlIChndWl4IHV0aWxzKQorICAjOnVzZS1tb2R1bGUgKGdu dSBwYWNrYWdlcykKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbGliZWRpdCkKKyAgIzp1 c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbGx2bSkKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2Fn ZXMgbWF0aHMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhwKQorICAjOnVzZS1tb2R1bGUgKGlj ZS05IGZ0dykKKyAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKKyAgIzp1c2UtbW9kdWxlIChp Y2UtOSByZWdleCkKKyAgIzp1c2UtbW9kdWxlIChpY2UtOSByZGVsaW0pCisgICM6dXNlLW1vZHVs ZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTI2KQorICAjOnVzZS1t b2R1bGUgKHNyZmkgc3JmaS03MSkpCisKKworOzs7IFRPRE86IE1ha2UgaW1wb3J0ZXIgYW5kIHBh Y2thZ2VzIGZvciBKIGFkZG9uczoKKzs7OyBodHRwOi8vd3d3Lmpzb2Z0d2FyZS5jb20vamFsLwor Cis7OzsgVE9ETzogUGFja2FnZSB1cCBqODB4IHNlcmllcworCisKKyhkZWZpbmUgKGpuYW1lIHBy ZWZpeCByZWxlYXNlLXR5cGUpCisgICJSZXR1cm4gYSBwYWNrYWdlIG5hbWUgZm9yIEosIGluY2x1 ZGluZyBSRUxFQVNFLVRZUEUgb25seSBpZiBub3QgJ3JlbGVhc2UuIgorICAobWF0Y2ggcmVsZWFz ZS10eXBlCisgICAgKCdyZWxlYXNlIHByZWZpeCkKKyAgICAoXyAgICAgICAgKHN0cmluZy1hcHBl bmQgcHJlZml4ICItIiAoc3ltYm9sLT5zdHJpbmcgcmVsZWFzZS10eXBlKSkpKSkKKworKGRlZmlu ZSogKGp2ZXJzaW9uLT5zdHJpbmcgbWFqb3IgIzpvcHRpb25hbCBtaW5vciByZXZpc2lvbiBjb21t aXQpCisgICJSZXR1cm4gYSB2ZXJzaW9uIHN0cmluZyBmb3JtYXR0ZWQgbGlrZSBNQUpPUiwgTUFK T1IuTUlOT1IsIG9yCitNQUpPUlsuTUlOT1JdLVJFVklTSU9OLUNPTU1JVCBkZXBlbmRpbmcgb24g dGhlIGdpdmVuIHBhcmFtZXRlcnMuIgorICAobWF0Y2ggKGxpc3QgbWlub3IgcmV2aXNpb24gY29t bWl0KQorICAgICgoI2YgI2YgI2YpIG1ham9yKQorICAgICgobWlub3IgI2YgI2YpIChzdHJpbmct YXBwZW5kIG1ham9yICIuIiBtaW5vcikpCisgICAgKChtaW5vciByZXZpc2lvbiBjb21taXQpCisg ICAgIChzdHJpbmctYXBwZW5kIChpZiBtaW5vciAoc3RyaW5nLWFwcGVuZCBtYWpvciAiLiIgbWlu b3IpIG1ham9yKQorICAgICAgICAgICAgICAgICAgICAiLSIgcmV2aXNpb24gIi0iIGNvbW1pdCkp KSkKKworKGRlZmluZSogKGpyZWxlYXNlLXN0cmluZyByZWxlYXNlLXR5cGUgIzpvcHRpb25hbCBt aW5vcikKKyAgIkNvbnN0cnVjdCBKIHJlbGVhc2UgaWRlbnRpZmllciBzdHJpbmcuIgorICAobGV0 ICgocmVsZWFzZS10eXBlIChzeW1ib2wtPnN0cmluZyByZWxlYXNlLXR5cGUpKSkKKyAgICAoaWYg bWlub3IKKyAgICAgICAgKHN0cmluZy1hcHBlbmQgcmVsZWFzZS10eXBlICItIiBtaW5vcikKKyAg ICAgICAgcmVsZWFzZS10eXBlKSkpCisKKyhkZWZpbmUqIChqaW5mby0+Z2l0LXRhZyBtYWpvciBy ZWxlYXNlLXR5cGUgIzpvcHRpb25hbCBtaW5vcikKKyAgIkdpdmVuIHZlcnNpb24gcGFyYW1ldGVy cywgY29uc3RydWN0IGEgZ2l0IHRhZyBmb3IgdXBzdHJlYW0gcmVsZWFzZXMuIgorICAoc3RyaW5n LWFwcGVuZCAiaiIgbWFqb3IgKGpyZWxlYXNlLXN0cmluZyByZWxlYXNlLXR5cGUgbWlub3IpKSkK KworKGRlZmluZSAoaWpjb25zb2xlKQorICAiR2VuZXJhdGUgYSBHLWV4cCBzY3JpcHQgdGhhdCBk ZXRlY3RzIEFWWC9BVlgyIHN1cHBvcnQgYXQgcnVudGltZSBhbmQKK2V4ZWN1dGVzIGpjb25zb2xl IHdpdGggdGhlIGFwcHJvcHJpYXRlIGxpYmouc28gYW5kIHByb2ZpbGUuaWpzLiIKKyAgKHByb2dy YW0tZmlsZSAiaWpjb25zb2xlIgorICAgICN+KGJlZ2luCisgICAgICAgICh1c2UtbW9kdWxlcyAo KGljZS05IHJkZWxpbSkgIzpzZWxlY3QgKHJlYWQtbGluZSkpCisgICAgICAgICAgICAgICAgICAg ICAoKGljZS05IHJlZ2V4KSAjOnNlbGVjdCAocmVnZXhwLW1hdGNoPyBzdHJpbmctbWF0Y2gpKSkK KworICAgICAgICA7OyBBc3N1bWUgdGhhdCB0aGlzIHNjcmlwdCB3aWxsIGJlIGluc3RhbGxlZCB1 bmRlciBiaW4vLgorICAgICAgICAoZGVmaW5lICViYXNlZGlyIChkaXJuYW1lIChkaXJuYW1lIChj dXJyZW50LWZpbGVuYW1lKSkpKQorCisgICAgICAgIChkZWZpbmUgKGNwdS1mZWF0dXJlLWxpbmU/ IHN0cmluZykKKyAgICAgICAgICAoc3RyaW5nLXByZWZpeD8gImZsYWdzIiBzdHJpbmcpKQorCisg ICAgICAgIChkZWZpbmUgKGNvbnRhaW5zLXdvcmQ/IHdvcmQgc3RyaW5nKQorICAgICAgICAgIChy ZWdleHAtbWF0Y2g/CisgICAgICAgICAgICAoc3RyaW5nLW1hdGNoIChzdHJpbmctam9pbiBgKCJc XDwiICx3b3JkICJcXD4iKSAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nKSkp CisKKyAgICAgICAgKGRlZmluZSAoaGFzLWNwdS1mZWF0dXJlPyBmZWF0dXJlKQorICAgICAgICAg ICh3aXRoLWlucHV0LWZyb20tZmlsZSAiL3Byb2MvY3B1aW5mbyIKKyAgICAgICAgICAgICAobGFt YmRhICgpCisgICAgICAgICAgICAgICAoY2F0Y2ggJ2ZvdW5kCisgICAgICAgICAgICAgICAgIChs YW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAobGV0IGxvb3AgKChsaW5lIChyZWFkLWxpbmUp KSkKKyAgICAgICAgICAgICAgICAgICAgIChjb25kICgoZW9mLW9iamVjdD8gbGluZSkgI2YpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFuZCAoY3B1LWZlYXR1cmUtbGluZT8gbGluZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250YWlucy13b3JkPyBmZWF0dXJl IGxpbmUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnZm91bmQpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGVsc2UgKGxvb3AgKHJlYWQtbGluZSkpKSkpKQorICAg ICAgICAgICAgICAgICAoY29uc3QgI3QpKSkpKQorCisgICAgICAgIChsZXQqICgoamNvbnNvbGUg KHN0cmluZy1hcHBlbmQgJWJhc2VkaXIgIi9saWJleGVjL2ovamNvbnNvbGUiKSkKKyAgICAgICAg ICAgICAgIChsaWJqIChmb3JtYXQgI2YgIn5hL2xpYi9qL2xpYmotfmEuc28iICViYXNlZGlyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kICgoaGFzLWNwdS1mZWF0dXJlPyAiYXZ4 MiIpICJhdngyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChoYXMtY3B1 LWZlYXR1cmU/ICJhdngiKSAiYXZ4IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVsc2UgIiIpKSkpCisgICAgICAgICAgICAgICAoanByb2ZpbGUgKHN0cmluZy1hcHBlbmQg JWJhc2VkaXIgIi9ldGMvai9wcm9maWxlLmlqcyIpKSkKKyAgICAgICAgICAoYXBwbHkgZXhlY2wg amNvbnNvbGUgImlqY29uc29sZSIgIi1saWIiIGxpYmogIi1qcHJvZmlsZSIganByb2ZpbGUKKyAg ICAgICAgICAgICAgICAgKGNkciAoY29tbWFuZC1saW5lKSkpKSkpKQorCisoZGVmaW5lKiAobWFr ZS1qICM6a2V5CisgICAgICAgICAgICAgICAgIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgcmV2 aXNpb24KKyAgICAgICAgICAgICAgICAgaGFzaAorICAgICAgICAgICAgICAgICBjb21taXQKKyAg ICAgICAgICAgICAgICAgdGFnCisgICAgICAgICAgICAgICAgIChyZWxlYXNlLXR5cGUgJ3JlbGVh c2UpCisgICAgICAgICAgICAgICAgIChwYXRjaGVzICcoKSkKKyAgICAgICAgICAgICAgICAgKGV4 dHJhLWlucHV0cyAnKCkpCisgICAgICAgICAgICAgICAgIChleHRyYS1lbnZhcnMgJygpKQorICAg ICAgICAgICAgICAgICAoYnVpbGRlciAiZ3VpeC5nbnUub3JnIikpCisgIChsZXQgKChtYWpvciBt aW5vciAoaWYgKHBhaXI/IHZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgKGNhcitj ZHIgdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVzIHZlcnNpb24gIiIp KSkpCisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1lIChqbmFtZSAianNvZnR3YXJlLWoiIHJlbGVh c2UtdHlwZSkpCisgICAgICAodmVyc2lvbiAoanZlcnNpb24tPnN0cmluZyBtYWpvciBtaW5vciBy ZXZpc2lvbiBjb21taXQpKQorICAgICAgKHNvdXJjZQorICAgICAgIChvcmlnaW4KKyAgICAgICAg IChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAgICAg ICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRodWIuY29tL2pzb2Z0d2FyZS9qc291cmNlIikKKyAg ICAgICAgICAgICAgIChjb21taXQgKG9yCisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQK KyAgICAgICAgICAgICAgICAgICAgICAgIHRhZyAoamluZm8tPmdpdC10YWcgbWFqb3IKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZS10eXBlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yKSkpKSkKKyAgICAg ICAgIChzaGEyNTYgKGJhc2UzMiBoYXNoKSkKKyAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxl LW5hbWUgbmFtZSB2ZXJzaW9uKSkKKyAgICAgICAgIChwYXRjaGVzIHBhdGNoZXMpKSkKKyAgICAg IChidWlsZC1zeXN0ZW0gZ251LWJ1aWxkLXN5c3RlbSkKKyAgICAgIChuYXRpdmUtaW5wdXRzCisg ICAgICAgKGxpc3QgY2xhbmctdG9vbGNoYWluKSkKKyAgICAgIChpbnB1dHMgKGNvbnMqIGxpYmVk aXQgbGlib21wIChpamNvbnNvbGUpIGV4dHJhLWlucHV0cykpCisgICAgICAoYXJndW1lbnRzCisg ICAgICAgYCgjOm1vZHVsZXMgKCgoaWNlLTkgZnR3KSAjOnNlbGVjdCAoc2NhbmRpcikpCisgICAg ICAgICAgICAgICAgICAgICgoaWNlLTkgcG9wZW4pICM6c2VsZWN0IChvcGVuLXBpcGUqIGNsb3Nl LXBpcGUpKQorICAgICAgICAgICAgICAgICAgICAoKGljZS05IHJlZ2V4KSAjOnNlbGVjdCAobWF0 Y2g6c3Vic3RyaW5nIHN0cmluZy1tYXRjaCkpCisgICAgICAgICAgICAgICAgICAgICgoaWNlLTkg dGhyZWFkcykgIzpzZWxlY3QgKHBhcmFsbGVsIHBhci1mb3ItZWFjaCkpCisgICAgICAgICAgICAg ICAgICAgICgoc3JmaSBzcmZpLTI2KSAjOnNlbGVjdCAoY3V0KSkKKyAgICAgICAgICAgICAgICAg ICAgKChzcmZpIHNyZmktMSkgIzpzZWxlY3QgKGZvbGQpKQorICAgICAgICAgICAgICAgICAgICAs QCVnbnUtYnVpbGQtc3lzdGVtLW1vZHVsZXMpCisgICAgICAgICAjOnBoYXNlcworICAgICAgICAg OzsgVXBzdHJlYW0ncyBidWlsZCBzeXN0ZW0gY29uc2lzdHMgb2YgYWQtaG9jIHNjcmlwdHMgdGhh dCBidWlsZCBidWlsZCB1cAorICAgICAgICAgOzsgKHZlcnkgY29tcGxpY2F0ZWQpIGVudmlyb25t ZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIG1ha2UuICBUaGUgYmFzaWMKKyAgICAgICAgIDs7IGJ1 aWxkIHByb2Nlc3MgbG9va3MgbGlrZSB0aGlzOgorICAgICAgICAgOzsKKyAgICAgICAgIDs7ICAg MSkgQ29weSBqc3JjL2p2ZXJzaW9uLXguaCB0byBqc3JjL2p2ZXJzaW9uLmggYW5kIGVkaXQgdmFs dWVzOworICAgICAgICAgOzsgICAyKSBTZXQganBsYXRmb3JtIGFuZCBqNjR4IGVudmlyb25tZW50 IHZhcmlhYmxlczsKKyAgICAgICAgIDs7ICAgMykgUnVuIG1ha2UyL2J1aWxkX2pjb25zb2xlLnNo IGFuZCBtYWtlMi9idWlsZF9saWJqLnNoOworICAgICAgICAgOzsKKyAgICAgICAgIDs7IEhvd2V2 ZXIsIHVwc3RyZWFtIGV4cGVjdHMgdXNlcnMgdG8gcnVuIEogZGlyZWN0bHkgZnJvbSB0aGUgc291 cmNlCisgICAgICAgICA7OyBkaXJlY3Rvcnk7IHRoZXkgZG8gbm90IHN1cHBseSBhIG1ha2UgYGlu c3RhbGwnIHRhcmdldC4gIFRodXMgaXQgdGFrZXMKKyAgICAgICAgIDs7IHNvbWUgbWFzc2FnaW5n IHRvIGluc3RhbGwgZmlsZXMgaW4gRkhTLXN0eWxlIGRpcmVjdG9yaWVzLgorICAgICAgICAgKG1v ZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcworICAgICAgICAgICA7OyBJbiBwYXJ0aWN1bGFy LCB3ZSBoYXZlIHRvIHNldCB1cAorICAgICAgICAgICA7OworICAgICAgICAgICA7OyAgIDEpIGpz cmMvanZlcnNpb24uaCBhcyBpbiBhIHR5cGljYWwgYnVpbGQ7CisgICAgICAgICAgIDs7ICAgMikg amxpYnJhcnkvYmluL3Byb2ZpbGV4LmlqcyB0byBwb2ludCB0byB3cml0YWJsZSBkaXJlY3Rvcmll czsKKyAgICAgICAgICAgOzsgICAzKSBtYWtlMi9idWlsZF8qLnNoIHRvIHJlc3BlY3Qgc3RhbmRh cmQgYnVpbGQgY29udmVudGlvbnM7CisgICAgICAgICAgIDs7ICAgNCkganNyYy9qY29uc29sZS5j IHRvIGZpeCBsaWJlZGl0IGRsb3BlbjsgYW5kCisgICAgICAgICAgIDs7ICAgNSkgSGFyZCBjb2Rl ZCByZWZlcmVuY2VzIHRvIGFkZG9ucyBkaXJlY3RvcnkuCisgICAgICAgICAgIChyZXBsYWNlICdj b25maWd1cmUKKyAgICAgICAgICAgICAobGFtYmRhKiAoIzprZXkgdGFyZ2V0IGlucHV0cyBvdXRw dXRzICM6YWxsb3ctb3RoZXIta2V5cykKKyAgICAgICAgICAgICAgIChsZXQqICgoY2xhbmctdG9v bGNoYWluIChhc3NvYy1yZWYgaW5wdXRzICJjbGFuZy10b29sY2hhaW4iKSkKKyAgICAgICAgICAg ICAgICAgICAgICAoY2xhbmcgKHN0cmluZy1hcHBlbmQgY2xhbmctdG9vbGNoYWluICIvYmluL2Ns YW5nIikpCisgICAgICAgICAgICAgICAgICAgICAgKGxpYmVkaXQgKGFzc29jLXJlZiBpbnB1dHMg ImxpYmVkaXQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAob3V0IChhc3NvYy1yZWYgb3V0cHV0 cyAib3V0IikpKQorICAgICAgICAgICAgICAgICA7OyBTZXQgdXAgYnVpbGQgY29uc3RhbnRzCisg ICAgICAgICAgICAgICAgIChjb3B5LWZpbGUgImpzcmMvanZlcnNpb24teC5oIiAianNyYy9qdmVy c2lvbi5oIikKKyAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqICJqc3JjL2p2ZXJzaW9uLmgi CisgICAgICAgICAgICAgICAgICAgKCgiXiNkZWZpbmUganZlcnNpb24uKiQiKQorICAgICAgICAg ICAgICAgICAgICAoZm9ybWF0ICNmICIjZGVmaW5lIGp2ZXJzaW9uIH5zXG4iICxtYWpvcikpCisg ICAgICAgICAgICAgICAgICAgKCgiXiNkZWZpbmUganR5cGUuKiQiKQorICAgICAgICAgICAgICAg ICAgICAoZm9ybWF0ICNmICIjZGVmaW5lIGp0eXBlIH5zXG4iCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLChqcmVsZWFzZS1zdHJpbmcgcmVsZWFzZS10eXBlIG1pbm9yKSkpCisgICAgICAg ICAgICAgICAgICAgKCgiXiNkZWZpbmUgamJ1aWxkZXIuKiQiKQorICAgICAgICAgICAgICAgICAg ICAoZm9ybWF0ICNmICIjZGVmaW5lIGpidWlsZGVyIH5zXG4iICxidWlsZGVyKSkpCisgICAgICAg ICAgICAgICAgIDs7IENyZWF0ZSBwcm9maWxleC5panMgb3ZlcnJpZGVzIHRvIHBvaW50IHRvIHRo ZSBjb3JyZWN0IHN0b3JlCisgICAgICAgICAgICAgICAgIDs7IGl0ZW1zLiAgTm90ZSB0aGF0IHdl IHNldCB+aW5zdGFsbCBhbmQgfmFkZG9ucyBkaXJlY3RvcmllcyB0bworICAgICAgICAgICAgICAg ICA7OyByZXNpZGUgdW5kZXIgfnVzZXIgdG8gYWxsb3cgaW5zdGFsbGluZyBhbmQgbG9hZGluZyBh ZGRvbnMuCisgICAgICAgICAgICAgICAgIDs7IFRPRE86IEd1aXgtaWZ5IEogYWRkb25zIGFzIHdl bGwuCisgICAgICAgICAgICAgICAgIChjYWxsLXdpdGgtb3V0cHV0LWZpbGUgImpsaWJyYXJ5L2Jp bi9wcm9maWxleC5panMiCisgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocG9ydCkKKyAgICAg ICAgICAgICAgICAgICAgIChkaXNwbGF5CisgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1q b2luCisgICAgICAgICAgICAgICAgICAgICAgIChsaXN0CisgICAgICAgICAgICAgICAgICAgICAg ICAic2hhcmU9LiAnL3NoYXJlL2onLH4gKHsufiBfMiB7IEkuQDo9JicvJykgQklOUEFUSCIKKyAg ICAgICAgICAgICAgICAgICAgICAgICJzeXN0ZW09LiBzaGFyZSwnL3N5c3RlbSciCisgICAgICAg ICAgICAgICAgICAgICAgICAidG9vbHM9LiBzaGFyZSwnL3Rvb2xzJyIKKyAgICAgICAgICAgICAg ICAgICAgICAgIDs7IFVwc3RyZWFtIGRlZmF1bHRzIHRvIHNwYW1taW5nICRIT01FIHdpdGggdW5o aWRkZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IHVzZXJkYXRhIGRpcmVjdG9yaWVzLiAg U2V0IHRoaXMgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7ICRIT01FLy5jb25maWcv ai88anZlcnNpb24+IGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICInanR5cGUganZl cnNpb24nPS4gKDMmeyx7LikgPDsuXzIgLCYnLycgOSE6MTQnJyIKKyAgICAgICAgICAgICAgICAg ICAgICAgICJqdmVyc2lvbj0uICh7Ln4gaS4mJy0nKSBqdmVyc2lvbiIKKyAgICAgICAgICAgICAg ICAgICAgICAgICJ1c2VyPS4gaG9tZSwnLy5jb25maWcvai8nLGp2ZXJzaW9uIgorICAgICAgICAg ICAgICAgICAgICAgICAgImFkZG9ucz0uIHVzZXIsJy9hZGRvbnMnIgorICAgICAgICAgICAgICAg ICAgICAgICAgImJyZWFrPS4gdXNlciwnL2JyZWFrJyIKKyAgICAgICAgICAgICAgICAgICAgICAg ICJjb25maWc9LiB1c2VyLCcvY29uZmlnJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0 YWxsPS4gdXNlciwnL2luc3RhbGwnIgorICAgICAgICAgICAgICAgICAgICAgICAgInNuYXA9LiB1 c2VyLCcvc25hcCciCisgICAgICAgICAgICAgICAgICAgICAgICAidGVtcD0uIHVzZXIsJy90ZW1w JyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpCisgICAgICAgICAgICAgICAgICAgICAg ICJcbiIpCisgICAgICAgICAgICAgICAgICAgICAgcG9ydCkpKQorICAgICAgICAgICAgICAgICA7 OyBNdW5nZSB0aGUgYnVpbGQgc2NyaXB0cyBpbnRvIHJlYXNvbjoKKyAgICAgICAgICAgICAgICAg OzsgMS4gU2hvcnQtY2lyY3VpdCB0aGUgZnJhZ2lsZSBjb21waWxlciBkZXRlY3Rpb247CisgICAg ICAgICAgICAgICAgIDs7IDIuIE1ha2Ugc3VyZSB0byBpbmNsdWRlIG91ciBDRkxBR1MgYW5kIExG TEFHUzsgYW5kCisgICAgICAgICAgICAgICAgIDs7IDMuIFByb3BhZ2F0ZSBzY3JpcHQgZXJyb3Jz IHRvIHRvcCBsZXZlbC4KKyAgICAgICAgICAgICAgICAgKGZvci1lYWNoCisgICAgICAgICAgICAg ICAgICAobGFtYmRhIChmaWxlKQorICAgICAgICAgICAgICAgICAgICAod2l0aC1kaXJlY3Rvcnkt ZXhjdXJzaW9uICJtYWtlMiIKKyAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogZmls ZQorICAgICAgICAgICAgICAgICAgICAgICAgOzsgVGhlIGBjb21waWxlcicgdmFyaWFibGUgZG9l c24ndCBwb2ludCB0byB0aGUgYWN0dWFsCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBjb21w aWxlci4gIEl0IGlzIGp1c3QgYSBzd2l0Y2ggdG8gdGVsbCB0aGUgYnVpbGQKKyAgICAgICAgICAg ICAgICAgICAgICAgIDs7IHNjcmlwdHMgd2hldGhlciB0byB1c2UgZ2NjLSBvciBjbGFuZy1zcGVj aWZpYyBmbGFncy4KKyAgICAgICAgICAgICAgICAgICAgICAgICgoIl5jb21waWxlcj0uKiQiKSAi Y29tcGlsZXI9Y2xhbmdcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAoKCJeTERGTEFHUz1c IiIgZGVmKSAoc3RyaW5nLWFwcGVuZCBkZWYgIiRMREZMQUdTICIpKQorICAgICAgICAgICAgICAg ICAgICAgICAgKCgiXihjb21tb249XCIpKFxcJFVTRVRIUkVBRC4qKSQiIF8gZGVmIHJlc3QpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgZGVmICIkQ0ZMQUdTICIgcmVz dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAoKCJeIyEuKiIgc2hlYmFuZykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBzaGViYW5nICJzZXQgLW8gZXJyZXhpdFxu IikpKSkpCisgICAgICAgICAgICAgICAgICAnKCJidWlsZF9qY29uc29sZS5zaCIgImJ1aWxkX2xp Ymouc2giKSkKKyAgICAgICAgICAgICAgICAgOzsgVGhlIGpjb25zb2xlIG1hbnVhbGx5IGxvYWRz IGxpYmVkaXQgd2l0aCBkbG9wZW4uICBUaGUgcGF0aAorICAgICAgICAgICAgICAgICA7OyBtdXN0 IGJlIGFic29sdXRlIHRvIGNvcnJlY3RseSBwb2ludCB0byBvdXIgaW5wdXQuCisgICAgICAgICAg ICAgICAgIChzdWJzdGl0dXRlKiAianNyYy9qY29uc29sZS5jIgorICAgICAgICAgICAgICAgICAg ICgoImxpYmVkaXRcXC5zb1xcLlswLTldIiBzby1maWxlKQorICAgICAgICAgICAgICAgICAgICAo Zm9ybWF0ICNmICJ+YS9saWIvfmEiIGxpYmVkaXQgc28tZmlsZSkpKQorICAgICAgICAgICAgICAg ICA7OyBUaGUgfmFkZG9ucy9kZXYgZGlyZWN0b3J5IHN1cHBsaWVzIHRlbnRhdGl2ZSBKLXNjcmlw dAorICAgICAgICAgICAgICAgICA7OyBkZWZpbml0aW9ucyBvZiBuZXcgSiBlbmdpbmUgZnVuY3Rp b25hbGl0eS4gIFNpbmNlIHdlIHBvaW50CisgICAgICAgICAgICAgICAgIDs7IH5hZGRvbnMgdW5k ZXIgdGhlIH51c2VyIGRpcmVjdG9yeSwgd2UgbW92ZSBpdCB1bmRlciB+c3lzdGVtCisgICAgICAg ICAgICAgICAgIDs7IGluc3RlYWQsIHdoaWNoIHNpdHMgYXMtaXMgaW4gdGhlIG91dHB1dC4KKyAg ICAgICAgICAgICAgICAgKHdpdGgtZGlyZWN0b3J5LWV4Y3Vyc2lvbiAianNyYyIKKyAgICAgICAg ICAgICAgICAgICAoZm9yLWVhY2gKKyAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoZmlsZSkK KyAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogZmlsZSAoKCJ+YWRkb25zL2RldiIp ICJ+c3lzdGVtL2RldiIpKSkKKyAgICAgICAgICAgICAgICAgICAgKHNjYW5kaXIgIi4iCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGYpIChlcT8gKHN0YXQ6dHlwZSAoc3Rh dCBmKSkgJ3JlZ3VsYXIpKSkpKQorICAgICAgICAgICAgICAgICA7OyBJbXBsZW1lbnRhdGlvbiBv ZiA5IToxNCByZWNvcmRzIGJ1aWxkIHRpbWUgd2hpY2ggYnJlYWtzIGJ1aWxkCisgICAgICAgICAg ICAgICAgIDs7IHJlcHJvZHVjaWJpbGl0eS4gIE5vdGUgdGhhdCB1cHN0cmVhbSBjb2RlIGRlcGVu ZHMgb24gdGhlIGV4YWN0CisgICAgICAgICAgICAgICAgIDs7IGZvcm1hdCBvZiB0aGVzZSBzdHJp bmdzLCBzbyB3ZSBuZWVkIHRvIG1pbWljIHRoZSBzdGFuZGFyZC4KKyAgICAgICAgICAgICAgICAg KHN1YnN0aXR1dGUqICJqc3JjL2ouYyIKKyAgICAgICAgICAgICAgICAgICAoKCJfX0RBVEVfXyIp ICJcIkphbiAwMSAxOTcwXCIiKQorICAgICAgICAgICAgICAgICAgICgoIl9fVElNRV9fIikgIlwi MDA6MDA6MDBcIiIpKQorICAgICAgICAgICAgICAgICA7OyBVcHN0cmVhbSByZWNvbW1lbmRzIHVz aW5nIGNsYW5nLCB3aXRoIEdDQyBzdXBwb3J0IGJlaW5nCisgICAgICAgICAgICAgICAgIDs7IHNl Y29uZC1jbGFzcywgb2Z0ZW4gcmVzdWx0aW5nIGluIGJ1aWxkIGZhaWx1cmVzLgorICAgICAgICAg ICAgICAgICAoc2V0ZW52ICJDQyIgY2xhbmcpKSkpCisKKyAgICAgICAgICAgOzsgVGhlIGJ1aWxk IG91dHB1dCBkZXBlbmRzIHByaW1hcmlseSBvbiB0aGUgdmFsdWVzIG9mIHRoZSBganBsYXRmb3Jt JworICAgICAgICAgICA7OyBhbmQgYGo2NHgnIGVudmlyb25tZW50IHZhcmlhYmxlcy4gIElmIHRo ZSB0YXJnZXQgaXMgQVJNLCB0aGVuCisgICAgICAgICAgIDs7IGBqcGxhdGZvcm0nIGlzICJyYXNw YmVycnkiLCBvdGhlcndpc2UgaXQgaXMgYGxpbnV4Jy4gIEluIGFkZGl0aW9uIHRvCisgICAgICAg ICAgIDs7IDMyLSBhbmQgNjQtIGJpdCB2ZXJzaW9ucywgYGo2NHgnIGNvbnRyb2xscyB3aGV0aGVy IEFWWCBvciBBVlgyCisgICAgICAgICAgIDs7IHZhcmlhbnRzIG9mIGxpYmogYXJlIGJ1aWx0Lgor ICAgICAgICAgICA7OworICAgICAgICAgICA7OyBIb3dldmVyLCBidWlsZCB0YXJnZXRzIGFyZSBu b3QgZmluZS1ncmFpbmVkIGVub3VnaCB0byBkaXN0aW5ndWlzaAorICAgICAgICAgICA7OyBiZXR3 ZWVuIENQVSBmZWF0dXJlcy4gIFRodXMgd2UgYnVpbGQgYW5kIGluc3RhbGwgYWxsIHZhcmlhbnRz IG9mCisgICAgICAgICAgIDs7IGxpYmosIGV4cGVjdGluZyBqY29uc29sZSB0byBiZSBjYWxsZWQg d2l0aCBhIHdyYXBwZXIgc2NyaXB0IHRoYXQKKyAgICAgICAgICAgOzsgZGV0ZWN0cyBBVlggZmVh dHVyZXMgYW5kIGxvYWRzIHRoZSBhcHByb3ByaWF0ZSBsaWJqIGF0IHJ1bnRpbWUuCisgICAgICAg ICAgIChyZXBsYWNlICdidWlsZAorICAgICAgICAgICAgIChsYW1iZGEgXworICAgICAgICAgICAg ICAgKHNldGVudiAiVVNFX09QRU5NUCIgIjEiKQorICAgICAgICAgICAgICAgKHNldGVudiAiVVNF X1RIUkVBRCIgIjEiKQorICAgICAgICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHZhci12YWwp IChhcHBseSBzZXRlbnYgdmFyLXZhbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHF1b3Rl ICxleHRyYS1lbnZhcnMpKQorICAgICAgICAgICAgICAgOzsgVGhlIGJ1aWxkIHNjcmlwdHMgYXNz dW1lIHRoYXQgUFdEIGlzIG1ha2UyLgorICAgICAgICAgICAgICAgKHdpdGgtZGlyZWN0b3J5LWV4 Y3Vyc2lvbiAibWFrZTIiCisgICAgICAgICAgICAgICAgIChsZXQqICgocGxhdGZvcm0gLChpZiAo dGFyZ2V0LWFybT8pICJyYXNwYmVycnkiICJsaW51eCIpKQorICAgICAgICAgICAgICAgICAgICAg ICAgKHRhcmdldC1iaXQgLChpZiAodGFyZ2V0LTY0Yml0PykgIjY0IiAiMzIiKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIChydW4gKGxhbWJkYSogKHNjcmlwdCAjOmtleSAoYXZ4ICIiKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW52b2tlICJlbnYiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAianBsYXRmb3JtPSIgcGxh dGZvcm0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFw cGVuZCAiajY0eD1qIiB0YXJnZXQtYml0IGF2eCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjcmlwdCkpKSkKKyAgICAgICAgICAgICAgICAgICAocGFyYWxsZWwKKyAg ICAgICAgICAgICAgICAgICAgOzsgU2luY2UgamNvbnNvbGUgZG9lc24ndCBkZXBlbmQgb24gQVZY IGZlYXR1cmVzLCB3ZSBqdXN0CisgICAgICAgICAgICAgICAgICAgIDs7IGJ1aWxkIGl0IG9uY2Uu CisgICAgICAgICAgICAgICAgICAgIChydW4gIi4vYnVpbGRfamNvbnNvbGUuc2giKQorICAgICAg ICAgICAgICAgICAgICAocnVuICIuL2J1aWxkX2xpYmouc2giKQorICAgICAgICAgICAgICAgICAg ICAoaWYgLCh0YXJnZXQtNjRiaXQ/KQorICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFsbGVs CisgICAgICAgICAgICAgICAgICAgICAgICAgKHJ1biAiLi9idWlsZF9saWJqLnNoIiAjOmF2eCAi YXZ4IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAocnVuICIuL2J1aWxkX2xpYmouc2giICM6 YXZ4ICJhdngyIikpKSkpKSkpCisgICAgICAgICAgIDs7IFRoZSB0ZXN0IHN1aXRlIGlzIGV4cGVj dGVkIHRvIGJlIHJ1biBhcyBmb2xsb3dzIGZvciBlYWNoIHZhcmlhbnQgb2YKKyAgICAgICAgICAg OzsgbGliaiB0aGF0IHdlIGJ1aWxkOgorICAgICAgICAgICA7OworICAgICAgICAgICA7OyAgICAg JCBlY2hvICdSVU4gZGRhbGwnIHwgamNvbnNvbGUgdGVzdC90c3UuaWpzCisgICAgICAgICAgIDs7 CisgICAgICAgICAgIDs7IFRoaXMgcmVxdWlyZXMgYSB3b3JraW5nIGpjb25zb2xlIHdpdGggYWNj ZXNzaWJsZSBqbGlicmFyeSBmaWxlcy4gIFdlCisgICAgICAgICAgIDs7IHNpbXBseSBwbGFjZSB0 aGVzZSBhbGwgdW5kZXIgdGVzdC9iaW4uCisgICAgICAgICAgIChyZXBsYWNlICdjaGVjaworICAg ICAgICAgICAgIChsYW1iZGEqICgjOmtleSB0ZXN0cz8gIzphbGxvdy1vdGhlci1rZXlzKQorICAg ICAgICAgICAgICAgKHdoZW4gdGVzdHM/CisgICAgICAgICAgICAgICAgIChsZXQgKChwbGF0Zm9y bSAsKGlmICh0YXJnZXQtYXJtPykgInJhc3BiZXJyeSIgImxpbnV4IikpKQorICAgICAgICAgICAg ICAgICAgIChta2Rpci1wICJ0ZXN0L2JpbiIpCisgICAgICAgICAgICAgICAgICAgKGZvci1lYWNo CisgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGRpcikKKyAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoc291cmNlIChzdHJpbmctYXBwZW5kICJqbGlicmFyeS8iIGRpcikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGRlc3QgKHN0cmluZy1hcHBlbmQgInRlc3QvYmluLyIgZGly KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1rZGlyLXAgZGVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvcHktcmVj dXJzaXZlbHkgc291cmNlIGRlc3QpKSkpCisgICAgICAgICAgICAgICAgICAgICcoInN5c3RlbSIg InRvb2xzIiAiYWRkb25zIikpCisgICAgICAgICAgICAgICAgICAgOzsgVGhlIGpsaWJyYXJ5L2Rl diBkaXJlY3Rvcnkgb25seSBzb21ldGltZXMgZXhpc3RzLCBidXQgbmVlZHMKKyAgICAgICAgICAg ICAgICAgICA7OyB0byBiZSBjb3BpZWQgaW50byB0aGUgfnN5c3RlbSBkaXJlY3Rvcnkgd2hlbiBp dCBkb2VzLgorICAgICAgICAgICAgICAgICAgIChmb3ItZWFjaAorICAgICAgICAgICAgICAgICAg ICAobGFtYmRhIChkZXYtZGlyKQorICAgICAgICAgICAgICAgICAgICAgIChpZiAoZmlsZS1leGlz dHM/IGRldi1kaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjb3B5LXJlY3Vyc2l2ZWx5 IGRldi1kaXIgInRlc3QvYmluL3N5c3RlbS9kZXYiKSkpCisgICAgICAgICAgICAgICAgICAgICco ImpsaWJyYXJ5L2RldiIgImpsaWJyYXJ5L2FkZG9ucy9kZXYiKSkKKyAgICAgICAgICAgICAgICAg ICAocGFyLWZvci1lYWNoCisgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGRpcikKKyAgICAg ICAgICAgICAgICAgICAgICAobGV0KiAoKGJpbiAoc3RyaW5nLWFwcGVuZCAiYmluLyIgcGxhdGZv cm0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoamJpdCAsKGlmICh0YXJnZXQtNjRi aXQ/KSAiajY0IiAiajMyIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqY29uc29s ZSAoc3RyaW5nLWFwcGVuZCBiaW4gIi8iIGpiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvamNvbnNvbGUiKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNvdXJjZSAoc3RyaW5nLWFwcGVuZCBiaW4gIi8iIGRpcikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChkZXN0IChzdHJpbmctYXBwZW5kICJ0ZXN0L2Jpbi8i IGRpcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChta2Rpci1wIGRlc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjb3B5 LXJlY3Vyc2l2ZWx5IHNvdXJjZSBkZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5z dGFsbC1maWxlICJqbGlicmFyeS9iaW4vcHJvZmlsZS5panMiIGRlc3QpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChpbnN0YWxsLWZpbGUgamNvbnNvbGUgZGVzdCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxldCogKChqY29uc29sZSAoc3RyaW5nLWFwcGVuZCBkZXN0ICIvamNvbnNv bGUiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0cyAidGVzdC90c3Uu aWpzIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3J0IChvcGVuLXBpcGUq IE9QRU5fV1JJVEUgamNvbnNvbGUgdGVzdHMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZGlzcGxheSAiUlVOIGRkYWxsXG4iIHBvcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHdoZW4gKG5vdCAoemVybz8gKHN0YXR1czpleGl0LXZhbAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2UtcGlwZSBwb3J0KSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJTb21lIEogYnVpbGQgdGVzdHMgZmFpbGVk LiIpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgKHNjYW5kaXIgKHN0cmluZy1hcHBlbmQgImJp bi8iIHBsYXRmb3JtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmVnYXRlIChjdXQg bWVtYmVyIDw+ICcoIi4iICIuLiIpKSkpKQorICAgICAgICAgICAgICAgICAgICN0KSkpKQorICAg ICAgICAgICA7OyBOb3cgdGhhdCBldmVyeXRoaW5nIGlzIGJ1aWx0LCBpbnN0YWxsYXRpb24gaXMg ZmFpcmx5CisgICAgICAgICAgIDs7IHN0cmFpZ2h0Zm9yd2FyZCwgZm9sbG93aW5nIEZIUyBjb252 ZW50aW9ucy4gIFRoZSBvbmx5IHF1aXJrIGlzIHRoYXQKKyAgICAgICAgICAgOzsgd2UgaW5zdGFs bCBqY29uc29sZSB1bmRlciAvbGliZXhlYyB0byBtYWtlIHJvb20gZm9yIHRoZSB3cmFwcGVyCisg ICAgICAgICAgIDs7IHJlcGxhY2VtZW50IHVuZGVyIC9iaW4uCisgICAgICAgICAgIChyZXBsYWNl ICdpbnN0YWxsCisgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG91dHB1dHMgaW5wdXRzICM6 YWxsb3ctb3RoZXIta2V5cykKKyAgICAgICAgICAgICAgIChsZXQqICgocGxhdGZvcm0gLChpZiAo dGFyZ2V0LWFybT8pICJyYXNwYmVycnkiICJsaW51eCIpKQorICAgICAgICAgICAgICAgICAgICAg IChqYml0ICwoaWYgKHRhcmdldC02NGJpdD8pICJqNjQiICJqMzIiKSkKKyAgICAgICAgICAgICAg ICAgICAgICAoaWpjb25zb2xlIChhc3NvYy1yZWYgaW5wdXRzICJpamNvbnNvbGUiKSkKKyAgICAg ICAgICAgICAgICAgICAgICAoamNvbnNvbGUgKHN0cmluZy1hcHBlbmQgImJpbi8iIHBsYXRmb3Jt ICIvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYml0 ICIvamNvbnNvbGUiKSkKKyAgICAgICAgICAgICAgICAgICAgICAob3V0IChhc3NvYy1yZWYgb3V0 cHV0cyAib3V0IikpCisgICAgICAgICAgICAgICAgICAgICAgKGJpbiAoc3RyaW5nLWFwcGVuZCBv dXQgIi9iaW4iKSkKKyAgICAgICAgICAgICAgICAgICAgICAoZXRjIChzdHJpbmctYXBwZW5kIG91 dCAiL2V0Yy9qIikpCisgICAgICAgICAgICAgICAgICAgICAgKGxpYiAoc3RyaW5nLWFwcGVuZCBv dXQgIi9saWIvaiIpKQorICAgICAgICAgICAgICAgICAgICAgIChsaWJleGVjIChzdHJpbmctYXBw ZW5kIG91dCAiL2xpYmV4ZWMvaiIpKQorICAgICAgICAgICAgICAgICAgICAgIChzaGFyZSAoc3Ry aW5nLWFwcGVuZCBvdXQgIi9zaGFyZS9qIikpCisgICAgICAgICAgICAgICAgICAgICAgKHN5c3Rl bSAoc3RyaW5nLWFwcGVuZCBzaGFyZSAiL3N5c3RlbSIpKQorICAgICAgICAgICAgICAgICAgICAg IChkZXYgKHN0cmluZy1hcHBlbmQgc3lzdGVtICIvZGV2IikpKQorICAgICAgICAgICAgICAgICAo bWtkaXItcCBiaW4pCisgICAgICAgICAgICAgICAgIChjb3B5LWZpbGUgaWpjb25zb2xlIChzdHJp bmctYXBwZW5kIGJpbiAiL2lqY29uc29sZS0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICxtYWpvcikpCisgICAgICAgICAgICAgICAgIChta2Rp ci1wIGxpYikKKyAgICAgICAgICAgICAgICAgKGZvci1lYWNoCisgICAgICAgICAgICAgICAgICAo bGFtYmRhIChqYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgKGxldCogKChqYmluIChzdHJpbmct am9pbiBgKCJiaW4iICxwbGF0Zm9ybSAsamFyY2gpICIvIikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAoamF2eC1tYXRjaCAoc3RyaW5nLW1hdGNoICJhdnguKiIgamFyY2gpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGphdnggKGlmIChub3QgamF2eC1tYXRjaCkgIiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2g6c3Vic3RyaW5nIGphdngtbWF0 Y2gpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXAgKGlmIGphdngtbWF0Y2ggIi0i ICIiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UgKHN0cmluZy1hcHBlbmQg amJpbiAiL2xpYmouc28iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXN0IChmb3Jt YXQgI2YgIn5hL2xpYmp+YX5hLnNvIiBsaWIgc2VwIGphdngpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAoY29weS1maWxlIHNvdXJjZSBkZXN0KSkpCisgICAgICAgICAgICAgICAgICAoc2NhbmRp ciAoc3RyaW5nLWFwcGVuZCAiYmluLyIgcGxhdGZvcm0pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAobmVnYXRlIChjdXQgbWVtYmVyIDw+ICcoIi4iICIuLiIpKSkpKQorICAgICAgICAgICAg ICAgICAoaW5zdGFsbC1maWxlIGpjb25zb2xlIGxpYmV4ZWMpCisgICAgICAgICAgICAgICAgIChj b3B5LXJlY3Vyc2l2ZWx5ICJqbGlicmFyeS9zeXN0ZW0iIHN5c3RlbSkKKyAgICAgICAgICAgICAg ICAgKGZvci1lYWNoCisgICAgICAgICAgICAgICAgICAobGFtYmRhIChzb3VyY2UtZGV2KQorICAg ICAgICAgICAgICAgICAgICAoaWYgKGFjY2Vzcz8gc291cmNlLWRldiBSX09LKQorICAgICAgICAg ICAgICAgICAgICAgICAgKGNvcHktcmVjdXJzaXZlbHkgc291cmNlLWRldiBkZXYpKSkKKyAgICAg ICAgICAgICAgICAgICcoImpsaWJyYXJ5L2RldiIgImpsaWJyYXJ5L2FkZG9ucy9kZXYiKSkKKyAg ICAgICAgICAgICAgICAgKGluc3RhbGwtZmlsZSAiamxpYnJhcnkvYmluL3Byb2ZpbGUuaWpzIiBl dGMpCisgICAgICAgICAgICAgICAgIChpbnN0YWxsLWZpbGUgImpsaWJyYXJ5L2Jpbi9wcm9maWxl eC5panMiIGV0YykpKSkpKSkKKyAgICAgIChob21lLXBhZ2UgImh0dHBzOi8vd3d3Lmpzb2Z0d2Fy ZS5jb20vIikKKyAgICAgIChzeW5vcHNpcyAiQXNjaWktb25seSwgYXJyYXkgcHJvZ3JhbW1pbmcg bGFuZ3VhZ2UgaW4gdGhlIEFQTCBmYW1pbHkiKQorICAgICAgKGRlc2NyaXB0aW9uCisgICAgICAg IkogaXMgYSBoaWdoLWxldmVsLCBnZW5lcmFsLXB1cnBvc2UgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ug dGhhdCBpcworcGFydGljdWxhcmx5IHN1aXRlZCB0byB0aGUgbWF0aGVtYXRpY2FsLCBzdGF0aXN0 aWNhbCwgYW5kIGxvZ2ljYWwgYW5hbHlzaXMgb2YKK2RhdGEuICBJdCBpcyBhIHBvd2VyZnVsIHRv b2wgZm9yIGRldmVsb3BpbmcgYWxnb3JpdGhtcyBhbmQgZXhwbG9yaW5nIHByb2JsZW1zCit0aGF0 IGFyZSBub3QgYWxyZWFkeSB3ZWxsIHVuZGVyc3Rvb2QuIikKKyAgICAgIChsaWNlbnNlIGxpY2Vu c2U6Z3BsMyspKSkpCisKKworKGRlZmluZS1wdWJsaWMganNvZnR3YXJlLWotOTAxCisgIChtYWtl LWoKKyAgICM6dmVyc2lvbiAnKCI5MDEiIC4gImYiKQorICAgIzpoYXNoICIxNzc2MDIxbTBqMWFh bnp3ZzYwYnk4M241M3B3N2k2YWZkNXdwbGZ6Y3p3azhieXdheDRwIgorICAgIzpwYXRjaGVzIChz ZWFyY2gtcGF0Y2hlcyAianNvZnR3YXJlLWo5MDEtZi1maXhlcy5wYXRjaCIpKSkKKworCisoZGVm aW5lIGotYnVpbGQtY29uZmlndXJhdGlvbi13aXRoLXNsZWVmCisgIGAoIzpleHRyYS1pbnB1dHMg KCxzbGVlZikKKyAgICAjOmV4dHJhLWVudmFycyAoKCJVU0VfU0xFRUZfU1JDIiAiMCIpCisgICAg ICAgICAgICAgICAgICAgICgiTERGTEFHUyIgIi1sc2xlZWYiKSkpKQorCisoZGVmaW5lLXB1Ymxp YyBqc29mdHdhcmUtai05MDIKKyAgKGFwcGx5IG1ha2UtagorICAgICAgICAgIzp2ZXJzaW9uICco IjkwMiIgLiAiYiIpCisgICAgICAgICAjOmhhc2ggIjBqNjd2Z2lrcWZsd2pxYWNzZGljYXN2eXYx azU0czJjOHZqZ3dtZjBpeDdsNDFwNHhxejAiCisgICAgICAgICBqLWJ1aWxkLWNvbmZpZ3VyYXRp b24td2l0aC1zbGVlZikpCisKKworKGRlZmluZS1wdWJsaWMganNvZnR3YXJlLWotOTAzCisgIChh cHBseSBtYWtlLWoKKyAgICAgICAgICM6dmVyc2lvbiAnKCI5MDMiIC4gImEiKQorICAgICAgICAg Izp0YWcgIjkwMy1yZWxlYXNlLWEiCisgICAgICAgICAjOmhhc2ggIjFmY2ZsN3E3YzJ2ajRmbW5x cWM4YzZod2dzam0yMGZmOTN2OHh4Zm5pYXNzczFiMmZtYzQiCisgICAgICAgICBqLWJ1aWxkLWNv bmZpZ3VyYXRpb24td2l0aC1zbGVlZikpCisKKyhkZWZpbmUtcHVibGljIChqc29mdHdhcmUtaWpj b25zb2xlLXN5bWxpbmsganBrZykKKyAgIlByb3ZpZGUgYmluL2lqY29uc29sZSBzeW1saW5rIHRo YXQgcG9pbnRzIHRvIHBrZydzIGJpbi9pamNvbnNvbGUtPGp2ZXJzaW9uPiIKKyAgKHBhY2thZ2UK KyAgICAobmFtZSAianNvZnR3YXJlLWlqY29uc29sZSIpCisgICAgKHZlcnNpb24gKHBhY2thZ2Ut dmVyc2lvbiBqcGtnKSkKKyAgICAoc291cmNlICNmKQorICAgIChidWlsZC1zeXN0ZW0gdHJpdmlh bC1idWlsZC1zeXN0ZW0pCisgICAgKHByb3BhZ2F0ZWQtaW5wdXRzIGAoKCJqcGtnIiAsanBrZykp KQorICAgIChhcmd1bWVudHMKKyAgICAgIGAoIzptb2R1bGVzICgoZ3VpeCBidWlsZCB1dGlscykK KyAgICAgICAgICAgICAgICAgICAoc3JmaSBzcmZpLTI2KSkKKyAgICAgICAgIzpidWlsZGVyCisg ICAgICAgIChiZWdpbgorICAgICAgICAgICh1c2UtbW9kdWxlcyAoKGd1aXggYnVpbGQgdXRpbHMp ICM6c2VsZWN0IChta2Rpci1wKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKChpY2UtOSByZWdl eCkgIzpzZWxlY3QgKHN0cmluZy1tYXRjaCkpCisgICAgICAgICAgICAgICAgICAgICAgICgoaWNl LTkgZnR3KSAjOnNlbGVjdCAoc2NhbmRpcikpCisgICAgICAgICAgICAgICAgICAgICAgICgoc3Jm aSBzcmZpLTI2KSAjOnNlbGVjdCAoY3V0KSkpCisgICAgICAgICAgKGxldCogKChvdXQgKGFzc29j LXJlZiAlb3V0cHV0cyAib3V0IikpCisgICAgICAgICAgICAgICAgIChqcGtnIChhc3NvYy1yZWYg JWJ1aWxkLWlucHV0cyAianBrZyIpKQorICAgICAgICAgICAgICAgICAoaWpjb25zb2xlIChjYXIg KHNjYW5kaXIgKHN0cmluZy1hcHBlbmQganBrZyAiL2JpbiIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY3V0IHN0cmluZy1tYXRjaCAiaWpjb25zb2xlLS4qIiA8Pikp KSkKKyAgICAgICAgICAgICAgICAgKHNvdXJjZSAoc3RyaW5nLWFwcGVuZCBqcGtnICIvYmluLyIg aWpjb25zb2xlKSkKKyAgICAgICAgICAgICAgICAgKGRlc3QgKHN0cmluZy1hcHBlbmQgb3V0ICIv YmluL2lqY29uc29sZSIpKSkKKyAgICAgICAgICAgIChta2Rpci1wIChkaXJuYW1lIGRlc3QpKQor ICAgICAgICAgICAgKHN5bWxpbmsgc291cmNlIGRlc3QpKSkpKQorICAoaG9tZS1wYWdlIChwYWNr YWdlLWhvbWUtcGFnZSBqcGtnKSkKKyAgKHN5bm9wc2lzICJQcm92aWRlIGBpamNvbnNvbGUnIHN5 bWxpbmsgdG8gZGVmYXVsdCBpbnRlcnByZXRlciB2ZXJzaW9uIikKKyAgKGRlc2NyaXB0aW9uCisg ICJUaGUgaW50ZXJwcmV0ZXIgcHJvdmlkZWQgYnkgdGhlIEogcGFja2FnZSBoYXMgYSBmaWxlbmFt ZSBsaWtlCitpamNvbnNvbGUtPHZlcnNpb24+LCB3aGljaCBwcm92aWRlcyBzdXBwb3J0IGZvciBo YXZpbmcgbXVsdGlwbGUsIGNvbmN1cnJlbnQKK3ZlcnNpb25zIGluc3RhbGxlZC4gIFRoaXMgcGFj a2FnZSBwcm92aWRlcyBhIHZlcnNpb24tYWdub3N0aWMgYGlqY29uc29sZScKK3N5bWxpbmsgdG8g aW50ZXJwcmV0ZXIgdmVyc2lvbiBpbmRpY2F0ZWQgYW5kIGJ1aWxkIHRpbWUuIikKKyAgKGxpY2Vu c2UgbGljZW5zZTpncGwzKykpKQpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvanNv ZnR3YXJlLWo5MDEtZi1maXhlcy5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2pzb2Z0d2Fy ZS1qOTAxLWYtZml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uMGFjN2U5NGRlNAotLS0gL2Rldi9udWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2pz b2Z0d2FyZS1qOTAxLWYtZml4ZXMucGF0Y2gKQEAgLTAsMCArMSw4MCBAQAorVGhpcyBwYXRjaCBm aXhlcyB0d28gc2VwYXJhdGUgaXNzdWVzIHdpdGggdXN0cmVhbSBzb3VyY2VzOgorCisqIE5vcm1h bGl6ZSBpbXBvcnQgcGF0aHMgaW4ganNyYy9jaXAuYworCitVcHN0cmVhbSBjbGFpbXMgdG8gaGF2 ZSBzb21lIGJ1aWxkIHJlcXVpcmVtZW50cyB0aGF0IGZvcmNlIHRoZW0gdG8gdXNlIHN0cmFuZ2UK K2ltcG9ydCBwYXRocy4gSG93ZXZlciwgdGhlc2UgcGF0aHMgZG8gbm90IGV4aXN0IGluc2lkZSBv dXIgYnVpbGQgY2hyb290LgorCisqIEZpeCB1bml0aXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmcK KworQ2xhbmcgOSBpc3N1ZXMgc29tZSB3YXJuaW5ncyB3aGljaCBjYXVzZSB0aGUgYnVpbGQgdG8g ZmFpbCBzaW5jZSB1cHN0cmVhbQorY29tcGlsZXMgd2l0aCAtV2Vycm9yLgorCisKK2RpZmYgLS1n aXQgYS9qc3JjL2NpcC5jIGIvanNyYy9jaXAuYworaW5kZXggNjFkYTQwODguLmZiM2MwM2I2IDEw MDY0NAorLS0tIGEvanNyYy9jaXAuYworKysrIGIvanNyYy9jaXAuYworQEAgLTMsOSArMyw5IEBA CisgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiBDb25qdW5jdGlvbnM6IElubmVyIFByb2R1Y3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIAorLSNpbmNs dWRlICIuLi8uLi9qc291cmNlL2pzcmMvai5oIgorLSNpbmNsdWRlICIuLi8uLi9qc291cmNlL2pz cmMvdmFzbS5oIgorLSNpbmNsdWRlICIuLi8uLi9qc291cmNlL2pzcmMvZ2VtbS5oIgorKyNpbmNs dWRlICJqLmgiCisrI2luY2x1ZGUgInZhc20uaCIKKysjaW5jbHVkZSAiZ2VtbS5oIgorIAorICNk ZWZpbmUgTUFYQVJPV1MgMzg0ICAvLyBtYXggcm93cyBvZiBhIHRoYXQgd2UgY2FuIHByb2Nlc3Mg dG8gc3RheSBpbiBMMiBjYWNoZSAgIGEgc3RyaXAgaXMgbSpDQUNIRUhFSUdIVCwgeiBzdHJpcCBp cyBtKkNBQ0hFV0lEVEggICB0aGlzIGlzIHdpcmVkIHRvIDEyOCozIC0gY2hlY2sgaWYgeW91IGNo YWdlCisgCitAQCAtMTA1NywxNSArMTA1NywxNSBAQCBzdGF0aWMgQSBqdGlwYngoSiBqdCxBIGEs QSB3LEMgYyxDIGQpe0EgZz0wLHgwLHgxLHo7QiphdiwqYXYwLGIsKnYwLCp2MSwqenY7QyBjMAor ICBzd2l0Y2goYyl7CisgICBjYXNlIENQTFVTRE9UOgorICNkZWZpbmUgRiB8PQorLSNpbmNsdWRl ICIuLi8uLi9qc291cmNlL2pzcmMvY2lwX3QuaCIKKysjaW5jbHVkZSAiY2lwX3QuaCIKKyAgICBi cmVhazsKKyAgIGNhc2UgQ1NUQVJET1Q6CisgI2RlZmluZSBGICY9CistI2luY2x1ZGUgIi4uLy4u L2pzb3VyY2UvanNyYy9jaXBfdC5oIgorKyNpbmNsdWRlICJjaXBfdC5oIgorICAgIGJyZWFrOwor ICAgY2FzZSBDTkU6CisgI2RlZmluZSBGIF49CistI2luY2x1ZGUgIi4uLy4uL2pzb3VyY2UvanNy Yy9jaXBfdC5oIgorKyNpbmNsdWRlICJjaXBfdC5oIgorICAgIGJyZWFrOworICB9CisgIFIgejsK K2RpZmYgLS1naXQgYS9qc3JjL2dlbW0uYyBiL2pzcmMvZ2VtbS5jCitpbmRleCA1MWZlMzA2ZS4u YjEwNWRmYzEgMTAwNjQ0CistLS0gYS9qc3JjL2dlbW0uYworKysrIGIvanNyYy9nZW1tLmMKK0BA IC0zMTgsNyArMzE4LDcgQEAgZGdlbW1fbm4gICAgICAgICAoSSAgICAgICAgICAgICAgbSwKKyAg ICAgICAgICAgICAgICAgICAgX0IpOworIAorIC8vIGxvb3AgMworLSAgICAgICAgICAgIEkgaTsK KysgICAgICAgICAgICBJIGk9MDsKKyAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3IgZGVmYXVsdChu b25lKSxwcml2YXRlKGkpLHNoYXJlZChqLGwsQSxDLG1iLG5jLGtjLGFscGhhLF9iZXRhLF9tYyxf Qixyc19hLGNzX2EscnNfYyxjc19jKQorICAgICAgICAgICAgIGZvciAoaT0wOyBpPG1iOyArK2kp IHsKKyAgICAgICAgICAgICAgICAgSSBtYzsKK0BAIC01MDEsNyArNTAxLDcgQEAgaWdlbW1fbm4g ICAgICAgICAoSSAgICAgICAgICAgICAgbSwKKyAgICAgICAgICAgICAgICAgICAgX0IpOworIAor IC8vIGxvb3AgMworLSAgICAgICAgICAgIEkgaTsKKysgICAgICAgICAgICBJIGk9MDsKKyAjcHJh Z21hIG9tcCBwYXJhbGxlbCBmb3IgZGVmYXVsdChub25lKSxwcml2YXRlKGkpLHNoYXJlZChqLGws QSxDLG1iLG5jLGtjLGFscGhhLF9iZXRhLF9tYyxfQixyc19hLGNzX2EscnNfYyxjc19jKQorICAg ICAgICAgICAgIGZvciAoaT0wOyBpPG1iOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgSSBtYzsK K0BAIC04MzEsNyArODMxLDcgQEAgemdlbW1fbm4gICAgICAgICAoSSAgICAgICAgICAgICAgbSwK KyAgICAgICAgICAgICAgICAgICAgX0IpOworIAorIC8vIGxvb3AgMworLSAgICAgICAgICAgIEkg aTsKKysgICAgICAgICAgICBJIGk9MDsKKyAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3IgZGVmYXVs dChub25lKSxwcml2YXRlKGkpLHNoYXJlZChqLGwsQSxDLG1iLG5jLGtjLGFscGhhLF9iZXRhLF9t YyxfQixyc19hLGNzX2EscnNfYyxjc19jKQorICAgICAgICAgICAgIGZvciAoaT0wOyBpPG1iOyAr K2kpIHsKKyAgICAgICAgICAgICAgICAgSSBtYzsKLS0gCjIuMzQuMAoK --=-oVps8UgJulS5Eykt4b4j--