2
0
mirror of https://github.com/m-labs/artiq.git synced 2024-12-29 13:13:34 +08:00
Commit Graph

795 Commits

Author SHA1 Message Date
1be7e2a2e1 doc: duplicate nixConfig 2023-01-04 15:13:55 +08:00
1852491102
add channel names to RTIO errors 2022-12-02 16:27:03 +08:00
wlph17
3f93f16955
manual: add msys2 openocd instructions (#2014) 2022-12-01 17:23:51 +08:00
2fe02cee6f doc: MSYS2 packages 2022-11-15 19:32:06 +08:00
b705862ecd afws_client: fix argument order 2022-08-25 13:17:41 +08:00
fanmingyu212
20cb99061e doc: updates artiq_flash syntax in developing.rst 2022-08-25 07:03:26 +08:00
68ef0073ea doc: mock sipyco.keepalive. Closes #1900 2022-06-01 20:46:16 +08:00
71a37bb408 doc: switch to wavedrompy 2022-06-01 20:45:49 +08:00
596b9a265c Prefer DHCP to the built-in static IPs
Signed-off-by: Michael Birtwell <michael.birtwell@oxionics.com>
2022-04-24 10:10:42 +08:00
6ffb1f83ee DHCP support for core device firmware
DHCP is enabled by setting the `ip` config entry to "use_dhcp". Reusing this
config field rather than creating a new one means that there is no ambiguity
over which config field takes precedence.

Adds a thread to configure the interface based on DHCP events
Adds a `Dhcpv4Socket` as a wrapper around smoltcp's version
Formalises the storage of the IP addresses so that we can update one in
another module.

There's also a workaround for the first DHCP discover packet frequently
going missing.

Signed-off-by: Michael Birtwell <michael.birtwell@oxionics.com>
2022-04-24 10:10:14 +08:00
bbb2c75194 add aqctl_moninj_proxy 2022-03-18 17:02:50 +08:00
8415151866 update copyright year 2022-03-10 11:56:16 +08:00
ciciwu
67ca48fa84
manual: fix formatting (#1865) 2022-03-08 19:03:47 +08:00
2b918ac6f7 coredevice: merge pcf8574a into i2c 2022-02-25 19:01:14 +08:00
69ce09c7c0 manual: minor fixes 2022-02-21 18:44:18 +08:00
6a586c2e4d manual: kasli-soc flashing 2022-02-21 16:27:59 +08:00
e84056f7e0 manual: Flakes installation instructions. Closes #1835 2022-02-21 16:20:14 +08:00
9e37fb95d6 manual: use recommended contents caption 2022-02-11 14:25:10 +08:00
f542f045da manual: use git+https URL for ARTIQ flake
github: flake URL lacks revCount
2022-01-19 20:04:20 +08:00
735cd1eb3e manual: update development instructions 2022-01-14 16:50:08 +08:00
9b1d7e297d
runtime: clock input specification improvements
closes #1735
2021-10-28 16:21:51 +08:00
1a0c4219ec doc: mor1kx -> VexRiscv 2021-09-12 19:27:00 +08:00
43d120359d compiler: switch to upstream llvmlite and RISC-V target 2021-09-10 13:25:12 +08:00
97e994700b compiler: turn __repr__ into __str__ when sphinx is used. Closes #741 2021-08-05 11:32:20 +08:00
1e869aedd3
docs: clarify rtio_clock=e req's and use case
This regularly leads to people misunderstanding the setting.
Mentioning the Si5324 specifically or Urukul synchronization doesn't help constraining or explaining the feature, its consequences and requirements.
Despite being non-standard this feature is also generally not sufficient to achieve cross-device determinism as the other devices need to be made deterministic as well.
2021-08-03 11:36:04 +02:00
796aeabb53 documentation: correct artiq_coremgmt examples 2021-07-19 12:09:51 +08:00
d327d2a505 doc: document shell-dev shortcut 2021-07-14 08:32:03 +08:00
bc7ce7d6aa doc: mention Vivado version from vivado.nix. Closes #1715 2021-07-14 08:27:08 +08:00
Etienne Wodey
094a346974 docs: fix snippet to advance the timeline by one coarse RTIO cycle
Signed-off-by: Etienne Wodey <wodey@iqo.uni-hannover.de>
2021-06-23 20:29:43 +08:00
Etienne Wodey
68268e3db8 docs: fix some formatting issues
Signed-off-by: Etienne Wodey <wodey@iqo.uni-hannover.de>
2021-06-23 20:29:43 +08:00
522c2f5995 doc: nixpkgs 21.05 2021-06-02 08:18:28 +08:00
David Nadlinger
b89610bbcd manual/compiler: Mention TArray annotation 2021-05-24 11:50:10 +01:00
fanmingyu212
91832aa886 manual: cannot use empty lists in kernel
Signed-off-by: Mingyu Fan <mingyufan@ucsb.edu>
2021-05-12 11:37:18 +08:00
Charles Baynham
011f3bdb2e docs: Add artiq_influx_generic to default_network_ports.rst and list_of_ndsps.rst 2021-05-10 15:26:26 +08:00
78490bef5d manual: document Vivado installer crash workaround 2021-04-05 09:17:50 +08:00
523fa01343 manual: fix OpenOCD conda instructions 2021-03-27 12:16:08 +08:00
jonathanpritchard
e577542f6b
Updated NDSP documentation (#1617) 2021-02-25 09:27:10 +08:00
14d464b4cf update copyright year 2021-02-17 15:52:08 +08:00
Ilia Sergachev
78cbab4260 doc: fix missing artiq_flash argument 2021-01-29 00:45:17 +08:00
3657055bc0 doc: fix typo. Closes #1586 2021-01-27 13:15:04 +08:00
641f8bcdd6 doc: update development instructions. Closes #1585 2021-01-18 15:12:25 +08:00
cb44b0cd1a doc: remove qutip from install example (removed from nixpkgs) 2021-01-15 17:18:44 +08:00
3e93d71aeb manual: fix artiq.dashboard becoming alias of unittest.mock
* Closes m-labs#1293
2021-01-11 18:48:30 +08:00
4b10273a2d gui: quamash -> qasync 2020-12-12 21:59:25 +08:00
d51d4e6ce0 doc: fix missing instructions for bypassing Si5324 on Kasli 2020-11-26 12:03:28 +08:00
Etienne Wodey
dbcac62fd0 coredevice: adf5356: fix/adjust docs
Signed-off-by: Etienne Wodey <wodey@iqo.uni-hannover.de>
2020-11-10 10:49:22 +08:00
a9dd0a268c
Merge pull request #1533 from m-labs/phaser
Phaser
2020-10-19 09:30:12 +02:00
e66d2a6408 manual: clarify and expand nix-shell file 2020-10-15 14:31:25 +08:00
7c2519c912 manual: nixpkgs 20.09 2020-10-08 09:18:46 +08:00
1bfe977203 manual: sphinx mock module whack-a-mole 2020-10-07 19:25:26 +08:00
272dc5d36a phaser: documentation 2020-08-28 16:36:44 +00:00
9c9dc3d0ef manual: Kasli now supports 10/100 Ethernet 2020-08-01 10:35:37 +08:00
906256cc02 manual: remove reference to conda install script 2020-06-26 10:50:11 +08:00
5d58a195c0 manual: clarify board package installation 2020-06-26 10:49:31 +08:00
fb6a8899f4 manual: use conda env creation command 2020-06-26 10:47:55 +08:00
91c93e1ad8 manual: add note about additional packages 2020-06-20 19:32:13 +08:00
4ad46e0e40 update Conda installation method 2020-06-20 19:26:31 +08:00
charlesbaynham
ce7e92a75e
docs: Add docs for RTIO SED sequencing (#1461)
Signed-off-by: Charles Baynham <charles.baynham@npl.co.uk>
2020-06-15 18:43:34 +02:00
371d923385 manual: nixpkgs 20.03 2020-04-04 13:05:46 +08:00
9294efabc0 manual: Kasli can get MAC address from EEPROM 2020-03-14 12:19:43 +08:00
8dbf30b23e manual: mention integrated Kasli JTAG 2020-03-02 18:42:01 +08:00
2c4e5bfee4 fastino: add [WIP] 2020-01-20 13:25:00 +01:00
9368c26d1c mirny: add to manual 2020-01-20 13:13:08 +01:00
9d7196bdb7 update copyright year 2020-01-13 19:33:44 +08:00
David Nadlinger
e8b9fcf0bb
doc/manual/developing: Clarify Nix PYTHONPATH usage
PYTHONPATH should still contain all the other directories
(obvious once you've made that mistake once, of course).
2019-12-23 00:50:03 +00:00
fb2076a026 basemod_att: add dB functions, document 2019-12-21 14:56:41 +08:00
5fefdcc324 manual: clarify XY applet setup example 2019-12-15 10:41:58 +08:00
9f459f37dc doc: NDSP URLs, mention contributions can be added to list
Closes #1389
2019-11-18 13:03:44 +08:00
ac8a5b60c0 doc: add sipyco to mock modules 2019-11-18 08:37:44 +08:00
310a627e16 doc: mention toptica-lasersdk-artiq conda package 2019-11-14 23:53:13 +08:00
6bb931a17b manual: point to beta Nix channel 2019-11-14 17:04:46 +08:00
4707aef45c split out artiq-comtools 2019-11-14 15:21:51 +08:00
7a92f443c2 doc: fix heading 2019-11-14 12:22:59 +08:00
3fd6962bd2 use sipyco (#585) 2019-11-10 15:55:17 +08:00
6d5dcb4211 runtime: enable IPv6. Closes #349 2019-10-19 17:20:33 +08:00
Tim Ballance
c64c8b4ddc manual: RTIO sequence error notes (#1311) 2019-10-12 10:04:37 +08:00
David Nadlinger
371388ecbe doc: Re-fix ARTIQ type hint formatting (#714)
This adapts the previous monkey patch for the changed location of the
attribute rendering code in Sphinx 2.0.
2019-10-11 17:44:38 +01:00
9c5ff4fc04 manual: Nix bug 2709 fixed in Nix 2.3 2019-10-10 11:29:48 +08:00
3aade3b59a manual: now building for nixpkgs 19.09 2019-10-10 10:55:44 +08:00
694b85f37a doc: only one hydra build for conda packages 2019-09-13 09:43:12 +08:00
5f8acb3f96 manual: fix location of shell-dev.nix (#1346) 2019-08-05 13:34:35 +08:00
3f0657f2a8 artiq_influxdb_schedule: add schedule logger
Signed-off-by: Robert Jördens <rj@quartiq.de>
2019-07-26 14:47:18 +02:00
e95b7b9d4b manual: fix typos 2019-07-18 09:30:21 +08:00
2ffc843790 update installation instructions 2019-07-18 00:51:47 +08:00
a947867887 runtime: support Kasli Si5324 bypass via rtio_clock=e 2019-06-14 15:48:05 +08:00
704b5c6305 manual: stop using cloud mathjax
cloudflare also uses cookies.
2019-05-22 19:17:14 +08:00
d9fc2847c1 manual: fix typo 2019-05-15 07:28:38 +08:00
David Nadlinger
76d4598971 manual/management_system: Reference RTIO manual with diagram; unify terminology
Other parts of the manual speak of "executing" RTIO events instead
of "triggering" them.
2019-05-14 20:35:06 +01:00
David Nadlinger
d4275ea1e0 manual/rtio: Update Syncrhonization section following sync() removal 2019-05-14 20:27:06 +01:00
1e01e6b834 Scheduler documentation: interaction between experiments (#1320) 2019-05-14 20:38:54 +08:00
f11bf43283 update README 2019-05-09 17:36:35 +08:00
086180812c manual: update link to nix-scripts repository. Closes #1314 2019-05-08 15:04:38 +08:00
7e7f463d11 manual: fix fs.com link 2019-05-07 22:19:23 +08:00
4e230bb768 manual: update core device section on Kasli 2019-05-07 20:19:13 +08:00
4fab405b36 manual: ligher mock for artiq.gui.applets. Closes #1293 2019-05-07 20:03:13 +08:00
fa19b30313 remove old conda build recipes 2019-05-07 17:26:38 +08:00
51c123bad8 manual: more polite conda warning 2019-04-27 09:35:09 +08:00
b13961f246 manual: shorter nix-env command 2019-04-27 09:34:28 +08:00
9ffb6867e2 manual: add links to NDSP docs 2019-04-23 14:24:39 +08:00
5bef72dbd6 manual: list NDSPs and their packages 2019-04-23 00:39:27 +08:00
be99496124 manual: give more explanations about board packages 2019-04-23 00:09:48 +08:00
d958b20bb8 remove asyncserial dependency 2019-04-20 10:51:29 +08:00
119f64243f manual: add warning about conda 2019-04-20 10:49:39 +08:00
2ada5227f0 update documentation after moving controllers out-of-tree (#887) 2019-04-20 00:21:54 +08:00
deffb77a7e manual: fix TTL class reference 2019-04-20 00:17:10 +08:00
56033b60a7 move thorlabs_tcube out of tree (#887) 2019-04-20 00:09:58 +08:00
5613565293 remove lda docs 2019-04-19 23:55:23 +08:00
62e9b2d85e move novatech409b out of tree (#887) 2019-04-19 21:56:16 +08:00
4c1fb0c2a1 move korad_ka3005p out of tree (#887) 2019-04-19 19:47:41 +08:00
b4b9ec50b5 nixpkgs 18.09 -> 19.03 2019-04-13 18:46:33 +08:00
David Nadlinger
25e7e0c177 manual: Core device is typically "core", not "coredevice" 2019-04-13 01:25:51 +01:00
b8e2b82adb manual: fix openocd comment 2019-04-02 10:44:41 +08:00
4f6367d1c1 manual: fix matplotlib installation command 2019-04-02 10:41:40 +08:00
3be5112363 manual: document artiq_flash -H dependency 2019-03-08 19:31:33 +08:00
b2bee3da96 manual: use artiq-env package with nix-env
The wrapper hack used by nix-env when installing a Python library directly breaks when Python subprocesses are created.
2019-03-06 23:02:03 +08:00
6ff7fce4bd manual: document some nix issues 2019-03-06 11:57:31 +08:00
bffb1cf141 manual: suggest faster and less memory-intensive nix-env command
Simple "nix-env -i" is slow and runs out of memory on old computers.
https://github.com/NixOS/nix/issues/421
2019-03-05 21:23:04 +08:00
24a3b31f22 manual: use $ for shell prompts consistently 2019-03-04 11:06:20 +08:00
26dd4e5160 manual: document how to switch to nixpkgs release 2019-03-04 11:03:27 +08:00
0d86702503 manual: cleanup 2019-03-04 11:02:28 +08:00
f65bcbcbb2 manual: clean up build and make compatible with python 3.7 2019-02-26 17:11:16 +08:00
ceead218bc manual: update metadata 2019-02-26 16:48:24 +08:00
2a60914cb9 manual: revamp developing section 2019-02-21 00:57:22 +08:00
62bfccc264 manual: add info about upgrade/rollback with Nix 2019-02-20 19:45:24 +08:00
87a1ea6587 manual: minor polishing 2019-02-20 19:45:09 +08:00
84619adbab manual: revamp installation instructions 2019-02-20 18:30:25 +08:00
5557491cc7 manual: fix wavedrom extension json syntax
The leading empty line seems to be required by Sphinx 1.8.3.

The arguments must be strict JSON when prerendering for a target that is
not "html". Browser JSON parsing may have been more lenient.

Signed-off-by: Stephan Maka <stephan@spaceboyz.net>
2019-02-20 11:18:39 +08:00
596d3e20d7 dashboard,browser: do not call get_user_config_dir() in argparse
This caused two problems when building the docs:
* the path printed in the docs depends on the machine where they are built
* it pollutes ~/.config, and also breaks Nix builds
2019-02-19 15:43:04 +08:00
David Nadlinger
944a3b34c3
doc: Fix typo in getting_started_rtio
GitHub: Fixes #1276.
2019-02-13 17:16:02 +00:00
David Nadlinger
8aac5f7695 manual/management_system: Cross-reference frontend tools 2019-01-20 19:33:02 +00:00
David Nadlinger
5c62648ed6 manual: Minor grammar fixes 2019-01-20 19:26:43 +00:00
4e142dfbeb doc/installing: cleanup and fixes
* fix broken and old URLs to anaconda/miniconda
* append conda-forge, do not prepend it (consistent with conda-forge
  instructions and does not blindly prefer packages in conda-forge over
  packages in defaults)
* shorten m-labs repo
2019-01-16 12:40:58 +01:00
David Nadlinger
a565f77538 Add gateware input event counter 2019-01-15 10:55:07 +00:00
David Nadlinger
cd725a8352 manual: Slightly untangle rtio input paragraph [nfc]
This is just an attempt at making the explanation slightly
easier to skim, based on user feedback.
2019-01-12 12:15:21 +00:00
Drew
f2c1d32e54 frontend: add --version flag to cmd line args (#1181) 2019-01-12 09:47:47 +08:00
David Nadlinger
b3ef6e2253 doc: Minor typo fix/rewording in drtio.rst 2019-01-12 00:13:24 +00:00
Drew
58e872e7b5 doc: document artiq_coreanalyzer usage. (#1233) 2019-01-10 13:01:36 +08:00
f8a94725e9 manual: add precision about sequence errors 2019-01-09 18:58:22 +08:00
d6fea22174 manual: update firmware/gateware build/flashing instructions. Closes #1223 2019-01-05 12:38:54 +08:00
Drew
94cdad6c1d artiq_flash: change docs from old -m arg to -V (#1224) (#1227)
`-m` argument is deprecated. Changed to newer `-V` argument
Closes #1224

Signed-off-by: Drew Risinger <drewrisinger@users.noreply.github.com>
2019-01-05 10:22:12 +08:00
Drew
3e5cea5d89 Docs: instructions to check if in plugdev group 2019-01-04 19:30:13 +00:00
d6a3172a3e update copyright year 2019-01-03 20:21:34 +08:00
e80d80f133 manual: move to correct directory for building rust crates. Closes #1222 2018-12-21 10:37:08 +08:00
3fd95b86c2 typo 2018-11-26 17:54:55 +08:00
5c162ed5e6 manual: document usage of DRTIO switching. Closes #1156 2018-11-26 17:53:28 +08:00
0507101e31 manual/drtio: update output internal description (SED, 'destination' switching terminology) 2018-11-26 16:50:09 +08:00
1b841805f6 Merge branch 'master' into new 2018-11-16 15:20:32 +08:00
e927551827 manual: add highfinesse-net port 2018-11-09 19:39:25 +01:00
fe3d6661eb manual: kasli device name for zadig on windows
Signed-off-by: Robert Jördens <rj@quartiq.de>
2018-11-09 15:00:59 +01:00
ad0254c17b Merge branch 'switching125' into new 2018-11-07 22:03:18 +08:00
David Nadlinger
cbdef0225c ttl: Add target RTIO time argument to timestamp/count functions
Software-based tracking of timestamps is problematic (e.g. when
using DMA, see GitHub #1113).
2018-11-03 20:33:19 +08:00
969a305c5a Merge branch 'master' into switching125 2018-10-04 10:08:42 +08:00
Drew Risinger
0fef2afccb make.bat: fix typo 2018-09-27 23:22:19 +08:00
Drew Risinger
fad7128a52 Create Docs Makefile for Windows. #1159
Allows building Sphinx documentation on Windows,
(not just Linux as previously).
Closes #1159.
2018-09-27 23:22:19 +08:00
c71e442929 documentation improvements
Based on PR #1101 by @drewrisinger
2018-09-26 12:12:37 +08:00
c8cd830118 drtio: implement get_rtio_destination_status for kernels 2018-09-15 19:11:22 +08:00
whitequark
a5cd7d2761 doc: update manual/developing.rst. 2018-08-28 20:00:32 +00:00
fb96c1140e grabber: add coredevice driver 2018-07-24 18:06:44 +08:00
766d87f626 doc: artiq_coreconfig → artiq_coremgmt config. Closes #1111 2018-07-20 11:59:07 +08:00
3168b193e6 kc705: remove Zotino and Urukul
* use Kasli instead for using EEMs
* code required outdated VHDCI adapter 1.0
2018-07-17 17:48:57 +08:00
16b917be5d doc: add reminder of what positive slack means. Closes #1084 2018-07-02 16:23:12 +08:00
apatura-iris
e9a1e10221 Update installing.rst
Added comment to clarify that ``artiq-main`` is the conda environment.
2018-06-27 08:18:50 +02:00
apatura-iris
5e5cdf0e67 Update installing.rst
The file 99-openocd.rules as downloaded from githubusercontent.com seems to be outdated and does now work on Ubuntu 16.04. The version that ships with OpenOCD has an additional ``TAG+="uaccess"`` in the rules file and works fine. Thus I suggest to use the file that is bundled with OpenOCD.
2018-06-27 08:18:50 +02:00
whitequark
f1a80f12f8 doc: note that coreanalyzer lacks SAWG support.
Closes #1035.
2018-06-01 18:47:37 +00:00
b56d37eb63 manual: fix table 2018-06-01 14:22:15 +02:00
58f71e34fc doc: add hut2 and lasersdk controller default ports 2018-05-31 14:23:57 +00:00
whitequark
dfb4a437f5 manual: mention TRACE log level. 2018-05-22 21:32:00 +00:00
whitequark
0c6f618056 manual: update to reflect the new artiq_coremgmt tool. 2018-05-22 18:56:04 +00:00
b10d3ee4b4 make RTIO clock switch optional and simplify
Kasli no longer has an internal RTIO clock.
Switching clocks dynamically is no longer supported.
2018-05-18 17:41:34 +08:00
826a85950b manual: add warning about developing section being for developers 2018-05-18 14:18:36 +08:00
019c92aa02 manual: fix title underline warning 2018-05-14 23:49:01 +08:00
3027951dd8 integrate new AD9914 driver
moninj, analyzer, docs, examples, tests.
2018-05-13 23:29:35 +08:00
73fa572275 suservo: documentation, small API changes 2018-04-27 16:53:22 +02:00
28ccca412a doc: automatic artiq_flash proxy 2018-04-26 10:50:23 +08:00
1b2a4bcbab doc: add out-of-tree controller ports
* newfocus8742 (https://github.com/quartiq/newfocus8742)
* ptb-drivers (https://github.com/quartiq/ptb-drivers)
* picam (https://github.com/quartiq/picam)
2018-04-17 23:26:00 +02:00
f96f597ecb doc: update Sinara information 2018-04-12 15:16:33 +08:00
774030698e doc: title underline 2018-03-24 16:07:53 +01:00
9bc2ce84fc doc: ad5360 -> ad53xx, add zotino 2018-03-24 15:18:08 +01:00
40e2ced85e manual: fix core_drivers_reference 2018-03-22 13:26:45 +08:00
102e3983b5 manual: reorganize core drivers 2018-03-22 12:06:01 +08:00
1b91339865 manual: fix text role 2018-03-22 12:05:47 +08:00
97918447a3 sampler: add coredevice driver 2018-03-21 12:21:53 +00:00
2caeea6f25 update copyright year 2018-03-13 00:09:13 +08:00
f4dad87fd9 coredevice: add pcf8574a driver
I2C IO expander with 8 quasi-bidirectional pins
2018-03-06 14:27:19 +01:00
432e61bbb4 drtio: add kernel API to check for link status. Closes #941 2018-03-05 00:23:55 +08:00
cc70578f1f remove old spi RTIO Phy 2018-03-01 11:19:18 +01:00
1452cd7447 novogorny: add coredevice driver and test with Kasli
m-labs/artiq#687
2018-02-22 17:19:51 +01:00
37a0d6580b spi2: add RTIO gateware and coredevice driver
1006218997
2018-02-21 13:37:36 +00:00
7986391422 manual: update Kasli section 2018-02-21 12:04:14 +08:00
6c4681e7d2 manual: fix minor errors 2018-02-21 11:57:57 +08:00
e4db84e214 doc: fix typo 2018-02-17 00:11:48 +08:00
0ef33dd0d8 manual: add note about the "correct" vivado version
close #910
2018-02-15 14:21:17 +01:00
2adba3ed33 urukul: document ad9912, and cpld, fix api 2018-02-14 09:45:17 +01:00
25f3feeda8 refactor targets 2018-01-22 18:25:10 +08:00
whitequark
bdf41cd574 doc: mention that ARTIQ can only be developed on Linux. (fixes #896). 2018-01-18 20:29:24 +00:00
21cd24fe80 manual: add section on Kasli/opticlock 2018-01-15 15:13:24 +01:00
6d58c4390b Merge branch 'sed-merge' 2018-01-10 13:14:39 +08:00
dc593ec0f0 Merge branch 'rtio-sed' into sed-merge 2018-01-10 12:04:54 +08:00
whitequark
0ce63e7f4a doc: Rust uses recursive submodules (brrr).
[ci skip]
2018-01-10 01:27:18 +00:00
whitequark
16832291eb doc: update Rust version.
[ci skip]
2018-01-10 01:27:18 +00:00