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--