From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from zero.zsh.org (zero.zsh.org [IPv6:2a02:898:31:0:48:4558:7a:7368]) by inbox.vuxu.org (Postfix) with ESMTP id 16AAC25473 for ; Wed, 6 Mar 2024 06:05:04 +0100 (CET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1709701504; b=EiDkQv8IvA7GTmHZCMPtZVCei4ORLRje/HwvyphfuaO3/+zIkmxUt1VVOXBUBzEHcDJlmJhPUJ kcQQ9zvY7XvyPfZHsHvjcxSzcH8mbOYz7n9K6QRh+1ipWGytnIV0pSpTTO3xZkXBZeydw7qHDW zPP36mjG8fSvg0jUR2X3ksGJat1NpZJ7GI+s3GNaVGfeFwz2tvfETJADdyiAlVHEFv0q4W2chx Qp6qu54bue01Nno1uFInZTtscpKqMlAjiVtwJxVzaJjf0+LDPZf0XEpvtIrTiA0VBjveXiBPtp usEE2nXAwwRsCPRSeI7xkQM0Ra3/lZpyZkfqr0PgN4WcnA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f45.google.com) smtp.remote-ip=209.85.218.45; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1709701504; bh=B1vUXzMy33uet5ZgD8/HI5aoo4Ksci6yaleZli8RGek=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=T6M4ooXyNFF5JWSGgHot/TK73T/jqxlR9QQdHeWPQb88CZ8+3HmMmWoCUqv29yGu1lune4e6ll j9BxAXg1NO6QI5YQSUR7wE08cP/EB/pyKjELyLwOr/komMDJH5QG/tUkcyFHRtUuVLqMM/9Vcb 4g/0/a+Zh77qVqpy7cdC+Y8KghNQih8JyJXtmh7eYFZG8D+jvqVpEebmXzm9q/ok8aMwVmSFFB WmD/qQOh3aPiGm1TUgFNstxtAFiMbVVvMr3LHnYuGVuWjX5Kg3kQnoQI5zjxhPNUVLLgs2xcKg 6ygkc73kRSxxKJ3ppQBg+paAxsdnPso1sYAU5zMizr6xpg==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:In-Reply-To:References:MIME-Version:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=cXNLdf9ymxVsUBEUMyISZpFFc1n5Q0oLqwm3ROAmjp4=; b=G21wkGZzKFBb/R0FFKHMwITANb 4yvWG12jDUaNOfRqqkIysJkP5sUuXvriT4tSDxA1l2xfn8SI1mnthMOSuXKUKgukrN62XQzYJWEmI 9a/raXCaccKbhKe65mnLKcBWmljepGCEYDpuifFllQYMLouDXkaTJFGz/hPzosbFFQ2GzDgB6LCyV ZnRxjd4ae3MFeBoTUfjy/nb6V8+HgdbsXCqfDVEeiNAA69+Jkqf5sukiQ0NCdq4tTaRYUPA2tfvif gsnQgVogp52FCX6sipraRaLe0dxZs/wI/MhsxNMs//YcbPyyermJnej5plqwOGPBbecN7TbAx9o1P vVutp1ew==; Received: by zero.zsh.org with local id 1rhjSf-000JPi-Ub; Wed, 06 Mar 2024 05:05:01 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f45.google.com) smtp.remote-ip=209.85.218.45; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ej1-f45.google.com ([209.85.218.45]:58607) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1rhjSK-000J65-Df; Wed, 06 Mar 2024 05:04:41 +0000 Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-a456ab934eeso57679566b.0 for ; Tue, 05 Mar 2024 21:04:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1709701479; x=1710306279; darn=zsh.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=cXNLdf9ymxVsUBEUMyISZpFFc1n5Q0oLqwm3ROAmjp4=; b=Dts1HoBD364Suq/WKKop3M29hvATGsVBMCm2gtJHa61D1//XMLj1dji0NUCwzhAgTx 3GdrqO4aUhP+EU8pSGM1EBvo3qBhY6u+5OROd7uacgVFz5ki/6NSZszlTpKsL8vp+xeq Sh7RyviySb1/w+TUV+C4NuAkPfokXNnREJ1xGpX1foLUrz/OuWzv0BiM91NDesVSCA63 XWpgfHlB+iaghiwy/Xeas2085OZoDxOTtqQNykpMbdKTbCTWWjwMtpv8yoCOhqgLt3Fq 2CSGuwKRDVHGYbKNoRM2dxSMCZNO8kJ82zMW3d2RV68EhTqBDKK4boB0mABEr3wdWFlM 0DZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709701479; x=1710306279; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cXNLdf9ymxVsUBEUMyISZpFFc1n5Q0oLqwm3ROAmjp4=; b=LVbctNmKAU3Qvj2v0w7U5HN8dz9TcQMUgKIxDIn4/h36BWtR1/Nwh6Qc3gH/gl8eo/ /uCNASSEfv72fBLIRTNYHWUpgNHmRYiwVPXMVqlT3z1XQyDcRCVtQnK2I6TKOBcbWexE SKqeznrG/9en+QuMEwdEZcpYOV2UeSjfLaMXJWiKIc1/TJpjWIAKW0uuMfb2slkFb5Eo glvhbnz5tOXKy3tumTgWFP4GkleYRL0dwxLm+WREfemz4HRwnJpinI81Wna/kjTpy3El Unkc4rXPK9kpuqcmAvPUwsFHnWzsvzUw9pvYlE7FazRaIaPpUVAx/YApWcRZZaz6ohA1 1pHQ== X-Gm-Message-State: AOJu0Yyq9QLUh/FxYY8mguvSkkDL9kfVZ53rcoj5wn9Gv5Aynv5Zi/pZ Xjy04QiDsB2TxIDKWi0TqkveZbmsJsbd4lhE/GqSKp55HbMFMTbF5cNSFJ6QWETCHsjQXsIz382 Lc33jis52SoXMYhw8R0bPDx4DkL5qB//bbf8MYVK1gpn7niDqOA== X-Google-Smtp-Source: AGHT+IEHmUyvC9VLnohR3FRqNhITQpZl2UOtP9s867fGZC4YOUc16YbDkilECw4aN0Cs04+x5MKFzTl8Jr9hUlf+1Zw= X-Received: by 2002:a17:906:bc54:b0:a43:f182:66c4 with SMTP id s20-20020a170906bc5400b00a43f18266c4mr10185554ejv.17.1709701479152; Tue, 05 Mar 2024 21:04:39 -0800 (PST) MIME-Version: 1.0 References: <20240301182238.tpyajwblbam5bxw7@chazelas.org> <20240303134413.74c7trikf73g5kjy@chazelas.org> <20240303202756.7axmzy6gkohza2ra@chazelas.org> <90920-1709600703.280388@Hl_Q.k_r5.OUBX> <20240305063059.detbg3orz57vmvwr@chazelas.org> In-Reply-To: <20240305063059.detbg3orz57vmvwr@chazelas.org> From: Bart Schaefer Date: Tue, 5 Mar 2024 21:04:27 -0800 Message-ID: Subject: [PATCH] local vs. nameref scoping (was Re: Up-scope named references, vs. ksh) To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000566b130612f6e591" X-Seq: 52692 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --000000000000566b130612f6e591 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 4, 2024 at 9:43=E2=80=AFPM Mikael Magnusson = wrote: > > On 3/5/24, Bart Schaefer wrote: > > > > When a _named reference_ is created with 'typeset -n', all uses of PNA= ME > > in assignments and expansions instead assign to or expand RNAME. This > > also applies to 'unset PNAME' and to most subsequent uses of 'typeset' > > with the exception of 'typeset -n' and 'typeset +n' > > Is this possible to change? I feel like if "typeset myvar" (or "local > myvar") cannot be depended on to create a local parameter, a lot of > code will no longer be safe that previously was (in the sense that it > doesn't break if calling code / the shell environmnet has certain > parameters defined). Yes, it's possible, and the attached patch does so, with doc update and new tests. The division of labor among bin_typeset(), typeset_single(), and createparam() is a bit hard to follow (as in, it's not really much of a "division" at all). On Mon, Mar 4, 2024 at 10:31=E2=80=AFPM Stephane Chazelas wrote: > > See also: > > $ nameref action=3DPS1 > $ zmv -n '*' '$f.back' > zsh: segmentation fault ./Src/zsh A simpler reproducer: % typeset -n foo=3DPS1 % () { local foo; foo=3Dxx } =3D=3D1113679=3D=3D Invalid read of size 8 =3D=3D1113679=3D=3D at 0x1A16E1: assignstrvalue (params.c:2684) This patch fixes that, and one other potential crash that valgrind complains about: % typeset -n foo=3Dbar % typeset -n foo =3D=3D1113695=3D=3D Invalid read of size 4 =3D=3D1113695=3D=3D at 0x136041: bin_typeset (builtin.c:3137) I'll go ahead and push this since there doesn't seem to be any argument about the change in function and it fixes two crash bugs. --000000000000566b130612f6e591 Content-Type: text/plain; charset="US-ASCII"; name="local-of-nameref.txt" Content-Disposition: attachment; filename="local-of-nameref.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltfc2t330 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvcGFyYW1zLnlvIGIvRG9jL1pzaC9wYXJhbXMueW8KaW5kZXgg OGM1ZTY3ZTcwLi5kMTc5YTBkMWQgMTAwNjQ0Ci0tLSBhL0RvYy9ac2gvcGFyYW1zLnlvCisrKyBi L0RvYy9ac2gvcGFyYW1zLnlvCkBAIC02NzAsOCArNjcwLDkgQEAgVGhpcyBtYW51YWwgd2FzIGdl bmVyYXRlZCB3aXRoIFpzaCB0dCh2ZXJzaW9uKCkpLgogV2hlbiBhIGVtKG5hbWVkIHJlZmVyZW5j ZSkgaXMgY3JlYXRlZCB3aXRoIGB0dCh0eXBlc2V0IC1uKScsIGFsbCB1c2VzCiBvZiB2YXIocG5h bWUpIGluIGFzc2lnbm1lbnRzIGFuZCBleHBhbnNpb25zIGluc3RlYWQgYXNzaWduIHRvIG9yCiBl eHBhbmQgdmFyKHJuYW1lKS4gIFRoaXMgYWxzbyBhcHBsaWVzIHRvIGB0dCh1bnNldCApdmFyKHBu YW1lKScgYW5kIHRvCi1tb3N0IHN1YnNlcXVlbnQgdXNlcyBvZiBgdHQodHlwZXNldCknIHdpdGgg dGhlIGV4Y2VwdGlvbiBvZgotYHR0KHR5cGVzZXQgLW4pJyBhbmQgYHR0KHR5cGVzZXQgK24pJywg c28gdG8gcmVtb3ZlIGEgbmFtZWQgcmVmZXJlbmNlLAorbW9zdCBzdWJzZXF1ZW50IHVzZXMgb2Yg YHR0KHR5cGVzZXQpJyB3aXRoIHRoZSBleGNlcHRpb25zIG9mIGRlY2xhcmluZworYSBsb2NhbCBp biBhIGNhbGxlZCBmdW5jdGlvbiwgb3IgdXBkYXRpbmcgYSBjdXJyZW50LXNjb3BlIHBhcmFtZXRl ciB3aXRoCitgdHQodHlwZXNldCAtbiknIG9yIGB0dCh0eXBlc2V0ICtuKScuIFRodXMgdG8gcmVt b3ZlIGEgbmFtZWQgcmVmZXJlbmNlLAogdXNlIGVpdGhlciBgdHQodW5zZXQgLW4gKXZhcihwbmFt ZSknIChwcmVmZXJyZWQpIG9yIG9uZSBvZjoKIGlmem1hbigpCiBleGFtcGxlKHR0KHR5cGVzZXQg LW4gKXZhcihwbmFtZT0pCmRpZmYgLS1naXQgYS9TcmMvYnVpbHRpbi5jIGIvU3JjL2J1aWx0aW4u YwppbmRleCA2Zjk4OTkwZjkuLjgyOWI4OTlmOCAxMDA2NDQKLS0tIGEvU3JjL2J1aWx0aW4uYwor KysgYi9TcmMvYnVpbHRpbi5jCkBAIC0yMDMwLDExICsyMDMwLDEwIEBAIHR5cGVzZXRfc2luZ2xl KGNoYXIgKmNuYW1lLCBjaGFyICpwbmFtZSwgUGFyYW0gcG0sIGludCBmdW5jLAogICAgIGludCB1 c2VwbSwgdGMsIGtlZXBsb2NhbCA9IDAsIG5ld3NwZWNpYWwgPSBOU19OT05FLCByZWFkb25seSwg ZG9udF9zZXQgPSAwOwogICAgIGNoYXIgKnN1YnNjcmlwdDsKIAotICAgIGlmIChwbSAmJiAocG0t Pm5vZGUuZmxhZ3MgJiBQTV9OQU1FUkVGKSAmJiAhKChvZmZ8b24pICYgUE1fTkFNRVJFRikpIHsK LQlpZiAoIShvZmYgJiBQTV9OQU1FUkVGKSkgewotCSAgICBpZiAoKHBtID0gKFBhcmFtKXJlc29s dmVfbmFtZXJlZihwbSwgTlVMTCkpKQotCQlwbmFtZSA9IHBtLT5ub2RlLm5hbTsKLQl9CisgICAg aWYgKHBtICYmIChwbS0+bm9kZS5mbGFncyAmIFBNX05BTUVSRUYpICYmICEoKG9mZnxvbikgJiBQ TV9OQU1FUkVGKSAmJgorCShwbS0+bGV2ZWwgPT0gbG9jYWxsZXZlbCB8fCAhKG9uICYgUE1fTE9D QUwpKSkgeworCWlmICgocG0gPSAoUGFyYW0pcmVzb2x2ZV9uYW1lcmVmKHBtLCBOVUxMKSkpCisJ ICAgIHBuYW1lID0gcG0tPm5vZGUubmFtOwogCWlmIChwbSAmJiAocG0tPm5vZGUuZmxhZ3MgJiBQ TV9OQU1FUkVGKSAmJgogCSAgICAob24gJiB+KFBNX05BTUVSRUZ8UE1fTE9DQUx8UE1fUkVBRE9O TFkpKSkgewogCSAgICAvKiBDaGFuZ2luZyB0eXBlIG9mIFBNX1NQRUNJQUx8UE1fQVVUT0xPQUQg aXMgYSBmYXRhbCBlcnJvci4gICoKQEAgLTMxMjUsOCArMzEyNCwxMCBAQCBiaW5fdHlwZXNldChj aGFyICpuYW1lLCBjaGFyICoqYXJndiwgTGlua0xpc3QgYXNzaWducywgT3B0aW9ucyBvcHMsIGlu dCBmdW5jKQogCQkJb2xkcG0tPnUuc3RyKQogCQkJYXNnLT52YWx1ZS5zY2FsYXIgPSBkdXBzdHJp bmcob2xkcG0tPnUuc3RyKTsKIAkJICAgIC8qIERlZmVyIHJlYWQtb25seSBlcnJvciB0byB0eXBl c2V0X3NpbmdsZSgpICovCi0JCSAgICBpZiAoIShobi0+ZmxhZ3MgJiBQTV9SRUFET05MWSkpCisJ CSAgICBpZiAoIShobi0+ZmxhZ3MgJiBQTV9SRUFET05MWSkpIHsKIAkJCXVuc2V0cGFyYW1fcG0o b2xkcG0sIDAsIDEpOworCQkJaG4gPSBOVUxMOworCQkgICAgfQogCQl9CiAJCS8qIFBhc3Npbmcg YSBOVUxMIHBtIHRvIHR5cGVzZXRfc2luZ2xlKCkgbWFrZXMgdGhlCiAJCSAqIG5hbWVyZWYgcmVh ZC1vbmx5IGJlZm9yZSBhc3NpZ25tZW50LCB3aGljaCBicmVha3MKQEAgLTMxMzQsNyArMzEzNSw3 IEBAIGJpbl90eXBlc2V0KGNoYXIgKm5hbWUsIGNoYXIgKiphcmd2LCBMaW5rTGlzdCBhc3NpZ25z LCBPcHRpb25zIG9wcywgaW50IGZ1bmMpCiAJCSAqIHNvIHRoaXMgaXMgc3BlY2lhbC1jYXNlZCB0 byBwZXJtaXQgdGhhdCBhY3Rpb24KIAkJICogbGlrZSBhc3NpZ24tYXQtY3JlYXRlIGZvciBvdGhl ciBwYXJhbWV0ZXIgdHlwZXMuCiAJCSAqLwotCQlpZiAoIShobi0+ZmxhZ3MgJiBQTV9SRUFET05M WSkpCisJCWlmIChobiAmJiAhKGhuLT5mbGFncyAmIFBNX1JFQURPTkxZKSkKIAkJICAgIGhuID0g TlVMTDsKIAkgICAgfQogCX0KZGlmZiAtLWdpdCBhL1NyYy9wYXJhbXMuYyBiL1NyYy9wYXJhbXMu YwppbmRleCA0YmNmNDFjMjIuLjk3M2RmM2ZlNSAxMDA2NDQKLS0tIGEvU3JjL3BhcmFtcy5jCisr KyBiL1NyYy9wYXJhbXMuYwpAQCAtMTAzNCw3ICsxMDM0LDggQEAgY3JlYXRlcGFyYW0oY2hhciAq bmFtZSwgaW50IGZsYWdzKQogCX0KIAogCWlmIChvbGRwbSAmJiAhKGZsYWdzICYgUE1fTkFNRVJF RikgJiYKLQkgICAgKCEob2xkcG0tPm5vZGUuZmxhZ3MgJiBQTV9ST19CWV9ERVNJR04pIHx8ICEo ZmxhZ3MgJiBQTV9MT0NBTCkpICYmCisJICAgIChvbGRwbS0+bGV2ZWwgPT0gbG9jYWxsZXZlbCA/ CisJICAgICAhKG9sZHBtLT5ub2RlLmZsYWdzICYgUE1fUk9fQllfREVTSUdOKSA6ICEoZmxhZ3Mg JiBQTV9MT0NBTCkpICYmCiAJICAgIChvbGRwbS0+bm9kZS5mbGFncyAmIFBNX05BTUVSRUYpICYm CiAJICAgIChvbGRwbSA9IHVwc2NvcGUob2xkcG0sIG9sZHBtLT5iYXNlKSkpIHsKIAkgICAgUGFy YW0gbGFzdHBtOwpkaWZmIC0tZ2l0IGEvVGVzdC9LMDFuYW1lcmVmLnp0c3QgYi9UZXN0L0swMW5h bWVyZWYuenRzdAppbmRleCBlNDViOTIyZTIuLmJiMGQxMTgyMSAxMDA2NDQKLS0tIGEvVGVzdC9L MDFuYW1lcmVmLnp0c3QKKysrIGIvVGVzdC9LMDFuYW1lcmVmLnp0c3QKQEAgLTUxLDkgKzUxLDE5 IEBACiAwOnJlbW92ZSBuYW1lcmVmIGF0dHJpYnV0ZQogPnR5cGVzZXQgcHRyPXZhcgogCi0gIHR5 cGVzZXQgLW4gcHRyCi0gIHR5cGVzZXQgLXQgcHRyCi0gIHR5cGVzZXQgLXAgcHRyCisgdHlwZXNl dCAtbiBwdHI9Z3ZhcgorICgpIHsKKyAgIGxvY2FsIHB0cgorICAgdHlwZXNldCAtcCBwdHIKKyB9 CisgdHlwZXNldCAtcCBwdHIKKzA6TG9jYWwgbm9uLXJlZmVyZW5jZSBoaWRlcyBvdXRzaWRlIHJl ZmVyZW5jZQorPnR5cGVzZXQgcHRyCis+dHlwZXNldCAtbiBwdHI9Z3ZhcgorCisgdHlwZXNldCAt biBwdHIKKyB0eXBlc2V0IC10IHB0cgorIHR5cGVzZXQgLXAgcHRyCiAwOmNoYW5nZSB0eXBlIG9m IGEgcGxhY2Vob2xkZXIKIEY6T3RoZXIgdHlwZSBjaGFuZ2VzIGFyZSBmYXRhbCBlcnJvcnMsIHNo b3VsZCB0aGlzIGFsc28gYmU/CiA+dHlwZXNldCAtbiBwdHI9JycKQEAgLTg0NSw0ICs4NTUsMzkg QEAgRjpwcmV2aW91c2x5IHRoaXMgY291bGQgY3JlYXRlIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBh bmQgY3Jhc2gKIDE6Y3JlYXRlIG5hbWVyZWYgYnkgcGF0dGVybiBtYXRjaCBub3QgYWxsb3dlZAog Kj8qdHlwZXNldDoxOiBpbnZhbGlkIHJlZmVyZW5jZQogCisjCisjIFRoZSBmb2xsb3dpbmcgdGVz dHMgYXJlIHJ1biBpbiBpbnRlcmFjdGl2ZSBtb2RlLCB1c2luZyBQUzEgYXMgYW4KKyMgYXNzaWdu YWJsZSBzcGVjaWFsIHdpdGggc2lkZS1lZmZlY3RzLiAgVGhpcyBjcmFzaGVkIGF0IG9uZSB0aW1l LgorIworCisgIyBOb3RlIGJ5cGFzc2luZyBUWVBFU0VUX1RPX1VOU0VUIGhlcmUKKyAkWlRTVF90 ZXN0ZGlyLy4uL1NyYy96c2ggLWZpcyA8PDwkJworIHR5cGVzZXQgLW4gcD1QUzEKKyAoKSB7Cisg IHR5cGVzZXQgLXAgcAorICBsb2NhbCBwCisgIHR5cGVzZXQgLXAgcAorICBwPXh4CisgIHR5cGVz ZXQgLXAgcAorIH0KKyAnCiswOnJlZ3Jlc3Npb246IGFzc2lnbiB0byBsb2NhbCB0aGF0IHNoYWRv d3MgZ2xvYmFsIG5hbWVkIHJlZmVyZW5jZQorPnR5cGVzZXQgLWcgLW4gcD1QUzEKKz50eXBlc2V0 IHA9JycKKz50eXBlc2V0IHA9eHgKKyo/KgorCisgIyBOb3RlIGJ5cGFzc2luZyBUWVBFU0VUX1RP X1VOU0VUIGhlcmUKKyAkWlRTVF90ZXN0ZGlyLy4uL1NyYy96c2ggLWZpcyA8PDwkJworICgpIHsK KyAgIHR5cGVzZXQgcD1QUzEKKyAgIHR5cGVzZXQgLW4gcAorICAgcD16egorIH0KKyB0eXBlc2V0 IC1wIFBTMQorICcKKzA6cmVncmVzc2lvbiAtIGNvbnZlcnRpbmcgYSBzdHJpbmcgaW50byBhIG5h bWVkIHJlZmVyZW5jZQorPnR5cGVzZXQgUFMxPXp6CisqPyoKKwogJWNsZWFuCg== --000000000000566b130612f6e591--