From nobody Tue Mar 22 16:40:50 2022 X-Original-To: dev-commits-doc-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 32CAF1A3608F for ; Tue, 22 Mar 2022 16:40:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KNHKv0x9Rz3CFF; Tue, 22 Mar 2022 16:40:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647967251; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ySSjIzQcMXZlgwywj34eGiDAVMW/8bGus0tHZyOg2RE=; b=gV8YsLPTxOwWFWR2NjMnzMPdK+YpvE3Os+oaMb/dwgSS70tVJD4RWuEoEw/zGed6+np8Bd 4P+/vbgFXXcm543xMkhwUoYmuv3f2IIqI3BPZaIte7ygN8OwwVpFhnh0oEeeU4fMP9hNpw RyRJJEv1+eDgu71i57g3YouVlMqSc1snJDxe+fFwdgaZaai+LS9B1Wz/e3G/MLbcZrmTXY we1O56vUEyjqdgXQkz851FTBev79beY9ln7MoIZNPTfKqeh1lS+WEffASEoqJyXf2JffVX fC/9fMX28/1FlG4TczVtHo8icgetMIzGcBu2KwgdldMdd1Vyg7pYZGRrR3dGfA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 010DC1296B; Tue, 22 Mar 2022 16:40:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 22MGeoMv020863; Tue, 22 Mar 2022 16:40:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 22MGeoBw020862; Tue, 22 Mar 2022 16:40:50 GMT (envelope-from git) Date: Tue, 22 Mar 2022 16:40:50 GMT Message-Id: <202203221640.22MGeoBw020862@gitrepo.freebsd.org> To: doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org From: Gordon Tetlow Subject: git: 001229bfed - main - Add EN-22:14.tzdata. List-Id: Commit messages for all branches of the doc repository List-Archive: https://lists.freebsd.org/archives/dev-commits-doc-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-doc-all@freebsd.org X-BeenThere: dev-commits-doc-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gordon X-Git-Repository: doc X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 001229bfed6977ecab43ef343474813654c89aca Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647967251; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ySSjIzQcMXZlgwywj34eGiDAVMW/8bGus0tHZyOg2RE=; b=jGYUCrj03ptI8DWNKMRGGzS0lccq/IAB0SKlbxMuTC9EOXAmPeK94NsIiNC4cctW4UsgAQ tefEh1GfzN9qEqpgNCzrL1u3geqazJSxKGc82H8WJ1Bhm1D3jJ3JxThZ79IDKjBp0u3kxu kpQaHMzMe+68+Iw/xg5a1OXBKNuKLADD5m/jFO0CHq0yYwozW18UBgMJqhk6XLJRfoaGQf SqnhBGkr7sc9Nhw97O1GP6Zq0zxxSRLLQ36oS6FI0E9WszFFirw8MyS/g0kn6TaFdMeNLw wZUOdF9tQeMzXrCJNdfjBBNPiRvaNETwy7AU4WDgaozK75UHbS+uT1P4OZFCIQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1647967251; a=rsa-sha256; cv=none; b=FNGjt1YdrOFRbZQ4I8TNyXe1DOeHL/XzT1j/TVb5xW4GyzaGwLeLpdcMOjujbpOjxbFbqg L3A6lCSomnHYkoCgWvUWGn8PxIX5qTpa6a8VK49FrcgmG83ok7Xp7Kjo0jy2E8jMpu0qPY ngz7XV5kfQ75pv3vM+wBfWD1PBxFttlD0/uTVOEVWeXKmzNFTiPIBs7TvF7vZ/SRw693/l JEZ2Zu//DLiSPAtIY7iZUgcF0hd8wziHvipp6u3e4cmJDuZugiHOTNAiZE+FqFpztbCfYH bt3Bs0Kh3MOxzGkbW349R7E6PkQTgRDZRH0GQlNzjM22ZTZegz7Ft+KLpblrCQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by gordon (src committer): URL: https://cgit.FreeBSD.org/doc/commit/?id=001229bfed6977ecab43ef343474813654c89aca commit 001229bfed6977ecab43ef343474813654c89aca Author: Gordon Tetlow AuthorDate: 2022-03-22 16:40:31 +0000 Commit: Gordon Tetlow CommitDate: 2022-03-22 16:40:31 +0000 Add EN-22:14.tzdata. Approved by: so --- website/data/security/errata.toml | 4 + .../advisories/FreeBSD-EN-22:14.tzdata.asc | 176 ++ .../security/patches/EN-22:14/tzdata-2022a.patch | 3142 ++++++++++++++++++++ .../patches/EN-22:14/tzdata-2022a.patch.asc | 16 + 4 files changed, 3338 insertions(+) diff --git a/website/data/security/errata.toml b/website/data/security/errata.toml index d409a0395c..069d06d5ea 100644 --- a/website/data/security/errata.toml +++ b/website/data/security/errata.toml @@ -1,6 +1,10 @@ # Sort errata notices by year, month and day # $FreeBSD$ +[[notices]] +name = "FreeBSD-EN-22:14.tzdata" +date = "2022-03-22" + [[notices]] name = "FreeBSD-EN-22:13.zfs" date = "2022-03-21" diff --git a/website/static/security/advisories/FreeBSD-EN-22:14.tzdata.asc b/website/static/security/advisories/FreeBSD-EN-22:14.tzdata.asc new file mode 100644 index 0000000000..3bbe74b91f --- /dev/null +++ b/website/static/security/advisories/FreeBSD-EN-22:14.tzdata.asc @@ -0,0 +1,176 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-EN-22:14.tzdata Errata Notice + The FreeBSD Project + +Topic: Timezone database information update + +Category: contrib +Module: zoneinfo +Announced: 2022-03-22 +Affects: All supported versions of FreeBSD. +Corrected: 2022-03-21 15:26:58 UTC (stable/13, 13.1-STABLE) + 2022-03-22 15:54:06 UTC (releng/13.1, 13.1-BETA2-p1) + 2022-03-22 15:54:07 UTC (releng/13.0, 13.0-RELEASE-p10) + 2022-03-21 15:29:26 UTC (stable/12, 12.3-STABLE) + 2022-03-22 15:56:37 UTC (releng/12.3, 12.3-RELEASE-p4) + 2022-03-22 15:57:12 UTC (releng/12.2, 12.2-RELEASE-p15) + +For general information regarding FreeBSD Errata Notices and Security +Advisories, including descriptions of the fields above, security +branches, and the following sections, please visit +. + +I. Background + +The IANA Time Zone Database (often called tz or zoneinfo) contains code and +data that represent the history of local time for many representative +locations around the globe. It is updated periodically to reflect changes +made by political bodies to time zone boundaries, UTC offsets, and +daylight-saving rules. + +FreeBSD releases install the IANA Time Zone Database in /usr/share/zoneinfo. +The tzsetup(8) utility allows the user to specify the default local time +zone. Based on the selected time zone, tzsetup(8) copies one of the files +from /usr/share/zoneinfo to /etc/localtime. A time zone may also be selected +for an individual process by setting its TZ environment variable to a desired +time zone name. + +II. Problem Description + +Several changes to future and past timestamps have been recorded in the IANA +Time Zone Database after previous FreeBSD releases were released. This +affects many users in different parts of the world. Because of these +changes, the data in the zoneinfo files need to be updated. If the local +timezone on the running system is affected, tzsetup(8) needs to be run to +update /etc/localtime. + +III. Impact + +An incorrect time will be displayed on a system configured to use one of the +affected time zones if the /usr/share/zoneinfo and /etc/localtime files are +not updated, and all applications on the system that rely on the system time, +such as cron(8) and syslog(8), will be affected. + +IV. Workaround + +The system administrator can install an updated version of the IANA Time Zone +Database from the misc/zoneinfo port and run tzsetup(8). + +Applications that store and display times in Coordinated Universal Time (UTC) +are not affected. + +V. Solution + +Upgrade your system to a supported FreeBSD stable or release / security +branch (releng) dated after the correction date. + +Please note that some third party software, for instance PHP, Ruby, Java, +Perl and Python, may be using different zoneinfo data sources, in such cases +this software must be updated separately. Software packages that are +installed via binary packages can be upgraded by executing 'pkg upgrade'. + +Following the instructions in this Errata Notice will only update the IANA +Time Zone Database installed in /usr/share/zoneinfo. + +Perform one of the following: + +1) To update your system via a binary patch: + +Systems running a RELEASE version of FreeBSD on the amd64, i386, or +(on FreeBSD 13 and later) arm64 platforms can be updated via the +freebsd-update(8) utility: + +# freebsd-update fetch +# freebsd-update install + +Restart all the affected applications and daemons, or reboot the system. + +2) To update your system via a source code patch: + +The following patches have been verified to apply to the applicable +FreeBSD release branches. + +a) Download the relevant patch from the location below, and verify the +detached PGP signature using your PGP utility. + +# fetch https://security.FreeBSD.org/patches/EN-22:14/tzdata-2022a.patch +# fetch https://security.FreeBSD.org/patches/EN-22:14/tzdata-2022a.patch.asc +# gpg --verify tzdata-2022a.patch.asc + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile the operating system using buildworld and installworld as +described in . + +Restart all the affected applications and daemons, or reboot the system. + +VI. Correction details + +This issue is corrected by the corresponding Git commit hash or Subversion +revision number in the following stable and release branches: + +Branch/path Hash Revision +- ------------------------------------------------------------------------- +stable/13/ 5dbd160076c0 stable/13-n250054 +releng/13.1/ b7e7657b02f2 releng/13.1-n250005 +releng/13.0/ 42f2f9f09cf1 releng/13.0-n244790 +stable/12/ r371759 +releng/12.3/ r371763 +releng/12.2/ r371764 +- ------------------------------------------------------------------------- + +For FreeBSD 13 and later: + +Run the following command to see which files were modified by a +particular commit: + +# git show --stat + +Or visit the following URL, replacing NNNNNN with the hash: + + + +To determine the commit count in a working tree (for comparison against +nNNNNNN in the table above), run: + +# git rev-list --count --first-parent HEAD + +For FreeBSD 12 and earlier: + +Run the following command to see which files were modified by a particular +revision, replacing NNNNNN with the revision number: + +# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base + +Or visit the following URL, replacing NNNNNN with the revision number: + + + +VII. References + + + +The latest revision of this advisory is available at + +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCgAdFiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAmI5+6AACgkQ05eS9J6n +5cIwzhAAg91JwdZdUTzBofSoem2T4JzpdHQOdC+I6J8oH72PgAkyZo17FWVI9u/w +t34euMJE+dPA48V3hO12fSXO9lgvxWJWTZF/tTiAibvdL9LqxLrGmWvZle7Bx+ne +rdEXH+KmiWZhPB6cN9t7ZU35zM5UGbTc332xI7GnyeYS3tAnGnvKNYRwuiw1SBdc +kpcOgpqg5F6jadzycZMwd/ovWY8+gRlj7JXhF+bbmK7GuH504uIzABZAGpoaiw2o +56YqK9qyW42nxc16QlxgSLIzVhl9XHBuQyHXIeLe/BPcIdqLCw73siumnKCo0ccJ +AWCxCUjdb3fPuM5J+CwcmVJO1Qr2H+0KE+ntNqsyZg1iqDZkKcyW366bDIEU7qw8 +Db4N7iaMkyG/uOjQHgpJX6YO8HjX1+2Bw2KRUF8sueYsVNHTsXs+8yp8093CMOY8 +gvYFKACTziNiEkDN9PFmTTC+r7KzHXlFU9DK+C3nP0hZwd7jN1g5n6uJHfBX0gMx +LN3VdKiu/dxukYJF1srSflq24G8sl0XxMCJ0LFgXSzofP45iG9qSJjvWwRAcxQ3k +/FYwzY+sET+KcjeN3+F1PU/jAf6piWxjr+3FFvQWIOgGb3cgmjM/nlu0x/er7F1W +3e1iO8TB1Y6Gf7qYuvdMQmsn5jjCLpOShtYJrwYNLdSVa9K5Vx8= +=Voiz +-----END PGP SIGNATURE----- diff --git a/website/static/security/patches/EN-22:14/tzdata-2022a.patch b/website/static/security/patches/EN-22:14/tzdata-2022a.patch new file mode 100644 index 0000000000..b7a6f868e7 --- /dev/null +++ b/website/static/security/patches/EN-22:14/tzdata-2022a.patch @@ -0,0 +1,3142 @@ +--- contrib/tzdata/CONTRIBUTING.orig ++++ contrib/tzdata/CONTRIBUTING +@@ -1,50 +1,58 @@ +-Contributing to the tz code and data ++# Contributing to the tz code and data ++ ++Please do not create issues or pull requests on GitHub, as the ++proper procedure for proposing and distributing patches is via ++email as described below. + + The time zone database is by no means authoritative: governments + change timekeeping rules erratically and sometimes with little + warning, the data entries do not cover all of civil time before + 1970, and undoubtedly errors remain in the code and data. Feel + free to fill gaps or fix mistakes, and please email improvements +-to tz@iana.org for use in the future. In your email, please give ++to for use in the future. In your email, please give + reliable sources that reviewers can check. + +------ +- +-Developers can contribute technical changes to the source code and +-data as follows. ++## Contributing technical changes + + To email small changes, please run a POSIX shell command like + 'diff -u old/europe new/europe >myfix.patch', and attach +-myfix.patch to the email. ++'myfix.patch' to the email. + + For more-elaborate or possibly-controversial changes, + such as renaming, adding or removing zones, please read +- or the file +-theory.html. It is also good to browse the mailing list archives ++"Theory and pragmatics of the tz code and data" ++. ++It is also good to browse the mailing list archives + for examples of patches that tend + to work well. Additions to data should contain commentary citing +-reliable sources as justification. Citations should use https: URLs ++reliable sources as justification. Citations should use "https:" URLs + if available. + +-Please submit changes against either the latest release in +- or the master branch of the development +-repository. The latter is preferred. If you use Git the following +-workflow may be helpful: ++For changes that fix sensitive security-related bugs, please see the ++distribution's 'SECURITY' file. ++ ++Please submit changes against either the latest release ++ or the main branch of the development ++repository. The latter is preferred. ++ ++## Sample Git workflow for developing contributions ++ ++If you use Git the following workflow may be helpful: + + * Copy the development repository. + +- git clone https://github.com/eggert/tz.git +- cd tz ++ git clone https://github.com/eggert/tz.git ++ cd tz + +- * Get current with the master branch. ++ * Get current with the main branch. + +- git checkout master +- git pull ++ git checkout main ++ git pull + + * Switch to a new branch for the changes. Choose a different + branch name for each change set. + +- git checkout -b mybranch ++ git checkout -b mybranch + + * Sleuth by using 'git blame'. For example, when fixing data for + Africa/Sao_Tome, if the command 'git blame africa' outputs a line +@@ -57,36 +65,33 @@ + + * Debug the changes, e.g.: + +- make check +- make install +- ./zdump -v America/Los_Angeles ++ make check ++ make install ++ ./zdump -v America/Los_Angeles + + * For each separable change, commit it in the new branch, e.g.: + +- git add northamerica +- git commit ++ git add northamerica ++ git commit + + See recent 'git log' output for the commit-message style. + +- * Create patch files 0001-*, 0002-*, ... ++ * Create patch files 0001-..., 0002-..., ... + +- git format-patch master ++ git format-patch main + +- * After reviewing the patch files, send the patches to tz@iana.org ++ * After reviewing the patch files, send the patches to + for others to review. + +- git send-email master ++ git send-email main + + For an archived example of such an email, see ++ "[PROPOSED] Fix off-by-1 error for Jamaica and T&C before 1913" + . + +- * Start anew by getting current with the master branch again ++ * Start anew by getting current with the main branch again + (the second step above). + +-Please do not create issues or pull requests on GitHub, as the +-proper procedure for proposing and distributing patches is via +-email as illustrated above. +- + ----- + + This file is in the public domain. +--- contrib/tzdata/Makefile.orig ++++ contrib/tzdata/Makefile +@@ -45,9 +45,9 @@ + # + # Any other value for POSIXRULES is obsolete and should not be relied on, as: + # * It does not work correctly in popular implementations such as GNU/Linux. +-# * It does not work in the tzdb implementation for timestamps after 2037. +-# * It is incompatible with 'zic -b slim' if POSIXRULES specifies transitions +-# at standard time or UT rather than at local time. ++# * It does not work even in tzcode, except for historical timestamps ++# that precede the last explicit transition in the POSIXRULES file. ++# Hence it typically does not work for current and future timestamps. + # In short, software should avoid ruleless settings like TZ='EET-2EEST' + # and so should not depend on the value of POSIXRULES. + # +@@ -122,8 +122,8 @@ + + # Types to try, as an alternative to time_t. + TIME_T_ALTERNATIVES = $(TIME_T_ALTERNATIVES_HEAD) $(TIME_T_ALTERNATIVES_TAIL) +-TIME_T_ALTERNATIVES_HEAD = int64_t +-TIME_T_ALTERNATIVES_TAIL = int32_t uint32_t uint64_t ++TIME_T_ALTERNATIVES_HEAD = int_least64_t ++TIME_T_ALTERNATIVES_TAIL = int_least32_t uint_least32_t uint_least64_t + + # What kind of TZif data files to generate. (TZif is the binary time + # zone data format that zic generates; see Internet RFC 8536.) +@@ -152,8 +152,10 @@ + # The EXPIRES_LINE value matters only if REDO's value contains "right". + # If you change EXPIRES_LINE, remove the leapseconds file before running "make". + # zic's support for the Expires line was introduced in tzdb 2020a, +-# and EXPIRES_LINE defaults to 0 for now so that the leapseconds file +-# can be given to older zic implementations. ++# and was modified in tzdb 2021b to generate version 4 TZif files. ++# EXPIRES_LINE defaults to 0 for now so that the leapseconds file ++# can be given to pre-2020a zic implementations and so that TZif files ++# built by newer zic implementations can be read by pre-2021b libraries. + EXPIRES_LINE= 0 + + # To install data in text form that has all the information of the TZif data, +@@ -210,6 +212,7 @@ + # -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function + # -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz + # localtime_rz can make zdump significantly faster, but is nonstandard. ++# -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure. + # -DHAVE_POSIX_DECLS=0 if your system's include files do not declare + # functions like 'link' or variables like 'tzname' required by POSIX + # -DHAVE_SNPRINTF=0 if your system lacks the snprintf function +@@ -220,7 +223,6 @@ + # -DHAVE_STRTOLL=0 if your system lacks the strtoll function + # -DHAVE_SYMLINK=0 if your system lacks the symlink function + # -DHAVE_SYS_STAT_H=0 if your compiler lacks a +-# -DHAVE_SYS_WAIT_H=0 if your compiler lacks a + # -DHAVE_TZSET=0 if your system lacks a tzset function + # -DHAVE_UNISTD_H=0 if your compiler lacks a + # -Dlocale_t=XXX if your system uses XXX instead of locale_t +@@ -257,22 +259,26 @@ + GCC_INSTRUMENT = \ + -fsanitize=undefined -fsanitize-address-use-after-scope \ + -fsanitize-undefined-trap-on-error -fstack-protector ++# Omit -fanalyzer from GCC_DEBUG_FLAGS, as it makes GCC too slow. + GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \ + $(GCC_INSTRUMENT) \ + -Wall -Wextra \ + -Walloc-size-larger-than=100000 -Warray-bounds=2 \ + -Wbad-function-cast -Wcast-align=strict -Wdate-time \ + -Wdeclaration-after-statement -Wdouble-promotion \ ++ -Wduplicated-branches -Wduplicated-cond \ + -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \ +- -Winit-self -Wjump-misses-init -Wlogical-op \ ++ -Winit-self -Wlogical-op \ + -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ ++ -Wnull-dereference \ + -Wold-style-definition -Woverlength-strings -Wpointer-arith \ +- -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=4 \ ++ -Wshadow -Wshift-overflow=2 -Wstrict-overflow \ ++ -Wstrict-prototypes -Wstringop-overflow=4 \ + -Wstringop-truncation -Wsuggest-attribute=cold \ + -Wsuggest-attribute=const -Wsuggest-attribute=format \ + -Wsuggest-attribute=malloc \ + -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \ +- -Wtrampolines -Wundef -Wuninitialized -Wunused \ ++ -Wtrampolines -Wundef -Wuninitialized -Wunused-macros \ + -Wvariadic-macros -Wvla -Wwrite-strings \ + -Wno-address -Wno-format-nonliteral -Wno-sign-compare \ + -Wno-type-limits -Wno-unused-parameter +@@ -393,9 +399,10 @@ + ZIC_INSTALL= $(ZIC) -d '$(DESTDIR)$(TZDIR)' $(LEAPSECONDS) + + # The name of a Posix-compliant 'awk' on your system. +-# Older 'mawk' versions, such as the 'mawk' in Ubuntu 16.04, might dump core; +-# on Ubuntu you can work around this with +-# AWK= gawk ++# mawk 1.3.3 and Solaris 10 /usr/bin/awk do not work. ++# Also, it is better (though not essential) if 'awk' supports UTF-8, ++# and unfortunately mawk and busybox awk do not support UTF-8. ++# Try AWK=gawk or AWK=nawk if your awk has the abovementioned problems. + AWK= awk + + # The full path name of a Posix-compliant shell, preferably one that supports +@@ -460,7 +467,9 @@ + + # Flags to give 'tar' when making a distribution. + # Try to use flags appropriate for GNU tar. +-GNUTARFLAGS= --numeric-owner --owner=0 --group=0 --mode=go+u,go-w --sort=name ++GNUTARFLAGS= --format=pax --pax-option='delete=atime,delete=ctime' \ ++ --numeric-owner --owner=0 --group=0 \ ++ --mode=go+u,go-w --sort=name + TARFLAGS= `if tar $(GNUTARFLAGS) --version >/dev/null 2>&1; \ + then echo $(GNUTARFLAGS); \ + else :; \ +@@ -498,7 +507,7 @@ + tzfile.5.txt tzselect.8.txt zic.8.txt zdump.8.txt \ + date.1.txt + COMMON= calendars CONTRIBUTING LICENSE Makefile \ +- NEWS README theory.html version ++ NEWS README SECURITY theory.html version + WEB_PAGES= tz-art.html tz-how-to.html tz-link.html + CHECK_WEB_PAGES=check_theory.html check_tz-art.html \ + check_tz-how-to.html check_tz-link.html +@@ -523,7 +532,7 @@ + TZS_CUTOFF_FLAG= -c $(TZS_YEAR) + TZS= to$(TZS_YEAR).tzs + TZS_NEW= to$(TZS_YEAR)new.tzs +-TZS_DEPS= $(PRIMARY_YDATA) asctime.c localtime.c \ ++TZS_DEPS= $(YDATA) asctime.c localtime.c \ + private.h tzfile.h zdump.c zic.c + # EIGHT_YARDS is just a yard short of the whole ENCHILADA. + EIGHT_YARDS = $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) tzdata.zi +@@ -533,7 +542,7 @@ + # This list is not the same as the output of 'git ls-files', since + # .gitignore is not distributed. + VERSION_DEPS= \ +- calendars CONTRIBUTING LICENSE Makefile NEWS README \ ++ calendars CONTRIBUTING LICENSE Makefile NEWS README SECURITY \ + africa antarctica asctime.c asia australasia \ + backward backzone \ + checklinks.awk checktab.awk \ +@@ -736,7 +745,7 @@ + tzselect: tzselect.ksh version + VERSION=`cat version` && sed \ + -e 's|#!/bin/bash|#!$(KSHELL)|g' \ +- -e 's|AWK=[^}]*|AWK=$(AWK)|g' \ ++ -e 's|AWK=[^}]*|AWK='\''$(AWK)'\''|g' \ + -e 's|\(PKGVERSION\)=.*|\1='\''($(PACKAGE)) '\''|' \ + -e 's|\(REPORT_BUGS_TO\)=.*|\1=$(BUGEMAIL)|' \ + -e 's|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \ +@@ -757,7 +766,7 @@ + sharp='#' && \ + ! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \ + $(MISC) $(SOURCES) $(WEB_PAGES) \ +- CONTRIBUTING LICENSE README \ ++ CONTRIBUTING LICENSE README SECURITY \ + version tzdata.zi && \ + ! grep -Env $(SAFE_LINE)'|^UNUSUAL_OK_'$(OK_CHAR)'*$$' \ + Makefile && \ +@@ -796,9 +805,10 @@ + $(AWK) -f checklinks.awk tzdata.zi + touch $@ + +-check_tables: checktab.awk $(PRIMARY_YDATA) $(ZONETABLES) ++check_tables: checktab.awk $(YDATA) backward $(ZONETABLES) + for tab in $(ZONETABLES); do \ +- $(AWK) -f checktab.awk -v zone_table=$$tab $(PRIMARY_YDATA) \ ++ test "$$tab" = zone.tab && links='$(BACKWARD)' || links=''; \ ++ $(AWK) -f checktab.awk -v zone_table=$$tab $(YDATA) $$links \ + || exit; \ + done + touch $@ +@@ -952,6 +962,12 @@ + public.dir/zic -v -d public.dir/zoneinfo $$i 2>&1 || exit; \ + done + public.dir/zic -v -d public.dir/zoneinfo-all $(TDATA_TO_CHECK) ++ : ++ : Also check 'backzone' syntax. ++ rm public.dir/main.zi ++ cd public.dir && $(MAKE) PACKRATDATA=backzone main.zi ++ public.dir/zic -d public.dir/zoneinfo main.zi ++ : + rm -fr public.dir + touch $@ + +@@ -964,7 +980,7 @@ + mkdir $@.dir + ln $(VERSION_DEPS) $@.dir + case $@ in \ +- int32_t) range=-2147483648,2147483648;; \ ++ int*32_t) range=-2147483648,2147483648;; \ + u*) range=0,4294967296;; \ + *) range=-4294967296,4294967296;; \ + esac && \ +--- contrib/tzdata/NEWS.orig ++++ contrib/tzdata/NEWS +@@ -1,5 +1,351 @@ + News for the tz database + ++Release 2022a - 2022-03-15 23:02:01 -0700 ++ ++ Briefly: ++ Palestine will spring forward on 2022-03-27, not -03-26. ++ zdump -v now outputs better failure indications. ++ Bug fixes for code that reads corrupted TZif data. ++ ++ Changes to future timestamps ++ ++ Palestine will spring forward on 2022-03-27, not 2022-03-26. ++ (Thanks to Heba Hamad.) Predict future transitions for first ++ Sunday >= March 25. Additionally, predict fallbacks to be the first ++ Friday on or after October 23, not October's last Friday, to be more ++ consistent with recent practice. The first differing fallback ++ prediction is on 2025-10-24, not 2025-10-31. ++ ++ Changes to past timestamps ++ ++ From 1992 through spring 1996, Ukraine's DST transitions were at ++ 02:00 standard time, not at 01:00 UTC. (Thanks to Alois Treindl.) ++ ++ Chile's Santiago Mean Time and its LMT precursor have been adjusted ++ eastward by 1 second to align with past and present law. ++ ++ Changes to commentary ++ ++ Add several references for Chile's 1946/1947 transitions, some of ++ which only affected portions of the country. ++ ++ Changes to code ++ ++ Fix bug when mktime gets confused by truncated TZif files with ++ unspecified local time. (Problem reported by Almaz Mingaleev.) ++ ++ Fix bug when 32-bit time_t code reads malformed 64-bit TZif data. ++ (Problem reported by Christos Zoulas.) ++ ++ When reading a version 2 or later TZif file, the TZif reader now ++ validates the version 1 header and data block only enough to skip ++ over them, as recommended by RFC 8536 section 4. Also, the TZif ++ reader no longer mistakenly attempts to parse a version 1 TZIf ++ file header as a TZ string. ++ ++ zdump -v now outputs "(localtime failed)" and "(gmtime failed)" ++ when local time and UT cannot be determined for a timestamp. ++ ++ Changes to build procedure ++ ++ Distribution tarballs now use standard POSIX.1-1988 ustar format ++ instead of GNU format. Although the formats are almost identical ++ for these tarballs, ustar headers' magic fields contain "ustar" ++ instead of "ustar ", and their version fields contain "00" instead ++ of " ". The two formats are planned to diverge more significantly ++ for tzdb releases after 2242-03-16 12:56:31 UTC, when the ustar ++ format becomes obsolete and the tarballs switch to pax format, an ++ extension of ustar. For details about these formats, please see ++ "pax - portable archive interchange", IEEE Std 1003.1-2017, ++ . ++ ++ ++Release 2021e - 2021-10-21 18:41:00 -0700 ++ ++ Changes to future timestamps ++ ++ Palestine will fall back 10-29 (not 10-30) at 01:00. ++ (Thanks to P Chan and Heba Hemad.) ++ ++ ++Release 2021d - 2021-10-15 13:48:18 -0700 ++ ++ Briefly: ++ Fiji suspends DST for the 2021/2022 season. ++ 'zic -r' marks unspecified timestamps with "-00". ++ ++ Changes to future timestamps ++ ++ Fiji will suspend observance of DST for the 2021/2022 season. ++ Assume for now that it will return next year. (Thanks to Jashneel ++ Kumar and P Chan.) ++ ++ Changes to code ++ ++ 'zic -r' now uses "-00" time zone abbreviations for intervals ++ with UT offsets that are unspecified due to -r truncation. ++ This implements a change in draft Internet RFC 8536bis. ++ ++ ++Release 2021c - 2021-10-01 14:21:49 -0700 ++ ++ Briefly: ++ Revert most 2021b changes to 'backward'. ++ Fix 'zic -b fat' bug in pre-1970 32-bit data. ++ Fix two Link line typos. ++ Distribute SECURITY file. ++ ++ This release is intended as a bugfix release, to fix compatibility ++ problems and typos reported since 2021b was released. ++ ++ Changes to Link directives ++ ++ Revert almost all of 2021b's changes to the 'backward' file, ++ by moving Link directives back to where they were in 2021a. ++ Although 'zic' doesn't care which source file contains a Link ++ directive, some downstream uses ran into trouble with the move. ++ (Problem reported by Stephen Colebourne for Joda-Time.) ++ ++ Fix typo that linked Atlantic/Jan_Mayen to the wrong location ++ (problem reported by Chris Walton). ++ ++ Fix 'backzone' typo that linked America/Virgin to the wrong ++ location (problem reported by Michael Deckers). ++ ++ Changes to code ++ ++ Fix a bug in 'zic -b fat' that caused old timestamps to be ++ mishandled in 32-bit-only readers (problem reported by Daniel ++ Fischer). ++ ++ Changes to documentation ++ ++ Distribute the SECURITY file (problem reported by Andreas Radke). ++ ++ ++Release 2021b - 2021-09-24 16:23:00 -0700 ++ ++ Briefly: ++ Jordan now starts DST on February's last Thursday. ++ Samoa no longer observes DST. ++ Merge more location-based Zones whose timestamps agree since 1970. ++ Move some backward-compatibility links to 'backward'. ++ Rename Pacific/Enderbury to Pacific/Kanton. ++ Correct many pre-1993 transitions in Malawi, Portugal, etc. ++ zic now creates each output file or link atomically. ++ zic -L no longer omits the POSIX TZ string in its output. ++ zic fixes for truncation and leap second table expiration. ++ zic now follows POSIX for TZ strings using all-year DST. ++ Fix some localtime crashes and bugs in obscure cases. ++ zdump -v now outputs more-useful boundary cases. ++ tzfile.5 better matches a draft successor to RFC 8536. ++ A new file SECURITY. ++ ++ This release is prompted by recent announcements by Jordan and Samoa. ++ It incorporates many other changes that had accumulated since 2021a. ++ However, it omits most proposed changes that merged all Zones ++ agreeing since 1970, as concerns were raised about doing too many of ++ these changes at once. It does keeps some of these changes in the ++ interest of making tzdb more equitable one step at a time; see ++ "Merge more location-based Zones" below. ++ ++ Changes to future timestamps ++ ++ Jordan now starts DST on February's last Thursday. ++ (Thanks to Steffen Thorsen.) ++ ++ Samoa no longer observes DST. (Thanks to Geoffrey D. Bennett.) ++ ++ Changes to zone name ++ ++ Rename Pacific/Enderbury to Pacific/Kanton. When we added ++ Enderbury in 1993, we did not know that it is uninhabited and that ++ Kanton (population two dozen) is the only inhabited location in ++ that timezone. The old name is now a backward-compatility link. ++ ++ Changes to past timestamps ++ ++ Correct many pre-1993 transitions, fixing entries originally ++ derived from Shanks, Whitman, and Mundell. The fixes include: ++ - Barbados: standard time was introduced in 1911, not 1932; and ++ DST was observed in 1942-1944 ++ - Cook Islands: In 1899 they switched from east to west of GMT, ++ celebrating Christmas for two days. They (and Niue) switched ++ to standard time in 1952, not 1901. ++ - Guyana: corrected LMT for Georgetown; the introduction of ++ standard time in 1911, not 1915; and corrections to 1975 and ++ 1992 transitions ++ - Kanton: uninhabited before 1937-08-31 ++ - Niue: only observed -11:20 from 1952 through 1964, then went to ++ -11 instead of -11:30 ++ - Portugal: DST was observed in 1950 ++ - Tonga: corrected LMT; the introduction of standard time in 1945, ++ not 1901; and corrections to the transition from +12:20 to +13 ++ in 1961, not 1941 ++ Additional fixes to entries in the 'backzone' file include: ++ - Enderbury: inhabited only 1860/1885 and 1938-03-06/1942-02-09 ++ - The Gambia: 1933 and 1942 transitions ++ - Malawi: several 1911 through 1925 transitions ++ - Sierra Leone: several 1913 through 1941 transitions, and DST ++ was NOT observed in 1957 through 1962 ++ (Thanks to P Chan, Michael Deckers, Alexander Krivenyshev and ++ Alois Treindl.) ++ ++ Merge more location-based Zones whose timestamps agree since 1970, ++ as pre-1970 timestamps are out of scope. This is part of a ++ process that has been ongoing since 2013. This does not affect ++ post-1970 timestamps, and timezone historians who build with 'make ++ PACKRATDATA=backzone' should see no changes to pre-1970 timestamps. ++ When merging, keep the most-populous location's data, and move ++ data for other locations to 'backzone' with a backward ++ link in 'backward'. For example, move America/Creston data to ++ 'backzone' with a link in 'backward' from America/Phoenix because ++ the two timezones' timestamps agree since 1970; this change ++ affects some pre-1968 timestamps in America/Creston because ++ Creston and Phoenix disagreed before 1968. The affected Zones ++ are Africa/Accra, America/Atikokan, America/Blanc-Sablon, ++ America/Creston, America/Curacao, America/Nassau, ++ America/Port_of_Spain, Antarctica/DumontDUrville, and ++ Antarctica/Syowa. ++ ++ Changes to maintenance procedure ++ ++ The new file SECURITY covers how to report security-related bugs. ++ ++ Several backward-compatibility links have been moved to the ++ 'backward' file. These links, which range from Africa/Addis_Ababa ++ to Pacific/Saipan, are only for compatibility with now-obsolete ++ guidelines suggesting an entry for every ISO 3166 code. ++ The intercontinental convenience links Asia/Istanbul and ++ Europe/Nicosia have also been moved to 'backward'. ++ ++ Changes to code ++ ++ zic now creates each output file or link atomically, ++ possibly by creating a temporary file and then renaming it. ++ This avoids races where a TZ setting would temporarily stop ++ working while zic was installing a replacement file or link. ++ ++ zic -L no longer omits the POSIX TZ string in its output. ++ Starting with 2020a, zic -L truncated its output according to the ++ "Expires" directive or "#expires" comment in the leapseconds file. ++ The resulting TZif files omitted daylight saving transitions after ++ the leap second table expired, which led to far less-accurate ++ predictions of times after the expiry. Although future timestamps ++ cannot be converted accurately in the presence of leap seconds, it ++ is more accurate to convert near-future timestamps with a few ++ seconds error than with an hour error, so zic -L no longer ++ truncates output in this way. ++ ++ Instead, when zic -L is given the "Expires" directive, it now ++ outputs the expiration by appending a no-change entry to the leap ++ second table. Although this should work well with most TZif ++ readers, it does not conform to Internet RFC 8536 and some pickier ++ clients (including tzdb 2017c through 2021a) reject it, so ++ "Expires" directives are currently disabled by default. To enable ++ them, set the EXPIRES_LINE Makefile variable. If a TZif file uses ++ this new feature it is marked with a new TZif version number 4, ++ a format intended to be documented in a successor to RFC 8536. ++ ++ zic -L LEAPFILE -r @LO no longer generates an invalid TZif file ++ that omits leap second information for the range LO..B when LO ++ falls between two leap seconds A and B. Instead, it generates a ++ TZif version 4 file that represents the previously-missing ++ information. ++ ++ The TZif reader now allows the leap second table to begin with a ++ correction other than -1 or +1, and to contain adjacent ++ transitions with equal corrections. This supports TZif version 4. ++ ++ The TZif reader now lets leap seconds occur less than 28 days ++ apart. This supports possible future TZif extensions. ++ ++ Fix bug that caused 'localtime' etc. to crash when TZ was ++ set to a all-year DST string like "EST5EDT4,0/0,J365/25" that does ++ not conform to POSIX but does conform to Internet RFC 8536. ++ ++ Fix another bug that caused 'localtime' etc. to crash when TZ was ++ set to a POSIX-conforming but unusual TZ string like ++ "EST5EDT4,0/0,J365/0", where almost all the year is DST. ++ ++ Fix yet another bug that caused 'localtime' etc. to mishandle slim ++ TZif files containing leap seconds after the last explicit ++ transition in the table, or when handling far-future timestamps ++ in slim TZif files lacking leap seconds. ++ ++ Fix localtime misbehavior involving positive leap seconds. ++ This change affects only behavior for "right" system time, ++ which contains leap seconds, and only if the UT offset is ++ not a multiple of 60 seconds when a positive leap second occurs. ++ (No such timezone exists in tzdb, luckily.) Without the fix, ++ the timestamp was ambiguous during a positive leap second. ++ With the fix, any seconds occurring after a positive leap second ++ and within the same localtime minute are counted through 60, not ++ through 59; their UT offset (tm_gmtoff) is the same as before. ++ Here is how the fix affects timestamps in a timezone with UT ++ offset +01:23:45 (5025 seconds) and with a positive leap second at ++ 1972-06-30 23:59:60 UTC (78796800): ++ ++ time_t without the fix with the fix ++ 78796800 1972-07-01 01:23:45 1972-07-01 01:23:45 (leap second) ++ 78796801 1972-07-01 01:23:45 1972-07-01 01:23:46 ++ ... ++ 78796815 1972-07-01 01:23:59 1972-07-01 01:23:60 ++ 78796816 1972-07-01 01:24:00 1972-07-01 01:24:00 ++ ++ Fix an unlikely bug that caused 'localtime' etc. to misbehave if ++ civil time changes a few seconds before time_t wraps around, when ++ leap seconds are enabled. ++ ++ Fix bug in zic -r; in some cases, the dummy time type after the ++ last time transition disagreed with the TZ string, contrary to ++ Internet RFC 8563 section 3.3. ++ ++ Fix a bug with 'zic -r @X' when X is a negative leap second that ++ has a nonnegative correction. Without the fix, the output file ++ was truncated so that X appeared to be a positive leap second. ++ Fix a similar, even-less-likely bug when truncating at a positive ++ leap second that has a nonpositive correction. ++ ++ zic -r now reports an error if given rolling leap seconds, as this ++ usage has never generally worked and is evidently unused. ++ ++ zic now generates a POSIX-conforming TZ string for TZif files ++ where all-year DST is predicted for the indefinite future. ++ For example, for all-year Eastern Daylight Time, zic now generates ++ "XXX3EDT4,0/0,J365/23" where it previously generated ++ "EST5EDT,0/0,J365/25" or "". (Thanks to Michael Deckers for ++ noting the possibility of POSIX conformance.) ++ ++ zic.c no longer requires sys/wait.h (thanks to spazmodius for ++ noting it wasn't needed). ++ ++ When reading slim TZif files, zdump no longer mishandles leap ++ seconds on the rare platforms where time_t counts leap seconds, ++ fixing a bug introduced in 2014g. ++ ++ zdump -v now outputs timestamps at boundaries of what localtime ++ and gmtime can represent, instead of the less-useful timestamps ++ one day after the minimum and one day before the maximum. ++ (Thanks to Arthur David Olson for prototype code, and to Manuela ++ Friedrich for debugging help.) ++ ++ zdump's -c and -t options are now consistently inclusive for the ++ lower time bound and exclusive for the upper. Formerly they were ++ inconsistent. (Confusion noted by Martin Burnicki.) ++ ++ Changes to build procedure ++ ++ You can now compile with -DHAVE_MALLOC_ERRNO=0 to port to ++ non-POSIX hosts where malloc doesn't set errno. ++ (Problem reported by Jan Engelhardt.) ++ ++ Changes to documentation ++ ++ tzfile.5 better matches a draft successor to RFC 8536 ++ . ++ ++ + Release 2021a - 2021-01-24 10:54:57 -0800 + + Changes to future timestamps +@@ -31,7 +377,7 @@ + Correct many pre-1986 transitions, fixing entries originally + derived from Shanks. The fixes include: + - Australia: several 1917 through 1971 transitions +- - Bahamas: several 1941 through 1945 transitions ++ - The Bahamas: several 1941 through 1945 transitions + - Bermuda: several 1917 through 1956 transitions + - Belize: several 1942 through 1968 transitions + - Ghana: several 1915 through 1956 transitions +@@ -287,13 +633,13 @@ + probably wrong.) + + Fix several errors in pre-1970 transitions in Perry County, IN. +- (Thanks to Alois Triendl for pointing out the 1967/9 errors.) ++ (Thanks to Alois Treindl for pointing out the 1967/9 errors.) + + Edmonton did not observe DST in 1967 or 1969. In 1946 Vancouver + ended DST on 09-29 not 10-13, and Vienna ended DST on 10-07 not + 10-06. In 1945 Königsberg (now Kaliningrad) switched from +01/+02 + to +02/+03 on 04-10 not 01-01, and its +02/+03 is abbreviated +- EET/EEST, not CET/CEST. (Thanks to Alois Triendl.) In 1946 ++ EET/EEST, not CET/CEST. (Thanks to Alois Treindl.) In 1946 + Königsberg switched to +03 on 04-07 not 01-01. + + In 1946 Louisville switched from CST to CDT on 04-28 at 00:01, not +@@ -825,8 +1171,8 @@ + Institute in Montevideo. + (Thanks to Jeremie Bonjour, Tim Parenti, and Michael Deckers.) + +- Enderbury and Kiritimati skipped New Year's Eve 1994, not +- New Year's Day 1995. (Thanks to Kerry Shetline.) ++ East Kiribati skipped New Year's Eve 1994, not New Year's Day 1995. ++ (Thanks to Kerry Shetline.) + + Fix the 1912-01-01 transition for Portugal and its colonies. + This transition was at 00:00 according to the new UT offset, not +--- /dev/null ++++ contrib/tzdata/SECURITY +@@ -0,0 +1,15 @@ ++Please report any sensitive security-related bugs via email to the ++tzdb designated coordinators, currently Paul Eggert ++ and Tim Parenti . ++Put "tzdb security" at the start of your email's subject line. ++We prefer communications to be in English. ++ ++You should receive a response within a week. If not, please follow up ++via email to make sure we received your original message. ++ ++If we confirm the bug, we plan to notify affected third-party services ++or software that we know about, prepare an advisory, commit fixes to ++the main development branch as quickly as is practical, and finally ++publish the advisory on tz@iana.org. As with all tzdb contributions, ++we give credit to security contributors unless they wish to remain ++anonymous. +--- contrib/tzdata/africa.orig ++++ contrib/tzdata/africa +@@ -30,9 +30,6 @@ + # Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94. + # https://www.jstor.org/stable/1774359 + # +-# A reliable and entertaining source about time zones is +-# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997). +-# + # European-style abbreviations are commonly used along the Mediterranean. + # For sub-Saharan Africa abbreviations were less standardized. + # Previous editions of this database used WAT, CAT, SAT, and EAT +@@ -153,8 +150,9 @@ + # Zone NAME STDOFF RULES FORMAT [UNTIL] + Zone Africa/Abidjan -0:16:08 - LMT 1912 + 0:00 - GMT ++Link Africa/Abidjan Africa/Accra # Ghana + Link Africa/Abidjan Africa/Bamako # Mali +-Link Africa/Abidjan Africa/Banjul # Gambia ++Link Africa/Abidjan Africa/Banjul # The Gambia + Link Africa/Abidjan Africa/Conakry # Guinea + Link Africa/Abidjan Africa/Dakar # Senegal + Link Africa/Abidjan Africa/Freetown # Sierra Leone +@@ -381,93 +379,8 @@ + # Gabon + # See Africa/Lagos. + +-# Gambia +-# See Africa/Abidjan. +- ++# The Gambia + # Ghana +- +-# From P Chan (2020-11-20): +-# Interpretation Amendment Ordinance, 1915 (No.24 of 1915) [1915-11-02] +-# Ordinances of the Gold Coast, Ashanti, Northern Territories 1915, p 69-71 +-# https://books.google.com/books?id=ErA-AQAAIAAJ&pg=PA70 *** 2400 LINES SKIPPED ***