36 Commits

Author SHA1 Message Date
622e31394e Bump to version 1.0.4 2020-09-27 22:56:26 +02:00
04018c504d Remove unused entities on settings change (#8)
Also add Minetest 5.3 support for 10/11 maximal breath.
2020-09-27 19:14:49 +02:00
9b47fc7b4b Declare the minimum supported Minetest version to 0.4.17
This information can be used by ContentDB.
2020-06-03 18:56:14 +02:00
0439216cab Fix the Unreleased comparison link in the changelog 2020-02-15 16:24:29 +01:00
ab7806a4bf Tweak grammar in various files
- Fix release date to match the actual 1.0.3 release.
2020-02-15 16:19:33 +01:00
0f924c177c Bump to version 1.0.3 2020-02-15 16:09:20 +01:00
960ca02e42 Readd Gauges when a player is lost 2020-02-15 16:09:20 +01:00
b075262daf More reliable version checking 2020-02-15 16:09:20 +01:00
9425b8dcf5 Fix entity creating crash and restore 0.4 support 2020-01-19 14:07:23 +01:00
1990169c0a Bump to version 1.0.1 2020-01-01 18:08:11 +01:00
7c3afd699c Localize the vector.distance function for performance 2020-01-01 18:07:06 +01:00
c28b6a9f35 Fix a code style issue 2020-01-01 18:03:08 +01:00
f7be847de4 Remove obsolete notice about renaming the extracted mod folder
This is no longer required thanks to `mod.conf`.
2020-01-01 17:54:45 +01:00
29a7dabe8d Add a preview screenshot at the top of the README 2020-01-01 17:53:37 +01:00
c22f195ec0 Add a project changelog 2020-01-01 17:38:24 +01:00
f9471512bd Optimize the mod code
This also improves formatting to comply with Minetest's
Lua code style guidelines.
2020-01-01 17:29:16 +01:00
b2bb39322a Update copyright statements to 2020 2020-01-01 04:11:04 +01:00
6cd5e97542 5.x compatibility, drop 0.4.x support (#2) 2019-10-13 19:47:56 +02:00
ab2d7c83be Use mod.conf for name and description (#1) 2019-09-28 20:14:56 +02:00
4718559b01 Update pre-commit hooks to 2.3.0 2019-09-25 23:19:13 +02:00
af5d69957d Update URLs in the README to reflect the move to minetest-mods 2019-09-08 22:04:47 +02:00
766d9f2c10 Travis CI: Use the bionic distribution 2019-07-29 00:52:08 +02:00
644c33e36a Use Luacheck as a pre-commit hook 2019-04-03 00:30:00 +02:00
c0c410755b Fix minetest.setting_getbool() deprecation warning 2019-04-02 20:24:58 +02:00
9e91c7e561 Add a README
- Use MIT license for code and CC0 1.0 Universal for assets
2019-03-02 18:59:59 +01:00
bb7d45a3d7 Improve code formatting 2019-03-01 19:19:22 +01:00
b9ed7d3908 Add a copy of the CC0 1.0 Universal license 2019-03-01 19:17:13 +01:00
d76e262bb9 Enforce LF line endings in pre-commit
- Update pre-commit hooks to 2.1.0
2019-03-01 15:28:57 +01:00
e7fc790e5a Don't use multiline strings for commands on Travis CI
Commands would otherwise fail silently.
2019-02-26 18:46:15 +01:00
1903516aab Set up Travis CI 2019-02-22 01:37:49 +01:00
8730c50a75 Set EditorConfig to use tabs in .luacheckrc 2019-02-22 00:49:27 +01:00
7318af5ed2 Add an EditorConfig file
See https://editorconfig.org/ for more information.
2019-02-21 23:13:50 +01:00
7e1a72cd73 Add pre-commit hooks
See https://pre-commit.com/ for more information.
2019-02-21 23:10:09 +01:00
ea5c016370 Remove unnecessary .gitignore file 2019-02-21 23:09:56 +01:00
d241818d13 Add a Luacheck configuration file 2019-02-21 13:44:35 +01:00
06a19573cc Optimize all images using oxipng -Zs 2019-02-20 19:59:18 +01:00
44 changed files with 338 additions and 159 deletions

13
.editorconfig Normal file
View File

@ -0,0 +1,13 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.{lua,luacheckrc}]
indent_style = tab
indent_size = 4

111
.gitignore vendored
View File

@ -1,111 +0,0 @@
# Created by https://www.gitignore.io/api/lua,linux,macos,windows
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### Lua ###
# Compiled Lua sources
luac.out
# luarocks build files
*.src.rock
*.zip
*.tar.gz
# Object files
*.o
*.os
*.ko
*.obj
*.elf
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
*.def
*.exp
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
### macOS ###
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Windows ###
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
# End of https://www.gitignore.io/api/lua,linux,macos,windows

29
.luacheckrc Normal file
View File

@ -0,0 +1,29 @@
std = "lua51+minetest"
unused_args = false
allow_defined_top = true
max_line_length = 90
stds.minetest = {
read_globals = {
"DIR_DELIM",
"minetest",
"core",
"dump",
"vector",
"nodeupdate",
"VoxelManip",
"VoxelArea",
"PseudoRandom",
"ItemStack",
"default",
table = {
fields = {
"copy",
},
},
}
}
globals = {
"vector",
}

14
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,14 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
- id: mixed-line-ending
args: [--fix=lf]
- repo: https://github.com/Calinou/pre-commit-luacheck
rev: v1.0.0
hooks:
- id: luacheck

16
.travis.yml Normal file
View File

@ -0,0 +1,16 @@
dist: bionic
language: python
python:
- 3.7.1
install:
- sudo apt-get update -qq
- sudo apt-get install -qqq luarocks
- pip3 install pre-commit
- luarocks install --local luacheck
script:
# All linters are run with pre-commit hooks
- export PATH="$HOME/.luarocks/bin:$PATH"
- pre-commit run --all-files

54
CHANGELOG.md Normal file
View File

@ -0,0 +1,54 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [1.0.4] - 2020-09-27
### Added
- Support for Minetest 5.3 and improved Minetest version definitions.
### Changed
- Gauge entities are now removed when the mod is disabled or when the server switches to creative mode.
## [1.0.3] - 2020-02-15
### Fixed
- Fix an issue with gauges occasionally no longer appearing above a player.
### Changed
- Improved the reliability of the Minetest version check (for compatibility with 0.4.17).
## [1.0.2] - 2020-01-16
### Fixed
- Fix crash when creating an entity if a player leaves the server quickly.
### Changed
- Restore Minetest 0.4.17 support. The version check works only with `minetest_game` with the `player_api` mod added in Minetest 5.0.
## [1.0.1] - 2020-01-01
### Changed
- Improve performance by localizing the `vector.distance()` function.
## 1.0.0 - 2020-01-01
- Initial versioned release.
[Unreleased]: https://github.com/minetest-mods/gauges/compare/v1.0.4...HEAD
[1.0.4]: https://github.com/minetest-mods/gauges/compare/v1.0.3...v1.0.4
[1.0.3]: https://github.com/minetest-mods/gauges/compare/v1.0.2...v1.0.3
[1.0.2]: https://github.com/minetest-mods/gauges/compare/v1.0.1...v1.0.2
[1.0.1]: https://github.com/minetest-mods/gauges/compare/v1.0.0...v1.0.1

43
LICENSE.assets.md Normal file
View File

@ -0,0 +1,43 @@
## creative commons
# CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER.
### Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
1. __Copyright and Related Rights.__ A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
2. __Waiver.__ To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
3. __Public License Fallback.__ Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
4. __Limitations and Disclaimers.__
a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.

21
LICENSE.md Normal file
View File

@ -0,0 +1,21 @@
# MIT License
Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

73
README.md Normal file
View File

@ -0,0 +1,73 @@
# Gauges
![Preview](https://content.minetest.net/uploads/GBoKauWSou.png)
Gauges for [Minetest](https://www.minetest.net/), a free and open source infinite
world block sandbox game.
[**Forum topic**](https://forum.minetest.net/viewtopic.php?f=11&t=10250)
## Installation
### Download the mod
To install Gauges, clone this Git repository into your Minetest's `mods/`
directory:
```bash
git clone https://github.com/minetest-mods/gauges.git
```
You can also
[download a ZIP archive](https://github.com/minetest-mods/gauges/archive/master.zip)
of Gauges.
### Enable the mod
Once you have installed Gauges, you need to enable it in Minetest.
The procedure is as follows:
#### Using the client's main menu
This is the easiest way to enable Gauges when playing in singleplayer
(or on a server hosted from a client).
1. Start Minetest and switch to the **Local Game** tab.
2. Select the world you want to enable Gauges in.
3. Click **Configure**, then enable `gauges` by double-clicking it
(or ticking the **Enabled** checkbox).
4. Save the changes, then start a game on the world you enabled Gauges on.
5. Gauges should now be running on your world.
#### Using a text editor
This is the recommended way to enable the mod on a server without using a GUI.
1. Make sure Minetest is not currently running (otherwise, it will overwrite
the changes when exiting).
2. Open the world's `world.mt` file using a text editor.
3. Add the following line at the end of the file:
```text
load_mod_gauges = true
```
If the line is already present in the file, then replace `false` with `true`
on that line.
4. Save the file, then start a game on the world you enabled Gauges on.
5. Gauges should now be running on your world.
## Version compatibility
Gauges currently supports Minetest 5.0 and later, as well as 0.4.17.
Issues arising in versions older than 5.0 will generally not be fixed.
## License
Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors
- Code is licensed under the MIT license, see
[`LICENSE.md`](LICENSE.md) for details.
- Textures are licensed under CC0 1.0 Universal, see
[`LICENSE.assets.md`](LICENSE.assets.md) for details.

112
init.lua
View File

@ -1,57 +1,81 @@
-- Adds health bars above players. -- gauges: Adds health/breath bars above players
-- Code by 4aiman, textures by Calinou. Licensed under CC0. --
-- Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors - MIT License
-- See `LICENSE.md` included in the source distribution for details.
local hp_bar = { local enabled = minetest.settings:get_bool("health_bars") ~= false
physical = false, if enabled then
collisionbox = {x = 0, y = 0, z = 0}, enabled = minetest.settings:get_bool("enable_damage")
visual = "sprite",
textures = {"20.png"}, -- The texture is changed later in the code.
visual_size = {x = 1.5, y = 0.09375, z = 1.5}, -- Y value is (1 / 16) * 1.5.
wielder = nil,
}
function vector.sqdist(a, b)
local dx = a.x - b.x
local dy = a.y - b.y
local dz = a.z - b.z
return dx*dx + dy*dy + dz*dz
end end
function hp_bar:on_step(dtime) -- Localize this functions for better performance,
local wielder = self.wielder and minetest.get_player_by_name(self.wielder) -- as it's called on every step
if wielder == nil or local vector_distance = vector.distance
vector.sqdist(wielder:get_pos(), self.object:get_pos()) > 3 then local min = math.min
self.object:remove() local max_breath = minetest.PLAYER_MAX_BREATH_DEFAULT or 11
local mt_5 = minetest.features.object_independent_selectionbox
local function add_gauge(player)
if player and player:is_player() then
local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar")
-- Check Minetest version and set required entity heigh
-- (The entity height offset was changed in Minetest 5.0.0)
local height = mt_5 and 19 or 9
entity:set_attach(player, "", {x=0, y=height, z=0}, {x=0, y=0, z=0})
entity:get_luaentity().wielder = player
end
end
minetest.register_entity("gauges:hp_bar", {
visual = "sprite",
visual_size = {x=1, y=1/16, z=1},
textures = {"blank.png"},
collisionbox = {0},
physical = false,
on_step = function(self)
local player = self.wielder
local gauge = self.object
if not enabled or
not player or not player:is_player() then
gauge:remove()
return
elseif vector_distance(player:get_pos(), gauge:get_pos()) > 3 then
gauge:remove()
add_gauge(player)
return return
end end
local hp = wielder:get_hp() local hp = min(player:get_hp(), 20)
local breath = wielder:get_breath() local breath = min(player:get_breath(), max_breath)
self.object:set_properties({
textures = { if self.hp ~= hp or self.breath ~= breath then
"health_" .. tostring(hp) .. ".png^breath_" .. tostring(breath) .. ".png", local health_t = "health_"..hp..".png"
}, local breath_t = "breath_"..breath..".png"
if hp == 0 then
health_t = "blank.png"
end
if breath == max_breath then
breath_t = "blank.png"
end
gauge:set_properties({
textures = {health_t.."^"..breath_t}
}) })
end self.hp = hp
self.breath = breath
minetest.register_entity("gauges:hp_bar", hp_bar)
local function add_HP_gauge(name)
local player = minetest.get_player_by_name(name)
local pos = player:get_pos()
local ent = minetest.add_entity(pos, "gauges:hp_bar")
if ent ~= nil then
ent:set_attach(player, "", {x = 0, y = 10, z = 0}, {x = 0, y = 0, z = 0})
ent = ent:get_luaentity()
ent.wielder = player:get_player_name()
end end
end end
})
-- If health_bars not defined or set to true if enabled then
if minetest.setting_getbool("health_bars") ~= false and
minetest.setting_getbool("enable_damage") then
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
minetest.after(1, add_HP_gauge, player:get_player_name()) minetest.after(1, add_gauge, player)
end) end)
end end

3
mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = gauges
description = Adds health and breath gauges above players.
min_minetest_version = 0.4.17

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 B

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

After

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 B

After

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 B

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 B

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 107 B