1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 09:49:28 +02:00

Node modules update

This commit is contained in:
DanieL 2022-08-31 09:55:36 -03:00
parent f394ef7856
commit 12225f5c27
123 changed files with 6221 additions and 3459 deletions

41
node_modules/.package-lock.json generated vendored
View file

@ -130,11 +130,10 @@
}
},
"node_modules/@silvermine/videojs-chromecast": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/@silvermine/videojs-chromecast/-/videojs-chromecast-1.3.3.tgz",
"integrity": "sha512-vbytdnqgUzOYIxA1CEWYe19PHea9JlFULJSqJ00Z0E8xHwOk8LP3gtpQ4MnqH0IViciBDQmyq9ta/5rbDvDWEw==",
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/@silvermine/videojs-chromecast/-/videojs-chromecast-1.3.4.tgz",
"integrity": "sha512-4VC/WEXb18Iex2Tf679RRUR+oSJhNq7+SyMGIsawFglET0IebXnwYKtO6x4t+dVd3be/iN1p5Ny6/iUnny4ljA==",
"dependencies": {
"class.extend": "0.9.1",
"webcomponents.js": "git+https://git@github.com/webcomponents/webcomponentsjs.git#v0.7.24"
},
"peerDependencies": {
@ -299,11 +298,6 @@
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz",
"integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w=="
},
"node_modules/class.extend": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/class.extend/-/class.extend-0.9.1.tgz",
"integrity": "sha512-Tzj+2kAkZs+iGiUOUoKvtj4c/SjeVdKZXg/NbLTGKu0kp66h69dyMHQwOSzuyIghXAUswuY24TZc0HdaJCXx2A=="
},
"node_modules/clone-buffer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
@ -458,9 +452,9 @@
}
},
"node_modules/hls.js": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.2.0.tgz",
"integrity": "sha512-QIEQIUpBRhcpBMq3NA+/qozG8lbNfVekuX7kCMUlhiVu4382xFWsnwcuBe/CA4Gp/wB/pf2aRBaGRFlxh/FN8g=="
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.2.1.tgz",
"integrity": "sha512-+m/5+ikSpmQQvb6FmVWZUZfzvTJMn/QVfiCGP1Oq9WW4RKrAvxlExkhhbcVGgGqLNPFk1kdFkVQur//wKu3JVw=="
},
"node_modules/ieee754": {
"version": "1.2.1",
@ -516,9 +510,9 @@
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
},
"node_modules/jquery": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz",
"integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw=="
},
"node_modules/jquery-lazy": {
"version": "1.7.11",
@ -746,9 +740,9 @@
}
},
"node_modules/moment-timezone": {
"version": "0.5.34",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz",
"integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==",
"version": "0.5.37",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz",
"integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==",
"dependencies": {
"moment": ">= 2.9.0"
},
@ -1108,6 +1102,17 @@
"video.js": "^5.19.2 || ^6 || ^7"
}
},
"node_modules/videojs-landscape-fullscreen": {
"version": "11.1111.0",
"resolved": "https://registry.npmjs.org/videojs-landscape-fullscreen/-/videojs-landscape-fullscreen-11.1111.0.tgz",
"integrity": "sha512-Rsw+N5mB6Q24uh5gIFoeNvUs8uPOKJx//fFBHZUw8BxYpr6egC48fGLRoMYFAdveJ/bYNn1bd5ZSINAAEaU7HQ==",
"dependencies": {
"global": "^4.4.0"
},
"peerDependencies": {
"video.js": "5.x || 6.x || 7.x || *"
}
},
"node_modules/videojs-vtt.js": {
"version": "0.15.3",
"resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.3.tgz",

View file

@ -0,0 +1,7 @@
defaults
> 0.05%
not dead
not safari < 9
not ios < 9
not op_mini all
not android < 4.4

View file

@ -0,0 +1,3 @@
{
"extends": "./node_modules/@silvermine/standardization/.markdownlint.json"
}

View file

@ -1 +1 @@
12.22.1
16.15.0

View file

@ -0,0 +1 @@
extends: ./node_modules/@silvermine/standardization/.stylelintrc.yml

View file

@ -53,21 +53,21 @@ at `window.videojs` and will throw an error if it does not exist.
### Initialization options
* **`preloadWebComponents`** (default: `false`) - The Chromecast framework relies on the
`webcomponents.js` polyfill when a browser does not have `document.registerElement` in
order to create the `<google-cast-button>` custom component (which is not used by this
plugin). If you are using jQuery, this polyfill must be loaded and initialized before
jQuery is initialized. Unfortunately, the Chromecast framework loads the
`webcomponents.js` polyfill via a dynamically created `<script>` tag. This causes a race
condition (see #17). Also, including `webcomponents.js` anywhere on the page will break
jQuery's fix for bubbling some events to `document` (e.g. `onchange` events for
`<select>`, see #21). Setting `preloadWebComponents` to `true` will "fix" these 2
problems by (1) making this plugin add the `webcomponents` polyfill synchronously when
the polyfill is needed and (2) using the `webcomponents-lite.js` version as it does not
include the shadow DOM polyfills, but still provides the `registerElement` polyfill that
the Chromecast framework needs. If you use the `preloadWebComponents: true` option, you
should make sure that this plugin is loaded before jQuery. Then include the Chromecast
framework after this plugin as you normally would.
* **`preloadWebComponents`** (default: `false`) - The Chromecast framework relies on the
`webcomponents.js` polyfill when a browser does not have `document.registerElement` in
order to create the `<google-cast-button>` custom component (which is not used by this
plugin). If you are using jQuery, this polyfill must be loaded and initialized before
jQuery is initialized. Unfortunately, the Chromecast framework loads the
`webcomponents.js` polyfill via a dynamically created `<script>` tag. This causes a race
condition (see #17). Also, including `webcomponents.js` anywhere on the page will break
jQuery's fix for bubbling some events to `document` (e.g. `onchange` events for
`<select>`, see #21). Setting `preloadWebComponents` to `true` will "fix" these 2
problems by (1) making this plugin add the `webcomponents` polyfill synchronously when
the polyfill is needed and (2) using the `webcomponents-lite.js` version as it does not
include the shadow DOM polyfills, but still provides the `registerElement` polyfill that
the Chromecast framework needs. If you use the `preloadWebComponents: true` option, you
should make sure that this plugin is loaded before jQuery. Then include the Chromecast
framework after this plugin as you normally would.
**Note:** There is a caveat to using the `preloadWebComponents` setting.
Because the Chromecast plugin uses the shadow DOM to create the
@ -150,36 +150,38 @@ player.chromecast(); // initializes the Chromecast plugin
#### Configuration options
##### Plugin configuration
* **`plugins.chromecast.receiverAppID`** - the string ID of a custom [Chromecast receiver
app][cast-receiver] to use. Defaults to the [default Media Receiver ID][def-cast-id].
* **`plugins.chromecast.addButtonToControlBar`** - a `boolean` flag that tells the plugin
whether or not it should automatically add the Chromecast button to the Video.js
player's control bar component. Defaults to `true`.
* **`plugins.chromecast.buttonPositionIndex`** - a zero-based number specifying the index
of the Chromecast button among the control bar's child components (if
`addButtonToControlBar` is set to `true`). By default the Chromecast Button is added as
the last child of the control bar. A value less than 0 puts the button at the specified
position from the end of the control bar. Note that it's likely not all child components
of the control bar are visible.
* **`plugins.chromecast.receiverAppID`** - the string ID of a custom [Chromecast receiver
app][cast-receiver] to use. Defaults to the [default Media Receiver ID][def-cast-id].
* **`plugins.chromecast.addButtonToControlBar`** - a `boolean` flag that tells the plugin
whether or not it should automatically add the Chromecast button to the Video.js
player's control bar component. Defaults to `true`.
* **`plugins.chromecast.buttonPositionIndex`** - a zero-based number specifying the index
of the Chromecast button among the control bar's child components (if
`addButtonToControlBar` is set to `true`). By default the Chromecast Button is added as
the last child of the control bar. A value less than 0 puts the button at the specified
position from the end of the control bar. Note that it's likely not all child components
of the control bar are visible.
##### Chromecast Tech configuration
* **`chromecast.requestTitleFn`** - a function that this plugin calls when it needs a
string that will be the title shown in the UI that is shown when a Chromecast session is
active and connected. When the this plugin calls the `requestTitleFn`, it passes it the
[current `source` object][player-source] and expects a string in return. If nothing is
returned or if this option is not defined, no title will be shown.
* **`chromecast.requestSubtitleFn`** - a function that this plugin calls when it needs a
string that will be the sub-title shown in the UI that is shown when a Chromecast
session is active and connected. When the this plugin calls the `requestSubtitleFn`, it
passes it the [current `source` object][player-source] and expects a string in return.
If nothing is returned or if this option is not defined, no sub-title will be shown.
* **`chromecast.requestCustomDataFn`** - a function that this plugin calls when it needs an
object that contains custom information necessary for a Chromecast receiver app when a
session is active and connected. When the this plugin calls the `requestCustomDataFn`, it
passes it the [current `source` object][player-source] and expects an object in return.
If nothing is returned or if this option is not defined, no custom data will be sent.
This option is intended to be used with a [custom receiver][custom-receiver] application
to extend its default capabilities.
* **`chromecast.requestTitleFn`** - a function that this plugin calls when it needs a
string that will be the title shown in the UI that is shown when a Chromecast session
is active and connected. When the this plugin calls the `requestTitleFn`, it passes it
the [current `source` object][player-source] and expects a string in return. If nothing
is returned or if this option is not defined, no title will be shown.
* **`chromecast.requestSubtitleFn`** - a function that this plugin calls when it needs a
string that will be the sub-title shown in the UI that is shown when a Chromecast
session is active and connected. When the this plugin calls the `requestSubtitleFn`, it
passes it the [current `source` object][player-source] and expects a string in return.
If nothing is returned or if this option is not defined, no sub-title will be shown.
* **`chromecast.requestCustomDataFn`** - a function that this plugin calls when it needs
an object that contains custom information necessary for a Chromecast receiver app when
a session is active and connected. When the this plugin calls the `requestCustomDataFn`,
it passes it the [current `source` object][player-source] and expects an object in return.
If nothing is returned or if this option is not defined, no custom data will be sent.
This option is intended to be used with a [custom receiver][custom-receiver] application
to extend its default capabilities.
Here is an example configuration object that makes full use of all required and optional
configuration:
@ -267,30 +269,30 @@ file in your project's SCSS:
Optionally, you can override the SCSS variables that contain the paths to the icon
image files:
* **`$icon-chromecast--default`** - the path to the icon image that is displayed when the
Chromecast button is in its normal, default state. Defaults to
`"images/ic_cast_white_24dp.png"`.
* **`$icon-chromecast--hover`** - the path to the icon image that is displayed when the
user hovers over the Chromecast button when it is in its normal, default state. Defaults
to `"images/ic_cast_white_24dp.png"`.
* **`$icon-chromecast-casting`** - the path to the icon image that is displayed when the
Chromecast button is in the "casting" state (when a Chromecast session is active and
connected). Defaults to `"images/ic_cast_connected_white_24dp.png"`.
* **`$icon-chromecast-casting--hover`** - the path to the icon image that is displayed
when the user hovers over the Chromecast button when it is in the "casting" state (when
a Chromecast session is active and connected). Defaults to
`"images/ic_cast_connected_white_24dp.png"`.
* **`$chromecast-icon-size`** - the width and height of the icon (the button and icon is a
square). Defaults to `12px`.
* **`$chromecast-title-font-size`** - the font size of the title on the screen that is
shown while a Chromecast session is active and connected. Defaults to `22px`.
* **`$chromecast-subtitle-font-size`** - the font size of the sub-title on the screen
that is shown while a Chromecast session is active and connected. Defaults to `18px`.
* **`$chromecast-poster-width`** - the width of the poster image on the screen that that
is shown while a Chromecast session is active and connected. Defaults to `100px`.
* **`$chromecast-poster-max-height`** - the maximum height of the poster image on the
screen that is shown while a Chromecast session is active and connected. Defaults to
`180px`.
* **`$icon-chromecast--default`** - the path to the icon image that is displayed when the
Chromecast button is in its normal, default state. Defaults to
`"images/ic_cast_white_24dp.png"`.
* **`$icon-chromecast--hover`** - the path to the icon image that is displayed when the
user hovers over the Chromecast button when it is in its normal, default state. Defaults
to `"images/ic_cast_white_24dp.png"`.
* **`$icon-chromecast-casting`** - the path to the icon image that is displayed when the
Chromecast button is in the "casting" state (when a Chromecast session is active and
connected). Defaults to `"images/ic_cast_connected_white_24dp.png"`.
* **`$icon-chromecast-casting--hover`** - the path to the icon image that is displayed
when the user hovers over the Chromecast button when it is in the "casting" state (when
a Chromecast session is active and connected). Defaults to
`"images/ic_cast_connected_white_24dp.png"`.
* **`$chromecast-icon-size`** - the width and height of the icon (the button and icon is
a square). Defaults to `12px`.
* **`$chromecast-title-font-size`** - the font size of the title on the screen that is
shown while a Chromecast session is active and connected. Defaults to `22px`.
* **`$chromecast-subtitle-font-size`** - the font size of the sub-title on the screen
that is shown while a Chromecast session is active and connected. Defaults to `18px`.
* **`$chromecast-poster-width`** - the width of the poster image on the screen that that
is shown while a Chromecast session is active and connected. Defaults to `100px`.
* **`$chromecast-poster-max-height`** - the maximum height of the poster image on the
screen that is shown while a Chromecast session is active and connected.
Defaults to `180px`.
#### Images
@ -302,11 +304,20 @@ plugin's CSS is located. If, for example, your CSS is located at
`https://example.com/plugins/silvermine-videojs-chromecast.css`, then the plugin's images
should be located at `https://example.com/plugins/images/`.
In addition the the `ic_cast_white_24dp.png` icon image that is used as the default icon for
In addition, the `ic_cast_white_24dp.png` icon image that is used as the default icon for
all four button states ("default", "default + hover", "casting", "casting + hover"), the `images`
folder contains grey, black, and blue versions of the icons.
### Events
*`chromecastConnected`: Triggers when Chromecast connected
*`chromecastDisconnected`: Triggers when Chromecast disconnected
*`chromecastDevicesAvailable`: Triggers on state change when Chromecast devices are available
*`chromecastDevicesUnavailable`: Triggers on state change when Chromecast devices are unavailable
*`chromecastRequested`: Triggers when the user has requested Chromecast playback using this
plugin's Chromecast button
## How do I contribute?
We genuinely appreciate external contributions. See [our extensive

View file

@ -1 +1 @@
.vjs-chromecast-button .vjs-icon-placeholder{background:url("images/ic_cast_white_24dp.png") center center no-repeat;background-size:contain;display:inline-block;width:12px;height:12px}.vjs-chromecast-button:hover{cursor:pointer}.vjs-chromecast-button:hover .vjs-icon-placeholder{background-image:url("images/ic_cast_white_24dp.png")}.vjs-chromecast-button.vjs-chromecast-casting-state .vjs-icon-placeholder{background-image:url("images/ic_cast_connected_white_24dp.png")}.vjs-chromecast-button.vjs-chromecast-casting-state:hover .vjs-icon-placeholder{background-image:url("images/ic_cast_connected_white_24dp.png")}.vjs-tech-chromecast{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center;overflow:hidden}.vjs-tech-chromecast .vjs-tech-chromecast-poster::after{content:' ';display:block;height:2px;width:100px;background-color:#ccc;position:absolute;left:-webkit-calc(50% - 50px);left:calc(50% - 50px)}.vjs-tech-chromecast .vjs-tech-chromecast-poster-img{max-height:180px;width:auto;border:2px solid #ccc}.vjs-tech-chromecast .vjs-tech-chromecast-poster-img.vjs-tech-chromecast-poster-img-empty{width:160px;height:90px}.vjs-tech-chromecast .vjs-tech-chromecast-title-container{position:absolute;bottom:50%;margin-bottom:100px;color:#ccc;text-align:center}.vjs-tech-chromecast .vjs-tech-chromecast-title{font-size:22px}.vjs-tech-chromecast .vjs-tech-chromecast-title.vjs-tech-chromecast-title-empty{display:none}.vjs-tech-chromecast .vjs-tech-chromecast-subtitle{font-size:18px;padding-top:0.5em}.vjs-tech-chromecast .vjs-tech-chromecast-subtitle.vjs-tech-chromecast-subtitle-empty{display:none}
.vjs-chromecast-button .vjs-icon-placeholder{background:url("images/ic_cast_white_24dp.png") center center no-repeat;background-size:contain;display:inline-block;width:12px;height:12px}.vjs-chromecast-button:hover{cursor:pointer}.vjs-chromecast-button:hover .vjs-icon-placeholder{background-image:url("images/ic_cast_white_24dp.png")}.vjs-chromecast-button.vjs-chromecast-casting-state .vjs-icon-placeholder{background-image:url("images/ic_cast_connected_white_24dp.png")}.vjs-chromecast-button.vjs-chromecast-casting-state:hover .vjs-icon-placeholder{background-image:url("images/ic_cast_connected_white_24dp.png")}.vjs-tech-chromecast{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;overflow:hidden}.vjs-tech-chromecast .vjs-tech-chromecast-poster::after{content:" ";display:block;height:2px;width:100px;background-color:#ccc;position:absolute;left:calc(50% - 50px)}.vjs-tech-chromecast .vjs-tech-chromecast-poster-img{max-height:180px;width:auto;border:2px solid #ccc}.vjs-tech-chromecast .vjs-tech-chromecast-poster-img.vjs-tech-chromecast-poster-img-empty{width:160px;height:90px}.vjs-tech-chromecast .vjs-tech-chromecast-title-container{position:absolute;bottom:50%;margin-bottom:100px;color:#ccc;text-align:center}.vjs-tech-chromecast .vjs-tech-chromecast-title{font-size:22px}.vjs-tech-chromecast .vjs-tech-chromecast-title.vjs-tech-chromecast-title-empty{display:none}.vjs-tech-chromecast .vjs-tech-chromecast-subtitle{font-size:18px;padding-top:.5em}.vjs-tech-chromecast .vjs-tech-chromecast-subtitle.vjs-tech-chromecast-subtitle-empty{display:none}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -12,7 +12,7 @@
<body>
<h1>Demo of <code>silvermine-videojs-chromecast</code></h1>
<video id="video_1" class="video-js vjs-default-skin" controls preload="auto" data-setup='{ "fluid": "true" }'>
<video id="video_1" class="video-js vjs-default-skin" controls preload="auto">
<source src="http://www.caminandes.com/download/03_caminandes_llamigos_1080p.mp4" type="video/mp4">
</video>
@ -20,6 +20,7 @@
var options;
options = {
fluid: true,
techOrder: [ 'chromecast', 'html5' ],
};

View file

@ -1,11 +1,18 @@
{
"name": "@silvermine/videojs-chromecast",
"version": "1.3.3",
"version": "1.3.4",
"description": "video.js plugin for casting to chromecast",
"main": "src/js/index.js",
"scripts": {
"commitlint": "commitlint --from d4e7f7e",
"test": "check-node-version --npm 6.14.12 && nyc mocha -- -R spec 'tests/**/*.test.js'",
"test": "check-node-version --npm 8.5.5 && nyc mocha -- -R spec 'tests/**/*.test.js'",
"stylelint": "stylelint './src/scss/**/*.scss'",
"eslint": "eslint '{,!(node_modules|dist)/**/}*.js'",
"markdownlint": "markdownlint -c .markdownlint.json -i CHANGELOG.md '{,!(node_modules)/**/}*.md'",
"standards": "npm run markdownlint && npm run stylelint && npm run eslint",
"release:preview": "node ./node_modules/@silvermine/standardization/scripts/release.js preview",
"release:prep-changelog": "node ./node_modules/@silvermine/standardization/scripts/release.js prep-changelog",
"release:finalize": "node ./node_modules/@silvermine/standardization/scripts/release.js finalize",
"prepublish": "grunt build"
},
"author": "Jeremy Thomerson",
@ -27,14 +34,20 @@
},
"homepage": "https://github.com/silvermine/videojs-chromecast#readme",
"dependencies": {
"class.extend": "0.9.1",
"webcomponents.js": "git+https://git@github.com/webcomponents/webcomponentsjs.git#v0.7.24"
},
"devDependencies": {
"@babel/core": "7.13.16",
"@babel/preset-env": "7.13.15",
"@commitlint/cli": "8.3.5",
"@commitlint/travis-cli": "8.3.5",
"@silvermine/eslint-config": "3.0.1",
"@silvermine/standardization": "1.1.0",
"@silvermine/standardization": "2.0.0",
"autoprefixer": "7.1.1",
"babel-eslint": "10.1.0",
"babelify": "10.0.0",
"check-node-version": "4.0.3",
"core-js": "3.11.0",
"coveralls": "3.0.2",
"eslint": "6.8.0",
"expect.js": "0.3.1",
@ -44,14 +57,13 @@
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-uglify": "3.0.1",
"grunt-contrib-watch": "1.1.0",
"grunt-eslint": "22.0.0",
"grunt-postcss": "0.9.0",
"grunt-sass": "3.1.0",
"mocha": "8.4.0",
"mocha-lcov-reporter": "1.3.0",
"node-sass": "6.0.0",
"nyc": "15.1.0",
"rewire": "2.5.2",
"sass": "1.52.3",
"silvermine-serverless-utils": "git+https://github.com/silvermine/serverless-utils.git#910f1149af824fc8d0fa840878079c7d3df0f414",
"sinon": "2.3.5"
},

View file

@ -1,14 +1,5 @@
'use strict';
var Class = require('class.extend'),
hasConnected = false, // See the `isChromecastConnected` function.
ChromecastSessionManager;
function getCastContext() {
return cast.framework.CastContext.getInstance();
}
ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prototype **/ {
/** @lends ChromecastSessionManager.prototype **/
class ChromecastSessionManager {
/**
* Stores the state of the current Chromecast session and its associated objects such
@ -37,7 +28,7 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
* @param player {object} Video.js Player
* @constructs ChromecastSessionManager
*/
init: function(player) {
constructor(player) {
this.player = player;
this._sessionListener = this._onSessionStateChange.bind(this);
@ -53,20 +44,22 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
this.remotePlayer = new cast.framework.RemotePlayer();
this.remotePlayerController = new cast.framework.RemotePlayerController(this.remotePlayer);
},
}
static hasConnected = false;
/**
* Add event listeners for events triggered on the current CastContext.
*
* @private
*/
_addCastContextEventListeners: function() {
_addCastContextEventListeners() {
var sessionStateChangedEvt = cast.framework.CastContextEventType.SESSION_STATE_CHANGED,
castStateChangedEvt = cast.framework.CastContextEventType.CAST_STATE_CHANGED;
this.getCastContext().addEventListener(sessionStateChangedEvt, this._sessionListener);
this.getCastContext().addEventListener(castStateChangedEvt, this._castListener);
},
}
/**
* Remove event listeners that were added in {@link
@ -74,34 +67,34 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
*
* @private
*/
_removeCastContextEventListeners: function() {
_removeCastContextEventListeners() {
var sessionStateChangedEvt = cast.framework.CastContextEventType.SESSION_STATE_CHANGED,
castStateChangedEvt = cast.framework.CastContextEventType.CAST_STATE_CHANGED;
this.getCastContext().removeEventListener(sessionStateChangedEvt, this._sessionListener);
this.getCastContext().removeEventListener(castStateChangedEvt, this._castListener);
},
}
/**
* Handle the CastContext's SessionState change event.
*
* @private
*/
_onSessionStateChange: function(event) {
_onSessionStateChange(event) {
if (event.sessionState === cast.framework.SessionState.SESSION_ENDED) {
this.player.trigger('chromecastDisconnected');
this._reloadTech();
}
},
}
/**
* Handle the CastContext's CastState change event.
*
* @private
*/
_onCastStateChange: function(event) {
_onCastStateChange(event) {
this._notifyPlayerOfDevicesAvailabilityChange(event.castState);
},
}
/**
* Triggers player events that notifies listeners that Chromecast devices are
@ -109,13 +102,13 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
*
* @private
*/
_notifyPlayerOfDevicesAvailabilityChange: function(castState) {
_notifyPlayerOfDevicesAvailabilityChange(castState) {
if (this.hasAvailableDevices(castState)) {
this.player.trigger('chromecastDevicesAvailable');
} else {
this.player.trigger('chromecastDevicesUnavailable');
}
},
}
/**
* Returns whether or not there are Chromecast devices available to cast to.
@ -124,19 +117,19 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
* @param {String} castState
* @return {boolean} true if there are Chromecast devices available to cast to.
*/
hasAvailableDevices: function(castState) {
hasAvailableDevices(castState) {
castState = castState || this.getCastContext().getCastState();
return castState === cast.framework.CastState.NOT_CONNECTED ||
castState === cast.framework.CastState.CONNECTING ||
castState === cast.framework.CastState.CONNECTED;
},
}
/**
* Opens the Chromecast casting menu by requesting a CastSession. Does nothing if the
* Video.js player does not have a source.
*/
openCastMenu: function() {
openCastMenu() {
var onSessionSuccess;
if (!this.player.currentSource()) {
@ -144,7 +137,7 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
return;
}
onSessionSuccess = function() {
hasConnected = true;
ChromecastSessionManager.hasConnected = true;
this.player.trigger('chromecastConnected');
this._reloadTech();
}.bind(this);
@ -158,7 +151,7 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
// casting destination.
this.getCastContext().requestSession()
.then(onSessionSuccess, function() { /* noop */ });
},
}
/**
* Reloads the Video.js player's Tech. This causes the player to re-evaluate which
@ -170,7 +163,7 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
*
* @private
*/
_reloadTech: function() {
_reloadTech() {
var player = this.player,
currentTime = player.currentTime(),
wasPaused = player.paused(),
@ -191,56 +184,58 @@ ChromecastSessionManager = Class.extend(/** @lends ChromecastSessionManager.prot
}
player.currentTime(currentTime || 0);
});
},
}
/**
* @see https://developers.google.com/cast/docs/reference/chrome/cast.framework.CastContext
* @returns {object} the current CastContext, if one exists
*/
getCastContext: getCastContext,
getCastContext() {
return cast.framework.CastContext.getInstance();
}
/**
* @see https://developers.google.com/cast/docs/reference/chrome/cast.framework.RemotePlayer
* @returns {object} the current RemotePlayer, if one exists
*/
getRemotePlayer: function() {
getRemotePlayer() {
return this.remotePlayer;
},
}
/**
* @see https://developers.google.com/cast/docs/reference/chrome/cast.framework.RemotePlayerController
* @returns {object} the current RemotePlayerController, if one exists
*/
getRemotePlayerController: function() {
getRemotePlayerController() {
return this.remotePlayerController;
},
});
}
/**
* Returns whether or not the current Chromecast API is available (that is,
* `window.chrome`, `window.chrome.cast`, and `window.cast` exist).
*
* @static
* @returns {boolean} true if the Chromecast API is available
*/
static isChromecastAPIAvailable() {
return window.chrome && window.chrome.cast && window.cast;
}
/**
* Returns whether or not the current Chromecast API is available (that is,
* `window.chrome`, `window.chrome.cast`, and `window.cast` exist).
*
* @static
* @returns {boolean} true if the Chromecast API is available
*/
ChromecastSessionManager.isChromecastAPIAvailable = function() {
return window.chrome && window.chrome.cast && window.cast;
};
/**
* Returns whether or not there is a current CastSession and it is connected.
*
* @static
* @returns {boolean} true if the current CastSession exists and is connected
*/
ChromecastSessionManager.isChromecastConnected = function() {
// We must also check the `hasConnected` flag because
// `getCastContext().getCastState()` returns `CONNECTED` even when the current casting
// session was initiated by another tab in the browser or by another process.
return ChromecastSessionManager.isChromecastAPIAvailable() &&
(getCastContext().getCastState() === cast.framework.CastState.CONNECTED) &&
hasConnected;
};
/**
* Returns whether or not there is a current CastSession and it is connected.
*
* @static
* @returns {boolean} true if the current CastSession exists and is connected
*/
static isChromecastConnected() {
// We must also check the `hasConnected` flag because
// `getCastContext().getCastState()` returns `CONNECTED` even when the current
// casting session was initiated by another tab in the browser or by another process
return ChromecastSessionManager.isChromecastAPIAvailable() &&
(cast.framework.CastContext.getInstance().getCastState() === cast.framework.CastState.CONNECTED) &&
ChromecastSessionManager.hasConnected;
}
}
module.exports = ChromecastSessionManager;

View file

@ -1,5 +1,3 @@
'use strict';
/**
* The ChromecastButton module contains both the ChromecastButton class definition and
* the function used to register the button as a Video.js Component.

View file

@ -1,5 +1,3 @@
'use strict';
/**
* @module enableChromecast
*/

View file

@ -1,6 +1,4 @@
/* eslint-disable global-require */
'use strict';
var preloadWebComponents = require('./preloadWebComponents'),
createChromecastButton = require('./components/ChromecastButton'),
createChromecastTech = require('./tech/ChromecastTech'),

View file

@ -1,5 +1,3 @@
'use strict';
function doesUserAgentContainString(str) {
return typeof window.navigator.userAgent === 'string' && window.navigator.userAgent.indexOf(str) >= 0;
}

View file

@ -1,5 +1,3 @@
'use strict';
// This file is used to create a standalone javascript file for use in a script tag. The
// file that is output assumes that Video.js is available at `window.videojs`.

View file

@ -1,5 +1,3 @@
'use strict';
var ChromecastSessionManager = require('../chromecast/ChromecastSessionManager'),
ChromecastTechUI = require('./ChromecastTechUI'),
SESSION_TIMEOUT = 10 * 1000, // milliseconds
@ -743,8 +741,8 @@ module.exports = function(videojs) {
// Required for Video.js Tech implementations.
// TODO Consider a more comprehensive check based on mimetype.
ChromecastTechImpl.canPlaySource = ChromecastSessionManager.isChromecastConnected.bind(ChromecastSessionManager);
ChromecastTechImpl.isSupported = ChromecastSessionManager.isChromecastConnected.bind(ChromecastSessionManager);
ChromecastTechImpl.canPlaySource = () => { return ChromecastSessionManager.isChromecastConnected(); };
ChromecastTechImpl.isSupported = () => { return ChromecastSessionManager.isChromecastConnected(); };
ChromecastTechImpl.prototype.featuresVolumeControl = true;
ChromecastTechImpl.prototype.featuresPlaybackRate = false;

View file

@ -1,8 +1,3 @@
'use strict';
var Class = require('class.extend'),
ChromecastTechUI;
/**
* This class represents the UI that is shown in the player while the Chromecast Tech is
* active. The UI has a single root DOM element that displays the poster image of the
@ -11,10 +6,10 @@ var Class = require('class.extend'),
*
* @class ChromecastTechUI
*/
ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
init: function() {
class ChromecastTechUI {
constructor() {
this._el = this._createDOMElement();
},
}
/**
* Creates and returns a single DOMElement that contains the UI. This implementation
@ -23,7 +18,7 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
* @private
* @returns {DOMElement}
*/
_createDOMElement: function() {
_createDOMElement() {
var el = this._createElement('div', 'vjs-tech vjs-tech-chromecast'),
posterContainerEl = this._createElement('div', 'vjs-tech-chromecast-poster'),
posterImageEl = this._createElement('img', 'vjs-tech-chromecast-poster-img'),
@ -39,7 +34,7 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
el.appendChild(posterContainerEl);
return el;
},
}
/**
* A helper method for creating DOMElements of the given type and with the given class
@ -50,21 +45,21 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
* a space-delimited list of class names.
* @returns {DOMElement}
*/
_createElement: function(type, className) {
_createElement(type, className) {
var el = document.createElement(type);
el.className = className;
return el;
},
}
/**
* Gets the root DOMElement to be shown in the player's UI.
*
* @returns {DOMElement}
*/
getDOMElement: function() {
getDOMElement() {
return this._el;
},
}
/**
* Finds the poster's DOMElement in the root UI element.
@ -72,9 +67,9 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
* @private
* @returns {DOMElement}
*/
_findPosterEl: function() {
_findPosterEl() {
return this._el.querySelector('.vjs-tech-chromecast-poster');
},
}
/**
* Finds the poster's <img> DOMElement in the root UI element.
@ -82,9 +77,9 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
* @private
* @returns {DOMElement}
*/
_findPosterImageEl: function() {
_findPosterImageEl() {
return this._el.querySelector('.vjs-tech-chromecast-poster-img');
},
}
/**
* Finds the title's DOMElement in the root UI element.
@ -92,9 +87,9 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
* @private
* @returns {DOMElement}
*/
_findTitleEl: function() {
_findTitleEl() {
return this._el.querySelector('.vjs-tech-chromecast-title');
},
}
/**
* Finds the subtitle's DOMElement in the root UI element.
@ -102,9 +97,9 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
* @private
* @returns {DOMElement}
*/
_findSubtitleEl: function() {
_findSubtitleEl() {
return this._el.querySelector('.vjs-tech-chromecast-subtitle');
},
}
/**
* Sets the current poster image URL and updates the poster image DOMElement with the
@ -112,7 +107,7 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
*
* @param poster {string} a URL for a poster image
*/
updatePoster: function(poster) {
updatePoster(poster) {
var posterImageEl = this._findPosterImageEl();
this._poster = poster ? poster : null;
@ -123,23 +118,23 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
posterImageEl.removeAttribute('src');
posterImageEl.classList.add('vjs-tech-chromecast-poster-img-empty');
}
},
}
/**
* Gets the current poster image URL.
*
* @returns {string} the URL for th current poster image
*/
getPoster: function() {
getPoster() {
return this._poster;
},
}
/**
* Sets the current title and updates the title's DOMElement with the new text.
*
* @param title {string} a title to show
*/
updateTitle: function(title) {
updateTitle(title) {
var titleEl = this._findTitleEl();
this._title = title;
@ -149,14 +144,14 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
} else {
titleEl.classList.add('vjs-tech-chromecast-title-empty');
}
},
}
/**
* Sets the current subtitle and updates the subtitle's DOMElement with the new text.
*
* @param subtitle {string} a subtitle to show
*/
updateSubtitle: function(subtitle) {
updateSubtitle(subtitle) {
var subtitleEl = this._findSubtitleEl();
this._subtitle = subtitle;
@ -166,7 +161,7 @@ ChromecastTechUI = Class.extend(/** @lends ChromecastTechUI.prototype */ {
} else {
subtitleEl.classList.add('vjs-tech-chromecast-subtitle-empty');
}
},
});
}
}
module.exports = ChromecastTechUI;

View file

@ -1,3 +0,0 @@
*.swp
node_modules
npm-debug.log

8
node_modules/class.extend/Makefile generated vendored
View file

@ -1,8 +0,0 @@
REPORTER ?= dot
all: test
test: test-unit
test-unit:
mocha --reporter $(REPORTER) --growl test/*.test.js

37
node_modules/class.extend/README.md generated vendored
View file

@ -1,37 +0,0 @@
class.extend
============
copy/paste node package implementation of John Resig's simple javascript inheritance, http://ejohn.org/blog/simple-javascript-inheritance
Install
-------
npm install class.extend
Usage
-------
var Class = require('class.extend');
var Person = Class.extend({
init: function(isDancing){
this.dancing = isDancing;
},
dance: function(){
return this.dancing;
}
});
var Ninja = Person.extend({
init: function(){
this._super( false );
},
dance: function(){
// Call the inherited version of dance()
return this._super();
},
swingSword: function(){
return true;
}
});
var p = new Person(true);
var n = new Ninja();

View file

@ -1,62 +0,0 @@
(function(){
var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
// The base Class implementation (does nothing)
this.Class = function(){};
// Create a new Class that inherits from this class
Class.extend = function(prop) {
var _super = this.prototype;
// Instantiate a base class (but only create the instance,
// don't run the init constructor)
initializing = true;
var prototype = new this();
initializing = false;
// Copy the properties over onto the new prototype
for (var name in prop) {
// Check if we're overwriting an existing function
prototype[name] = typeof prop[name] == "function" &&
typeof _super[name] == "function" && fnTest.test(prop[name]) ?
(function(name, fn){
return function() {
var tmp = this._super;
// Add a new ._super() method that is the same method
// but on the super-class
this._super = _super[name];
// The method only need to be bound temporarily, so we
// remove it when we're done executing
var ret = fn.apply(this, arguments);
this._super = tmp;
return ret;
};
})(name, prop[name]) :
prop[name];
}
// The dummy class constructor
function Class() {
// All construction is actually done in the init method
if ( !initializing && this.init )
this.init.apply(this, arguments);
}
// Populate our constructed prototype object
Class.prototype = prototype;
// Enforce the constructor to be what we expect
Class.prototype.constructor = Class;
// And make this class extendable
Class.extend = arguments.callee;
return Class;
};
//I only added this line
module.exports = Class;
})();

View file

@ -1,25 +0,0 @@
{
"name": "class.extend",
"description": "copy/paste implementation of John Resig's Simple JavaScript inheritance.",
"version": "0.9.1",
"repository": {
"type": "git",
"url": "git://github.com/bighostkim/class.extend.git"
},
"main": "lib/class",
"directories": {
"lib": "lib",
"test": "test"
},
"scripts": {
"test": "make test"
},
"keywords": [ "class", "extend", "object" ],
"author": "Allen Kim",
"license": "MIT",
"readmeFilename": "README.md",
"devDependencies": {
"mocha": ">=1.0",
"should": ">=1.0"
}
}

View file

@ -1,42 +0,0 @@
require("should");
var Class = require('../lib/class.js');
describe('Mode Parser', function() {
it('should parse 0777',function() {
var Person = Class.extend({
init: function(isDancing){
this.dancing = isDancing;
},
dance: function(){
return this.dancing;
}
});
var Ninja = Person.extend({
init: function(){
this._super( false );
},
dance: function(){
// Call the inherited version of dance()
return this._super();
},
swingSword: function(){
return true;
}
});
var p = new Person(true);
p.dance().should.be.true;
var n = new Ninja();
n.dance().should.be.false;
n.swingSword().should.be.true;
// Should all be true
(p instanceof Person).should.be.true;
(p instanceof Class).should.be.true;
(n instanceof Ninja).should.be.true;
(n instanceof Person).should.be.true;
(n instanceof Class).should.be.true;
});
});

View file

@ -42231,7 +42231,7 @@ module.exports = {
abr: true,
skip_ua: ['firefox', 'safari', {
name: 'chrome',
version: '69.0'
version: '75.0'
}, {
name: 'chrome',
version: '79.0'

File diff suppressed because one or more lines are too long

220
node_modules/hls.js/dist/hls.js generated vendored
View file

@ -1551,7 +1551,6 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _fragment_finders__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./fragment-finders */ "./src/controller/fragment-finders.ts");
/* harmony import */ var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/discontinuities */ "./src/utils/discontinuities.ts");
/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../errors */ "./src/errors.ts");
/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/logger */ "./src/utils/logger.ts");
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@ -1573,7 +1572,6 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Objec
var TICK_INTERVAL = 100; // how often to tick in ms
var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {
@ -1674,6 +1672,7 @@ var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {
if (lastCurrentTime > 0 && startPosition === -1) {
this.log("Override startPosition with lastCurrentTime @" + lastCurrentTime.toFixed(3));
startPosition = lastCurrentTime;
this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__["State"].IDLE;
} else {
this.loadedmetadata = false;
@ -1754,7 +1753,7 @@ var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {
}
} else if (this.videoTrackCC !== this.waitingVideoCC) {
// Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found
_utils_logger__WEBPACK_IMPORTED_MODULE_14__["logger"].log("Waiting fragment cc (" + frag.cc + ") cancelled because video is at cc " + this.videoTrackCC);
this.log("Waiting fragment cc (" + frag.cc + ") cancelled because video is at cc " + this.videoTrackCC);
this.clearWaitingFragment();
} else {
// Drop waiting fragment if an earlier fragment is needed
@ -1763,7 +1762,7 @@ var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {
var waitingFragmentAtPosition = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_11__["fragmentWithinToleranceTest"])(bufferInfo.end, this.config.maxFragLookUpTolerance, frag);
if (waitingFragmentAtPosition < 0) {
_utils_logger__WEBPACK_IMPORTED_MODULE_14__["logger"].log("Waiting fragment cc (" + frag.cc + ") @ " + frag.start + " cancelled because another fragment at " + bufferInfo.end + " is needed");
this.log("Waiting fragment cc (" + frag.cc + ") @ " + frag.start + " cancelled because another fragment at " + bufferInfo.end + " is needed");
this.clearWaitingFragment();
}
}
@ -1787,6 +1786,12 @@ var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {
}
};
_proto.resetLoadingState = function resetLoadingState() {
this.clearWaitingFragment();
_BaseStreamController.prototype.resetLoadingState.call(this);
};
_proto.onTickEnd = function onTickEnd() {
var media = this.media;
@ -2074,7 +2079,7 @@ var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {
var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_10__["ChunkMetadata"](frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);
transmuxer.push(payload, initSegmentData, audioCodec, '', frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);
} else {
_utils_logger__WEBPACK_IMPORTED_MODULE_14__["logger"].log("Unknown video PTS for cc " + frag.cc + ", waiting for video PTS before demuxing audio frag " + frag.sn + " of [" + details.startSN + " ," + details.endSN + "],track " + trackId);
this.log("Unknown video PTS for cc " + frag.cc + ", waiting for video PTS before demuxing audio frag " + frag.sn + " of [" + details.startSN + " ," + details.endSN + "],track " + trackId);
var _this$waitingData = this.waitingData = this.waitingData || {
frag: frag,
@ -3654,8 +3659,6 @@ var BaseStreamController = /*#__PURE__*/function (_TaskLoop) {
};
_proto.getNextFragment = function getNextFragment(pos, levelDetails) {
var _frag, _frag2;
var fragments = levelDetails.fragments;
var fragLen = fragments.length;
@ -3693,11 +3696,15 @@ var BaseStreamController = /*#__PURE__*/function (_TaskLoop) {
if (!frag) {
var end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;
frag = this.getFragmentAtPosition(pos, end, levelDetails);
} // If an initSegment is present, it must be buffered first
}
return this.mapToInitFragWhenRequired(frag);
};
if ((_frag = frag) !== null && _frag !== void 0 && _frag.initSegment && !((_frag2 = frag) !== null && _frag2 !== void 0 && _frag2.initSegment.data) && !this.bitrateTest) {
frag = frag.initSegment;
_proto.mapToInitFragWhenRequired = function mapToInitFragWhenRequired(frag) {
// If an initSegment is present, it must be buffered first
if (frag !== null && frag !== void 0 && frag.initSegment && !(frag !== null && frag !== void 0 && frag.initSegment.data) && !this.bitrateTest) {
return frag.initSegment;
}
return frag;
@ -9553,7 +9560,6 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _types_transmuxer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../types/transmuxer */ "./src/types/transmuxer.ts");
/* harmony import */ var _gap_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./gap-controller */ "./src/controller/gap-controller.ts");
/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../errors */ "./src/errors.ts");
/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/logger */ "./src/utils/logger.ts");
@ -9578,7 +9584,6 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Objec
var TICK_INTERVAL = 100; // how often to tick in ms
var StreamController = /*#__PURE__*/function (_BaseStreamController) {
@ -9598,7 +9603,6 @@ var StreamController = /*#__PURE__*/function (_BaseStreamController) {
_this.onvplaying = null;
_this.onvseeked = null;
_this.fragLastKbps = 0;
_this.stalled = false;
_this.couldBacktrack = false;
_this.backtrackFragment = null;
_this.audioCodecSwitch = false;
@ -10071,7 +10075,7 @@ var StreamController = /*#__PURE__*/function (_BaseStreamController) {
this.log('Trigger BUFFER_RESET');
this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].BUFFER_RESET, undefined);
this.fragmentTracker.removeAllFragments();
this.couldBacktrack = this.stalled = false;
this.couldBacktrack = false;
this.startPosition = this.lastCurrentTime = 0;
this.fragPlaying = null;
this.backtrackFragment = null;
@ -10470,7 +10474,7 @@ var StreamController = /*#__PURE__*/function (_BaseStreamController) {
if (startPosition >= 0 && currentTime < startPosition) {
if (media.seeking) {
_utils_logger__WEBPACK_IMPORTED_MODULE_12__["logger"].log("could not seek to " + startPosition + ", already seeking at " + currentTime);
this.log("could not seek to " + startPosition + ", already seeking at " + currentTime);
return;
}
@ -10479,7 +10483,7 @@ var StreamController = /*#__PURE__*/function (_BaseStreamController) {
var delta = bufferStart - startPosition;
if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {
_utils_logger__WEBPACK_IMPORTED_MODULE_12__["logger"].log("adjusting start position by " + delta + " to match buffer start");
this.log("adjusting start position by " + delta + " to match buffer start");
startPosition += delta;
this.startPosition = startPosition;
}
@ -11239,8 +11243,6 @@ var SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) {
}
if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__["State"].IDLE) {
var _foundFrag;
var currentTrackId = this.currentTrackId,
levels = this.levels;
@ -11280,9 +11282,15 @@ var SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) {
foundFrag = fragments[fragLen - 1];
}
if ((_foundFrag = foundFrag) !== null && _foundFrag !== void 0 && _foundFrag.encrypted) {
foundFrag = this.mapToInitFragWhenRequired(foundFrag);
if (!foundFrag) {
return;
}
if (foundFrag.encrypted) {
this.loadKey(foundFrag, trackDetails);
} else if (foundFrag && this.fragmentTracker.getState(foundFrag) === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__["FragmentState"].NOT_LOADED) {
} else if (this.fragmentTracker.getState(foundFrag) === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__["FragmentState"].NOT_LOADED) {
// only load if fragment is not loaded
this.loadFragment(foundFrag, trackDetails, targetBufferTime);
}
@ -11292,7 +11300,11 @@ var SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) {
_proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {
this.fragCurrent = frag;
_BaseStreamController.prototype.loadFragment.call(this, frag, levelDetails, targetBufferTime);
if (frag.sn === 'initSegment') {
this._loadInitSegment(frag);
} else {
_BaseStreamController.prototype.loadFragment.call(this, frag, levelDetails, targetBufferTime);
}
};
_createClass(SubtitleStreamController, [{
@ -11774,8 +11786,10 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/webvtt-parser */ "./src/utils/webvtt-parser.ts");
/* harmony import */ var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/texttrack-utils */ "./src/utils/texttrack-utils.ts");
/* harmony import */ var _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/imsc1-ttml-parser */ "./src/utils/imsc1-ttml-parser.ts");
/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../types/loader */ "./src/types/loader.ts");
/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/logger */ "./src/utils/logger.ts");
/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/mp4-tools */ "./src/utils/mp4-tools.ts");
/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../types/loader */ "./src/types/loader.ts");
/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/logger */ "./src/utils/logger.ts");
@ -12114,7 +12128,9 @@ var TimelineController = /*#__PURE__*/function () {
if (textTrack) {
Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__["clearCurrentCues"])(textTrack);
} else {
textTrack = _this2.createTextTrack('subtitles', track.name, track.lang);
var textTrackKind = _this2._captionsOrSubtitlesFromCharacteristics(track);
textTrack = _this2.createTextTrack(textTrackKind, track.name, track.lang);
if (textTrack) {
textTrack.mode = 'disabled';
@ -12144,6 +12160,21 @@ var TimelineController = /*#__PURE__*/function () {
}
};
_proto._captionsOrSubtitlesFromCharacteristics = function _captionsOrSubtitlesFromCharacteristics(track) {
var _track$attrs;
if ((_track$attrs = track.attrs) !== null && _track$attrs !== void 0 && _track$attrs.CHARACTERISTICS) {
var transcribesSpokenDialog = /transcribes-spoken-dialog/gi.test(track.attrs.CHARACTERISTICS);
var describesMusicAndSound = /describes-music-and-sound/gi.test(track.attrs.CHARACTERISTICS);
if (transcribesSpokenDialog && describesMusicAndSound) {
return 'captions';
}
}
return 'subtitles';
};
_proto.onManifestLoaded = function onManifestLoaded(event, data) {
var _this3 = this;
@ -12185,7 +12216,7 @@ var TimelineController = /*#__PURE__*/function () {
} // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack
if (data.frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_7__["PlaylistLevelType"].MAIN) {
if (data.frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__["PlaylistLevelType"].MAIN) {
var _data$part$index, _data$part;
var sn = data.frag.sn;
@ -12207,7 +12238,7 @@ var TimelineController = /*#__PURE__*/function () {
var initPTS = this.initPTS,
unparsedVttFrags = this.unparsedVttFrags;
if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_7__["PlaylistLevelType"].SUBTITLE) {
if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__["PlaylistLevelType"].SUBTITLE) {
// If fragment is subtitle type, parse as WebVTT.
if (payload.byteLength) {
// We need an initial synchronisation PTS. Store fragments as long as none has arrived.
@ -12272,7 +12303,7 @@ var TimelineController = /*#__PURE__*/function () {
frag: frag
});
}, function (error) {
_utils_logger__WEBPACK_IMPORTED_MODULE_8__["logger"].log("Failed to parse IMSC1: " + error);
_utils_logger__WEBPACK_IMPORTED_MODULE_9__["logger"].log("Failed to parse IMSC1: " + error);
hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].SUBTITLE_FRAG_PROCESSED, {
success: false,
frag: frag,
@ -12282,11 +12313,13 @@ var TimelineController = /*#__PURE__*/function () {
};
_proto._parseVTTs = function _parseVTTs(frag, payload, vttCCs) {
var _this5 = this;
var _frag$initSegment,
_this5 = this;
var hls = this.hls; // Parse the WebVTT file contents.
Object(_utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__["parseWebVTT"])(payload, this.initPTS[frag.cc], this.timescale[frag.cc], vttCCs, frag.cc, frag.start, function (cues) {
var payloadWebVTT = (_frag$initSegment = frag.initSegment) !== null && _frag$initSegment !== void 0 && _frag$initSegment.data ? Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_7__["appendUint8Array"])(frag.initSegment.data, new Uint8Array(payload)) : payload;
Object(_utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__["parseWebVTT"])(payloadWebVTT, this.initPTS[frag.cc], this.timescale[frag.cc], vttCCs, frag.cc, frag.start, function (cues) {
_this5._appendCues(cues, frag.level);
hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].SUBTITLE_FRAG_PROCESSED, {
@ -12297,7 +12330,7 @@ var TimelineController = /*#__PURE__*/function () {
_this5._fallbackToIMSC1(frag, payload); // Something went wrong while parsing. Trigger event with success false.
_utils_logger__WEBPACK_IMPORTED_MODULE_8__["logger"].log("Failed to parse VTT cue: " + error);
_utils_logger__WEBPACK_IMPORTED_MODULE_9__["logger"].log("Failed to parse VTT cue: " + error);
hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].SUBTITLE_FRAG_PROCESSED, {
success: false,
frag: frag,
@ -12358,7 +12391,7 @@ var TimelineController = /*#__PURE__*/function () {
_proto.onFragDecrypted = function onFragDecrypted(event, data) {
var frag = data.frag;
if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_7__["PlaylistLevelType"].SUBTITLE) {
if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__["PlaylistLevelType"].SUBTITLE) {
if (!Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__["isFiniteNumber"])(this.initPTS[frag.cc])) {
this.unparsedVttFrags.push(data);
return;
@ -13123,7 +13156,7 @@ var AACDemuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {
_proto.appendFrame = function appendFrame(track, data, offset) {
_adts__WEBPACK_IMPORTED_MODULE_1__["initTrackConfig"](track, this.observer, data, offset, track.manifestCodec);
var frame = _adts__WEBPACK_IMPORTED_MODULE_1__["appendFrame"](track, data, offset, this.initPTS, this.frameIndex);
var frame = _adts__WEBPACK_IMPORTED_MODULE_1__["appendFrame"](track, data, offset, this.basePTS, this.frameIndex);
if (frame && frame.missing === 0) {
return frame;
@ -13456,12 +13489,14 @@ __webpack_require__.r(__webpack_exports__);
var BaseAudioDemuxer = /*#__PURE__*/function () {
function BaseAudioDemuxer() {
this._audioTrack = void 0;
this._id3Track = void 0;
this.frameIndex = 0;
this.cachedData = null;
this.basePTS = null;
this.initPTS = null;
}
@ -13479,9 +13514,15 @@ var BaseAudioDemuxer = /*#__PURE__*/function () {
};
};
_proto.resetTimeStamp = function resetTimeStamp() {};
_proto.resetTimeStamp = function resetTimeStamp(deaultTimestamp) {
this.initPTS = deaultTimestamp;
this.resetContiguity();
};
_proto.resetContiguity = function resetContiguity() {};
_proto.resetContiguity = function resetContiguity() {
this.basePTS = null;
this.frameIndex = 0;
};
_proto.canParse = function canParse(data, offset) {
return false;
@ -13505,21 +13546,21 @@ var BaseAudioDemuxer = /*#__PURE__*/function () {
var timestamp = id3Data ? _demux_id3__WEBPACK_IMPORTED_MODULE_1__["getTimeStamp"](id3Data) : undefined;
var length = data.length;
if (this.frameIndex === 0 || this.initPTS === null) {
this.initPTS = initPTSFn(timestamp, timeOffset);
if (this.basePTS === null || this.frameIndex === 0 && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__["isFiniteNumber"])(timestamp)) {
this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);
} // more expressive than alternative: id3Data?.length
if (id3Data && id3Data.length > 0) {
id3Track.samples.push({
pts: this.initPTS,
dts: this.initPTS,
pts: this.basePTS,
dts: this.basePTS,
data: id3Data,
type: _types_demuxer__WEBPACK_IMPORTED_MODULE_2__["MetadataSchema"].audioId3
});
}
pts = this.initPTS;
pts = this.basePTS;
while (offset < length) {
if (this.canParse(data, offset)) {
@ -13580,7 +13621,6 @@ var BaseAudioDemuxer = /*#__PURE__*/function () {
this.demux(cachedData, 0);
}
this.frameIndex = 0;
return {
audioTrack: this._audioTrack,
videoTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__["dummyTrack"])(),
@ -13601,8 +13641,12 @@ var BaseAudioDemuxer = /*#__PURE__*/function () {
*/
var initPTSFn = function initPTSFn(timestamp, timeOffset) {
return Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__["isFiniteNumber"])(timestamp) ? timestamp * 90 : timeOffset * 90000;
var initPTSFn = function initPTSFn(timestamp, timeOffset, initPTS) {
if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__["isFiniteNumber"])(timestamp)) {
return timestamp * 90;
}
return timeOffset * 90000 + (initPTS || 0);
};
/* harmony default export */ __webpack_exports__["default"] = (BaseAudioDemuxer);
@ -14608,11 +14652,11 @@ var MP3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {
};
_proto.appendFrame = function appendFrame(track, data, offset) {
if (this.initPTS === null) {
if (this.basePTS === null) {
return;
}
return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__["appendFrame"](track, data, offset, this.initPTS, this.frameIndex);
return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__["appendFrame"](track, data, offset, this.basePTS, this.frameIndex);
};
return MP3Demuxer;
@ -15260,7 +15304,8 @@ var TransmuxerInterface = /*#__PURE__*/function () {
var trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);
var snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;
var partDiff = this.part ? chunkMeta.part - this.part.index : -1;
var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && partDiff === 1);
var progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag === null || lastFrag === void 0 ? void 0 : lastFrag.stats.chunkCount);
var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0));
var now = self.performance.now();
if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {
@ -15362,6 +15407,14 @@ var TransmuxerInterface = /*#__PURE__*/function () {
this.onFlush(data.data);
break;
}
// pass logs from the worker thread to the main logger
case 'workerLog':
if (_utils_logger__WEBPACK_IMPORTED_MODULE_3__["logger"][data.data.logType]) {
_utils_logger__WEBPACK_IMPORTED_MODULE_3__["logger"][data.data.logType](data.data.message);
}
break;
/* falls through */
@ -15433,7 +15486,25 @@ function TransmuxerWorker(self) {
observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].FRAG_DECRYPTED, forwardMessage);
observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].ERROR, forwardMessage);
observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].ERROR, forwardMessage); // forward logger events to main thread
var forwardWorkerLogs = function forwardWorkerLogs() {
var _loop = function _loop(logFn) {
var func = function func(message) {
forwardMessage('workerLog', {
logType: logFn,
message: message
});
};
_utils_logger__WEBPACK_IMPORTED_MODULE_2__["logger"][logFn] = func;
};
for (var logFn in _utils_logger__WEBPACK_IMPORTED_MODULE_2__["logger"]) {
_loop(logFn);
}
};
self.addEventListener('message', function (ev) {
var data = ev.data;
@ -15443,6 +15514,7 @@ function TransmuxerWorker(self) {
var config = JSON.parse(data.config);
self.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__["default"](observer, data.typeSupported, config, data.vendor, data.id);
Object(_utils_logger__WEBPACK_IMPORTED_MODULE_2__["enableLogs"])(config.debug);
forwardWorkerLogs();
forwardMessage('init', null);
break;
}
@ -18248,7 +18320,7 @@ var Hls = /*#__PURE__*/function () {
}], [{
key: "version",
get: function get() {
return "1.2.0";
return "1.2.1";
}
}, {
key: "Events",
@ -20763,7 +20835,14 @@ var PlaylistLoader = /*#__PURE__*/function () {
};
_proto.handleSidxRequest = function handleSidxRequest(response, context) {
var sidxInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__["parseSegmentIndex"])(new Uint8Array(response.data)); // if provided fragment does not contain sidx, early return
var data = new Uint8Array(response.data);
var sidxBox = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__["findBox"])(data, ['sidx'])[0]; // if provided fragment does not contain sidx, early return
if (!sidxBox) {
return;
}
var sidxInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__["parseSegmentIndex"])(sidxBox);
if (!sidxInfo) {
return;
@ -20780,7 +20859,9 @@ var PlaylistLoader = /*#__PURE__*/function () {
}
if (frag.initSegment) {
frag.initSegment.setByteRange(String(sidxInfo.moovEndOffset) + '@0');
var moovBox = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__["findBox"])(data, ['moov'])[0];
var moovEndOffset = moovBox ? moovBox.length : null;
frag.initSegment.setByteRange(String(moovEndOffset) + '@0');
}
});
};
@ -26362,19 +26443,8 @@ function findBox(data, path) {
return results;
}
function parseSegmentIndex(initSegment) {
var moovBox = findBox(initSegment, ['moov']);
var moov = moovBox[0];
var moovEndOffset = moov ? moov.length : null; // we need this in case we need to chop of garbage of the end of current data
var sidxBox = findBox(initSegment, ['sidx']);
if (!sidxBox || !sidxBox[0]) {
return null;
}
function parseSegmentIndex(sidx) {
var references = [];
var sidx = sidxBox[0];
var version = sidx[0]; // set initial offset, we skip the reference ID (not needed)
var index = 8;
@ -26435,8 +26505,7 @@ function parseSegmentIndex(initSegment) {
timescale: timescale,
version: version,
referencesCount: referencesCount,
references: references,
moovEndOffset: moovEndOffset
references: references
};
}
/**
@ -26660,13 +26729,20 @@ function getDuration(data, initData) {
if (videoDuration === 0 && audioDuration === 0) {
// If duration samples are not available in the traf use sidx subsegment_duration
var sidx = parseSegmentIndex(data);
var sidxDuration = 0;
var sidxs = findBox(data, ['sidx']);
if (sidx !== null && sidx !== void 0 && sidx.references) {
return sidx.references.reduce(function (dur, ref) {
return dur + ref.info.duration || 0;
}, 0);
for (var _i = 0; _i < sidxs.length; _i++) {
var sidx = parseSegmentIndex(sidxs[_i]);
if (sidx !== null && sidx !== void 0 && sidx.references) {
sidxDuration += sidx.references.reduce(function (dur, ref) {
return dur + ref.info.duration || 0;
}, 0);
}
}
return sidxDuration;
}
if (videoDuration) {
@ -27051,12 +27127,12 @@ function parseSEIMessageFromNALu(unescapedData, pts, samples) {
if (payloadSize > 16) {
var uuidStrArray = [];
for (var _i = 0; _i < 16; _i++) {
for (var _i2 = 0; _i2 < 16; _i2++) {
var _b = data[seiPtr++].toString(16);
uuidStrArray.push(_b.length == 1 ? '0' + _b : _b);
if (_i === 3 || _i === 5 || _i === 7 || _i === 9) {
if (_i2 === 3 || _i2 === 5 || _i2 === 7 || _i2 === 9) {
uuidStrArray.push('-');
}
}
@ -27064,8 +27140,8 @@ function parseSEIMessageFromNALu(unescapedData, pts, samples) {
var length = payloadSize - 16;
var userDataBytes = new Uint8Array(length);
for (var _i2 = 0; _i2 < length; _i2++) {
userDataBytes[_i2] = data[seiPtr++];
for (var _i3 = 0; _i3 < length; _i3++) {
userDataBytes[_i3] = data[seiPtr++];
}
samples.push({

View file

@ -75,6 +75,7 @@ declare class AudioStreamController extends BaseStreamController implements Netw
startLoad(startPosition: number): void;
doTick(): void;
clearWaitingFragment(): void;
protected resetLoadingState(): void;
protected onTickEnd(): void;
private doTickIdle;
protected getMaxBufferLength(mainBufferLength?: number): number;
@ -253,6 +254,7 @@ declare class BaseStreamController extends TaskLoop implements NetworkComponentA
protected getMaxBufferLength(levelBitrate?: number): number;
protected reduceMaxBufferLength(threshold?: number): boolean;
protected getNextFragment(pos: number, levelDetails: LevelDetails): Fragment | null;
mapToInitFragWhenRequired(frag: Fragment | null): typeof frag;
getNextPart(partList: Part[], frag: Fragment, targetBufferTime: number): number;
private loadedEndOfParts;
protected getInitialLiveFragment(levelDetails: LevelDetails, fragments: Array<Fragment>): Fragment | null;
@ -1946,6 +1948,7 @@ export declare interface LevelAttributes extends AttrList {
BANDWIDTH?: string;
BYTERANGE?: string;
'CLOSED-CAPTIONS'?: string;
CHARACTERISTICS?: string;
CODECS?: string;
DEFAULT?: string;
FORCED?: string;
@ -2455,7 +2458,6 @@ declare class StreamController extends BaseStreamController implements NetworkCo
private onvplaying;
private onvseeked;
private fragLastKbps;
private stalled;
private couldBacktrack;
private backtrackFragment;
private audioCodecSwitch;
@ -2763,6 +2765,7 @@ declare class TimelineController implements ComponentAPI {
private onManifestLoading;
private _cleanTracks;
private onSubtitleTracksUpdated;
private _captionsOrSubtitlesFromCharacteristics;
private onManifestLoaded;
private onFragLoading;
private onFragLoaded;

File diff suppressed because one or more lines are too long

146
node_modules/hls.js/dist/hls.light.js generated vendored
View file

@ -2519,8 +2519,6 @@ var BaseStreamController = /*#__PURE__*/function (_TaskLoop) {
};
_proto.getNextFragment = function getNextFragment(pos, levelDetails) {
var _frag, _frag2;
var fragments = levelDetails.fragments;
var fragLen = fragments.length;
@ -2558,11 +2556,15 @@ var BaseStreamController = /*#__PURE__*/function (_TaskLoop) {
if (!frag) {
var end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;
frag = this.getFragmentAtPosition(pos, end, levelDetails);
} // If an initSegment is present, it must be buffered first
}
return this.mapToInitFragWhenRequired(frag);
};
if ((_frag = frag) !== null && _frag !== void 0 && _frag.initSegment && !((_frag2 = frag) !== null && _frag2 !== void 0 && _frag2.initSegment.data) && !this.bitrateTest) {
frag = frag.initSegment;
_proto.mapToInitFragWhenRequired = function mapToInitFragWhenRequired(frag) {
// If an initSegment is present, it must be buffered first
if (frag !== null && frag !== void 0 && frag.initSegment && !(frag !== null && frag !== void 0 && frag.initSegment.data) && !this.bitrateTest) {
return frag.initSegment;
}
return frag;
@ -7199,7 +7201,6 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _types_transmuxer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../types/transmuxer */ "./src/types/transmuxer.ts");
/* harmony import */ var _gap_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./gap-controller */ "./src/controller/gap-controller.ts");
/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../errors */ "./src/errors.ts");
/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/logger */ "./src/utils/logger.ts");
@ -7224,7 +7225,6 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Objec
var TICK_INTERVAL = 100; // how often to tick in ms
var StreamController = /*#__PURE__*/function (_BaseStreamController) {
@ -7244,7 +7244,6 @@ var StreamController = /*#__PURE__*/function (_BaseStreamController) {
_this.onvplaying = null;
_this.onvseeked = null;
_this.fragLastKbps = 0;
_this.stalled = false;
_this.couldBacktrack = false;
_this.backtrackFragment = null;
_this.audioCodecSwitch = false;
@ -7717,7 +7716,7 @@ var StreamController = /*#__PURE__*/function (_BaseStreamController) {
this.log('Trigger BUFFER_RESET');
this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].BUFFER_RESET, undefined);
this.fragmentTracker.removeAllFragments();
this.couldBacktrack = this.stalled = false;
this.couldBacktrack = false;
this.startPosition = this.lastCurrentTime = 0;
this.fragPlaying = null;
this.backtrackFragment = null;
@ -8116,7 +8115,7 @@ var StreamController = /*#__PURE__*/function (_BaseStreamController) {
if (startPosition >= 0 && currentTime < startPosition) {
if (media.seeking) {
_utils_logger__WEBPACK_IMPORTED_MODULE_12__["logger"].log("could not seek to " + startPosition + ", already seeking at " + currentTime);
this.log("could not seek to " + startPosition + ", already seeking at " + currentTime);
return;
}
@ -8125,7 +8124,7 @@ var StreamController = /*#__PURE__*/function (_BaseStreamController) {
var delta = bufferStart - startPosition;
if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {
_utils_logger__WEBPACK_IMPORTED_MODULE_12__["logger"].log("adjusting start position by " + delta + " to match buffer start");
this.log("adjusting start position by " + delta + " to match buffer start");
startPosition += delta;
this.startPosition = startPosition;
}
@ -9182,7 +9181,7 @@ var AACDemuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {
_proto.appendFrame = function appendFrame(track, data, offset) {
_adts__WEBPACK_IMPORTED_MODULE_1__["initTrackConfig"](track, this.observer, data, offset, track.manifestCodec);
var frame = _adts__WEBPACK_IMPORTED_MODULE_1__["appendFrame"](track, data, offset, this.initPTS, this.frameIndex);
var frame = _adts__WEBPACK_IMPORTED_MODULE_1__["appendFrame"](track, data, offset, this.basePTS, this.frameIndex);
if (frame && frame.missing === 0) {
return frame;
@ -9515,12 +9514,14 @@ __webpack_require__.r(__webpack_exports__);
var BaseAudioDemuxer = /*#__PURE__*/function () {
function BaseAudioDemuxer() {
this._audioTrack = void 0;
this._id3Track = void 0;
this.frameIndex = 0;
this.cachedData = null;
this.basePTS = null;
this.initPTS = null;
}
@ -9538,9 +9539,15 @@ var BaseAudioDemuxer = /*#__PURE__*/function () {
};
};
_proto.resetTimeStamp = function resetTimeStamp() {};
_proto.resetTimeStamp = function resetTimeStamp(deaultTimestamp) {
this.initPTS = deaultTimestamp;
this.resetContiguity();
};
_proto.resetContiguity = function resetContiguity() {};
_proto.resetContiguity = function resetContiguity() {
this.basePTS = null;
this.frameIndex = 0;
};
_proto.canParse = function canParse(data, offset) {
return false;
@ -9564,21 +9571,21 @@ var BaseAudioDemuxer = /*#__PURE__*/function () {
var timestamp = id3Data ? _demux_id3__WEBPACK_IMPORTED_MODULE_1__["getTimeStamp"](id3Data) : undefined;
var length = data.length;
if (this.frameIndex === 0 || this.initPTS === null) {
this.initPTS = initPTSFn(timestamp, timeOffset);
if (this.basePTS === null || this.frameIndex === 0 && Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__["isFiniteNumber"])(timestamp)) {
this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);
} // more expressive than alternative: id3Data?.length
if (id3Data && id3Data.length > 0) {
id3Track.samples.push({
pts: this.initPTS,
dts: this.initPTS,
pts: this.basePTS,
dts: this.basePTS,
data: id3Data,
type: _types_demuxer__WEBPACK_IMPORTED_MODULE_2__["MetadataSchema"].audioId3
});
}
pts = this.initPTS;
pts = this.basePTS;
while (offset < length) {
if (this.canParse(data, offset)) {
@ -9639,7 +9646,6 @@ var BaseAudioDemuxer = /*#__PURE__*/function () {
this.demux(cachedData, 0);
}
this.frameIndex = 0;
return {
audioTrack: this._audioTrack,
videoTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__["dummyTrack"])(),
@ -9660,8 +9666,12 @@ var BaseAudioDemuxer = /*#__PURE__*/function () {
*/
var initPTSFn = function initPTSFn(timestamp, timeOffset) {
return Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__["isFiniteNumber"])(timestamp) ? timestamp * 90 : timeOffset * 90000;
var initPTSFn = function initPTSFn(timestamp, timeOffset, initPTS) {
if (Object(_home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__["isFiniteNumber"])(timestamp)) {
return timestamp * 90;
}
return timeOffset * 90000 + (initPTS || 0);
};
/* harmony default export */ __webpack_exports__["default"] = (BaseAudioDemuxer);
@ -10667,11 +10677,11 @@ var MP3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {
};
_proto.appendFrame = function appendFrame(track, data, offset) {
if (this.initPTS === null) {
if (this.basePTS === null) {
return;
}
return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__["appendFrame"](track, data, offset, this.initPTS, this.frameIndex);
return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__["appendFrame"](track, data, offset, this.basePTS, this.frameIndex);
};
return MP3Demuxer;
@ -11319,7 +11329,8 @@ var TransmuxerInterface = /*#__PURE__*/function () {
var trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);
var snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;
var partDiff = this.part ? chunkMeta.part - this.part.index : -1;
var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && partDiff === 1);
var progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag === null || lastFrag === void 0 ? void 0 : lastFrag.stats.chunkCount);
var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0));
var now = self.performance.now();
if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {
@ -11421,6 +11432,14 @@ var TransmuxerInterface = /*#__PURE__*/function () {
this.onFlush(data.data);
break;
}
// pass logs from the worker thread to the main logger
case 'workerLog':
if (_utils_logger__WEBPACK_IMPORTED_MODULE_3__["logger"][data.data.logType]) {
_utils_logger__WEBPACK_IMPORTED_MODULE_3__["logger"][data.data.logType](data.data.message);
}
break;
/* falls through */
@ -11492,7 +11511,25 @@ function TransmuxerWorker(self) {
observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].FRAG_DECRYPTED, forwardMessage);
observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].ERROR, forwardMessage);
observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].ERROR, forwardMessage); // forward logger events to main thread
var forwardWorkerLogs = function forwardWorkerLogs() {
var _loop = function _loop(logFn) {
var func = function func(message) {
forwardMessage('workerLog', {
logType: logFn,
message: message
});
};
_utils_logger__WEBPACK_IMPORTED_MODULE_2__["logger"][logFn] = func;
};
for (var logFn in _utils_logger__WEBPACK_IMPORTED_MODULE_2__["logger"]) {
_loop(logFn);
}
};
self.addEventListener('message', function (ev) {
var data = ev.data;
@ -11502,6 +11539,7 @@ function TransmuxerWorker(self) {
var config = JSON.parse(data.config);
self.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__["default"](observer, data.typeSupported, config, data.vendor, data.id);
Object(_utils_logger__WEBPACK_IMPORTED_MODULE_2__["enableLogs"])(config.debug);
forwardWorkerLogs();
forwardMessage('init', null);
break;
}
@ -14320,7 +14358,7 @@ var Hls = /*#__PURE__*/function () {
}], [{
key: "version",
get: function get() {
return "1.2.0";
return "1.2.1";
}
}, {
key: "Events",
@ -16835,7 +16873,14 @@ var PlaylistLoader = /*#__PURE__*/function () {
};
_proto.handleSidxRequest = function handleSidxRequest(response, context) {
var sidxInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__["parseSegmentIndex"])(new Uint8Array(response.data)); // if provided fragment does not contain sidx, early return
var data = new Uint8Array(response.data);
var sidxBox = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__["findBox"])(data, ['sidx'])[0]; // if provided fragment does not contain sidx, early return
if (!sidxBox) {
return;
}
var sidxInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__["parseSegmentIndex"])(sidxBox);
if (!sidxInfo) {
return;
@ -16852,7 +16897,9 @@ var PlaylistLoader = /*#__PURE__*/function () {
}
if (frag.initSegment) {
frag.initSegment.setByteRange(String(sidxInfo.moovEndOffset) + '@0');
var moovBox = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__["findBox"])(data, ['moov'])[0];
var moovEndOffset = moovBox ? moovBox.length : null;
frag.initSegment.setByteRange(String(moovEndOffset) + '@0');
}
});
};
@ -20510,19 +20557,8 @@ function findBox(data, path) {
return results;
}
function parseSegmentIndex(initSegment) {
var moovBox = findBox(initSegment, ['moov']);
var moov = moovBox[0];
var moovEndOffset = moov ? moov.length : null; // we need this in case we need to chop of garbage of the end of current data
var sidxBox = findBox(initSegment, ['sidx']);
if (!sidxBox || !sidxBox[0]) {
return null;
}
function parseSegmentIndex(sidx) {
var references = [];
var sidx = sidxBox[0];
var version = sidx[0]; // set initial offset, we skip the reference ID (not needed)
var index = 8;
@ -20583,8 +20619,7 @@ function parseSegmentIndex(initSegment) {
timescale: timescale,
version: version,
referencesCount: referencesCount,
references: references,
moovEndOffset: moovEndOffset
references: references
};
}
/**
@ -20808,13 +20843,20 @@ function getDuration(data, initData) {
if (videoDuration === 0 && audioDuration === 0) {
// If duration samples are not available in the traf use sidx subsegment_duration
var sidx = parseSegmentIndex(data);
var sidxDuration = 0;
var sidxs = findBox(data, ['sidx']);
if (sidx !== null && sidx !== void 0 && sidx.references) {
return sidx.references.reduce(function (dur, ref) {
return dur + ref.info.duration || 0;
}, 0);
for (var _i = 0; _i < sidxs.length; _i++) {
var sidx = parseSegmentIndex(sidxs[_i]);
if (sidx !== null && sidx !== void 0 && sidx.references) {
sidxDuration += sidx.references.reduce(function (dur, ref) {
return dur + ref.info.duration || 0;
}, 0);
}
}
return sidxDuration;
}
if (videoDuration) {
@ -21199,12 +21241,12 @@ function parseSEIMessageFromNALu(unescapedData, pts, samples) {
if (payloadSize > 16) {
var uuidStrArray = [];
for (var _i = 0; _i < 16; _i++) {
for (var _i2 = 0; _i2 < 16; _i2++) {
var _b = data[seiPtr++].toString(16);
uuidStrArray.push(_b.length == 1 ? '0' + _b : _b);
if (_i === 3 || _i === 5 || _i === 7 || _i === 9) {
if (_i2 === 3 || _i2 === 5 || _i2 === 7 || _i2 === 9) {
uuidStrArray.push('-');
}
}
@ -21212,8 +21254,8 @@ function parseSEIMessageFromNALu(unescapedData, pts, samples) {
var length = payloadSize - 16;
var userDataBytes = new Uint8Array(length);
for (var _i2 = 0; _i2 < length; _i2++) {
userDataBytes[_i2] = data[seiPtr++];
for (var _i3 = 0; _i3 < length; _i3++) {
userDataBytes[_i3] = data[seiPtr++];
}
samples.push({

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
node_modules/hls.js/package.json generated vendored
View file

@ -1 +1 @@
{"name":"hls.js","license":"Apache-2.0","description":"JavaScript HLS client using MediaSourceExtension","homepage":"https://github.com/video-dev/hls.js","authors":"Guillaume du Pontavice <g.du.pontavice@gmail.com>","repository":{"type":"git","url":"https://github.com/video-dev/hls.js"},"bugs":{"url":"https://github.com/video-dev/hls.js/issues"},"main":"./dist/hls.js","types":"./dist/hls.js.d.ts","files":["dist/**/*","src/**/*"],"publishConfig":{"access":"public"},"scripts":{"build":"webpack --progress && npm run build:types","build:ci":"webpack && tsc --build tsconfig-lib.json && api-extractor run","build:debug":"webpack --progress --env debug --env demo","build:watch":"webpack --progress --env debug --env demo --watch","build:types":"tsc --build tsconfig-lib.json && api-extractor run --local","dev":"webpack serve --progress --env debug --env demo --port 8000 --static .","docs":"esdoc","lint":"eslint src/ tests/ --ext .js --ext .ts","lint:fix":"npm run lint -- --fix","lint:quiet":"npm run lint -- --quiet","lint:staged":"lint-staged","prettier":"prettier --write .","prettier:verify":"prettier --check .","pretest":"npm run lint","sanity-check":"npm run lint && npm run prettier:verify && npm run type-check && npm run docs && npm run build:types && npm run build && npm run test:unit","start":"npm run dev","test":"npm run test:unit && npm run test:func","test:unit":"karma start karma.conf.js","test:unit:debug":"DEBUG_UNIT_TESTS=1 karma start karma.conf.js --auto-watch --no-single-run --browsers Chrome","test:unit:watch":"karma start karma.conf.js --auto-watch --no-single-run","test:func":"BABEL_ENV=development mocha --require @babel/register tests/functional/auto/setup.js --timeout 40000 --exit","test:func:light":"BABEL_ENV=development HLSJS_LIGHT=1 mocha --require @babel/register tests/functional/auto/setup.js --timeout 40000 --exit","test:func:sauce":"SAUCE=1 UA=safari OS='OS X 10.15' BABEL_ENV=development mocha --require @babel/register tests/functional/auto/setup.js --timeout 40000 --exit","type-check":"tsc --noEmit","type-check:watch":"npm run type-check -- --watch","prepare":"husky install"},"devDependencies":{"@babel/core":"7.18.9","@babel/helper-module-imports":"7.18.6","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-object-rest-spread":"7.18.9","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/plugin-transform-object-assign":"7.18.6","@babel/preset-env":"7.18.9","@babel/preset-typescript":"7.18.6","@babel/register":"7.18.9","@itsjamie/esdoc-cli":"0.5.0","@itsjamie/esdoc-core":"0.5.0","@itsjamie/esdoc-ecmascript-proposal-plugin":"0.5.0","@itsjamie/esdoc-standard-plugin":"0.5.0","@itsjamie/esdoc-typescript-plugin":"0.5.0","@microsoft/api-extractor":"7.28.4","@types/chai":"4.3.1","@types/chart.js":"2.9.37","@types/mocha":"9.1.1","@types/sinon-chai":"3.2.8","@typescript-eslint/eslint-plugin":"5.23.0","@typescript-eslint/parser":"5.23.0","babel-loader":"8.2.5","babel-plugin-transform-remove-console":"6.9.4","chai":"4.3.6","chart.js":"2.9.4","chromedriver":"103.0.0","eslint":"8.20.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-mocha":"10.0.5","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"6.0.0","eventemitter3":"4.0.7","http-server":"14.1.1","husky":"8.0.1","istanbul-instrumenter-loader":"3.0.1","jsonpack":"1.1.5","karma":"6.4.0","karma-chrome-launcher":"3.1.1","karma-coverage-istanbul-reporter":"3.0.3","karma-mocha":"2.0.1","karma-mocha-reporter":"2.2.5","karma-sinon-chai":"2.0.2","karma-sourcemap-loader":"0.3.8","karma-webpack":"4.0.2","lint-staged":"13.0.3","micromatch":"4.0.5","mocha":"10.0.0","netlify-cli":"10.7.1","prettier":"2.7.1","promise-polyfill":"8.2.3","sauce-connect-launcher":"1.3.2","selenium-webdriver":"4.3.1","semver":"7.3.7","sinon":"14.0.0","sinon-chai":"3.7.0","typescript":"4.7.4","url-toolkit":"2.2.5","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"4.9.3","webpack-merge":"5.8.0","webworkify-webpack":"2.1.5"},"version":"1.2.0"}
{"name":"hls.js","license":"Apache-2.0","description":"JavaScript HLS client using MediaSourceExtension","homepage":"https://github.com/video-dev/hls.js","authors":"Guillaume du Pontavice <g.du.pontavice@gmail.com>","repository":{"type":"git","url":"https://github.com/video-dev/hls.js"},"bugs":{"url":"https://github.com/video-dev/hls.js/issues"},"main":"./dist/hls.js","types":"./dist/hls.js.d.ts","files":["dist/**/*","src/**/*"],"publishConfig":{"access":"public"},"scripts":{"build":"webpack --progress && npm run build:types","build:ci":"webpack && tsc --build tsconfig-lib.json && api-extractor run","build:debug":"webpack --progress --env debug --env demo","build:watch":"webpack --progress --env debug --env demo --watch","build:types":"tsc --build tsconfig-lib.json && api-extractor run --local","dev":"webpack serve --progress --env debug --env demo --port 8000 --static .","docs":"esdoc","lint":"eslint src/ tests/ --ext .js --ext .ts","lint:fix":"npm run lint -- --fix","lint:quiet":"npm run lint -- --quiet","lint:staged":"lint-staged","prettier":"prettier --write .","prettier:verify":"prettier --check .","pretest":"npm run lint","sanity-check":"npm run lint && npm run prettier:verify && npm run type-check && npm run docs && npm run build:types && npm run build && npm run test:unit","start":"npm run dev","test":"npm run test:unit && npm run test:func","test:unit":"karma start karma.conf.js","test:unit:debug":"DEBUG_UNIT_TESTS=1 karma start karma.conf.js --auto-watch --no-single-run --browsers Chrome","test:unit:watch":"karma start karma.conf.js --auto-watch --no-single-run","test:func":"BABEL_ENV=development mocha --require @babel/register tests/functional/auto/setup.js --timeout 40000 --exit","test:func:light":"BABEL_ENV=development HLSJS_LIGHT=1 mocha --require @babel/register tests/functional/auto/setup.js --timeout 40000 --exit","test:func:sauce":"SAUCE=1 UA=safari OS='OS X 10.15' BABEL_ENV=development mocha --require @babel/register tests/functional/auto/setup.js --timeout 40000 --exit","type-check":"tsc --noEmit","type-check:watch":"npm run type-check -- --watch","prepare":"husky install"},"devDependencies":{"@babel/core":"7.18.10","@babel/helper-module-imports":"7.18.6","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-object-rest-spread":"7.18.9","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/plugin-transform-object-assign":"7.18.6","@babel/preset-env":"7.18.10","@babel/preset-typescript":"7.18.6","@babel/register":"7.18.9","@itsjamie/esdoc-cli":"0.5.0","@itsjamie/esdoc-core":"0.5.0","@itsjamie/esdoc-ecmascript-proposal-plugin":"0.5.0","@itsjamie/esdoc-standard-plugin":"0.5.0","@itsjamie/esdoc-typescript-plugin":"0.5.0","@microsoft/api-extractor":"7.28.6","@types/chai":"4.3.3","@types/chart.js":"2.9.37","@types/mocha":"9.1.1","@types/sinon-chai":"3.2.8","@typescript-eslint/eslint-plugin":"5.23.0","@typescript-eslint/parser":"5.23.0","babel-loader":"8.2.5","babel-plugin-transform-remove-console":"6.9.4","chai":"4.3.6","chart.js":"2.9.4","chromedriver":"104.0.0","eslint":"8.21.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-mocha":"10.1.0","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"6.0.0","eventemitter3":"4.0.7","http-server":"14.1.1","husky":"8.0.1","istanbul-instrumenter-loader":"3.0.1","jsonpack":"1.1.5","karma":"6.4.0","karma-chrome-launcher":"3.1.1","karma-coverage-istanbul-reporter":"3.0.3","karma-mocha":"2.0.1","karma-mocha-reporter":"2.2.5","karma-sinon-chai":"2.0.2","karma-sourcemap-loader":"0.3.8","karma-webpack":"4.0.2","lint-staged":"13.0.3","micromatch":"4.0.5","mocha":"10.0.0","netlify-cli":"10.7.1","prettier":"2.7.1","promise-polyfill":"8.2.3","sauce-connect-launcher":"1.3.2","selenium-webdriver":"4.4.0","semver":"7.3.7","sinon":"14.0.0","sinon-chai":"3.7.0","typescript":"4.7.4","url-toolkit":"2.2.5","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"4.9.3","webpack-merge":"5.8.0","webworkify-webpack":"2.1.5"},"version":"1.2.1"}

View file

@ -11,7 +11,6 @@ import { ChunkMetadata } from '../types/transmuxer';
import { fragmentWithinToleranceTest } from './fragment-finders';
import { alignMediaPlaylistByPDT } from '../utils/discontinuities';
import { ErrorDetails } from '../errors';
import { logger } from '../utils/logger';
import type { NetworkComponentAPI } from '../types/component-api';
import type { FragmentTracker } from './fragment-tracker';
import type { TransmuxerResult } from '../types/transmuxer';
@ -136,6 +135,7 @@ class AudioStreamController
3
)}`
);
startPosition = lastCurrentTime;
this.state = State.IDLE;
} else {
this.loadedmetadata = false;
@ -197,7 +197,7 @@ class AudioStreamController
}
} else if (this.videoTrackCC !== this.waitingVideoCC) {
// Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found
logger.log(
this.log(
`Waiting fragment cc (${frag.cc}) cancelled because video is at cc ${this.videoTrackCC}`
);
this.clearWaitingFragment();
@ -215,7 +215,7 @@ class AudioStreamController
frag
);
if (waitingFragmentAtPosition < 0) {
logger.log(
this.log(
`Waiting fragment cc (${frag.cc}) @ ${frag.start} cancelled because another fragment at ${bufferInfo.end} is needed`
);
this.clearWaitingFragment();
@ -240,6 +240,11 @@ class AudioStreamController
}
}
protected resetLoadingState() {
this.clearWaitingFragment();
super.resetLoadingState();
}
protected onTickEnd() {
const { media } = this;
if (!media || !media.readyState) {
@ -550,7 +555,7 @@ class AudioStreamController
initPTS
);
} else {
logger.log(
this.log(
`Unknown video PTS for cc ${frag.cc}, waiting for video PTS before demuxing audio frag ${frag.sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`
);
const { cache } = (this.waitingData = this.waitingData || {

View file

@ -854,9 +854,13 @@ export default class BaseStreamController
frag = this.getFragmentAtPosition(pos, end, levelDetails);
}
return this.mapToInitFragWhenRequired(frag);
}
mapToInitFragWhenRequired(frag: Fragment | null): typeof frag {
// If an initSegment is present, it must be buffered first
if (frag?.initSegment && !frag?.initSegment.data && !this.bitrateTest) {
frag = frag.initSegment;
return frag.initSegment;
}
return frag;

View file

@ -13,7 +13,6 @@ import type { TransmuxerResult } from '../types/transmuxer';
import { ChunkMetadata } from '../types/transmuxer';
import GapController from './gap-controller';
import { ErrorDetails } from '../errors';
import { logger } from '../utils/logger';
import type Hls from '../hls';
import type { LevelDetails } from '../loader/level-details';
import type { TrackSet } from '../types/track';
@ -52,7 +51,6 @@ export default class StreamController
private onvplaying: EventListener | null = null;
private onvseeked: EventListener | null = null;
private fragLastKbps: number = 0;
private stalled: boolean = false;
private couldBacktrack: boolean = false;
private backtrackFragment: Fragment | null = null;
private audioCodecSwitch: boolean = false;
@ -546,7 +544,7 @@ export default class StreamController
this.log('Trigger BUFFER_RESET');
this.hls.trigger(Events.BUFFER_RESET, undefined);
this.fragmentTracker.removeAllFragments();
this.couldBacktrack = this.stalled = false;
this.couldBacktrack = false;
this.startPosition = this.lastCurrentTime = 0;
this.fragPlaying = null;
this.backtrackFragment = null;
@ -982,7 +980,7 @@ export default class StreamController
// at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered
if (startPosition >= 0 && currentTime < startPosition) {
if (media.seeking) {
logger.log(
this.log(
`could not seek to ${startPosition}, already seeking at ${currentTime}`
);
return;
@ -995,9 +993,7 @@ export default class StreamController
(delta < this.config.maxBufferHole ||
delta < this.config.maxFragLookUpTolerance)
) {
logger.log(
`adjusting start position by ${delta} to match buffer start`
);
this.log(`adjusting start position by ${delta} to match buffer start`);
startPosition += delta;
this.startPosition = startPosition;
}

View file

@ -371,7 +371,7 @@ export class SubtitleStreamController
const fragLen = fragments.length;
const end = trackDetails.edge;
let foundFrag;
let foundFrag: Fragment | null;
const fragPrevious = this.fragPrevious;
if (targetBufferTime < end) {
const { maxFragLookUpTolerance } = config;
@ -392,10 +392,14 @@ export class SubtitleStreamController
foundFrag = fragments[fragLen - 1];
}
if (foundFrag?.encrypted) {
foundFrag = this.mapToInitFragWhenRequired(foundFrag);
if (!foundFrag) {
return;
}
if (foundFrag.encrypted) {
this.loadKey(foundFrag, trackDetails);
} else if (
foundFrag &&
this.fragmentTracker.getState(foundFrag) === FragmentState.NOT_LOADED
) {
// only load if fragment is not loaded
@ -410,7 +414,11 @@ export class SubtitleStreamController
targetBufferTime: number
) {
this.fragCurrent = frag;
super.loadFragment(frag, levelDetails, targetBufferTime);
if (frag.sn === 'initSegment') {
this._loadInitSegment(frag);
} else {
super.loadFragment(frag, levelDetails, targetBufferTime);
}
}
get mediaBufferTimeRanges(): TimeRange[] {

View file

@ -9,6 +9,7 @@ import {
removeCuesInRange,
} from '../utils/texttrack-utils';
import { parseIMSC1, IMSC1_CODEC } from '../utils/imsc1-ttml-parser';
import { appendUint8Array } from '../utils/mp4-tools';
import { PlaylistLevelType } from '../types/loader';
import { Fragment } from '../loader/fragment';
import {
@ -361,8 +362,10 @@ export class TimelineController implements ComponentAPI {
if (textTrack) {
clearCurrentCues(textTrack);
} else {
const textTrackKind =
this._captionsOrSubtitlesFromCharacteristics(track);
textTrack = this.createTextTrack(
'subtitles',
textTrackKind,
track.name,
track.lang
);
@ -392,6 +395,25 @@ export class TimelineController implements ComponentAPI {
}
}
private _captionsOrSubtitlesFromCharacteristics(
track: MediaPlaylist
): TextTrackKind {
if (track.attrs?.CHARACTERISTICS) {
const transcribesSpokenDialog = /transcribes-spoken-dialog/gi.test(
track.attrs.CHARACTERISTICS
);
const describesMusicAndSound = /describes-music-and-sound/gi.test(
track.attrs.CHARACTERISTICS
);
if (transcribesSpokenDialog && describesMusicAndSound) {
return 'captions';
}
}
return 'subtitles';
}
private onManifestLoaded(
event: Events.MANIFEST_LOADED,
data: ManifestLoadedData
@ -533,8 +555,11 @@ export class TimelineController implements ComponentAPI {
private _parseVTTs(frag: Fragment, payload: ArrayBuffer, vttCCs: any) {
const hls = this.hls;
// Parse the WebVTT file contents.
const payloadWebVTT = frag.initSegment?.data
? appendUint8Array(frag.initSegment.data, new Uint8Array(payload))
: payload;
parseWebVTT(
payload,
payloadWebVTT,
this.initPTS[frag.cc],
this.timescale[frag.cc],
vttCCs,

View file

@ -79,7 +79,7 @@ class AACDemuxer extends BaseAudioDemuxer {
track,
data,
offset,
this.initPTS as number,
this.basePTS as number,
this.frameIndex
);
if (frame && frame.missing === 0) {

View file

@ -19,6 +19,7 @@ class BaseAudioDemuxer implements Demuxer {
protected _id3Track!: DemuxedMetadataTrack;
protected frameIndex: number = 0;
protected cachedData: Uint8Array | null = null;
protected basePTS: number | null = null;
protected initPTS: number | null = null;
resetInitSegment(
@ -38,9 +39,15 @@ class BaseAudioDemuxer implements Demuxer {
};
}
resetTimeStamp() {}
resetTimeStamp(deaultTimestamp) {
this.initPTS = deaultTimestamp;
this.resetContiguity();
}
resetContiguity(): void {}
resetContiguity(): void {
this.basePTS = null;
this.frameIndex = 0;
}
canParse(data: Uint8Array, offset: number): boolean {
return false;
@ -68,21 +75,24 @@ class BaseAudioDemuxer implements Demuxer {
const timestamp = id3Data ? ID3.getTimeStamp(id3Data) : undefined;
const length = data.length;
if (this.frameIndex === 0 || this.initPTS === null) {
this.initPTS = initPTSFn(timestamp, timeOffset);
if (
this.basePTS === null ||
(this.frameIndex === 0 && Number.isFinite(timestamp))
) {
this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);
}
// more expressive than alternative: id3Data?.length
if (id3Data && id3Data.length > 0) {
id3Track.samples.push({
pts: this.initPTS,
dts: this.initPTS,
pts: this.basePTS,
dts: this.basePTS,
data: id3Data,
type: MetadataSchema.audioId3,
});
}
pts = this.initPTS;
pts = this.basePTS;
while (offset < length) {
if (this.canParse(data, offset)) {
@ -145,8 +155,6 @@ class BaseAudioDemuxer implements Demuxer {
this.demux(cachedData, 0);
}
this.frameIndex = 0;
return {
audioTrack: this._audioTrack,
videoTrack: dummyTrack() as DemuxedVideoTrack,
@ -166,10 +174,12 @@ class BaseAudioDemuxer implements Demuxer {
*/
export const initPTSFn = (
timestamp: number | undefined,
timeOffset: number
timeOffset: number,
initPTS: number | null
): number => {
return Number.isFinite(timestamp as number)
? timestamp! * 90
: timeOffset * 90000;
if (Number.isFinite(timestamp as number)) {
return timestamp! * 90;
}
return timeOffset * 90000 + (initPTS || 0);
};
export default BaseAudioDemuxer;

View file

@ -57,14 +57,14 @@ class MP3Demuxer extends BaseAudioDemuxer {
}
appendFrame(track, data, offset) {
if (this.initPTS === null) {
if (this.basePTS === null) {
return;
}
return MpegAudio.appendFrame(
track,
data,
offset,
this.initPTS,
this.basePTS,
this.frameIndex
);
}

View file

@ -166,8 +166,14 @@ export default class TransmuxerInterface {
const trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);
const snDiff = lastFrag ? chunkMeta.sn - (lastFrag.sn as number) : -1;
const partDiff = this.part ? chunkMeta.part - this.part.index : -1;
const progressive =
snDiff === 0 &&
chunkMeta.id > 1 &&
chunkMeta.id === lastFrag?.stats.chunkCount;
const contiguous =
!trackSwitch && (snDiff === 1 || (snDiff === 0 && partDiff === 1));
!trackSwitch &&
(snDiff === 1 ||
(snDiff === 0 && (partDiff === 1 || (progressive && partDiff <= 0))));
const now = self.performance.now();
if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {
@ -291,6 +297,13 @@ export default class TransmuxerInterface {
break;
}
// pass logs from the worker thread to the main logger
case 'workerLog':
if (logger[data.data.logType]) {
logger[data.data.logType](data.data.message);
}
break;
/* falls through */
default: {
data.data = data.data || {};

View file

@ -1,6 +1,6 @@
import Transmuxer, { isPromise } from '../demux/transmuxer';
import { Events } from '../events';
import { enableLogs } from '../utils/logger';
import { ILogFunction, enableLogs, logger } from '../utils/logger';
import { EventEmitter } from 'eventemitter3';
import type { RemuxedTrack, RemuxerResult } from '../types/remuxer';
import type { TransmuxerResult, ChunkMetadata } from '../types/transmuxer';
@ -15,6 +15,20 @@ export default function TransmuxerWorker(self) {
observer.on(Events.FRAG_DECRYPTED, forwardMessage);
observer.on(Events.ERROR, forwardMessage);
// forward logger events to main thread
const forwardWorkerLogs = () => {
for (const logFn in logger) {
const func: ILogFunction = (message?) => {
forwardMessage('workerLog', {
logType: logFn,
message,
});
};
logger[logFn] = func;
}
};
self.addEventListener('message', (ev) => {
const data = ev.data;
switch (data.cmd) {
@ -28,6 +42,7 @@ export default function TransmuxerWorker(self) {
data.id
);
enableLogs(config.debug);
forwardWorkerLogs();
forwardMessage('init', null);
break;
}

View file

@ -12,7 +12,7 @@
import { Events } from '../events';
import { ErrorDetails, ErrorTypes } from '../errors';
import { logger } from '../utils/logger';
import { parseSegmentIndex } from '../utils/mp4-tools';
import { parseSegmentIndex, findBox } from '../utils/mp4-tools';
import M3U8Parser from './m3u8-parser';
import type { LevelParsed } from '../types/level';
import type {
@ -543,10 +543,13 @@ class PlaylistLoader {
response: LoaderResponse,
context: PlaylistLoaderContext
): void {
const sidxInfo = parseSegmentIndex(
new Uint8Array(response.data as ArrayBuffer)
);
const data = new Uint8Array(response.data as ArrayBuffer);
const sidxBox = findBox(data, ['sidx'])[0];
// if provided fragment does not contain sidx, early return
if (!sidxBox) {
return;
}
const sidxInfo = parseSegmentIndex(sidxBox);
if (!sidxInfo) {
return;
}
@ -564,7 +567,9 @@ class PlaylistLoader {
);
}
if (frag.initSegment) {
frag.initSegment.setByteRange(String(sidxInfo.moovEndOffset) + '@0');
const moovBox = findBox(data, ['moov'])[0];
const moovEndOffset = moovBox ? moovBox.length : null;
frag.initSegment.setByteRange(String(moovEndOffset) + '@0');
}
});
}

View file

@ -24,6 +24,7 @@ export interface LevelAttributes extends AttrList {
BANDWIDTH?: string;
BYTERANGE?: string;
'CLOSED-CAPTIONS'?: string;
CHARACTERISTICS?: string;
CODECS?: string;
DEFAULT?: string;
FORCED?: string;

View file

@ -1,4 +1,4 @@
interface ILogFunction {
export interface ILogFunction {
(message?: any, ...optionalParams: any[]): void;
}

View file

@ -91,22 +91,10 @@ type SidxInfo = {
version: number;
referencesCount: number;
references: any[];
moovEndOffset: number | null;
};
export function parseSegmentIndex(initSegment: Uint8Array): SidxInfo | null {
const moovBox = findBox(initSegment, ['moov']);
const moov = moovBox[0];
const moovEndOffset = moov ? moov.length : null; // we need this in case we need to chop of garbage of the end of current data
const sidxBox = findBox(initSegment, ['sidx']);
if (!sidxBox || !sidxBox[0]) {
return null;
}
export function parseSegmentIndex(sidx: Uint8Array): SidxInfo | null {
const references: any[] = [];
const sidx = sidxBox[0];
const version = sidx[0];
@ -179,7 +167,6 @@ export function parseSegmentIndex(initSegment: Uint8Array): SidxInfo | null {
version,
referencesCount,
references,
moovEndOffset,
};
}
@ -409,13 +396,19 @@ export function getDuration(data: Uint8Array, initData: InitData) {
}
if (videoDuration === 0 && audioDuration === 0) {
// If duration samples are not available in the traf use sidx subsegment_duration
const sidx = parseSegmentIndex(data);
if (sidx?.references) {
return sidx.references.reduce(
(dur, ref) => dur + ref.info.duration || 0,
0
);
let sidxDuration = 0;
const sidxs = findBox(data, ['sidx']);
for (let i = 0; i < sidxs.length; i++) {
const sidx = parseSegmentIndex(sidxs[i]);
if (sidx?.references) {
sidxDuration += sidx.references.reduce(
(dur, ref) => dur + ref.info.duration || 0,
0
);
}
}
return sidxDuration;
}
if (videoDuration) {
return videoDuration;

4
node_modules/jquery/AUTHORS.txt generated vendored
View file

@ -329,3 +329,7 @@ Beatriz Rezener <beatrizrezener@users.noreply.github.com>
Natalia Sroka <37873210+natipo@users.noreply.github.com>
Wonhyoung Park <wh05.park@samsung.com>
Dallas Fraser <dallas.fraser.waterloo@gmail.com>
fecore1 <89127124+fecore1@users.noreply.github.com>
ygj6 <7699524+ygj6@users.noreply.github.com>
Simon Legner <Simon.Legner@gmail.com>
Vladimir Sitnikov <sitnikov.vladimir@gmail.com>

6
node_modules/jquery/README.md generated vendored
View file

@ -5,7 +5,7 @@
For information on how to get started and how to use jQuery, please see [jQuery's documentation](https://api.jquery.com/).
For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).
If upgrading, please see the [blog post for 3.6.0](https://blog.jquery.com/2021/03/02/jquery-3-6-0-released/). This includes notable differences from the previous version and a more readable changelog.
If upgrading, please see the [blog post for 3.6.1](https://blog.jquery.com/2022/08/26/jquery-3-6-1-maintenance-release/). This includes notable differences from the previous version and a more readable changelog.
## Including jQuery
@ -16,7 +16,7 @@ Below are some of the most common ways to include jQuery.
#### Script tag
```html
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.1.min.js"></script>
```
#### Babel
@ -29,7 +29,7 @@ import $ from "jquery";
#### Browserify/Webpack
There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documentation. In the script, including jQuery will usually look like this...
There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.js.org/). For more information on using these tools, please refer to the corresponding project's documentation. In the script, including jQuery will usually look like this...
```js
var $ = require( "jquery" );

214
node_modules/jquery/dist/jquery.js generated vendored
View file

@ -1,5 +1,5 @@
/*!
* jQuery JavaScript Library v3.6.0
* jQuery JavaScript Library v3.6.1
* https://jquery.com/
*
* Includes Sizzle.js
@ -9,7 +9,7 @@
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2021-03-02T17:08Z
* Date: 2022-08-26T17:52Z
*/
( function( global, factory ) {
@ -23,7 +23,7 @@
// (such as Node.js), expose a factory as module.exports.
// This accentuates the need for the creation of a real `window`.
// e.g. var jQuery = require("jquery")(window);
// See ticket #14549 for more info.
// See ticket trac-14549 for more info.
module.exports = global.document ?
factory( global, true ) :
function( w ) {
@ -151,7 +151,7 @@ function toType( obj ) {
var
version = "3.6.0",
version = "3.6.1",
// Define a local copy of jQuery
jQuery = function( selector, context ) {
@ -3129,8 +3129,8 @@ jQuery.fn.extend( {
var rootjQuery,
// A simple way to check for HTML strings
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
// Strict HTML recognition (#11290: must start with <)
// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
// Strict HTML recognition (trac-11290: must start with <)
// Shortcut simple #id case for speed
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
@ -4087,7 +4087,7 @@ jQuery.extend( {
isReady: false,
// A counter to track how many items to wait for before
// the ready event fires. See #6781
// the ready event fires. See trac-6781
readyWait: 1,
// Handle when the DOM is ready
@ -4215,7 +4215,7 @@ function fcamelCase( _all, letter ) {
// Convert dashed to camelCase; used by the css and data modules
// Support: IE <=9 - 11, Edge 12 - 15
// Microsoft forgot to hump their vendor prefix (#9572)
// Microsoft forgot to hump their vendor prefix (trac-9572)
function camelCase( string ) {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
}
@ -4251,7 +4251,7 @@ Data.prototype = {
value = {};
// We can accept data for non-element nodes in modern browsers,
// but we should not, see #8335.
// but we should not, see trac-8335.
// Always return an empty object.
if ( acceptData( owner ) ) {
@ -4490,7 +4490,7 @@ jQuery.fn.extend( {
while ( i-- ) {
// Support: IE 11 only
// The attrs elements can be null (#14894)
// The attrs elements can be null (trac-14894)
if ( attrs[ i ] ) {
name = attrs[ i ].name;
if ( name.indexOf( "data-" ) === 0 ) {
@ -4913,9 +4913,9 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
input = document.createElement( "input" );
// Support: Android 4.0 - 4.3 only
// Check state lost if the name is set (#11217)
// Check state lost if the name is set (trac-11217)
// Support: Windows Web Apps (WWA)
// `name` and `type` must use .setAttribute for WWA (#14901)
// `name` and `type` must use .setAttribute for WWA (trac-14901)
input.setAttribute( "type", "radio" );
input.setAttribute( "checked", "checked" );
input.setAttribute( "name", "t" );
@ -4939,7 +4939,7 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
} )();
// We have to close these tags to support XHTML (#13200)
// We have to close these tags to support XHTML (trac-13200)
var wrapMap = {
// XHTML parsers do not magically insert elements in the
@ -4965,7 +4965,7 @@ if ( !support.option ) {
function getAll( context, tag ) {
// Support: IE <=9 - 11 only
// Use typeof to avoid zero-argument method invocation on host objects (#15151)
// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
var ret;
if ( typeof context.getElementsByTagName !== "undefined" ) {
@ -5048,7 +5048,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
// Remember the top-level container
tmp = fragment.firstChild;
// Ensure the created nodes are orphaned (#12392)
// Ensure the created nodes are orphaned (trac-12392)
tmp.textContent = "";
}
}
@ -5469,15 +5469,15 @@ jQuery.event = {
for ( ; cur !== this; cur = cur.parentNode || this ) {
// Don't check non-elements (#13208)
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
// Don't check non-elements (trac-13208)
// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
matchedHandlers = [];
matchedSelectors = {};
for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ];
// Don't conflict with Object.prototype properties (#13203)
// Don't conflict with Object.prototype properties (trac-13203)
sel = handleObj.selector + " ";
if ( matchedSelectors[ sel ] === undefined ) {
@ -5731,7 +5731,7 @@ jQuery.Event = function( src, props ) {
// Create target properties
// Support: Safari <=6 - 7 only
// Target should not be a text node (#504, #13143)
// Target should not be a text node (trac-504, trac-13143)
this.target = ( src.target && src.target.nodeType === 3 ) ?
src.target.parentNode :
src.target;
@ -5854,10 +5854,10 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
return true;
},
// Suppress native focus or blur as it's already being fired
// in leverageNative.
_default: function() {
return true;
// Suppress native focus or blur if we're currently inside
// a leveraged native-event stack
_default: function( event ) {
return dataPriv.get( event.target, type );
},
delegateType: delegateType
@ -5956,7 +5956,8 @@ var
// checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
// Prefer a tbody over its parent table for containing new rows
function manipulationTarget( elem, content ) {
@ -6070,7 +6071,7 @@ function domManip( collection, args, callback, ignored ) {
// Use the original fragment for the last item
// instead of the first because it can end up
// being emptied incorrectly in certain situations (#8070).
// being emptied incorrectly in certain situations (trac-8070).
for ( ; i < l; i++ ) {
node = fragment;
@ -6111,6 +6112,12 @@ function domManip( collection, args, callback, ignored ) {
}, doc );
}
} else {
// Unwrap a CDATA section containing script contents. This shouldn't be
// needed as in XML documents they're already not visible when
// inspecting element contents and in HTML documents they have no
// meaning but we're preserving that logic for backwards compatibility.
// This will be removed completely in 4.0. See gh-4904.
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
}
}
@ -6393,9 +6400,12 @@ jQuery.each( {
} );
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
var rcustomProp = /^--/;
var getStyles = function( elem ) {
// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
// IE throws on elements created in popups
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
var view = elem.ownerDocument.defaultView;
@ -6430,6 +6440,15 @@ var swap = function( elem, options, callback ) {
var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
var whitespace = "[\\x20\\t\\r\\n\\f]";
var rtrimCSS = new RegExp(
"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
"g"
);
( function() {
@ -6495,7 +6514,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
}
// Support: IE <=9 - 11 only
// Style of cloned element affects source element cloned (#8908)
// Style of cloned element affects source element cloned (trac-8908)
div.style.backgroundClip = "content-box";
div.cloneNode( true ).style.backgroundClip = "";
support.clearCloneStyle = div.style.backgroundClip === "content-box";
@ -6575,6 +6594,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
function curCSS( elem, name, computed ) {
var width, minWidth, maxWidth, ret,
isCustomProp = rcustomProp.test( name ),
// Support: Firefox 51+
// Retrieving style before computed somehow
@ -6585,11 +6605,22 @@ function curCSS( elem, name, computed ) {
computed = computed || getStyles( elem );
// getPropertyValue is needed for:
// .css('filter') (IE 9 only, #12537)
// .css('--customProperty) (#3144)
// .css('filter') (IE 9 only, trac-12537)
// .css('--customProperty) (gh-3144)
if ( computed ) {
ret = computed.getPropertyValue( name ) || computed[ name ];
// trim whitespace for custom property (issue gh-4926)
if ( isCustomProp ) {
// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED
// as whitespace while CSS does not, but this is not a problem
// because CSS preprocessing replaces them with U+000A LINE FEED
// (which *is* CSS whitespace)
// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
ret = ret.replace( rtrimCSS, "$1" );
}
if ( ret === "" && !isAttached( elem ) ) {
ret = jQuery.style( elem, name );
}
@ -6685,7 +6716,6 @@ var
// except "table", "table-cell", or "table-caption"
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
rcustomProp = /^--/,
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
cssNormalTransform = {
letterSpacing: "0",
@ -6921,15 +6951,15 @@ jQuery.extend( {
if ( value !== undefined ) {
type = typeof value;
// Convert "+=" or "-=" to relative numbers (#7345)
// Convert "+=" or "-=" to relative numbers (trac-7345)
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
value = adjustCSS( elem, name, ret );
// Fixes bug #9237
// Fixes bug trac-9237
type = "number";
}
// Make sure that null and NaN values aren't set (#7116)
// Make sure that null and NaN values aren't set (trac-7116)
if ( value == null || value !== value ) {
return;
}
@ -7553,7 +7583,7 @@ function Animation( elem, properties, options ) {
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
// Support: Android 2.3 only
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
temp = remaining / animation.duration || 0,
percent = 1 - temp,
index = 0,
@ -7943,7 +7973,6 @@ jQuery.fx.speeds = {
// Based off of the plugin by Clint Helfers, with permission.
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
jQuery.fn.delay = function( time, type ) {
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
type = type || "fx";
@ -8168,8 +8197,7 @@ jQuery.extend( {
// Support: IE <=9 - 11 only
// elem.tabIndex doesn't always return the
// correct value when it hasn't been explicitly set
// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
// Use proper attribute retrieval(#12072)
// Use proper attribute retrieval (trac-12072)
var tabindex = jQuery.find.attr( elem, "tabindex" );
if ( tabindex ) {
@ -8273,8 +8301,7 @@ function classesToArray( value ) {
jQuery.fn.extend( {
addClass: function( value ) {
var classes, elem, cur, curValue, clazz, j, finalValue,
i = 0;
var classNames, cur, curValue, className, i, finalValue;
if ( isFunction( value ) ) {
return this.each( function( j ) {
@ -8282,36 +8309,35 @@ jQuery.fn.extend( {
} );
}
classes = classesToArray( value );
classNames = classesToArray( value );
if ( classes.length ) {
while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem );
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( classNames.length ) {
return this.each( function() {
curValue = getClass( this );
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( cur ) {
j = 0;
while ( ( clazz = classes[ j++ ] ) ) {
if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
cur += clazz + " ";
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
if ( cur.indexOf( " " + className + " " ) < 0 ) {
cur += className + " ";
}
}
// Only assign if different to avoid unneeded rendering.
finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue );
this.setAttribute( "class", finalValue );
}
}
}
} );
}
return this;
},
removeClass: function( value ) {
var classes, elem, cur, curValue, clazz, j, finalValue,
i = 0;
var classNames, cur, curValue, className, i, finalValue;
if ( isFunction( value ) ) {
return this.each( function( j ) {
@ -8323,45 +8349,42 @@ jQuery.fn.extend( {
return this.attr( "class", "" );
}
classes = classesToArray( value );
classNames = classesToArray( value );
if ( classes.length ) {
while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem );
if ( classNames.length ) {
return this.each( function() {
curValue = getClass( this );
// This expression is here for better compressibility (see addClass)
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( cur ) {
j = 0;
while ( ( clazz = classes[ j++ ] ) ) {
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
// Remove *all* instances
while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
cur = cur.replace( " " + clazz + " ", " " );
while ( cur.indexOf( " " + className + " " ) > -1 ) {
cur = cur.replace( " " + className + " ", " " );
}
}
// Only assign if different to avoid unneeded rendering.
finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue );
this.setAttribute( "class", finalValue );
}
}
}
} );
}
return this;
},
toggleClass: function( value, stateVal ) {
var type = typeof value,
var classNames, className, i, self,
type = typeof value,
isValidValue = type === "string" || Array.isArray( value );
if ( typeof stateVal === "boolean" && isValidValue ) {
return stateVal ? this.addClass( value ) : this.removeClass( value );
}
if ( isFunction( value ) ) {
return this.each( function( i ) {
jQuery( this ).toggleClass(
@ -8371,17 +8394,20 @@ jQuery.fn.extend( {
} );
}
return this.each( function() {
var className, i, self, classNames;
if ( typeof stateVal === "boolean" && isValidValue ) {
return stateVal ? this.addClass( value ) : this.removeClass( value );
}
classNames = classesToArray( value );
return this.each( function() {
if ( isValidValue ) {
// Toggle individual class names
i = 0;
self = jQuery( this );
classNames = classesToArray( value );
while ( ( className = classNames[ i++ ] ) ) {
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
// Check each className given, space separated list
if ( self.hasClass( className ) ) {
@ -8515,7 +8541,7 @@ jQuery.extend( {
val :
// Support: IE <=10 - 11 only
// option.text throws exceptions (#14686, #14858)
// option.text throws exceptions (trac-14686, trac-14858)
// Strip and collapse whitespace
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
stripAndCollapse( jQuery.text( elem ) );
@ -8542,7 +8568,7 @@ jQuery.extend( {
option = options[ i ];
// Support: IE <=9 only
// IE8-9 doesn't update selected after form reset (#2551)
// IE8-9 doesn't update selected after form reset (trac-2551)
if ( ( option.selected || i === index ) &&
// Don't return options that are disabled or in a disabled optgroup
@ -8685,8 +8711,8 @@ jQuery.extend( jQuery.event, {
return;
}
// Determine event propagation path in advance, per W3C events spec (#9951)
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
// Determine event propagation path in advance, per W3C events spec (trac-9951)
// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
bubbleType = special.delegateType || type;
@ -8738,7 +8764,7 @@ jQuery.extend( jQuery.event, {
acceptData( elem ) ) {
// Call a native DOM method on the target with the same name as the event.
// Don't do default actions on window, that's where global variables be (#6170)
// Don't do default actions on window, that's where global variables be (trac-6170)
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
// Don't re-trigger an onFOO event when we call its FOO() method
@ -9012,7 +9038,7 @@ var
rantiCache = /([?&])_=[^&]*/,
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
// #7653, #8125, #8152: local protocol detection
// trac-7653, trac-8125, trac-8152: local protocol detection
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
rnoContent = /^(?:GET|HEAD)$/,
rprotocol = /^\/\//,
@ -9035,7 +9061,7 @@ var
*/
transports = {},
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
allTypes = "*/".concat( "*" ),
// Anchor tag for parsing the document origin
@ -9106,7 +9132,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
// A special extend for ajax options
// that takes "flat" options (not to be deep extended)
// Fixes #9887
// Fixes trac-9887
function ajaxExtend( target, src ) {
var key, deep,
flatOptions = jQuery.ajaxSettings.flatOptions || {};
@ -9517,12 +9543,12 @@ jQuery.extend( {
deferred.promise( jqXHR );
// Add protocol if not provided (prefilters might expect it)
// Handle falsy url in the settings object (#10093: consistency with old signature)
// Handle falsy url in the settings object (trac-10093: consistency with old signature)
// We also use the url parameter if available
s.url = ( ( url || s.url || location.href ) + "" )
.replace( rprotocol, location.protocol + "//" );
// Alias method option to type as per ticket #12004
// Alias method option to type as per ticket trac-12004
s.type = options.method || options.type || s.method || s.type;
// Extract dataTypes list
@ -9565,7 +9591,7 @@ jQuery.extend( {
}
// We can fire global events as of now if asked to
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
fireGlobals = jQuery.event && s.global;
// Watch for a new set of requests
@ -9594,7 +9620,7 @@ jQuery.extend( {
if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
// #9682: remove data so that it's not used in an eventual retry
// trac-9682: remove data so that it's not used in an eventual retry
delete s.data;
}
@ -9867,7 +9893,7 @@ jQuery._evalUrl = function( url, options, doc ) {
return jQuery.ajax( {
url: url,
// Make this explicit, since user can override this through ajaxSetup (#11264)
// Make this explicit, since user can override this through ajaxSetup (trac-11264)
type: "GET",
dataType: "script",
cache: true,
@ -9976,7 +10002,7 @@ var xhrSuccessStatus = {
0: 200,
// Support: IE <=9 only
// #1450: sometimes IE returns 1223 when it should be 204
// trac-1450: sometimes IE returns 1223 when it should be 204
1223: 204
},
xhrSupported = jQuery.ajaxSettings.xhr();
@ -10048,7 +10074,7 @@ jQuery.ajaxTransport( function( options ) {
} else {
complete(
// File: protocol always yields status 0; see #8605, #14207
// File: protocol always yields status 0; see trac-8605, trac-14207
xhr.status,
xhr.statusText
);
@ -10109,7 +10135,7 @@ jQuery.ajaxTransport( function( options ) {
xhr.send( options.hasContent && options.data || null );
} catch ( e ) {
// #14683: Only rethrow if this hasn't been notified as an error yet
// trac-14683: Only rethrow if this hasn't been notified as an error yet
if ( callback ) {
throw e;
}
@ -10753,7 +10779,9 @@ jQuery.each(
// Support: Android <=4.0 only
// Make sure we trim BOM and NBSP
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
// Require that the "whitespace run" starts from a non-whitespace
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
// Bind a function to a context, optionally partially applying any
// arguments.
@ -10820,7 +10848,7 @@ jQuery.isNumeric = function( obj ) {
jQuery.trim = function( text ) {
return text == null ?
"" :
( text + "" ).replace( rtrim, "" );
( text + "" ).replace( rtrim, "$1" );
};
@ -10868,8 +10896,8 @@ jQuery.noConflict = function( deep ) {
};
// Expose jQuery and $ identifiers, even in AMD
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (trac-13566)
if ( typeof noGlobal === "undefined" ) {
window.jQuery = window.$ = jQuery;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*!
* jQuery JavaScript Library v3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector
* jQuery JavaScript Library v3.6.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector
* https://jquery.com/
*
* Includes Sizzle.js
@ -9,7 +9,7 @@
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2021-03-02T17:08Z
* Date: 2022-08-26T17:52Z
*/
( function( global, factory ) {
@ -23,7 +23,7 @@
// (such as Node.js), expose a factory as module.exports.
// This accentuates the need for the creation of a real `window`.
// e.g. var jQuery = require("jquery")(window);
// See ticket #14549 for more info.
// See ticket trac-14549 for more info.
module.exports = global.document ?
factory( global, true ) :
function( w ) {
@ -151,7 +151,7 @@ function toType( obj ) {
var
version = "3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector",
version = "3.6.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector",
// Define a local copy of jQuery
jQuery = function( selector, context ) {
@ -3129,8 +3129,8 @@ jQuery.fn.extend( {
var rootjQuery,
// A simple way to check for HTML strings
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
// Strict HTML recognition (#11290: must start with <)
// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
// Strict HTML recognition (trac-11290: must start with <)
// Shortcut simple #id case for speed
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
@ -4087,7 +4087,7 @@ jQuery.extend( {
isReady: false,
// A counter to track how many items to wait for before
// the ready event fires. See #6781
// the ready event fires. See trac-6781
readyWait: 1,
// Handle when the DOM is ready
@ -4215,7 +4215,7 @@ function fcamelCase( _all, letter ) {
// Convert dashed to camelCase; used by the css and data modules
// Support: IE <=9 - 11, Edge 12 - 15
// Microsoft forgot to hump their vendor prefix (#9572)
// Microsoft forgot to hump their vendor prefix (trac-9572)
function camelCase( string ) {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
}
@ -4251,7 +4251,7 @@ Data.prototype = {
value = {};
// We can accept data for non-element nodes in modern browsers,
// but we should not, see #8335.
// but we should not, see trac-8335.
// Always return an empty object.
if ( acceptData( owner ) ) {
@ -4490,7 +4490,7 @@ jQuery.fn.extend( {
while ( i-- ) {
// Support: IE 11 only
// The attrs elements can be null (#14894)
// The attrs elements can be null (trac-14894)
if ( attrs[ i ] ) {
name = attrs[ i ].name;
if ( name.indexOf( "data-" ) === 0 ) {
@ -4913,9 +4913,9 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
input = document.createElement( "input" );
// Support: Android 4.0 - 4.3 only
// Check state lost if the name is set (#11217)
// Check state lost if the name is set (trac-11217)
// Support: Windows Web Apps (WWA)
// `name` and `type` must use .setAttribute for WWA (#14901)
// `name` and `type` must use .setAttribute for WWA (trac-14901)
input.setAttribute( "type", "radio" );
input.setAttribute( "checked", "checked" );
input.setAttribute( "name", "t" );
@ -4939,7 +4939,7 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
} )();
// We have to close these tags to support XHTML (#13200)
// We have to close these tags to support XHTML (trac-13200)
var wrapMap = {
// XHTML parsers do not magically insert elements in the
@ -4965,7 +4965,7 @@ if ( !support.option ) {
function getAll( context, tag ) {
// Support: IE <=9 - 11 only
// Use typeof to avoid zero-argument method invocation on host objects (#15151)
// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
var ret;
if ( typeof context.getElementsByTagName !== "undefined" ) {
@ -5048,7 +5048,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
// Remember the top-level container
tmp = fragment.firstChild;
// Ensure the created nodes are orphaned (#12392)
// Ensure the created nodes are orphaned (trac-12392)
tmp.textContent = "";
}
}
@ -5469,15 +5469,15 @@ jQuery.event = {
for ( ; cur !== this; cur = cur.parentNode || this ) {
// Don't check non-elements (#13208)
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
// Don't check non-elements (trac-13208)
// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
matchedHandlers = [];
matchedSelectors = {};
for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ];
// Don't conflict with Object.prototype properties (#13203)
// Don't conflict with Object.prototype properties (trac-13203)
sel = handleObj.selector + " ";
if ( matchedSelectors[ sel ] === undefined ) {
@ -5731,7 +5731,7 @@ jQuery.Event = function( src, props ) {
// Create target properties
// Support: Safari <=6 - 7 only
// Target should not be a text node (#504, #13143)
// Target should not be a text node (trac-504, trac-13143)
this.target = ( src.target && src.target.nodeType === 3 ) ?
src.target.parentNode :
src.target;
@ -5854,10 +5854,10 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
return true;
},
// Suppress native focus or blur as it's already being fired
// in leverageNative.
_default: function() {
return true;
// Suppress native focus or blur if we're currently inside
// a leveraged native-event stack
_default: function( event ) {
return dataPriv.get( event.target, type );
},
delegateType: delegateType
@ -5956,7 +5956,8 @@ var
// checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
// Prefer a tbody over its parent table for containing new rows
function manipulationTarget( elem, content ) {
@ -6070,7 +6071,7 @@ function domManip( collection, args, callback, ignored ) {
// Use the original fragment for the last item
// instead of the first because it can end up
// being emptied incorrectly in certain situations (#8070).
// being emptied incorrectly in certain situations (trac-8070).
for ( ; i < l; i++ ) {
node = fragment;
@ -6111,6 +6112,12 @@ function domManip( collection, args, callback, ignored ) {
}, doc );
}
} else {
// Unwrap a CDATA section containing script contents. This shouldn't be
// needed as in XML documents they're already not visible when
// inspecting element contents and in HTML documents they have no
// meaning but we're preserving that logic for backwards compatibility.
// This will be removed completely in 4.0. See gh-4904.
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
}
}
@ -6393,9 +6400,12 @@ jQuery.each( {
} );
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
var rcustomProp = /^--/;
var getStyles = function( elem ) {
// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
// IE throws on elements created in popups
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
var view = elem.ownerDocument.defaultView;
@ -6430,6 +6440,15 @@ var swap = function( elem, options, callback ) {
var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
var whitespace = "[\\x20\\t\\r\\n\\f]";
var rtrimCSS = new RegExp(
"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
"g"
);
( function() {
@ -6495,7 +6514,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
}
// Support: IE <=9 - 11 only
// Style of cloned element affects source element cloned (#8908)
// Style of cloned element affects source element cloned (trac-8908)
div.style.backgroundClip = "content-box";
div.cloneNode( true ).style.backgroundClip = "";
support.clearCloneStyle = div.style.backgroundClip === "content-box";
@ -6575,6 +6594,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
function curCSS( elem, name, computed ) {
var width, minWidth, maxWidth, ret,
isCustomProp = rcustomProp.test( name ),
// Support: Firefox 51+
// Retrieving style before computed somehow
@ -6585,11 +6605,22 @@ function curCSS( elem, name, computed ) {
computed = computed || getStyles( elem );
// getPropertyValue is needed for:
// .css('filter') (IE 9 only, #12537)
// .css('--customProperty) (#3144)
// .css('filter') (IE 9 only, trac-12537)
// .css('--customProperty) (gh-3144)
if ( computed ) {
ret = computed.getPropertyValue( name ) || computed[ name ];
// trim whitespace for custom property (issue gh-4926)
if ( isCustomProp ) {
// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED
// as whitespace while CSS does not, but this is not a problem
// because CSS preprocessing replaces them with U+000A LINE FEED
// (which *is* CSS whitespace)
// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
ret = ret.replace( rtrimCSS, "$1" );
}
if ( ret === "" && !isAttached( elem ) ) {
ret = jQuery.style( elem, name );
}
@ -6685,7 +6716,6 @@ var
// except "table", "table-cell", or "table-caption"
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
rcustomProp = /^--/,
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
cssNormalTransform = {
letterSpacing: "0",
@ -6921,15 +6951,15 @@ jQuery.extend( {
if ( value !== undefined ) {
type = typeof value;
// Convert "+=" or "-=" to relative numbers (#7345)
// Convert "+=" or "-=" to relative numbers (trac-7345)
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
value = adjustCSS( elem, name, ret );
// Fixes bug #9237
// Fixes bug trac-9237
type = "number";
}
// Make sure that null and NaN values aren't set (#7116)
// Make sure that null and NaN values aren't set (trac-7116)
if ( value == null || value !== value ) {
return;
}
@ -7149,7 +7179,6 @@ jQuery.fn.extend( {
// Based off of the plugin by Clint Helfers, with permission.
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
jQuery.fn.delay = function( time, type ) {
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
type = type || "fx";
@ -7374,8 +7403,7 @@ jQuery.extend( {
// Support: IE <=9 - 11 only
// elem.tabIndex doesn't always return the
// correct value when it hasn't been explicitly set
// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
// Use proper attribute retrieval(#12072)
// Use proper attribute retrieval (trac-12072)
var tabindex = jQuery.find.attr( elem, "tabindex" );
if ( tabindex ) {
@ -7479,8 +7507,7 @@ function classesToArray( value ) {
jQuery.fn.extend( {
addClass: function( value ) {
var classes, elem, cur, curValue, clazz, j, finalValue,
i = 0;
var classNames, cur, curValue, className, i, finalValue;
if ( isFunction( value ) ) {
return this.each( function( j ) {
@ -7488,36 +7515,35 @@ jQuery.fn.extend( {
} );
}
classes = classesToArray( value );
classNames = classesToArray( value );
if ( classes.length ) {
while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem );
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( classNames.length ) {
return this.each( function() {
curValue = getClass( this );
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( cur ) {
j = 0;
while ( ( clazz = classes[ j++ ] ) ) {
if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
cur += clazz + " ";
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
if ( cur.indexOf( " " + className + " " ) < 0 ) {
cur += className + " ";
}
}
// Only assign if different to avoid unneeded rendering.
finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue );
this.setAttribute( "class", finalValue );
}
}
}
} );
}
return this;
},
removeClass: function( value ) {
var classes, elem, cur, curValue, clazz, j, finalValue,
i = 0;
var classNames, cur, curValue, className, i, finalValue;
if ( isFunction( value ) ) {
return this.each( function( j ) {
@ -7529,45 +7555,42 @@ jQuery.fn.extend( {
return this.attr( "class", "" );
}
classes = classesToArray( value );
classNames = classesToArray( value );
if ( classes.length ) {
while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem );
if ( classNames.length ) {
return this.each( function() {
curValue = getClass( this );
// This expression is here for better compressibility (see addClass)
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( cur ) {
j = 0;
while ( ( clazz = classes[ j++ ] ) ) {
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
// Remove *all* instances
while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
cur = cur.replace( " " + clazz + " ", " " );
while ( cur.indexOf( " " + className + " " ) > -1 ) {
cur = cur.replace( " " + className + " ", " " );
}
}
// Only assign if different to avoid unneeded rendering.
finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue );
this.setAttribute( "class", finalValue );
}
}
}
} );
}
return this;
},
toggleClass: function( value, stateVal ) {
var type = typeof value,
var classNames, className, i, self,
type = typeof value,
isValidValue = type === "string" || Array.isArray( value );
if ( typeof stateVal === "boolean" && isValidValue ) {
return stateVal ? this.addClass( value ) : this.removeClass( value );
}
if ( isFunction( value ) ) {
return this.each( function( i ) {
jQuery( this ).toggleClass(
@ -7577,17 +7600,20 @@ jQuery.fn.extend( {
} );
}
return this.each( function() {
var className, i, self, classNames;
if ( typeof stateVal === "boolean" && isValidValue ) {
return stateVal ? this.addClass( value ) : this.removeClass( value );
}
classNames = classesToArray( value );
return this.each( function() {
if ( isValidValue ) {
// Toggle individual class names
i = 0;
self = jQuery( this );
classNames = classesToArray( value );
while ( ( className = classNames[ i++ ] ) ) {
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
// Check each className given, space separated list
if ( self.hasClass( className ) ) {
@ -7721,7 +7747,7 @@ jQuery.extend( {
val :
// Support: IE <=10 - 11 only
// option.text throws exceptions (#14686, #14858)
// option.text throws exceptions (trac-14686, trac-14858)
// Strip and collapse whitespace
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
stripAndCollapse( jQuery.text( elem ) );
@ -7748,7 +7774,7 @@ jQuery.extend( {
option = options[ i ];
// Support: IE <=9 only
// IE8-9 doesn't update selected after form reset (#2551)
// IE8-9 doesn't update selected after form reset (trac-2551)
if ( ( option.selected || i === index ) &&
// Don't return options that are disabled or in a disabled optgroup
@ -7891,8 +7917,8 @@ jQuery.extend( jQuery.event, {
return;
}
// Determine event propagation path in advance, per W3C events spec (#9951)
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
// Determine event propagation path in advance, per W3C events spec (trac-9951)
// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
bubbleType = special.delegateType || type;
@ -7944,7 +7970,7 @@ jQuery.extend( jQuery.event, {
acceptData( elem ) ) {
// Call a native DOM method on the target with the same name as the event.
// Don't do default actions on window, that's where global variables be (#6170)
// Don't do default actions on window, that's where global variables be (trac-6170)
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
// Don't re-trigger an onFOO event when we call its FOO() method
@ -8654,7 +8680,9 @@ jQuery.each(
// Support: Android <=4.0 only
// Make sure we trim BOM and NBSP
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
// Require that the "whitespace run" starts from a non-whitespace
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
// Bind a function to a context, optionally partially applying any
// arguments.
@ -8721,7 +8749,7 @@ jQuery.isNumeric = function( obj ) {
jQuery.trim = function( text ) {
return text == null ?
"" :
( text + "" ).replace( rtrim, "" );
( text + "" ).replace( rtrim, "$1" );
};
@ -8769,8 +8797,8 @@ jQuery.noConflict = function( deep ) {
};
// Expose jQuery and $ identifiers, even in AMD
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (trac-13566)
if ( typeof noGlobal === "undefined" ) {
window.jQuery = window.$ = jQuery;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

31
node_modules/jquery/package.json generated vendored
View file

@ -2,12 +2,12 @@
"name": "jquery",
"title": "jQuery",
"description": "JavaScript library for DOM operations",
"version": "3.6.0",
"version": "3.6.1",
"main": "dist/jquery.js",
"homepage": "https://jquery.com",
"author": {
"name": "OpenJS Foundation and other contributors",
"url": "https://github.com/jquery/jquery/blob/3.6.0/AUTHORS.txt"
"url": "https://github.com/jquery/jquery/blob/3.6.1/AUTHORS.txt"
},
"repository": {
"type": "git",
@ -26,32 +26,33 @@
"devDependencies": {
"@babel/core": "7.3.3",
"@babel/plugin-transform-for-of": "7.2.0",
"colors": "1.4.0",
"commitplease": "3.2.0",
"core-js": "2.6.5",
"eslint-config-jquery": "3.0.0",
"grunt": "1.3.0",
"grunt": "1.4.1",
"grunt-babel": "8.0.0",
"grunt-cli": "1.3.2",
"grunt-cli": "1.4.3",
"grunt-compare-size": "0.4.2",
"grunt-contrib-uglify": "3.4.0",
"grunt-contrib-watch": "1.1.0",
"grunt-eslint": "22.0.0",
"grunt-git-authors": "3.2.0",
"grunt-jsonlint": "1.1.0",
"grunt-karma": "4.0.0",
"grunt-jsonlint": "2.1.2",
"grunt-karma": "4.0.2",
"grunt-newer": "1.3.0",
"grunt-npmcopy": "0.2.0",
"gzip-js": "0.3.2",
"husky": "1.3.1",
"insight": "0.10.1",
"jsdom": "13.2.0",
"karma": "5.2.3",
"karma-browserstack-launcher": "1.4.0",
"karma-chrome-launcher": "2.2.0",
"karma-firefox-launcher": "1.1.0",
"husky": "4.2.5",
"insight": "0.10.3",
"jsdom": "19.0.0",
"karma": "^6.3.17",
"karma-browserstack-launcher": "1.6.0",
"karma-chrome-launcher": "3.1.1",
"karma-firefox-launcher": "2.1.2",
"karma-ie-launcher": "1.0.0",
"karma-jsdom-launcher": "8.0.2",
"karma-qunit": "3.0.0",
"karma-jsdom-launcher": "12.0.0",
"karma-qunit": "4.1.2",
"load-grunt-tasks": "5.1.0",
"native-promise-only": "0.8.1",
"promises-aplus-tests": "2.1.2",

14
node_modules/jquery/src/ajax.js generated vendored
View file

@ -22,7 +22,7 @@ var
rantiCache = /([?&])_=[^&]*/,
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
// #7653, #8125, #8152: local protocol detection
// trac-7653, trac-8125, trac-8152: local protocol detection
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
rnoContent = /^(?:GET|HEAD)$/,
rprotocol = /^\/\//,
@ -45,7 +45,7 @@ var
*/
transports = {},
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
allTypes = "*/".concat( "*" ),
// Anchor tag for parsing the document origin
@ -116,7 +116,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
// A special extend for ajax options
// that takes "flat" options (not to be deep extended)
// Fixes #9887
// Fixes trac-9887
function ajaxExtend( target, src ) {
var key, deep,
flatOptions = jQuery.ajaxSettings.flatOptions || {};
@ -527,12 +527,12 @@ jQuery.extend( {
deferred.promise( jqXHR );
// Add protocol if not provided (prefilters might expect it)
// Handle falsy url in the settings object (#10093: consistency with old signature)
// Handle falsy url in the settings object (trac-10093: consistency with old signature)
// We also use the url parameter if available
s.url = ( ( url || s.url || location.href ) + "" )
.replace( rprotocol, location.protocol + "//" );
// Alias method option to type as per ticket #12004
// Alias method option to type as per ticket trac-12004
s.type = options.method || options.type || s.method || s.type;
// Extract dataTypes list
@ -575,7 +575,7 @@ jQuery.extend( {
}
// We can fire global events as of now if asked to
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
fireGlobals = jQuery.event && s.global;
// Watch for a new set of requests
@ -604,7 +604,7 @@ jQuery.extend( {
if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
// #9682: remove data so that it's not used in an eventual retry
// trac-9682: remove data so that it's not used in an eventual retry
delete s.data;
}

View file

@ -18,7 +18,7 @@ var xhrSuccessStatus = {
0: 200,
// Support: IE <=9 only
// #1450: sometimes IE returns 1223 when it should be 204
// trac-1450: sometimes IE returns 1223 when it should be 204
1223: 204
},
xhrSupported = jQuery.ajaxSettings.xhr();
@ -90,7 +90,7 @@ jQuery.ajaxTransport( function( options ) {
} else {
complete(
// File: protocol always yields status 0; see #8605, #14207
// File: protocol always yields status 0; see trac-8605, trac-14207
xhr.status,
xhr.statusText
);
@ -151,7 +151,7 @@ jQuery.ajaxTransport( function( options ) {
xhr.send( options.hasContent && options.data || null );
} catch ( e ) {
// #14683: Only rethrow if this hasn't been notified as an error yet
// trac-14683: Only rethrow if this hasn't been notified as an error yet
if ( callback ) {
throw e;
}

View file

@ -25,8 +25,7 @@ function classesToArray( value ) {
jQuery.fn.extend( {
addClass: function( value ) {
var classes, elem, cur, curValue, clazz, j, finalValue,
i = 0;
var classNames, cur, curValue, className, i, finalValue;
if ( isFunction( value ) ) {
return this.each( function( j ) {
@ -34,36 +33,35 @@ jQuery.fn.extend( {
} );
}
classes = classesToArray( value );
classNames = classesToArray( value );
if ( classes.length ) {
while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem );
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( classNames.length ) {
return this.each( function() {
curValue = getClass( this );
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( cur ) {
j = 0;
while ( ( clazz = classes[ j++ ] ) ) {
if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
cur += clazz + " ";
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
if ( cur.indexOf( " " + className + " " ) < 0 ) {
cur += className + " ";
}
}
// Only assign if different to avoid unneeded rendering.
finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue );
this.setAttribute( "class", finalValue );
}
}
}
} );
}
return this;
},
removeClass: function( value ) {
var classes, elem, cur, curValue, clazz, j, finalValue,
i = 0;
var classNames, cur, curValue, className, i, finalValue;
if ( isFunction( value ) ) {
return this.each( function( j ) {
@ -75,45 +73,42 @@ jQuery.fn.extend( {
return this.attr( "class", "" );
}
classes = classesToArray( value );
classNames = classesToArray( value );
if ( classes.length ) {
while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem );
if ( classNames.length ) {
return this.each( function() {
curValue = getClass( this );
// This expression is here for better compressibility (see addClass)
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( cur ) {
j = 0;
while ( ( clazz = classes[ j++ ] ) ) {
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
// Remove *all* instances
while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
cur = cur.replace( " " + clazz + " ", " " );
while ( cur.indexOf( " " + className + " " ) > -1 ) {
cur = cur.replace( " " + className + " ", " " );
}
}
// Only assign if different to avoid unneeded rendering.
finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue );
this.setAttribute( "class", finalValue );
}
}
}
} );
}
return this;
},
toggleClass: function( value, stateVal ) {
var type = typeof value,
var classNames, className, i, self,
type = typeof value,
isValidValue = type === "string" || Array.isArray( value );
if ( typeof stateVal === "boolean" && isValidValue ) {
return stateVal ? this.addClass( value ) : this.removeClass( value );
}
if ( isFunction( value ) ) {
return this.each( function( i ) {
jQuery( this ).toggleClass(
@ -123,17 +118,20 @@ jQuery.fn.extend( {
} );
}
return this.each( function() {
var className, i, self, classNames;
if ( typeof stateVal === "boolean" && isValidValue ) {
return stateVal ? this.addClass( value ) : this.removeClass( value );
}
classNames = classesToArray( value );
return this.each( function() {
if ( isValidValue ) {
// Toggle individual class names
i = 0;
self = jQuery( this );
classNames = classesToArray( value );
while ( ( className = classNames[ i++ ] ) ) {
for ( i = 0; i < classNames.length; i++ ) {
className = classNames[ i ];
// Check each className given, space separated list
if ( self.hasClass( className ) ) {

View file

@ -62,8 +62,7 @@ jQuery.extend( {
// Support: IE <=9 - 11 only
// elem.tabIndex doesn't always return the
// correct value when it hasn't been explicitly set
// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
// Use proper attribute retrieval(#12072)
// Use proper attribute retrieval (trac-12072)
var tabindex = jQuery.find.attr( elem, "tabindex" );
if ( tabindex ) {

View file

@ -91,7 +91,7 @@ jQuery.extend( {
val :
// Support: IE <=10 - 11 only
// option.text throws exceptions (#14686, #14858)
// option.text throws exceptions (trac-14686, trac-14858)
// Strip and collapse whitespace
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
stripAndCollapse( jQuery.text( elem ) );
@ -118,7 +118,7 @@ jQuery.extend( {
option = options[ i ];
// Support: IE <=9 only
// IE8-9 doesn't update selected after form reset (#2551)
// IE8-9 doesn't update selected after form reset (trac-2551)
if ( ( option.selected || i === index ) &&
// Don't return options that are disabled or in a disabled optgroup

2
node_modules/jquery/src/core.js generated vendored
View file

@ -26,7 +26,7 @@ define( [
"use strict";
var
version = "3.6.0",
version = "3.6.1",
// Define a local copy of jQuery
jQuery = function( selector, context ) {

View file

@ -13,7 +13,7 @@ function fcamelCase( _all, letter ) {
// Convert dashed to camelCase; used by the css and data modules
// Support: IE <=9 - 11, Edge 12 - 15
// Microsoft forgot to hump their vendor prefix (#9572)
// Microsoft forgot to hump their vendor prefix (trac-9572)
function camelCase( string ) {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
}

View file

@ -14,8 +14,8 @@ define( [
var rootjQuery,
// A simple way to check for HTML strings
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
// Strict HTML recognition (#11290: must start with <)
// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
// Strict HTML recognition (trac-11290: must start with <)
// Shortcut simple #id case for speed
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,

View file

@ -30,7 +30,7 @@ jQuery.extend( {
isReady: false,
// A counter to track how many items to wait for before
// the ready event fires. See #6781
// the ready event fires. See trac-6781
readyWait: 1,
ready: function( wait ) {

View file

@ -31,7 +31,7 @@ jQuery.extend( {
isReady: false,
// A counter to track how many items to wait for before
// the ready event fires. See #6781
// the ready event fires. See trac-6781
readyWait: 1,
// Handle when the DOM is ready

13
node_modules/jquery/src/css.js generated vendored
View file

@ -5,6 +5,7 @@ define( [
"./core/nodeName",
"./var/rcssNum",
"./css/var/rnumnonpx",
"./css/var/rcustomProp",
"./css/var/cssExpand",
"./css/var/getStyles",
"./css/var/swap",
@ -17,8 +18,9 @@ define( [
"./core/init",
"./core/ready",
"./selector" // contains
], function( jQuery, access, camelCase, nodeName, rcssNum, rnumnonpx, cssExpand,
getStyles, swap, curCSS, adjustCSS, addGetHookIf, support, finalPropName ) {
], function( jQuery, access, camelCase, nodeName, rcssNum, rnumnonpx,
rcustomProp, cssExpand, getStyles, swap, curCSS, adjustCSS, addGetHookIf,
support, finalPropName ) {
"use strict";
@ -28,7 +30,6 @@ var
// except "table", "table-cell", or "table-caption"
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
rcustomProp = /^--/,
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
cssNormalTransform = {
letterSpacing: "0",
@ -264,15 +265,15 @@ jQuery.extend( {
if ( value !== undefined ) {
type = typeof value;
// Convert "+=" or "-=" to relative numbers (#7345)
// Convert "+=" or "-=" to relative numbers (trac-7345)
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
value = adjustCSS( elem, name, ret );
// Fixes bug #9237
// Fixes bug trac-9237
type = "number";
}
// Make sure that null and NaN values aren't set (#7116)
// Make sure that null and NaN values aren't set (trac-7116)
if ( value == null || value !== value ) {
return;
}

View file

@ -4,13 +4,17 @@ define( [
"./var/rboxStyle",
"./var/rnumnonpx",
"./var/getStyles",
"./var/rcustomProp",
"../var/rtrimCSS",
"./support"
], function( jQuery, isAttached, rboxStyle, rnumnonpx, getStyles, support ) {
], function( jQuery, isAttached, rboxStyle, rnumnonpx, getStyles,
rcustomProp, rtrimCSS, support ) {
"use strict";
function curCSS( elem, name, computed ) {
var width, minWidth, maxWidth, ret,
isCustomProp = rcustomProp.test( name ),
// Support: Firefox 51+
// Retrieving style before computed somehow
@ -21,11 +25,22 @@ function curCSS( elem, name, computed ) {
computed = computed || getStyles( elem );
// getPropertyValue is needed for:
// .css('filter') (IE 9 only, #12537)
// .css('--customProperty) (#3144)
// .css('filter') (IE 9 only, trac-12537)
// .css('--customProperty) (gh-3144)
if ( computed ) {
ret = computed.getPropertyValue( name ) || computed[ name ];
// trim whitespace for custom property (issue gh-4926)
if ( isCustomProp ) {
// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED
// as whitespace while CSS does not, but this is not a problem
// because CSS preprocessing replaces them with U+000A LINE FEED
// (which *is* CSS whitespace)
// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
ret = ret.replace( rtrimCSS, "$1" );
}
if ( ret === "" && !isAttached( elem ) ) {
ret = jQuery.style( elem, name );
}

View file

@ -70,7 +70,7 @@ define( [
}
// Support: IE <=9 - 11 only
// Style of cloned element affects source element cloned (#8908)
// Style of cloned element affects source element cloned (trac-8908)
div.style.backgroundClip = "content-box";
div.cloneNode( true ).style.backgroundClip = "";
support.clearCloneStyle = div.style.backgroundClip === "content-box";

View file

@ -3,7 +3,7 @@ define( function() {
return function( elem ) {
// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
// IE throws on elements created in popups
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
var view = elem.ownerDocument.defaultView;

7
node_modules/jquery/src/css/var/rcustomProp.js generated vendored Normal file
View file

@ -0,0 +1,7 @@
define( function() {
"use strict";
return /^--/;
} );

2
node_modules/jquery/src/data.js generated vendored
View file

@ -109,7 +109,7 @@ jQuery.fn.extend( {
while ( i-- ) {
// Support: IE 11 only
// The attrs elements can be null (#14894)
// The attrs elements can be null (trac-14894)
if ( attrs[ i ] ) {
name = attrs[ i ].name;
if ( name.indexOf( "data-" ) === 0 ) {

View file

@ -25,7 +25,7 @@ Data.prototype = {
value = {};
// We can accept data for non-element nodes in modern browsers,
// but we should not, see #8335.
// but we should not, see trac-8335.
// Always return an empty object.
if ( acceptData( owner ) ) {

View file

@ -15,7 +15,9 @@ define( [
// Support: Android <=4.0 only
// Make sure we trim BOM and NBSP
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
// Require that the "whitespace run" starts from a non-whitespace
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
// Bind a function to a context, optionally partially applying any
// arguments.
@ -82,6 +84,6 @@ jQuery.isNumeric = function( obj ) {
jQuery.trim = function( text ) {
return text == null ?
"" :
( text + "" ).replace( rtrim, "" );
( text + "" ).replace( rtrim, "$1" );
};
} );

2
node_modules/jquery/src/effects.js generated vendored
View file

@ -310,7 +310,7 @@ function Animation( elem, properties, options ) {
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
// Support: Android 2.3 only
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
temp = remaining / animation.duration || 0,
percent = 1 - temp,
index = 0,

16
node_modules/jquery/src/event.js generated vendored
View file

@ -393,15 +393,15 @@ jQuery.event = {
for ( ; cur !== this; cur = cur.parentNode || this ) {
// Don't check non-elements (#13208)
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
// Don't check non-elements (trac-13208)
// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
matchedHandlers = [];
matchedSelectors = {};
for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ];
// Don't conflict with Object.prototype properties (#13203)
// Don't conflict with Object.prototype properties (trac-13203)
sel = handleObj.selector + " ";
if ( matchedSelectors[ sel ] === undefined ) {
@ -655,7 +655,7 @@ jQuery.Event = function( src, props ) {
// Create target properties
// Support: Safari <=6 - 7 only
// Target should not be a text node (#504, #13143)
// Target should not be a text node (trac-504, trac-13143)
this.target = ( src.target && src.target.nodeType === 3 ) ?
src.target.parentNode :
src.target;
@ -778,10 +778,10 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
return true;
},
// Suppress native focus or blur as it's already being fired
// in leverageNative.
_default: function() {
return true;
// Suppress native focus or blur if we're currently inside
// a leveraged native-event stack
_default: function( event ) {
return dataPriv.get( event.target, type );
},
delegateType: delegateType

View file

@ -75,8 +75,8 @@ jQuery.extend( jQuery.event, {
return;
}
// Determine event propagation path in advance, per W3C events spec (#9951)
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
// Determine event propagation path in advance, per W3C events spec (trac-9951)
// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
bubbleType = special.delegateType || type;
@ -128,7 +128,7 @@ jQuery.extend( jQuery.event, {
acceptData( elem ) ) {
// Call a native DOM method on the target with the same name as the event.
// Don't do default actions on window, that's where global variables be (#6170)
// Don't do default actions on window, that's where global variables be (trac-6170)
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
// Don't re-trigger an onFOO event when we call its FOO() method

View file

@ -25,8 +25,8 @@ jQuery.noConflict = function( deep ) {
};
// Expose jQuery and $ identifiers, even in AMD
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (trac-13566)
if ( typeof noGlobal === "undefined" ) {
window.jQuery = window.$ = jQuery;
}

View file

@ -40,7 +40,8 @@ var
// checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
// Prefer a tbody over its parent table for containing new rows
function manipulationTarget( elem, content ) {
@ -154,7 +155,7 @@ function domManip( collection, args, callback, ignored ) {
// Use the original fragment for the last item
// instead of the first because it can end up
// being emptied incorrectly in certain situations (#8070).
// being emptied incorrectly in certain situations (trac-8070).
for ( ; i < l; i++ ) {
node = fragment;
@ -195,6 +196,12 @@ function domManip( collection, args, callback, ignored ) {
}, doc );
}
} else {
// Unwrap a CDATA section containing script contents. This shouldn't be
// needed as in XML documents they're already not visible when
// inspecting element contents and in HTML documents they have no
// meaning but we're preserving that logic for backwards compatibility.
// This will be removed completely in 4.0. See gh-4904.
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
}
}

View file

@ -8,7 +8,7 @@ jQuery._evalUrl = function( url, options, doc ) {
return jQuery.ajax( {
url: url,
// Make this explicit, since user can override this through ajaxSetup (#11264)
// Make this explicit, since user can override this through ajaxSetup (trac-11264)
type: "GET",
dataType: "script",
cache: true,

View file

@ -58,7 +58,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
// Remember the top-level container
tmp = fragment.firstChild;
// Ensure the created nodes are orphaned (#12392)
// Ensure the created nodes are orphaned (trac-12392)
tmp.textContent = "";
}
}

View file

@ -8,7 +8,7 @@ define( [
function getAll( context, tag ) {
// Support: IE <=9 - 11 only
// Use typeof to avoid zero-argument method invocation on host objects (#15151)
// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
var ret;
if ( typeof context.getElementsByTagName !== "undefined" ) {

View file

@ -11,9 +11,9 @@ define( [
input = document.createElement( "input" );
// Support: Android 4.0 - 4.3 only
// Check state lost if the name is set (#11217)
// Check state lost if the name is set (trac-11217)
// Support: Windows Web Apps (WWA)
// `name` and `type` must use .setAttribute for WWA (#14901)
// `name` and `type` must use .setAttribute for WWA (trac-14901)
input.setAttribute( "type", "radio" );
input.setAttribute( "checked", "checked" );
input.setAttribute( "name", "t" );

View file

@ -4,7 +4,7 @@ define( [
"use strict";
// We have to close these tags to support XHTML (#13200)
// We have to close these tags to support XHTML (trac-13200)
var wrapMap = {
// XHTML parsers do not magically insert elements in the

View file

@ -7,7 +7,6 @@ define( [
"use strict";
// Based off of the plugin by Clint Helfers, with permission.
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
jQuery.fn.delay = function( time, type ) {
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
type = type || "fx";

View file

@ -230,7 +230,7 @@ jQuery.extend( jQuery.find, {
attr: function( elem, name ) {
var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
// Don't get fooled by Object.prototype properties (jQuery #13807)
// Don't get fooled by Object.prototype properties (jQuery trac-13807)
value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
fn( elem, name, jQuery.isXMLDoc( elem ) ) :
undefined;

12
node_modules/jquery/src/var/rtrimCSS.js generated vendored Normal file
View file

@ -0,0 +1,12 @@
define( [
"./whitespace"
], function( whitespace ) {
"use strict";
return new RegExp(
"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
"g"
);
} );

8
node_modules/jquery/src/var/whitespace.js generated vendored Normal file
View file

@ -0,0 +1,8 @@
define( function() {
"use strict";
// https://www.w3.org/TR/css3-selectors/#whitespace
return "[\\x20\\t\\r\\n\\f]";
} );

0
node_modules/moment-timezone/blah.tar.gz generated vendored Normal file
View file

View file

@ -1,5 +1,5 @@
//! moment-timezone.js
//! version : 0.5.34
//! version : 0.5.36
//! Copyright (c) JS Foundation and other contributors
//! license : MIT
//! github.com/moment/moment-timezone
@ -29,7 +29,7 @@
// return moment;
// }
var VERSION = "0.5.34",
var VERSION = "0.5.36",
zones = {},
links = {},
countries = {},
@ -691,7 +691,7 @@
}
loadData({
"version": "2021e",
"version": "2022c",
"zones": [
"Africa/Abidjan|GMT|0|0||48e5",
"Africa/Nairobi|EAT|-30|0||47e5",
@ -699,102 +699,90 @@
"Africa/Lagos|WAT|-10|0||17e6",
"Africa/Maputo|CAT|-20|0||26e5",
"Africa/Cairo|EET|-20|0||15e6",
"Africa/Casablanca|+00 +01|0 -10|0101010101010101010101010101|1QyO0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00|32e5",
"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|11e6",
"Africa/Casablanca|+00 +01|0 -10|01010101010101010101010101|1T0q0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00|32e5",
"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|11e6",
"Africa/Johannesburg|SAST|-20|0||84e5",
"Africa/Juba|EAT CAT|-30 -20|01|24nx0|",
"Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5",
"Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|",
"Africa/Windhoek|CAT WAT|-20 -10|01010|1QBA0 11B0 1nX0 11B0|32e4",
"America/Adak|HST HDT|a0 90|01010101010101010101010|1Qto0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326",
"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1Qtn0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4",
"Africa/Windhoek|CAT WAT|-20 -10|010|1T3c0 11B0|32e4",
"America/Adak|HST HDT|a0 90|01010101010101010101010|1ST00 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|326",
"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1SSX0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|30e4",
"America/Santo_Domingo|AST|40|0||29e5",
"America/Fortaleza|-03|30|0||34e5",
"America/Asuncion|-03 -04|30 40|01010101010101010101010|1QyP0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5",
"America/Asuncion|-03 -04|30 40|01010101010101010101010|1T0r0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0|28e5",
"America/Panama|EST|50|0||15e5",
"America/Mexico_City|CST CDT|60 50|01010101010101010101010|1QBI0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0|20e6",
"America/Mexico_City|CST CDT|60 50|01010101010101010101010|1T3k0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0|20e6",
"America/Managua|CST|60|0||22e5",
"America/La_Paz|-04|40|0||19e5",
"America/Caracas|-04|40|0||29e5",
"America/Lima|-05|50|0||11e6",
"America/Denver|MST MDT|70 60|01010101010101010101010|1Qtl0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5",
"America/Campo_Grande|-03 -04|30 40|01010101|1QkP0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4",
"America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5",
"America/Chicago|CST CDT|60 50|01010101010101010101010|1Qtk0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5",
"America/Chihuahua|MST MDT|70 60|01010101010101010101010|1QBJ0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0|81e4",
"America/Denver|MST MDT|70 60|01010101010101010101010|1SSV0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|26e5",
"America/Campo_Grande|-03 -04|30 40|010101|1SKr0 1zd0 On0 1HB0 FX0|77e4",
"America/Chicago|CST CDT|60 50|01010101010101010101010|1SSU0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|92e5",
"America/Chihuahua|MST MDT|70 60|01010101010101010101010|1T3l0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0|81e4",
"America/Phoenix|MST|70|0||42e5",
"America/Whitehorse|PST PDT MST|80 70 70|01010101012|1Qtm0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3",
"America/New_York|EST EDT|50 40|01010101010101010101010|1Qtj0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6",
"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1Qtm0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6",
"America/Halifax|AST ADT|40 30|01010101010101010101010|1Qti0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4",
"America/Godthab|-03 -02|30 20|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e3",
"America/Grand_Turk|AST EDT EST|40 40 50|0121212121212121212|1Vkv0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2",
"America/Havana|CST CDT|50 40|01010101010101010101010|1Qth0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5",
"America/Metlakatla|AKST AKDT PST|90 80 80|010101201010101010101010|1Qtn0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
"America/Miquelon|-03 -02|30 20|01010101010101010101010|1Qth0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2",
"America/Whitehorse|PST PDT MST|80 70 70|010101012|1SSW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3",
"America/New_York|EST EDT|50 40|01010101010101010101010|1SST0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|21e6",
"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1SSW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|15e6",
"America/Halifax|AST ADT|40 30|01010101010101010101010|1SSS0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|39e4",
"America/Godthab|-03 -02|30 20|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|17e3",
"America/Grand_Turk|AST EDT EST|40 40 50|012121212121212121212|1Vkv0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|37e2",
"America/Havana|CST CDT|50 40|01010101010101010101010|1SSR0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0|21e5",
"America/Metlakatla|AKST AKDT PST|90 80 80|010120101010101010101010|1SSX0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|14e2",
"America/Miquelon|-03 -02|30 20|01010101010101010101010|1SSR0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|61e2",
"America/Noronha|-02|20|0||30e2",
"America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1SST0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
"Antarctica/Palmer|-03 -04|30 40|010|1QSr0 Ap0|40",
"America/Santiago|-03 -04|30 40|01010101010101010101010|1QSr0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0|62e5",
"America/Sao_Paulo|-02 -03|20 30|01010101|1QkO0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e4",
"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1Qthu 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
"Antarctica/Casey|+08 +11|-80 -b0|01010101|1RWg0 3m10 1o30 14k0 1kr0 12l0 1o01|10",
"America/Santiago|-03 -04|30 40|01010101010101010101010|1Tk30 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|62e5",
"America/Sao_Paulo|-02 -03|20 30|010101|1SKq0 1zd0 On0 1HB0 FX0|20e6",
"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|25e4",
"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1SSRu 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0|11e4",
"Antarctica/Casey|+11 +08|-b0 -80|0101010|1Vkh0 1o30 14k0 1kr0 12l0 1o01|10",
"Asia/Bangkok|+07|-70|0||15e6",
"Asia/Vladivostok|+10|-a0|0||60e4",
"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1QBs0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5",
"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1T340 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5",
"Asia/Tashkent|+05|-50|0||23e5",
"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00|14e5",
"Asia/Baghdad|+03|-30|0||66e5",
"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40",
"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1T320 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5",
"Europe/Istanbul|+03|-30|0||13e6",
"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|40",
"Asia/Dhaka|+06|-60|0||16e6",
"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1QAK0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00 LA0 1C00 Oo0 1zc0 Oo0 1C00 LA0 1C00|25e5",
"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1T2m0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00 LA0 1C00 Oo0 1zc0 Oo0 1C00 LA0 1C00 LA0 1C00|25e5",
"Asia/Kamchatka|+12|-c0|0||18e4",
"Asia/Dubai|+04|-40|0||39e5",
"Asia/Barnaul|+06 +07|-60 -70|01|1QyI0|",
"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1QyK0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|22e5",
"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1T0m0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0|22e5",
"Asia/Kuala_Lumpur|+08|-80|0||71e5",
"Asia/Kolkata|IST|-5u|0||15e6",
"Asia/Chita|+08 +09|-80 -90|01|1QyG0|33e4",
"Asia/Ulaanbaatar|+08 +09|-80 -90|010|1Qyi0 1cJ0|12e5",
"Asia/Chita|+09|-90|0||33e4",
"Asia/Shanghai|CST|-80|0||23e6",
"Asia/Colombo|+0530|-5u|0||22e5",
"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1QxW0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5",
"Asia/Yakutsk|+09|-90|0||28e4",
"Asia/Famagusta|EET EEST +03|-20 -30 -30|0120101010101010101010|1QyN0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|",
"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1Qyn0 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0|18e5",
"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1T2m0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5",
"Asia/Famagusta|+03 EET EEST|-30 -20 -30|0121212121212121212121|1Urd0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|",
"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1SXX0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1q00 XA0 1q00 12o0 1nc0 12o0 1nc0 12o0 1nc0 12o0 1q00|18e5",
"Asia/Hong_Kong|HKT|-80|0||73e5",
"Asia/Hovd|+07 +08|-70 -80|010|1Qyj0 1cJ0|81e3",
"Europe/Istanbul|EET EEST +03|-20 -30 -30|012|1QyN0 15w0|13e6",
"Asia/Jakarta|WIB|-70|0||31e6",
"Asia/Jayapura|WIT|-90|0||26e4",
"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1Qy00 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0|81e4",
"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1SXA0 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0|81e4",
"Asia/Kabul|+0430|-4u|0||46e5",
"Asia/Karachi|PKT|-50|0||24e6",
"Asia/Kathmandu|+0545|-5J|0||12e5",
"Asia/Magadan|+10 +11|-a0 -b0|01|1QJQ0|95e3",
"Asia/Sakhalin|+11|-b0|0||58e4",
"Asia/Makassar|WITA|-80|0||15e5",
"Asia/Manila|PST|-80|0||24e6",
"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|35e5",
"Asia/Novosibirsk|+06 +07|-60 -70|01|1Rmk0|15e5",
"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|35e5",
"Asia/Pyongyang|KST KST|-8u -90|01|1VGf0|29e5",
"Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4",
"Asia/Rangoon|+0630|-6u|0||48e5",
"Asia/Sakhalin|+10 +11|-a0 -b0|01|1QyE0|58e4",
"Asia/Seoul|KST|-90|0||23e6",
"Pacific/Bougainville|+11|-b0|0||18e4",
"Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1Qwku 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
"Asia/Tehran|+0330 +0430|-3u -4u|0101010101010|1SWIu 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
"Asia/Tokyo|JST|-90|0||38e6",
"Asia/Tomsk|+06 +07|-60 -70|01|1QXU0|10e5",
"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|27e5",
"Atlantic/Cape_Verde|-01|10|0||50e4",
"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1QBsu 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5",
"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1T34u 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5",
"Australia/Brisbane|AEST|-a0|0||20e5",
"Australia/Darwin|ACST|-9u|0||12e4",
"Australia/Eucla|+0845|-8J|0||368",
"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1QBr0 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu|347",
"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1T330 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347",
"Australia/Perth|AWST|-80|0||18e5",
"Pacific/Easter|-05 -06|50 60|01010101010101010101010|1QSr0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0|30e2",
"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
"Pacific/Easter|-05 -06|50 60|01010101010101010101010|1Tk30 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|30e2",
"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|12e5",
"Etc/GMT-1|+01|-10|0||",
"Pacific/Fakaofo|+13|-d0|0||483",
"Pacific/Kiritimati|+14|-e0|0||51e2",
@ -807,22 +795,20 @@
"Pacific/Pitcairn|-08|80|0||56",
"Pacific/Gambier|-09|90|0||125",
"Etc/UTC|UTC|0|0||",
"Europe/Ulyanovsk|+03 +04|-30 -40|01|1QyL0|13e5",
"Europe/London|GMT BST|0 -10|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|10e6",
"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1QyM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|67e4",
"Europe/London|GMT BST|0 -10|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|10e6",
"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1T0o0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|67e4",
"Europe/Moscow|MSK|-30|0||16e6",
"Europe/Saratov|+03 +04|-30 -40|01|1Sfz0|",
"Europe/Volgograd|+03 +04|-30 -40|010|1WQL0 5gn0|10e5",
"Pacific/Honolulu|HST|a0|0||37e4",
"MET|MET MEST|-10 -20|01010101010101010101010|1QyN0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|",
"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00|600",
"Pacific/Apia|+14 +13|-e0 -d0|010101010101|1QBq0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
"Pacific/Fiji|+13 +12|-d0 -c0|010101010101010101010|1Q6C0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0 4q00 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0|88e4",
"MET|MET MEST|-10 -20|01010101010101010101010|1T0p0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|",
"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1T320 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|600",
"Pacific/Apia|+14 +13|-e0 -d0|0101010101|1T320 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
"Pacific/Fiji|+13 +12|-d0 -c0|010101010101010101010|1Swe0 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0 4q00 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00 20o0|88e4",
"Pacific/Guam|ChST|-a0|0||17e4",
"Pacific/Marquesas|-0930|9u|0||86e2",
"Pacific/Pago_Pago|SST|b0|0||37e2",
"Pacific/Norfolk|+11 +12|-b0 -c0|0101010101010101|219P0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4",
"Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3"
"Pacific/Norfolk|+11 +12|-b0 -c0|010101010101010101|219P0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4",
"Pacific/Tongatapu|+14 +13|-e0 -d0|01|1Swd0|75e3"
],
"links": [
"Africa/Abidjan|Africa/Accra",
@ -894,6 +880,13 @@
"America/Anchorage|America/Yakutat",
"America/Anchorage|US/Alaska",
"America/Campo_Grande|America/Cuiaba",
"America/Caracas|America/Boa_Vista",
"America/Caracas|America/Guyana",
"America/Caracas|America/La_Paz",
"America/Caracas|America/Manaus",
"America/Caracas|America/Porto_Velho",
"America/Caracas|Brazil/West",
"America/Caracas|Etc/GMT+4",
"America/Chicago|America/Indiana/Knox",
"America/Chicago|America/Indiana/Tell_City",
"America/Chicago|America/Knox_IN",
@ -948,9 +941,11 @@
"America/Fortaleza|America/Mendoza",
"America/Fortaleza|America/Montevideo",
"America/Fortaleza|America/Paramaribo",
"America/Fortaleza|America/Punta_Arenas",
"America/Fortaleza|America/Recife",
"America/Fortaleza|America/Rosario",
"America/Fortaleza|America/Santarem",
"America/Fortaleza|Antarctica/Palmer",
"America/Fortaleza|Antarctica/Rothera",
"America/Fortaleza|Atlantic/Stanley",
"America/Fortaleza|Etc/GMT+3",
@ -962,12 +957,6 @@
"America/Halifax|Atlantic/Bermuda",
"America/Halifax|Canada/Atlantic",
"America/Havana|Cuba",
"America/La_Paz|America/Boa_Vista",
"America/La_Paz|America/Guyana",
"America/La_Paz|America/Manaus",
"America/La_Paz|America/Porto_Velho",
"America/La_Paz|Brazil/West",
"America/La_Paz|Etc/GMT+4",
"America/Lima|America/Bogota",
"America/Lima|America/Eirunepe",
"America/Lima|America/Guayaquil",
@ -1012,6 +1001,7 @@
"America/New_York|America/Nassau",
"America/New_York|America/Nipigon",
"America/New_York|America/Pangnirtung",
"America/New_York|America/Port-au-Prince",
"America/New_York|America/Thunder_Bay",
"America/New_York|America/Toronto",
"America/New_York|Canada/Eastern",
@ -1063,25 +1053,24 @@
"America/St_Johns|Canada/Newfoundland",
"America/Whitehorse|America/Dawson",
"America/Whitehorse|Canada/Yukon",
"Antarctica/Palmer|America/Punta_Arenas",
"Asia/Baghdad|Antarctica/Syowa",
"Asia/Baghdad|Asia/Aden",
"Asia/Baghdad|Asia/Bahrain",
"Asia/Baghdad|Asia/Kuwait",
"Asia/Baghdad|Asia/Qatar",
"Asia/Baghdad|Asia/Riyadh",
"Asia/Baghdad|Etc/GMT-3",
"Asia/Baghdad|Europe/Kirov",
"Asia/Baghdad|Europe/Minsk",
"Asia/Bangkok|Antarctica/Davis",
"Asia/Bangkok|Asia/Barnaul",
"Asia/Bangkok|Asia/Ho_Chi_Minh",
"Asia/Bangkok|Asia/Hovd",
"Asia/Bangkok|Asia/Krasnoyarsk",
"Asia/Bangkok|Asia/Novokuznetsk",
"Asia/Bangkok|Asia/Novosibirsk",
"Asia/Bangkok|Asia/Phnom_Penh",
"Asia/Bangkok|Asia/Saigon",
"Asia/Bangkok|Asia/Tomsk",
"Asia/Bangkok|Asia/Vientiane",
"Asia/Bangkok|Etc/GMT-7",
"Asia/Bangkok|Indian/Christmas",
"Asia/Chita|Asia/Dili",
"Asia/Chita|Asia/Khandyga",
"Asia/Chita|Asia/Yakutsk",
"Asia/Chita|Etc/GMT-9",
"Asia/Chita|Pacific/Palau",
"Asia/Dhaka|Antarctica/Vostok",
"Asia/Dhaka|Asia/Almaty",
"Asia/Dhaka|Asia/Bishkek",
@ -1099,7 +1088,10 @@
"Asia/Dubai|Asia/Tbilisi",
"Asia/Dubai|Asia/Yerevan",
"Asia/Dubai|Etc/GMT-4",
"Asia/Dubai|Europe/Astrakhan",
"Asia/Dubai|Europe/Samara",
"Asia/Dubai|Europe/Saratov",
"Asia/Dubai|Europe/Ulyanovsk",
"Asia/Dubai|Indian/Mahe",
"Asia/Dubai|Indian/Mauritius",
"Asia/Dubai|Indian/Reunion",
@ -1121,14 +1113,27 @@
"Asia/Kathmandu|Asia/Katmandu",
"Asia/Kolkata|Asia/Calcutta",
"Asia/Kuala_Lumpur|Asia/Brunei",
"Asia/Kuala_Lumpur|Asia/Choibalsan",
"Asia/Kuala_Lumpur|Asia/Irkutsk",
"Asia/Kuala_Lumpur|Asia/Kuching",
"Asia/Kuala_Lumpur|Asia/Singapore",
"Asia/Kuala_Lumpur|Asia/Ulaanbaatar",
"Asia/Kuala_Lumpur|Asia/Ulan_Bator",
"Asia/Kuala_Lumpur|Etc/GMT-8",
"Asia/Kuala_Lumpur|Singapore",
"Asia/Makassar|Asia/Ujung_Pandang",
"Asia/Rangoon|Asia/Yangon",
"Asia/Rangoon|Indian/Cocos",
"Asia/Sakhalin|Asia/Magadan",
"Asia/Sakhalin|Asia/Srednekolymsk",
"Asia/Sakhalin|Etc/GMT-11",
"Asia/Sakhalin|Pacific/Bougainville",
"Asia/Sakhalin|Pacific/Efate",
"Asia/Sakhalin|Pacific/Guadalcanal",
"Asia/Sakhalin|Pacific/Kosrae",
"Asia/Sakhalin|Pacific/Noumea",
"Asia/Sakhalin|Pacific/Pohnpei",
"Asia/Sakhalin|Pacific/Ponape",
"Asia/Seoul|ROK",
"Asia/Shanghai|Asia/Chongqing",
"Asia/Shanghai|Asia/Chungking",
@ -1153,8 +1158,6 @@
"Asia/Tashkent|Indian/Maldives",
"Asia/Tehran|Iran",
"Asia/Tokyo|Japan",
"Asia/Ulaanbaatar|Asia/Choibalsan",
"Asia/Ulaanbaatar|Asia/Ulan_Bator",
"Asia/Vladivostok|Antarctica/DumontDUrville",
"Asia/Vladivostok|Asia/Ust-Nera",
"Asia/Vladivostok|Etc/GMT-10",
@ -1162,10 +1165,6 @@
"Asia/Vladivostok|Pacific/Port_Moresby",
"Asia/Vladivostok|Pacific/Truk",
"Asia/Vladivostok|Pacific/Yap",
"Asia/Yakutsk|Asia/Dili",
"Asia/Yakutsk|Asia/Khandyga",
"Asia/Yakutsk|Etc/GMT-9",
"Asia/Yakutsk|Pacific/Palau",
"Atlantic/Azores|America/Scoresbysund",
"Atlantic/Cape_Verde|Etc/GMT+1",
"Australia/Adelaide|Australia/Broken_Hill",
@ -1197,6 +1196,7 @@
"Europe/Athens|Europe/Bucharest",
"Europe/Athens|Europe/Helsinki",
"Europe/Athens|Europe/Kiev",
"Europe/Athens|Europe/Kyiv",
"Europe/Athens|Europe/Mariehamn",
"Europe/Athens|Europe/Nicosia",
"Europe/Athens|Europe/Riga",
@ -1207,7 +1207,17 @@
"Europe/Athens|Europe/Zaporozhye",
"Europe/Chisinau|Europe/Tiraspol",
"Europe/Dublin|Eire",
"Europe/Istanbul|Antarctica/Syowa",
"Europe/Istanbul|Asia/Aden",
"Europe/Istanbul|Asia/Baghdad",
"Europe/Istanbul|Asia/Bahrain",
"Europe/Istanbul|Asia/Istanbul",
"Europe/Istanbul|Asia/Kuwait",
"Europe/Istanbul|Asia/Qatar",
"Europe/Istanbul|Asia/Riyadh",
"Europe/Istanbul|Etc/GMT-3",
"Europe/Istanbul|Europe/Kirov",
"Europe/Istanbul|Europe/Minsk",
"Europe/Istanbul|Turkey",
"Europe/Lisbon|Atlantic/Canary",
"Europe/Lisbon|Atlantic/Faeroe",
@ -1258,18 +1268,9 @@
"Europe/Paris|Europe/Zagreb",
"Europe/Paris|Europe/Zurich",
"Europe/Paris|Poland",
"Europe/Ulyanovsk|Europe/Astrakhan",
"Pacific/Auckland|Antarctica/McMurdo",
"Pacific/Auckland|Antarctica/South_Pole",
"Pacific/Auckland|NZ",
"Pacific/Bougainville|Asia/Srednekolymsk",
"Pacific/Bougainville|Etc/GMT-11",
"Pacific/Bougainville|Pacific/Efate",
"Pacific/Bougainville|Pacific/Guadalcanal",
"Pacific/Bougainville|Pacific/Kosrae",
"Pacific/Bougainville|Pacific/Noumea",
"Pacific/Bougainville|Pacific/Pohnpei",
"Pacific/Bougainville|Pacific/Ponape",
"Pacific/Chatham|NZ-CHAT",
"Pacific/Easter|Chile/EasterIsland",
"Pacific/Fakaofo|Etc/GMT-13",
@ -1294,17 +1295,17 @@
"AD|Europe/Andorra",
"AE|Asia/Dubai",
"AF|Asia/Kabul",
"AG|America/Port_of_Spain America/Antigua",
"AI|America/Port_of_Spain America/Anguilla",
"AG|America/Puerto_Rico America/Antigua",
"AI|America/Puerto_Rico America/Anguilla",
"AL|Europe/Tirane",
"AM|Asia/Yerevan",
"AO|Africa/Lagos Africa/Luanda",
"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo",
"AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Asia/Urumqi Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa Antarctica/Vostok",
"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
"AS|Pacific/Pago_Pago",
"AT|Europe/Vienna",
"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
"AW|America/Curacao America/Aruba",
"AW|America/Puerto_Rico America/Aruba",
"AX|Europe/Helsinki Europe/Mariehamn",
"AZ|Asia/Baku",
"BA|Europe/Belgrade Europe/Sarajevo",
@ -1316,19 +1317,19 @@
"BH|Asia/Qatar Asia/Bahrain",
"BI|Africa/Maputo Africa/Bujumbura",
"BJ|Africa/Lagos Africa/Porto-Novo",
"BL|America/Port_of_Spain America/St_Barthelemy",
"BL|America/Puerto_Rico America/St_Barthelemy",
"BM|Atlantic/Bermuda",
"BN|Asia/Brunei",
"BN|Asia/Kuching Asia/Brunei",
"BO|America/La_Paz",
"BQ|America/Curacao America/Kralendijk",
"BQ|America/Puerto_Rico America/Kralendijk",
"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
"BS|America/Nassau",
"BS|America/Toronto America/Nassau",
"BT|Asia/Thimphu",
"BW|Africa/Maputo Africa/Gaborone",
"BY|Europe/Minsk",
"BZ|America/Belize",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver",
"CC|Indian/Cocos",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston",
"CC|Asia/Yangon Indian/Cocos",
"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
"CF|Africa/Lagos Africa/Bangui",
"CG|Africa/Lagos Africa/Brazzaville",
@ -1342,14 +1343,14 @@
"CR|America/Costa_Rica",
"CU|America/Havana",
"CV|Atlantic/Cape_Verde",
"CW|America/Curacao",
"CX|Indian/Christmas",
"CW|America/Puerto_Rico America/Curacao",
"CX|Asia/Bangkok Indian/Christmas",
"CY|Asia/Nicosia Asia/Famagusta",
"CZ|Europe/Prague",
"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
"DJ|Africa/Nairobi Africa/Djibouti",
"DK|Europe/Copenhagen",
"DM|America/Port_of_Spain America/Dominica",
"DK|Europe/Berlin Europe/Copenhagen",
"DM|America/Puerto_Rico America/Dominica",
"DO|America/Santo_Domingo",
"DZ|Africa/Algiers",
"EC|America/Guayaquil Pacific/Galapagos",
@ -1362,21 +1363,21 @@
"FI|Europe/Helsinki",
"FJ|Pacific/Fiji",
"FK|Atlantic/Stanley",
"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae",
"FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei",
"FO|Atlantic/Faroe",
"FR|Europe/Paris",
"GA|Africa/Lagos Africa/Libreville",
"GB|Europe/London",
"GD|America/Port_of_Spain America/Grenada",
"GD|America/Puerto_Rico America/Grenada",
"GE|Asia/Tbilisi",
"GF|America/Cayenne",
"GG|Europe/London Europe/Guernsey",
"GH|Africa/Accra",
"GH|Africa/Abidjan Africa/Accra",
"GI|Europe/Gibraltar",
"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
"GM|Africa/Abidjan Africa/Banjul",
"GN|Africa/Abidjan Africa/Conakry",
"GP|America/Port_of_Spain America/Guadeloupe",
"GP|America/Puerto_Rico America/Guadeloupe",
"GQ|Africa/Lagos Africa/Malabo",
"GR|Europe/Athens",
"GS|Atlantic/South_Georgia",
@ -1397,7 +1398,7 @@
"IO|Indian/Chagos",
"IQ|Asia/Baghdad",
"IR|Asia/Tehran",
"IS|Atlantic/Reykjavik",
"IS|Africa/Abidjan Atlantic/Reykjavik",
"IT|Europe/Rome",
"JE|Europe/London Europe/Jersey",
"JM|America/Jamaica",
@ -1406,9 +1407,9 @@
"KE|Africa/Nairobi",
"KG|Asia/Bishkek",
"KH|Asia/Bangkok Asia/Phnom_Penh",
"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati",
"KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati",
"KM|Africa/Nairobi Indian/Comoro",
"KN|America/Port_of_Spain America/St_Kitts",
"KN|America/Puerto_Rico America/St_Kitts",
"KP|Asia/Pyongyang",
"KR|Asia/Seoul",
"KW|Asia/Riyadh Asia/Kuwait",
@ -1416,22 +1417,22 @@
"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
"LA|Asia/Bangkok Asia/Vientiane",
"LB|Asia/Beirut",
"LC|America/Port_of_Spain America/St_Lucia",
"LC|America/Puerto_Rico America/St_Lucia",
"LI|Europe/Zurich Europe/Vaduz",
"LK|Asia/Colombo",
"LR|Africa/Monrovia",
"LS|Africa/Johannesburg Africa/Maseru",
"LT|Europe/Vilnius",
"LU|Europe/Luxembourg",
"LU|Europe/Brussels Europe/Luxembourg",
"LV|Europe/Riga",
"LY|Africa/Tripoli",
"MA|Africa/Casablanca",
"MC|Europe/Monaco",
"MC|Europe/Paris Europe/Monaco",
"MD|Europe/Chisinau",
"ME|Europe/Belgrade Europe/Podgorica",
"MF|America/Port_of_Spain America/Marigot",
"MF|America/Puerto_Rico America/Marigot",
"MG|Africa/Nairobi Indian/Antananarivo",
"MH|Pacific/Majuro Pacific/Kwajalein",
"MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro",
"MK|Europe/Belgrade Europe/Skopje",
"ML|Africa/Abidjan Africa/Bamako",
"MM|Asia/Yangon",
@ -1440,13 +1441,13 @@
"MP|Pacific/Guam Pacific/Saipan",
"MQ|America/Martinique",
"MR|Africa/Abidjan Africa/Nouakchott",
"MS|America/Port_of_Spain America/Montserrat",
"MS|America/Puerto_Rico America/Montserrat",
"MT|Europe/Malta",
"MU|Indian/Mauritius",
"MV|Indian/Maldives",
"MW|Africa/Maputo Africa/Blantyre",
"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas",
"MY|Asia/Kuala_Lumpur Asia/Kuching",
"MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur",
"MZ|Africa/Maputo",
"NA|Africa/Windhoek",
"NC|Pacific/Noumea",
@ -1454,8 +1455,8 @@
"NF|Pacific/Norfolk",
"NG|Africa/Lagos",
"NI|America/Managua",
"NL|Europe/Amsterdam",
"NO|Europe/Oslo",
"NL|Europe/Brussels Europe/Amsterdam",
"NO|Europe/Berlin Europe/Oslo",
"NP|Asia/Kathmandu",
"NR|Pacific/Nauru",
"NU|Pacific/Niue",
@ -1476,20 +1477,20 @@
"PW|Pacific/Palau",
"PY|America/Asuncion",
"QA|Asia/Qatar",
"RE|Indian/Reunion",
"RE|Asia/Dubai Indian/Reunion",
"RO|Europe/Bucharest",
"RS|Europe/Belgrade",
"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
"RW|Africa/Maputo Africa/Kigali",
"SA|Asia/Riyadh",
"SB|Pacific/Guadalcanal",
"SC|Indian/Mahe",
"SC|Asia/Dubai Indian/Mahe",
"SD|Africa/Khartoum",
"SE|Europe/Stockholm",
"SE|Europe/Berlin Europe/Stockholm",
"SG|Asia/Singapore",
"SH|Africa/Abidjan Atlantic/St_Helena",
"SI|Europe/Belgrade Europe/Ljubljana",
"SJ|Europe/Oslo Arctic/Longyearbyen",
"SJ|Europe/Berlin Arctic/Longyearbyen",
"SK|Europe/Prague Europe/Bratislava",
"SL|Africa/Abidjan Africa/Freetown",
"SM|Europe/Rome Europe/San_Marino",
@ -1499,12 +1500,12 @@
"SS|Africa/Juba",
"ST|Africa/Sao_Tome",
"SV|America/El_Salvador",
"SX|America/Curacao America/Lower_Princes",
"SX|America/Puerto_Rico America/Lower_Princes",
"SY|Asia/Damascus",
"SZ|Africa/Johannesburg Africa/Mbabane",
"TC|America/Grand_Turk",
"TD|Africa/Ndjamena",
"TF|Indian/Reunion Indian/Kerguelen",
"TF|Asia/Dubai Indian/Maldives Indian/Kerguelen",
"TG|Africa/Abidjan Africa/Lome",
"TH|Asia/Bangkok",
"TJ|Asia/Dushanbe",
@ -1514,24 +1515,24 @@
"TN|Africa/Tunis",
"TO|Pacific/Tongatapu",
"TR|Europe/Istanbul",
"TT|America/Port_of_Spain",
"TV|Pacific/Funafuti",
"TT|America/Puerto_Rico America/Port_of_Spain",
"TV|Pacific/Tarawa Pacific/Funafuti",
"TW|Asia/Taipei",
"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye",
"UA|Europe/Simferopol Europe/Kyiv Europe/Uzhgorod Europe/Zaporozhye",
"UG|Africa/Nairobi Africa/Kampala",
"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway",
"UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Honolulu Pacific/Midway Pacific/Wake",
"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
"UY|America/Montevideo",
"UZ|Asia/Samarkand Asia/Tashkent",
"VA|Europe/Rome Europe/Vatican",
"VC|America/Port_of_Spain America/St_Vincent",
"VC|America/Puerto_Rico America/St_Vincent",
"VE|America/Caracas",
"VG|America/Port_of_Spain America/Tortola",
"VI|America/Port_of_Spain America/St_Thomas",
"VG|America/Puerto_Rico America/Tortola",
"VI|America/Puerto_Rico America/St_Thomas",
"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
"VU|Pacific/Efate",
"WF|Pacific/Wallis",
"WF|Pacific/Tarawa Pacific/Wallis",
"WS|Pacific/Apia",
"YE|Asia/Riyadh Asia/Aden",
"YT|Africa/Nairobi Indian/Mayotte",

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
//! moment-timezone.js
//! version : 0.5.34
//! version : 0.5.36
//! Copyright (c) JS Foundation and other contributors
//! license : MIT
//! github.com/moment/moment-timezone
@ -29,7 +29,7 @@
// return moment;
// }
var VERSION = "0.5.34",
var VERSION = "0.5.36",
zones = {},
links = {},
countries = {},
@ -691,7 +691,7 @@
}
loadData({
"version": "2021e",
"version": "2022c",
"zones": [
"Africa/Abidjan|GMT|0|0||48e5",
"Africa/Nairobi|EAT|-30|0||47e5",
@ -821,7 +821,7 @@
"America/Regina|CST|60|0||19e4",
"America/Resolute|CST CDT EST|60 50 50|0101010101010101010101010101010101010101012101010101012101010101010101010101010101010101010101010101010|p7I0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229",
"America/Santarem|-04 -03|40 30|01010101|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4",
"America/Santiago|-03 -04|30 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|62e5",
"America/Santiago|-03 -04|30 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|62e5",
"America/Santo_Domingo|-0430 EST AST|4u 50 40|0101010101212|ksu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5",
"America/Sao_Paulo|-03 -02|30 20|010101010101010101010101010101010101010101010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
"America/Scoresbysund|-02 -01 +00|20 10 0|0102121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|oXg0 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|452",
@ -874,8 +874,8 @@
"Asia/Dubai|+04|-40|0||39e5",
"Asia/Dushanbe|+06 +07 +05|-60 -70 -50|0101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4",
"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101012010101010101010101010101010|cPa0 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|",
"Asia/Gaza|IST IDT EET EEST|-20 -30 -20 -30|010101010101010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0|18e5",
"Asia/Hebron|IST IDT EET EEST|-20 -30 -20 -30|01010101010101010101010101010102323232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0|25e4",
"Asia/Gaza|IST IDT EET EEST|-20 -30 -20 -30|010101010101010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1q00 XA0 1q00 12o0 1nc0 12o0 1nc0 12o0 1nc0 12o0 1q00 XA0 1q00 XA0 1q00 12o0 1nc0|18e5",
"Asia/Hebron|IST IDT EET EEST|-20 -30 -20 -30|01010101010101010101010101010102323232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1q00 XA0 1q00 12o0 1nc0 12o0 1nc0 12o0 1nc0 12o0 1q00 XA0 1q00 XA0 1q00 12o0 1nc0|25e4",
"Asia/Ho_Chi_Minh|+08 +07|-80 -70|01|dfs0|90e5",
"Asia/Hong_Kong|HKT HKST|-80 -90|01010101010101010|H7u 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5",
"Asia/Hovd|+06 +07 +08|-60 -70 -80|01212121212121212121212121212121212121212121212121|jsG0 cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3",
@ -912,7 +912,7 @@
"Asia/Taipei|CST CDT|-80 -90|0101010|akg0 1db0 1cN0 1db0 97B0 AL0|74e5",
"Asia/Tashkent|+06 +07 +05|-60 -70 -50|0101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5",
"Asia/Tbilisi|+04 +05 +03|-40 -50 -30|01010101010101010101020202010101010101010101020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5",
"Asia/Tehran|+0330 +04 +05 +0430|-3u -40 -50 -4u|0121030303030303030303030303030303030303030303030303030303030303030303030303030303030|j4ku TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0|14e6",
"Asia/Tehran|+0330 +0430 +04 +05|-3u -4u -40 -50|0123201010101010101010101010101010101010101010101010101010101010101010|hyHu 1pc0 120u Rc0 XA0 Wou JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
"Asia/Thimphu|+0530 +06|-5u -60|01|HcGu|79e3",
"Asia/Tokyo|JST|-90|0||38e6",
"Asia/Tomsk|+07 +08 +06|-70 -80 -60|01010101010101010101020101010101010101010101020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5",
@ -942,7 +942,7 @@
"Australia/Melbourne|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r40 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|39e5",
"Australia/Perth|AWST AWDT|-80 -90|0101010101010|bHS0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5",
"Europe/Brussels|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|21e5",
"Pacific/Easter|-06 -07 -05|60 70 50|010101010101010101010101020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|30e2",
"Pacific/Easter|-06 -07 -05|60 70 50|010101010101010101010101020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|30e2",
"EET|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|",
"Europe/Dublin|IST GMT|-10 0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4re0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5",
"Etc/GMT-1|+01|-10|0||",
@ -976,7 +976,7 @@
"Europe/Gibraltar|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|tLB0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|30e3",
"Europe/Helsinki|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm00 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5",
"Europe/Kaliningrad|MSK MSD EEST EET +03|-30 -40 -30 -20 -30|010101010101010102323232323232323232323232323232323232323232343|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4",
"Europe/Kiev|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101010123232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|34e5",
"Europe/Kiev|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101010123232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|34e5",
"Europe/Kirov|+04 +05 +03|-40 -50 -30|010101010101010102020202020202020202020202020202020202020202|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4",
"Europe/Lisbon|CET WET WEST CEST|-10 0 -10 -20|01212121212121212121212121212121203030302121212121212121212121212121212121212121212121212121212121212121212121|go00 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e5",
"Europe/Madrid|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|apy0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|62e5",
@ -988,17 +988,17 @@
"Europe/Rome|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|XX0 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|39e5",
"Europe/Samara|+04 +05 +03|-40 -50 -30|01010101010101010202010101010101010101010101010101010101020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5",
"Europe/Saratov|+04 +05 +03|-40 -50 -30|0101010101010102020202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|",
"Europe/Simferopol|MSK MSD EET EEST MSK|-30 -40 -20 -30 -40|0101010101010101010232323101010323232323232323232323232323232323240|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4",
"Europe/Simferopol|MSK MSD EET EEST MSK|-30 -40 -20 -30 -40|0101010101010101010232323101010323232323232323232323232323232323240|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4",
"Europe/Sofia|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|muJ0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5",
"Europe/Tallinn|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|41e4",
"Europe/Tirane|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|axz0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|42e4",
"Europe/Ulyanovsk|+04 +05 +03 +02|-40 -50 -30 -20|010101010101010102023202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5",
"Europe/Uzhgorod|MSK MSD CET EET EEST|-30 -40 -10 -20 -30|010101010101010101023434343434343434343434343434343434343434343434343434343434343434343434343434343|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e4",
"Europe/Uzhgorod|MSK MSD CET EET EEST|-30 -40 -10 -20 -30|010101010101010101023434343434343434343434343434343434343434343434343434343434343434343434343434343|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2py0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e4",
"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXb0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|18e5",
"Europe/Vilnius|MSK MSD EEST EET CEST CET|-30 -40 -30 -20 -20 -10|01010101010101010232323232323232323454323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|54e4",
"Europe/Volgograd|+04 +05 +03|-40 -50 -30|01010101010101020202020202020202020202020202020202020202020202|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5",
"Europe/Warsaw|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e5",
"Europe/Zaporozhye|MSK MSD EEST EET|-30 -40 -30 -20|01010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|77e4",
"Europe/Zaporozhye|MSK MSD EEST EET|-30 -40 -30 -20|01010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|77e4",
"Pacific/Honolulu|HST|a0|0||37e4",
"Indian/Chagos|+05 +06|-50 -60|01|13ij0|30e2",
"Indian/Mauritius|+04 +05|-40 -50|01010|v5U0 14L0 12kr0 11z0|15e4",
@ -1241,6 +1241,7 @@
"Europe/Helsinki|Europe/Mariehamn",
"Europe/Istanbul|Asia/Istanbul",
"Europe/Istanbul|Turkey",
"Europe/Kiev|Europe/Kyiv",
"Europe/Lisbon|Portugal",
"Europe/London|Europe/Belfast",
"Europe/London|Europe/Guernsey",
@ -1294,17 +1295,17 @@
"AD|Europe/Andorra",
"AE|Asia/Dubai",
"AF|Asia/Kabul",
"AG|America/Port_of_Spain America/Antigua",
"AI|America/Port_of_Spain America/Anguilla",
"AG|America/Puerto_Rico America/Antigua",
"AI|America/Puerto_Rico America/Anguilla",
"AL|Europe/Tirane",
"AM|Asia/Yerevan",
"AO|Africa/Lagos Africa/Luanda",
"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo",
"AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Asia/Urumqi Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa Antarctica/Vostok",
"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
"AS|Pacific/Pago_Pago",
"AT|Europe/Vienna",
"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
"AW|America/Curacao America/Aruba",
"AW|America/Puerto_Rico America/Aruba",
"AX|Europe/Helsinki Europe/Mariehamn",
"AZ|Asia/Baku",
"BA|Europe/Belgrade Europe/Sarajevo",
@ -1316,19 +1317,19 @@
"BH|Asia/Qatar Asia/Bahrain",
"BI|Africa/Maputo Africa/Bujumbura",
"BJ|Africa/Lagos Africa/Porto-Novo",
"BL|America/Port_of_Spain America/St_Barthelemy",
"BL|America/Puerto_Rico America/St_Barthelemy",
"BM|Atlantic/Bermuda",
"BN|Asia/Brunei",
"BN|Asia/Kuching Asia/Brunei",
"BO|America/La_Paz",
"BQ|America/Curacao America/Kralendijk",
"BQ|America/Puerto_Rico America/Kralendijk",
"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
"BS|America/Nassau",
"BS|America/Toronto America/Nassau",
"BT|Asia/Thimphu",
"BW|Africa/Maputo Africa/Gaborone",
"BY|Europe/Minsk",
"BZ|America/Belize",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver",
"CC|Indian/Cocos",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston",
"CC|Asia/Yangon Indian/Cocos",
"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
"CF|Africa/Lagos Africa/Bangui",
"CG|Africa/Lagos Africa/Brazzaville",
@ -1342,14 +1343,14 @@
"CR|America/Costa_Rica",
"CU|America/Havana",
"CV|Atlantic/Cape_Verde",
"CW|America/Curacao",
"CX|Indian/Christmas",
"CW|America/Puerto_Rico America/Curacao",
"CX|Asia/Bangkok Indian/Christmas",
"CY|Asia/Nicosia Asia/Famagusta",
"CZ|Europe/Prague",
"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
"DJ|Africa/Nairobi Africa/Djibouti",
"DK|Europe/Copenhagen",
"DM|America/Port_of_Spain America/Dominica",
"DK|Europe/Berlin Europe/Copenhagen",
"DM|America/Puerto_Rico America/Dominica",
"DO|America/Santo_Domingo",
"DZ|Africa/Algiers",
"EC|America/Guayaquil Pacific/Galapagos",
@ -1362,21 +1363,21 @@
"FI|Europe/Helsinki",
"FJ|Pacific/Fiji",
"FK|Atlantic/Stanley",
"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae",
"FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei",
"FO|Atlantic/Faroe",
"FR|Europe/Paris",
"GA|Africa/Lagos Africa/Libreville",
"GB|Europe/London",
"GD|America/Port_of_Spain America/Grenada",
"GD|America/Puerto_Rico America/Grenada",
"GE|Asia/Tbilisi",
"GF|America/Cayenne",
"GG|Europe/London Europe/Guernsey",
"GH|Africa/Accra",
"GH|Africa/Abidjan Africa/Accra",
"GI|Europe/Gibraltar",
"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
"GM|Africa/Abidjan Africa/Banjul",
"GN|Africa/Abidjan Africa/Conakry",
"GP|America/Port_of_Spain America/Guadeloupe",
"GP|America/Puerto_Rico America/Guadeloupe",
"GQ|Africa/Lagos Africa/Malabo",
"GR|Europe/Athens",
"GS|Atlantic/South_Georgia",
@ -1397,7 +1398,7 @@
"IO|Indian/Chagos",
"IQ|Asia/Baghdad",
"IR|Asia/Tehran",
"IS|Atlantic/Reykjavik",
"IS|Africa/Abidjan Atlantic/Reykjavik",
"IT|Europe/Rome",
"JE|Europe/London Europe/Jersey",
"JM|America/Jamaica",
@ -1406,9 +1407,9 @@
"KE|Africa/Nairobi",
"KG|Asia/Bishkek",
"KH|Asia/Bangkok Asia/Phnom_Penh",
"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati",
"KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati",
"KM|Africa/Nairobi Indian/Comoro",
"KN|America/Port_of_Spain America/St_Kitts",
"KN|America/Puerto_Rico America/St_Kitts",
"KP|Asia/Pyongyang",
"KR|Asia/Seoul",
"KW|Asia/Riyadh Asia/Kuwait",
@ -1416,22 +1417,22 @@
"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
"LA|Asia/Bangkok Asia/Vientiane",
"LB|Asia/Beirut",
"LC|America/Port_of_Spain America/St_Lucia",
"LC|America/Puerto_Rico America/St_Lucia",
"LI|Europe/Zurich Europe/Vaduz",
"LK|Asia/Colombo",
"LR|Africa/Monrovia",
"LS|Africa/Johannesburg Africa/Maseru",
"LT|Europe/Vilnius",
"LU|Europe/Luxembourg",
"LU|Europe/Brussels Europe/Luxembourg",
"LV|Europe/Riga",
"LY|Africa/Tripoli",
"MA|Africa/Casablanca",
"MC|Europe/Monaco",
"MC|Europe/Paris Europe/Monaco",
"MD|Europe/Chisinau",
"ME|Europe/Belgrade Europe/Podgorica",
"MF|America/Port_of_Spain America/Marigot",
"MF|America/Puerto_Rico America/Marigot",
"MG|Africa/Nairobi Indian/Antananarivo",
"MH|Pacific/Majuro Pacific/Kwajalein",
"MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro",
"MK|Europe/Belgrade Europe/Skopje",
"ML|Africa/Abidjan Africa/Bamako",
"MM|Asia/Yangon",
@ -1440,13 +1441,13 @@
"MP|Pacific/Guam Pacific/Saipan",
"MQ|America/Martinique",
"MR|Africa/Abidjan Africa/Nouakchott",
"MS|America/Port_of_Spain America/Montserrat",
"MS|America/Puerto_Rico America/Montserrat",
"MT|Europe/Malta",
"MU|Indian/Mauritius",
"MV|Indian/Maldives",
"MW|Africa/Maputo Africa/Blantyre",
"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas",
"MY|Asia/Kuala_Lumpur Asia/Kuching",
"MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur",
"MZ|Africa/Maputo",
"NA|Africa/Windhoek",
"NC|Pacific/Noumea",
@ -1454,8 +1455,8 @@
"NF|Pacific/Norfolk",
"NG|Africa/Lagos",
"NI|America/Managua",
"NL|Europe/Amsterdam",
"NO|Europe/Oslo",
"NL|Europe/Brussels Europe/Amsterdam",
"NO|Europe/Berlin Europe/Oslo",
"NP|Asia/Kathmandu",
"NR|Pacific/Nauru",
"NU|Pacific/Niue",
@ -1476,20 +1477,20 @@
"PW|Pacific/Palau",
"PY|America/Asuncion",
"QA|Asia/Qatar",
"RE|Indian/Reunion",
"RE|Asia/Dubai Indian/Reunion",
"RO|Europe/Bucharest",
"RS|Europe/Belgrade",
"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
"RW|Africa/Maputo Africa/Kigali",
"SA|Asia/Riyadh",
"SB|Pacific/Guadalcanal",
"SC|Indian/Mahe",
"SC|Asia/Dubai Indian/Mahe",
"SD|Africa/Khartoum",
"SE|Europe/Stockholm",
"SE|Europe/Berlin Europe/Stockholm",
"SG|Asia/Singapore",
"SH|Africa/Abidjan Atlantic/St_Helena",
"SI|Europe/Belgrade Europe/Ljubljana",
"SJ|Europe/Oslo Arctic/Longyearbyen",
"SJ|Europe/Berlin Arctic/Longyearbyen",
"SK|Europe/Prague Europe/Bratislava",
"SL|Africa/Abidjan Africa/Freetown",
"SM|Europe/Rome Europe/San_Marino",
@ -1499,12 +1500,12 @@
"SS|Africa/Juba",
"ST|Africa/Sao_Tome",
"SV|America/El_Salvador",
"SX|America/Curacao America/Lower_Princes",
"SX|America/Puerto_Rico America/Lower_Princes",
"SY|Asia/Damascus",
"SZ|Africa/Johannesburg Africa/Mbabane",
"TC|America/Grand_Turk",
"TD|Africa/Ndjamena",
"TF|Indian/Reunion Indian/Kerguelen",
"TF|Asia/Dubai Indian/Maldives Indian/Kerguelen",
"TG|Africa/Abidjan Africa/Lome",
"TH|Asia/Bangkok",
"TJ|Asia/Dushanbe",
@ -1514,24 +1515,24 @@
"TN|Africa/Tunis",
"TO|Pacific/Tongatapu",
"TR|Europe/Istanbul",
"TT|America/Port_of_Spain",
"TV|Pacific/Funafuti",
"TT|America/Puerto_Rico America/Port_of_Spain",
"TV|Pacific/Tarawa Pacific/Funafuti",
"TW|Asia/Taipei",
"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye",
"UA|Europe/Simferopol Europe/Kyiv Europe/Uzhgorod Europe/Zaporozhye",
"UG|Africa/Nairobi Africa/Kampala",
"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway",
"UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Honolulu Pacific/Midway Pacific/Wake",
"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
"UY|America/Montevideo",
"UZ|Asia/Samarkand Asia/Tashkent",
"VA|Europe/Rome Europe/Vatican",
"VC|America/Port_of_Spain America/St_Vincent",
"VC|America/Puerto_Rico America/St_Vincent",
"VE|America/Caracas",
"VG|America/Port_of_Spain America/Tortola",
"VI|America/Port_of_Spain America/St_Thomas",
"VG|America/Puerto_Rico America/Tortola",
"VI|America/Puerto_Rico America/St_Thomas",
"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
"VU|Pacific/Efate",
"WF|Pacific/Wallis",
"WF|Pacific/Tarawa Pacific/Wallis",
"WS|Pacific/Apia",
"YE|Asia/Riyadh Asia/Aden",
"YT|Africa/Nairobi Indian/Mayotte",

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
//! moment-timezone.js
//! version : 0.5.34
//! version : 0.5.36
//! Copyright (c) JS Foundation and other contributors
//! license : MIT
//! github.com/moment/moment-timezone
@ -29,7 +29,7 @@
// return moment;
// }
var VERSION = "0.5.34",
var VERSION = "0.5.36",
zones = {},
links = {},
countries = {},
@ -691,7 +691,7 @@
}
loadData({
"version": "2021e",
"version": "2022c",
"zones": [
"Africa/Abidjan|GMT|0|0||48e5",
"Africa/Nairobi|EAT|-30|0||47e5",
@ -741,7 +741,7 @@
"America/Noronha|-02|20|0||30e2",
"America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e5",
"Antarctica/Palmer|-03 -04|30 40|010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40",
"America/Santiago|-03 -04|30 40|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|62e5",
"America/Santiago|-03 -04|30 40|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0|62e5",
"America/Sao_Paulo|-02 -03|20 30|0101010101010101|1GCq0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4",
"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1GI5u 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4",
@ -770,7 +770,7 @@
"Asia/Dili|+09|-90|0||19e4",
"Asia/Dubai|+04|-40|0||39e5",
"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101201010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|",
"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1GPy0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 Xc0 1qo0|18e5",
"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1GPy0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1q00|18e5",
"Asia/Hong_Kong|HKT|-80|0||73e5",
"Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3",
"Asia/Irkutsk|+09 +08|-90 -80|01|1N7t0|60e4",
@ -808,7 +808,7 @@
"Australia/Eucla|+0845|-8J|0||368",
"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1GQf0 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347",
"Australia/Perth|AWST|-80|0||18e5",
"Pacific/Easter|-05 -06|50 60|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|30e2",
"Pacific/Easter|-05 -06|50 60|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0|30e2",
"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|12e5",
"Etc/GMT-1|+01|-10|0||",
"Pacific/Guadalcanal|+11|-b0|0||11e4",
@ -1195,6 +1195,7 @@
"Europe/Athens|Europe/Bucharest",
"Europe/Athens|Europe/Helsinki",
"Europe/Athens|Europe/Kiev",
"Europe/Athens|Europe/Kyiv",
"Europe/Athens|Europe/Mariehamn",
"Europe/Athens|Europe/Nicosia",
"Europe/Athens|Europe/Riga",
@ -1294,17 +1295,17 @@
"AD|Europe/Andorra",
"AE|Asia/Dubai",
"AF|Asia/Kabul",
"AG|America/Port_of_Spain America/Antigua",
"AI|America/Port_of_Spain America/Anguilla",
"AG|America/Puerto_Rico America/Antigua",
"AI|America/Puerto_Rico America/Anguilla",
"AL|Europe/Tirane",
"AM|Asia/Yerevan",
"AO|Africa/Lagos Africa/Luanda",
"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo",
"AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Asia/Urumqi Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa Antarctica/Vostok",
"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
"AS|Pacific/Pago_Pago",
"AT|Europe/Vienna",
"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
"AW|America/Curacao America/Aruba",
"AW|America/Puerto_Rico America/Aruba",
"AX|Europe/Helsinki Europe/Mariehamn",
"AZ|Asia/Baku",
"BA|Europe/Belgrade Europe/Sarajevo",
@ -1316,19 +1317,19 @@
"BH|Asia/Qatar Asia/Bahrain",
"BI|Africa/Maputo Africa/Bujumbura",
"BJ|Africa/Lagos Africa/Porto-Novo",
"BL|America/Port_of_Spain America/St_Barthelemy",
"BL|America/Puerto_Rico America/St_Barthelemy",
"BM|Atlantic/Bermuda",
"BN|Asia/Brunei",
"BN|Asia/Kuching Asia/Brunei",
"BO|America/La_Paz",
"BQ|America/Curacao America/Kralendijk",
"BQ|America/Puerto_Rico America/Kralendijk",
"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
"BS|America/Nassau",
"BS|America/Toronto America/Nassau",
"BT|Asia/Thimphu",
"BW|Africa/Maputo Africa/Gaborone",
"BY|Europe/Minsk",
"BZ|America/Belize",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver",
"CC|Indian/Cocos",
"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston",
"CC|Asia/Yangon Indian/Cocos",
"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
"CF|Africa/Lagos Africa/Bangui",
"CG|Africa/Lagos Africa/Brazzaville",
@ -1342,14 +1343,14 @@
"CR|America/Costa_Rica",
"CU|America/Havana",
"CV|Atlantic/Cape_Verde",
"CW|America/Curacao",
"CX|Indian/Christmas",
"CW|America/Puerto_Rico America/Curacao",
"CX|Asia/Bangkok Indian/Christmas",
"CY|Asia/Nicosia Asia/Famagusta",
"CZ|Europe/Prague",
"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
"DJ|Africa/Nairobi Africa/Djibouti",
"DK|Europe/Copenhagen",
"DM|America/Port_of_Spain America/Dominica",
"DK|Europe/Berlin Europe/Copenhagen",
"DM|America/Puerto_Rico America/Dominica",
"DO|America/Santo_Domingo",
"DZ|Africa/Algiers",
"EC|America/Guayaquil Pacific/Galapagos",
@ -1362,21 +1363,21 @@
"FI|Europe/Helsinki",
"FJ|Pacific/Fiji",
"FK|Atlantic/Stanley",
"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae",
"FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei",
"FO|Atlantic/Faroe",
"FR|Europe/Paris",
"GA|Africa/Lagos Africa/Libreville",
"GB|Europe/London",
"GD|America/Port_of_Spain America/Grenada",
"GD|America/Puerto_Rico America/Grenada",
"GE|Asia/Tbilisi",
"GF|America/Cayenne",
"GG|Europe/London Europe/Guernsey",
"GH|Africa/Accra",
"GH|Africa/Abidjan Africa/Accra",
"GI|Europe/Gibraltar",
"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
"GM|Africa/Abidjan Africa/Banjul",
"GN|Africa/Abidjan Africa/Conakry",
"GP|America/Port_of_Spain America/Guadeloupe",
"GP|America/Puerto_Rico America/Guadeloupe",
"GQ|Africa/Lagos Africa/Malabo",
"GR|Europe/Athens",
"GS|Atlantic/South_Georgia",
@ -1397,7 +1398,7 @@
"IO|Indian/Chagos",
"IQ|Asia/Baghdad",
"IR|Asia/Tehran",
"IS|Atlantic/Reykjavik",
"IS|Africa/Abidjan Atlantic/Reykjavik",
"IT|Europe/Rome",
"JE|Europe/London Europe/Jersey",
"JM|America/Jamaica",
@ -1406,9 +1407,9 @@
"KE|Africa/Nairobi",
"KG|Asia/Bishkek",
"KH|Asia/Bangkok Asia/Phnom_Penh",
"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati",
"KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati",
"KM|Africa/Nairobi Indian/Comoro",
"KN|America/Port_of_Spain America/St_Kitts",
"KN|America/Puerto_Rico America/St_Kitts",
"KP|Asia/Pyongyang",
"KR|Asia/Seoul",
"KW|Asia/Riyadh Asia/Kuwait",
@ -1416,22 +1417,22 @@
"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
"LA|Asia/Bangkok Asia/Vientiane",
"LB|Asia/Beirut",
"LC|America/Port_of_Spain America/St_Lucia",
"LC|America/Puerto_Rico America/St_Lucia",
"LI|Europe/Zurich Europe/Vaduz",
"LK|Asia/Colombo",
"LR|Africa/Monrovia",
"LS|Africa/Johannesburg Africa/Maseru",
"LT|Europe/Vilnius",
"LU|Europe/Luxembourg",
"LU|Europe/Brussels Europe/Luxembourg",
"LV|Europe/Riga",
"LY|Africa/Tripoli",
"MA|Africa/Casablanca",
"MC|Europe/Monaco",
"MC|Europe/Paris Europe/Monaco",
"MD|Europe/Chisinau",
"ME|Europe/Belgrade Europe/Podgorica",
"MF|America/Port_of_Spain America/Marigot",
"MF|America/Puerto_Rico America/Marigot",
"MG|Africa/Nairobi Indian/Antananarivo",
"MH|Pacific/Majuro Pacific/Kwajalein",
"MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro",
"MK|Europe/Belgrade Europe/Skopje",
"ML|Africa/Abidjan Africa/Bamako",
"MM|Asia/Yangon",
@ -1440,13 +1441,13 @@
"MP|Pacific/Guam Pacific/Saipan",
"MQ|America/Martinique",
"MR|Africa/Abidjan Africa/Nouakchott",
"MS|America/Port_of_Spain America/Montserrat",
"MS|America/Puerto_Rico America/Montserrat",
"MT|Europe/Malta",
"MU|Indian/Mauritius",
"MV|Indian/Maldives",
"MW|Africa/Maputo Africa/Blantyre",
"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas",
"MY|Asia/Kuala_Lumpur Asia/Kuching",
"MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur",
"MZ|Africa/Maputo",
"NA|Africa/Windhoek",
"NC|Pacific/Noumea",
@ -1454,8 +1455,8 @@
"NF|Pacific/Norfolk",
"NG|Africa/Lagos",
"NI|America/Managua",
"NL|Europe/Amsterdam",
"NO|Europe/Oslo",
"NL|Europe/Brussels Europe/Amsterdam",
"NO|Europe/Berlin Europe/Oslo",
"NP|Asia/Kathmandu",
"NR|Pacific/Nauru",
"NU|Pacific/Niue",
@ -1476,20 +1477,20 @@
"PW|Pacific/Palau",
"PY|America/Asuncion",
"QA|Asia/Qatar",
"RE|Indian/Reunion",
"RE|Asia/Dubai Indian/Reunion",
"RO|Europe/Bucharest",
"RS|Europe/Belgrade",
"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
"RW|Africa/Maputo Africa/Kigali",
"SA|Asia/Riyadh",
"SB|Pacific/Guadalcanal",
"SC|Indian/Mahe",
"SC|Asia/Dubai Indian/Mahe",
"SD|Africa/Khartoum",
"SE|Europe/Stockholm",
"SE|Europe/Berlin Europe/Stockholm",
"SG|Asia/Singapore",
"SH|Africa/Abidjan Atlantic/St_Helena",
"SI|Europe/Belgrade Europe/Ljubljana",
"SJ|Europe/Oslo Arctic/Longyearbyen",
"SJ|Europe/Berlin Arctic/Longyearbyen",
"SK|Europe/Prague Europe/Bratislava",
"SL|Africa/Abidjan Africa/Freetown",
"SM|Europe/Rome Europe/San_Marino",
@ -1499,12 +1500,12 @@
"SS|Africa/Juba",
"ST|Africa/Sao_Tome",
"SV|America/El_Salvador",
"SX|America/Curacao America/Lower_Princes",
"SX|America/Puerto_Rico America/Lower_Princes",
"SY|Asia/Damascus",
"SZ|Africa/Johannesburg Africa/Mbabane",
"TC|America/Grand_Turk",
"TD|Africa/Ndjamena",
"TF|Indian/Reunion Indian/Kerguelen",
"TF|Asia/Dubai Indian/Maldives Indian/Kerguelen",
"TG|Africa/Abidjan Africa/Lome",
"TH|Asia/Bangkok",
"TJ|Asia/Dushanbe",
@ -1514,24 +1515,24 @@
"TN|Africa/Tunis",
"TO|Pacific/Tongatapu",
"TR|Europe/Istanbul",
"TT|America/Port_of_Spain",
"TV|Pacific/Funafuti",
"TT|America/Puerto_Rico America/Port_of_Spain",
"TV|Pacific/Tarawa Pacific/Funafuti",
"TW|Asia/Taipei",
"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye",
"UA|Europe/Simferopol Europe/Kyiv Europe/Uzhgorod Europe/Zaporozhye",
"UG|Africa/Nairobi Africa/Kampala",
"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway",
"UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Honolulu Pacific/Midway Pacific/Wake",
"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
"UY|America/Montevideo",
"UZ|Asia/Samarkand Asia/Tashkent",
"VA|Europe/Rome Europe/Vatican",
"VC|America/Port_of_Spain America/St_Vincent",
"VC|America/Puerto_Rico America/St_Vincent",
"VE|America/Caracas",
"VG|America/Port_of_Spain America/Tortola",
"VI|America/Port_of_Spain America/St_Thomas",
"VG|America/Puerto_Rico America/Tortola",
"VI|America/Puerto_Rico America/St_Thomas",
"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
"VU|Pacific/Efate",
"WF|Pacific/Wallis",
"WF|Pacific/Tarawa Pacific/Wallis",
"WS|Pacific/Apia",
"YE|Asia/Riyadh Asia/Aden",
"YT|Africa/Nairobi Indian/Mayotte",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more