bug#77805: new snapshot available: m4-1.4.19.60-6ebfc.tar.xz
Karl Berry <[email protected]> Sun, 18 May 2025 16:25:10 -0600
| Newsgroups | gmane.comp.sysutils.automake.bugs |
|---|---|
| Message-ID | <[email protected]> |
--zWS2irzada Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Does anyone have a BSD system (any flavor) I could get access to? Alternatively, attached is my unreleased version of mdate-sh which tries to handle SOURCE_DATE_EPOCH. It seems to work ok with GNU date. I copied the BSD date command (date -u -r ...) from https://reproducible-builds.org/docs/source-date-epoch/ but have no way to test. E.g.: SOURCE_DATE_EPOCH=123456 ./mdate-sh /tmp should output 2 January 1970 I also don't know if there are other date commands that must be supported, or if it's worth falling back to Perl, or what. Suggestions, advice, testing? Here's the important part of the diff: --- a/lib/mdate-sh +++ b/lib/mdate-sh @@ -80,6 +83,38 @@ export LC_TIME TZ=UTC0 export TZ +# https://reproducible-builds.org/docs/source-date-epoch/ +if test -n "$SOURCE_DATE_EPOCH"; then + date_fmt="+%d %B %Y" + result=`date -u --date="@$SOURCE_DATE_EPOCH" "$date_fmt" 2>/dev/null` + if test -z "$result"; then + result=`date -u -r "$SOURCE_DATE_EPOCH" "$date_fmt" 2>/dev/null` + if test -z "$result"; then + # Another possibility would be to use + # perl -e 'print scalar gmtime($SOURCE_DATE_EPOCH)' + # and cut the fields out of the output, but seems plausible that + # Perl won't always be available. + echo "$0: SOURCE_DATE_EPOCH was set, but can't convert: $SOURCE_DATE_EPOCH" >&2 + exit 1 + fi + fi + # + # Remove leading spaces and zeros. We don't want to get into the + # various date options to control this. (Not quoting $result here + # isn't important, just another way to omit leading spaces.) + result=`echo $result | sed 's/^[ 0]*//'` + if test -z "$result"; then + echo "$0: SOURCE_DATE_EPOCH was set, but converted to empty: $SOURCE_DATE_EPOCH" >&2 + exit 1 + fi + # + # Hopefully ok. + echo $result + exit 0 +fi +# end of SOURCE_DATE_EPOCH support, rest is about the normal case of +# using the mtime of the specified file. + # GNU ls changes its time format in response to the TIME_STYLE # variable. Since we cannot assume 'unset' works, revert this # variable to its documented default. --zWS2irzada Content-Type: application/octet-stream Content-Disposition: attachment; filename="mdate-sh" Content-Transfer-Encoding: base64 IyEvYmluL3NoCiMgR2V0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIGEgZmlsZSBvciBkaXJlY3Rv cnkgYW5kIHByZXR0eS1wcmludCBpdC4KCnNjcmlwdHZlcnNpb249MjAyNS0wNS0xOC4yMzsg IyBVVEMKCiMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiMgd3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWku bWl0LmVkdT4sIEp1bmUgMTk5NQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y IChhdCB5b3VyIG9wdGlvbikKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAoj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCiMgQXMg YSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Us IGlmIHlvdQojIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRo YXQgY29udGFpbnMgYQojIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRv Y29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCiMgdGhlIHNhbWUgZGlzdHJpYnV0aW9u IHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgoKIyBU aGlzIGZpbGUgaXMgbWFpbnRhaW5lZCBpbiBBdXRvbWFrZSwgcGxlYXNlIHJlcG9ydAojIGJ1 Z3MgdG8gPGJ1Zy1hdXRvbWFrZUBnbnUub3JnPiBvciBzZW5kIHBhdGNoZXMgdG8KIyA8YXV0 b21ha2UtcGF0Y2hlc0BnbnUub3JnPi4KCmlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0 fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgogIGVtdWxhdGUgc2gK ICBOVUxMQ01EPToKICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0 aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4g IERpc2FibGUgdGhpcyBmZWF0dXJlLgogIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJwog IHNldG9wdCBOT19HTE9CX1NVQlNUCmZpCgpjYXNlICQxIGluCiAgJycpCiAgICAgZWNobyAi JDA6IE5vIGZpbGUuICBUcnkgJyQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAx PiYyCiAgICAgZXhpdCAxOwogICAgIDs7CiAgLWggfCAtLWgqKQogICAgY2F0IDw8XEVPRgpV c2FnZTogbWRhdGUtc2ggWy0taGVscF0gWy0tdmVyc2lvbl0gRklMRQoKUHJldHR5LXByaW50 IHRoZSBtb2RpZmljYXRpb24gZGF5IG9mIEZJTEUsIGluIHRoZSBmb3JtYXQ6CjEgSmFudWFy eSAxOTcwCgpJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgU09VUkNFX0RBVEVfRVBPQ0gg aXMgc2V0LCB1c2UgaXRzIHZhbHVlIChpbgplcG9jaC1zZWNvbmRzKSBmb3IgdGhlIGRhdGUg aW5zdGVhZCBvZiBhbnkgRklMRSBtdGltZS4gIFRoZSBGSUxFCmFyZ3VtZW50IGlzIHN0aWxs IHJlcXVpcmVkIGluIHRoaXMgY2FzZSwgYnV0IGlnbm9yZWQuCgpSZXBvcnQgYnVncyB0byA8 YnVnLWF1dG9tYWtlQGdudS5vcmc+LgpHTlUgQXV0b21ha2UgaG9tZSBwYWdlOiA8aHR0cHM6 Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvbWFrZS8+LgpHZW5lcmFsIGhlbHAgdXNpbmcg R05VIHNvZnR3YXJlOiA8aHR0cHM6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCkVPRgogICAg ZXhpdCAkPwogICAgOzsKICAtdiB8IC0tdiopCiAgICBlY2hvICJtZGF0ZS1zaCAoR05VIEF1 dG9tYWtlKSAkc2NyaXB0dmVyc2lvbiIKICAgIGV4aXQgJD8KICAgIDs7CmVzYWMKCmVycm9y ICgpCnsKICBlY2hvICIkMDogJDEiID4mMgogIGV4aXQgMQp9CgojIFByZXZlbnQgZGF0ZSBn aXZpbmcgcmVzcG9uc2UgaW4gYW5vdGhlciBsYW5ndWFnZS4KTEFORz1DCmV4cG9ydCBMQU5H CkxDX0FMTD1DCmV4cG9ydCBMQ19BTEwKTENfVElNRT1DCmV4cG9ydCBMQ19USU1FCgojIFVz ZSBVVEMgdG8gZ2V0IHJlcHJvZHVjaWJsZSByZXN1bHQuClRaPVVUQzAKZXhwb3J0IFRaCgoj IGh0dHBzOi8vcmVwcm9kdWNpYmxlLWJ1aWxkcy5vcmcvZG9jcy9zb3VyY2UtZGF0ZS1lcG9j aC8KaWYgdGVzdCAtbiAiJFNPVVJDRV9EQVRFX0VQT0NIIjsgdGhlbgogIGRhdGVfZm10PSIr JWQgJUIgJVkiCiAgcmVzdWx0PWBkYXRlIC11IC0tZGF0ZT0iQCRTT1VSQ0VfREFURV9FUE9D SCIgIiRkYXRlX2ZtdCIgMj4vZGV2L251bGxgCiAgaWYgdGVzdCAteiAiJHJlc3VsdCI7IHRo ZW4KICAgIHJlc3VsdD1gZGF0ZSAtdSAtciAiJFNPVVJDRV9EQVRFX0VQT0NIIiAiJGRhdGVf Zm10IiAyPi9kZXYvbnVsbGAKICAgIGlmIHRlc3QgLXogIiRyZXN1bHQiOyB0aGVuCiAgICAg ICMgQW5vdGhlciBwb3NzaWJpbGl0eSB3b3VsZCBiZSB0byB1c2UKICAgICAgIyAgIHBlcmwg LWUgJ3ByaW50IHNjYWxhciBnbXRpbWUoJFNPVVJDRV9EQVRFX0VQT0NIKScKICAgICAgIyBh bmQgY3V0IHRoZSBmaWVsZHMgb3V0IG9mIHRoZSBvdXRwdXQsIGJ1dCBzZWVtcyBwbGF1c2li bGUgdGhhdAogICAgICAjIFBlcmwgd29uJ3QgYWx3YXlzIGJlIGF2YWlsYWJsZS4KICAgICAg ZWNobyAiJDA6IFNPVVJDRV9EQVRFX0VQT0NIIHdhcyBzZXQsIGJ1dCBjYW4ndCBjb252ZXJ0 OiAkU09VUkNFX0RBVEVfRVBPQ0giID4mMgogICAgICBleGl0IDEKICAgIGZpCiAgZmkKICAj CiAgIyBSZW1vdmUgbGVhZGluZyBzcGFjZXMgYW5kIHplcm9zLiBXZSBkb24ndCB3YW50IHRv IGdldCBpbnRvIHRoZQogICMgdmFyaW91cyBkYXRlIG9wdGlvbnMgdG8gY29udHJvbCB0aGlz LiAoTm90IHF1b3RpbmcgJHJlc3VsdCBoZXJlCiAgIyBpc24ndCBpbXBvcnRhbnQsIGp1c3Qg YW5vdGhlciB3YXkgdG8gb21pdCBsZWFkaW5nIHNwYWNlcy4pCiAgcmVzdWx0PWBlY2hvICRy ZXN1bHQgfCBzZWQgJ3MvXlsgMF0qLy8nYAogIGlmIHRlc3QgLXogIiRyZXN1bHQiOyB0aGVu CiAgICBlY2hvICIkMDogU09VUkNFX0RBVEVfRVBPQ0ggd2FzIHNldCwgYnV0IGNvbnZlcnRl ZCB0byBlbXB0eTogJFNPVVJDRV9EQVRFX0VQT0NIIiA+JjIKICAgIGV4aXQgMQogIGZpCiAg IwogICMgSG9wZWZ1bGx5IG9rLgogIGVjaG8gJHJlc3VsdAogIGV4aXQgMApmaQojIGVuZCBv ZiBTT1VSQ0VfREFURV9FUE9DSCBzdXBwb3J0LCByZXN0IGlzIGFib3V0IHRoZSBub3JtYWwg Y2FzZSBvZgojIHVzaW5nIHRoZSBtdGltZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUuCgojIEdO VSBscyBjaGFuZ2VzIGl0cyB0aW1lIGZvcm1hdCBpbiByZXNwb25zZSB0byB0aGUgVElNRV9T VFlMRQojIHZhcmlhYmxlLiAgU2luY2Ugd2UgY2Fubm90IGFzc3VtZSAndW5zZXQnIHdvcmtz LCByZXZlcnQgdGhpcwojIHZhcmlhYmxlIHRvIGl0cyBkb2N1bWVudGVkIGRlZmF1bHQuCmlm IHRlc3QgIiR7VElNRV9TVFlMRStzZXR9IiA9IHNldDsgdGhlbgogIFRJTUVfU1RZTEU9cG9z aXgtbG9uZy1pc28KICBleHBvcnQgVElNRV9TVFlMRQpmaQoKc2F2ZV9hcmcxPSQxCgojIEZp bmQgb3V0IGhvdyB0byBnZXQgdGhlIGV4dGVuZGVkIGxzIG91dHB1dCBvZiBhIGZpbGUgb3Ig ZGlyZWN0b3J5LgppZiBscyAtTCAvZGV2L251bGwgMT4vZGV2L251bGwgMj4mMTsgdGhlbgog IGxzX2NvbW1hbmQ9J2xzIC1MIC1sIC1kJwplbHNlCiAgbHNfY29tbWFuZD0nbHMgLWwgLWQn CmZpCiMgQXZvaWQgdXNlci9ncm91cCBuYW1lcyB0aGF0IG1pZ2h0IGhhdmUgc3BhY2VzLCB3 aGVuIHBvc3NpYmxlLgppZiBscyAtbiAvZGV2L251bGwgMT4vZGV2L251bGwgMj4mMTsgdGhl bgogIGxzX2NvbW1hbmQ9IiRsc19jb21tYW5kIC1uIgpmaQoKIyBBICdscyAtbCcgbGluZSBs b29rcyBhcyBmb2xsb3dzIG9uIE9TLzIuCiMgIGRyd3hyd3gtLS0gICAgICAgIDAgQXVnIDEx ICAyMDAxIGZvbwojIFRoaXMgZGlmZmVycyBmcm9tIFVuaXgsIHdoaWNoIGFkZHMgb3duZXJz aGlwIGluZm9ybWF0aW9uLgojICBkcnd4cnd4LS0tICAgMiByb290ICByb290ICAgICAgNDA5 NiBBdWcgMTEgIDIwMDEgZm9vCiMKIyBUbyBmaW5kIHRoZSBkYXRlLCB3ZSBzcGxpdCB0aGUg bGluZSBvbiBzcGFjZXMgYW5kIGl0ZXJhdGUgb24gd29yZHMKIyB1bnRpbCB3ZSBmaW5kIGEg bW9udGguICBUaGlzIGNhbm5vdCB3b3JrIHdpdGggZmlsZXMgd2hvc2Ugb3duZXIgaXMgYQoj IHVzZXIgbmFtZWQgIkphbiIsIG9yICJGZWIiLCBldGMuICBIb3dldmVyLCBpdCdzIHVubGlr ZWx5IHRoYXQgJy8nCiMgd2lsbCBiZSBvd25lZCBieSBhIHVzZXIgd2hvc2UgbmFtZSBpcyBh IG1vbnRoLiAgU28gd2UgZmlyc3QgbG9vayBhdAojIHRoZSBleHRlbmRlZCBscyBvdXRwdXQg b2YgdGhlIHJvb3QgZGlyZWN0b3J5IHRvIGRlY2lkZSBob3cgbWFueQojIHdvcmRzIHNob3Vs ZCBiZSBza2lwcGVkIHRvIGdldCB0aGUgZGF0ZS4KCiMgT24gSFBVWCAvYmluL3NoLCAic2V0 IiBpbnRlcnByZXRzICItcnctci0tci0tIiBhcyBvcHRpb25zLCBzbyB0aGUgIngiIGJlbG93 LgpzZXQgeGAkbHNfY29tbWFuZCAvYAoKIyBGaW5kIHdoaWNoIGFyZ3VtZW50IGlzIHRoZSBt b250aC4KbW9udGg9CmNvbW1hbmQ9CnVudGlsIHRlc3QgJG1vbnRoCmRvCiAgdGVzdCAkIyAt Z3QgMCB8fCBlcnJvciAiZmFpbGVkIHBhcnNpbmcgJyRsc19jb21tYW5kIC8nIG91dHB1dCIK ICBzaGlmdAogICMgQWRkIGFub3RoZXIgc2hpZnQgdG8gdGhlIGNvbW1hbmQuCiAgY29tbWFu ZD0iJGNvbW1hbmQgc2hpZnQ7IgogIGNhc2UgJDEgaW4KICAgIEphbikgbW9udGg9SmFudWFy eTsgbnVtbW9udGg9MTs7CiAgICBGZWIpIG1vbnRoPUZlYnJ1YXJ5OyBudW1tb250aD0yOzsK ICAgIE1hcikgbW9udGg9TWFyY2g7IG51bW1vbnRoPTM7OwogICAgQXByKSBtb250aD1BcHJp bDsgbnVtbW9udGg9NDs7CiAgICBNYXkpIG1vbnRoPU1heTsgbnVtbW9udGg9NTs7CiAgICBK dW4pIG1vbnRoPUp1bmU7IG51bW1vbnRoPTY7OwogICAgSnVsKSBtb250aD1KdWx5OyBudW1t b250aD03OzsKICAgIEF1ZykgbW9udGg9QXVndXN0OyBudW1tb250aD04OzsKICAgIFNlcCkg bW9udGg9U2VwdGVtYmVyOyBudW1tb250aD05OzsKICAgIE9jdCkgbW9udGg9T2N0b2Jlcjsg bnVtbW9udGg9MTA7OwogICAgTm92KSBtb250aD1Ob3ZlbWJlcjsgbnVtbW9udGg9MTE7Owog ICAgRGVjKSBtb250aD1EZWNlbWJlcjsgbnVtbW9udGg9MTI7OwogIGVzYWMKZG9uZQoKdGVz dCAtbiAiJG1vbnRoIiB8fCBlcnJvciAiZmFpbGVkIHBhcnNpbmcgJyRsc19jb21tYW5kIC8n IG91dHB1dCIKCiMgR2V0IHRoZSBleHRlbmRlZCBscyBvdXRwdXQgb2YgdGhlIGZpbGUgb3Ig ZGlyZWN0b3J5LgpzZXQgZHVtbXkgeGBldmFsICIkbHNfY29tbWFuZCBcIlxcXCRzYXZlX2Fy ZzFcIiJgCgojIFJlbW92ZSBhbGwgcHJlY2VkaW5nIGFyZ3VtZW50cwpldmFsICRjb21tYW5k CgojIEJlY2F1c2Ugb2YgdGhlIGR1bW15IGFyZ3VtZW50IGFib3ZlLCBtb250aCBpcyBpbiAk Mi4KIwojIE9uIGEgUE9TSVggc3lzdGVtLCB3ZSBzaG91bGQgaGF2ZQojCiMgJCMgPSA1CiMg JDEgPSBmaWxlIHNpemUKIyAkMiA9IG1vbnRoCiMgJDMgPSBkYXkKIyAkNCA9IHllYXIgb3Ig dGltZQojICQ1ID0gZmlsZW5hbWUKIwojIE9uIERhcndpbiA3LjcuMCBhbmQgNy42LjAsIHdl IGhhdmUKIwojICQjID0gNAojICQxID0gZGF5CiMgJDIgPSBtb250aAojICQzID0geWVhciBv ciB0aW1lCiMgJDQgPSBmaWxlbmFtZQoKIyBHZXQgdGhlIG1vbnRoLgpjYXNlICQyIGluCiAg SmFuKSBtb250aD1KYW51YXJ5OyBudW1tb250aD0xOzsKICBGZWIpIG1vbnRoPUZlYnJ1YXJ5 OyBudW1tb250aD0yOzsKICBNYXIpIG1vbnRoPU1hcmNoOyBudW1tb250aD0zOzsKICBBcHIp IG1vbnRoPUFwcmlsOyBudW1tb250aD00OzsKICBNYXkpIG1vbnRoPU1heTsgbnVtbW9udGg9 NTs7CiAgSnVuKSBtb250aD1KdW5lOyBudW1tb250aD02OzsKICBKdWwpIG1vbnRoPUp1bHk7 IG51bW1vbnRoPTc7OwogIEF1ZykgbW9udGg9QXVndXN0OyBudW1tb250aD04OzsKICBTZXAp IG1vbnRoPVNlcHRlbWJlcjsgbnVtbW9udGg9OTs7CiAgT2N0KSBtb250aD1PY3RvYmVyOyBu dW1tb250aD0xMDs7CiAgTm92KSBtb250aD1Ob3ZlbWJlcjsgbnVtbW9udGg9MTE7OwogIERl YykgbW9udGg9RGVjZW1iZXI7IG51bW1vbnRoPTEyOzsKZXNhYwoKY2FzZSAkMyBpbgogID8/ PyopIGRheT0kMTs7CiAgKikgZGF5PSQzOyBzaGlmdDs7CmVzYWMKCiMgSGVyZSB3ZSBoYXZl IHRvIGRlYWwgd2l0aCB0aGUgcHJvYmxlbSB0aGF0IHRoZSBscyBvdXRwdXQgZ2l2ZXMgZWl0 aGVyCiMgdGhlIHRpbWUgb2YgZGF5IG9yIHRoZSB5ZWFyLgpjYXNlICQzIGluCiAgKjoqKSBz ZXQgYGRhdGVgOyBldmFsIHllYXI9XCQkIwogICAgICAgY2FzZSAkMiBpbgoJIEphbikgbnVt bW9udGh0b2Q9MTs7CgkgRmViKSBudW1tb250aHRvZD0yOzsKCSBNYXIpIG51bW1vbnRodG9k PTM7OwoJIEFwcikgbnVtbW9udGh0b2Q9NDs7CgkgTWF5KSBudW1tb250aHRvZD01OzsKCSBK dW4pIG51bW1vbnRodG9kPTY7OwoJIEp1bCkgbnVtbW9udGh0b2Q9Nzs7CgkgQXVnKSBudW1t b250aHRvZD04OzsKCSBTZXApIG51bW1vbnRodG9kPTk7OwoJIE9jdCkgbnVtbW9udGh0b2Q9 MTA7OwoJIE5vdikgbnVtbW9udGh0b2Q9MTE7OwoJIERlYykgbnVtbW9udGh0b2Q9MTI7Owog ICAgICAgZXNhYwogICAgICAgIyBGb3IgdGhlIGZpcnN0IHNpeCBtb250aCBvZiB0aGUgeWVh ciB0aGUgdGltZSBub3RhdGlvbiBjYW4gYWxzbwogICAgICAgIyBiZSB1c2VkIGZvciBmaWxl cyBtb2RpZmllZCBpbiB0aGUgbGFzdCB5ZWFyLgogICAgICAgaWYgKGV4cHIgJG51bW1vbnRo IFw+ICRudW1tb250aHRvZCkgPiAvZGV2L251bGw7CiAgICAgICB0aGVuCgkgeWVhcj1gZXhw ciAkeWVhciAtIDFgCiAgICAgICBmaTs7CiAgKikgeWVhcj0kMzs7CmVzYWMKCiMgVGhlIHJl c3VsdC4KZWNobyAkZGF5ICRtb250aCAkeWVhcgoKIyBMb2NhbCBWYXJpYWJsZXM6CiMgbW9k ZTogc2hlbGwtc2NyaXB0CiMgc2gtaW5kZW50YXRpb246IDIKIyBldmFsOiAoYWRkLWhvb2sg J2JlZm9yZS1zYXZlLWhvb2sgJ3RpbWUtc3RhbXAgbmlsIHQpCiMgdGltZS1zdGFtcC1zdGFy dDogInNjcmlwdHZlcnNpb249IgojIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAy ZC4lMDJIIgojIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDMCIKIyB0aW1lLXN0YW1wLWVu ZDogIjsgIyBVVEMiCiMgRW5kOgo= --zWS2irzada--