union2find
a7f24b6eaf
fix function util.splitToChars in frontend/util.lua
8 years ago
NiLuJe
103e4eaeb8
Use the GloHD quirks on the Touch 2.0...
...
re #2005
8 years ago
NiLuJe
9a7c46e8f5
Unbreak previous commit
...
Weeeeee!
8 years ago
NiLuJe
467e65be3d
Don't crash on the Kobo Touch 2.0
...
I wouldn't go so far as to say "support", though, since I don't have the
device, and the touch protocol might be wrong ;).
re #2005
8 years ago
union2find
f8943efdbf
fix indent sytle
8 years ago
union2find
3d89b27e59
remove debug output
8 years ago
union2find
9ea56827dc
resolve conflict on frontend/ui/widget/scrolltextwidget.lua
8 years ago
chrox
4c491b5ee2
rename 'Highlight' to 'Highlight options' in menu
...
This should fix #2023 .
9 years ago
Zijie He
1aa0c4192a
Multi-line toggle switch & add instruction to resolve sdcv build error.
9 years ago
Qingping Hou
2cf4e77ae5
readerui(chore): rename _running_instance
9 years ago
Qingping Hou
42dde82c43
uimanager(minor): simplify suspend event handler's signature
9 years ago
Qingping Hou
887d9942ed
Merge pull request #1992 from lgeek/master
...
RFC: Offer to power off if the power button is held for at least 3 seconds
9 years ago
Cosmin Gorgovan
19338cb439
Kobo: Offer to power off if the power button is held for at least 3 seconds
9 years ago
Cosmin Gorgovan
18c0cee18f
UIManager: add method for broadcasting an event to all widgets
9 years ago
Qingping Hou
2bcc3671c5
scrolltextwideget(fix): listen to page fwd/bck events
9 years ago
Qingping Hou
0f3eeb24c9
progressbar(fix): persist progressbar visibility
9 years ago
Qingping Hou
eb71d29716
kodev(minor): fix arg test
9 years ago
Qingping Hou
0166ff8add
reader(fix): force draw info message before loading document
...
Since the doShowReader will run in nextTick, it will get picked up by
checkTask, which is in the beginning of next UI loop and blocks
UIManager from redrawing the screen for the info popup.
9 years ago
Frans de Jonge
89a4b49c8b
Merge pull request #1987 from chrox/fix_landscape_opening_dialog
...
fix 'opening file' dialog not centered in landscape
9 years ago
chrox
6e723237ba
fix 'opening file' dialog not centered in landscape
...
by setting the timeout to 0.0 seconds so that when the screen
is turned to landscape the dialog is already closed.
9 years ago
chrox
92184f0199
fix #1985 by always return to the parent dir of current doc in the FileManager
9 years ago
Hzj_jie
51327911f2
Won't track missing files in history, and always keep latest timestamp
9 years ago
union2find
d6fcc9adf9
add cursor functionality
9 years ago
Qingping Hou
d7b1b403c1
progresswidget(fix): ignore nil self.last
9 years ago
Qingping Hou
0226efc4cd
readerfooter(minor): just incase self.pages is nil
9 years ago
Qingping Hou
572412b1f6
readerrolling(fix): detect end of book properly
9 years ago
Qingping Hou
26ecc6035a
bookstatus: cache total pages
9 years ago
Qingping Hou
f0cc8749b6
Merge pull request #1977 from Hzj-jie/migrate-history
...
Migrate history folder into sdr - A new history.lua file and ReadHistory component
9 years ago
Zijie He
667e8834ad
Migrate history folder, FileManagerHistory uses own history.lua file and ReadHistory component
9 years ago
Zijie He
f33f78cf08
Add an ignore_power_sleepcover setting to ignore Kobo power_sleepcover keycode
9 years ago
frankyifei
73f7d860cd
imagewidget fix
...
bring back the old behavior: when width and height are set and all the
zooming options are false, zoom the image to that size. The last commit
to Imagewidget.lua caused it ignores the set width and height and use
the image's original size instead when no zoom option is set. This
caused #1979 . Although #1979 can be fixed by setting autostretch=true,
but I think it's good to fix here.
9 years ago
Qingping Hou
e9b9bbadcc
fix: luacheck
9 years ago
Qingping Hou
c22a3747d8
fix all the tests
9 years ago
Qingping Hou
a049eddcbc
bookmark(fix): bookmark comparison for crengine
9 years ago
Qingping Hou
790472fb38
Merge pull request #1969 from Hzj-jie/screen-saver
...
Update ImageWidget to support more stretch settings, and enable screensaver on kobo
9 years ago
Hzj_jie
0fb5d5f6fc
Fix a naming, which breaks coding style
9 years ago
Hzj_jie
1be9264a0c
Resolve review comments
9 years ago
Frans de Jonge
5638819f25
Removed a bunch of "successfully", replaced an ellipsis, and some deviant spellings of KOReader.
9 years ago
Zijie He
0b59d501a6
Merge remote-tracking branch 'upstream/master' into screen-saver
9 years ago
Zijie He
7d4bd076f7
Resolve review comments
9 years ago
NiLuJe
d4e5746eb3
Unbreak toggling the fL on Kindles
...
Fix #1960
9 years ago
Allan Nordhøy
bc16ed5035
Spelling of calibre and KOReader. Ellipsis.
9 years ago
Zijie He
865b2a8f90
Update ImageWidget to support more stretch settings, and enable screensaver on kobo
9 years ago
Zijie He
6eeac33ad1
*.sdr folders are not excluded in folder item count
...
Bug #1966
9 years ago
Zijie He
ccd95b80fa
Prefer sdr folder to history folder
9 years ago
Hzj_jie
3cf4e79f62
Use Screen:scaleBySize to auto scale virtual keyboard size
9 years ago
NiLuJe
f43cbc74e6
Always forcibly wake the H2O IR grid on wakeup
...
Fix #1862
Fix #1943
9 years ago
chrox
f3e0d44cc4
disable jit on some modules on android
...
to make koreader on Android more stable
and with these opt params:
```
require("jit.opt").start("sizemcode=64","maxmcode=64", "hotloop=10000")
```
The strategy here is that we only use precious mcode memory (jitting)
on deep loops like the several blitting methods in blitbuffer.lua and
the pixel-copying methods in mupdf.lua. So that a small amount of mcode
memory (64KB) allocated when koreader is launched in the android.lua
is enough for the program and it won't need to jit other parts of lua
code and thus won't allocate mcode memory any more which by our
observation will be harder and harder as we run koreader.
9 years ago
Qingping Hou
7c46cb3eda
bookstatus(fix): reset self.stats on init
9 years ago
Qingping Hou
2a2643bdb5
Revert "bookstatus(fix): reset self.stats on init"
...
This reverts commit be8ceb84b4
.
9 years ago
Qingping Hou
be8ceb84b4
bookstatus(fix): reset self.stats on init
9 years ago
Qingping Hou
eb37d9b8b6
kobo: fix screen probe for touch
9 years ago
Qingping Hou
144fd170f1
uimanager(refactor): replace autosuspend if check with noop
9 years ago
Qingping Hou
e3137134f8
dbg(add): guard method to toggle assert at based at runtimemode
9 years ago
Qingping Hou
dffc42d234
fix(readerrolling): crash with legacy last_per config in page mode
9 years ago
Zijie He
b86aa5a02b
Implement auto-suspend function for Kobo. Add test case for UIManager:_checkTasks, which should not clear _task_queue_dirty bit before looping.
9 years ago
Qingping Hou
467199285f
minor: rename Koreader to KOReader
9 years ago
Qingping Hou
26f5c8861b
chore: minor style cleanup
9 years ago
Qingping Hou
e5c1ff1ef6
test(bookmark): purge doc settings before test
9 years ago
Qingping Hou
11d5b5c0a1
fix(readerlink): restore reader view context on go back
9 years ago
Qingping Hou
2d5222ef33
readerview: add get/set methods for view context
9 years ago
Qingping Hou
c35aad3ae1
fix(kobo): return 0 frontlight level config to signal frontlight off state
9 years ago
Qingping Hou
f48d9bd6d9
fix(readerfooter): marker ticks initialization
9 years ago
Qingping Hou
2f78493e9e
minor: write reader error to stderr
9 years ago
Qingping Hou
e9a5624373
fix(bookstatus): enforce status page height to screen height
9 years ago
chrox
3a9cb659d1
add OTA update on Android
9 years ago
Qingping Hou
adc7ddccfc
test: start every test suit with a clean reader setting
9 years ago
Qingping Hou
1683023f2c
refactor(readerfooter): optimization and bug fixes
...
* avoid unnecessary initialization
* really fix the crash caused by autoRefreshTime....
* responsive progress bar layout
9 years ago
Qingping Hou
824bdb4463
comment for kobo sleep
9 years ago
Zijie He
767e6e2b71
Add a sleep after kobo resume to resolve partial blank screen issue ( #1874 )
9 years ago
GeneralFailer
10f9f1b1a7
"Wifi" -> "Wi-Fi"
9 years ago
Zijie He
61ec784f91
Add eink_optimization_spec
9 years ago
zijiehe
f0c675d722
E-ink optimization setting should be correctly set after restart.
9 years ago
Qingping Hou
e52c74afcc
test: more uimanager scheduler test
9 years ago
Qingping Hou
1ede9d03f1
fix: avoid initializing readerfooter multiple times
...
This will create multiple autoRefreshTime function and crash the reader on exit
9 years ago
Qingping Hou
ada373e247
kobo: refresh screen after close screensaver on resume
9 years ago
Qingping Hou
fad50772ce
minor: fix luacheck errors
9 years ago
Qingping Hou
b0d4915977
progressbar: fix infill offset in bookstatus
9 years ago
Qingping Hou
10ded583b9
minor: adjust kvpage and dictlookup for new closebutton
9 years ago
Qingping Hou
34e0238b6f
readermenu: move book status to info tab & minor cleanup
9 years ago
Qingping Hou
a99ab5a976
bookstatus: adjust layout and spacing for bookstatus page
9 years ago
Qingping Hou
b65983da1a
multi-touch: add tests for gesturerange moudle
9 years ago
Qingping Hou
6fccb610c4
doc: update rendertext
9 years ago
Qingping Hou
e812f7d0d6
kobo: fix typo during refactoring, luacheck is the best check
9 years ago
Qingping Hou
5e8c5243c4
uimanager: fix crash on crash....
9 years ago
Qingping Hou
cf70e86552
kobo: move reader setting outside of nicke_conf module
9 years ago
NiLuJe
e60de3044c
Keep intensity in sync at the config level too
...
Make sure frontlight_intensity in reader.lua settings matches what we
write into Nikcel's config
9 years ago
NiLuJe
a82fe3ac44
is_fl_on -> is_frontlight_on outside of powerd
...
Matches the reader setting we're reading/writing at that point,
and avoids confusion related to scoping because it doesn't necessarily
match powerd.is_fl_on at that point.
Well, at least I had to wrap my mind around it ^^
9 years ago
Qingping Hou
4751aba46c
kobo: rewording, turns out has_toggle_btn != has_state_cfg :(
9 years ago
Qingping Hou
399d676cf0
kobo: rename frontlight_state config to is_frontlight_on
9 years ago
Qingping Hou
8190093f83
kobo: don't create FrontLightState config if it didn't exist to begin with
9 years ago
Qingping Hou
8b7658b8cd
kobo: always keep intensity value and is_fl_on in sync
9 years ago
Qingping Hou
cf3b97537b
kobo: build fl_state based on fl_intensity if model does not support toggle
9 years ago
Qingping Hou
9afae91b13
chore: rename frontlight related variables to keep style consistent
...
flIntensity -> fl_intensity
flState -> is_fl_on
fallback_FrontLightLevel -> fallback_fl_level
9 years ago
NiLuJe
f213fb6405
Bypass flState on suspend/wakeup
...
We pretty much always want to turn it off on suspend, and turn it on to
some measure on wakeup.
That, and nickel's FrontLightState is completely nonsensical on my device anyway...
9 years ago
NiLuJe
770625d756
Tweak the 'IR down on resume' workaround...
...
Only apply it when started from nickel, because I'm guessing we'd have
seen a number of reports of this if it happened more widely...
9 years ago
NiLuJe
85737e2b9d
Forcibly re-activate IR grid on resume...
...
re #1862
9 years ago
NiLuJe
6c8bbfd470
Unbreak Kobo frontlight -> off when suspending.
...
If no-one touches anything, flState stays false...
And anyway, we should unconditionally disable the fl on sleep.
9 years ago
Qingping Hou
d4254e5266
fix: unschedule auto refresh footer task on document close
9 years ago
NiLuJe
7d0c354ffb
Unbreak battery status refresh on resume on Kindle
...
Went kaput w/ #1854
9 years ago
NiLuJe
aa0450ab5d
Fix volumd's USBMS splash screen on FW 5.7.x
...
That clears up my previous queries abour the dual checks ;p.
9 years ago
NiLuJe
4510625d37
Unbreak native screensavers on Kindle >= 5.7.2
...
Which I broke the last time I touched this.
NOTE: I'm not quire sure why the bbsave/bbrestore on stop/resume did a
double check (screensaver & charging), because that effectiely disabled
it when charging, which I don't quite understand...
Also makes sure the needsScreenRefreshAfterResume flag is honored on
Kindles, because we need it on FW >= 5.7.2
Note that this *breaks* the behavior with passcode enabled, which was
unwittingly fixed in said previous changes...
re #1811
9 years ago
Qingping Hou
0772fd1439
touchmenu: fix menu height calculation
9 years ago
zijiehe
a183c1c64b
Slightly refector device & powerd component, remove some magic code
9 years ago
Qingping Hou
46ade8e795
readergoto: show current page in input hint
9 years ago
Qingping Hou
847837c5c1
readergoto: use the term page and location based on doc type
9 years ago
zijiehe
e84093c414
Add a flState in Kobo, and KoboPowerD:toggleFrontlight uses flState to control the light instead of intensity.
9 years ago
Qingping Hou
8c01835458
fix: only show reader status at the end of the book
9 years ago
Qingping Hou
69f9ebd528
build: fix doc generation
...
also moved MD5 to koreader-base/ffi
9 years ago
chrox
529cb801c1
fix broken extended InputDialog components
...
eg. LoginDialog and MultiInputDialog
since the style refactoring in #1783 .
9 years ago
zijiehe
8861365264
Add rename function for filemanager
9 years ago
Qingping Hou
8e35a6e4ab
fix inputcontainer
9 years ago
Qingping Hou
4598284bbb
fix(readerfontlight): crash in toggle
9 years ago
Qingping Hou
03e81cfa4d
test: fix readerui instance reset test
9 years ago
Qingping Hou
72e7cd5cf4
style: move functions around
9 years ago
Qingping Hou
b63ddb8736
fix: kill in fly hinting event on document close
9 years ago
Frans de Jonge
df6935c20b
Merge pull request #1823 from koreader/houqp-master
...
build: fix travis build
9 years ago
Frans de Jonge
d692a42f97
Merge pull request #1824 from NiLuJe/master
...
Add a bunch of OTA mirrors...
9 years ago
NiLuJe
a4137fd8a6
Add a bunch of OTA mirrors...
...
With much better peerings & bandwidth than my fallback.
-eu is in Central Europe
-af is in Western Europe
-na is in North America
9 years ago
Qingping Hou
1f082d7f5c
build: fix travis build
9 years ago
chrox
1cef9278f1
do full screen refresh on KV after waked up
...
from screensaver
this should fix #1800
9 years ago
Qingping Hou
87c28a72cf
doc: update closebutton
9 years ago
Qingping Hou
e422842256
minor: a lot of luacheck fixes
9 years ago
Qingping Hou
6a6469fa09
more luacheck fixes
9 years ago
Qingping Hou
3c647ff244
minor: various luacheck fixes
9 years ago
Qingping Hou
3bec9cea89
ui(kvpage) truncate title/key/value if it's too long
9 years ago
Qingping Hou
e410ce14df
doc: types/functions for font and rendertext module
9 years ago
Qingping Hou
d7879db90f
font: add default font size
9 years ago
Qingping Hou
f2c016161e
fix: typo in readerstatus
9 years ago
Qingping Hou
59c17ef420
minor: more luacheck fixes
9 years ago
Qingping Hou
12c6bd7121
test: fix readerbookmark unit test
9 years ago
Qingping Hou
11ee8d6fcc
refactor: use new KeyValuePage widget for displaying statistics
9 years ago
Alex Pletnev
fbf98ed920
#1710 FR: Add support of statistics plugin for pdf
9 years ago
Alex Pletnev
a6ebbe9adb
#1807 FR: Add separator into menu
9 years ago
Qingping Hou
8f4fae7a09
minore: more static check fixes
9 years ago
Qingping Hou
8e707da616
reader(status): append status item to the end of menu properly
9 years ago
Qingping Hou
ba1ef91df2
minor: translate progress bar text with template
9 years ago
Qingping Hou
9bd2d42834
build: enforce luacheck in travis build
9 years ago
Qingping Hou
b8ee33871f
style: clean up statuswidget a bit
9 years ago
Alex Pletnev
c0a2b3d4d9
#1730 Create complete book feature
9 years ago
Qingping Hou
7625621c84
feat(ui): support text alignment in TextBoxWidget
9 years ago
Alex Pletnev
0f9bfbf147
#1730 Create complete book feature
9 years ago
Qingping Hou
2f0544b1b7
refactor(statistics): avoid magic 0.1 schedule with PostRender event
9 years ago
Qingping Hou
daf754d0f4
minor(readerhinting): access document directly instead of from ui
9 years ago
Qingping Hou
e2096ed8d9
doc: add documentation build infrastructure
9 years ago
Huang Xin
a8204f8bab
Merge pull request #1786 from houqp/houqp-master
...
test: add nickle conf spec
9 years ago
chrox
41d3642467
add auto refresh time option for status bar, close #1769
9 years ago
Qingping Hou
71ef994318
test: add nickle conf spec
9 years ago
Huang Xin
1dff6c7bc6
Merge pull request #1784 from koreader/houqp-master
...
minor FM fix
9 years ago
Qingping Hou
1609becd61
Merge pull request #1772 from dset0x/frontlight-sync
...
WIP Synchronise frontlight level with nickel config
9 years ago
Qingping Hou
fb0606aa9c
style(FM): rename internal only method into function
9 years ago
Qingping Hou
34515484d1
fix: remove invalid setDirty in FileManager:restoreScreenMode
9 years ago
Qingping Hou
5a3b9c6856
style: make staick-check happier
9 years ago
Qingping Hou
59e791db82
feat: support numeric input for keyboard only devices
9 years ago
Qingping Hou
0a492bee3c
add(ui): topcontainer
9 years ago
Qingping Hou
68ead0c9b2
feat(inputcontainer): support showing inputcontainer without content
9 years ago
Qingping Hou
5cca28fabc
feat(util): add array.Append helper
9 years ago
Qingping Hou
72b0b8197b
style(inputdialog): rename self.input to self.input_widget
9 years ago
Qingping Hou
e19f73bdba
style(util): rename tablelength to tableSize
9 years ago
Andrey Golovizin
bb1d4c60b3
Choose hyphenation dict by document language
9 years ago
Dimitrios Semitsoglou-Tsiapos
699781de68
nickel_conf: handle missing file/key/section
9 years ago
Dimitrios Semitsoglou-Tsiapos
eb47c5a39f
Synchronise frontlight level with nickel config
...
* Drops support for mocking the frontlight setting internally which may
cause incorrect in-memory values.
* Adds new supported value for `KOBO_LIGHT_ON_START` (-2), which sets
'Kobo eReader.conf' as the source to update `settings.reader.lua`'s
brightness setting on startup, thus using the value from it
indirectly.
* Adds the `KOBO_SYNC_BRIGHTNESS_WITH_NICKEL` configuration variable
which updates 'Kobo eReader.conf' every time the brightness setting is
changed within koreader.
* Fixes missing call to save brightness when modifying via two-finger
swipe.
Closes #1523 .
9 years ago
Qingping Hou
d1ca8bc494
fix(filemanager): delete document with settings
9 years ago
Qingping Hou
722eaed4b2
feat: docsettings:getSidecarDir
9 years ago
Qingping Hou
7caeae8701
fix: make screenshoter always active for filemanager
9 years ago
Qingping Hou
6fe9f7870b
chore: more luacheck fixes
9 years ago
Qingping Hou
2dc5eb8586
minor: no need to override function arg with local
9 years ago
Qingping Hou
9c46cafc9c
chore: fix luacheck warning
9 years ago
Qingping Hou
3b92bdc084
feat: support screenshot in filemanager
9 years ago
Qingping Hou
4759def09c
chore: fix static-check errors
9 years ago
Qingping Hou
b1a1aeca0a
fix(task scheduler): many race conditions
...
_checkTasks first get number of tasks in the stack and does a numeric
for loop to go through each task. The problem is a task might call
schedule or unschedule, which will reorder tasks in the stack. This will
invalidate many of the table indexes used in the for loop.
This patch turns the task stack into an ordered queue, so _checkTasks
only pops one item out of the queue each time instead of setting up a
for loop at the beginning. This should avoid the race condition
mentioned above.
9 years ago
Qingping Hou
55234ef899
fix: read stats crashes pdf/djvu documents
9 years ago
Qingping Hou
90d1101ab7
minor: quit uimanager properly on coroutine error
9 years ago
Qingping Hou
41240464ca
minor: fail loudly with stack trace when doShowReader crashed
9 years ago
Qingping Hou
ffd438de18
fix(ReaderFooter:getDataFromStatistics): return na if book has no stats history
9 years ago
Alex Pletnev
6bf9d75807
#1750 TB feature/statistics issue
...
Change time to read book formula to: ((total_read_time / read_pages) * (all_pages - current_page))
9 years ago
Alex Pletnev
ce4e32e01c
#1723 Add time to read into the status bar
...
Add new statuses:
TB - book time to read
TC - chapter time to read
Fix backward compatible in statistics plugin
9 years ago
chrox
79e0f3fe65
fix hold-to-set font size not effective
9 years ago
chrox
394c9cf948
fix dimen returned by getSize used as dimen in inputcontainer
9 years ago
chrox
55ba1450d4
code refactoring: use hash table index instead of loop
9 years ago
frankyifei
86d6d46770
add isKindle check
9 years ago
frankyifei
1f14a9e80d
try to exclude those broken system fonts
...
these fonts can not be used by freetype and will cause hang up
9 years ago
Qingping Hou
46aed752c7
Merge pull request #1680 from erosennin/opds-title
...
OPDS: fix parsing entry titles on ManyBooks (and possible other sites)
9 years ago
Qingping Hou
8cff0f3ba9
Merge pull request #1679 from erosennin/opds-author
...
OPDS: include author's name into the file name
9 years ago
Andrey Golovizin
63e0605080
OPDS: fix entry titles on ManyBooks
9 years ago
Andrey Golovizin
dbac03e5f4
OPDS: include author's name into the file name
9 years ago
chrox
2216ddd796
hold to lookup word in dict window
...
This should close #1541 .
9 years ago
NiLuJe
bfb2ee703a
Force poll the battery when showing the menu.
...
Making sure to always show up to date info.
Also fix the battery polling cache invalidation logic to actually
work?
Should make it behave properly on devices where we handle resuming
ourselves.
9 years ago
chrox
54f5166254
add koptinterface spec
9 years ago
chrox
8b85cbf157
add support for password protected zip/cbz documents
9 years ago
chrox
1f094657dc
fix #1529 by rounding off the scaled dimension
9 years ago
chrox
f73f8916c0
fix #1569 use fit to page zoom cover image even in reflow mode
9 years ago
chrox
96dc338812
fix #1570 to disable swipe to go back by default
9 years ago
chrox
f2d38336c1
fix #1642 GFW block in China may also cause Network unavailable error
9 years ago
chrox
a60544b1ad
Koreader Ubuntu-touch port
...
Currently only tested on Ubuntu-touch emulator with framework
ubuntu-sdk-14.10 for armhf.
The ubuntu-touch port is binary compatible with the Kobo port
major changes in this PR are:
1. rename the emulator device to sdl device since both the emulator
and the ubuntu-touch target use libsdl to handle input/output.
2. ubuntu-touch app has no write access to the installation dir so
all write-outs should be in a seperate dir definded in `datastorage`.
9 years ago
Qingping Hou
f2fa1c36ba
Merge pull request #1647 from chrox/fix_kv_refresh
...
fix some minor issues on Kindle Voyage
9 years ago
chrox
d198f1c7ab
don't set focus button for Android
9 years ago
chrox
4920426148
no need to do full screen refresh when outof screensaver
...
since there is already one by the native system
9 years ago
chrox
e91b7bd266
set foucus of button table only if the device has a dpad
...
so that Kindle Voyage won't show a highlighted button in
confirm dialog.
9 years ago
NiLuJe
d17ca951d3
Fix battery status on K3.
...
Will probably be more complex on older devices, where, AFAICT,
gasgauge-info is bitbanging over i2c...
9 years ago