From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from omta001.cacentral1.a.cloudfilter.net (omta001.cacentral1.a.cloudfilter.net [3.97.99.32]) by sourceware.org (Postfix) with ESMTPS id 1E5CF383FBBE for ; Thu, 20 Oct 2022 22:07:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1E5CF383FBBE Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=SystematicSw.ab.ca Authentication-Results: sourceware.org; spf=none smtp.mailfrom=systematicsw.ab.ca Received: from shw-obgw-4003a.ext.cloudfilter.net ([10.228.9.183]) by cmsmtp with ESMTP id lcgvoLnwCS8Wrldh0oHMJF; Thu, 20 Oct 2022 22:07:10 +0000 Received: from [10.0.0.5] ([184.64.124.72]) by cmsmtp with ESMTP id ldgzoOuB0iEh7ldgzo301g; Thu, 20 Oct 2022 22:07:10 +0000 X-Authority-Analysis: v=2.4 cv=O9kqATxW c=1 sm=1 tr=0 ts=6351c68e a=oHm12aVswOWz6TMtn9zYKg==:117 a=oHm12aVswOWz6TMtn9zYKg==:17 a=r77TgQKjGQsHNAKrUKIA:9 a=CCpqsmhAAAAA:8 a=BCVRRYYnAAAA:8 a=mDV3o1hIAAAA:8 a=Qn_5yg2C4iUcVEMDiMoA:9 a=QEXdDO2ut3YA:10 a=VlwwnkKqtRQmWOFzUE4A:9 a=E-yladNfQNEA:10 a=bdPpPCvxvZ3gg5vTUEYA:9 a=ITdVHhY7-e0A:10 a=ul9cdbp4aOFLsgKbc677:22 a=Yfo1nd69h7ycsZ8reatu:22 a=_FVE-zBwftR9WsbkzFJk:22 Content-Type: multipart/mixed; boundary="------------VHdpUFQ8qSJoPD5I0Stgu0no" Message-ID: <24f6dd02-57a6-48c6-eb16-cc8bed524b1f@SystematicSw.ab.ca> Date: Thu, 20 Oct 2022 16:07:09 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Reply-To: Brian.Inglis@SystematicSw.ab.ca Subject: Re: Fw: [PATCH 1/2] strftime.c(__strftime): add %i, %q, %v, tests; tweak %Z docs Content-Language: en-CA To: newlib@sourceware.org References: <20220917050005.5758-1-Brian.Inglis@SystematicSW.ab.ca> <20220917050005.5758-2-Brian.Inglis@SystematicSW.ab.ca> From: Brian Inglis Organization: Systematic Software In-Reply-To: X-CMAE-Envelope: MS4xfI4G6HAK9FNgfWwGy0+X/lFLcmunsCujmpWsRLsLVRjfHb3Zc2m5gUvFWrd8lVxFn19+O/CrLsq6D8uSZagVw1mejtlWwUYbpjtQ4YLdDHtAhSxNcQAf rxGrNLLA5SW6FgYx8Y0RfrC9xkvNXuEKEapy+VeSKZFUIzEIWHQ4QTO80QZJuV87xHl4xlOpfnzFbnD/HFnEf1BzhsDZsTUuRUU= X-Spam-Status: No, score=-1163.7 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------VHdpUFQ8qSJoPD5I0Stgu0no Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2022-10-18 08:03, Corinna Vinschen wrote: > On Sep 19 11:51, C Howland wrote: >> On Saturday, September 17, 2022 1:00 AM, Brian Inglis wrote: >>> newlib/libc/time/strftime.c(__strftime): >>> %i year in century [00..99] Synonym for "%y". Non-POSIX extension. >>> [tm_year] >>> %q GNU quarter of the year (from `<<1>>' to `<<4>>') [tm_mon] >>> %v OSX/Ruby VMS/Oracle date "%d-%b-%Y". Non-POSIX extension. [tm_mday, >>> tm_mon, tm_year] >>> add %i %q %v tests >>> %Z clarify current time zone *abbreviation* not "name" [tm_isdst] >>> --- >>> newlib/libc/time/strftime.c | 67 +++++++++++++++++++++++++++++++++++-- >>> 1 file changed, 64 insertions(+), 3 deletions(-) > - %i: Where is used and documented? I don't see this in glibc, not even > in the latest from the glibc git repo. Some portable language implementations for non-Unix platforms that I came across and documented but did not keep track of, and now can't find! > - %q: Ditto. For a GNU extension, it's surprisingly absent from the > most recent glibc code, or do I miss something? Looks like this may have been lost in the discussion: https://inbox.sourceware.org/libc-alpha/2f5f737e-2e42-08c6-ae2b-33aab798a1d9@draigBrady.com/ but as he says, it was already in gnulib, and made it into date the same month: https://git.savannah.gnu.org/cgit/coreutils.git/diff/?id=30012b290facf66551cdf395ace397903d00483d also in Perl and ksh93 printf %(...)T. > - %v: OSX/Ruby? Isn't that already gone? Also, it introduces another > ambiguous date format where %F or equivalent should be used instead. All the BSDs, Darwin, Oracle, and Ruby support it: it is localized, but not ambiguous, as it's dd-Mon-yyyy. > It's nice to add features, but it wouldn't hurt to have some > clarification and justification if it's non-standard stuff. > Availability in glibc or in the BSDs is typically justification enough, > but I don't see this here. See attached sh and log for doc and code searches. -- Take care. Thanks, Brian Inglis Calgary, Alberta, Canada La perfection est atteinte Perfection is achieved non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut -- Antoine de Saint-Exupéry --------------VHdpUFQ8qSJoPD5I0Stgu0no Content-Type: text/plain; charset=UTF-8; name="date-iqv.sh" Content-Disposition: attachment; filename="date-iqv.sh" Content-Transfer-Encoding: base64 IyEvYmluL2Jhc2gKIyBkYXRlLWlxdi5zaAoKZWNobyAiJCBtYW4gZGF0ZSB8IGdyZXAgXCIn W2lxdl0nXHwlW2lxdl1cIiIKbWFuIGRhdGUgfCBncmVwICInW2lxdl0nXHwlW2lxdl0iCgpl Y2hvICIkIHBlcmxkb2MgRGF0ZTo6Rm9ybWF0IHwgZ3JlcCBcIidbaXF2XSdcfCVbaXF2XVwi IgpwZXJsZG9jIERhdGU6OkZvcm1hdCB8IGdyZXAgIidbaXF2XSdcfCVbaXF2XSIKCmVjaG8g IiQgcmkgRGF0ZS5zdHJmdGltZSB8IGdyZXAgXCInW2lxdl0nXHwlW2lxdl1cIiIKcmkgRGF0 ZS5zdHJmdGltZSB8IGdyZXAgIidbaXF2XSdcfCVbaXF2XSIKCmVjaG8gIiQgZ3JlcCAtQTgg XCInW2lxdl0nXHwlW2lxdl1cIiAuLi97QlNELypCU0QsY3lnd2luL2NvcmV1dGlscy9jb3Jl dXRpbHMtOS4wLT8ueCovb3JpZ3NyYy9jb3JldXRpbHMtOS4wLyosZ2xpYmMvdGltZSxnbnVs aWIvbGliLG11c2wvdGltZX0vKntkYXRlLHtzdHIsd2NzfVtmcF10aW1lfSoiCmdyZXAgLUE4 ICInW2lxdl0nXHwlW2lxdl0iIC4uL3tCU0QvKkJTRCxjeWd3aW4vY29yZXV0aWxzL2NvcmV1 dGlscy05LjAtPy54Ki9vcmlnc3JjL2NvcmV1dGlscy05LjAvKixnbGliYy90aW1lLGdudWxp Yi9saWIsbXVzbC90aW1lfS8qe2RhdGUse3N0cix3Y3N9W2ZwXXRpbWV9KgoK --------------VHdpUFQ8qSJoPD5I0Stgu0no Content-Type: text/plain; charset=UTF-8; name="date-iqv.log" Content-Disposition: attachment; filename="date-iqv.log" Content-Transfer-Encoding: base64 JCBtYW4gZGF0ZSB8IGdyZXAgIidbaXF2XSdcfCVbaXF2XSIKICAgICAgICVxICAgICBxdWFy dGVyIG9mIHllYXIgKDEuLjQpCiQgcGVybGRvYyBEYXRlOjpGb3JtYXQgfCBncmVwICInW2lx dl0nXHwlW2lxdl0iCiAgICAgICAgICAgICVxICAgICAgUXVhcnRlciBudW1iZXIsIHN0YXJ0 aW5nIHdpdGggMQogICAgJWQsICVlLCAlSCwgJUksICVqLCAlaywgJWwsICVtLCAlTSwgJXEs ICV5IGFuZCAlWSBjYW4gYmUgb3V0cHV0IGluIFJvbWFuCiQgcmkgRGF0ZS5zdHJmdGltZSB8 IGdyZXAgIidbaXF2XSdcfCVbaXF2XSIKICAgICV2IC0gVk1TIGRhdGUgKCVlLSViLSVZKQok IGdyZXAgLUE4ICInW2lxdl0nXHwlW2lxdl0iIC4uL3tCU0QvKkJTRCxjeWd3aW4vY29yZXV0 aWxzL2NvcmV1dGlscy05LjAtPy54Ki9vcmlnc3JjL2NvcmV1dGlscy05LjAvKixnbGliYy90 aW1lLGdudWxpYi9saWIsbXVzbC90aW1lfS8qe2RhdGUse3N0cix3Y3N9W2ZwXXRpbWV9Kgou Li9CU0QvRnJlZUJTRC9zdHJmdGltZS5jOgkJCWNhc2UgJ3YnOgouLi9CU0QvRnJlZUJTRC9z dHJmdGltZS5jLQkJCQkvKgouLi9CU0QvRnJlZUJTRC9zdHJmdGltZS5jLQkJCQkgKiBGcm9t IEFybm9sZCBSb2JiaW5zJyBzdHJmdGltZSB2ZXJzaW9uIDMuMDoKLi4vQlNEL0ZyZWVCU0Qv c3RyZnRpbWUuYy0JCQkJICogImRhdGUgYXMgZGQtYmJiLVlZWVkiCi4uL0JTRC9GcmVlQlNE L3N0cmZ0aW1lLmMtCQkJCSAqIChhZG8sIDE5OTMtMDUtMjQpCi4uL0JTRC9GcmVlQlNEL3N0 cmZ0aW1lLmMtCQkJCSAqLwouLi9CU0QvRnJlZUJTRC9zdHJmdGltZS5jLQkJCQlwdCA9IF9m bXQoIiVlLSViLSVZIiwgdCwgcHQsIHB0bGltLCB3YXJucCwgbG9jKTsKLi4vQlNEL0ZyZWVC U0Qvc3RyZnRpbWUuYy0JCQkJY29udGludWU7Ci4uL0JTRC9GcmVlQlNEL3N0cmZ0aW1lLmMt CQkJY2FzZSAnVyc6Ci0tCi4uL0JTRC9OZXRCU0Qvc3RyZnRpbWUuYzoJCQljYXNlICd2JzoK Li4vQlNEL05ldEJTRC9zdHJmdGltZS5jLQkJCQkvKgouLi9CU0QvTmV0QlNEL3N0cmZ0aW1l LmMtCQkJCSoqIEZyb20gQXJub2xkIFJvYmJpbnMnIHN0cmZ0aW1lIHZlcnNpb24gMy4wOgou Li9CU0QvTmV0QlNEL3N0cmZ0aW1lLmMtCQkJCSoqICJkYXRlIGFzIGRkLWJiYi1ZWVlZIgou Li9CU0QvTmV0QlNEL3N0cmZ0aW1lLmMtCQkJCSoqIChhZG8sIDE5OTMtMDUtMjQpCi4uL0JT RC9OZXRCU0Qvc3RyZnRpbWUuYy0JCQkJKi8KLi4vQlNEL05ldEJTRC9zdHJmdGltZS5jLQkJ CQlwdCA9IF9mbXQoc3AsICIlZS0lYi0lWSIsIHQsIHB0LCBwdGxpbSwgd2FybnAsCi4uL0JT RC9OZXRCU0Qvc3RyZnRpbWUuYy0JCQkJICAgIGxvYyk7Ci4uL0JTRC9OZXRCU0Qvc3RyZnRp bWUuYy0JCQkJY29udGludWU7Ci0tCi4uL0JTRC9PcGVuQlNEL3N0cmZ0aW1lLmM6CQkJY2Fz ZSAndic6Ci4uL0JTRC9PcGVuQlNEL3N0cmZ0aW1lLmMtCQkJCS8qCi4uL0JTRC9PcGVuQlNE L3N0cmZ0aW1lLmMtCQkJCSoqIEZyb20gQXJub2xkIFJvYmJpbnMnIHN0cmZ0aW1lIHZlcnNp b24gMy4wOgouLi9CU0QvT3BlbkJTRC9zdHJmdGltZS5jLQkJCQkqKiAiZGF0ZSBhcyBkZC1i YmItWVlZWSIKLi4vQlNEL09wZW5CU0Qvc3RyZnRpbWUuYy0JCQkJKiogKGFkbywgMTk5My0w NS0yNCkKLi4vQlNEL09wZW5CU0Qvc3RyZnRpbWUuYy0JCQkJKi8KLi4vQlNEL09wZW5CU0Qv c3RyZnRpbWUuYy0JCQkJcHQgPSBfZm10KCIlZS0lYi0lWSIsIHQsIHB0LCBwdGxpbSwgd2Fy bnApOwouLi9CU0QvT3BlbkJTRC9zdHJmdGltZS5jLQkJCQljb250aW51ZTsKLi4vQlNEL09w ZW5CU0Qvc3RyZnRpbWUuYy0JCQljYXNlICdXJzoKLS0KLi4vY3lnd2luL2NvcmV1dGlscy9j b3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9tYW4vZGF0ZS4x OiVxCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3Jj L2NvcmV1dGlscy05LjAvbWFuL2RhdGUuMS1xdWFydGVyIG9mIHllYXIgKDEuLjQpCi4uL2N5 Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGls cy05LjAvbWFuL2RhdGUuMS0uVFAKLi4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4w LTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9tYW4vZGF0ZS4xLSVyCi4uL2N5Z3dp bi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05 LjAvbWFuL2RhdGUuMS1sb2NhbGUncyAxMlwtaG91ciBjbG9jayB0aW1lIChlLmcuLCAxMTox MTowNCBQTSkKLi4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29y aWdzcmMvY29yZXV0aWxzLTkuMC9tYW4vZGF0ZS4xLS5UUAouLi9jeWd3aW4vY29yZXV0aWxz L2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL21hbi9kYXRl LjEtJVIKLi4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdz cmMvY29yZXV0aWxzLTkuMC9tYW4vZGF0ZS4xLTI0XC1ob3VyIGhvdXIgYW5kIG1pbnV0ZTsg c2FtZSBhcyAlSDolTQouLi9jeWd3aW4vY29yZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZf NjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL21hbi9kYXRlLjEtLlRQCi0tCi4uL2N5Z3dpbi9j b3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAv c3JjL2RhdGUuYzogICVxICAgcXVhcnRlciBvZiB5ZWFyICgxLi40KVxuXAouLi9jeWd3aW4v Y29yZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4w L3NyYy9kYXRlLmMtICAlciAgIGxvY2FsZSdzIDEyLWhvdXIgY2xvY2sgdGltZSAoZS5nLiwg MTE6MTE6MDQgUE0pXG5cCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4 Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvc3JjL2RhdGUuYy0gICVSICAgMjQtaG91ciBo b3VyIGFuZCBtaW51dGU7IHNhbWUgYXMgJUg6JU1cblwKLi4vY3lnd2luL2NvcmV1dGlscy9j b3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9zcmMvZGF0ZS5j LSAgJXMgICBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCAoMTk3MC0wMS0wMSAwMDowMCBVVEMp XG5cCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3Jj L2NvcmV1dGlscy05LjAvc3JjL2RhdGUuYy0iKSwgc3Rkb3V0KTsKLi4vY3lnd2luL2NvcmV1 dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9zcmMv ZGF0ZS5jLSAgICAgIGZwdXRzIChfKCJcCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxz LTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvc3JjL2RhdGUuYy0gICVTICAg c2Vjb25kICgwMC4uNjApXG5cCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0x Lng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvc3JjL2RhdGUuYy0gICV0ICAgYSB0YWJc blwKLi4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMv Y29yZXV0aWxzLTkuMC9zcmMvZGF0ZS5jLSAgJVQgICB0aW1lOyBzYW1lIGFzICVIOiVNOiVT XG5cCi0tCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmln c3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRlc3RzL3Rlc3QtbnN0cmZ0aW1lLmM6ICAvKiBD aGVjayAlcS4gICovCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82 NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRlc3RzL3Rlc3QtbnN0cmZ0aW1lLmMt ICBmb3IgKG1vbiA9IDE7IG1vbiA8PSAxMjsgbW9uKyspCi4uL2N5Z3dpbi9jb3JldXRpbHMv Y29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRl c3RzL3Rlc3QtbnN0cmZ0aW1lLmMtICAgIHsKLi4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRp bHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9nbnVsaWItdGVzdHMvdGVz dC1uc3RyZnRpbWUuYy0gICAgICBjaGFyIG91dFsyXTsKLi4vY3lnd2luL2NvcmV1dGlscy9j b3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9nbnVsaWItdGVz dHMvdGVzdC1uc3RyZnRpbWUuYy0gICAgICBjaGFyIGV4cFsyXSA9IHswLH07Ci4uL2N5Z3dp bi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05 LjAvZ251bGliLXRlc3RzL3Rlc3QtbnN0cmZ0aW1lLmMtICAgICAgc3RydWN0IHRtIHF0bSA9 IHsgLnRtX21vbiA9IG1vbiAtIDEgfTsKLi4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMt OS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9nbnVsaWItdGVzdHMvdGVzdC1u c3RyZnRpbWUuYzogICAgICBjaGFyIGZtdFszXSA9IHsnJScsJ3EnLCdcMCd9OwouLi9jeWd3 aW4vY29yZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMt OS4wL2dudWxpYi10ZXN0cy90ZXN0LW5zdHJmdGltZS5jLQouLi9jeWd3aW4vY29yZXV0aWxz L2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL2dudWxpYi10 ZXN0cy90ZXN0LW5zdHJmdGltZS5jLSAgICAgIHNpemVfdCByID0gbnN0cmZ0aW1lIChvdXQs IHNpemVvZiAob3V0KSwgZm10LCAmcXRtLCAwLCAwKTsKLi4vY3lnd2luL2NvcmV1dGlscy9j b3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9nbnVsaWItdGVz dHMvdGVzdC1uc3RyZnRpbWUuYy0gICAgICBpZiAociA9PSAwKQouLi9jeWd3aW4vY29yZXV0 aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL2dudWxp Yi10ZXN0cy90ZXN0LW5zdHJmdGltZS5jLSAgICAgICAgewouLi9jeWd3aW4vY29yZXV0aWxz L2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL2dudWxpYi10 ZXN0cy90ZXN0LW5zdHJmdGltZS5jOiAgICAgICAgICBwdXRzICgibnN0cmZ0aW1lKFwiJXFc IikgZmFpbGVkIik7Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82 NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRlc3RzL3Rlc3QtbnN0cmZ0aW1lLmMt ICAgICAgICAgIHJlc3VsdCA9IDE7Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTku MC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRlc3RzL3Rlc3QtbnN0 cmZ0aW1lLmMtICAgICAgICAgIGJyZWFrOwouLi9jeWd3aW4vY29yZXV0aWxzL2NvcmV1dGls cy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL2dudWxpYi10ZXN0cy90ZXN0 LW5zdHJmdGltZS5jLSAgICAgICAgfQouLi9jeWd3aW4vY29yZXV0aWxzL2NvcmV1dGlscy05 LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL2dudWxpYi10ZXN0cy90ZXN0LW5z dHJmdGltZS5jLQouLi9jeWd3aW4vY29yZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQv b3JpZ3NyYy9jb3JldXRpbHMtOS4wL2dudWxpYi10ZXN0cy90ZXN0LW5zdHJmdGltZS5jLSAg ICAgIGV4cFswXSA9IG1vbiA8IDQgPyAnMScgOiBtb24gPCA3ID8gJzInIDogbW9uIDwgMTAg PyAnMycgOiAnNCc7Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82 NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRlc3RzL3Rlc3QtbnN0cmZ0aW1lLmMt ICAgICAgaWYgKHN0cmNtcCAob3V0LCBleHApICE9IDApCi4uL2N5Z3dpbi9jb3JldXRpbHMv Y29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRl c3RzL3Rlc3QtbnN0cmZ0aW1lLmMtICAgICAgICB7Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29y ZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRlc3Rz L3Rlc3QtbnN0cmZ0aW1lLmM6ICAgICAgICAgIHByaW50ZiAoIm5zdHJmdGltZSAlJXE6IGV4 cGVjdGVkIFwiJXNcIiwgZ290IFwiJXNcIlxuIiwgZXhwLCBvdXQpOwouLi9jeWd3aW4vY29y ZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL2du dWxpYi10ZXN0cy90ZXN0LW5zdHJmdGltZS5jLSAgICAgICAgICByZXN1bHQgPSAxOwouLi9j eWd3aW4vY29yZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRp bHMtOS4wL2dudWxpYi10ZXN0cy90ZXN0LW5zdHJmdGltZS5jLSAgICAgICAgICBicmVhazsK Li4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29y ZXV0aWxzLTkuMC9nbnVsaWItdGVzdHMvdGVzdC1uc3RyZnRpbWUuYy0gICAgICAgIH0KLi4v Y3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0 aWxzLTkuMC9nbnVsaWItdGVzdHMvdGVzdC1uc3RyZnRpbWUuYy0gICAgfQouLi9jeWd3aW4v Y29yZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4w L2dudWxpYi10ZXN0cy90ZXN0LW5zdHJmdGltZS5jLQouLi9jeWd3aW4vY29yZXV0aWxzL2Nv cmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL2dudWxpYi10ZXN0 cy90ZXN0LW5zdHJmdGltZS5jLSAgcmV0dXJuIHJlc3VsdDsKLi4vY3lnd2luL2NvcmV1dGls cy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9nbnVsaWIt dGVzdHMvdGVzdC1uc3RyZnRpbWUuYy19Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxz LTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvZ251bGliLXRlc3RzL3Rlc3Qt bnN0cmZ0aW1lLmMtCi0tCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4 Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvbGliL25zdHJmdGltZS5jOiAgICAgICAgY2Fz ZSBMXygnZScpOiBjYXNlIExfKCdmJyk6IGNhc2UgTF8oJ2cnKTogY2FzZSBMXygnaCcpOiBj YXNlIExfKCdpJyk6Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82 NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvbGliL25zdHJmdGltZS5jLSAgICAgICAgY2FzZSBM XygnaicpOiBjYXNlIExfKCdrJyk6IGNhc2UgTF8oJ2wnKTogY2FzZSBMXygnbScpOiBjYXNl IExfKCduJyk6Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9v cmlnc3JjL2NvcmV1dGlscy05LjAvbGliL25zdHJmdGltZS5jOiAgICAgICAgY2FzZSBMXygn bycpOiBjYXNlIExfKCdwJyk6IGNhc2UgTF8oJ3EnKTogY2FzZSBMXygncicpOiBjYXNlIExf KCdzJyk6Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmln c3JjL2NvcmV1dGlscy05LjAvbGliL25zdHJmdGltZS5jOiAgICAgICAgY2FzZSBMXygndCcp OiBjYXNlIExfKCd1Jyk6IGNhc2UgTF8oJ3YnKTogY2FzZSBMXygndycpOiBjYXNlIExfKCd4 Jyk6Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3Jj L2NvcmV1dGlscy05LjAvbGliL25zdHJmdGltZS5jLSAgICAgICAgY2FzZSBMXygneScpOiBj YXNlIExfKCd6Jyk6IGNhc2UgTF8oJ3snKTogY2FzZSBMXygnfCcpOiBjYXNlIExfKCd9Jyk6 Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2Nv cmV1dGlscy05LjAvbGliL25zdHJmdGltZS5jLSAgICAgICAgY2FzZSBMXygnficpOgouLi9j eWd3aW4vY29yZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRp bHMtOS4wL2xpYi9uc3RyZnRpbWUuYy0gICAgICAgICAgLyogVGhlIEMgU3RhbmRhcmQgcmVx dWlyZXMgdGhlc2UgOTggY2hhcmFjdGVycyAocGx1cyAnJScpIHRvCi4uL2N5Z3dpbi9jb3Jl dXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvbGli L25zdHJmdGltZS5jLSAgICAgICAgICAgICBiZSBpbiB0aGUgYmFzaWMgZXhlY3V0aW9uIGNo YXJhY3RlciBzZXQuICBOb25lIG9mIHRoZXNlCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0 aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvbGliL25zdHJmdGltZS5j LSAgICAgICAgICAgICBjaGFyYWN0ZXJzIGNhbiBzdGFydCBhIG11bHRpYnl0ZSBzZXF1ZW5j ZSwgc28gdGhleSBuZWVkCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4 Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvbGliL25zdHJmdGltZS5jLSAgICAgICAgICAg ICBub3QgYmUgYW5hbHl6ZWQgZnVydGhlci4gICovCi4uL2N5Z3dpbi9jb3JldXRpbHMvY29y ZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvbGliL25zdHJmdGlt ZS5jLSAgICAgICAgICBhZGQxICgqZik7Ci4uL2N5Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxz LTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGlscy05LjAvbGliL25zdHJmdGltZS5jLSAg ICAgICAgICBjb250aW51ZTsKLS0KLi4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4w LTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9saWIvbnN0cmZ0aW1lLmM6ICAgICAg ICBjYXNlIExfKCdxJyk6ICAgICAgICAgICAvKiBHTlUgZXh0ZW5zaW9uLiAgKi8KLi4vY3ln d2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxz LTkuMC9saWIvbnN0cmZ0aW1lLmMtICAgICAgICAgIERPX1NJR05FRF9OVU1CRVIgKDEsIGZh bHNlLCAoKHRwLT50bV9tb24gKiAxMSkgPj4gNSkgKyAxKTsKLi4vY3lnd2luL2NvcmV1dGls cy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9saWIvbnN0 cmZ0aW1lLmMtICAgICAgICAgIGJyZWFrOwouLi9jeWd3aW4vY29yZXV0aWxzL2NvcmV1dGls cy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3JldXRpbHMtOS4wL2xpYi9uc3RyZnRpbWUuYy0K Li4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29y ZXV0aWxzLTkuMC9saWIvbnN0cmZ0aW1lLmMtICAgICAgICBjYXNlIExfKCdSJyk6Ci4uL2N5 Z3dpbi9jb3JldXRpbHMvY29yZXV0aWxzLTkuMC0xLng4Nl82NC9vcmlnc3JjL2NvcmV1dGls cy05LjAvbGliL25zdHJmdGltZS5jLSAgICAgICAgICBzdWJmbXQgPSBMXygiJUg6JU0iKTsK Li4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRpbHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29y ZXV0aWxzLTkuMC9saWIvbnN0cmZ0aW1lLmMtICAgICAgICAgIGdvdG8gc3ViZm9ybWF0Owou Li9jeWd3aW4vY29yZXV0aWxzL2NvcmV1dGlscy05LjAtMS54ODZfNjQvb3JpZ3NyYy9jb3Jl dXRpbHMtOS4wL2xpYi9uc3RyZnRpbWUuYy0KLi4vY3lnd2luL2NvcmV1dGlscy9jb3JldXRp bHMtOS4wLTEueDg2XzY0L29yaWdzcmMvY29yZXV0aWxzLTkuMC9saWIvbnN0cmZ0aW1lLmMt ICAgICAgICBjYXNlIExfKCdyJyk6Ci0tCi4uL2dsaWJjL3RpbWUvc3RyZnRpbWVfbC5jOglj YXNlIExfKCdlJyk6IGNhc2UgTF8oJ2YnKTogY2FzZSBMXygnZycpOiBjYXNlIExfKCdoJyk6 IGNhc2UgTF8oJ2knKToKLi4vZ2xpYmMvdGltZS9zdHJmdGltZV9sLmMtCWNhc2UgTF8oJ2on KTogY2FzZSBMXygnaycpOiBjYXNlIExfKCdsJyk6IGNhc2UgTF8oJ20nKTogY2FzZSBMXygn bicpOgouLi9nbGliYy90aW1lL3N0cmZ0aW1lX2wuYzoJY2FzZSBMXygnbycpOiBjYXNlIExf KCdwJyk6IGNhc2UgTF8oJ3EnKTogY2FzZSBMXygncicpOiBjYXNlIExfKCdzJyk6Ci4uL2ds aWJjL3RpbWUvc3RyZnRpbWVfbC5jOgljYXNlIExfKCd0Jyk6IGNhc2UgTF8oJ3UnKTogY2Fz ZSBMXygndicpOiBjYXNlIExfKCd3Jyk6IGNhc2UgTF8oJ3gnKToKLi4vZ2xpYmMvdGltZS9z dHJmdGltZV9sLmMtCWNhc2UgTF8oJ3knKTogY2FzZSBMXygneicpOiBjYXNlIExfKCd7Jyk6 IGNhc2UgTF8oJ3wnKTogY2FzZSBMXygnfScpOgouLi9nbGliYy90aW1lL3N0cmZ0aW1lX2wu Yy0JY2FzZSBMXygnficpOgouLi9nbGliYy90aW1lL3N0cmZ0aW1lX2wuYy0JICAvKiBUaGUg QyBTdGFuZGFyZCByZXF1aXJlcyB0aGVzZSA5OCBjaGFyYWN0ZXJzIChwbHVzICclJykgdG8K Li4vZ2xpYmMvdGltZS9zdHJmdGltZV9sLmMtCSAgICAgYmUgaW4gdGhlIGJhc2ljIGV4ZWN1 dGlvbiBjaGFyYWN0ZXIgc2V0LiAgTm9uZSBvZiB0aGVzZQouLi9nbGliYy90aW1lL3N0cmZ0 aW1lX2wuYy0JICAgICBjaGFyYWN0ZXJzIGNhbiBzdGFydCBhIG11bHRpYnl0ZSBzZXF1ZW5j ZSwgc28gdGhleSBuZWVkCi4uL2dsaWJjL3RpbWUvc3RyZnRpbWVfbC5jLQkgICAgIG5vdCBi ZSBhbmFseXplZCBmdXJ0aGVyLiAgKi8KLi4vZ2xpYmMvdGltZS9zdHJmdGltZV9sLmMtCSAg YWRkICgxLCAqcCA9ICpmKTsKLi4vZ2xpYmMvdGltZS9zdHJmdGltZV9sLmMtCSAgY29udGlu dWU7Ci0tCi4uL2dudWxpYi9saWIvbnN0cmZ0aW1lLmM6ICAgICAgICBjYXNlIExfKCdlJyk6 IGNhc2UgTF8oJ2YnKTogY2FzZSBMXygnZycpOiBjYXNlIExfKCdoJyk6IGNhc2UgTF8oJ2kn KToKLi4vZ251bGliL2xpYi9uc3RyZnRpbWUuYy0gICAgICAgIGNhc2UgTF8oJ2onKTogY2Fz ZSBMXygnaycpOiBjYXNlIExfKCdsJyk6IGNhc2UgTF8oJ20nKTogY2FzZSBMXygnbicpOgou Li9nbnVsaWIvbGliL25zdHJmdGltZS5jOiAgICAgICAgY2FzZSBMXygnbycpOiBjYXNlIExf KCdwJyk6IGNhc2UgTF8oJ3EnKTogY2FzZSBMXygncicpOiBjYXNlIExfKCdzJyk6Ci4uL2du dWxpYi9saWIvbnN0cmZ0aW1lLmM6ICAgICAgICBjYXNlIExfKCd0Jyk6IGNhc2UgTF8oJ3Un KTogY2FzZSBMXygndicpOiBjYXNlIExfKCd3Jyk6IGNhc2UgTF8oJ3gnKToKLi4vZ251bGli L2xpYi9uc3RyZnRpbWUuYy0gICAgICAgIGNhc2UgTF8oJ3knKTogY2FzZSBMXygneicpOiBj YXNlIExfKCd7Jyk6IGNhc2UgTF8oJ3wnKTogY2FzZSBMXygnfScpOgouLi9nbnVsaWIvbGli L25zdHJmdGltZS5jLSAgICAgICAgY2FzZSBMXygnficpOgouLi9nbnVsaWIvbGliL25zdHJm dGltZS5jLSAgICAgICAgICAvKiBUaGUgQyBTdGFuZGFyZCByZXF1aXJlcyB0aGVzZSA5OCBj aGFyYWN0ZXJzIChwbHVzICclJykgdG8KLi4vZ251bGliL2xpYi9uc3RyZnRpbWUuYy0gICAg ICAgICAgICAgYmUgaW4gdGhlIGJhc2ljIGV4ZWN1dGlvbiBjaGFyYWN0ZXIgc2V0LiAgTm9u ZSBvZiB0aGVzZQouLi9nbnVsaWIvbGliL25zdHJmdGltZS5jLSAgICAgICAgICAgICBjaGFy YWN0ZXJzIGNhbiBzdGFydCBhIG11bHRpYnl0ZSBzZXF1ZW5jZSwgc28gdGhleSBuZWVkCi4u L2dudWxpYi9saWIvbnN0cmZ0aW1lLmMtICAgICAgICAgICAgIG5vdCBiZSBhbmFseXplZCBm dXJ0aGVyLiAgKi8KLi4vZ251bGliL2xpYi9uc3RyZnRpbWUuYy0gICAgICAgICAgYWRkMSAo KmYpOwouLi9nbnVsaWIvbGliL25zdHJmdGltZS5jLSAgICAgICAgICBjb250aW51ZTsKLS0K Li4vZ251bGliL2xpYi9uc3RyZnRpbWUuYzogICAgICAgIGNhc2UgTF8oJ3EnKTogICAgICAg ICAgIC8qIEdOVSBleHRlbnNpb24uICAqLwouLi9nbnVsaWIvbGliL25zdHJmdGltZS5jLSAg ICAgICAgICBET19TSUdORURfTlVNQkVSICgxLCBmYWxzZSwgKCh0cC0+dG1fbW9uICogMTEp ID4+IDUpICsgMSk7Ci4uL2dudWxpYi9saWIvbnN0cmZ0aW1lLmMtCi4uL2dudWxpYi9saWIv bnN0cmZ0aW1lLmMtICAgICAgICBjYXNlIExfKCdSJyk6Ci4uL2dudWxpYi9saWIvbnN0cmZ0 aW1lLmMtICAgICAgICAgIHN1YmZtdCA9IExfKCIlSDolTSIpOwouLi9nbnVsaWIvbGliL25z dHJmdGltZS5jLSAgICAgICAgICBnb3RvIHN1YmZvcm1hdDsKLi4vZ251bGliL2xpYi9uc3Ry ZnRpbWUuYy0KLi4vZ251bGliL2xpYi9uc3RyZnRpbWUuYy0gICAgICAgIGNhc2UgTF8oJ3In KToKLi4vZ251bGliL2xpYi9uc3RyZnRpbWUuYy0jaWZkZWYgX05MX0NVUlJFTlQKLS0KLi4v Z251bGliL2xpYi9zdHJwdGltZS5jOiAgICAgICAgY2FzZSAncSc6Ci4uL2dudWxpYi9saWIv c3RycHRpbWUuYy0gICAgICAgICAgLyogTWF0Y2ggcXVhcnRlciBvZiB5ZWFyLiAgR05VIGV4 dGVuc2lvbi4gICovCi4uL2dudWxpYi9saWIvc3RycHRpbWUuYy0gICAgICAgICAgZ2V0X251 bWJlciAoMSwgNCwgMSk7Ci4uL2dudWxpYi9saWIvc3RycHRpbWUuYy0gICAgICAgICAgdG0t PnRtX21vbiA9ICh2YWwgLSAxKSAqIDM7Ci4uL2dudWxpYi9saWIvc3RycHRpbWUuYy0gICAg ICAgICAgdG0tPnRtX21kYXkgPSAxOwouLi9nbnVsaWIvbGliL3N0cnB0aW1lLmMtICAgICAg ICAgIGhhdmVfbW9uID0gMTsKLi4vZ251bGliL2xpYi9zdHJwdGltZS5jLSAgICAgICAgICBo YXZlX21kYXkgPSAxOwouLi9nbnVsaWIvbGliL3N0cnB0aW1lLmMtICAgICAgICAgIHdhbnRf eGRheSA9IDE7Ci4uL2dudWxpYi9saWIvc3RycHRpbWUuYy0gICAgICAgICAgYnJlYWs7Ci0t Ci4uL2dudWxpYi9saWIvc3RycHRpbWUuYzogICAgICAgICAgICBjYXNlICdxJzoKLi4vZ251 bGliL2xpYi9zdHJwdGltZS5jLSAgICAgICAgICAgICAgLyogTWF0Y2ggcXVhcnRlciB1c2lu ZyBhbHRlcm5hdGUgbnVtZXJpYyBzeW1ib2xzLiAgKi8KLi4vZ251bGliL2xpYi9zdHJwdGlt ZS5jLSAgICAgICAgICAgICAgZ2V0X2FsdF9udW1iZXIgKDEsIDQsIDEpOwouLi9nbnVsaWIv bGliL3N0cnB0aW1lLmMtICAgICAgICAgICAgICB0bS0+dG1fbW9uID0gKHZhbCAtIDEpICog MzsKLi4vZ251bGliL2xpYi9zdHJwdGltZS5jLSAgICAgICAgICAgICAgdG0tPnRtX21kYXkg PSAxOwouLi9nbnVsaWIvbGliL3N0cnB0aW1lLmMtICAgICAgICAgICAgICBoYXZlX21vbiA9 IDE7Ci4uL2dudWxpYi9saWIvc3RycHRpbWUuYy0gICAgICAgICAgICAgIGhhdmVfbWRheSA9 IDE7Ci4uL2dudWxpYi9saWIvc3RycHRpbWUuYy0gICAgICAgICAgICAgIHdhbnRfeGRheSA9 IDE7Ci4uL2dudWxpYi9saWIvc3RycHRpbWUuYy0gICAgICAgICAgICAgIGJyZWFrOwo= --------------VHdpUFQ8qSJoPD5I0Stgu0no--