From bc282a0a4f1af4f6f78a0dd63e5b022eb76a603c Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 2 Aug 2020 10:29:07 -0500 Subject: [PATCH 001/353] WIP DZ60RGB board definition --- app/boards/arm/dz60rgb/CMakeLists.txt | 9 ++ app/boards/arm/dz60rgb/Kconfig.board | 6 ++ app/boards/arm/dz60rgb/Kconfig.defconfig | 14 +++ app/boards/arm/dz60rgb/board.cmake | 6 ++ app/boards/arm/dz60rgb/dz60rgb_rev1.dts | 87 +++++++++++++++++++ app/boards/arm/dz60rgb/dz60rgb_rev1.yaml | 19 ++++ app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig | 30 +++++++ app/boards/arm/dz60rgb/keymap/keymap.overlay | 37 ++++++++ app/boards/arm/dz60rgb/pinmux.c | 69 +++++++++++++++ 9 files changed, 277 insertions(+) create mode 100644 app/boards/arm/dz60rgb/CMakeLists.txt create mode 100644 app/boards/arm/dz60rgb/Kconfig.board create mode 100644 app/boards/arm/dz60rgb/Kconfig.defconfig create mode 100644 app/boards/arm/dz60rgb/board.cmake create mode 100644 app/boards/arm/dz60rgb/dz60rgb_rev1.dts create mode 100644 app/boards/arm/dz60rgb/dz60rgb_rev1.yaml create mode 100644 app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig create mode 100644 app/boards/arm/dz60rgb/keymap/keymap.overlay create mode 100644 app/boards/arm/dz60rgb/pinmux.c diff --git a/app/boards/arm/dz60rgb/CMakeLists.txt b/app/boards/arm/dz60rgb/CMakeLists.txt new file mode 100644 index 00000000..6a0ec73e --- /dev/null +++ b/app/boards/arm/dz60rgb/CMakeLists.txt @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: MIT + +list(APPEND EXTRA_DTC_FLAGS "-qq") + +if(CONFIG_PINMUX) +zephyr_library() +zephyr_library_sources(pinmux.c) +zephyr_library_include_directories(${ZEPHYR_BASE}/drivers) +endif() diff --git a/app/boards/arm/dz60rgb/Kconfig.board b/app/boards/arm/dz60rgb/Kconfig.board new file mode 100644 index 00000000..a96271f0 --- /dev/null +++ b/app/boards/arm/dz60rgb/Kconfig.board @@ -0,0 +1,6 @@ +# Copyright (c) 2020 Nick Winans +# SPDX-License-Identifier: MIT + +config BOARD_DZ60RGB_REV1 + bool "DZ60RGB Keyboard" + depends on SOC_STM32F303XC diff --git a/app/boards/arm/dz60rgb/Kconfig.defconfig b/app/boards/arm/dz60rgb/Kconfig.defconfig new file mode 100644 index 00000000..cfa71d3f --- /dev/null +++ b/app/boards/arm/dz60rgb/Kconfig.defconfig @@ -0,0 +1,14 @@ +# Planck keyboard configuration + +# Copyright (c) 2020 Nick Winans +# SPDX-License-Identifier: MIT + +if BOARD_DZ60RGB_REV1 + +config ZMK_KEYBOARD_NAME + default "DZ60RGB Rev 1" + +config ZMK_USB + default y + +endif # BOARD_DZ60RGB_REV1 diff --git a/app/boards/arm/dz60rgb/board.cmake b/app/boards/arm/dz60rgb/board.cmake new file mode 100644 index 00000000..4843c415 --- /dev/null +++ b/app/boards/arm/dz60rgb/board.cmake @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: MIT + +board_runner_args(jlink "--device=STM32F303VC" "--speed=4000") + +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/app/boards/arm/dz60rgb/dz60rgb_rev1.dts b/app/boards/arm/dz60rgb/dz60rgb_rev1.dts new file mode 100644 index 00000000..8066b5ad --- /dev/null +++ b/app/boards/arm/dz60rgb/dz60rgb_rev1.dts @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2020 Nick Winans + * + * SPDX-License-Identifier: MIT + */ + +/dts-v1/; +#include + +#include + +/ { + model = "DZ60RGB, Rev 1"; + compatible = "dz60rgb,rev1", "st,stm32f303"; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zmk,kscan = &kscan0; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <14>; + rows = <5>; + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,12) RC(0,13) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) RC(1,12) RC(1,13) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,13) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11) RC(3,13) +RC(4,0) RC(4,1) RC(4,2) RC(4,5) RC(4,9) RC(4,10) RC(4,11) RC(4,12) RC(4,13) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&gpioa 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpiob 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpiob 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpiob 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpiob 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + col-gpios + = <&gpioa 6 GPIO_ACTIVE_HIGH> + , <&gpioa 7 GPIO_ACTIVE_HIGH> + , <&gpiob 0 GPIO_ACTIVE_HIGH> + , <&gpiob 13 GPIO_ACTIVE_HIGH> + , <&gpiob 15 GPIO_ACTIVE_HIGH> + , <&gpioa 8 GPIO_ACTIVE_HIGH> + , <&gpioa 15 GPIO_ACTIVE_HIGH> + , <&gpiob 3 GPIO_ACTIVE_HIGH> + , <&gpiob 4 GPIO_ACTIVE_HIGH> + , <&gpiob 5 GPIO_ACTIVE_HIGH> + , <&gpiob 6 GPIO_ACTIVE_HIGH> + , <&gpiob 9 GPIO_ACTIVE_HIGH> + , <&gpioc 13 GPIO_ACTIVE_HIGH> + , <&gpioc 14 GPIO_ACTIVE_HIGH> + ; + }; + +}; + +&usb { + status = "okay"; +}; + +&flash0 { + /* + * For more information, see: + * http://docs.zephyrproject.org/latest/guides/dts/index.html#flash-partitions + */ + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* Set 6Kb of storage at the end of the 256Kb of flash */ + storage_partition: partition@3e800 { + label = "storage"; + reg = <0x0003e800 0x00001800>; + }; + }; +}; diff --git a/app/boards/arm/dz60rgb/dz60rgb_rev1.yaml b/app/boards/arm/dz60rgb/dz60rgb_rev1.yaml new file mode 100644 index 00000000..d2836218 --- /dev/null +++ b/app/boards/arm/dz60rgb/dz60rgb_rev1.yaml @@ -0,0 +1,19 @@ +identifier: DZ60RGB_rev1 +name: DZ60RGBREV1 +type: keyboard +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 40 +supported: + - gpio + - i2c + - counter + - spi + - usb_device + - lsm303dlhc + - nvs + - can + - kscan diff --git a/app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig b/app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig new file mode 100644 index 00000000..5a4c0995 --- /dev/null +++ b/app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: MIT + +CONFIG_SOC_SERIES_STM32F3X=y +CONFIG_SOC_STM32F303XC=y +# 72MHz system clock +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=72000000 + +# enable pinmux +CONFIG_PINMUX=y + +# enable GPIO +CONFIG_GPIO=y + +# clock configuration +CONFIG_CLOCK_CONTROL=y + +# Clock configuration for Cube Clock control driver +CONFIG_CLOCK_STM32_HSE_CLOCK=8000000 +CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y +# use HSE as PLL input +CONFIG_CLOCK_STM32_PLL_SRC_HSE=y +# however, the board does not have an external oscillator, so just use +# the 8MHz clock signal coming from integrated STLink +CONFIG_CLOCK_STM32_HSE_BYPASS=y +# produce 72MHz clock at PLL output +CONFIG_CLOCK_STM32_PLL_PREDIV=1 +CONFIG_CLOCK_STM32_PLL_MULTIPLIER=9 +CONFIG_CLOCK_STM32_AHB_PRESCALER=1 +CONFIG_CLOCK_STM32_APB1_PRESCALER=2 +CONFIG_CLOCK_STM32_APB2_PRESCALER=1 diff --git a/app/boards/arm/dz60rgb/keymap/keymap.overlay b/app/boards/arm/dz60rgb/keymap/keymap.overlay new file mode 100644 index 00000000..9d83adcf --- /dev/null +++ b/app/boards/arm/dz60rgb/keymap/keymap.overlay @@ -0,0 +1,37 @@ +#include +#include +#include + +/ { + chosen { + zmk,keymap = &keymap0; + }; + + keymap0: keymap { + compatible = "zmk,keymap"; + label ="Default DZ60RGB Keymap"; + layers = <&default>; + }; + + layers { + compatible = "zmk,layers"; + + default: layer_0 { + label = "DEFAULT"; +// ------------------------------------------------------------------------------------------ +// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | +// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | "|" | +// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | +// | SHIFT | Z | X | C | V | B | N | M | , | . | SHIFT(/) | ^ | DEL | +// | CTL | WIN | ALT | SPACE | ALT | MO(1) | <- | v | -> | +// ------------------------------------------------------------------------------------------ + bindings = < + &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp MINUS &kp EQL &kp BKSP + &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH + &kp CLCK &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT &kp RET + &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &mt MOD_RSFT FSLH &kp UARW &kp DEL + &kp LCTL &kp LGUI &kp LALT &kp SPC &kp RALT &mo 1 &kp LARW &kp DARW &kp RARW + >; + }; + }; +}; diff --git a/app/boards/arm/dz60rgb/pinmux.c b/app/boards/arm/dz60rgb/pinmux.c new file mode 100644 index 00000000..5df5c90e --- /dev/null +++ b/app/boards/arm/dz60rgb/pinmux.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 I-SENSE group of ICCS + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include +#include + +#include + +/* pin assignments for STM32F3DISCOVERY board */ +static const struct pin_config pinconf[] = { +#ifdef CONFIG_UART_1 + {STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, + {STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, +#endif /* CONFIG_UART_1 */ +#ifdef CONFIG_UART_2 + {STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, + {STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, +#endif /* CONFIG_UART_2 */ +#ifdef CONFIG_I2C_1 + {STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, + {STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, +#endif /* CONFIG_I2C_1 */ +#ifdef CONFIG_I2C_2 + {STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, + {STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, +#endif /* CONFIG_I2C_2 */ +#ifdef CONFIG_SPI_1 +#ifdef CONFIG_SPI_STM32_USE_HW_SS + {STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, +#endif /* CONFIG_SPI_STM32_USE_HW_SS */ + {STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, + {STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, + {STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, +#endif /* CONFIG_SPI_1 */ +#ifdef CONFIG_SPI_2 +#ifdef CONFIG_SPI_STM32_USE_HW_SS + {STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, +#endif /* CONFIG_SPI_STM32_USE_HW_SS */ + {STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, + {STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, + {STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, +#endif /* CONFIG_SPI_2 */ +#ifdef CONFIG_USB_DC_STM32 + {STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, + {STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, +#endif /* CONFIG_USB_DC_STM32 */ +#ifdef CONFIG_CAN_1 + {STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, + {STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, +#endif /* CONFIG_CAN_1 */ +}; + +static int pinmux_stm32_init(struct device *port) +{ + ARG_UNUSED(port); + + stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); + + return 0; +} + +SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, + CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); From 3ee2d1196b9335a081d841ff3918d2fdf722d5b9 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 20 Aug 2020 00:07:04 -0500 Subject: [PATCH 002/353] feat(rgb): underglow state Kconfig and settings --- app/Kconfig | 24 +++++++++++++ app/src/rgb_underglow.c | 77 +++++++++++++++++++++++++++++++---------- 2 files changed, 83 insertions(+), 18 deletions(-) diff --git a/app/Kconfig b/app/Kconfig index 416c9852..cefae21a 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -180,6 +180,30 @@ config ZMK_RGB_UNDERGLOW_BRT_STEP int "RGB underglow brightness step in percent" default 10 +config ZMK_RGB_UNDERGLOW_HUE_START + int "RGB underglow start hue value from 0-359" + default 0 + +config ZMK_RGB_UNDERGLOW_SAT_START + int "RGB underglow start saturations value from 0-100" + default 100 + +config ZMK_RGB_UNDERGLOW_BRT_START + int "RGB underglow start brightness value from 0-100" + default 100 + +config ZMK_RGB_UNDERGLOW_SPD_START + int "RGB underglow start animation speed value from 1-5" + default 3 + +config ZMK_RGB_UNDERGLOW_EFF_START + int "RGB underglow start effect int value related to the effect enum list" + default 0 + +config ZMK_RGB_UNDERGLOW_ON_START + bool "Whether RGB underglow starts on by default" + default y + endif endmenu diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 95adcec2..5f557980 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -45,12 +46,39 @@ struct rgb_underglow_state { bool on; }; -struct rgb_underglow_state state; - struct device *led_strip; struct led_rgb pixels[STRIP_NUM_PIXELS]; +struct rgb_underglow_state state; + +static int rgb_settings_set(const char *name, size_t len, + settings_read_cb read_cb, void *cb_arg) +{ + const char *next; + int rc; + + if (settings_name_steq(name, "state", &next) && !next) { + if (len != sizeof(state)) { + return -EINVAL; + } + + rc = read_cb(cb_arg, &state, sizeof(state)); + if (rc >= 0) { + return 0; + } + + return rc; + } + + return -ENOENT; +} + +struct settings_handler rgb_conf = { + .name = "rgb", + .h_set = rgb_settings_set +}; + static struct led_rgb hsb_to_rgb(struct led_hsb hsb) { double r, g, b; @@ -187,20 +215,35 @@ static int zmk_rgb_underglow_init(struct device *_arg) } state = (struct rgb_underglow_state){ - hue: 0, - saturation: 100, - brightness: 100, - animation_speed: 3, - current_effect: 0, + hue: CONFIG_ZMK_RGB_UNDERGLOW_HUE_START, + saturation: CONFIG_ZMK_RGB_UNDERGLOW_SAT_START, + brightness: CONFIG_ZMK_RGB_UNDERGLOW_BRT_START, + animation_speed: CONFIG_ZMK_RGB_UNDERGLOW_SPD_START, + current_effect: CONFIG_ZMK_RGB_UNDERGLOW_EFF_START, animation_step: 0, +#ifdef CONFIG_ZMK_RGB_UNDERGLOW_ON_START on: true +#else + on: false +#endif }; - k_timer_start(&underglow_tick, K_NO_WAIT, K_MSEC(50)); + settings_subsys_init(); + settings_register(&rgb_conf); + settings_load(); + + if (state.on) { + k_timer_start(&underglow_tick, K_NO_WAIT, K_MSEC(50)); + } return 0; } +int zmk_rgb_underglow_save_state() +{ + return settings_save_one("rgb/state", &state, sizeof(state)); +} + int zmk_rgb_underglow_cycle_effect(int direction) { if (!led_strip) return -ENODEV; @@ -218,7 +261,7 @@ int zmk_rgb_underglow_cycle_effect(int direction) state.animation_step = 0; - return 0; + return zmk_rgb_underglow_save_state(); } int zmk_rgb_underglow_toggle() @@ -242,7 +285,7 @@ int zmk_rgb_underglow_toggle() k_timer_stop(&underglow_tick); } - return 0; + return zmk_rgb_underglow_save_state(); } int zmk_rgb_underglow_change_hue(int direction) @@ -250,17 +293,15 @@ int zmk_rgb_underglow_change_hue(int direction) if (!led_strip) return -ENODEV; if (state.hue == 0 && direction < 0) { - state.hue = 350; + state.hue = 360 - CONFIG_ZMK_RGB_UNDERGLOW_HUE_STEP; return 0; } state.hue += direction * CONFIG_ZMK_RGB_UNDERGLOW_HUE_STEP; - if (state.hue > 350) { - state.hue = 0; - } + state.hue = state.hue % 360; - return 0; + return zmk_rgb_underglow_save_state(); } int zmk_rgb_underglow_change_sat(int direction) @@ -277,7 +318,7 @@ int zmk_rgb_underglow_change_sat(int direction) state.saturation = 100; } - return 0; + return zmk_rgb_underglow_save_state(); } int zmk_rgb_underglow_change_brt(int direction) @@ -294,7 +335,7 @@ int zmk_rgb_underglow_change_brt(int direction) state.brightness = 100; } - return 0; + return zmk_rgb_underglow_save_state(); } int zmk_rgb_underglow_change_spd(int direction) @@ -311,7 +352,7 @@ int zmk_rgb_underglow_change_spd(int direction) state.animation_speed = 5; } - return 0; + return zmk_rgb_underglow_save_state(); } SYS_INIT(zmk_rgb_underglow_init, From bee5f7c350be17f0260004850ac715336a27fc94 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 20 Aug 2020 21:13:05 -0500 Subject: [PATCH 003/353] fix(rgb): add missing Kconfig docs --- docs/docs/feature/underglow.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/docs/feature/underglow.md b/docs/docs/feature/underglow.md index c6517ced..ab44ebd1 100644 --- a/docs/docs/feature/underglow.md +++ b/docs/docs/feature/underglow.md @@ -35,11 +35,17 @@ If your board or shield does not have RGB underglow configured, refer to [Adding There are various Kconfig options used to configure the RGB underglow feature. These can all be set in the `.conf` file. -| Option | Description | Default | -| ---------------------------- | ---------------------------------------------- | ------- | -| `ZMK_RGB_UNDERGLOW_HUE_STEP` | Hue step in degrees of 360 used by RGB actions | `10` | -| `ZMK_RGB_UNDERGLOW_SAT_STEP` | Saturation step in percent used by RGB actions | `10` | -| `ZMK_RGB_UNDERGLOW_BRT_STEP` | Brightness step in percent used by RGB actions | `10` | +| Option | Description | Default | +|-------------------------------|------------------------------------------------|---------| +| `ZMK_RGB_UNDERGLOW_HUE_STEP` | Hue step in degrees of 360 used by RGB actions | 10 | +| `ZMK_RGB_UNDERGLOW_SAT_STEP` | Saturation step in percent used by RGB actions | 10 | +| `ZMK_RGB_UNDERGLOW_BRT_STEP` | Brightness step in percent used by RGB actions | 10 | +| `ZMK_RGB_UNDERGLOW_HUE_START` | Default hue 0-359 in degrees | 0 | +| `ZMK_RGB_UNDERGLOW_SAT_START` | Default saturation 0-100 in percent | 100 | +| `ZMK_RGB_UNDERGLOW_BRT_START` | Default brightness 0-100 in percent | 100 | +| `ZMK_RGB_UNDERGLOW_SPD_START` | Default effect speed 1-5 | 3 | +| `ZMK_RGB_UNDERGLOW_EFF_START` | Default effect integer from the effect enum | 0 | +| `ZMK_RGB_UNDERGLOW_ON_START` | Default on state | y | ## Adding RGB Underglow to a Board From 74fd4fc997c0cf78cc9acabdd61466fa4857e7ba Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 20 Aug 2020 21:13:17 -0500 Subject: [PATCH 004/353] fix(rgb): fix underglow settings location --- app/src/rgb_underglow.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 5f557980..86223b17 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -75,7 +75,7 @@ static int rgb_settings_set(const char *name, size_t len, } struct settings_handler rgb_conf = { - .name = "rgb", + .name = "rgb/underglow", .h_set = rgb_settings_set }; @@ -241,7 +241,7 @@ static int zmk_rgb_underglow_init(struct device *_arg) int zmk_rgb_underglow_save_state() { - return settings_save_one("rgb/state", &state, sizeof(state)); + return settings_save_one("rgb/underglow/state", &state, sizeof(state)); } int zmk_rgb_underglow_cycle_effect(int direction) From c5c21022a23cae3fecaf17e13d18d7d1ebd5f150 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 23 Aug 2020 10:33:19 -0500 Subject: [PATCH 005/353] Move settings load --- app/CMakeLists.txt | 1 + app/src/rgb_underglow.c | 40 ++++++++++++++++++++++------------------ app/src/settings.c | 13 +++++++++++++ 3 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 app/src/settings.c diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 054f84a7..bb4af555 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -55,4 +55,5 @@ target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/hog.c) target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c) target_sources(app PRIVATE src/endpoints.c) target_sources(app PRIVATE src/hid_listener.c) +target_sources(app PRIVATE src/settings.c) target_sources(app PRIVATE src/main.c) diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 86223b17..3851421b 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -15,7 +15,6 @@ #include #include -#include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -106,6 +105,16 @@ static struct led_rgb hsb_to_rgb(struct led_hsb hsb) return rgb; } +static void zmk_rgb_underglow_off() +{ + for (int i=0; i +#include +#include +#include + +static int zmk_settings_init(struct device *_arg) +{ + return settings_load(); +} + +SYS_INIT(zmk_settings_init, + APPLICATION, + CONFIG_APPLICATION_INIT_PRIORITY); From 979a5bffffeac0fed12db00409dedb8ed6c4ad87 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 23 Aug 2020 15:56:18 -0500 Subject: [PATCH 006/353] fix(rgb): check if settings enabled --- app/CMakeLists.txt | 2 +- app/src/rgb_underglow.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index bb4af555..bbb54b95 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -55,5 +55,5 @@ target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/hog.c) target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c) target_sources(app PRIVATE src/endpoints.c) target_sources(app PRIVATE src/hid_listener.c) -target_sources(app PRIVATE src/settings.c) +target_sources_ifdef(CONFIG_SETTINGS app PRIVATE src/settings.c) target_sources(app PRIVATE src/main.c) diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 3851421b..cb98e8d9 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -51,6 +51,7 @@ struct led_rgb pixels[STRIP_NUM_PIXELS]; struct rgb_underglow_state state; +#if IS_ENABLED(CONFIG_SETTINGS) static int rgb_settings_set(const char *name, size_t len, settings_read_cb read_cb, void *cb_arg) { @@ -77,6 +78,7 @@ struct settings_handler rgb_conf = { .name = "rgb/underglow", .h_set = rgb_settings_set }; +#endif static struct led_rgb hsb_to_rgb(struct led_hsb hsb) { @@ -242,7 +244,9 @@ static int zmk_rgb_underglow_init(struct device *_arg) on: IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_ON_START) }; +#if IS_ENABLED(CONFIG_SETTINGS) settings_register(&rgb_conf); +#endif k_timer_start(&underglow_tick, K_NO_WAIT, K_MSEC(50)); @@ -251,7 +255,11 @@ static int zmk_rgb_underglow_init(struct device *_arg) int zmk_rgb_underglow_save_state() { +#if IS_ENABLED(CONFIG_SETTINGS) return settings_save_one("rgb/underglow/state", &state, sizeof(state)); +#else + return 0; +#endif } int zmk_rgb_underglow_cycle_effect(int direction) From 068626d1a74d3883a8ccb2cd514a217098e99420 Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 1 Sep 2020 21:12:09 -0700 Subject: [PATCH 007/353] Some work on encoder docs --- docs/docs/dev-guide-add-encoders.md | 53 +++++++++++++++++++++++++++++ docs/docs/feature/encoders.md | 36 +++++++++++++++++++- docs/sidebars.js | 5 ++- 3 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 docs/docs/dev-guide-add-encoders.md diff --git a/docs/docs/dev-guide-add-encoders.md b/docs/docs/dev-guide-add-encoders.md new file mode 100644 index 00000000..79f353f1 --- /dev/null +++ b/docs/docs/dev-guide-add-encoders.md @@ -0,0 +1,53 @@ +--- +id: dev-guide-add-encoders +title: Adding Encoders +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +EC11 encoder support can be added to your board or shield by adding the appropriate lines to your board/shield's .conf, .dtsi, and .overlay files. + + + + +In your .conf file you will need to add the following lines so that the EC11 drivers can be enabled: + +``` +# Uncomment to enable encoder +# CONFIG_EC11=y +# CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y +``` + +These should be commented by default if encoders are optional, but can be uncommented if encoders are part of the original design. + + + +In your .dtsi file you will need to add the following lines to define the encoder sensor: + + +``` +left_encoder: encoder_left { + compatible = "alps,ec11"; + label = "LEFT_ENCODER"; + a-gpios = ; + b-gpios = ; + resolution = <4>; + }; +``` +Here you will have to replace PIN_A and PIN_B with the appropriate pins that your PCB utilizes for the encoder(s). + +For keyboards that use the Pro Micro or any of the Pro Micro replacements, Sparkfun's [Pro Micro Hookup Guide](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro) has a pinout diagram that can be useful to determine the right pins. Reference either the blue numbers labeled "Arduino" (digital pins) or the green numbers labeled "Analog" (analog pins). For pins that are labeled as both digital and analog, refer to your specific board's .dtsi file to determine how you should refer to that pin. + +Replace `left` with `right` to define a right-side encoder, although note that support for peripheral side sensors is still in progress. + + + + + diff --git a/docs/docs/feature/encoders.md b/docs/docs/feature/encoders.md index 16537ad7..9f583cb5 100644 --- a/docs/docs/feature/encoders.md +++ b/docs/docs/feature/encoders.md @@ -3,4 +3,38 @@ title: Encoders sidebar_label: Encoders --- -TODO: Documentation on encoders. +Existing support for encoders in ZMK is focused around the EC11 rotary encoder with push button design used in the majority of current keyboard and macropad designs. + +## Enabling EC11 Encoders + +To enable encoders for boards that have existing encoder support, uncomment the `EC11_CONFIG=y` and `CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y` lines in your board's .conf file in your `zmk-config/config` folder. Save and push your changes, then download and flash the new firmware. + +## Customizing EC11 Encoder Behavior + +Encoder behavior in ZMK is configured in two different locations as the push button and rotation behaviors are handled in two separate ways. + +### Push Button + +Keyboards and macropads with encoder support will typically take the two EC11 pins responsible for the push button and include them as part of the matrix for the keys. To configure what is sent by the push button, find the encoder's position in the keyboard matrix and assign it a behavior the same as you would any other key. + +### Rotation + +Rotation is handled separately as a type of sensor. The behavior for this is set by defining `sensor-bindings` within a layer but below the `bindings` for the regular keys in the following format: + +``` +sensor-bindings = ; +``` + +- `BINDING` is one of two rotation bindings that are currently defined, `&inc_dec_cp` for consumer key presses or `&inc_dec_kp` for normal key presses (see [Key Press](<(/docs/behavior/key-press)>) for the difference between the two). +- `CW_KEY` is the keycode activated by a clockwise turn. +- `CCW_KEY` is the keycode activated by a counter-clockwise turn. + +Behaviors for additional encoders can be configured by adding more `BINDING CW_KEY CCW_KEY` sets immediately after the first. + +As an example, a complete `sensor-bindings` for a Kyria would look like: + +``` +sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; +``` + +In this example, the left encoder is configured to control volume up and down while the right encoder sends either Page Up or Page Down. diff --git a/docs/sidebars.js b/docs/sidebars.js index 53c5cf3d..924010ea 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -23,6 +23,9 @@ module.exports = { "dev-posix-board", "dev-tests", ], - "Dev Guides": ["dev-guide-new-shield", "dev-guide-usb-logging"], + "Dev Guides": [ + "dev-guide-new-shield", + "dev-guide-add-encoders", + "dev-guide-usb-logging"], }, }; From 6f74e61dd383f7b62280f230dafa66014800bd78 Mon Sep 17 00:00:00 2001 From: Kevin Date: Wed, 2 Sep 2020 18:25:46 -0700 Subject: [PATCH 008/353] Added user and dev encoder docs --- docs/docs/dev-guide-new-shield.md | 79 +++++++++++++++++++++++++++++++ docs/docs/feature/encoders.md | 14 ++++-- docs/sidebars.js | 1 - 3 files changed, 88 insertions(+), 6 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 8556623d..7825d8bb 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -3,6 +3,9 @@ id: dev-guide-new-shield title: New Keyboard Shield --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + ## Overview This guide will walk through the steps necessary to add ZMK support for a keyboard the uses a (Pro Micro compatible) addon MCU board to provide the microprocessor. @@ -13,6 +16,7 @@ The high level steps are: - Add the shield overlay file to define the [KSCAN driver]() for detecting key press/release. - (Optional) Add the matrix transform for mapping KSCAN row/column values to sane key positions. This is needed for non-rectangular keyboards, or where the underlying row/column pin arrangement does not map one to one with logical locations on the keyboard. - Add a default keymap, which users can override in their own configs as needed. +- Add support for features such as encoders, OLED displays, or RGB underglow. It may be helpful to review the upstream [shields documentation](https://docs.zephyrproject.org/2.3.0/guides/porting/shields.html#shields) to get a proper understanding of the underlying system before continuing. @@ -195,6 +199,81 @@ Further documentation on behaviors and bindings is forthcoming, but a summary of - `trans` is the "transparent" behavior, useful to be place in higher layers above `mo` bindings to be sure the key release is handled by the lower layer. No binding arguments are required. - `mt` is the "mod-tap" behavior, and takes two binding arguments, the modifier to use if held, and the keycode to send if tapped. +## Adding Features + +### Encoders + +EC11 encoder support can be added to your board or shield by adding the appropriate lines to your board/shield's configuration (.conf), device tree (.dtsi), and overlay (.overlay) files. + + + + +In your configuration file you will need to add the following lines so that the encoders can be enabled/disabled: + +``` +# Uncomment to enable encoder +# CONFIG_EC11=y +# CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y +``` + +These should be commented by default for encoders that are optional/can be swapped with switches, but can be uncommented if encoders are part of the default design. + +:::note +If building locally for split boards, you may need to add these lines to the specific half's configuration file as well as the combined configuration file. +::: + + + +In your device tree file you will need to add the following lines to define the encoder sensor: + + +``` +left_encoder: encoder_left { + compatible = "alps,ec11"; + label = "LEFT_ENCODER"; + a-gpios = ; + b-gpios = ; + resolution = <4>; + }; +``` +Here you will have to replace PIN_A and PIN_B with the appropriate pins that your PCB utilizes for the encoder(s). For keyboards that use the Pro Micro or any of the Pro Micro replacements, Sparkfun's [Pro Micro Hookup Guide](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro) has a pinout diagram that can be useful to determine the right pins. Reference either the blue numbers labeled "Arduino" (digital pins) or the green numbers labeled "Analog" (analog pins). For pins that are labeled as both digital and analog, refer to your specific board's .dtsi file to determine how you should refer to that pin. + +Add additional encoders as necessary by duplicating the above lines, replacing `left` with whatever you would like to call your encoder, and updating the pins. Note that support for peripheral (right) side sensors over BLE is still in progress. + +Once you have defined the encoder sensors, you will have to add them to the list of sensors: + +``` +sensors { + compatible = "zmk,keymap-sensors"; + sensors = <&left_encoder &right_encoder>; + }; +``` + +In this example, a left_encoder and right_encoder are both added. Additional encoders can be added with spaces separating each, and the order they are added here determines the order in which you define their behavior in your keymap. + + + +Add the following lines to your overlay file(s) to enable the encoder: + +``` +&left_encoder { + status = "okay"; +}; +``` + +:::note +For split keyboards, make sure to add left hand encoders to the left .overlay file and right hand encoders to the right .overlay file. +::: + + + + ## Testing Once you've fully created the new keyboard shield definition, diff --git a/docs/docs/feature/encoders.md b/docs/docs/feature/encoders.md index 9f583cb5..a5a796d8 100644 --- a/docs/docs/feature/encoders.md +++ b/docs/docs/feature/encoders.md @@ -3,7 +3,7 @@ title: Encoders sidebar_label: Encoders --- -Existing support for encoders in ZMK is focused around the EC11 rotary encoder with push button design used in the majority of current keyboard and macropad designs. +Existing support for encoders in ZMK is focused around the five pin EC11 rotary encoder with push button design used in the majority of current keyboard and macropad designs. ## Enabling EC11 Encoders @@ -19,7 +19,7 @@ Keyboards and macropads with encoder support will typically take the two EC11 pi ### Rotation -Rotation is handled separately as a type of sensor. The behavior for this is set by defining `sensor-bindings` within a layer but below the `bindings` for the regular keys in the following format: +Rotation is handled separately as a type of sensor. The behavior for this is set in `sensor-bindings`, which is defined in each keymap layer in the following format: ``` sensor-bindings = ; @@ -29,12 +29,16 @@ sensor-bindings = ; - `CW_KEY` is the keycode activated by a clockwise turn. - `CCW_KEY` is the keycode activated by a counter-clockwise turn. -Behaviors for additional encoders can be configured by adding more `BINDING CW_KEY CCW_KEY` sets immediately after the first. +Additional encoders can be configured by adding more `BINDING CW_KEY CCW_KEY` sets immediately after the first. -As an example, a complete `sensor-bindings` for a Kyria would look like: +As an example, a complete `sensor-bindings` for a Kyria with two encoders could look like: ``` sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; ``` -In this example, the left encoder is configured to control volume up and down while the right encoder sends either Page Up or Page Down. +Here, the left encoder is configured to control volume up and down while the right encoder sends either Page Up or Page Down. + +## Adding Encoder Support + +See the [New Keyboard Shield](docs/dev-guide-new-shield) documentation for how to add or modify additional encoders to your shield. diff --git a/docs/sidebars.js b/docs/sidebars.js index 924010ea..fb82dfa7 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -25,7 +25,6 @@ module.exports = { ], "Dev Guides": [ "dev-guide-new-shield", - "dev-guide-add-encoders", "dev-guide-usb-logging"], }, }; From 2629aa354f3d908e3afc13e3cd12a79974d77234 Mon Sep 17 00:00:00 2001 From: Kevin Date: Wed, 2 Sep 2020 18:28:00 -0700 Subject: [PATCH 009/353] Removed old dev encoder page --- docs/docs/dev-guide-add-encoders.md | 53 ----------------------------- 1 file changed, 53 deletions(-) delete mode 100644 docs/docs/dev-guide-add-encoders.md diff --git a/docs/docs/dev-guide-add-encoders.md b/docs/docs/dev-guide-add-encoders.md deleted file mode 100644 index 79f353f1..00000000 --- a/docs/docs/dev-guide-add-encoders.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: dev-guide-add-encoders -title: Adding Encoders ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -EC11 encoder support can be added to your board or shield by adding the appropriate lines to your board/shield's .conf, .dtsi, and .overlay files. - - - - -In your .conf file you will need to add the following lines so that the EC11 drivers can be enabled: - -``` -# Uncomment to enable encoder -# CONFIG_EC11=y -# CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y -``` - -These should be commented by default if encoders are optional, but can be uncommented if encoders are part of the original design. - - - -In your .dtsi file you will need to add the following lines to define the encoder sensor: - - -``` -left_encoder: encoder_left { - compatible = "alps,ec11"; - label = "LEFT_ENCODER"; - a-gpios = ; - b-gpios = ; - resolution = <4>; - }; -``` -Here you will have to replace PIN_A and PIN_B with the appropriate pins that your PCB utilizes for the encoder(s). - -For keyboards that use the Pro Micro or any of the Pro Micro replacements, Sparkfun's [Pro Micro Hookup Guide](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro) has a pinout diagram that can be useful to determine the right pins. Reference either the blue numbers labeled "Arduino" (digital pins) or the green numbers labeled "Analog" (analog pins). For pins that are labeled as both digital and analog, refer to your specific board's .dtsi file to determine how you should refer to that pin. - -Replace `left` with `right` to define a right-side encoder, although note that support for peripheral side sensors is still in progress. - - - - - From 5eb50d7b181d2c61099b49f74b1b54c996370914 Mon Sep 17 00:00:00 2001 From: Kevin Date: Wed, 2 Sep 2020 18:36:35 -0700 Subject: [PATCH 010/353] Fixed links --- docs/docs/feature/encoders.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/feature/encoders.md b/docs/docs/feature/encoders.md index a5a796d8..38ff9d31 100644 --- a/docs/docs/feature/encoders.md +++ b/docs/docs/feature/encoders.md @@ -25,7 +25,7 @@ Rotation is handled separately as a type of sensor. The behavior for this is set sensor-bindings = ; ``` -- `BINDING` is one of two rotation bindings that are currently defined, `&inc_dec_cp` for consumer key presses or `&inc_dec_kp` for normal key presses (see [Key Press](<(/docs/behavior/key-press)>) for the difference between the two). +- `BINDING` is one of two rotation bindings that are currently defined, `&inc_dec_cp` for consumer key presses or `&inc_dec_kp` for normal key presses (see [Key Press](/docs/behavior/key-press) for the difference between the two). - `CW_KEY` is the keycode activated by a clockwise turn. - `CCW_KEY` is the keycode activated by a counter-clockwise turn. @@ -41,4 +41,4 @@ Here, the left encoder is configured to control volume up and down while the rig ## Adding Encoder Support -See the [New Keyboard Shield](docs/dev-guide-new-shield) documentation for how to add or modify additional encoders to your shield. +See the [New Keyboard Shield](/docs/dev-guide-new-shield) documentation for how to add or modify additional encoders to your shield. From e904a098b3ad2af28485e0f79287ac3b04947d1c Mon Sep 17 00:00:00 2001 From: Kevin Date: Wed, 2 Sep 2020 21:12:22 -0700 Subject: [PATCH 011/353] Added keymap update to encoder docs --- docs/docs/dev-guide-new-shield.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 7825d8bb..bc5175bf 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -203,7 +203,7 @@ Further documentation on behaviors and bindings is forthcoming, but a summary of ### Encoders -EC11 encoder support can be added to your board or shield by adding the appropriate lines to your board/shield's configuration (.conf), device tree (.dtsi), and overlay (.overlay) files. +EC11 encoder support can be added to your board or shield by adding the appropriate lines to your board/shield's configuration (.conf), device tree (.dtsi), overlay (.overlay), and keymap (.keymap) files. @@ -271,6 +272,15 @@ Add the following lines to your overlay file(s) to enable the encoder: For split keyboards, make sure to add left hand encoders to the left .overlay file and right hand encoders to the right .overlay file. ::: + + +Add the following line to your keymap file to add default encoder behavior bindings: + +``` +sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; +``` +Add additional bindings as necessary to match the default number of encoders on your board. See the [Encoders](/docs/feature/encoders) and [Keymap](/docs/feature/keymaps) feature documentation for more details. + From 4551d307693dae30802a3f06d5f62fcf3155f8c0 Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 3 Sep 2020 13:20:05 +0100 Subject: [PATCH 012/353] ad cradios --- app/boards/shields/cradios/Kconfig.defconfig | 14 +++++++ app/boards/shields/cradios/Kconfig.shield | 5 +++ app/boards/shields/cradios/cradios.dtsi | 31 +++++++++++++++ app/boards/shields/cradios/cradios.keymap | 17 +++++++++ app/boards/shields/cradios/cradios_left.conf | 2 + .../shields/cradios/cradios_left.overlay | 34 +++++++++++++++++ app/boards/shields/cradios/cradios_right.conf | 2 + .../shields/cradios/cradios_right.overlay | 38 +++++++++++++++++++ app/boards/shields/cradios/default.keymap | 19 ++++++++++ 9 files changed, 162 insertions(+) create mode 100644 app/boards/shields/cradios/Kconfig.defconfig create mode 100644 app/boards/shields/cradios/Kconfig.shield create mode 100644 app/boards/shields/cradios/cradios.dtsi create mode 100644 app/boards/shields/cradios/cradios.keymap create mode 100644 app/boards/shields/cradios/cradios_left.conf create mode 100644 app/boards/shields/cradios/cradios_left.overlay create mode 100644 app/boards/shields/cradios/cradios_right.conf create mode 100644 app/boards/shields/cradios/cradios_right.overlay create mode 100644 app/boards/shields/cradios/default.keymap diff --git a/app/boards/shields/cradios/Kconfig.defconfig b/app/boards/shields/cradios/Kconfig.defconfig new file mode 100644 index 00000000..0aca38fc --- /dev/null +++ b/app/boards/shields/cradios/Kconfig.defconfig @@ -0,0 +1,14 @@ + +if SHIELD_CRADIOS + +config ZMK_KEYBOARD_NAME + default "cradios" + +# Unable to use interrupts as the same pin number is used +# across A & B controllers, and STM32F303CCT6 can't enable +# interrutps for multiple controllers for the same "line" +# for the external interrupts. +config ZMK_KSCAN_GPIO_POLLING + default y + +endif diff --git a/app/boards/shields/cradios/Kconfig.shield b/app/boards/shields/cradios/Kconfig.shield new file mode 100644 index 00000000..844d4332 --- /dev/null +++ b/app/boards/shields/cradios/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 Pete Johanson +# SPDX-License-Identifier: MIT + +config SHIELD_CRADIOS + def_bool $(shields_list_contains,cradios) diff --git a/app/boards/shields/cradios/cradios.dtsi b/app/boards/shields/cradios/cradios.dtsi new file mode 100644 index 00000000..7c20c009 --- /dev/null +++ b/app/boards/shields/cradios/cradios.dtsi @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT + */ + #include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <10>; + rows = <4>; + map = < +RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) +RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) +RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) + RC(3,4) RC(3,5) RC(3,6) RC(3,7) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-direct"; + }; + + }; diff --git a/app/boards/shields/cradios/cradios.keymap b/app/boards/shields/cradios/cradios.keymap new file mode 100644 index 00000000..29392241 --- /dev/null +++ b/app/boards/shields/cradios/cradios.keymap @@ -0,0 +1,17 @@ +#include +#include + + +/ { + keymap0: keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P + &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN + &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH + &kp DEL &kp RET &kp RET &SPC + }; + }; +}; diff --git a/app/boards/shields/cradios/cradios_left.conf b/app/boards/shields/cradios/cradios_left.conf new file mode 100644 index 00000000..1e028a78 --- /dev/null +++ b/app/boards/shields/cradios/cradios_left.conf @@ -0,0 +1,2 @@ +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y diff --git a/app/boards/shields/cradios/cradios_left.overlay b/app/boards/shields/cradios/cradios_left.overlay new file mode 100644 index 00000000..6f53d8b9 --- /dev/null +++ b/app/boards/shields/cradios/cradios_left.overlay @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT + */ +#include "cradios.dtsi" + +kscan_0 { + + input-gpios + = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + ; +}; + +&bt_unpair_combo { + key-positions = <0 38>; +}; + diff --git a/app/boards/shields/cradios/cradios_right.conf b/app/boards/shields/cradios/cradios_right.conf new file mode 100644 index 00000000..990cf7c0 --- /dev/null +++ b/app/boards/shields/cradios/cradios_right.conf @@ -0,0 +1,2 @@ +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL=y diff --git a/app/boards/shields/cradios/cradios_right.overlay b/app/boards/shields/cradios/cradios_right.overlay new file mode 100644 index 00000000..f991ef9c --- /dev/null +++ b/app/boards/shields/cradios/cradios_right.overlay @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT + */ +#include "cradios.dtsi" + +&default_transform { + col-offset = <5>; +}; + + &kscan0 { + input-gpios + + = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + ; +}; + +&bt_unpair_combo { + key-positions = <0 38>; +}; + diff --git a/app/boards/shields/cradios/default.keymap b/app/boards/shields/cradios/default.keymap new file mode 100644 index 00000000..08210052 --- /dev/null +++ b/app/boards/shields/cradios/default.keymap @@ -0,0 +1,19 @@ +#include +#include + + +/ { + keymap0: keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P + &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN + &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH + &kp DEL &kp RET &kp RET &kp SPC + + >; + }; + }; +}; From 95bb220702121756a1f7458dcf549bd3c9187216 Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 3 Sep 2020 14:46:54 +0100 Subject: [PATCH 013/353] now compiles, not work, baby steps --- app/boards/shields/cradios/cradios.dtsi | 11 ++++++----- app/boards/shields/cradios/cradios.keymap | 13 +++++++------ app/boards/shields/cradios/cradios_left.overlay | 7 +++---- app/boards/shields/cradios/cradios_right.overlay | 9 +++------ 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/app/boards/shields/cradios/cradios.dtsi b/app/boards/shields/cradios/cradios.dtsi index 7c20c009..f5ebb962 100644 --- a/app/boards/shields/cradios/cradios.dtsi +++ b/app/boards/shields/cradios/cradios.dtsi @@ -14,18 +14,19 @@ default_transform: keymap_transform_0 { compatible = "zmk,matrix-transform"; - columns = <10>; - rows = <4>; + columns = <34>; + rows = <1>; map = < RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) -RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) -RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) - RC(3,4) RC(3,5) RC(3,6) RC(3,7) +RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,15) RC(0,16) RC(0,17) RC(0,18) RC(0,19) RC(0,20) +RC(0,21) RC(0,22) RC(0,23) RC(0,24) RC(0,25) RC(0,26) RC(0,27) RC(0,28) RC(0,29) RC(0,30) +RC(0,31) RC(0,32) RC(0,33) RC(0,34) >; }; kscan0: kscan { compatible = "zmk,kscan-gpio-direct"; + label = "KSCAN"; }; }; diff --git a/app/boards/shields/cradios/cradios.keymap b/app/boards/shields/cradios/cradios.keymap index 29392241..3da61b74 100644 --- a/app/boards/shields/cradios/cradios.keymap +++ b/app/boards/shields/cradios/cradios.keymap @@ -3,15 +3,16 @@ / { - keymap0: keymap { - compatible = "zmk,keymap"; + keymap { + compatible = "zmk,keymap"; - default_layer { + default_layer { bindings = < &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P - &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN - &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH - &kp DEL &kp RET &kp RET &SPC + &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN + &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH + &kp 3 &kp 4 &kp 2 &kp 1 + >; }; }; }; diff --git a/app/boards/shields/cradios/cradios_left.overlay b/app/boards/shields/cradios/cradios_left.overlay index 6f53d8b9..3c3e9863 100644 --- a/app/boards/shields/cradios/cradios_left.overlay +++ b/app/boards/shields/cradios/cradios_left.overlay @@ -5,7 +5,8 @@ */ #include "cradios.dtsi" -kscan_0 { + +&kscan0 { input-gpios = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> @@ -28,7 +29,5 @@ kscan_0 { ; }; -&bt_unpair_combo { - key-positions = <0 38>; -}; + diff --git a/app/boards/shields/cradios/cradios_right.overlay b/app/boards/shields/cradios/cradios_right.overlay index f991ef9c..7b47924d 100644 --- a/app/boards/shields/cradios/cradios_right.overlay +++ b/app/boards/shields/cradios/cradios_right.overlay @@ -6,12 +6,11 @@ #include "cradios.dtsi" &default_transform { - col-offset = <5>; + col-offset = <17>; }; - &kscan0 { +&kscan0 { input-gpios - = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> @@ -32,7 +31,5 @@ ; }; -&bt_unpair_combo { - key-positions = <0 38>; -}; + From e559cb2d713b4248697518f6bf3ece2e05b87ab3 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 3 Sep 2020 10:14:16 -0400 Subject: [PATCH 014/353] Add hold-tap to sidebar. --- docs/sidebars.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/sidebars.js b/docs/sidebars.js index 53c5cf3d..3df183b3 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -1,6 +1,13 @@ module.exports = { someSidebar: { - "Getting Started": ["intro", "hardware", "faq", "user-setup","customization", "bond-reset"], + "Getting Started": [ + "intro", + "hardware", + "faq", + "user-setup", + "customization", + "bond-reset", + ], Features: [ "feature/keymaps", "feature/displays", @@ -11,6 +18,7 @@ module.exports = { "behavior/key-press", "behavior/layers", "behavior/misc", + "behavior/hold-tap", "behavior/mod-tap", "behavior/reset", "behavior/lighting", From 8bad40282b89859766cd28949b48fe34c24371fe Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 3 Sep 2020 22:02:25 +0100 Subject: [PATCH 015/353] actually working --- app/boards/shields/cradios/Kconfig.defconfig | 4 ++-- app/boards/shields/cradios/cradios.dtsi | 10 +++++----- app/boards/shields/cradios/cradios.keymap | 2 +- app/boards/shields/cradios/cradios_left.overlay | 3 +-- app/boards/shields/cradios/cradios_right.overlay | 5 ++--- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/app/boards/shields/cradios/Kconfig.defconfig b/app/boards/shields/cradios/Kconfig.defconfig index 0aca38fc..5b9ca9a1 100644 --- a/app/boards/shields/cradios/Kconfig.defconfig +++ b/app/boards/shields/cradios/Kconfig.defconfig @@ -1,5 +1,5 @@ -if SHIELD_CRADIOS + config ZMK_KEYBOARD_NAME default "cradios" @@ -11,4 +11,4 @@ config ZMK_KEYBOARD_NAME config ZMK_KSCAN_GPIO_POLLING default y -endif + diff --git a/app/boards/shields/cradios/cradios.dtsi b/app/boards/shields/cradios/cradios.dtsi index f5ebb962..95b4f272 100644 --- a/app/boards/shields/cradios/cradios.dtsi +++ b/app/boards/shields/cradios/cradios.dtsi @@ -17,11 +17,11 @@ columns = <34>; rows = <1>; map = < -RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) -RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,15) RC(0,16) RC(0,17) RC(0,18) RC(0,19) RC(0,20) -RC(0,21) RC(0,22) RC(0,23) RC(0,24) RC(0,25) RC(0,26) RC(0,27) RC(0,28) RC(0,29) RC(0,30) -RC(0,31) RC(0,32) RC(0,33) RC(0,34) - >; +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,17) RC(0,18) RC(0,19) RC(0,20) RC(0,21) +RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,22) RC(0,23) RC(0,24) RC(0,25) RC(0,26) +RC(0,10)RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,27) RC(0,28) RC(0,29) RC(0,30) RC(0,31) +RC(0,15) RC(0,16) RC(0,32) RC(0,33) +>; }; kscan0: kscan { diff --git a/app/boards/shields/cradios/cradios.keymap b/app/boards/shields/cradios/cradios.keymap index 3da61b74..c46468dd 100644 --- a/app/boards/shields/cradios/cradios.keymap +++ b/app/boards/shields/cradios/cradios.keymap @@ -11,7 +11,7 @@ &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH - &kp 3 &kp 4 &kp 2 &kp 1 + &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 >; }; }; diff --git a/app/boards/shields/cradios/cradios_left.overlay b/app/boards/shields/cradios/cradios_left.overlay index 3c3e9863..ab5a874d 100644 --- a/app/boards/shields/cradios/cradios_left.overlay +++ b/app/boards/shields/cradios/cradios_left.overlay @@ -7,9 +7,8 @@ &kscan0 { - input-gpios - = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> diff --git a/app/boards/shields/cradios/cradios_right.overlay b/app/boards/shields/cradios/cradios_right.overlay index 7b47924d..59a81ba5 100644 --- a/app/boards/shields/cradios/cradios_right.overlay +++ b/app/boards/shields/cradios/cradios_right.overlay @@ -8,10 +8,9 @@ &default_transform { col-offset = <17>; }; - &kscan0 { input-gpios - = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + = <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> @@ -27,7 +26,7 @@ , <&pro_micro_d 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_d 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> ; }; From 0ede549a13d6f79ef30ef6cb6e056ae94034ea8d Mon Sep 17 00:00:00 2001 From: CrossR Date: Thu, 3 Sep 2020 22:54:06 +0100 Subject: [PATCH 016/353] Fix Sofle build, update Intro page. --- app/boards/shields/sofle/sofle.dtsi | 2 ++ docs/docs/feature/keymaps.md | 2 +- docs/docs/intro.md | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/boards/shields/sofle/sofle.dtsi b/app/boards/shields/sofle/sofle.dtsi index 653a772a..bff42f6f 100644 --- a/app/boards/shields/sofle/sofle.dtsi +++ b/app/boards/shields/sofle/sofle.dtsi @@ -50,6 +50,7 @@ RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,5) RC(4,6) RC(3,6) RC(3,7) a-gpios = <&pro_micro_a 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&pro_micro_a 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; resolution = <4>; + status = "disabled"; }; right_encoder: encoder_right { @@ -58,6 +59,7 @@ RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,5) RC(4,6) RC(3,6) RC(3,7) a-gpios = <&pro_micro_a 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&pro_micro_a 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; resolution = <4>; + status = "disabled"; }; sensors { diff --git a/docs/docs/feature/keymaps.md b/docs/docs/feature/keymaps.md index d991925b..56fc2cc9 100644 --- a/docs/docs/feature/keymaps.md +++ b/docs/docs/feature/keymaps.md @@ -55,7 +55,7 @@ in the stack _also_ get the event. ## Behavior Bindings Binding a behavior at a certain key position may include up to two extra parameters that are used to -alter the behavior when that specific key position is activated/deactived. For example, when binding +alter the behavior when that specific key position is activated/deactivated. For example, when binding the "key press" (`kp`) behavior at a certain key position, you must specific _which_ keycode should be used for that key position. diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 29045f76..e75ca3c6 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -18,21 +18,23 @@ include: - HID Over GATT (HOG) - This is the official term for BLE HID devices - Keymaps and layers with basic keycodes -- Some initial work on one "behavior", Mod-Tap +- Mod-Tap +- Layer Tap - Basic HID over USB - Basic consumer (media) keycodes. - Basic OLED display logic - Basic Split support +- Basic RGB Underglow - Encoders ## Missing Features - One Shot -- Layer Tap - Complete split support - Battery reporting - Low power mode - Shell over BLE +- Macros ## Code Of Conduct From 89d604b74bb3292af53dba7d67b2ae27edfed420 Mon Sep 17 00:00:00 2001 From: CrossR Date: Fri, 4 Sep 2020 19:31:04 +0100 Subject: [PATCH 017/353] Clarify low power mode wording. --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index e75ca3c6..e20f053a 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -32,7 +32,7 @@ include: - One Shot - Complete split support - Battery reporting -- Low power mode +- Low power sleep states - Shell over BLE - Macros From df422e0205a63110094bf8bbe1a839ab52c97abb Mon Sep 17 00:00:00 2001 From: CrossR Date: Fri, 4 Sep 2020 20:45:10 +0100 Subject: [PATCH 018/353] Revert changes to Intro page. --- docs/docs/intro.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index e20f053a..29045f76 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -18,23 +18,21 @@ include: - HID Over GATT (HOG) - This is the official term for BLE HID devices - Keymaps and layers with basic keycodes -- Mod-Tap -- Layer Tap +- Some initial work on one "behavior", Mod-Tap - Basic HID over USB - Basic consumer (media) keycodes. - Basic OLED display logic - Basic Split support -- Basic RGB Underglow - Encoders ## Missing Features - One Shot +- Layer Tap - Complete split support - Battery reporting -- Low power sleep states +- Low power mode - Shell over BLE -- Macros ## Code Of Conduct From 4ce42350e70a7e4f6b9b7ad3b262d0f00f485995 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Fri, 4 Sep 2020 20:28:45 -0700 Subject: [PATCH 019/353] Update iris_right.overlay --- app/boards/shields/iris/iris_right.overlay | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/boards/shields/iris/iris_right.overlay b/app/boards/shields/iris/iris_right.overlay index 3f3dcb85..2d5dce87 100644 --- a/app/boards/shields/iris/iris_right.overlay +++ b/app/boards/shields/iris/iris_right.overlay @@ -12,12 +12,12 @@ &kscan0 { col-gpios - = <&pro_micro_a 1 GPIO_ACTIVE_HIGH> - , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> - , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> - , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + = <&pro_micro_d 10 GPIO_ACTIVE_HIGH> , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> - , <&pro_micro_d 10 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> ; }; From 0559ec9013c02a878d94b0d7ad37fa2e9b00b58c Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 4 Sep 2020 23:58:31 -0400 Subject: [PATCH 020/353] fix(ci): Only run tests if app/{src,tests} changes --- .github/workflows/test.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3d2c76b3..a6af058c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,12 @@ -on: [push, pull_request] +on: + push: + paths: + - "app/tests/**" + - "app/src/**" + pull_request: + paths: + - "app/tests/**" + - "app/src/**" name: Test From 80034c007826a026833d85d4fde7fc9be3898229 Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Sun, 6 Sep 2020 15:51:12 +0100 Subject: [PATCH 021/353] Add RoMac / non-split template support --- docs/static/setup.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 70defdf6..83e74514 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -38,7 +38,7 @@ echo "" echo "Keyboard Shield Selection:" prompt="Pick an keyboard:" -options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris") +options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac") PS3="$prompt " # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. @@ -53,6 +53,7 @@ select opt in "${options[@]}" "Quit"; do 4 ) shield_title="Splitreus62" shield="splitreus62"; split="y"; break;; 5 ) shield_title="Sofle" shield="sofle"; split="y"; break;; 6 ) shield_title="Iris" shield="iris"; split="y"; break;; + 7 ) shield_title="RoMac" shield="romac"; split="n"; break;; # Add link to docs on adding your own custom shield in your ZMK config! # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; @@ -62,6 +63,10 @@ select opt in "${options[@]}" "Quit"; do esac done +if [ "$split" == "n" ]; then + repo_path="https://github.com/bmcgavin/zmk-config-template.git" +fi + read -e -p "Copy in the stock keymap for customization? [Yn]: " copy_keymap if [ -z "$copy_keymap" ] || [ "$copy_keymap" == "Y" ] || [ "$copy_keymap" == "y" ]; then copy_keymap="yes"; fi From 01da54aadfe1ed9027e71754f9d897f68da900ea Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Sun, 6 Sep 2020 17:54:45 +0100 Subject: [PATCH 022/353] point setup.sh at upstream --- docs/static/setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 83e74514..5d203a4c 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -64,7 +64,7 @@ select opt in "${options[@]}" "Quit"; do done if [ "$split" == "n" ]; then - repo_path="https://github.com/bmcgavin/zmk-config-template.git" + repo_path="https://github.com/zmkfirmware/zmk-config-template.git" fi read -e -p "Copy in the stock keymap for customization? [Yn]: " copy_keymap From bdeb6865e18c211a2d26a1f007711710f489db27 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Sun, 6 Sep 2020 19:55:56 -0700 Subject: [PATCH 023/353] Update sidebars.js --- docs/sidebars.js | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sidebars.js b/docs/sidebars.js index 3df183b3..7da0f5bb 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -7,6 +7,7 @@ module.exports = { "user-setup", "customization", "bond-reset", + "troubleshooting" ], Features: [ "feature/keymaps", From cb95b9f11a687cb165adaffdeed866e80c7fdc7b Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Sun, 6 Sep 2020 20:03:33 -0700 Subject: [PATCH 024/353] Restored Troubleshooting.md and associated files --- .../troubleshooting/keymaps/errorscreen.png | Bin 0 -> 186351 bytes .../troubleshooting/keymaps/healthyEDIT.png | Bin 0 -> 188078 bytes .../troubleshooting/keymaps/unhealthyEDIT.png | Bin 0 -> 187729 bytes docs/docs/behavior/key-press.md | 7 +++- docs/docs/troubleshooting.md | 33 ++++++++++++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 docs/docs/assets/troubleshooting/keymaps/errorscreen.png create mode 100644 docs/docs/assets/troubleshooting/keymaps/healthyEDIT.png create mode 100644 docs/docs/assets/troubleshooting/keymaps/unhealthyEDIT.png create mode 100644 docs/docs/troubleshooting.md diff --git a/docs/docs/assets/troubleshooting/keymaps/errorscreen.png b/docs/docs/assets/troubleshooting/keymaps/errorscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..73b5b58487eb96ac22651edbf0fb9f90ca198eb9 GIT binary patch literal 186351 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�oN3TeHS02;_erTgMa_v{ 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 z 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�Ji0$nC~tz*fHIHQloRKRkvR*xT068 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

$U= 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 literal 0 HcmV?d00001 diff --git a/docs/docs/assets/troubleshooting/keymaps/unhealthyEDIT.png b/docs/docs/assets/troubleshooting/keymaps/unhealthyEDIT.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd8dc70fb1f79085f8ce70ac6627f151aa6b92c GIT binary patch literal 187729 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 QAGq+#m7jBUZ~pqf0FSe~%K!iX literal 0 HcmV?d00001 diff --git a/docs/docs/behavior/key-press.md b/docs/docs/behavior/key-press.md index f58225d7..d427f9d2 100644 --- a/docs/docs/behavior/key-press.md +++ b/docs/docs/behavior/key-press.md @@ -27,6 +27,11 @@ There is an [open issue](https://github.com/zmkfirmware/zmk/issues/21) to provid complete set of defines for the full keypad and consumer usage pages in the future for ZMK. ::: +### Improperly defined keymap - `dtlib.DTError: .dts.pre.tmp:` + +When compiling firmware from a keymap, it may be common to encounter an error in the form of a`dtlib.DTError: .dts.pre.tmp:`. +For instructions to resolve such an error, click [here](../troubleshooting###Improperly-defined-keymap) + ## Keypad Key Press The "keypad key press" behavior sends standard keypad keycodes on press/release. @@ -59,4 +64,4 @@ Example: ``` &cp M_PREV -``` +``` \ No newline at end of file diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md new file mode 100644 index 00000000..cecee25d --- /dev/null +++ b/docs/docs/troubleshooting.md @@ -0,0 +1,33 @@ +--- +id: troubleshooting +title: Troubleshooting +sidebar_title: Troubleshooting +--- +### Summary + +The following page provides suggestions for common errors that may occur during firmware compilation. If the information provided is insufficient to resolve the issue, feel free to seek out help from the [ZMK Discord](https://zmkfirmware.dev/community/discord/invite). + +### Environment Variables not Defined + +An error along the lines of `CMake Error at (zmk directory)/zephyr/cmake/generic_toolchain.cmake:64 (include): include could not find load file:` during firmware compilation indicates that the Zephyr Environment Variables are not properly defined. +For more information, click [here](../docs/dev-setup#environment-variables). + +### Improperly defined keymap + +An error along the lines of `dtlib.DTError: .dts.pre.tmp:` during firmware compilation indicates an issue within the `.keymap` file. +This can be verified by checking the file in question, found in `mkdir/app/build`. + +| ![Example Error Screen](../docs/assets/troubleshooting/keymaps/errorscreen.png) | +| :-------------------------------------------------------------------------------: | +| An example of the dtlib.DTError when compiling an iris with the nice!nano while the keymap is not properly defined | + +After opening the `.dts.pre.tmp:` and scrolling down to the referenced line, one can locate errors within their shield's keymap by checking if the referenced keycodes were properly converted into the correct [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12). + +| ![Unhealthy Keymap Temp](../docs/assets/troubleshooting/keymaps/unhealthyEDIT.png) | +| :-------------------------------------------------------------------------------: | +| An incorrectly defined keymap unable to compile. As shown in red, `&kp SPAC` is not a valid +reference to the [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12) used for "Keyboard Spacebar" | + +| ![Healthy Keymap Temp](../docs/assets/troubleshooting/keymaps/healthyEDIT.png) | +| :-------------------------------------------------------------------------------: | +| A properly defined keymap with successful compilation. As shown in red, the corrected keycode (`&kp SPC`) references the proper Usage ID defined in the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12)| \ No newline at end of file From 336cae9d0fd0aa84a30768f2629bbbf357e8cdaa Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Sun, 6 Sep 2020 20:13:45 -0700 Subject: [PATCH 025/353] Adjusted lines to fix caption format --- docs/docs/troubleshooting.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index cecee25d..61c6e79f 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -24,9 +24,8 @@ This can be verified by checking the file in question, found in `mkdir/app/build After opening the `.dts.pre.tmp:` and scrolling down to the referenced line, one can locate errors within their shield's keymap by checking if the referenced keycodes were properly converted into the correct [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12). | ![Unhealthy Keymap Temp](../docs/assets/troubleshooting/keymaps/unhealthyEDIT.png) | -| :-------------------------------------------------------------------------------: | -| An incorrectly defined keymap unable to compile. As shown in red, `&kp SPAC` is not a valid -reference to the [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12) used for "Keyboard Spacebar" | +| :-------------------------------------------------------------------------------: | +| An incorrectly defined keymap unable to compile. As shown in red, `&kp SPAC` is not a valid reference to the [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12) used for "Keyboard Spacebar" | | ![Healthy Keymap Temp](../docs/assets/troubleshooting/keymaps/healthyEDIT.png) | | :-------------------------------------------------------------------------------: | From 618c537be14e3bf8ba0515784078df1b42c60915 Mon Sep 17 00:00:00 2001 From: Kurtis Lew Date: Sun, 6 Sep 2020 20:45:28 -0700 Subject: [PATCH 026/353] Updated Headers --- docs/docs/troubleshooting.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index 61c6e79f..cd8bfd64 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -7,12 +7,12 @@ sidebar_title: Troubleshooting The following page provides suggestions for common errors that may occur during firmware compilation. If the information provided is insufficient to resolve the issue, feel free to seek out help from the [ZMK Discord](https://zmkfirmware.dev/community/discord/invite). -### Environment Variables not Defined +### CMake Error An error along the lines of `CMake Error at (zmk directory)/zephyr/cmake/generic_toolchain.cmake:64 (include): include could not find load file:` during firmware compilation indicates that the Zephyr Environment Variables are not properly defined. For more information, click [here](../docs/dev-setup#environment-variables). -### Improperly defined keymap +### dtlib.DTError An error along the lines of `dtlib.DTError: .dts.pre.tmp:` during firmware compilation indicates an issue within the `.keymap` file. This can be verified by checking the file in question, found in `mkdir/app/build`. @@ -29,4 +29,4 @@ After opening the `.dts.pre.tmp:` and scrolling down to the | ![Healthy Keymap Temp](../docs/assets/troubleshooting/keymaps/healthyEDIT.png) | | :-------------------------------------------------------------------------------: | -| A properly defined keymap with successful compilation. As shown in red, the corrected keycode (`&kp SPC`) references the proper Usage ID defined in the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12)| \ No newline at end of file +| A properly defined keymap with successful compilation. As shown in red, the corrected keycode (`&kp SPC`) references the proper Usage ID defined in the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12)| From 6b433fdefd0793e836574f528445b7d4b6d781bc Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 7 Sep 2020 12:24:47 -0500 Subject: [PATCH 027/353] Finish DZ60RGB board definition --- app/boards/arm/dz60rgb/CMakeLists.txt | 2 -- app/boards/arm/dz60rgb/board.cmake | 3 +- app/boards/arm/dz60rgb/dz60rgb_rev1.dts | 5 +-- .../keymap.overlay => dz60rgb_rev1.keymap} | 18 ++--------- app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig | 3 -- app/boards/arm/dz60rgb/pinmux.c | 32 +++++++++---------- 6 files changed, 24 insertions(+), 39 deletions(-) rename app/boards/arm/dz60rgb/{keymap/keymap.overlay => dz60rgb_rev1.keymap} (85%) diff --git a/app/boards/arm/dz60rgb/CMakeLists.txt b/app/boards/arm/dz60rgb/CMakeLists.txt index 6a0ec73e..940af1fe 100644 --- a/app/boards/arm/dz60rgb/CMakeLists.txt +++ b/app/boards/arm/dz60rgb/CMakeLists.txt @@ -1,7 +1,5 @@ # SPDX-License-Identifier: MIT -list(APPEND EXTRA_DTC_FLAGS "-qq") - if(CONFIG_PINMUX) zephyr_library() zephyr_library_sources(pinmux.c) diff --git a/app/boards/arm/dz60rgb/board.cmake b/app/boards/arm/dz60rgb/board.cmake index 4843c415..10f6e291 100644 --- a/app/boards/arm/dz60rgb/board.cmake +++ b/app/boards/arm/dz60rgb/board.cmake @@ -1,6 +1,7 @@ # SPDX-License-Identifier: MIT -board_runner_args(jlink "--device=STM32F303VC" "--speed=4000") +board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") +board_runner_args(jlink "--device=STM32F303CC" "--speed=4000") include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/app/boards/arm/dz60rgb/dz60rgb_rev1.dts b/app/boards/arm/dz60rgb/dz60rgb_rev1.dts index 8066b5ad..dc1b6ea5 100644 --- a/app/boards/arm/dz60rgb/dz60rgb_rev1.dts +++ b/app/boards/arm/dz60rgb/dz60rgb_rev1.dts @@ -17,6 +17,7 @@ zephyr,sram = &sram0; zephyr,flash = &flash0; zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; }; default_transform: keymap_transform_0 { @@ -28,7 +29,7 @@ RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) RC(1,12) RC(1,13) RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,13) RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11) RC(3,13) -RC(4,0) RC(4,1) RC(4,2) RC(4,5) RC(4,9) RC(4,10) RC(4,11) RC(4,12) RC(4,13) +RC(4,0) RC(4,1) RC(4,2) RC(4,5) RC(4,8) RC(4,9) RC(4,10) RC(4,11) RC(4,13) >; }; @@ -55,7 +56,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) RC(4 , <&gpiob 3 GPIO_ACTIVE_HIGH> , <&gpiob 4 GPIO_ACTIVE_HIGH> , <&gpiob 5 GPIO_ACTIVE_HIGH> - , <&gpiob 6 GPIO_ACTIVE_HIGH> + , <&gpiob 8 GPIO_ACTIVE_HIGH> , <&gpiob 9 GPIO_ACTIVE_HIGH> , <&gpioc 13 GPIO_ACTIVE_HIGH> , <&gpioc 14 GPIO_ACTIVE_HIGH> diff --git a/app/boards/arm/dz60rgb/keymap/keymap.overlay b/app/boards/arm/dz60rgb/dz60rgb_rev1.keymap similarity index 85% rename from app/boards/arm/dz60rgb/keymap/keymap.overlay rename to app/boards/arm/dz60rgb/dz60rgb_rev1.keymap index 9d83adcf..8de01c17 100644 --- a/app/boards/arm/dz60rgb/keymap/keymap.overlay +++ b/app/boards/arm/dz60rgb/dz60rgb_rev1.keymap @@ -1,23 +1,11 @@ #include #include -#include / { - chosen { - zmk,keymap = &keymap0; - }; - - keymap0: keymap { + keymap { compatible = "zmk,keymap"; - label ="Default DZ60RGB Keymap"; - layers = <&default>; - }; - layers { - compatible = "zmk,layers"; - - default: layer_0 { - label = "DEFAULT"; + default_layer { // ------------------------------------------------------------------------------------------ // | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | // | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | "|" | @@ -34,4 +22,4 @@ >; }; }; -}; +}; \ No newline at end of file diff --git a/app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig b/app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig index 5a4c0995..33840f96 100644 --- a/app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig +++ b/app/boards/arm/dz60rgb/dz60rgb_rev1_defconfig @@ -19,9 +19,6 @@ CONFIG_CLOCK_STM32_HSE_CLOCK=8000000 CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y # use HSE as PLL input CONFIG_CLOCK_STM32_PLL_SRC_HSE=y -# however, the board does not have an external oscillator, so just use -# the 8MHz clock signal coming from integrated STLink -CONFIG_CLOCK_STM32_HSE_BYPASS=y # produce 72MHz clock at PLL output CONFIG_CLOCK_STM32_PLL_PREDIV=1 CONFIG_CLOCK_STM32_PLL_MULTIPLIER=9 diff --git a/app/boards/arm/dz60rgb/pinmux.c b/app/boards/arm/dz60rgb/pinmux.c index 5df5c90e..60e231b6 100644 --- a/app/boards/arm/dz60rgb/pinmux.c +++ b/app/boards/arm/dz60rgb/pinmux.c @@ -14,46 +14,46 @@ /* pin assignments for STM32F3DISCOVERY board */ static const struct pin_config pinconf[] = { -#ifdef CONFIG_UART_1 +#if DT_NODE_HAS_STATUS(DT_NODELABEL(usart1), okay) && CONFIG_SERIAL {STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, {STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, -#endif /* CONFIG_UART_1 */ -#ifdef CONFIG_UART_2 +#endif +#if DT_NODE_HAS_STATUS(DT_NODELABEL(usart2), okay) && CONFIG_SERIAL {STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, {STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, -#endif /* CONFIG_UART_2 */ -#ifdef CONFIG_I2C_1 +#endif +#if DT_NODE_HAS_STATUS(DT_NODELABEL(i2c1), okay) && CONFIG_I2C {STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, {STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, -#endif /* CONFIG_I2C_1 */ -#ifdef CONFIG_I2C_2 +#endif +#if DT_NODE_HAS_STATUS(DT_NODELABEL(i2c2), okay) && CONFIG_I2C {STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, {STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, -#endif /* CONFIG_I2C_2 */ -#ifdef CONFIG_SPI_1 +#endif +#if DT_NODE_HAS_STATUS(DT_NODELABEL(spi1), okay) && CONFIG_SPI #ifdef CONFIG_SPI_STM32_USE_HW_SS {STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, #endif /* CONFIG_SPI_STM32_USE_HW_SS */ {STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, {STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, {STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, -#endif /* CONFIG_SPI_1 */ -#ifdef CONFIG_SPI_2 +#endif +#if DT_NODE_HAS_STATUS(DT_NODELABEL(spi2), okay) && CONFIG_SPI #ifdef CONFIG_SPI_STM32_USE_HW_SS {STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, #endif /* CONFIG_SPI_STM32_USE_HW_SS */ {STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, {STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, {STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, -#endif /* CONFIG_SPI_2 */ +#endif #ifdef CONFIG_USB_DC_STM32 {STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, {STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, -#endif /* CONFIG_USB_DC_STM32 */ -#ifdef CONFIG_CAN_1 +#endif /* CONFIG_USB_DC_STM32 */ +#if DT_NODE_HAS_STATUS(DT_NODELABEL(can1), okay) && CONFIG_CAN {STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, {STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, -#endif /* CONFIG_CAN_1 */ +#endif }; static int pinmux_stm32_init(struct device *port) @@ -66,4 +66,4 @@ static int pinmux_stm32_init(struct device *port) } SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, - CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); + CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); \ No newline at end of file From e845995c2d5ea90327e68495569f7d1a25242ee2 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 7 Sep 2020 12:25:11 -0500 Subject: [PATCH 028/353] Fix Planck defconfig --- app/boards/arm/planck/planck_rev6_defconfig | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/boards/arm/planck/planck_rev6_defconfig b/app/boards/arm/planck/planck_rev6_defconfig index a440ff17..e34ce002 100644 --- a/app/boards/arm/planck/planck_rev6_defconfig +++ b/app/boards/arm/planck/planck_rev6_defconfig @@ -20,9 +20,6 @@ CONFIG_CLOCK_STM32_HSE_CLOCK=8000000 CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y # use HSE as PLL input CONFIG_CLOCK_STM32_PLL_SRC_HSE=y -# however, the board does not have an external oscillator, so just use -# the 8MHz clock signal coming from integrated STLink -CONFIG_CLOCK_STM32_HSE_BYPASS=y # produce 72MHz clock at PLL output CONFIG_CLOCK_STM32_PLL_PREDIV=1 CONFIG_CLOCK_STM32_PLL_MULTIPLIER=9 From ceda57ddfd7b49dd61e8795c37cd678b69a4a76f Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 7 Sep 2020 12:32:25 -0500 Subject: [PATCH 029/353] Fix comment name of keyboard --- app/boards/arm/dz60rgb/Kconfig.defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/boards/arm/dz60rgb/Kconfig.defconfig b/app/boards/arm/dz60rgb/Kconfig.defconfig index cfa71d3f..c97a3085 100644 --- a/app/boards/arm/dz60rgb/Kconfig.defconfig +++ b/app/boards/arm/dz60rgb/Kconfig.defconfig @@ -1,4 +1,4 @@ -# Planck keyboard configuration +# DZ60RGB keyboard configuration # Copyright (c) 2020 Nick Winans # SPDX-License-Identifier: MIT From a65de800bf8779191c6b0e6ef17f12d1559389e1 Mon Sep 17 00:00:00 2001 From: Cody McGinnis Date: Tue, 8 Sep 2020 12:00:46 -0400 Subject: [PATCH 030/353] fix(tests): pending tests pass now --- app/tests/momentary-layer/early-key-release/pending | 0 app/tests/toggle-layer/early-key-release/pending | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 app/tests/momentary-layer/early-key-release/pending delete mode 100644 app/tests/toggle-layer/early-key-release/pending diff --git a/app/tests/momentary-layer/early-key-release/pending b/app/tests/momentary-layer/early-key-release/pending deleted file mode 100644 index e69de29b..00000000 diff --git a/app/tests/toggle-layer/early-key-release/pending b/app/tests/toggle-layer/early-key-release/pending deleted file mode 100644 index e69de29b..00000000 From df2da813f1f50dbd20ef226a439208fbf5d23c17 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 8 Sep 2020 16:08:09 -0400 Subject: [PATCH 031/353] fix(docs): Remove broken Discord invite links. --- docs/docs/faq.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/faq.md b/docs/docs/faq.md index 2ab158d3..d8bbd713 100644 --- a/docs/docs/faq.md +++ b/docs/docs/faq.md @@ -76,7 +76,7 @@ Please note, many keyboards only have a single PCB which includes the “brains ### What bootloader does ZMK use? -ZMK isn’t designed for any particular bootloader, and supports flashing different boards with different flash utilities (e.g. OpenOCD, nrfjprog, etc.). So if you have any difficulties, please let us know on [Discord](https://discord.gg/VJnx9kr)! +ZMK isn’t designed for any particular bootloader, and supports flashing different boards with different flash utilities (e.g. OpenOCD, nrfjprog, etc.). So if you have any difficulties, please let us know on [Discord](https://zmkfirmware.dev/community/discord/invite)! ### Can I contribute? @@ -84,11 +84,11 @@ Of course! Please use the developer [documentation](/docs) to get started! ### I have an idea! What should I do? -Please join us on [Discord](https://discord.gg/VJnx9kr) and discuss it with us! +Please join us on [Discord](https://zmkfirmware.dev/community/discord/invite) and discuss it with us! ### I want to add a new keyboard! What should I do? -The exact process for the management of all the possible hardware is still being finalized, but any developer looking to contribute new keyboard definitions should chat with us on [Discord](https://discord.gg/VJnx9kr) to get started. +The exact process for the management of all the possible hardware is still being finalized, but any developer looking to contribute new keyboard definitions should chat with us on [Discord](https://zmkfirmware.dev/community/discord/invite) to get started. ### Does ZMK have a Code of Conduct? From 6456fab8e0278d3cd5b73ef4ddca49845c00c19d Mon Sep 17 00:00:00 2001 From: Alexander Elias Date: Wed, 9 Sep 2020 09:14:01 -0700 Subject: [PATCH 032/353] Should this be org instead of com? --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 29045f76..50a747cf 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -5,7 +5,7 @@ sidebar_label: Introduction --- ZMK Firmware is an open source (MIT) keyboard -firmware built on the [Zephyr™ Project](https://zephyrproject.com/) Real Time Operating System (RTOS). +firmware built on the [Zephyr™ Project](https://zephyrproject.org/) Real Time Operating System (RTOS). The goal is to provider a powerful, featureful keyboard firmware that is free of licensing issues that prevent upstream BLE support as a first-class From 6a0e85ea726ac49bb95bdfd1c7770f7da826bf1a Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Thu, 10 Sep 2020 09:54:22 +0530 Subject: [PATCH 033/353] labelled image to be added --- docs/docs/pro-micro-labelled-image.jpg | Bin 0 -> 115573 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/docs/pro-micro-labelled-image.jpg diff --git a/docs/docs/pro-micro-labelled-image.jpg b/docs/docs/pro-micro-labelled-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f72d407719e9ff4d20ed45d93d12dead8caa9da5 GIT binary patch literal 115573 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 DB^7&W literal 0 HcmV?d00001 From 82ddf81fcb4f1f5e629fe2c2dd0c8c0ba803964f Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Thu, 10 Sep 2020 09:59:33 +0530 Subject: [PATCH 034/353] Update dev-guide-new-shield.md --- docs/docs/dev-guide-new-shield.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index bc5175bf..8aa62dac 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -64,6 +64,8 @@ endif ## Shield Overlay +![Labelled Pro Micro Image](pro-micro-labelled-image.jpg) + The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the [chosen]() node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, this might look something like: From d02fc07c4f53868cc0b498cdc2fb6b0768cbe8cb Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Thu, 10 Sep 2020 10:02:25 +0530 Subject: [PATCH 035/353] Update dev-boards-shields-keymaps.md --- docs/docs/dev-boards-shields-keymaps.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/docs/dev-boards-shields-keymaps.md b/docs/docs/dev-boards-shields-keymaps.md index cfe52526..9810558b 100644 --- a/docs/docs/dev-boards-shields-keymaps.md +++ b/docs/docs/dev-boards-shields-keymaps.md @@ -35,6 +35,8 @@ in the `app/boards/${arch}/${board_name}` directory, e.g. `app/boards/arm/planck ## Pro Micro Compatible Keyboard +![Labelled Pro Micro Image](pro-micro-labelled-image.jpg) + For keyboards that require a (usually Pro Micro compatible) add-on board to operate, the ZMK integration pieces are places in the _shield_ definition for that keyboard, allowing users to swap in different Pro Micro compatible boards (e.g. Proton-C, or nice!nano) and build a firmware the matches their actual From 3c9f58f9d40d21f5c0bec20b6da75e135503af0a Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Thu, 10 Sep 2020 10:03:48 +0530 Subject: [PATCH 036/353] Update dev-boards-shields-keymaps.md --- docs/docs/dev-boards-shields-keymaps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev-boards-shields-keymaps.md b/docs/docs/dev-boards-shields-keymaps.md index 9810558b..17a38473 100644 --- a/docs/docs/dev-boards-shields-keymaps.md +++ b/docs/docs/dev-boards-shields-keymaps.md @@ -35,7 +35,7 @@ in the `app/boards/${arch}/${board_name}` directory, e.g. `app/boards/arm/planck ## Pro Micro Compatible Keyboard -![Labelled Pro Micro Image](pro-micro-labelled-image.jpg) +![Labelled Pro Micro pins](pro-micro-labelled-image.jpg) For keyboards that require a (usually Pro Micro compatible) add-on board to operate, the ZMK integration pieces are places in the _shield_ definition for that keyboard, allowing users to From 92b3ea8a6b75764acab216470050c8138acf2643 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Thu, 10 Sep 2020 10:04:15 +0530 Subject: [PATCH 037/353] Update dev-guide-new-shield.md --- docs/docs/dev-guide-new-shield.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 8aa62dac..23d2387d 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -64,7 +64,7 @@ endif ## Shield Overlay -![Labelled Pro Micro Image](pro-micro-labelled-image.jpg) +![Labelled Pro Micro pins](pro-micro-labelled-image.jpg) The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the [chosen]() node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, this might look something like: From 68e72f9275401c3cb7541259c692a704cbfc5e82 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Wed, 9 Sep 2020 23:57:44 -0400 Subject: [PATCH 038/353] fix: Switch to single AUTHORS file.* Closes #164 --- AUTHORS | 11 +++++++++++ app/boards/arm/dz60rgb/Kconfig.board | 2 +- app/boards/arm/dz60rgb/Kconfig.defconfig | 2 +- app/boards/arm/dz60rgb/dz60rgb_rev1.dts | 2 +- app/boards/arm/nrfmicro/Kconfig.board | 2 +- app/boards/arm/nrfmicro/Kconfig.defconfig | 2 +- app/boards/arm/nrfmicro/arduino_pro_micro_pins.dtsi | 2 +- .../arm/nrfmicro/arduino_pro_micro_pins_flipped.dtsi | 2 +- app/boards/arm/nrfmicro/nrfmicro_11.dts | 2 +- app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts | 2 +- app/boards/arm/nrfmicro/nrfmicro_13.dts | 2 +- app/boards/arm/nrfmicro/pinmux.c | 2 +- app/boards/arm/planck/Kconfig.board | 2 +- app/boards/arm/planck/Kconfig.defconfig | 2 +- app/drivers/zephyr/ec11.c | 2 +- app/drivers/zephyr/ec11.h | 2 +- app/drivers/zephyr/ec11_trigger.c | 2 +- app/drivers/zephyr/kscan_gpio_direct.c | 2 +- app/drivers/zephyr/kscan_gpio_matrix.c | 2 +- app/dts/behaviors/toggle_layer.dtsi | 6 +++--- app/dts/bindings/behaviors/zmk,behavior-hold-tap.yaml | 10 +++++----- .../behaviors/zmk,behavior-rgb-underglow.yaml | 4 ++-- .../bindings/behaviors/zmk,behavior-toggle-layer.yaml | 2 +- app/include/drivers/behavior.h | 2 +- app/include/dt-bindings/zmk/reset.h | 2 +- app/include/linker/zmk-events.ld | 2 +- app/include/zmk/behavior.h | 5 +++++ app/include/zmk/ble.h | 5 +++++ app/include/zmk/display.h | 2 +- app/include/zmk/endpoints.h | 6 ++++++ app/include/zmk/event-manager.h | 2 +- app/include/zmk/events/keycode-state-changed.h | 2 +- app/include/zmk/events/modifiers-state-changed.h | 2 +- app/include/zmk/events/position-state-changed.h | 2 +- app/include/zmk/events/sensor-event.h | 2 +- app/include/zmk/handlers.h | 6 ++++++ app/include/zmk/hid.h | 6 ++++++ app/include/zmk/hog.h | 5 +++++ app/include/zmk/keymap.h | 6 ++++++ app/include/zmk/keys.h | 6 ++++++ app/include/zmk/kscan.h | 6 ++++++ app/include/zmk/matrix.h | 6 ++++++ app/include/zmk/matrix_transform.h | 6 ++++++ app/include/zmk/rgb_underglow.h | 2 +- app/include/zmk/sensors.h | 2 +- app/include/zmk/usb_hid.h | 11 +++++++---- app/run-test.sh | 2 +- app/src/behaviors/behavior_hold_tap.c | 2 +- app/src/behaviors/behavior_key_press.c | 2 +- app/src/behaviors/behavior_momentary_layer.c | 2 +- app/src/behaviors/behavior_none.c | 2 +- app/src/behaviors/behavior_reset.c | 2 +- app/src/behaviors/behavior_rgb_underglow.c | 2 +- app/src/behaviors/behavior_sensor_rotate_key_press.c | 2 +- app/src/behaviors/behavior_toggle_layer.c | 2 +- app/src/behaviors/behavior_transparent.c | 2 +- app/src/ble.c | 2 +- app/src/ble_unpair_combo.c | 2 +- app/src/display.c | 2 +- app/src/endpoints.c | 5 +++++ app/src/event_manager.c | 2 +- app/src/events/keycode_state_changed.c | 2 +- app/src/events/modifiers_state_changed.c | 2 +- app/src/events/position_state_changed.c | 2 +- app/src/events/sensor_event.c | 2 +- app/src/hid.c | 6 ++++++ app/src/hid_listener.c | 2 +- app/src/hog.c | 6 ++++++ app/src/keymap.c | 5 +++++ app/src/kscan.c | 2 +- app/src/kscan_composite.c | 2 +- app/src/kscan_mock.c | 2 +- app/src/main.c | 2 +- app/src/matrix_transform.c | 5 +++++ app/src/rgb_underglow.c | 2 +- app/src/sensors.c | 2 +- app/src/split/bluetooth/central.c | 2 +- app/src/split/bluetooth/service.c | 5 +++++ app/src/split_listener.c | 2 +- app/src/usb_hid.c | 5 +++++ 80 files changed, 185 insertions(+), 71 deletions(-) create mode 100644 AUTHORS diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 00000000..8052fd95 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,11 @@ +# The ZMK Project consists of many contributors. This file includes individuals +# who have contributed significant changes to the project. To be added to here, +# please submit a PR to the project repo. +Peter Johanson (@petejohanson) +Innovaker (@innovaker) +Nick Winans (@Nicell) +Okke Formsma (@okke-formsma) +Cody McGinnis (@BrainWart) +Kurtis Lew (@kurtis-lew) +Richard Jones (@bmcgavin) +Kevin Chen (@chenkevinh) \ No newline at end of file diff --git a/app/boards/arm/dz60rgb/Kconfig.board b/app/boards/arm/dz60rgb/Kconfig.board index a96271f0..ec8dad68 100644 --- a/app/boards/arm/dz60rgb/Kconfig.board +++ b/app/boards/arm/dz60rgb/Kconfig.board @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Nick Winans +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT config BOARD_DZ60RGB_REV1 diff --git a/app/boards/arm/dz60rgb/Kconfig.defconfig b/app/boards/arm/dz60rgb/Kconfig.defconfig index c97a3085..779d3123 100644 --- a/app/boards/arm/dz60rgb/Kconfig.defconfig +++ b/app/boards/arm/dz60rgb/Kconfig.defconfig @@ -1,6 +1,6 @@ # DZ60RGB keyboard configuration -# Copyright (c) 2020 Nick Winans +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT if BOARD_DZ60RGB_REV1 diff --git a/app/boards/arm/dz60rgb/dz60rgb_rev1.dts b/app/boards/arm/dz60rgb/dz60rgb_rev1.dts index dc1b6ea5..85c4ca56 100644 --- a/app/boards/arm/dz60rgb/dz60rgb_rev1.dts +++ b/app/boards/arm/dz60rgb/dz60rgb_rev1.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Nick Winans + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/arm/nrfmicro/Kconfig.board b/app/boards/arm/nrfmicro/Kconfig.board index 177373ab..36b2d55e 100644 --- a/app/boards/arm/nrfmicro/Kconfig.board +++ b/app/boards/arm/nrfmicro/Kconfig.board @@ -1,6 +1,6 @@ # nrfmicro board configuration -# Copyright (c) 2020 Okke Formsma, joric +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT config BOARD_NRFMICRO_11 diff --git a/app/boards/arm/nrfmicro/Kconfig.defconfig b/app/boards/arm/nrfmicro/Kconfig.defconfig index 9cce5a9b..7957b4a5 100644 --- a/app/boards/arm/nrfmicro/Kconfig.defconfig +++ b/app/boards/arm/nrfmicro/Kconfig.defconfig @@ -1,6 +1,6 @@ # Electronut Labs Papyr board configuration -# Copyright (c) 2020 Okke Formsma, joric +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT if BOARD_NRFMICRO_11 || BOARD_NRFMICRO_11_FLIPPED || BOARD_NRFMICRO_13 diff --git a/app/boards/arm/nrfmicro/arduino_pro_micro_pins.dtsi b/app/boards/arm/nrfmicro/arduino_pro_micro_pins.dtsi index 6cde2b49..558391dd 100644 --- a/app/boards/arm/nrfmicro/arduino_pro_micro_pins.dtsi +++ b/app/boards/arm/nrfmicro/arduino_pro_micro_pins.dtsi @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Okke Formsma, joric + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/arm/nrfmicro/arduino_pro_micro_pins_flipped.dtsi b/app/boards/arm/nrfmicro/arduino_pro_micro_pins_flipped.dtsi index 9bad7f4a..68ca266d 100644 --- a/app/boards/arm/nrfmicro/arduino_pro_micro_pins_flipped.dtsi +++ b/app/boards/arm/nrfmicro/arduino_pro_micro_pins_flipped.dtsi @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Okke Formsma, joric + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/arm/nrfmicro/nrfmicro_11.dts b/app/boards/arm/nrfmicro/nrfmicro_11.dts index dc07ac89..95bd8adc 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_11.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_11.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Okke Formsma, joric + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts b/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts index 5bf493f0..85693a8b 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Okke Formsma, joric + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/arm/nrfmicro/nrfmicro_13.dts b/app/boards/arm/nrfmicro/nrfmicro_13.dts index dc07ac89..95bd8adc 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_13.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Okke Formsma, joric + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/arm/nrfmicro/pinmux.c b/app/boards/arm/nrfmicro/pinmux.c index 3792b597..0536fe0d 100644 --- a/app/boards/arm/nrfmicro/pinmux.c +++ b/app/boards/arm/nrfmicro/pinmux.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Okke Formsma, joric + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/arm/planck/Kconfig.board b/app/boards/arm/planck/Kconfig.board index 09524489..fe15e1a9 100644 --- a/app/boards/arm/planck/Kconfig.board +++ b/app/boards/arm/planck/Kconfig.board @@ -1,6 +1,6 @@ # Planck V6 board configuration -# Copyright (c) 2020 Peter Johanson +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT config BOARD_PLANCK_REV6 diff --git a/app/boards/arm/planck/Kconfig.defconfig b/app/boards/arm/planck/Kconfig.defconfig index 93118d4f..6f5bf525 100644 --- a/app/boards/arm/planck/Kconfig.defconfig +++ b/app/boards/arm/planck/Kconfig.defconfig @@ -1,6 +1,6 @@ # Planck keyboard configuration -# Copyright (c) 2020 Peter Johanson +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT if BOARD_PLANCK_REV6 diff --git a/app/drivers/zephyr/ec11.c b/app/drivers/zephyr/ec11.c index 1bc5d6a6..dfa86efd 100644 --- a/app/drivers/zephyr/ec11.c +++ b/app/drivers/zephyr/ec11.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/drivers/zephyr/ec11.h b/app/drivers/zephyr/ec11.h index 823d92d8..27fed9bd 100644 --- a/app/drivers/zephyr/ec11.h +++ b/app/drivers/zephyr/ec11.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/drivers/zephyr/ec11_trigger.c b/app/drivers/zephyr/ec11_trigger.c index 709d1fbf..a04a5610 100644 --- a/app/drivers/zephyr/ec11_trigger.c +++ b/app/drivers/zephyr/ec11_trigger.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Intel Corporation + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/drivers/zephyr/kscan_gpio_direct.c b/app/drivers/zephyr/kscan_gpio_direct.c index a3aa8c46..6e6a01f3 100644 --- a/app/drivers/zephyr/kscan_gpio_direct.c +++ b/app/drivers/zephyr/kscan_gpio_direct.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index b19c4922..079a8309 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/dts/behaviors/toggle_layer.dtsi b/app/dts/behaviors/toggle_layer.dtsi index 86a050d9..40453962 100644 --- a/app/dts/behaviors/toggle_layer.dtsi +++ b/app/dts/behaviors/toggle_layer.dtsi @@ -1,10 +1,10 @@ /* - * Copyright (c) 2020 Cody McGinnis + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ - - / { + +/ { behaviors { tog: behavior_toggle_layer { compatible = "zmk,behavior-toggle-layer"; diff --git a/app/dts/bindings/behaviors/zmk,behavior-hold-tap.yaml b/app/dts/bindings/behaviors/zmk,behavior-hold-tap.yaml index a20578fa..5f74e9ad 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-hold-tap.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-hold-tap.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2020, Cody McGinnis; Okke Formsma +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT description: Hold or Tap behavior @@ -12,12 +12,12 @@ properties: type: phandles required: true tapping_term_ms: - type: int + type: int flavor: type: string required: false default: "hold-preferred" enum: - - "hold-preferred" - - "balanced" - - "tap-preferred" \ No newline at end of file + - "hold-preferred" + - "balanced" + - "tap-preferred" diff --git a/app/dts/bindings/behaviors/zmk,behavior-rgb-underglow.yaml b/app/dts/bindings/behaviors/zmk,behavior-rgb-underglow.yaml index 6b6d5b00..2cb74b9c 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-rgb-underglow.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-rgb-underglow.yaml @@ -1,8 +1,8 @@ -# Copyright (c) 2020, Nick Winans +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT description: RGB Underglow Action compatible: "zmk,behavior-rgb-underglow" -include: one_param.yaml \ No newline at end of file +include: one_param.yaml diff --git a/app/dts/bindings/behaviors/zmk,behavior-toggle-layer.yaml b/app/dts/bindings/behaviors/zmk,behavior-toggle-layer.yaml index 065949fe..0a9723f7 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-toggle-layer.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-toggle-layer.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2020, Cody McGinnis +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT description: Toggle Layer diff --git a/app/include/drivers/behavior.h b/app/include/drivers/behavior.h index c24d11b3..617b5ab5 100644 --- a/app/include/drivers/behavior.h +++ b/app/include/drivers/behavior.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/dt-bindings/zmk/reset.h b/app/include/dt-bindings/zmk/reset.h index b5136492..683f9658 100644 --- a/app/include/dt-bindings/zmk/reset.h +++ b/app/include/dt-bindings/zmk/reset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/linker/zmk-events.ld b/app/include/linker/zmk-events.ld index 44063be0..78d00bb7 100644 --- a/app/include/linker/zmk-events.ld +++ b/app/include/linker/zmk-events.ld @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/behavior.h b/app/include/zmk/behavior.h index 63edcc9e..6f5815f1 100644 --- a/app/include/zmk/behavior.h +++ b/app/include/zmk/behavior.h @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #pragma once diff --git a/app/include/zmk/ble.h b/app/include/zmk/ble.h index e760ed70..d0aaa96b 100644 --- a/app/include/zmk/ble.h +++ b/app/include/zmk/ble.h @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #pragma once diff --git a/app/include/zmk/display.h b/app/include/zmk/display.h index 93ac3ffd..def43920 100644 --- a/app/include/zmk/display.h +++ b/app/include/zmk/display.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/endpoints.h b/app/include/zmk/endpoints.h index 4c0f4425..aad6265b 100644 --- a/app/include/zmk/endpoints.h +++ b/app/include/zmk/endpoints.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once #include diff --git a/app/include/zmk/event-manager.h b/app/include/zmk/event-manager.h index d9a56a4f..9da66029 100644 --- a/app/include/zmk/event-manager.h +++ b/app/include/zmk/event-manager.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h index e12813c7..fc37946b 100644 --- a/app/include/zmk/events/keycode-state-changed.h +++ b/app/include/zmk/events/keycode-state-changed.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/events/modifiers-state-changed.h b/app/include/zmk/events/modifiers-state-changed.h index a17a0931..b39e11e0 100644 --- a/app/include/zmk/events/modifiers-state-changed.h +++ b/app/include/zmk/events/modifiers-state-changed.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/events/position-state-changed.h b/app/include/zmk/events/position-state-changed.h index c91688ee..f88080d2 100644 --- a/app/include/zmk/events/position-state-changed.h +++ b/app/include/zmk/events/position-state-changed.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/events/sensor-event.h b/app/include/zmk/events/sensor-event.h index f881ac5c..a9302a5c 100644 --- a/app/include/zmk/events/sensor-event.h +++ b/app/include/zmk/events/sensor-event.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/handlers.h b/app/include/zmk/handlers.h index a10851f8..7ce1d27e 100644 --- a/app/include/zmk/handlers.h +++ b/app/include/zmk/handlers.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once #include diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index 138606a5..a945e729 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once #include diff --git a/app/include/zmk/hog.h b/app/include/zmk/hog.h index e2f976a2..a7dda515 100644 --- a/app/include/zmk/hog.h +++ b/app/include/zmk/hog.h @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #pragma once diff --git a/app/include/zmk/keymap.h b/app/include/zmk/keymap.h index c1f63932..61925878 100644 --- a/app/include/zmk/keymap.h +++ b/app/include/zmk/keymap.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once bool zmk_keymap_layer_active(u8_t layer); diff --git a/app/include/zmk/keys.h b/app/include/zmk/keys.h index 6966bbac..ee9c3d93 100644 --- a/app/include/zmk/keys.h +++ b/app/include/zmk/keys.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once #include diff --git a/app/include/zmk/kscan.h b/app/include/zmk/kscan.h index ebffccda..33526008 100644 --- a/app/include/zmk/kscan.h +++ b/app/include/zmk/kscan.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once int zmk_kscan_init(char *name); diff --git a/app/include/zmk/matrix.h b/app/include/zmk/matrix.h index 30882638..16143176 100644 --- a/app/include/zmk/matrix.h +++ b/app/include/zmk/matrix.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once #include diff --git a/app/include/zmk/matrix_transform.h b/app/include/zmk/matrix_transform.h index e9e969a4..29c2afcd 100644 --- a/app/include/zmk/matrix_transform.h +++ b/app/include/zmk/matrix_transform.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once u32_t zmk_matrix_transform_row_column_to_position(u32_t row, u32_t column); \ No newline at end of file diff --git a/app/include/zmk/rgb_underglow.h b/app/include/zmk/rgb_underglow.h index 69e9a9bb..94cc32cc 100644 --- a/app/include/zmk/rgb_underglow.h +++ b/app/include/zmk/rgb_underglow.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Nick Winans + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/sensors.h b/app/include/zmk/sensors.h index c60cd4be..63dcade0 100644 --- a/app/include/zmk/sensors.h +++ b/app/include/zmk/sensors.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/usb_hid.h b/app/include/zmk/usb_hid.h index 5d7c744a..7ee26298 100644 --- a/app/include/zmk/usb_hid.h +++ b/app/include/zmk/usb_hid.h @@ -1,5 +1,10 @@ -#ifndef ZMK_USB_HID -#define ZMK_USB_HID +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#pragma once #include #include @@ -10,5 +15,3 @@ int zmk_usb_hid_init(); int zmk_usb_hid_send_report(u8_t *report, size_t len); - -#endif diff --git a/app/run-test.sh b/app/run-test.sh index be335c62..3b7cd589 100755 --- a/app/run-test.sh +++ b/app/run-test.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) 2020 Peter Johanson; Cody McGinnis +# Copyright (c) 2020 The ZMK Contributors # # SPDX-License-Identifier: MIT # diff --git a/app/src/behaviors/behavior_hold_tap.c b/app/src/behaviors/behavior_hold_tap.c index 2c6d996e..dce724d9 100644 --- a/app/src/behaviors/behavior_hold_tap.c +++ b/app/src/behaviors/behavior_hold_tap.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Cody McGinnis, Okke Formsma + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_key_press.c b/app/src/behaviors/behavior_key_press.c index 7404c798..42becf50 100644 --- a/app/src/behaviors/behavior_key_press.c +++ b/app/src/behaviors/behavior_key_press.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_momentary_layer.c b/app/src/behaviors/behavior_momentary_layer.c index 8a8584a9..7d651354 100644 --- a/app/src/behaviors/behavior_momentary_layer.c +++ b/app/src/behaviors/behavior_momentary_layer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_none.c b/app/src/behaviors/behavior_none.c index e822d5e1..c4649882 100644 --- a/app/src/behaviors/behavior_none.c +++ b/app/src/behaviors/behavior_none.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_reset.c b/app/src/behaviors/behavior_reset.c index 30a96ea8..b5692b50 100644 --- a/app/src/behaviors/behavior_reset.c +++ b/app/src/behaviors/behavior_reset.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_rgb_underglow.c b/app/src/behaviors/behavior_rgb_underglow.c index 7a48e070..f0a35ef8 100644 --- a/app/src/behaviors/behavior_rgb_underglow.c +++ b/app/src/behaviors/behavior_rgb_underglow.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Nick Winans + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_sensor_rotate_key_press.c b/app/src/behaviors/behavior_sensor_rotate_key_press.c index fb0fb852..fa555752 100644 --- a/app/src/behaviors/behavior_sensor_rotate_key_press.c +++ b/app/src/behaviors/behavior_sensor_rotate_key_press.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_toggle_layer.c b/app/src/behaviors/behavior_toggle_layer.c index 02a76d29..c6d52251 100644 --- a/app/src/behaviors/behavior_toggle_layer.c +++ b/app/src/behaviors/behavior_toggle_layer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Cody McGinnis + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_transparent.c b/app/src/behaviors/behavior_transparent.c index 5109264a..51f682b5 100644 --- a/app/src/behaviors/behavior_transparent.c +++ b/app/src/behaviors/behavior_transparent.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/ble.c b/app/src/ble.c index 0e96d16a..c4d3efd5 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/ble_unpair_combo.c b/app/src/ble_unpair_combo.c index 82fa8342..3633a5b0 100644 --- a/app/src/ble_unpair_combo.c +++ b/app/src/ble_unpair_combo.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/display.c b/app/src/display.c index 9021914f..dca462e4 100644 --- a/app/src/display.c +++ b/app/src/display.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/endpoints.c b/app/src/endpoints.c index c9ba7169..61e86cee 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #include #include diff --git a/app/src/event_manager.c b/app/src/event_manager.c index 47ad6b73..6d37e4e6 100644 --- a/app/src/event_manager.c +++ b/app/src/event_manager.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/events/keycode_state_changed.c b/app/src/events/keycode_state_changed.c index 73508e16..9a1984a3 100644 --- a/app/src/events/keycode_state_changed.c +++ b/app/src/events/keycode_state_changed.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/events/modifiers_state_changed.c b/app/src/events/modifiers_state_changed.c index 71ec015b..8becd02f 100644 --- a/app/src/events/modifiers_state_changed.c +++ b/app/src/events/modifiers_state_changed.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/events/position_state_changed.c b/app/src/events/position_state_changed.c index 69cba03c..f8f1a268 100644 --- a/app/src/events/position_state_changed.c +++ b/app/src/events/position_state_changed.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/events/sensor_event.c b/app/src/events/sensor_event.c index 1b0302dd..c6b80cd6 100644 --- a/app/src/events/sensor_event.c +++ b/app/src/events/sensor_event.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/hid.c b/app/src/hid.c index ca040562..07fc3a0b 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); diff --git a/app/src/hid_listener.c b/app/src/hid_listener.c index 69aa23e7..9f68ca20 100644 --- a/app/src/hid_listener.c +++ b/app/src/hid_listener.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/hog.c b/app/src/hog.c index 589c28ff..92858d56 100644 --- a/app/src/hog.c +++ b/app/src/hog.c @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #include #include diff --git a/app/src/keymap.c b/app/src/keymap.c index 57cdad6e..b1c68f1e 100644 --- a/app/src/keymap.c +++ b/app/src/keymap.c @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #include #include diff --git a/app/src/kscan.c b/app/src/kscan.c index 63713f1f..7a4d3a49 100644 --- a/app/src/kscan.c +++ b/app/src/kscan.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/kscan_composite.c b/app/src/kscan_composite.c index d46484b7..15527ebe 100644 --- a/app/src/kscan_composite.c +++ b/app/src/kscan_composite.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/kscan_mock.c b/app/src/kscan_mock.c index d626c71e..741f6c17 100644 --- a/app/src/kscan_mock.c +++ b/app/src/kscan_mock.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/main.c b/app/src/main.c index 5a678ee0..5da272e5 100644 --- a/app/src/main.c +++ b/app/src/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/matrix_transform.c b/app/src/matrix_transform.c index 7ecf1ae0..8a037b34 100644 --- a/app/src/matrix_transform.c +++ b/app/src/matrix_transform.c @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #include #include diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 95adcec2..97c2ac0a 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Nick Winans + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/sensors.c b/app/src/sensors.c index 501ce15b..7a7c0c5b 100644 --- a/app/src/sensors.c +++ b/app/src/sensors.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/split/bluetooth/central.c b/app/src/split/bluetooth/central.c index 237096fd..9e67228e 100644 --- a/app/src/split/bluetooth/central.c +++ b/app/src/split/bluetooth/central.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/split/bluetooth/service.c b/app/src/split/bluetooth/service.c index e1d232a4..0a5ddb7a 100644 --- a/app/src/split/bluetooth/service.c +++ b/app/src/split/bluetooth/service.c @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #include #include diff --git a/app/src/split_listener.c b/app/src/split_listener.c index 65f835a2..46a95e14 100644 --- a/app/src/split_listener.c +++ b/app/src/split_listener.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/usb_hid.c b/app/src/usb_hid.c index 784fc250..e2fe0f3d 100644 --- a/app/src/usb_hid.c +++ b/app/src/usb_hid.c @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #include #include From 073f5c8b98c5111d954fe5bfe98951b24983449d Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Thu, 10 Sep 2020 18:40:07 -0700 Subject: [PATCH 039/353] Added File Transfer Error/CMake Warning Docs --- .../troubleshooting/filetransfer/linux.png | Bin 0 -> 40111 bytes .../troubleshooting/filetransfer/windows.png | Bin 0 -> 12077 bytes docs/docs/troubleshooting.md | 31 +++++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 docs/docs/assets/troubleshooting/filetransfer/linux.png create mode 100644 docs/docs/assets/troubleshooting/filetransfer/windows.png diff --git a/docs/docs/assets/troubleshooting/filetransfer/linux.png b/docs/docs/assets/troubleshooting/filetransfer/linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c192dfab8fe4cf1de2d9324fde1eebdc3789900c GIT binary patch literal 40111 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 HgJ1s*xk{lE literal 0 HcmV?d00001 diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index cd8bfd64..4820e116 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -7,11 +7,40 @@ sidebar_title: Troubleshooting The following page provides suggestions for common errors that may occur during firmware compilation. If the information provided is insufficient to resolve the issue, feel free to seek out help from the [ZMK Discord](https://zmkfirmware.dev/community/discord/invite). +### File Transfer Error + +Variations of the warnings shown below occur when flashing the `.uf2` onto the microcontroller. This is because the microcontroller resets itself before the OS receives confirmation that the file transfer is complete. Errors like this are normal and can generally be ignored. Verification of a functional board can be done by attempting to pair your computer to your newly flashed keyboard via Bluetooth or plugging in a USB cable if `ZMK_USB` is enabled in your Kconfig.defconfig. + +| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/windows.png) | +| :-------------------------------------------------------------------------------: | +| An example of the file transfer error on Windows 10 | + +| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/linux.png) | +| :-------------------------------------------------------------------------------: | +| An example of the file transfer error on Linux | + + ### CMake Error -An error along the lines of `CMake Error at (zmk directory)/zephyr/cmake/generic_toolchain.cmake:64 (include): include could not find load file:` during firmware compilation indicates that the Zephyr Environment Variables are not properly defined. +``` +CMake Warning at C:/zmk/zephyr/subsys/usb/CMakeLists.txt:28 (message): + CONFIG_USB_DEVICE_VID has default value 0x2FE3. + + This value is only for testing and MUST be configured for USB products. + + +CMake Warning at C:/zmk/zephyr/subsys/usb/CMakeLists.txt:34 (message): + CONFIG_USB_DEVICE_PID has default value 0x100. + + This value is only for testing and MUST be configured for USB products. +``` + +CMake Warnings shown above during `west build` are normal occurrences. They should not negatively affect the firmware's ability to function as normal. + +On the other hand, an error along the lines of `CMake Error at (zmk directory)/zephyr/cmake/generic_toolchain.cmake:64 (include): include could not find load file:` during firmware compilation indicates that the Zephyr Environment Variables are not properly defined. For more information, click [here](../docs/dev-setup#environment-variables). + ### dtlib.DTError An error along the lines of `dtlib.DTError: .dts.pre.tmp:` during firmware compilation indicates an issue within the `.keymap` file. From 5b38fcff71a0e22407dbd418fb1900614ecbfb6f Mon Sep 17 00:00:00 2001 From: Kurtis Lew Date: Thu, 10 Sep 2020 18:44:39 -0700 Subject: [PATCH 040/353] Reversed pairing instructions --- docs/docs/troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index 4820e116..deb89b64 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -9,7 +9,7 @@ The following page provides suggestions for common errors that may occur during ### File Transfer Error -Variations of the warnings shown below occur when flashing the `.uf2` onto the microcontroller. This is because the microcontroller resets itself before the OS receives confirmation that the file transfer is complete. Errors like this are normal and can generally be ignored. Verification of a functional board can be done by attempting to pair your computer to your newly flashed keyboard via Bluetooth or plugging in a USB cable if `ZMK_USB` is enabled in your Kconfig.defconfig. +Variations of the warnings shown below occur when flashing the `.uf2` onto the microcontroller. This is because the microcontroller resets itself before the OS receives confirmation that the file transfer is complete. Errors like this are normal and can generally be ignored. Verification of a functional board can be done by attempting to pair your newly flashed keyboard to your computer via Bluetooth or plugging in a USB cable if `ZMK_USB` is enabled in your Kconfig.defconfig. | ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/windows.png) | | :-------------------------------------------------------------------------------: | From 89ba824b2b28d4fdbd174ba20b1183d6547c19f8 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 11:04:58 +0530 Subject: [PATCH 041/353] typo --- docs/docs/user-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index 2aade829..c2071363 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -179,7 +179,7 @@ storage device. Once the flash is complete, the controller should automatically ## Wirelessly Connecting Your Keyboard -Connecting your keyboard wirelessly is the same as adding other Bluetooth devides: press the reset button and scan for devices. However, pairing and bonding is still currently being worked on to increase relability and ease of use. In addition, users have in general reported that Bluetooth pairing with computers tends to be quite finnicky. Try out the connection with your tablet or phone first, as those devices seem to work much more consistently. See [BLE Reset](./bond-reset.md) for help on resetting your MCUs if you're experiencing connection issues. +Connecting your keyboard wirelessly is the same as adding other Bluetooth devices: press the reset button and scan for devices. However, pairing and bonding is still currently being worked on to increase relability and ease of use. In addition, users have in general reported that Bluetooth pairing with computers tends to be quite finnicky. Try out the connection with your tablet or phone first, as those devices seem to work much more consistently. See [BLE Reset](./bond-reset.md) for help on resetting your MCUs if you're experiencing connection issues. ### Connecting Split Keyboard Halves From cd00c0aad41e4aad369bbc12f68b888ab2d9ddd4 Mon Sep 17 00:00:00 2001 From: Cody McGinnis Date: Fri, 11 Sep 2020 02:28:55 -0400 Subject: [PATCH 042/353] fix(docs): Fix the example mod tap configuration --- docs/docs/behavior/mod-tap.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/behavior/mod-tap.md b/docs/docs/behavior/mod-tap.md index dcac4920..068928ad 100644 --- a/docs/docs/behavior/mod-tap.md +++ b/docs/docs/behavior/mod-tap.md @@ -31,8 +31,8 @@ You can configure a different tapping term in your keymap: ``` &mt { - tapping_term_ms: <400>; -} + tapping_term_ms = <400>; +}; / { keymap { From ce862d148db09ed318c9d592bef4e29f59949b5e Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 19:47:20 +0530 Subject: [PATCH 043/353] Delete pro-micro-labelled-image.jpg --- docs/docs/pro-micro-labelled-image.jpg | Bin 115573 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/docs/pro-micro-labelled-image.jpg diff --git a/docs/docs/pro-micro-labelled-image.jpg b/docs/docs/pro-micro-labelled-image.jpg deleted file mode 100644 index f72d407719e9ff4d20ed45d93d12dead8caa9da5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115573 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 DB^7&W From 69e6a99180b51c0d9bdca44741e71e54a162bf14 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 19:49:46 +0530 Subject: [PATCH 044/353] Add files via upload --- .../pro-micro/pro-micro-pins-labelled.jpg | Bin 0 -> 115573 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg diff --git a/docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg b/docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f72d407719e9ff4d20ed45d93d12dead8caa9da5 GIT binary patch literal 115573 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 DB^7&W literal 0 HcmV?d00001 From e660e56dfb428d58d6c6548ac804c8933495c22d Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 19:52:32 +0530 Subject: [PATCH 045/353] Update dev-boards-shields-keymaps.md --- docs/docs/dev-boards-shields-keymaps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev-boards-shields-keymaps.md b/docs/docs/dev-boards-shields-keymaps.md index 17a38473..9ed5a328 100644 --- a/docs/docs/dev-boards-shields-keymaps.md +++ b/docs/docs/dev-boards-shields-keymaps.md @@ -35,7 +35,7 @@ in the `app/boards/${arch}/${board_name}` directory, e.g. `app/boards/arm/planck ## Pro Micro Compatible Keyboard -![Labelled Pro Micro pins](pro-micro-labelled-image.jpg) +![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) For keyboards that require a (usually Pro Micro compatible) add-on board to operate, the ZMK integration pieces are places in the _shield_ definition for that keyboard, allowing users to From 4ce70831dddfbe1c8fda8d23086388ad36a421a5 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 19:54:03 +0530 Subject: [PATCH 046/353] Update dev-guide-new-shield.md --- docs/docs/dev-guide-new-shield.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 23d2387d..832519d8 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -64,7 +64,7 @@ endif ## Shield Overlay -![Labelled Pro Micro pins](pro-micro-labelled-image.jpg) +![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the [chosen]() node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, this might look something like: From c20eb9abac1797ff94012863d2bec582b68e6ded Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 20:01:46 +0530 Subject: [PATCH 047/353] Update hold-tap.md --- docs/docs/behavior/hold-tap.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index fa68538b..6790e882 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -56,7 +56,7 @@ A code example which configures a mod-tap setting that works with homerow mods: If this config does not work for you, try the flavor "tap-preferred" and a short tapping_term_ms such as 120ms. -If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. +If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter. For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. #### Note -Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. \ No newline at end of file +Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. From 6d7fb6c48dcd62c9d436c08f545f065bb41f810f Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 20:10:23 +0530 Subject: [PATCH 048/353] Update dev-clean-room.md --- docs/docs/dev-clean-room.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev-clean-room.md b/docs/docs/dev-clean-room.md index c11171c8..89e9826d 100644 --- a/docs/docs/dev-clean-room.md +++ b/docs/docs/dev-clean-room.md @@ -11,7 +11,7 @@ Anyone wanting to contribute code to ZMK _must_ read this, and adhere to the ste ::: ZMK Firmware is a [clean room design](https://en.wikipedia.org/wiki/Clean_room_design) keyboard firmware, that -borrows/implements a lot of the features found in popular keyboard firmwares projects like [QMK](https://qmk.fm) +borrows/implements a lot of the features found in popular keyboard firmware projects like [QMK](https://qmk.fm) and [TMK](https://github.com/tmk/tmk_keyboard). However, in order for ZMK to use the MIT, it _must_ not incorporate any of the GPL licensed code from those projects. From 178e5e5afbf5d9b4dabb1a247f36714f5234ad29 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 20:37:05 +0530 Subject: [PATCH 049/353] Reverting provious commit --- docs/docs/behavior/hold-tap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index 6790e882..ab510223 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -56,7 +56,7 @@ A code example which configures a mod-tap setting that works with homerow mods: If this config does not work for you, try the flavor "tap-preferred" and a short tapping_term_ms such as 120ms. -If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter. For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. +If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. #### Note Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. From 7f5235904a5c49cc79875541d313317c9c6856c0 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 20:37:57 +0530 Subject: [PATCH 050/353] Reverting previous commit --- docs/docs/dev-clean-room.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev-clean-room.md b/docs/docs/dev-clean-room.md index 89e9826d..c11171c8 100644 --- a/docs/docs/dev-clean-room.md +++ b/docs/docs/dev-clean-room.md @@ -11,7 +11,7 @@ Anyone wanting to contribute code to ZMK _must_ read this, and adhere to the ste ::: ZMK Firmware is a [clean room design](https://en.wikipedia.org/wiki/Clean_room_design) keyboard firmware, that -borrows/implements a lot of the features found in popular keyboard firmware projects like [QMK](https://qmk.fm) +borrows/implements a lot of the features found in popular keyboard firmwares projects like [QMK](https://qmk.fm) and [TMK](https://github.com/tmk/tmk_keyboard). However, in order for ZMK to use the MIT, it _must_ not incorporate any of the GPL licensed code from those projects. From 98bd4796cfa3888e0f91d295599e42524e8e07db Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 20:40:19 +0530 Subject: [PATCH 051/353] Reverting previous commit --- docs/docs/user-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index c2071363..2aade829 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -179,7 +179,7 @@ storage device. Once the flash is complete, the controller should automatically ## Wirelessly Connecting Your Keyboard -Connecting your keyboard wirelessly is the same as adding other Bluetooth devices: press the reset button and scan for devices. However, pairing and bonding is still currently being worked on to increase relability and ease of use. In addition, users have in general reported that Bluetooth pairing with computers tends to be quite finnicky. Try out the connection with your tablet or phone first, as those devices seem to work much more consistently. See [BLE Reset](./bond-reset.md) for help on resetting your MCUs if you're experiencing connection issues. +Connecting your keyboard wirelessly is the same as adding other Bluetooth devides: press the reset button and scan for devices. However, pairing and bonding is still currently being worked on to increase relability and ease of use. In addition, users have in general reported that Bluetooth pairing with computers tends to be quite finnicky. Try out the connection with your tablet or phone first, as those devices seem to work much more consistently. See [BLE Reset](./bond-reset.md) for help on resetting your MCUs if you're experiencing connection issues. ### Connecting Split Keyboard Halves From 54437db0ba2809de5ef0b987f59cfe47c486c669 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 20:42:33 +0530 Subject: [PATCH 052/353] Update with the examples --- docs/docs/dev-guide-new-shield.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 832519d8..6140b078 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -66,6 +66,8 @@ endif ![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) +ZMK uses the green color coded pin names to generate devicetree node references. For example, to refer to the node `D0` in the devicetree files, use `&pro_micro_d 0` or to refer to `A1`, use `&pro_micro_a 1`. + The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the [chosen]() node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, this might look something like: From 394bf7808745726df0440cfbd70e9f4487dfca9a Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 23:31:38 +0530 Subject: [PATCH 053/353] Reverting unwanted changes From 2e1bf46892881cf0e31f593ad5a2290083a3c633 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 23:35:57 +0530 Subject: [PATCH 054/353] Update hold-tap.md From c38d3dd849a29b786b8b6683dd627e7b27ef8ee6 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 23:39:29 +0530 Subject: [PATCH 055/353] Update hold-tap.md From 223a19cb0472d453fbe734b37a8ac59a82f61c67 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 23:45:29 +0530 Subject: [PATCH 056/353] Update hold-tap.md From ce8ade4afaa4cc9fc2b94050e98680301e539e56 Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 23:48:53 +0530 Subject: [PATCH 057/353] A bad commit --- docs/docs/behavior/hold-tap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index ab510223..d51edd31 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -59,4 +59,4 @@ If this config does not work for you, try the flavor "tap-preferred" and a short If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. #### Note -Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. +Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT` From e11cad9fde0e90a47c9b09f66c612ee946f597cf Mon Sep 17 00:00:00 2001 From: Mamoor Jaan Khan <56243233+LowNightSnack@users.noreply.github.com> Date: Fri, 11 Sep 2020 23:49:12 +0530 Subject: [PATCH 058/353] Update hold-tap.md --- docs/docs/behavior/hold-tap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index d51edd31..ab510223 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -59,4 +59,4 @@ If this config does not work for you, try the flavor "tap-preferred" and a short If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. #### Note -Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT` +Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. From 595dff68710f7f58e7e257c3d060e80e413dfb87 Mon Sep 17 00:00:00 2001 From: CrossR Date: Sun, 13 Sep 2020 18:07:45 +0100 Subject: [PATCH 059/353] Add PowerShell script and tidy up bash script. --- docs/static/setup.ps1 | 176 ++++++++++++++++++++++++++++++++++++++++++ docs/static/setup.sh | 64 ++++++++------- 2 files changed, 213 insertions(+), 27 deletions(-) create mode 100644 docs/static/setup.ps1 diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 new file mode 100644 index 00000000..acda1944 --- /dev/null +++ b/docs/static/setup.ps1 @@ -0,0 +1,176 @@ +$ErrorActionPreference = "Stop" + +function Get-Choice-From-Options { + param( + [String[]] $Options, + [String] $Prompt + ) + + while ($true) { + for ($i = 0; $i -lt $Options.length; $i++) { + Write-Host "$($i + 1)) $($Options[$i])" + } + + Write-Host "$($Options.length + 1)) Quit" + $selection = Read-Host $Prompt + + if ($selection -eq $Options.length + 1) { + Write-Host "Goodbye!" + exit + } + elseif ($selection -le $Options.length) { + $choice = $($selection - 1) + break + } + else { + Write-Host "Invalid Option. Try another one." + } + } + + return $choice +} + +function Test-Git-Config { + param( + [String] $Option, + [String] $ErrMsg + ) + + git config $Option | Out-Null + + if ($lastExitCode -ne 0) { + Write-Host $ErrMsg + exit + } +} + +try { + git | Out-Null +} +catch [System.Management.Automation.CommandNotFoundException] { + Write-Host "Git is not installed, and is required for this script!" + exit +} + +Test-Git-Config -Option "user.name" -ErrMsg "Git username not set!`nRun: git config --global user.name 'My Name'" +Test-Git-Config -Option "user.email" -ErrMsg "Git email not set!`nRun: git config --global user.name 'example@myemail.com'" + +$repo_path = "https://github.com/zmkfirmware/zmk-config-split-template.git" + +$title = "ZMK Config Setup:" +$prompt = "Pick an MCU board" +$options = "nice!nano", "QMK Proton-C", "BlueMicro840 (v1)" +$boards = "nice_nano", "proton_c", "bluemicro840_v1" + +Write-Host "$title" +Write-Host "" +Write-Host "MCU Board Selection:" + +$choice = Get-Choice-From-Options -Options $options -Prompt $prompt +$board = $($boards[$choice]) + +Write-Host "" +Write-Host "Keyboard Shield Selection:" +$prompt = "Pick a keyboard" + +# TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. +$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac" +$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac" +$splits = "y", "y", "y", "y", "y", "y", "n" + +$choice = Get-Choice-From-Options -Options $options -Prompt $prompt +$shield_title = $($options[$choice]) +$shield = $($names[$choice]) +$split = $($splits[$choice]) + +if ($split -eq "n") { + $repo_path = "https://github.com/zmkfirmware/zmk-config-template.git" +} + +$copy_keymap = Read-Host "Copy in the stock keymap for customisation? [Yn]" + +if ($copy_keymap -eq "" -or $copy_keymap -eq "Y" -or $copy_keymap -eq "y") { + $copy_keymap = "yes" +} + +$github_user = Read-Host "GitHub Username (leave empty to skip GitHub repo creation)" + +if ($github_user -ne "") { + $repo_name = Read-Host "GitHub Repo Name [zmk-config]" + + if ($repo_name -eq "") { + $repo_name = "zmk-config" + } + + $github_repo = Read-Host "GitHub Repo [https://github.com/$github_user/$repo_name.git]" + + if ($github_repo -eq "") { + $github_repo = "https://github.com/$github_user/$repo_name.git" + } +} +else { + $repo_name = "zmk-config" + $github_repo = "" +} + +Write-Host "" +Write-Host "Preparing a user config for:" +Write-Host "* MCU Board: ${board}" +Write-Host "* Shield: ${shield}" + +if ($copy_keymap -eq "yes") { + Write-Host "* Copy Keymap?: Yes" +} +else { + Write-Host "* Copy Keymap?: No" +} + +if ($github_repo -ne "") { + Write-Host "* GitHub Repo to Push (please create this in GH first!): $github_repo" +} + +Write-Host "" +$do_it = Read-Host "Continue? [Yn]" + +if ($do_it -ne "" -and $do_it -ne "Y" -and $do_it -ne "y") { + Write-Host "Aborting..." + exit +} + +git clone --single-branch "$repo_path" "$repo_name" +Set-Location "$repo_name" + +Push-Location config + +Invoke-RestMethod -Uri "https://raw.githubusercontent.com/zmkfirmware/zmk/main/app/boards/shields/${shield}/${shield}.conf" -OutFile "${shield}.conf" + +if ($copy_keymap -eq "yes") { + Invoke-RestMethod -Uri "https://raw.githubusercontent.com/zmkfirmware/zmk/main/app/boards/shields/${shield}/${shield}.keymap" -OutFile "${shield}.keymap" +} + +Pop-Location + +$build_file = (Get-Content .github/workflows/build.yml).replace("BOARD_NAME", $board) +$build_file = $build_file.replace("SHIELD_NAME", $shield) +$build_file = $build_file.replace("KEYBOARD_TITLE", $shield_title) + +if ($board -eq "proton_c") { + $build_file = $build_file.replace("uf2", "hex") +} + +Set-Content -Path .github/workflows/build.yml -Value $build_file + +Remove-Item -Recurse -Force .git +git init . +git add . +git commit -m "Initial User Config." + +if ($github_repo -ne "") { + git remote add origin "$github_repo" + git push --set-upstream origin $(git symbolic-ref --short HEAD) + + if ($github_repo -imatch "https") { + $actions = "$($github_repo.substring(0, $github_repo.length - 4))/actions" + Write-Host "Your firmware should be availalbe from the GitHub Actions shortly: $actions" + } +} diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 5d203a4c..b3c14f77 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -1,15 +1,26 @@ -#!/bin/sh +#!/bin/bash set -e +CheckExists() { + command_to_run=$1 + error_message=$2 + + if ! eval "$command_to_run" &> /dev/null; then + printf "%s\n" "$error_message" + exit + fi +} + +CheckExists "command -v git" "git is not installed, and is required for this script!" +CheckExists "command -v curl" "curl is not installed, and is required for this script!" + +CheckExists "git config user.name" "Git username not set!\nRun: git config --global user.name 'My Name'" +CheckExists "git config user.email" "Git email not set!\nRun: git config --global user.email 'example@myemail.com'" + repo_path="https://github.com/zmkfirmware/zmk-config-split-template.git" title="ZMK Config Setup:" - -# TODO: Check for git being installed -# TODO: Check for curl being installed -# TODO: Check for user.name and user.email git configs being set - prompt="Pick an MCU board:" options=("nice!nano" "QMK Proton-C" "BlueMicro840 (v1)") @@ -31,9 +42,6 @@ select opt in "${options[@]}" "Quit"; do esac done -#read -p "Is this board a complete keyboard [yN]: " complete -#echo "$complete" - echo "" echo "Keyboard Shield Selection:" @@ -67,41 +75,43 @@ if [ "$split" == "n" ]; then repo_path="https://github.com/zmkfirmware/zmk-config-template.git" fi -read -e -p "Copy in the stock keymap for customization? [Yn]: " copy_keymap +read -r -e -p "Copy in the stock keymap for customization? [Yn]: " copy_keymap if [ -z "$copy_keymap" ] || [ "$copy_keymap" == "Y" ] || [ "$copy_keymap" == "y" ]; then copy_keymap="yes"; fi -read -e -p "GitHub Username (leave empty to skip GitHub repo creation): " github_user +read -r -e -p "GitHub Username (leave empty to skip GitHub repo creation): " github_user if [ -n "$github_user" ]; then - read -p "GitHub Repo Name [zmk-config]: " repo_name - if [ -z "$repo_name" ]; then repo_name="zmk-config"; fi + read -r -p "GitHub Repo Name [zmk-config]: " repo_name + if [ -z "$repo_name" ]; then repo_name="zmk-config"; fi - read -p "GitHub Repo [https://github.com/${github_user}/${repo_name}.git]: " github_repo + read -r -p "GitHub Repo [https://github.com/${github_user}/${repo_name}.git]: " github_repo - if [ -z "$github_repo" ]; then github_repo="https://github.com/${github_user}/${repo_name}.git"; fi + if [ -z "$github_repo" ]; then github_repo="https://github.com/${github_user}/${repo_name}.git"; fi else - repo_name="zmk-config" + repo_name="zmk-config" fi echo "" echo "Preparing a user config for:" echo "* MCU Board: ${board}" echo "* Shield: ${shield}" + if [ "$copy_keymap" == "yes" ]; then echo "* Copy Keymap?: ✓" else echo "* Copy Keymap?: ❌" fi + if [ -n "$github_repo" ]; then - echo "* GitHub Repo To Push (please create this in GH first!): ${github_repo}" + echo "* GitHub Repo To Push (please create this in GH first!): ${github_repo}" fi echo "" -read -p "Continue? [Yn]: " do_it +read -r -p "Continue? [Yn]: " do_it if [ -n "$do_it" ] && [ "$do_it" != "y" ] && [ "$do_it" != "Y" ]; then - echo "Aborting..." - exit + echo "Aborting..." + exit fi git clone --single-branch $repo_path ${repo_name} @@ -118,10 +128,10 @@ fi popd sed -i'.orig' \ - -e "s/BOARD_NAME/$board/" \ - -e "s/SHIELD_NAME/$shield/" \ - -e "s/KEYBOARD_TITLE/$shield_title/" \ - .github/workflows/build.yml + -e "s/BOARD_NAME/$board/" \ + -e "s/SHIELD_NAME/$shield/" \ + -e "s/KEYBOARD_TITLE/$shield_title/" \ + .github/workflows/build.yml if [ "$board" == "proton_c" ]; then # Proton-C board still fa @@ -136,11 +146,11 @@ git add . git commit -m "Initial User Config." if [ -n "$github_repo" ]; then - git remote add origin "$github_repo" - git push --set-upstream origin $(git symbolic-ref --short HEAD) + git remote add origin "$github_repo" + git push --set-upstream origin "$(git symbolic-ref --short HEAD)" # TODO: Support determing the actions URL when non-https:// repo URL is used. if [ "${github_repo}" != "${github_repo#https://}" ]; then - echo "Your firmware should be available from the GitHub Actions shortly: ${github_url%.git}/actions" + echo "Your firmware should be available from the GitHub Actions shortly: ${github_repo%.git}/actions" fi fi From 763d62f6f292bec20bd183f9ba4d0da65fb3f7b5 Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Fri, 4 Sep 2020 20:57:11 +0200 Subject: [PATCH 060/353] update intro page, add layer-tap docs and update hold-tap docs. --- docs/docs/behavior/hold-tap.md | 10 +++++++--- docs/docs/behavior/layers.md | 20 ++++++++++++++++++-- docs/docs/intro.md | 33 +++++++++++++++++++-------------- 3 files changed, 44 insertions(+), 19 deletions(-) diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index ab510223..9f8f5fab 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -22,7 +22,11 @@ We call this the 'hold-preferred' flavor of hold-taps. While this flavor may wor ![Hold-tap comparison](../assets/hold-tap/comparison.png) -### Configuration +### Basic usage +For basic usage, please see [mod-tap](./mod-tap.md) and [layer-tap](./layers.md) pages. + + +### Advanced Configuration A code example which configures a mod-tap setting that works with homerow mods: ``` @@ -58,5 +62,5 @@ If this config does not work for you, try the flavor "tap-preferred" and a short If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. -#### Note -Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. +#### Comparison to QMK +The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting in QMK. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. \ No newline at end of file diff --git a/docs/docs/behavior/layers.md b/docs/docs/behavior/layers.md index da7f07f5..c7693887 100644 --- a/docs/docs/behavior/layers.md +++ b/docs/docs/behavior/layers.md @@ -26,7 +26,7 @@ This allows you to use those defines, e.g. `LOWER` later in your keymap. ## Momentary Layer -The "momentary layer" behavior allows you to enable a layer while a certain key is pressed. Immediately upon +The "momentary layer" behavior enables a layer while a certain key is pressed. Immediately upon activation of the key, the layer is enabled, and immediately open release of the key, the layer is disabled again. @@ -41,9 +41,25 @@ Example: &mo LOWER ``` +## Layer-tap + +The "layer-tap" behavior enables a layer when a key is held, and output another key when the key is only tapped for a short time. For more information on the inner workings of layer-tap, see [hold-tap](./hold-tap.md). + +### Behavior Binding +- Reference: `<` +- Parameter: The layer number to enable when held, e.g. `1` +- Parameter: The keycode to send when tapped, e.g. `A` + +Example: + +``` +< LOWER SPC +``` + + ## Toggle Layer -The "toggle layer" behavior allows you to enable a layer until the layer is manually disabled. +The "toggle layer" behavior enables a layer until the layer is manually disabled. ### Behavior Binding diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 50a747cf..8c1c043d 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -7,31 +7,36 @@ sidebar_label: Introduction ZMK Firmware is an open source (MIT) keyboard firmware built on the [Zephyr™ Project](https://zephyrproject.org/) Real Time Operating System (RTOS). -The goal is to provider a powerful, featureful keyboard firmware that is free +The goal is to provide a powerful, featureful keyboard firmware that is free of licensing issues that prevent upstream BLE support as a first-class feature. ## Features -At this point, ZMK is _missing_ more features than it has. Currently, the mostly working bits +At this point, ZMK is still missing many features. Currently, the working bits include: -- HID Over GATT (HOG) - This is the official term for BLE HID devices -- Keymaps and layers with basic keycodes -- Some initial work on one "behavior", Mod-Tap -- Basic HID over USB -- Basic consumer (media) keycodes. -- Basic OLED display logic -- Basic Split support -- Encoders +- Wireless connectivity via BLE HID Over GATT (HOG) +- USB connectivity +- Low active power usage +- Split keyboard support +- [Keymaps and layers](behavior/layers) +- [Hold-tap](behavior/hold-tap) (which includes [mod-tap](behavior/mod-tap), [layer-tap](behavior/layers)) +- [Basic HID over USB](behavior/key-press) +- [Basic consumer (media) keycodes](behavior/key-press#consumer-key-press) +- [Encoders](feature/encoders) +- Basic [OLED display support](feature/displays) +- [RGB Underglow](feature/underglow) ## Missing Features -- One Shot -- Layer Tap -- Complete split support +- One Shot Keys +- Combo keys +- Macros +- Complete split support (encoders and RGB are not supported on the 'peripheral' side) - Battery reporting -- Low power mode +- Low power sleep states +- Low power mode (to toggle LEDs and screen off) - Shell over BLE ## Code Of Conduct From cf970efb98c5af97955bfffbcebb3b065b16edc4 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 28 Aug 2020 14:15:16 -0400 Subject: [PATCH 061/353] feat(bluetooth): Proper bond management, identity support for non-splits * Add `bt` behavior that can be used to perform certain actions, such as next/prev identity, reset identity, etc. NOTE: Multiple identities is only supported for non-split shields, due to missing Zephyr identity functionality for dual central/peripheral devices. * Proper bond reset tied to action, that honors peripheral bonds, so folks can reset and pair to other hosts, without breaking bonds between splt halves. --- app/CMakeLists.txt | 7 +- app/Kconfig | 29 +- app/dts/behaviors.dtsi | 3 +- app/dts/behaviors/bluetooth.dtsi | 9 + .../behaviors/zmk,behavior-bluetooth.yaml | 8 + app/include/dt-bindings/zmk/bt.h | 17 + app/include/zmk/ble.h | 13 + app/src/behaviors/behavior_bt.c | 62 ++++ app/src/ble.c | 335 ++++++++++++++++-- app/src/split/bluetooth/central.c | 49 ++- docs/docs/behavior/bluetooth.md | 82 +++++ docs/sidebars.js | 1 + 12 files changed, 563 insertions(+), 52 deletions(-) create mode 100644 app/dts/behaviors/bluetooth.dtsi create mode 100644 app/dts/bindings/behaviors/zmk,behavior-bluetooth.yaml create mode 100644 app/include/dt-bindings/zmk/bt.h create mode 100644 app/src/behaviors/behavior_bt.c create mode 100644 docs/docs/behavior/bluetooth.md diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 2e24fdc2..0f2d2ba7 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -41,8 +41,11 @@ target_sources(app PRIVATE src/behaviors/behavior_toggle_layer.c) target_sources(app PRIVATE src/behaviors/behavior_transparent.c) target_sources(app PRIVATE src/behaviors/behavior_none.c) target_sources(app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c) -target_sources(app PRIVATE src/keymap.c) +if(NOT CONFIG_ZMK_BLE_SPLIT_PERIPHERAL) + target_sources(app PRIVATE src/keymap.c) +endif() target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/behaviors/behavior_bt.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble_unpair_combo.c) target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL app PRIVATE src/split_listener.c) @@ -57,4 +60,4 @@ target_sources(app PRIVATE src/endpoints.c) target_sources(app PRIVATE src/hid_listener.c) target_sources(app PRIVATE src/main.c) -zephyr_cc_option(-Wfatal-errors) \ No newline at end of file +zephyr_cc_option(-Wfatal-errors) diff --git a/app/Kconfig b/app/Kconfig index 877fce43..b60db056 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -40,8 +40,6 @@ menuconfig ZMK_BLE select BT_PERIPHERAL select BT_GATT_DIS select BT_GATT_BAS - select SETTINGS - # select BT_SETTINGS if ZMK_BLE @@ -49,6 +47,12 @@ config ZMK_BLE_INIT_PRIORITY int "Init Priority" default 50 +config SETTINGS + default y + +config BT_SETTINGS + default y + config SYSTEM_WORKQUEUE_STACK_SIZE default 2048 @@ -103,8 +107,11 @@ config ZMK_SPLIT_BLE_ROLE_CENTRAL if ZMK_SPLIT_BLE_ROLE_CENTRAL +config BT_MAX_PAIRED + default 2 + config BT_MAX_CONN - default 5 + default 2 config BT_MAX_PAIRED # Bump this everywhere once we support switching active connections! @@ -120,15 +127,18 @@ if ZMK_SPLIT_BLE_ROLE_PERIPHERAL config ZMK_USB default n +config BT_MAX_PAIRED + default 1 config BT_MAX_CONN - default 5 + default 2 config BT_GAP_AUTO_UPDATE_CONN_PARAMS default n endif + endchoice endif @@ -138,6 +148,17 @@ endif endmenu +if ZMK_BLE && !ZMK_SPLIT_BLE + +config BT_ID_MAX + default 5 + +# Used to update the name to include the identity used +config BT_DEVICE_NAME_DYNAMIC + default y + +endif + config ZMK_KSCAN_MOCK_DRIVER bool "Enable mock kscan driver to simulate key presses" default n diff --git a/app/dts/behaviors.dtsi b/app/dts/behaviors.dtsi index ab70bcc7..202202b4 100644 --- a/app/dts/behaviors.dtsi +++ b/app/dts/behaviors.dtsi @@ -7,4 +7,5 @@ #include #include #include -#include \ No newline at end of file +#include +#include \ No newline at end of file diff --git a/app/dts/behaviors/bluetooth.dtsi b/app/dts/behaviors/bluetooth.dtsi new file mode 100644 index 00000000..ea09f4a2 --- /dev/null +++ b/app/dts/behaviors/bluetooth.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + bt: behavior_bluetooth { + compatible = "zmk,behavior-bluetooth"; + label = "BLUETOOTH"; + #binding-cells = <2>; + }; + }; +}; diff --git a/app/dts/bindings/behaviors/zmk,behavior-bluetooth.yaml b/app/dts/bindings/behaviors/zmk,behavior-bluetooth.yaml new file mode 100644 index 00000000..127ebe0b --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-bluetooth.yaml @@ -0,0 +1,8 @@ +# Copyright (c) 2020, Peter Johanson +# SPDX-License-Identifier: MIT + +description: Bluetooth Behavior + +compatible: "zmk,behavior-bluetooth" + +include: two_param.yaml diff --git a/app/include/dt-bindings/zmk/bt.h b/app/include/dt-bindings/zmk/bt.h new file mode 100644 index 00000000..6b05ff0c --- /dev/null +++ b/app/include/dt-bindings/zmk/bt.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2020 Peter Johanson + * + * SPDX-License-Identifier: MIT + */ + +#define BT_RST_CMD 0 +#define BT_IDENT_NEXT_CMD 1 +#define BT_IDENT_PREV_CMD 2 +#define BT_IDENT_SEL_CMD 3 +#define BT_IDENT_CLR_CMD 4 + +#define BT_RST BT_RST_CMD 0 +#define BT_IDENT_NEXT BT_IDENT_NEXT_CMD 0 +#define BT_IDENT_PREV BT_IDENT_PREV_CMD 0 +#define BT_IDENT_SEL BT_IDENT_SEL_CMD +#define BT_IDENT_CLR BT_IDENT_CLR_CMD 0 \ No newline at end of file diff --git a/app/include/zmk/ble.h b/app/include/zmk/ble.h index d0aaa96b..b3762cd4 100644 --- a/app/include/zmk/ble.h +++ b/app/include/zmk/ble.h @@ -6,7 +6,20 @@ #pragma once +#include #include +int zmk_ble_adv_pause(); +int zmk_ble_adv_resume(); + +int zmk_ble_identity_clear(); +int zmk_ble_identity_next(); +int zmk_ble_identity_prev(); +int zmk_ble_identity_select(u8_t index); + int zmk_ble_unpair_all(); bool zmk_ble_handle_key_user(struct zmk_key_event *key_event); + +#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) +void zmk_ble_set_peripheral_addr(bt_addr_le_t *addr); +#endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ \ No newline at end of file diff --git a/app/src/behaviors/behavior_bt.c b/app/src/behaviors/behavior_bt.c new file mode 100644 index 00000000..724d2457 --- /dev/null +++ b/app/src/behaviors/behavior_bt.c @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2020 Peter Johanson + * + * SPDX-License-Identifier: MIT + */ + +#define DT_DRV_COMPAT zmk_behavior_bluetooth + +#include +#include + +#include + +#include + +#include +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +#include + +static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t command, u32_t arg) +{ + switch (command) + { + case BT_RST_CMD: + return zmk_ble_unpair_all(); + case BT_IDENT_CLR_CMD: + return zmk_ble_identity_clear(); +#if CONFIG_BT_ID_MAX != 1 + case BT_IDENT_NEXT_CMD: + return zmk_ble_identity_next(); + case BT_IDENT_PREV_CMD: + return zmk_ble_identity_prev(); + case BT_IDENT_SEL_CMD: + return zmk_ble_identity_select(arg); +#endif /* BT_ID_MAX != 1 */ + } + + return -ENOTSUP; +} + +static int behavior_bt_init(struct device *dev) +{ + return 0; +}; + +static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t command, u32_t arg) +{ + return 0; +} + +static const struct behavior_driver_api behavior_bt_driver_api = { + .binding_pressed = on_keymap_binding_pressed, + .binding_released = on_keymap_binding_released, +}; + +DEVICE_AND_API_INIT(behavior_bt, DT_INST_LABEL(0), + behavior_bt_init, + NULL, + NULL, + APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, + &behavior_bt_driver_api); diff --git a/app/src/ble.c b/app/src/ble.c index c4d3efd5..97ff4619 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -8,6 +8,8 @@ #include #include +#include +#include #include #include @@ -15,6 +17,13 @@ #include #include #include +#include + +#if IS_ENABLED(CONFIG_SETTINGS) + +#include + +#endif #include @@ -28,16 +37,249 @@ static struct bt_conn *auth_passkey_entry_conn; static u8_t passkey_entries[6] = {0, 0, 0, 0, 0, 0}; static u8_t passkey_digit = 0; -#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) -#define ZMK_ADV_PARAMS BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | \ - BT_LE_ADV_OPT_USE_NAME | \ - BT_LE_ADV_OPT_ONE_TIME, \ +#define ZMK_BT_LE_ADV_PARAM_INIT(_id, _options, _int_min, _int_max, _peer) \ +{ \ + .id = _id, \ + .sid = 0, \ + .secondary_max_skip = 0, \ + .options = (_options), \ + .interval_min = (_int_min), \ + .interval_max = (_int_max), \ + .peer = (_peer), \ +} + +#define ZMK_BT_LE_ADV_PARAM(_id, _options, _int_min, _int_max, _peer) \ + ((struct bt_le_adv_param[]) { \ + ZMK_BT_LE_ADV_PARAM_INIT(_id, _options, _int_min, _int_max, _peer) \ + }) + +#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) +#define ZMK_ADV_PARAMS(_id) ZMK_BT_LE_ADV_PARAM(_id, \ + BT_LE_ADV_OPT_CONNECTABLE | \ + BT_LE_ADV_OPT_ONE_TIME | \ + BT_LE_ADV_OPT_USE_NAME, \ BT_GAP_ADV_FAST_INT_MIN_2, \ BT_GAP_ADV_FAST_INT_MAX_2, NULL) #else -#define ZMK_ADV_PARAMS BT_LE_ADV_CONN_NAME +#define ZMK_ADV_PARAMS(_id) ZMK_BT_LE_ADV_PARAM(_id, \ + BT_LE_ADV_OPT_CONNECTABLE | \ + BT_LE_ADV_OPT_USE_NAME, \ + BT_GAP_ADV_FAST_INT_MIN_2, \ + BT_GAP_ADV_FAST_INT_MAX_2, NULL) #endif +static const struct bt_data zmk_ble_ad[] = { + BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)), + BT_DATA_BYTES(BT_DATA_UUID16_SOME, +#if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) + 0x12, 0x18, /* HID Service */ +#endif + 0x0f, 0x18 /* Battery Service */ + ), +#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) + BT_DATA_BYTES(BT_DATA_UUID128_ALL, + ZMK_SPLIT_BT_SERVICE_UUID) +#endif +}; + +#define IDENTITY_COUNT CONFIG_BT_ID_MAX + +#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) + +static bt_addr_le_t peripheral_addr; + +#endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ + + +static u8_t active_identity = 0; + +int zmk_ble_adv_pause() +{ + int err = bt_le_adv_stop(); + if (err) { + LOG_ERR("Failed to stop advertising (err %d)", err); + return err; + } + + return 0; +}; + +int zmk_ble_adv_resume() +{ + struct bt_le_adv_param *adv_params = ZMK_ADV_PARAMS(active_identity); + + LOG_DBG(""); + int err = bt_le_adv_start(adv_params, zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), NULL, 0); + if (err) + { + LOG_ERR("Advertising failed to start (err %d)", err); + return err; + } + + return 0; +}; + +static void disconnect_host_connection(struct bt_conn *conn, void *arg) +{ + struct bt_conn_info info; + bt_conn_get_info(conn, &info); + + if (info.role != BT_CONN_ROLE_SLAVE) { + return; + } + + bt_conn_disconnect(conn, BT_HCI_ERR_LOCALHOST_TERM_CONN); +}; + +static int activate_profile(u8_t index) +{ + int err; + + if (index >= IDENTITY_COUNT) { + return -EINVAL; + } + + if (active_identity != index) { + LOG_DBG("Persisting new active identity"); + active_identity = index; + +#if IS_ENABLED(CONFIG_SETTINGS) + err = settings_save_one("ble/active_identity", &active_identity, sizeof(u8_t)); + if (err) { + LOG_WRN("Failed to persist active_identity (err %d)", err); + } +#endif + +#if IS_ENABLED(CONFIG_BT_DEVICE_NAME_DYNAMIC) + char name[CONFIG_BT_DEVICE_NAME_MAX]; + snprintf(name, sizeof(name), "%s (Profile %d)", CONFIG_ZMK_KEYBOARD_NAME, active_identity + 1); + bt_set_name(name); +#endif /* IS_ENABLED(CONFIG_BT_DEVICE_NAME_DYNAMIC) */ + } + + return zmk_ble_adv_resume(); +}; + +static int deactivate_profile(u8_t index) +{ + int err = zmk_ble_adv_pause(); + if (err) { + LOG_WRN("Failed to pause advertising %d", err); + } + + bt_conn_foreach(BT_CONN_TYPE_ALL, disconnect_host_connection, NULL); + + return 0; +}; + +int zmk_ble_identity_select(u8_t index) +{ + LOG_DBG("index %d", index); + if (index >= IDENTITY_COUNT) { + return -EINVAL; + } + + int err = deactivate_profile(active_identity); + if (err) { + LOG_WRN("Failed to deactivate profile"); + return err; + } + + return activate_profile(index); +}; + +static void unpair_non_peripheral_bonds(const struct bt_bond_info *info, void *user_data) { + char addr[BT_ADDR_LE_STR_LEN]; + bt_addr_le_to_str(&info->addr, addr, sizeof(addr)); + +#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) + if (!bt_addr_le_cmp(&info->addr, &peripheral_addr)) { + LOG_DBG("Skipping unpairing peripheral %s", log_strdup(addr)); + return; + } +#endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ + + LOG_DBG("Unpairing %s", log_strdup(addr)); + bt_unpair(active_identity, &info->addr); +} + +int zmk_ble_identity_clear() +{ + LOG_DBG(""); + int err = deactivate_profile(active_identity); + if (err) { + return err; + } + + bt_foreach_bond(active_identity, unpair_non_peripheral_bonds, NULL); + + return activate_profile(active_identity); +}; + +int zmk_ble_identity_next() +{ + LOG_DBG("active_identity %d IDENTITY_COUNT %d", active_identity, IDENTITY_COUNT); + return zmk_ble_identity_select((active_identity + 1) % IDENTITY_COUNT); +} + +int zmk_ble_identity_prev() +{ + LOG_DBG(""); + return zmk_ble_identity_select((active_identity + IDENTITY_COUNT - 1) % IDENTITY_COUNT); +} + +#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) + +void zmk_ble_set_peripheral_addr(bt_addr_le_t *addr) +{ + memcpy(&peripheral_addr, addr, sizeof(bt_addr_le_t)); + settings_save_one("ble/peripheral_address", addr, sizeof(bt_addr_le_t)); +} + +#endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ + +#if IS_ENABLED(CONFIG_SETTINGS) + +static int ble_profiles_handle_set(const char *name, size_t len, settings_read_cb read_cb, void *cb_arg) +{ + const char *next; + + LOG_DBG("Setting BLE value %s", log_strdup(name)); + + if (settings_name_steq(name, "active_identity", &next) && !next) { + if (len != sizeof(active_identity)) { + return -EINVAL; + } + + int err = read_cb(cb_arg, &active_identity, sizeof(active_identity)); + if (err <= 0) { + LOG_ERR("Failed to handle profile from settings (err %d)", err); + return err; + } + LOG_DBG("Loaded active identity %d", active_identity); +#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) + } else if (settings_name_steq(name, "peripheral_address", &next) && !next) { + if (len != sizeof(bt_addr_le_t)) { + return -EINVAL; + } + + int err = read_cb(cb_arg, &peripheral_addr, sizeof(bt_addr_le_t)); + if (err <= 0) { + LOG_ERR("Failed to handle peripheral address from settings (err %d)", err); + return err; + } +#endif + } + + return 0; +}; + +struct settings_handler profiles_handler = { + .name = "ble", + .h_set = ble_profiles_handle_set +}; +#endif /* IS_ENABLED(CONFIG_SETTINGS) */ + static void connected(struct bt_conn *conn, u8_t err) { char addr[BT_ADDR_LE_STR_LEN]; @@ -71,6 +313,12 @@ static void disconnected(struct bt_conn *conn, u8_t reason) bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); LOG_DBG("Disconnected from %s (reason 0x%02x)", log_strdup(addr), reason); + +#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) + if (bt_addr_le_cmp(&peripheral_addr, BT_ADDR_LE_ANY) && bt_addr_le_cmp(&peripheral_addr, bt_conn_get_dst(conn))) { + zmk_ble_adv_resume(); + } +#endif } static void security_changed(struct bt_conn *conn, bt_security_t level, @@ -146,19 +394,6 @@ static struct bt_conn_auth_cb zmk_ble_auth_cb_display = { .cancel = auth_cancel, }; -static const struct bt_data zmk_ble_ad[] = { - BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)), - BT_DATA_BYTES(BT_DATA_UUID16_SOME, -#if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) - 0x12, 0x18, /* HID Service */ -#endif - 0x0f, 0x18 /* Battery Service */ - ), -#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) - BT_DATA_BYTES(BT_DATA_UUID128_ALL, - ZMK_SPLIT_BT_SERVICE_UUID) -#endif -}; static void zmk_ble_ready(int err) { @@ -169,17 +404,42 @@ static void zmk_ble_ready(int err) return; } - err = bt_le_adv_start(ZMK_ADV_PARAMS, zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), NULL, 0); - if (err) - { - LOG_ERR("Advertising failed to start (err %d)", err); - return; - } + zmk_ble_identity_select(active_identity); } +#if CONFIG_BT_ID_MAX != 1 +static int initialize_identities() +{ + bt_addr_le_t addrs[CONFIG_BT_ID_MAX]; + size_t count = CONFIG_BT_ID_MAX; + + LOG_DBG(""); + bt_id_get(addrs, &count); + + for (int i = 0; i < count; i++) { + char addr[BT_ADDR_LE_STR_LEN]; + bt_addr_le_to_str(&addrs[i], addr, sizeof(addr)); + LOG_DBG("Existing identity %s", log_strdup(addr)); + } + + for (int i = count; i < CONFIG_BT_ID_MAX; i++) { + LOG_DBG("Initializing identity %d", i); + int id = bt_id_create(NULL, NULL); + if (id < 0) { + LOG_ERR("Failed to create new identity with id %d", i); + return id; + } + } + + return 0; +}; +#endif /* CONFIG_BT_ID_MAX != 1 */ + static int zmk_ble_init(struct device *_arg) { - int err = bt_enable(NULL); + int err; + + err = bt_enable(NULL); if (err) { @@ -187,11 +447,23 @@ static int zmk_ble_init(struct device *_arg) return err; } - if (IS_ENABLED(CONFIG_BT_SETTINGS)) - { - settings_load(); +#if IS_ENABLED(CONFIG_SETTINGS) + settings_subsys_init(); + + err = settings_register(&profiles_handler); + if (err) { + LOG_ERR("Failed to setup the profile settings handler (err %d)", err); + return err; } + settings_load(); + +#endif + +#if CONFIG_BT_ID_MAX != 1 + initialize_identities(); +#endif /* CONFIG_BT_ID_MAX != 1 */ + bt_conn_cb_register(&conn_callbacks); bt_conn_auth_cb_register(&zmk_ble_auth_cb_display); @@ -203,7 +475,12 @@ static int zmk_ble_init(struct device *_arg) int zmk_ble_unpair_all() { LOG_DBG(""); - return bt_unpair(BT_ID_DEFAULT, NULL); + int err = bt_unpair(BT_ID_DEFAULT, NULL); + if (err) { + LOG_ERR("Failed to unpair devices (err %d)", err); + } + + return err; }; bool zmk_ble_handle_key_user(struct zmk_key_event *key_event) diff --git a/app/src/split/bluetooth/central.c b/app/src/split/bluetooth/central.c index 9e67228e..df8f34ec 100644 --- a/app/src/split/bluetooth/central.c +++ b/app/src/split/bluetooth/central.c @@ -10,12 +10,14 @@ #include #include #include +#include #include #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); +#include #include #include #include @@ -71,6 +73,18 @@ static u8_t split_central_notify_func(struct bt_conn *conn, return BT_GATT_ITER_CONTINUE; } +static int split_central_subscribe(struct bt_conn *conn) +{ + int err = bt_gatt_subscribe(conn, &subscribe_params); + if (err && err != -EALREADY) { + LOG_ERR("Subscribe failed (err %d)", err); + } else { + LOG_DBG("[SUBSCRIBED]"); + } + + return 0; +} + static u8_t split_central_discovery_func(struct bt_conn *conn, const struct bt_gatt_attr *attr, struct bt_gatt_discover_params *params) @@ -112,12 +126,7 @@ static u8_t split_central_discovery_func(struct bt_conn *conn, subscribe_params.value = BT_GATT_CCC_NOTIFY; subscribe_params.ccc_handle = attr->handle; - err = bt_gatt_subscribe(conn, &subscribe_params); - if (err && err != -EALREADY) { - LOG_ERR("Subscribe failed (err %d)", err); - } else { - LOG_DBG("[SUBSCRIBED]"); - } + split_central_subscribe(conn); return BT_GATT_ITER_STOP; } @@ -137,16 +146,20 @@ static void split_central_process_connection(struct bt_conn *conn) { } if (conn == default_conn) { - discover_params.uuid = &uuid.uuid; - discover_params.func = split_central_discovery_func; - discover_params.start_handle = 0x0001; - discover_params.end_handle = 0xffff; - discover_params.type = BT_GATT_DISCOVER_PRIMARY; + if (subscribe_params.value) { + split_central_subscribe(conn); + } else { + discover_params.uuid = &uuid.uuid; + discover_params.func = split_central_discovery_func; + discover_params.start_handle = 0x0001; + discover_params.end_handle = 0xffff; + discover_params.type = BT_GATT_DISCOVER_PRIMARY; - err = bt_gatt_discover(default_conn, &discover_params); - if (err) { - LOG_ERR("Discover failed(err %d)", err); - return; + err = bt_gatt_discover(default_conn, &discover_params); + if (err) { + LOG_ERR("Discover failed(err %d)", err); + return; + } } } @@ -194,6 +207,8 @@ static bool split_central_eir_found(struct bt_data *data, void *user_data) LOG_DBG("Found the split service"); + zmk_ble_set_peripheral_addr(addr); + err = bt_le_scan_stop(); if (err) { LOG_ERR("Stop LE scan failed (err %d)", err); @@ -206,10 +221,11 @@ static bool split_central_eir_found(struct bt_data *data, void *user_data) split_central_process_connection(default_conn); } else { param = BT_LE_CONN_PARAM(0x0006, 0x0006, 30, 400); + err = bt_conn_le_create(addr, BT_CONN_LE_CREATE_CONN, param, &default_conn); if (err) { - LOG_ERR("Create conn failed (err %d)", err); + LOG_ERR("Create conn failed (err %d) (create conn? 0x%04x)", err, BT_HCI_OP_LE_CREATE_CONN); start_scan(); } @@ -263,6 +279,7 @@ static void split_central_connected(struct bt_conn *conn, u8_t conn_err) bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); + if (conn_err) { LOG_ERR("Failed to connect to %s (%u)", addr, conn_err); diff --git a/docs/docs/behavior/bluetooth.md b/docs/docs/behavior/bluetooth.md new file mode 100644 index 00000000..df8ec26b --- /dev/null +++ b/docs/docs/behavior/bluetooth.md @@ -0,0 +1,82 @@ +--- +title: Bluetooth Behavior +sidebar_label: Bluetooth +--- + +## Summary + +The bluetooth behavior allows management of various settings and states related to the bluetooth connection(s) +between the keyboard and the host. + +## Bluetooth Command Defines + +Bluetooth command defines are provided through the [`dt-bindings/zmk/bt.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/bt.h) header, +which is added at the top of the keymap file: + +``` +#include +``` + +This will allow you to reference the actions defined in this header such as `BT_IDENT_CLR_CMD`. + +Here is a table describing the command for each define: + +| Define | Action | +| ------------------- | ----------------------------------------------------- | +| `BT_IDENT_CLR_CMD` | Clear paired keyboards (for the current identity)[^1] | +| `BT_IDENT_NEXT_CMD` | Switch to the next identity[^1] | +| `BT_IDENT_PREV_CMD` | Switch to the previous identity | +| `BT_IDENT_SEL_CMD` | Switch to a specific numbered identity | +| `BT_RST_CMD` | Hard reset of all bluetooth bonds | + +Because the `BT_IDENT_SEL_CMD` command takes an additional parameter, the numeric index of the identity to select, _all_ the commands for the bluetooth behavior must take that additional parameter, and ignore the value. To make this easier, +there are alias defines that add those default parameters for you: + +| Define | Action | +| --------------- | --------------------------------------------------------------------------------------- | +| `BT_IDENT_CLR` | Alias for `BT_IDENT_CLR_CMD 0` to clear paired keyboards (for the current identity)[^1] | +| `BT_IDENT_NEXT` | Alias for `BT_IDENT_NEXT_CMD 0` to switch to the next identity[^1] | +| `BT_IDENT_PREV` | Alias for `BT_IDENT_PREV_CMD 0` to switch to the previous identity | +| `BT_IDENT_SEL` | Alias for `BT_IDENT_SEL_CMD` to switch to a specific numbered identity | +| `BT_RST` | Alias for `BT_RST_CMD 0` to reset all bonds[^2] | + +[^1]: Multiple keyboard identities/profiles is only support on non-split keyboards as of this time. +[^2]: This may interrupt pairing between both halves of a split keyboard. For split keyboards, it is preferred to use the [/docs/bond-reset] combo to clear bonds on both devices + +## Bluetooth Behavior + +The bluetooth behavior completes an bluetooth action given on press. + +### Behavior Binding + +- Reference: `&bt` +- Parameter #1: The bluetooth command define, e.g. `BT_IDENT_CLR_CMD` or `BT_RST_CMD` +- Parameter #2: The parameter for the command, when used to identify an identity/profile to select, e.g. `0` + +### Examples + +1. Behavior to clear the paired host: + + ``` + &bt BT_IDENT_CLR + ``` + +1. Behavior to hard reset all bonded devices[^2]: + + ``` + &bt BT_IDENT_CLR + ``` + +Examples for non-split keyboards with multiple identities: + +1. Behavior to switch to the next identity: + + ``` + &bt BT_IDENT_NEXT + ``` + +1. Behavior to switch to the specific numbered identity: + + ``` + &bt BT_IDENT_SEL 1 + ``` diff --git a/docs/sidebars.js b/docs/sidebars.js index 6bd3aa40..ace7fa17 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -22,6 +22,7 @@ module.exports = { "behavior/hold-tap", "behavior/mod-tap", "behavior/reset", + "behavior/bluetooth", "behavior/lighting", ], Development: [ From a4d06f69ac9879618e91a9befac6f2e84ef37428 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 31 Aug 2020 16:56:05 -0400 Subject: [PATCH 062/353] fix(bluetooth): Fix max pair settings for non-split. --- app/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Kconfig b/app/Kconfig index b60db056..3640dc6b 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -107,9 +107,6 @@ config ZMK_SPLIT_BLE_ROLE_CENTRAL if ZMK_SPLIT_BLE_ROLE_CENTRAL -config BT_MAX_PAIRED - default 2 - config BT_MAX_CONN default 2 @@ -153,6 +150,9 @@ if ZMK_BLE && !ZMK_SPLIT_BLE config BT_ID_MAX default 5 +config BT_MAX_PAIRED + default 5 + # Used to update the name to include the identity used config BT_DEVICE_NAME_DYNAMIC default y From fc0812bd2eb08d66819f38bafd1f5d00b933c87b Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 1 Sep 2020 23:22:30 -0400 Subject: [PATCH 063/353] fix(bluetooth): Remove identity, minimal `bt`. * Simplify the `bt` behavior to one current command `BT_CLEAR_BONDS_CMD`. * Simplify BLE code for split and non-split keyboards. * Remove keymap processing from split peripheral side. --- app/CMakeLists.txt | 4 +- app/Kconfig | 23 +---- app/include/dt-bindings/zmk/bt.h | 17 ++-- app/include/zmk/ble.h | 7 +- app/src/behaviors/behavior_bt.c | 16 +--- app/src/ble.c | 158 +++++-------------------------- app/src/split_listener.c | 1 + docs/docs/behavior/bluetooth.md | 58 +++--------- 8 files changed, 52 insertions(+), 232 deletions(-) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 0f2d2ba7..ca2767fd 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -41,9 +41,7 @@ target_sources(app PRIVATE src/behaviors/behavior_toggle_layer.c) target_sources(app PRIVATE src/behaviors/behavior_transparent.c) target_sources(app PRIVATE src/behaviors/behavior_none.c) target_sources(app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c) -if(NOT CONFIG_ZMK_BLE_SPLIT_PERIPHERAL) - target_sources(app PRIVATE src/keymap.c) -endif() +target_sources(app PRIVATE src/keymap.c) target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/behaviors/behavior_bt.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble.c) diff --git a/app/Kconfig b/app/Kconfig index 3640dc6b..11a3cc05 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -40,18 +40,14 @@ menuconfig ZMK_BLE select BT_PERIPHERAL select BT_GATT_DIS select BT_GATT_BAS + select BT_SETTINGS + select SETTINGS if ZMK_BLE config ZMK_BLE_INIT_PRIORITY int "Init Priority" default 50 - -config SETTINGS - default y - -config BT_SETTINGS - default y config SYSTEM_WORKQUEUE_STACK_SIZE default 2048 @@ -144,21 +140,6 @@ endif endmenu - -if ZMK_BLE && !ZMK_SPLIT_BLE - -config BT_ID_MAX - default 5 - -config BT_MAX_PAIRED - default 5 - -# Used to update the name to include the identity used -config BT_DEVICE_NAME_DYNAMIC - default y - -endif - config ZMK_KSCAN_MOCK_DRIVER bool "Enable mock kscan driver to simulate key presses" default n diff --git a/app/include/dt-bindings/zmk/bt.h b/app/include/dt-bindings/zmk/bt.h index 6b05ff0c..24d27ae6 100644 --- a/app/include/dt-bindings/zmk/bt.h +++ b/app/include/dt-bindings/zmk/bt.h @@ -4,14 +4,11 @@ * SPDX-License-Identifier: MIT */ -#define BT_RST_CMD 0 -#define BT_IDENT_NEXT_CMD 1 -#define BT_IDENT_PREV_CMD 2 -#define BT_IDENT_SEL_CMD 3 -#define BT_IDENT_CLR_CMD 4 +#define BT_CLEAR_BONDS_CMD 0 -#define BT_RST BT_RST_CMD 0 -#define BT_IDENT_NEXT BT_IDENT_NEXT_CMD 0 -#define BT_IDENT_PREV BT_IDENT_PREV_CMD 0 -#define BT_IDENT_SEL BT_IDENT_SEL_CMD -#define BT_IDENT_CLR BT_IDENT_CLR_CMD 0 \ No newline at end of file +/* +Note: Some future commands will include additional parameters, so we +defines these aliases up front. +*/ + +#define BT_CLEAR_BONDS BT_CLEAR_BONDS_CMD 0 \ No newline at end of file diff --git a/app/include/zmk/ble.h b/app/include/zmk/ble.h index b3762cd4..62d476ed 100644 --- a/app/include/zmk/ble.h +++ b/app/include/zmk/ble.h @@ -9,13 +9,8 @@ #include #include -int zmk_ble_adv_pause(); -int zmk_ble_adv_resume(); -int zmk_ble_identity_clear(); -int zmk_ble_identity_next(); -int zmk_ble_identity_prev(); -int zmk_ble_identity_select(u8_t index); +int zmk_ble_clear_bonds(); int zmk_ble_unpair_all(); bool zmk_ble_handle_key_user(struct zmk_key_event *key_event); diff --git a/app/src/behaviors/behavior_bt.c b/app/src/behaviors/behavior_bt.c index 724d2457..63a1ef19 100644 --- a/app/src/behaviors/behavior_bt.c +++ b/app/src/behaviors/behavior_bt.c @@ -22,18 +22,10 @@ static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t c { switch (command) { - case BT_RST_CMD: - return zmk_ble_unpair_all(); - case BT_IDENT_CLR_CMD: - return zmk_ble_identity_clear(); -#if CONFIG_BT_ID_MAX != 1 - case BT_IDENT_NEXT_CMD: - return zmk_ble_identity_next(); - case BT_IDENT_PREV_CMD: - return zmk_ble_identity_prev(); - case BT_IDENT_SEL_CMD: - return zmk_ble_identity_select(arg); -#endif /* BT_ID_MAX != 1 */ + case BT_CLEAR_BONDS_CMD: + return zmk_ble_clear_bonds(); + default: + LOG_ERR("Unknown BT command: %d", command); } return -ENOTSUP; diff --git a/app/src/ble.c b/app/src/ble.c index 97ff4619..0aba16c5 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -82,8 +82,6 @@ static const struct bt_data zmk_ble_ad[] = { #endif }; -#define IDENTITY_COUNT CONFIG_BT_ID_MAX - #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) static bt_addr_le_t peripheral_addr; @@ -91,8 +89,6 @@ static bt_addr_le_t peripheral_addr; #endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ -static u8_t active_identity = 0; - int zmk_ble_adv_pause() { int err = bt_le_adv_stop(); @@ -106,7 +102,7 @@ int zmk_ble_adv_pause() int zmk_ble_adv_resume() { - struct bt_le_adv_param *adv_params = ZMK_ADV_PARAMS(active_identity); + struct bt_le_adv_param *adv_params = ZMK_ADV_PARAMS(BT_ID_DEFAULT); LOG_DBG(""); int err = bt_le_adv_start(adv_params, zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), NULL, 0); @@ -131,62 +127,6 @@ static void disconnect_host_connection(struct bt_conn *conn, void *arg) bt_conn_disconnect(conn, BT_HCI_ERR_LOCALHOST_TERM_CONN); }; -static int activate_profile(u8_t index) -{ - int err; - - if (index >= IDENTITY_COUNT) { - return -EINVAL; - } - - if (active_identity != index) { - LOG_DBG("Persisting new active identity"); - active_identity = index; - -#if IS_ENABLED(CONFIG_SETTINGS) - err = settings_save_one("ble/active_identity", &active_identity, sizeof(u8_t)); - if (err) { - LOG_WRN("Failed to persist active_identity (err %d)", err); - } -#endif - -#if IS_ENABLED(CONFIG_BT_DEVICE_NAME_DYNAMIC) - char name[CONFIG_BT_DEVICE_NAME_MAX]; - snprintf(name, sizeof(name), "%s (Profile %d)", CONFIG_ZMK_KEYBOARD_NAME, active_identity + 1); - bt_set_name(name); -#endif /* IS_ENABLED(CONFIG_BT_DEVICE_NAME_DYNAMIC) */ - } - - return zmk_ble_adv_resume(); -}; - -static int deactivate_profile(u8_t index) -{ - int err = zmk_ble_adv_pause(); - if (err) { - LOG_WRN("Failed to pause advertising %d", err); - } - - bt_conn_foreach(BT_CONN_TYPE_ALL, disconnect_host_connection, NULL); - - return 0; -}; - -int zmk_ble_identity_select(u8_t index) -{ - LOG_DBG("index %d", index); - if (index >= IDENTITY_COUNT) { - return -EINVAL; - } - - int err = deactivate_profile(active_identity); - if (err) { - LOG_WRN("Failed to deactivate profile"); - return err; - } - - return activate_profile(index); -}; static void unpair_non_peripheral_bonds(const struct bt_bond_info *info, void *user_data) { char addr[BT_ADDR_LE_STR_LEN]; @@ -200,34 +140,19 @@ static void unpair_non_peripheral_bonds(const struct bt_bond_info *info, void *u #endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ LOG_DBG("Unpairing %s", log_strdup(addr)); - bt_unpair(active_identity, &info->addr); + bt_unpair(BT_ID_DEFAULT, &info->addr); } -int zmk_ble_identity_clear() +int zmk_ble_clear_bonds() { LOG_DBG(""); - int err = deactivate_profile(active_identity); - if (err) { - return err; - } + + bt_conn_foreach(BT_ID_DEFAULT, disconnect_host_connection, NULL); + bt_foreach_bond(BT_ID_DEFAULT, unpair_non_peripheral_bonds, NULL); - bt_foreach_bond(active_identity, unpair_non_peripheral_bonds, NULL); - - return activate_profile(active_identity); + return 0; }; -int zmk_ble_identity_next() -{ - LOG_DBG("active_identity %d IDENTITY_COUNT %d", active_identity, IDENTITY_COUNT); - return zmk_ble_identity_select((active_identity + 1) % IDENTITY_COUNT); -} - -int zmk_ble_identity_prev() -{ - LOG_DBG(""); - return zmk_ble_identity_select((active_identity + IDENTITY_COUNT - 1) % IDENTITY_COUNT); -} - #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) void zmk_ble_set_peripheral_addr(bt_addr_le_t *addr) @@ -246,19 +171,8 @@ static int ble_profiles_handle_set(const char *name, size_t len, settings_read_c LOG_DBG("Setting BLE value %s", log_strdup(name)); - if (settings_name_steq(name, "active_identity", &next) && !next) { - if (len != sizeof(active_identity)) { - return -EINVAL; - } - - int err = read_cb(cb_arg, &active_identity, sizeof(active_identity)); - if (err <= 0) { - LOG_ERR("Failed to handle profile from settings (err %d)", err); - return err; - } - LOG_DBG("Loaded active identity %d", active_identity); #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) - } else if (settings_name_steq(name, "peripheral_address", &next) && !next) { + if (settings_name_steq(name, "peripheral_address", &next) && !next) { if (len != sizeof(bt_addr_le_t)) { return -EINVAL; } @@ -268,8 +182,8 @@ static int ble_profiles_handle_set(const char *name, size_t len, settings_read_c LOG_ERR("Failed to handle peripheral address from settings (err %d)", err); return err; } -#endif } +#endif return 0; }; @@ -318,6 +232,8 @@ static void disconnected(struct bt_conn *conn, u8_t reason) if (bt_addr_le_cmp(&peripheral_addr, BT_ADDR_LE_ANY) && bt_addr_le_cmp(&peripheral_addr, bt_conn_get_dst(conn))) { zmk_ble_adv_resume(); } +#else + zmk_ble_adv_resume(); #endif } @@ -404,42 +320,12 @@ static void zmk_ble_ready(int err) return; } - zmk_ble_identity_select(active_identity); + zmk_ble_adv_resume(); } -#if CONFIG_BT_ID_MAX != 1 -static int initialize_identities() -{ - bt_addr_le_t addrs[CONFIG_BT_ID_MAX]; - size_t count = CONFIG_BT_ID_MAX; - - LOG_DBG(""); - bt_id_get(addrs, &count); - - for (int i = 0; i < count; i++) { - char addr[BT_ADDR_LE_STR_LEN]; - bt_addr_le_to_str(&addrs[i], addr, sizeof(addr)); - LOG_DBG("Existing identity %s", log_strdup(addr)); - } - - for (int i = count; i < CONFIG_BT_ID_MAX; i++) { - LOG_DBG("Initializing identity %d", i); - int id = bt_id_create(NULL, NULL); - if (id < 0) { - LOG_ERR("Failed to create new identity with id %d", i); - return id; - } - } - - return 0; -}; -#endif /* CONFIG_BT_ID_MAX != 1 */ - static int zmk_ble_init(struct device *_arg) { - int err; - - err = bt_enable(NULL); + int err = bt_enable(NULL); if (err) { @@ -460,10 +346,6 @@ static int zmk_ble_init(struct device *_arg) #endif -#if CONFIG_BT_ID_MAX != 1 - initialize_identities(); -#endif /* CONFIG_BT_ID_MAX != 1 */ - bt_conn_cb_register(&conn_callbacks); bt_conn_auth_cb_register(&zmk_ble_auth_cb_display); @@ -474,13 +356,17 @@ static int zmk_ble_init(struct device *_arg) int zmk_ble_unpair_all() { - LOG_DBG(""); - int err = bt_unpair(BT_ID_DEFAULT, NULL); - if (err) { - LOG_ERR("Failed to unpair devices (err %d)", err); + int resp = 0; + for (int i = BT_ID_DEFAULT; i < CONFIG_BT_ID_MAX; i++) { + + int err = bt_unpair(BT_ID_DEFAULT, NULL); + if (err) { + resp = err; + LOG_ERR("Failed to unpair devices (err %d)", err); + } } - return err; + return resp; }; bool zmk_ble_handle_key_user(struct zmk_key_event *key_event) diff --git a/app/src/split_listener.c b/app/src/split_listener.c index 46a95e14..ee59c484 100644 --- a/app/src/split_listener.c +++ b/app/src/split_listener.c @@ -21,6 +21,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); int split_listener(const struct zmk_event_header *eh) { + LOG_DBG(""); if (is_position_state_changed(eh)) { const struct position_state_changed *ev = cast_position_state_changed(eh); if (ev->state) { diff --git a/docs/docs/behavior/bluetooth.md b/docs/docs/behavior/bluetooth.md index df8ec26b..f605c962 100644 --- a/docs/docs/behavior/bluetooth.md +++ b/docs/docs/behavior/bluetooth.md @@ -6,7 +6,8 @@ sidebar_label: Bluetooth ## Summary The bluetooth behavior allows management of various settings and states related to the bluetooth connection(s) -between the keyboard and the host. +between the keyboard and the host. As of right now, there is only one such action support, but in the future +more will be added. ## Bluetooth Command Defines @@ -17,31 +18,20 @@ which is added at the top of the keymap file: #include ``` -This will allow you to reference the actions defined in this header such as `BT_IDENT_CLR_CMD`. +This will allow you to reference the actions defined in this header such as `BT_CLEAR_BONDS_CMD`. Here is a table describing the command for each define: -| Define | Action | -| ------------------- | ----------------------------------------------------- | -| `BT_IDENT_CLR_CMD` | Clear paired keyboards (for the current identity)[^1] | -| `BT_IDENT_NEXT_CMD` | Switch to the next identity[^1] | -| `BT_IDENT_PREV_CMD` | Switch to the previous identity | -| `BT_IDENT_SEL_CMD` | Switch to a specific numbered identity | -| `BT_RST_CMD` | Hard reset of all bluetooth bonds | +| Define | Action | +| -------------------- | --------------------------------------------------------- | +| `BT_CLEAR_BONDS_CMD` | Clear bond information between the keyboard and host [^1] | -Because the `BT_IDENT_SEL_CMD` command takes an additional parameter, the numeric index of the identity to select, _all_ the commands for the bluetooth behavior must take that additional parameter, and ignore the value. To make this easier, -there are alias defines that add those default parameters for you: +Because future bluetooth commands will take an additional parameter, it is recommended to use +the following alias in your keymap to avoid having to change it later. -| Define | Action | -| --------------- | --------------------------------------------------------------------------------------- | -| `BT_IDENT_CLR` | Alias for `BT_IDENT_CLR_CMD 0` to clear paired keyboards (for the current identity)[^1] | -| `BT_IDENT_NEXT` | Alias for `BT_IDENT_NEXT_CMD 0` to switch to the next identity[^1] | -| `BT_IDENT_PREV` | Alias for `BT_IDENT_PREV_CMD 0` to switch to the previous identity | -| `BT_IDENT_SEL` | Alias for `BT_IDENT_SEL_CMD` to switch to a specific numbered identity | -| `BT_RST` | Alias for `BT_RST_CMD 0` to reset all bonds[^2] | - -[^1]: Multiple keyboard identities/profiles is only support on non-split keyboards as of this time. -[^2]: This may interrupt pairing between both halves of a split keyboard. For split keyboards, it is preferred to use the [/docs/bond-reset] combo to clear bonds on both devices +| Define | Action | +| ---------------- | ---------------------------------------------------------------------- | +| `BT_CLEAR_BONDS` | Alias for `BT_CLEAR_BONDS_CMD 0` to clear the bond to the current host | ## Bluetooth Behavior @@ -50,33 +40,13 @@ The bluetooth behavior completes an bluetooth action given on press. ### Behavior Binding - Reference: `&bt` -- Parameter #1: The bluetooth command define, e.g. `BT_IDENT_CLR_CMD` or `BT_RST_CMD` -- Parameter #2: The parameter for the command, when used to identify an identity/profile to select, e.g. `0` +- Parameter #1: The bluetooth command define, e.g. `BT_CLEAR_BONDS_CMD` +- Parameter #2: (Reserved for future bluetooth command types) ### Examples 1. Behavior to clear the paired host: ``` - &bt BT_IDENT_CLR - ``` - -1. Behavior to hard reset all bonded devices[^2]: - - ``` - &bt BT_IDENT_CLR - ``` - -Examples for non-split keyboards with multiple identities: - -1. Behavior to switch to the next identity: - - ``` - &bt BT_IDENT_NEXT - ``` - -1. Behavior to switch to the specific numbered identity: - - ``` - &bt BT_IDENT_SEL 1 + &bt BT_CLEAR_BONDS ``` From 13842a8a1e45b399864ba1ae5a759c614313b4db Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 3 Sep 2020 13:21:01 -0400 Subject: [PATCH 064/353] fix(bluetooth): Kconfig to clear bonds on start --- app/Kconfig | 4 ++++ app/src/ble.c | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/app/Kconfig b/app/Kconfig index 11a3cc05..b9d05a99 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -52,6 +52,10 @@ config ZMK_BLE_INIT_PRIORITY config SYSTEM_WORKQUEUE_STACK_SIZE default 2048 +config ZMK_BLE_CLEAR_BONDS_ON_START + bool "Configuration that clears all bond information from the keyboard on startup." + default n + # HID GATT notifications sent this way are *not* picked up by Linux, and possibly others. config BT_GATT_NOTIFY_MULTIPLE default n diff --git a/app/src/ble.c b/app/src/ble.c index 0aba16c5..1e748edf 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -346,6 +346,12 @@ static int zmk_ble_init(struct device *_arg) #endif +#if IS_ENABLED(CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START) + for (int i = 0; i < 10; i++) { + bt_unpair(i, NULL); + } +#endif + bt_conn_cb_register(&conn_callbacks); bt_conn_auth_cb_register(&zmk_ble_auth_cb_display); From b103eb4b059b60ebff81eb45db8405ed3a381257 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 3 Sep 2020 14:55:15 -0400 Subject: [PATCH 065/353] fix(bluetooth): Delete any previously stored name. --- app/src/ble.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/ble.c b/app/src/ble.c index 1e748edf..f7237625 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -347,6 +347,8 @@ static int zmk_ble_init(struct device *_arg) #endif #if IS_ENABLED(CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START) + settings_delete("bt/name"); + for (int i = 0; i < 10; i++) { bt_unpair(i, NULL); } From e88d0833c5f8ddd2b8a9b93ab7b6d03c141f8463 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 3 Sep 2020 21:11:21 -0400 Subject: [PATCH 066/353] fix(bluetooth): Log when clearing on start. --- app/src/ble.c | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/ble.c b/app/src/ble.c index f7237625..7ef95ca0 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -347,6 +347,7 @@ static int zmk_ble_init(struct device *_arg) #endif #if IS_ENABLED(CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START) + LOG_WRN("Clearing all existing BLE bond information from the keyboard"); settings_delete("bt/name"); for (int i = 0; i < 10; i++) { From 39f980a06dac1769e4f09abaf19d3ccbb4b34e67 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 8 Sep 2020 23:26:00 -0400 Subject: [PATCH 067/353] feat(bluetooth): Add back profiles, split fixes. * Add back in profiles, not using Zephyr BT identity infrastructure. * Restore additional `&bt` commands for profile operations. * Fix for split pairing and subscriptions, since Zephyr persists subscriptions across connects. * Remove keymap from peripheral builds, reduces firmware size, and avoids unneeded attempts to send HID data. --- app/CMakeLists.txt | 23 +- app/Kconfig | 26 +- app/include/dt-bindings/zmk/bt.h | 11 +- app/include/zmk/ble.h | 9 +- app/include/zmk/ble/profile.h | 16 ++ .../zmk/events/ble-active-profile-changed.h | 22 ++ app/src/behaviors/behavior_bt.c | 6 + app/src/ble.c | 248 +++++++++++++----- app/src/events/ble_active_profile_changed.c | 10 + app/src/hog.c | 36 ++- app/src/split/bluetooth/central.c | 41 +-- app/src/split/bluetooth/service.c | 6 + app/src/split_listener.c | 4 +- docs/docs/behavior/bluetooth.md | 46 +++- 14 files changed, 376 insertions(+), 128 deletions(-) create mode 100644 app/include/zmk/ble/profile.h create mode 100644 app/include/zmk/events/ble-active-profile-changed.h create mode 100644 app/src/events/ble_active_profile_changed.c diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index ca2767fd..3e0560b7 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -29,23 +29,26 @@ target_sources(app PRIVATE src/hid.c) target_sources(app PRIVATE src/sensors.c) target_sources_ifdef(CONFIG_ZMK_DISPLAY app PRIVATE src/display.c) target_sources(app PRIVATE src/event_manager.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble_unpair_combo.c) target_sources(app PRIVATE src/events/position_state_changed.c) target_sources(app PRIVATE src/events/keycode_state_changed.c) target_sources(app PRIVATE src/events/modifiers_state_changed.c) target_sources(app PRIVATE src/events/sensor_event.c) -target_sources(app PRIVATE src/behaviors/behavior_key_press.c) -target_sources(app PRIVATE src/behaviors/behavior_reset.c) -target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c) -target_sources(app PRIVATE src/behaviors/behavior_momentary_layer.c) -target_sources(app PRIVATE src/behaviors/behavior_toggle_layer.c) -target_sources(app PRIVATE src/behaviors/behavior_transparent.c) -target_sources(app PRIVATE src/behaviors/behavior_none.c) -target_sources(app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c) -target_sources(app PRIVATE src/keymap.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/events/ble_active_profile_changed.c) +if (NOT CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) + target_sources(app PRIVATE src/behaviors/behavior_key_press.c) + target_sources(app PRIVATE src/behaviors/behavior_reset.c) + target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c) + target_sources(app PRIVATE src/behaviors/behavior_momentary_layer.c) + target_sources(app PRIVATE src/behaviors/behavior_toggle_layer.c) + target_sources(app PRIVATE src/behaviors/behavior_transparent.c) + target_sources(app PRIVATE src/behaviors/behavior_none.c) + target_sources(app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c) + target_sources(app PRIVATE src/keymap.c) +endif() target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/behaviors/behavior_bt.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble.c) -target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble_unpair_combo.c) target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL app PRIVATE src/split_listener.c) target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL app PRIVATE src/split/bluetooth/service.c) target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL app PRIVATE src/split/bluetooth/central.c) diff --git a/app/Kconfig b/app/Kconfig index b9d05a99..917674d6 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -37,6 +37,7 @@ menuconfig ZMK_BLE select BT select BT_SMP select BT_SMP_SC_PAIR_ONLY + select BT_SMP_APP_PAIRING_ACCEPT select BT_PERIPHERAL select BT_GATT_DIS select BT_GATT_BAS @@ -105,19 +106,9 @@ config ZMK_SPLIT_BLE_ROLE_CENTRAL select BT_CENTRAL select BT_GATT_CLIENT -if ZMK_SPLIT_BLE_ROLE_CENTRAL - -config BT_MAX_CONN - default 2 - -config BT_MAX_PAIRED - # Bump this everywhere once we support switching active connections! - default 2 - -endif - config ZMK_SPLIT_BLE_ROLE_PERIPHERAL bool "Peripheral" + select BT_KEYS_OVERWRITE_OLDEST if ZMK_SPLIT_BLE_ROLE_PERIPHERAL @@ -128,16 +119,25 @@ config BT_MAX_PAIRED default 1 config BT_MAX_CONN - default 2 + default 1 config BT_GAP_AUTO_UPDATE_CONN_PARAMS default n endif - endchoice +if ZMK_BLE && (!ZMK_SPLIT_BLE || ZMK_SPLIT_BLE_ROLE_CENTRAL) + +config BT_MAX_CONN + default 6 + +config BT_MAX_PAIRED + default 5 + +endif + endif endif diff --git a/app/include/dt-bindings/zmk/bt.h b/app/include/dt-bindings/zmk/bt.h index 24d27ae6..b2899ab4 100644 --- a/app/include/dt-bindings/zmk/bt.h +++ b/app/include/dt-bindings/zmk/bt.h @@ -4,11 +4,18 @@ * SPDX-License-Identifier: MIT */ -#define BT_CLEAR_BONDS_CMD 0 +#define BT_CLEAR_BONDS_CMD 0 +#define BT_PROF_NEXT_CMD 1 +#define BT_PROF_PREV_CMD 2 +#define BT_PROF_SEL_CMD 3 +// #define BT_FULL_RESET_CMD 4 /* Note: Some future commands will include additional parameters, so we defines these aliases up front. */ -#define BT_CLEAR_BONDS BT_CLEAR_BONDS_CMD 0 \ No newline at end of file +#define BT_CLEAR_BONDS BT_CLEAR_BONDS_CMD 0 +#define BT_PROF_NEXT BT_PROF_NEXT_CMD 0 +#define BT_PROF_PREV BT_PROF_PREV_CMD 0 +#define BT_PROF_SEL BT_PROF_SEL_CMD \ No newline at end of file diff --git a/app/include/zmk/ble.h b/app/include/zmk/ble.h index 62d476ed..1cf71a77 100644 --- a/app/include/zmk/ble.h +++ b/app/include/zmk/ble.h @@ -6,11 +6,16 @@ #pragma once -#include #include - +#include int zmk_ble_clear_bonds(); +int zmk_ble_prof_next(); +int zmk_ble_prof_prev(); +int zmk_ble_prof_select(u8_t index); + +bt_addr_le_t *zmk_ble_active_profile_addr(); +char *zmk_ble_active_profile_name(); int zmk_ble_unpair_all(); bool zmk_ble_handle_key_user(struct zmk_key_event *key_event); diff --git a/app/include/zmk/ble/profile.h b/app/include/zmk/ble/profile.h new file mode 100644 index 00000000..9a79c6d3 --- /dev/null +++ b/app/include/zmk/ble/profile.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2020 Peter Johanson + * + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#include + +#define ZMK_BLE_PROFILE_NAME_MAX 15 + +struct zmk_ble_profile { + char name[ZMK_BLE_PROFILE_NAME_MAX]; + bt_addr_le_t peer; +}; diff --git a/app/include/zmk/events/ble-active-profile-changed.h b/app/include/zmk/events/ble-active-profile-changed.h new file mode 100644 index 00000000..c464236f --- /dev/null +++ b/app/include/zmk/events/ble-active-profile-changed.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 Peter Johanson + * + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#include +#include +#include + +#include + + +struct ble_active_profile_changed { + struct zmk_event_header header; + u8_t index; + struct zmk_ble_profile *profile; +}; + +ZMK_EVENT_DECLARE(ble_active_profile_changed); diff --git a/app/src/behaviors/behavior_bt.c b/app/src/behaviors/behavior_bt.c index 63a1ef19..bf156833 100644 --- a/app/src/behaviors/behavior_bt.c +++ b/app/src/behaviors/behavior_bt.c @@ -24,6 +24,12 @@ static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t c { case BT_CLEAR_BONDS_CMD: return zmk_ble_clear_bonds(); + case BT_PROF_NEXT_CMD: + return zmk_ble_prof_next(); + case BT_PROF_PREV_CMD: + return zmk_ble_prof_prev(); + case BT_PROF_SEL_CMD: + return zmk_ble_prof_select(arg); default: LOG_ERR("Unknown BT command: %d", command); } diff --git a/app/src/ble.c b/app/src/ble.c index 7ef95ca0..40e05a3a 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -25,49 +25,30 @@ #endif - #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); +#include #include #include +#include +#include static struct bt_conn *auth_passkey_entry_conn; static u8_t passkey_entries[6] = {0, 0, 0, 0, 0, 0}; static u8_t passkey_digit = 0; -#define ZMK_BT_LE_ADV_PARAM_INIT(_id, _options, _int_min, _int_max, _peer) \ -{ \ - .id = _id, \ - .sid = 0, \ - .secondary_max_skip = 0, \ - .options = (_options), \ - .interval_min = (_int_min), \ - .interval_max = (_int_max), \ - .peer = (_peer), \ -} - -#define ZMK_BT_LE_ADV_PARAM(_id, _options, _int_min, _int_max, _peer) \ - ((struct bt_le_adv_param[]) { \ - ZMK_BT_LE_ADV_PARAM_INIT(_id, _options, _int_min, _int_max, _peer) \ - }) - #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) -#define ZMK_ADV_PARAMS(_id) ZMK_BT_LE_ADV_PARAM(_id, \ - BT_LE_ADV_OPT_CONNECTABLE | \ - BT_LE_ADV_OPT_ONE_TIME | \ - BT_LE_ADV_OPT_USE_NAME, \ - BT_GAP_ADV_FAST_INT_MIN_2, \ - BT_GAP_ADV_FAST_INT_MAX_2, NULL) +#define PROFILE_COUNT (CONFIG_BT_MAX_PAIRED - 1) #else -#define ZMK_ADV_PARAMS(_id) ZMK_BT_LE_ADV_PARAM(_id, \ - BT_LE_ADV_OPT_CONNECTABLE | \ - BT_LE_ADV_OPT_USE_NAME, \ - BT_GAP_ADV_FAST_INT_MIN_2, \ - BT_GAP_ADV_FAST_INT_MAX_2, NULL) +#define PROFILE_COUNT CONFIG_BT_MAX_PAIRED #endif + +static struct zmk_ble_profile profiles[PROFILE_COUNT]; +static u8_t active_profile; + static const struct bt_data zmk_ble_ad[] = { BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)), BT_DATA_BYTES(BT_DATA_UUID16_SOME, @@ -88,6 +69,33 @@ static bt_addr_le_t peripheral_addr; #endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ +static void raise_profile_changed_event() +{ + struct ble_active_profile_changed *ev = new_ble_active_profile_changed(); + ev->index = active_profile; + ev->profile = &profiles[active_profile]; + + ZMK_EVENT_RAISE(ev); +} + +static bool active_profile_is_open() +{ + return !bt_addr_le_cmp(&profiles[active_profile].peer, BT_ADDR_LE_ANY); +} + +void set_profile_address(u8_t index, const bt_addr_le_t *addr) +{ + char setting_name[15]; + char addr_str[BT_ADDR_LE_STR_LEN]; + + bt_addr_le_to_str(addr, addr_str, sizeof(addr_str)); + + memcpy(&profiles[index].peer, addr, sizeof(bt_addr_le_t)); + sprintf(setting_name, "ble/profiles/%d", index); + LOG_DBG("Setting profile addr for %s to %s", log_strdup(setting_name), log_strdup(addr_str)); + settings_save_one(setting_name, &profiles[index], sizeof(struct zmk_ble_profile)); + raise_profile_changed_event(); +} int zmk_ble_adv_pause() { @@ -102,10 +110,12 @@ int zmk_ble_adv_pause() int zmk_ble_adv_resume() { - struct bt_le_adv_param *adv_params = ZMK_ADV_PARAMS(BT_ID_DEFAULT); + LOG_DBG("active_profile %d, directed? %s", active_profile, active_profile_is_open() ? "no" : "yes"); - LOG_DBG(""); - int err = bt_le_adv_start(adv_params, zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), NULL, 0); + int err = bt_le_adv_start( + BT_LE_ADV_CONN_NAME, + zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), + NULL, 0); if (err) { LOG_ERR("Advertising failed to start (err %d)", err); @@ -115,44 +125,54 @@ int zmk_ble_adv_resume() return 0; }; -static void disconnect_host_connection(struct bt_conn *conn, void *arg) -{ - struct bt_conn_info info; - bt_conn_get_info(conn, &info); - - if (info.role != BT_CONN_ROLE_SLAVE) { - return; - } - - bt_conn_disconnect(conn, BT_HCI_ERR_LOCALHOST_TERM_CONN); -}; - - -static void unpair_non_peripheral_bonds(const struct bt_bond_info *info, void *user_data) { - char addr[BT_ADDR_LE_STR_LEN]; - bt_addr_le_to_str(&info->addr, addr, sizeof(addr)); - -#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) - if (!bt_addr_le_cmp(&info->addr, &peripheral_addr)) { - LOG_DBG("Skipping unpairing peripheral %s", log_strdup(addr)); - return; - } -#endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ - - LOG_DBG("Unpairing %s", log_strdup(addr)); - bt_unpair(BT_ID_DEFAULT, &info->addr); -} - int zmk_ble_clear_bonds() { LOG_DBG(""); - bt_conn_foreach(BT_ID_DEFAULT, disconnect_host_connection, NULL); - bt_foreach_bond(BT_ID_DEFAULT, unpair_non_peripheral_bonds, NULL); + if (bt_addr_le_cmp(&profiles[active_profile].peer, BT_ADDR_LE_ANY)) { + LOG_DBG("Unpairing!"); + bt_unpair(BT_ID_DEFAULT, &profiles[active_profile].peer); + set_profile_address(active_profile, BT_ADDR_LE_ANY); + } return 0; }; +int zmk_ble_prof_select(u8_t index) +{ + LOG_DBG("profile %d", index); + if (active_profile == index) { + return 0; + } + + active_profile = index; + return settings_save_one("ble/active_profile", &active_profile, sizeof(active_profile)); + + raise_profile_changed_event(); +}; + +int zmk_ble_prof_next() +{ + LOG_DBG(""); + return zmk_ble_prof_select((active_profile + 1) % PROFILE_COUNT); +}; + +int zmk_ble_prof_prev() +{ + LOG_DBG(""); + return zmk_ble_prof_select((active_profile + PROFILE_COUNT - 1) % PROFILE_COUNT); +}; + +bt_addr_le_t *zmk_ble_active_profile_addr() +{ + return &profiles[active_profile].peer; +} + +char *zmk_ble_active_profile_name() +{ + return profiles[active_profile].name; +} + #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) void zmk_ble_set_peripheral_addr(bt_addr_le_t *addr) @@ -171,8 +191,47 @@ static int ble_profiles_handle_set(const char *name, size_t len, settings_read_c LOG_DBG("Setting BLE value %s", log_strdup(name)); + if (settings_name_steq(name, "profiles", &next) && next) { + char *endptr; + u8_t idx = strtoul(next, &endptr, 10); + if (*endptr != '\0') { + LOG_WRN("Invalid profile index: %s", log_strdup(next)); + return -EINVAL; + } + + if (len != sizeof(struct zmk_ble_profile)) { + LOG_ERR("Invalid profile size (got %d expected %d)", len, sizeof(struct zmk_ble_profile)); + return -EINVAL; + } + + if (idx >= PROFILE_COUNT) { + LOG_WRN("Profile address for index %d is larger than max of %d", idx, PROFILE_COUNT); + return -EINVAL; + } + + int err = read_cb(cb_arg, &profiles[idx], sizeof(struct zmk_ble_profile)); + if (err <= 0) { + LOG_ERR("Failed to handle profile address from settings (err %d)", err); + return err; + } + + char addr_str[BT_ADDR_LE_STR_LEN]; + bt_addr_le_to_str(&profiles[idx].peer, addr_str, sizeof(addr_str)); + + LOG_DBG("Loaded %s address for profile %d", log_strdup(addr_str), idx); + } else if (settings_name_steq(name, "active_profile", &next) && !next) { + if (len != sizeof(active_profile)) { + return -EINVAL; + } + + int err = read_cb(cb_arg, &active_profile, sizeof(active_profile)); + if (err <= 0) { + LOG_ERR("Failed to handle active profile from settings (err %d)", err); + return err; + } + } #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) - if (settings_name_steq(name, "peripheral_address", &next) && !next) { + else if (settings_name_steq(name, "peripheral_address", &next) && !next) { if (len != sizeof(bt_addr_le_t)) { return -EINVAL; } @@ -197,7 +256,6 @@ struct settings_handler profiles_handler = { static void connected(struct bt_conn *conn, u8_t err) { char addr[BT_ADDR_LE_STR_LEN]; - bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); if (err) @@ -229,11 +287,11 @@ static void disconnected(struct bt_conn *conn, u8_t reason) LOG_DBG("Disconnected from %s (reason 0x%02x)", log_strdup(addr), reason); #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) - if (bt_addr_le_cmp(&peripheral_addr, BT_ADDR_LE_ANY) && bt_addr_le_cmp(&peripheral_addr, bt_conn_get_dst(conn))) { - zmk_ble_adv_resume(); - } + // if (bt_addr_le_cmp(&peripheral_addr, BT_ADDR_LE_ANY) && bt_addr_le_cmp(&peripheral_addr, bt_conn_get_dst(conn))) { + // zmk_ble_adv_resume(); + // } #else - zmk_ble_adv_resume(); + // zmk_ble_adv_resume(); #endif } @@ -301,7 +359,52 @@ static void auth_cancel(struct bt_conn *conn) LOG_DBG("Pairing cancelled: %s", log_strdup(addr)); } +#if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) +static enum bt_security_err auth_pairing_accept(struct bt_conn *conn, const struct bt_conn_pairing_feat *const feat) +{ + struct bt_conn_info info; + bt_conn_get_info(conn, &info); + + LOG_DBG("role %d, open? %s", info.role, active_profile_is_open() ? "yes" : "no"); + if (info.role != BT_CONN_ROLE_SLAVE && !active_profile_is_open()) { + LOG_WRN("Rejecting pairing request to taken profile %d", active_profile); + return BT_SECURITY_ERR_PAIR_NOT_ALLOWED; + } + + return BT_SECURITY_ERR_SUCCESS; +}; +#endif /* !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) */ + +static void auth_pairing_complete(struct bt_conn *conn, bool bonded) +{ + struct bt_conn_info info; + char addr[BT_ADDR_LE_STR_LEN]; + const bt_addr_le_t *dst = bt_conn_get_dst(conn); + + bt_addr_le_to_str(dst, addr, sizeof(addr)); + bt_conn_get_info(conn, &info); + + if (info.role != BT_CONN_ROLE_SLAVE) { + LOG_DBG("SKIPPING FOR ROLE %d", info.role); + return; + } + +#if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) + if (!active_profile_is_open()) { + LOG_ERR("Pairing completed but current profile is not open: %s", log_strdup(addr)); + bt_unpair(BT_ID_DEFAULT, dst); + return; + } +#endif /* !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) */ + + set_profile_address(active_profile, dst); +}; + static struct bt_conn_auth_cb zmk_ble_auth_cb_display = { +#if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) + .pairing_accept = auth_pairing_accept, +#endif /* !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) */ + .pairing_complete = auth_pairing_complete, // .passkey_display = auth_passkey_display, #ifdef CONFIG_ZMK_BLE_PASSKEY_ENTRY @@ -348,11 +451,20 @@ static int zmk_ble_init(struct device *_arg) #if IS_ENABLED(CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START) LOG_WRN("Clearing all existing BLE bond information from the keyboard"); - settings_delete("bt/name"); for (int i = 0; i < 10; i++) { bt_unpair(i, NULL); } + + for (int i = 0; i < PROFILE_COUNT; i++) { + char setting_name[15]; + sprintf(setting_name, "ble/profiles/%d", i); + + err = settings_delete(setting_name); + if (err) { + LOG_ERR("Failed to delete setting: %d", err); + } + } #endif bt_conn_cb_register(&conn_callbacks); diff --git a/app/src/events/ble_active_profile_changed.c b/app/src/events/ble_active_profile_changed.c new file mode 100644 index 00000000..a270a144 --- /dev/null +++ b/app/src/events/ble_active_profile_changed.c @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2020 Peter Johanson + * + * SPDX-License-Identifier: MIT + */ + +#include +#include + +ZMK_EVENT_IMPL(ble_active_profile_changed); \ No newline at end of file diff --git a/app/src/hog.c b/app/src/hog.c index 92858d56..93e6d9b3 100644 --- a/app/src/hog.c +++ b/app/src/hog.c @@ -6,6 +6,10 @@ #include +#include + +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + #include #include @@ -148,12 +152,40 @@ BT_GATT_SERVICE_DEFINE(hog_svc, BT_GATT_PERM_WRITE, NULL, write_ctrl_point, &ctrl_point)); +struct bt_conn *destination_connection() { + struct bt_conn *conn; + bt_addr_le_t *addr = zmk_ble_active_profile_addr(); + LOG_DBG("Address pointer %p", addr); + if (!bt_addr_le_cmp(addr, BT_ADDR_LE_ANY)) { + LOG_WRN("Not sending, no active address for current profile"); + return NULL; + } else if ((conn = bt_conn_lookup_addr_le(BT_ID_DEFAULT, addr)) == NULL) { + LOG_WRN("Not sending, not connected to active profile"); + return NULL; + } + + return conn; + +} + int zmk_hog_send_keypad_report(struct zmk_hid_keypad_report_body *report) { - return bt_gatt_notify(NULL, &hog_svc.attrs[5], report, sizeof(struct zmk_hid_keypad_report_body)); + struct bt_conn *conn = destination_connection(); + if (conn == NULL) { + return -ENOTCONN; + } + + LOG_DBG("Sending to NULL? %s", conn == NULL ? "yes" : "no"); + + return bt_gatt_notify(conn, &hog_svc.attrs[5], report, sizeof(struct zmk_hid_keypad_report_body)); }; int zmk_hog_send_consumer_report(struct zmk_hid_consumer_report_body *report) { - return bt_gatt_notify(NULL, &hog_svc.attrs[10], report, sizeof(struct zmk_hid_consumer_report_body)); + struct bt_conn *conn = destination_connection(); + if (conn == NULL) { + return -ENOTCONN; + } + + return bt_gatt_notify(conn, &hog_svc.attrs[10], report, sizeof(struct zmk_hid_consumer_report_body)); }; diff --git a/app/src/split/bluetooth/central.c b/app/src/split/bluetooth/central.c index df8f34ec..6d8b4357 100644 --- a/app/src/split/bluetooth/central.c +++ b/app/src/split/bluetooth/central.c @@ -76,10 +76,19 @@ static u8_t split_central_notify_func(struct bt_conn *conn, static int split_central_subscribe(struct bt_conn *conn) { int err = bt_gatt_subscribe(conn, &subscribe_params); - if (err && err != -EALREADY) { - LOG_ERR("Subscribe failed (err %d)", err); - } else { + switch (err) { + case -EALREADY: + LOG_DBG("[ALREADY SUBSCRIBED]"); + break; + // break; + // bt_gatt_unsubscribe(conn, &subscribe_params); + // return split_central_subscribe(conn); + case 0: LOG_DBG("[SUBSCRIBED]"); + break; + default: + LOG_ERR("Subscribe failed (err %d)", err); + break; } return 0; @@ -145,21 +154,17 @@ static void split_central_process_connection(struct bt_conn *conn) { return; } - if (conn == default_conn) { - if (subscribe_params.value) { - split_central_subscribe(conn); - } else { - discover_params.uuid = &uuid.uuid; - discover_params.func = split_central_discovery_func; - discover_params.start_handle = 0x0001; - discover_params.end_handle = 0xffff; - discover_params.type = BT_GATT_DISCOVER_PRIMARY; + if (conn == default_conn && !subscribe_params.value) { + discover_params.uuid = &uuid.uuid; + discover_params.func = split_central_discovery_func; + discover_params.start_handle = 0x0001; + discover_params.end_handle = 0xffff; + discover_params.type = BT_GATT_DISCOVER_PRIMARY; - err = bt_gatt_discover(default_conn, &discover_params); - if (err) { - LOG_ERR("Discover failed(err %d)", err); - return; - } + err = bt_gatt_discover(default_conn, &discover_params); + if (err) { + LOG_ERR("Discover failed(err %d)", err); + return; } } @@ -281,7 +286,7 @@ static void split_central_connected(struct bt_conn *conn, u8_t conn_err) if (conn_err) { - LOG_ERR("Failed to connect to %s (%u)", addr, conn_err); + LOG_ERR("Failed to connect to %s (%u)", log_strdup(addr), conn_err); bt_conn_unref(default_conn); default_conn = NULL; diff --git a/app/src/split/bluetooth/service.c b/app/src/split/bluetooth/service.c index 0a5ddb7a..c2f65d28 100644 --- a/app/src/split/bluetooth/service.c +++ b/app/src/split/bluetooth/service.c @@ -6,6 +6,11 @@ #include #include + +#include + +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + #include #include @@ -28,6 +33,7 @@ static ssize_t split_svc_num_of_positions(struct bt_conn *conn, const struct bt_ static void split_svc_pos_state_ccc(const struct bt_gatt_attr *attr, u16_t value) { + LOG_DBG("value %d", value); } diff --git a/app/src/split_listener.c b/app/src/split_listener.c index ee59c484..12638073 100644 --- a/app/src/split_listener.c +++ b/app/src/split_listener.c @@ -25,9 +25,9 @@ int split_listener(const struct zmk_event_header *eh) if (is_position_state_changed(eh)) { const struct position_state_changed *ev = cast_position_state_changed(eh); if (ev->state) { - zmk_split_bt_position_pressed(ev->position); + return zmk_split_bt_position_pressed(ev->position); } else { - zmk_split_bt_position_released(ev->position); + return zmk_split_bt_position_released(ev->position); } } return 0; diff --git a/docs/docs/behavior/bluetooth.md b/docs/docs/behavior/bluetooth.md index f605c962..4a121a31 100644 --- a/docs/docs/behavior/bluetooth.md +++ b/docs/docs/behavior/bluetooth.md @@ -6,8 +6,8 @@ sidebar_label: Bluetooth ## Summary The bluetooth behavior allows management of various settings and states related to the bluetooth connection(s) -between the keyboard and the host. As of right now, there is only one such action support, but in the future -more will be added. +between the keyboard and the host. By default, ZMK supports five "profiles" for selecting which bonded host +computer/laptop/keyboard should receive the keyboard input; many of the commands here operation on those profiles. ## Bluetooth Command Defines @@ -22,16 +22,22 @@ This will allow you to reference the actions defined in this header such as `BT_ Here is a table describing the command for each define: -| Define | Action | -| -------------------- | --------------------------------------------------------- | -| `BT_CLEAR_BONDS_CMD` | Clear bond information between the keyboard and host [^1] | +| Define | Action | +| -------------------- | ---------------------------------------------------------------------------------------------- | +| `BT_CLEAR_BONDS_CMD` | Clear bond information between the keyboard and host for the selected profile [^1] | +| `BT_PROF_NEXT_CMD` | Switch to the next profile, cycling through to the first one when the end is reached. | +| `BT_PROF_PREV_CMD` | Switch to the previous profile, cycling through to the last one when the beginning is reached. | +| `BT_PROF_SEL_CMD` | Select the 0-indexed profile by number. | -Because future bluetooth commands will take an additional parameter, it is recommended to use -the following alias in your keymap to avoid having to change it later. +Because at least one bluetooth commands takes an additional parameter, it is recommended to use +the following aliases in your keymap to avoid having to specify an ignored second parameter: -| Define | Action | -| ---------------- | ---------------------------------------------------------------------- | -| `BT_CLEAR_BONDS` | Alias for `BT_CLEAR_BONDS_CMD 0` to clear the bond to the current host | +| Define | Action | +| ---------------- | ---------------------------------------------------------------------------------------- | +| `BT_CLEAR_BONDS` | Alias for `BT_CLEAR_BONDS_CMD 0` to clear the current profile's bond to the current host | +| `BT_PROF_NEXT` | Alias for `BT_PROF_NEXT_CMD 0` to select the next profile | +| `BT_PROF_PREV` | Alias for `BT_PROF_PREV_CMD 0` to select the previous profile | +| `BT_PROF_SEL` | Alias for `BT_PROF_SEL_CMD` to select the given profile, e.g. `&bt BT_PROF_SEL 1` | ## Bluetooth Behavior @@ -45,8 +51,26 @@ The bluetooth behavior completes an bluetooth action given on press. ### Examples -1. Behavior to clear the paired host: +1. Behavior binding to clear the paired host for the selected profile: ``` &bt BT_CLEAR_BONDS ``` + +1. Behavior binding to select the next profile: + + ``` + &bt BT_PROF_NEXT + ``` + +1. Behavior binding to select the previous profile: + + ``` + &bt BT_PROF_NEXT + ``` + +1. Behavior binding to select the 2nd profile (passed parameters are [zero based](https://en.wikipedia.org/wiki/Zero-based_numbering)): + + ``` + &bt BT_PROF_SEL 1 + ``` From fb91be5164a5b6ba78b19c7a2597c13ddd992f81 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Wed, 9 Sep 2020 14:33:09 -0400 Subject: [PATCH 068/353] fix(bluetooth): Configs for non-splits. --- app/Kconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Kconfig b/app/Kconfig index 917674d6..61805656 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -128,6 +128,10 @@ endif endchoice +endif + +endif + if ZMK_BLE && (!ZMK_SPLIT_BLE || ZMK_SPLIT_BLE_ROLE_CENTRAL) config BT_MAX_CONN @@ -138,10 +142,6 @@ config BT_MAX_PAIRED endif -endif - -endif - endmenu config ZMK_KSCAN_MOCK_DRIVER From 652bb6ce05254f8168f279396a50b92d7a2182c3 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sat, 12 Sep 2020 23:48:44 -0400 Subject: [PATCH 069/353] feat(bluetooth): Add new settings_reset shield. * Easy to build board/image that will clear saved profile/bond information for a fresh start for keyboards. --- .github/workflows/build.yml | 1 + .../shields/settings_reset/Kconfig.defconfig | 10 ++++++++ .../shields/settings_reset/Kconfig.shield | 5 ++++ .../settings_reset/settings_reset.conf | 1 + .../settings_reset/settings_reset.keymap | 22 +++++++++++++++++ .../settings_reset/settings_reset.overlay | 24 +++++++++++++++++++ 6 files changed, 63 insertions(+) create mode 100644 app/boards/shields/settings_reset/Kconfig.defconfig create mode 100644 app/boards/shields/settings_reset/Kconfig.shield create mode 100644 app/boards/shields/settings_reset/settings_reset.conf create mode 100644 app/boards/shields/settings_reset/settings_reset.keymap create mode 100644 app/boards/shields/settings_reset/settings_reset.overlay diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8a711c1..02657c0c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,6 +17,7 @@ jobs: - lily58_left - lily58_right - romac + - settings_reset include: - board: proton_c shield: clueboard_california diff --git a/app/boards/shields/settings_reset/Kconfig.defconfig b/app/boards/shields/settings_reset/Kconfig.defconfig new file mode 100644 index 00000000..6d050cb4 --- /dev/null +++ b/app/boards/shields/settings_reset/Kconfig.defconfig @@ -0,0 +1,10 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +if SHIELD_SETTINGS_RESET + +config ZMK_KEYBOARD_NAME + default "SETTINGS RESET" + +endif + diff --git a/app/boards/shields/settings_reset/Kconfig.shield b/app/boards/shields/settings_reset/Kconfig.shield new file mode 100644 index 00000000..b5ce97f9 --- /dev/null +++ b/app/boards/shields/settings_reset/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config SHIELD_SETTINGS_RESET + def_bool $(shields_list_contains,settings_reset) diff --git a/app/boards/shields/settings_reset/settings_reset.conf b/app/boards/shields/settings_reset/settings_reset.conf new file mode 100644 index 00000000..8052a6cf --- /dev/null +++ b/app/boards/shields/settings_reset/settings_reset.conf @@ -0,0 +1 @@ +CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START=y diff --git a/app/boards/shields/settings_reset/settings_reset.keymap b/app/boards/shields/settings_reset/settings_reset.keymap new file mode 100644 index 00000000..05236445 --- /dev/null +++ b/app/boards/shields/settings_reset/settings_reset.keymap @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &reset + >; + }; + }; +}; + + diff --git a/app/boards/shields/settings_reset/settings_reset.overlay b/app/boards/shields/settings_reset/settings_reset.overlay new file mode 100644 index 00000000..a2b5799b --- /dev/null +++ b/app/boards/shields/settings_reset/settings_reset.overlay @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-direct"; + label = "KSCAN"; + + input-gpios + = <&pro_micro_d 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + ; + }; + +}; + From 6c8b0b53f0dbec695ab967ee947916875ed49352 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 13 Sep 2020 22:20:25 -0400 Subject: [PATCH 070/353] refactor(bluetooth): More concise names. --- app/include/dt-bindings/zmk/bt.h | 16 +++++++------- app/src/behaviors/behavior_bt.c | 8 +++---- docs/docs/behavior/bluetooth.md | 36 ++++++++++++++++---------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/app/include/dt-bindings/zmk/bt.h b/app/include/dt-bindings/zmk/bt.h index b2899ab4..bf8b4f53 100644 --- a/app/include/dt-bindings/zmk/bt.h +++ b/app/include/dt-bindings/zmk/bt.h @@ -4,10 +4,10 @@ * SPDX-License-Identifier: MIT */ -#define BT_CLEAR_BONDS_CMD 0 -#define BT_PROF_NEXT_CMD 1 -#define BT_PROF_PREV_CMD 2 -#define BT_PROF_SEL_CMD 3 +#define BT_CLR_CMD 0 +#define BT_NXT_CMD 1 +#define BT_PRV_CMD 2 +#define BT_SEL_CMD 3 // #define BT_FULL_RESET_CMD 4 /* @@ -15,7 +15,7 @@ Note: Some future commands will include additional parameters, so we defines these aliases up front. */ -#define BT_CLEAR_BONDS BT_CLEAR_BONDS_CMD 0 -#define BT_PROF_NEXT BT_PROF_NEXT_CMD 0 -#define BT_PROF_PREV BT_PROF_PREV_CMD 0 -#define BT_PROF_SEL BT_PROF_SEL_CMD \ No newline at end of file +#define BT_CLR BT_CLR_CMD 0 +#define BT_NXT BT_NXT_CMD 0 +#define BT_PRV BT_PRV_CMD 0 +#define BT_SEL BT_SEL_CMD \ No newline at end of file diff --git a/app/src/behaviors/behavior_bt.c b/app/src/behaviors/behavior_bt.c index bf156833..3a5fbfbf 100644 --- a/app/src/behaviors/behavior_bt.c +++ b/app/src/behaviors/behavior_bt.c @@ -22,13 +22,13 @@ static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t c { switch (command) { - case BT_CLEAR_BONDS_CMD: + case BT_CLR_CMD: return zmk_ble_clear_bonds(); - case BT_PROF_NEXT_CMD: + case BT_NXT_CMD: return zmk_ble_prof_next(); - case BT_PROF_PREV_CMD: + case BT_PRV_CMD: return zmk_ble_prof_prev(); - case BT_PROF_SEL_CMD: + case BT_SEL_CMD: return zmk_ble_prof_select(arg); default: LOG_ERR("Unknown BT command: %d", command); diff --git a/docs/docs/behavior/bluetooth.md b/docs/docs/behavior/bluetooth.md index 4a121a31..f802a9a2 100644 --- a/docs/docs/behavior/bluetooth.md +++ b/docs/docs/behavior/bluetooth.md @@ -18,26 +18,26 @@ which is added at the top of the keymap file: #include ``` -This will allow you to reference the actions defined in this header such as `BT_CLEAR_BONDS_CMD`. +This will allow you to reference the actions defined in this header such as `BT_CLR_CMD`. Here is a table describing the command for each define: -| Define | Action | -| -------------------- | ---------------------------------------------------------------------------------------------- | -| `BT_CLEAR_BONDS_CMD` | Clear bond information between the keyboard and host for the selected profile [^1] | -| `BT_PROF_NEXT_CMD` | Switch to the next profile, cycling through to the first one when the end is reached. | -| `BT_PROF_PREV_CMD` | Switch to the previous profile, cycling through to the last one when the beginning is reached. | -| `BT_PROF_SEL_CMD` | Select the 0-indexed profile by number. | +| Define | Action | +| ------------ | ---------------------------------------------------------------------------------------------- | +| `BT_CLR_CMD` | Clear bond information between the keyboard and host for the selected profile [^1] | +| `BT_NXT_CMD` | Switch to the next profile, cycling through to the first one when the end is reached. | +| `BT_PRV_CMD` | Switch to the previous profile, cycling through to the last one when the beginning is reached. | +| `BT_SEL_CMD` | Select the 0-indexed profile by number. | Because at least one bluetooth commands takes an additional parameter, it is recommended to use the following aliases in your keymap to avoid having to specify an ignored second parameter: -| Define | Action | -| ---------------- | ---------------------------------------------------------------------------------------- | -| `BT_CLEAR_BONDS` | Alias for `BT_CLEAR_BONDS_CMD 0` to clear the current profile's bond to the current host | -| `BT_PROF_NEXT` | Alias for `BT_PROF_NEXT_CMD 0` to select the next profile | -| `BT_PROF_PREV` | Alias for `BT_PROF_PREV_CMD 0` to select the previous profile | -| `BT_PROF_SEL` | Alias for `BT_PROF_SEL_CMD` to select the given profile, e.g. `&bt BT_PROF_SEL 1` | +| Define | Action | +| -------- | -------------------------------------------------------------------------------- | +| `BT_CLR` | Alias for `BT_CLR_CMD 0` to clear the current profile's bond to the current host | +| `BT_NXT` | Alias for `BT_NXT_CMD 0` to select the next profile | +| `BT_PRV` | Alias for `BT_PRV_CMD 0` to select the previous profile | +| `BT_SEL` | Alias for `BT_SEL_CMD` to select the given profile, e.g. `&bt BT_SEL 1` | ## Bluetooth Behavior @@ -46,7 +46,7 @@ The bluetooth behavior completes an bluetooth action given on press. ### Behavior Binding - Reference: `&bt` -- Parameter #1: The bluetooth command define, e.g. `BT_CLEAR_BONDS_CMD` +- Parameter #1: The bluetooth command define, e.g. `BT_CLR_CMD` - Parameter #2: (Reserved for future bluetooth command types) ### Examples @@ -54,23 +54,23 @@ The bluetooth behavior completes an bluetooth action given on press. 1. Behavior binding to clear the paired host for the selected profile: ``` - &bt BT_CLEAR_BONDS + &bt BT_CLR ``` 1. Behavior binding to select the next profile: ``` - &bt BT_PROF_NEXT + &bt BT_NXT ``` 1. Behavior binding to select the previous profile: ``` - &bt BT_PROF_NEXT + &bt BT_NXT ``` 1. Behavior binding to select the 2nd profile (passed parameters are [zero based](https://en.wikipedia.org/wiki/Zero-based_numbering)): ``` - &bt BT_PROF_SEL 1 + &bt BT_SEL 1 ``` From 4658999e31865e54d02955c500c716385e6c69d8 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 13 Sep 2020 22:22:12 -0400 Subject: [PATCH 071/353] fix(bluetooth): Reject pairing to taken profiles. --- app/src/ble.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/ble.c b/app/src/ble.c index 40e05a3a..a2a8207a 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -366,7 +366,7 @@ static enum bt_security_err auth_pairing_accept(struct bt_conn *conn, const stru bt_conn_get_info(conn, &info); LOG_DBG("role %d, open? %s", info.role, active_profile_is_open() ? "yes" : "no"); - if (info.role != BT_CONN_ROLE_SLAVE && !active_profile_is_open()) { + if (info.role == BT_CONN_ROLE_SLAVE && !active_profile_is_open()) { LOG_WRN("Rejecting pairing request to taken profile %d", active_profile); return BT_SECURITY_ERR_PAIR_NOT_ALLOWED; } From 296a89ce6364fd97099d694dddcbb30e8b0925c0 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 10 Sep 2020 15:02:37 -0400 Subject: [PATCH 072/353] feat(ci): Run clang-format to check files. --- .clang-format | 4 ++++ .github/workflows/clang-format-lint.yml | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 .clang-format create mode 100644 .github/workflows/clang-format-lint.yml diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..3c29522a --- /dev/null +++ b/.clang-format @@ -0,0 +1,4 @@ +BasedOnStyle: LLVM +IndentWidth: 4 +ColumnLimit: 100 +SortIncludes: false diff --git a/.github/workflows/clang-format-lint.yml b/.github/workflows/clang-format-lint.yml new file mode 100644 index 00000000..061bc3da --- /dev/null +++ b/.github/workflows/clang-format-lint.yml @@ -0,0 +1,25 @@ +name: clang-format-lint + +on: + push: + paths: + - "app/boards/**/*.c" + - "app/include/**/*.h" + - "app/src/**" + pull_request: + paths: + - "app/boards/**/*.c" + - "app/include/**/*.h" + - "app/src/**" + +jobs: + build: + runs-on: ubuntu-latest + name: clang-format lint + + steps: + - uses: actions/checkout@v2 + - uses: DoozyX/clang-format-lint-action@v0.9 + with: + source: "./app" + extensions: "h,c" From 191a2d755ad4761bd04a30a113e05119ad7aa61e Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 13 Sep 2020 22:53:24 -0400 Subject: [PATCH 073/353] chore: clang-format the codebase. * Use the LLVM style * Override indent width (8) and column limit (100) * Fixes #142. --- app/boards/arm/dz60rgb/pinmux.c | 54 +- app/boards/arm/nrfmicro/pinmux.c | 27 +- app/boards/arm/planck/pinmux.c | 52 +- app/boards/arm/proton_c/pinmux.c | 54 +- app/drivers/zephyr/ec11.c | 193 +++-- app/drivers/zephyr/ec11.h | 49 +- app/drivers/zephyr/ec11_trigger.c | 170 ++--- app/drivers/zephyr/kscan_gpio_direct.c | 351 ++++----- app/drivers/zephyr/kscan_gpio_matrix.c | 476 ++++++------ app/include/drivers/behavior.h | 69 +- app/include/dt-bindings/zmk/bt.h | 16 +- app/include/dt-bindings/zmk/keys.h | 6 +- app/include/dt-bindings/zmk/reset.h | 9 +- app/include/zmk/event-manager.h | 79 +- .../zmk/events/ble-active-profile-changed.h | 1 - .../zmk/events/keycode-state-changed.h | 6 +- .../zmk/events/modifiers-state-changed.h | 8 +- app/include/zmk/hid.h | 12 +- app/include/zmk/keys.h | 3 +- app/include/zmk/matrix.h | 18 +- app/include/zmk/split/bluetooth/uuid.h | 5 +- app/src/behaviors/behavior_bt.c | 23 +- app/src/behaviors/behavior_hold_tap.c | 714 +++++++++--------- app/src/behaviors/behavior_key_press.c | 48 +- app/src/behaviors/behavior_momentary_layer.c | 35 +- app/src/behaviors/behavior_none.c | 32 +- app/src/behaviors/behavior_reset.c | 40 +- app/src/behaviors/behavior_rgb_underglow.c | 45 +- .../behavior_sensor_rotate_key_press.c | 100 ++- app/src/behaviors/behavior_toggle_layer.c | 33 +- app/src/behaviors/behavior_transparent.c | 32 +- app/src/ble.c | 160 ++-- app/src/ble_unpair_combo.c | 17 +- app/src/display.c | 6 +- app/src/endpoints.c | 21 +- app/src/event_manager.c | 44 +- app/src/hid.c | 87 +-- app/src/hid_listener.c | 136 ++-- app/src/hog.c | 124 ++- app/src/keymap.c | 257 +++---- app/src/kscan.c | 78 +- app/src/kscan_composite.c | 63 +- app/src/kscan_mock.c | 119 ++- app/src/main.c | 20 +- app/src/matrix_transform.c | 11 +- app/src/rgb_underglow.c | 211 +++--- app/src/sensors.c | 32 +- app/src/split/bluetooth/central.c | 423 +++++------ app/src/split/bluetooth/service.c | 39 +- app/src/split_listener.c | 21 +- app/src/usb_hid.c | 89 +-- 51 files changed, 2171 insertions(+), 2547 deletions(-) diff --git a/app/boards/arm/dz60rgb/pinmux.c b/app/boards/arm/dz60rgb/pinmux.c index 60e231b6..f59a31bf 100644 --- a/app/boards/arm/dz60rgb/pinmux.c +++ b/app/boards/arm/dz60rgb/pinmux.c @@ -15,55 +15,53 @@ /* pin assignments for STM32F3DISCOVERY board */ static const struct pin_config pinconf[] = { #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart1), okay) && CONFIG_SERIAL - {STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, - {STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, + {STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, + {STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart2), okay) && CONFIG_SERIAL - {STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, - {STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, + {STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, + {STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(i2c1), okay) && CONFIG_I2C - {STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, - {STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, + {STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, + {STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(i2c2), okay) && CONFIG_I2C - {STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, - {STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, + {STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, + {STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(spi1), okay) && CONFIG_SPI #ifdef CONFIG_SPI_STM32_USE_HW_SS - {STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, + {STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, #endif /* CONFIG_SPI_STM32_USE_HW_SS */ - {STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, - {STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, - {STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, + {STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, + {STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, + {STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(spi2), okay) && CONFIG_SPI #ifdef CONFIG_SPI_STM32_USE_HW_SS - {STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, + {STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, #endif /* CONFIG_SPI_STM32_USE_HW_SS */ - {STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, - {STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, - {STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, + {STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, + {STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, + {STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, #endif #ifdef CONFIG_USB_DC_STM32 - {STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, - {STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, -#endif /* CONFIG_USB_DC_STM32 */ + {STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, + {STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, +#endif /* CONFIG_USB_DC_STM32 */ #if DT_NODE_HAS_STATUS(DT_NODELABEL(can1), okay) && CONFIG_CAN - {STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, - {STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, + {STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, + {STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, #endif }; -static int pinmux_stm32_init(struct device *port) -{ - ARG_UNUSED(port); +static int pinmux_stm32_init(struct device *port) { + ARG_UNUSED(port); - stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); + stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); - return 0; + return 0; } -SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, - CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); \ No newline at end of file +SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); \ No newline at end of file diff --git a/app/boards/arm/nrfmicro/pinmux.c b/app/boards/arm/nrfmicro/pinmux.c index 0536fe0d..4e330b65 100644 --- a/app/boards/arm/nrfmicro/pinmux.c +++ b/app/boards/arm/nrfmicro/pinmux.c @@ -11,31 +11,30 @@ #include #include -static int pinmux_nrfmicro_init(struct device *port) -{ - ARG_UNUSED(port); +static int pinmux_nrfmicro_init(struct device *port) { + ARG_UNUSED(port); - struct device *p1 = device_get_binding("GPIO_1"); + struct device *p1 = device_get_binding("GPIO_1"); #if CONFIG_BOARD_NRFMICRO_13 - struct device *p0 = device_get_binding("GPIO_0"); - // enable EXT_VCC (use 0 for nRFMicro 1.3, use 1 for nRFMicro 1.1) - gpio_pin_configure(p1, 9, GPIO_OUTPUT); - gpio_pin_set(p1, 9, 0); + struct device *p0 = device_get_binding("GPIO_0"); + // enable EXT_VCC (use 0 for nRFMicro 1.3, use 1 for nRFMicro 1.1) + gpio_pin_configure(p1, 9, GPIO_OUTPUT); + gpio_pin_set(p1, 9, 0); #if CONFIG_BOARD_NRFMICRO_CHARGER - gpio_pin_configure(p0, 5, GPIO_OUTPUT); - gpio_pin_set(p0, 5, 0); + gpio_pin_configure(p0, 5, GPIO_OUTPUT); + gpio_pin_set(p0, 5, 0); #else - gpio_pin_configure(p0, 5, GPIO_INPUT); + gpio_pin_configure(p0, 5, GPIO_INPUT); #endif #else // enable EXT_VCC (use 0 for nRFMicro 1.3, use 1 for nRFMicro 1.1) - gpio_pin_configure(p1, 9, GPIO_OUTPUT); - gpio_pin_set(p1, 9, 1); + gpio_pin_configure(p1, 9, GPIO_OUTPUT); + gpio_pin_set(p1, 9, 1); #endif - return 0; + return 0; } SYS_INIT(pinmux_nrfmicro_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); diff --git a/app/boards/arm/planck/pinmux.c b/app/boards/arm/planck/pinmux.c index 5df5c90e..61cc16ae 100644 --- a/app/boards/arm/planck/pinmux.c +++ b/app/boards/arm/planck/pinmux.c @@ -15,55 +15,53 @@ /* pin assignments for STM32F3DISCOVERY board */ static const struct pin_config pinconf[] = { #ifdef CONFIG_UART_1 - {STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, - {STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, + {STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, + {STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, #endif /* CONFIG_UART_1 */ #ifdef CONFIG_UART_2 - {STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, - {STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, + {STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, + {STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, #endif /* CONFIG_UART_2 */ #ifdef CONFIG_I2C_1 - {STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, - {STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, + {STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, + {STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, #endif /* CONFIG_I2C_1 */ #ifdef CONFIG_I2C_2 - {STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, - {STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, + {STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, + {STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, #endif /* CONFIG_I2C_2 */ #ifdef CONFIG_SPI_1 #ifdef CONFIG_SPI_STM32_USE_HW_SS - {STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, + {STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, #endif /* CONFIG_SPI_STM32_USE_HW_SS */ - {STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, - {STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, - {STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, + {STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, + {STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, + {STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, #endif /* CONFIG_SPI_1 */ #ifdef CONFIG_SPI_2 #ifdef CONFIG_SPI_STM32_USE_HW_SS - {STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, + {STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, #endif /* CONFIG_SPI_STM32_USE_HW_SS */ - {STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, - {STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, - {STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, + {STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, + {STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, + {STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, #endif /* CONFIG_SPI_2 */ #ifdef CONFIG_USB_DC_STM32 - {STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, - {STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, + {STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, + {STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, #endif /* CONFIG_USB_DC_STM32 */ #ifdef CONFIG_CAN_1 - {STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, - {STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, + {STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, + {STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, #endif /* CONFIG_CAN_1 */ }; -static int pinmux_stm32_init(struct device *port) -{ - ARG_UNUSED(port); +static int pinmux_stm32_init(struct device *port) { + ARG_UNUSED(port); - stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); + stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); - return 0; + return 0; } -SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, - CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); +SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); diff --git a/app/boards/arm/proton_c/pinmux.c b/app/boards/arm/proton_c/pinmux.c index a6aaae0a..9ffabd73 100644 --- a/app/boards/arm/proton_c/pinmux.c +++ b/app/boards/arm/proton_c/pinmux.c @@ -15,55 +15,53 @@ /* pin assignments for STM32F3DISCOVERY board */ static const struct pin_config pinconf[] = { #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart1), okay) && CONFIG_SERIAL - {STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, - {STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, + {STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, + {STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart2), okay) && CONFIG_SERIAL - {STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, - {STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, + {STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, + {STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(i2c1), okay) && CONFIG_I2C - {STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, - {STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, + {STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, + {STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(i2c2), okay) && CONFIG_I2C - {STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, - {STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, + {STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, + {STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(spi1), okay) && CONFIG_SPI #ifdef CONFIG_SPI_STM32_USE_HW_SS - {STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, + {STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, #endif /* CONFIG_SPI_STM32_USE_HW_SS */ - {STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, - {STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, - {STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, + {STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, + {STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, + {STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(spi2), okay) && CONFIG_SPI #ifdef CONFIG_SPI_STM32_USE_HW_SS - {STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, + {STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, #endif /* CONFIG_SPI_STM32_USE_HW_SS */ - {STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, - {STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, - {STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, + {STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, + {STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, + {STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, #endif #ifdef CONFIG_USB_DC_STM32 - {STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, - {STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, -#endif /* CONFIG_USB_DC_STM32 */ + {STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, + {STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, +#endif /* CONFIG_USB_DC_STM32 */ #if DT_NODE_HAS_STATUS(DT_NODELABEL(can1), okay) && CONFIG_CAN - {STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, - {STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, + {STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, + {STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, #endif }; -static int pinmux_stm32_init(struct device *port) -{ - ARG_UNUSED(port); +static int pinmux_stm32_init(struct device *port) { + ARG_UNUSED(port); - stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); + stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); - return 0; + return 0; } -SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, - CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); +SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); diff --git a/app/drivers/zephyr/ec11.c b/app/drivers/zephyr/ec11.c index dfa86efd..a4e96c24 100644 --- a/app/drivers/zephyr/ec11.c +++ b/app/drivers/zephyr/ec11.c @@ -18,136 +18,131 @@ LOG_MODULE_REGISTER(EC11, CONFIG_SENSOR_LOG_LEVEL); -static int ec11_get_ab_state(struct device *dev) -{ - struct ec11_data *drv_data = dev->driver_data; - const struct ec11_config *drv_cfg = dev->config_info; +static int ec11_get_ab_state(struct device *dev) { + struct ec11_data *drv_data = dev->driver_data; + const struct ec11_config *drv_cfg = dev->config_info; - return (gpio_pin_get(drv_data->a, drv_cfg->a_pin) << 1) | gpio_pin_get(drv_data->b, drv_cfg->b_pin); + return (gpio_pin_get(drv_data->a, drv_cfg->a_pin) << 1) | + gpio_pin_get(drv_data->b, drv_cfg->b_pin); } -static int ec11_sample_fetch(struct device *dev, enum sensor_channel chan) -{ - struct ec11_data *drv_data = dev->driver_data; - const struct ec11_config *drv_cfg = dev->config_info; - u8_t val; - s8_t delta; +static int ec11_sample_fetch(struct device *dev, enum sensor_channel chan) { + struct ec11_data *drv_data = dev->driver_data; + const struct ec11_config *drv_cfg = dev->config_info; + u8_t val; + s8_t delta; - __ASSERT_NO_MSG(chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_ROTATION); + __ASSERT_NO_MSG(chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_ROTATION); - val = ec11_get_ab_state(dev); + val = ec11_get_ab_state(dev); - LOG_DBG("prev: %d, new: %d", drv_data->ab_state, val); + LOG_DBG("prev: %d, new: %d", drv_data->ab_state, val); - switch(val | (drv_data->ab_state << 2)) { - case 0b0010: case 0b0100: case 0b1101: case 0b1011: - delta = -1; - break; - case 0b0001: case 0b0111: case 0b1110: case 0b1000: - delta = 1; - break; - default: - delta = 0; - break; - } + switch (val | (drv_data->ab_state << 2)) { + case 0b0010: + case 0b0100: + case 0b1101: + case 0b1011: + delta = -1; + break; + case 0b0001: + case 0b0111: + case 0b1110: + case 0b1000: + delta = 1; + break; + default: + delta = 0; + break; + } - LOG_DBG("Delta: %d", delta); + LOG_DBG("Delta: %d", delta); - drv_data->pulses += delta; - drv_data->ab_state = val; + drv_data->pulses += delta; + drv_data->ab_state = val; - drv_data->ticks = drv_data->pulses / drv_cfg->resolution; - drv_data->delta = delta; - drv_data->pulses %= drv_cfg->resolution; - - return 0; + drv_data->ticks = drv_data->pulses / drv_cfg->resolution; + drv_data->delta = delta; + drv_data->pulses %= drv_cfg->resolution; + + return 0; } -static int ec11_channel_get(struct device *dev, - enum sensor_channel chan, - struct sensor_value *val) -{ - struct ec11_data *drv_data = dev->driver_data; - - if (chan != SENSOR_CHAN_ROTATION) { - return -ENOTSUP; - } +static int ec11_channel_get(struct device *dev, enum sensor_channel chan, + struct sensor_value *val) { + struct ec11_data *drv_data = dev->driver_data; - val->val1 = drv_data->ticks; - val->val2 = drv_data->delta; - - return 0; + if (chan != SENSOR_CHAN_ROTATION) { + return -ENOTSUP; + } + + val->val1 = drv_data->ticks; + val->val2 = drv_data->delta; + + return 0; } static const struct sensor_driver_api ec11_driver_api = { #ifdef CONFIG_EC11_TRIGGER - .trigger_set = ec11_trigger_set, + .trigger_set = ec11_trigger_set, #endif - .sample_fetch = ec11_sample_fetch, - .channel_get = ec11_channel_get, + .sample_fetch = ec11_sample_fetch, + .channel_get = ec11_channel_get, }; -int ec11_init(struct device *dev) -{ - struct ec11_data *drv_data = dev->driver_data; - const struct ec11_config *drv_cfg = dev->config_info; +int ec11_init(struct device *dev) { + struct ec11_data *drv_data = dev->driver_data; + const struct ec11_config *drv_cfg = dev->config_info; - LOG_DBG("A: %s %d B: %s %d resolution %d", drv_cfg->a_label, drv_cfg->a_pin, drv_cfg->b_label, drv_cfg->b_pin, drv_cfg->resolution); + LOG_DBG("A: %s %d B: %s %d resolution %d", drv_cfg->a_label, drv_cfg->a_pin, drv_cfg->b_label, + drv_cfg->b_pin, drv_cfg->resolution); - drv_data->a = device_get_binding(drv_cfg->a_label); - if (drv_data->a == NULL) { - LOG_ERR("Failed to get pointer to A GPIO device"); - return -EINVAL; - } + drv_data->a = device_get_binding(drv_cfg->a_label); + if (drv_data->a == NULL) { + LOG_ERR("Failed to get pointer to A GPIO device"); + return -EINVAL; + } - drv_data->b = device_get_binding(drv_cfg->b_label); - if (drv_data->b == NULL) { - LOG_ERR("Failed to get pointer to B GPIO device"); - return -EINVAL; - } - - if (gpio_pin_configure(drv_data->a, drv_cfg->a_pin, - drv_cfg->a_flags - | GPIO_INPUT)) { - LOG_DBG("Failed to configure A pin"); - return -EIO; - } - - if (gpio_pin_configure(drv_data->b, drv_cfg->b_pin, - drv_cfg->b_flags - | GPIO_INPUT)) { - LOG_DBG("Failed to configure B pin"); - return -EIO; - } + drv_data->b = device_get_binding(drv_cfg->b_label); + if (drv_data->b == NULL) { + LOG_ERR("Failed to get pointer to B GPIO device"); + return -EINVAL; + } + if (gpio_pin_configure(drv_data->a, drv_cfg->a_pin, drv_cfg->a_flags | GPIO_INPUT)) { + LOG_DBG("Failed to configure A pin"); + return -EIO; + } + if (gpio_pin_configure(drv_data->b, drv_cfg->b_pin, drv_cfg->b_flags | GPIO_INPUT)) { + LOG_DBG("Failed to configure B pin"); + return -EIO; + } #ifdef CONFIG_EC11_TRIGGER - if (ec11_init_interrupt(dev) < 0) { - LOG_DBG("Failed to initialize interrupt!"); - return -EIO; - } + if (ec11_init_interrupt(dev) < 0) { + LOG_DBG("Failed to initialize interrupt!"); + return -EIO; + } #endif - drv_data->ab_state = ec11_get_ab_state(dev); + drv_data->ab_state = ec11_get_ab_state(dev); - return 0; + return 0; } -#define EC11_INST(n) \ - struct ec11_data ec11_data_##n; \ - const struct ec11_config ec11_cfg_##n = { \ - .a_label = DT_INST_GPIO_LABEL(n, a_gpios), \ - .a_pin = DT_INST_GPIO_PIN(n, a_gpios), \ - .a_flags = DT_INST_GPIO_FLAGS(n, a_gpios), \ - .b_label = DT_INST_GPIO_LABEL(n, b_gpios), \ - .b_pin = DT_INST_GPIO_PIN(n, b_gpios), \ - .b_flags = DT_INST_GPIO_FLAGS(n, b_gpios), \ - COND_CODE_0(DT_INST_NODE_HAS_PROP(n, resolution), (1), (DT_INST_PROP(n, resolution))), \ - }; \ - DEVICE_AND_API_INIT(ec11, DT_INST_LABEL(n), ec11_init, \ - &ec11_data_##n, \ - &ec11_cfg_##n, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, \ - &ec11_driver_api); +#define EC11_INST(n) \ + struct ec11_data ec11_data_##n; \ + const struct ec11_config ec11_cfg_##n = { \ + .a_label = DT_INST_GPIO_LABEL(n, a_gpios), \ + .a_pin = DT_INST_GPIO_PIN(n, a_gpios), \ + .a_flags = DT_INST_GPIO_FLAGS(n, a_gpios), \ + .b_label = DT_INST_GPIO_LABEL(n, b_gpios), \ + .b_pin = DT_INST_GPIO_PIN(n, b_gpios), \ + .b_flags = DT_INST_GPIO_FLAGS(n, b_gpios), \ + COND_CODE_0(DT_INST_NODE_HAS_PROP(n, resolution), (1), (DT_INST_PROP(n, resolution))), \ + }; \ + DEVICE_AND_API_INIT(ec11, DT_INST_LABEL(n), ec11_init, &ec11_data_##n, &ec11_cfg_##n, \ + POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, &ec11_driver_api); DT_INST_FOREACH_STATUS_OKAY(EC11_INST) \ No newline at end of file diff --git a/app/drivers/zephyr/ec11.h b/app/drivers/zephyr/ec11.h index 27fed9bd..e62e7333 100644 --- a/app/drivers/zephyr/ec11.h +++ b/app/drivers/zephyr/ec11.h @@ -11,39 +11,39 @@ #include struct ec11_config { - const char *a_label; - const u8_t a_pin; - const u8_t a_flags; + const char *a_label; + const u8_t a_pin; + const u8_t a_flags; - const char *b_label; - const u8_t b_pin; - const u8_t b_flags; + const char *b_label; + const u8_t b_pin; + const u8_t b_flags; - const u8_t resolution; + const u8_t resolution; }; struct ec11_data { - struct device *a; - struct device *b; - u8_t ab_state; - s8_t pulses; - s8_t ticks; - s8_t delta; + struct device *a; + struct device *b; + u8_t ab_state; + s8_t pulses; + s8_t ticks; + s8_t delta; #ifdef CONFIG_EC11_TRIGGER - struct gpio_callback a_gpio_cb; - struct gpio_callback b_gpio_cb; - struct device *dev; + struct gpio_callback a_gpio_cb; + struct gpio_callback b_gpio_cb; + struct device *dev; - sensor_trigger_handler_t handler; - const struct sensor_trigger *trigger; + sensor_trigger_handler_t handler; + const struct sensor_trigger *trigger; #if defined(CONFIG_EC11_TRIGGER_OWN_THREAD) - K_THREAD_STACK_MEMBER(thread_stack, CONFIG_EC11_THREAD_STACK_SIZE); - struct k_sem gpio_sem; - struct k_thread thread; + K_THREAD_STACK_MEMBER(thread_stack, CONFIG_EC11_THREAD_STACK_SIZE); + struct k_sem gpio_sem; + struct k_thread thread; #elif defined(CONFIG_EC11_TRIGGER_GLOBAL_THREAD) - struct k_work work; + struct k_work work; #endif #endif /* CONFIG_EC11_TRIGGER */ @@ -51,9 +51,8 @@ struct ec11_data { #ifdef CONFIG_EC11_TRIGGER -int ec11_trigger_set(struct device *dev, - const struct sensor_trigger *trig, - sensor_trigger_handler_t handler); +int ec11_trigger_set(struct device *dev, const struct sensor_trigger *trig, + sensor_trigger_handler_t handler); int ec11_init_interrupt(struct device *dev); #endif diff --git a/app/drivers/zephyr/ec11_trigger.c b/app/drivers/zephyr/ec11_trigger.c index a04a5610..248ac320 100644 --- a/app/drivers/zephyr/ec11_trigger.c +++ b/app/drivers/zephyr/ec11_trigger.c @@ -19,158 +19,130 @@ extern struct ec11_data ec11_driver; #include LOG_MODULE_DECLARE(EC11, CONFIG_SENSOR_LOG_LEVEL); -static inline void setup_int(struct device *dev, - bool enable) -{ - struct ec11_data *data = dev->driver_data; - const struct ec11_config *cfg = dev->config_info; +static inline void setup_int(struct device *dev, bool enable) { + struct ec11_data *data = dev->driver_data; + const struct ec11_config *cfg = dev->config_info; - LOG_DBG("enabled %s", (enable ? "true" : "false")); + LOG_DBG("enabled %s", (enable ? "true" : "false")); - if (gpio_pin_interrupt_configure(data->a, - cfg->a_pin, - enable - ? GPIO_INT_EDGE_BOTH - : GPIO_INT_DISABLE)) { - LOG_WRN("Unable to set A pin GPIO interrupt"); - } + if (gpio_pin_interrupt_configure(data->a, cfg->a_pin, + enable ? GPIO_INT_EDGE_BOTH : GPIO_INT_DISABLE)) { + LOG_WRN("Unable to set A pin GPIO interrupt"); + } - if (gpio_pin_interrupt_configure(data->b, - cfg->b_pin, - enable - ? GPIO_INT_EDGE_BOTH - : GPIO_INT_DISABLE)) { - LOG_WRN("Unable to set A pin GPIO interrupt"); - } + if (gpio_pin_interrupt_configure(data->b, cfg->b_pin, + enable ? GPIO_INT_EDGE_BOTH : GPIO_INT_DISABLE)) { + LOG_WRN("Unable to set A pin GPIO interrupt"); + } } -static void ec11_a_gpio_callback(struct device *dev, - struct gpio_callback *cb, u32_t pins) -{ - struct ec11_data *drv_data = - CONTAINER_OF(cb, struct ec11_data, a_gpio_cb); +static void ec11_a_gpio_callback(struct device *dev, struct gpio_callback *cb, u32_t pins) { + struct ec11_data *drv_data = CONTAINER_OF(cb, struct ec11_data, a_gpio_cb); - LOG_DBG(""); + LOG_DBG(""); - setup_int(drv_data->dev, false); + setup_int(drv_data->dev, false); #if defined(CONFIG_EC11_TRIGGER_OWN_THREAD) - k_sem_give(&drv_data->gpio_sem); + k_sem_give(&drv_data->gpio_sem); #elif defined(CONFIG_EC11_TRIGGER_GLOBAL_THREAD) - k_work_submit(&drv_data->work); + k_work_submit(&drv_data->work); #endif } -static void ec11_b_gpio_callback(struct device *dev, - struct gpio_callback *cb, u32_t pins) -{ - struct ec11_data *drv_data = - CONTAINER_OF(cb, struct ec11_data, b_gpio_cb); +static void ec11_b_gpio_callback(struct device *dev, struct gpio_callback *cb, u32_t pins) { + struct ec11_data *drv_data = CONTAINER_OF(cb, struct ec11_data, b_gpio_cb); - LOG_DBG(""); + LOG_DBG(""); - setup_int(drv_data->dev, false); + setup_int(drv_data->dev, false); #if defined(CONFIG_EC11_TRIGGER_OWN_THREAD) - k_sem_give(&drv_data->gpio_sem); + k_sem_give(&drv_data->gpio_sem); #elif defined(CONFIG_EC11_TRIGGER_GLOBAL_THREAD) - k_work_submit(&drv_data->work); + k_work_submit(&drv_data->work); #endif } -static void ec11_thread_cb(void *arg) -{ - struct device *dev = arg; - struct ec11_data *drv_data = dev->driver_data; +static void ec11_thread_cb(void *arg) { + struct device *dev = arg; + struct ec11_data *drv_data = dev->driver_data; - drv_data->handler(dev, drv_data->trigger); + drv_data->handler(dev, drv_data->trigger); - setup_int(dev, true); + setup_int(dev, true); } #ifdef CONFIG_EC11_TRIGGER_OWN_THREAD -static void ec11_thread(int dev_ptr, int unused) -{ - struct device *dev = INT_TO_POINTER(dev_ptr); - struct ec11_data *drv_data = dev->driver_data; +static void ec11_thread(int dev_ptr, int unused) { + struct device *dev = INT_TO_POINTER(dev_ptr); + struct ec11_data *drv_data = dev->driver_data; - ARG_UNUSED(unused); + ARG_UNUSED(unused); - while (1) { - k_sem_take(&drv_data->gpio_sem, K_FOREVER); - ec11_thread_cb(dev); - } + while (1) { + k_sem_take(&drv_data->gpio_sem, K_FOREVER); + ec11_thread_cb(dev); + } } #endif #ifdef CONFIG_EC11_TRIGGER_GLOBAL_THREAD -static void ec11_work_cb(struct k_work *work) -{ - struct ec11_data *drv_data = - CONTAINER_OF(work, struct ec11_data, work); +static void ec11_work_cb(struct k_work *work) { + struct ec11_data *drv_data = CONTAINER_OF(work, struct ec11_data, work); - LOG_DBG(""); + LOG_DBG(""); - ec11_thread_cb(drv_data->dev); + ec11_thread_cb(drv_data->dev); } #endif -int ec11_trigger_set(struct device *dev, - const struct sensor_trigger *trig, - sensor_trigger_handler_t handler) -{ - struct ec11_data *drv_data = dev->driver_data; +int ec11_trigger_set(struct device *dev, const struct sensor_trigger *trig, + sensor_trigger_handler_t handler) { + struct ec11_data *drv_data = dev->driver_data; - setup_int(dev, false); + setup_int(dev, false); - k_msleep(5); + k_msleep(5); - drv_data->trigger = trig; - drv_data->handler = handler; + drv_data->trigger = trig; + drv_data->handler = handler; - setup_int(dev, true); + setup_int(dev, true); - return 0; + return 0; } -int ec11_init_interrupt(struct device *dev) -{ - struct ec11_data *drv_data = dev->driver_data; - const struct ec11_config *drv_cfg = dev->config_info; +int ec11_init_interrupt(struct device *dev) { + struct ec11_data *drv_data = dev->driver_data; + const struct ec11_config *drv_cfg = dev->config_info; - drv_data->dev = dev; - /* setup gpio interrupt */ + drv_data->dev = dev; + /* setup gpio interrupt */ + gpio_init_callback(&drv_data->a_gpio_cb, ec11_a_gpio_callback, BIT(drv_cfg->a_pin)); - gpio_init_callback(&drv_data->a_gpio_cb, - ec11_a_gpio_callback, - BIT(drv_cfg->a_pin)); + if (gpio_add_callback(drv_data->a, &drv_data->a_gpio_cb) < 0) { + LOG_DBG("Failed to set A callback!"); + return -EIO; + } - if (gpio_add_callback(drv_data->a, &drv_data->a_gpio_cb) < 0) { - LOG_DBG("Failed to set A callback!"); - return -EIO; - } + gpio_init_callback(&drv_data->b_gpio_cb, ec11_b_gpio_callback, BIT(drv_cfg->b_pin)); - gpio_init_callback(&drv_data->b_gpio_cb, - ec11_b_gpio_callback, - BIT(drv_cfg->b_pin)); - - if (gpio_add_callback(drv_data->b, &drv_data->b_gpio_cb) < 0) { - LOG_DBG("Failed to set B callback!"); - return -EIO; - } + if (gpio_add_callback(drv_data->b, &drv_data->b_gpio_cb) < 0) { + LOG_DBG("Failed to set B callback!"); + return -EIO; + } #if defined(CONFIG_EC11_TRIGGER_OWN_THREAD) - k_sem_init(&drv_data->gpio_sem, 0, UINT_MAX); + k_sem_init(&drv_data->gpio_sem, 0, UINT_MAX); - k_thread_create(&drv_data->thread, drv_data->thread_stack, - CONFIG_EC11_THREAD_STACK_SIZE, - (k_thread_entry_t)ec11_thread, dev, - 0, NULL, K_PRIO_COOP(CONFIG_EC11_THREAD_PRIORITY), - 0, K_NO_WAIT); + k_thread_create(&drv_data->thread, drv_data->thread_stack, CONFIG_EC11_THREAD_STACK_SIZE, + (k_thread_entry_t)ec11_thread, dev, 0, NULL, + K_PRIO_COOP(CONFIG_EC11_THREAD_PRIORITY), 0, K_NO_WAIT); #elif defined(CONFIG_EC11_TRIGGER_GLOBAL_THREAD) - k_work_init(&drv_data->work, ec11_work_cb); + k_work_init(&drv_data->work, ec11_work_cb); #endif - return 0; + return 0; } diff --git a/app/drivers/zephyr/kscan_gpio_direct.c b/app/drivers/zephyr/kscan_gpio_direct.c index 6e6a01f3..1e5ab59e 100644 --- a/app/drivers/zephyr/kscan_gpio_direct.c +++ b/app/drivers/zephyr/kscan_gpio_direct.c @@ -15,248 +15,215 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) -struct kscan_gpio_item_config -{ - char *label; - gpio_pin_t pin; - gpio_flags_t flags; +struct kscan_gpio_item_config { + char *label; + gpio_pin_t pin; + gpio_flags_t flags; }; union work_reference { - struct k_delayed_work delayed; - struct k_work direct; + struct k_delayed_work delayed; + struct k_work direct; }; -struct kscan_gpio_config -{ - u8_t num_of_inputs; - u8_t debounce_period; - struct kscan_gpio_item_config inputs[]; +struct kscan_gpio_config { + u8_t num_of_inputs; + u8_t debounce_period; + struct kscan_gpio_item_config inputs[]; }; -struct kscan_gpio_data -{ +struct kscan_gpio_data { #if defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) - struct k_timer poll_timer; + struct k_timer poll_timer; #endif /* defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ - kscan_callback_t callback; - union work_reference work; - struct device *dev; - u32_t pin_state; - struct device *inputs[]; + kscan_callback_t callback; + union work_reference work; + struct device *dev; + u32_t pin_state; + struct device *inputs[]; }; -static struct device **kscan_gpio_input_devices(struct device *dev) -{ - struct kscan_gpio_data *data = dev->driver_data; - return data->inputs; +static struct device **kscan_gpio_input_devices(struct device *dev) { + struct kscan_gpio_data *data = dev->driver_data; + return data->inputs; } -static const struct kscan_gpio_item_config *kscan_gpio_input_configs(struct device *dev) -{ - const struct kscan_gpio_config *cfg = dev->config_info; - return cfg->inputs; +static const struct kscan_gpio_item_config *kscan_gpio_input_configs(struct device *dev) { + const struct kscan_gpio_config *cfg = dev->config_info; + return cfg->inputs; } #if !defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) -struct kscan_gpio_irq_callback -{ - union work_reference *work; - u8_t debounce_period; - struct gpio_callback callback; +struct kscan_gpio_irq_callback { + union work_reference *work; + u8_t debounce_period; + struct gpio_callback callback; }; -static int kscan_gpio_config_interrupts(struct device *dev, gpio_flags_t flags) -{ - const struct kscan_gpio_config *cfg = dev->config_info; - struct device **devices = kscan_gpio_input_devices(dev); - const struct kscan_gpio_item_config *configs = kscan_gpio_input_configs(dev); - - for (int i = 0; i < cfg->num_of_inputs; i++) - { - struct device *dev = devices[i]; - const struct kscan_gpio_item_config *cfg = &configs[i]; +static int kscan_gpio_config_interrupts(struct device *dev, gpio_flags_t flags) { + const struct kscan_gpio_config *cfg = dev->config_info; + struct device **devices = kscan_gpio_input_devices(dev); + const struct kscan_gpio_item_config *configs = kscan_gpio_input_configs(dev); - int err = gpio_pin_interrupt_configure(dev, cfg->pin, flags); + for (int i = 0; i < cfg->num_of_inputs; i++) { + struct device *dev = devices[i]; + const struct kscan_gpio_item_config *cfg = &configs[i]; - if (err) - { - LOG_ERR("Unable to enable matrix GPIO interrupt"); - return err; - } - } + int err = gpio_pin_interrupt_configure(dev, cfg->pin, flags); - return 0; + if (err) { + LOG_ERR("Unable to enable matrix GPIO interrupt"); + return err; + } + } + + return 0; } -static int kscan_gpio_direct_enable(struct device *dev) -{ - return kscan_gpio_config_interrupts(dev, - GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); +static int kscan_gpio_direct_enable(struct device *dev) { + return kscan_gpio_config_interrupts(dev, GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); } -static int kscan_gpio_direct_disable(struct device *dev) -{ - return kscan_gpio_config_interrupts(dev, - GPIO_INT_DISABLE); +static int kscan_gpio_direct_disable(struct device *dev) { + return kscan_gpio_config_interrupts(dev, GPIO_INT_DISABLE); } -static void kscan_gpio_irq_callback_handler(struct device *dev, - struct gpio_callback *cb, gpio_port_pins_t pin) -{ - struct kscan_gpio_irq_callback *data = - CONTAINER_OF(cb, struct kscan_gpio_irq_callback, callback); - - if (data->debounce_period > 0) { - k_delayed_work_cancel(&data->work->delayed); - k_delayed_work_submit(&data->work->delayed, K_MSEC(data->debounce_period)); - } else { - k_work_submit(&data->work->direct); - } +static void kscan_gpio_irq_callback_handler(struct device *dev, struct gpio_callback *cb, + gpio_port_pins_t pin) { + struct kscan_gpio_irq_callback *data = + CONTAINER_OF(cb, struct kscan_gpio_irq_callback, callback); + + if (data->debounce_period > 0) { + k_delayed_work_cancel(&data->work->delayed); + k_delayed_work_submit(&data->work->delayed, K_MSEC(data->debounce_period)); + } else { + k_work_submit(&data->work->direct); + } } -#else /* !defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ +#else /* !defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ -static void kscan_gpio_timer_handler(struct k_timer *timer) -{ - struct kscan_gpio_data *data = - CONTAINER_OF(timer, struct kscan_gpio_data, poll_timer); +static void kscan_gpio_timer_handler(struct k_timer *timer) { + struct kscan_gpio_data *data = CONTAINER_OF(timer, struct kscan_gpio_data, poll_timer); - k_work_submit(&data->work.direct); + k_work_submit(&data->work.direct); } -static int kscan_gpio_direct_enable(struct device *dev) -{ - struct kscan_gpio_data *data = dev->driver_data; - k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); - return 0; +static int kscan_gpio_direct_enable(struct device *dev) { + struct kscan_gpio_data *data = dev->driver_data; + k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); + return 0; } -static int kscan_gpio_direct_disable(struct device *dev) -{ - struct kscan_gpio_data *data = dev->driver_data; - k_timer_stop(&data->poll_timer); - return 0; +static int kscan_gpio_direct_disable(struct device *dev) { + struct kscan_gpio_data *data = dev->driver_data; + k_timer_stop(&data->poll_timer); + return 0; } #endif /* defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ -static int kscan_gpio_direct_configure(struct device *dev, kscan_callback_t callback) -{ - struct kscan_gpio_data *data = dev->driver_data; - if (!callback) - { - return -EINVAL; - } - data->callback = callback; - return 0; +static int kscan_gpio_direct_configure(struct device *dev, kscan_callback_t callback) { + struct kscan_gpio_data *data = dev->driver_data; + if (!callback) { + return -EINVAL; + } + data->callback = callback; + return 0; } -static int kscan_gpio_read(struct device *dev) -{ - struct kscan_gpio_data *data = dev->driver_data; - const struct kscan_gpio_config *cfg = dev->config_info; - u32_t read_state = data->pin_state; - for (int i = 0; i < cfg->num_of_inputs; i++) - { - struct device *in_dev = kscan_gpio_input_devices(dev)[i]; - const struct kscan_gpio_item_config *in_cfg = &kscan_gpio_input_configs(dev)[i]; - WRITE_BIT(read_state, i, gpio_pin_get(in_dev, in_cfg->pin) > 0); - } - for (int i = 0; i < cfg->num_of_inputs; i++) - { - bool prev_pressed = BIT(i) & data->pin_state; - bool pressed = BIT(i) & read_state; - if (pressed != prev_pressed) - { - LOG_DBG("Sending event at %d,%d state %s", - 0, i, (pressed ? "on" : "off")); - WRITE_BIT(data->pin_state, i, pressed); - data->callback(dev, 0, i, pressed); - } - } - return 0; +static int kscan_gpio_read(struct device *dev) { + struct kscan_gpio_data *data = dev->driver_data; + const struct kscan_gpio_config *cfg = dev->config_info; + u32_t read_state = data->pin_state; + for (int i = 0; i < cfg->num_of_inputs; i++) { + struct device *in_dev = kscan_gpio_input_devices(dev)[i]; + const struct kscan_gpio_item_config *in_cfg = &kscan_gpio_input_configs(dev)[i]; + WRITE_BIT(read_state, i, gpio_pin_get(in_dev, in_cfg->pin) > 0); + } + for (int i = 0; i < cfg->num_of_inputs; i++) { + bool prev_pressed = BIT(i) & data->pin_state; + bool pressed = BIT(i) & read_state; + if (pressed != prev_pressed) { + LOG_DBG("Sending event at %d,%d state %s", 0, i, (pressed ? "on" : "off")); + WRITE_BIT(data->pin_state, i, pressed); + data->callback(dev, 0, i, pressed); + } + } + return 0; } -static void kscan_gpio_work_handler(struct k_work *work) -{ - struct kscan_gpio_data *data = - CONTAINER_OF(work, struct kscan_gpio_data, work); - kscan_gpio_read(data->dev); +static void kscan_gpio_work_handler(struct k_work *work) { + struct kscan_gpio_data *data = CONTAINER_OF(work, struct kscan_gpio_data, work); + kscan_gpio_read(data->dev); } static const struct kscan_driver_api gpio_driver_api = { - .config = kscan_gpio_direct_configure, - .enable_callback = kscan_gpio_direct_enable, - .disable_callback = kscan_gpio_direct_disable, + .config = kscan_gpio_direct_configure, + .enable_callback = kscan_gpio_direct_enable, + .disable_callback = kscan_gpio_direct_disable, }; -#define KSCAN_DIRECT_INPUT_ITEM(i,n) \ - { \ - .label = DT_INST_GPIO_LABEL_BY_IDX(n, input_gpios, i), \ - .pin = DT_INST_GPIO_PIN_BY_IDX(n, input_gpios, i), \ - .flags = DT_INST_GPIO_FLAGS_BY_IDX(n, input_gpios, i), \ - }, +#define KSCAN_DIRECT_INPUT_ITEM(i, n) \ + { \ + .label = DT_INST_GPIO_LABEL_BY_IDX(n, input_gpios, i), \ + .pin = DT_INST_GPIO_PIN_BY_IDX(n, input_gpios, i), \ + .flags = DT_INST_GPIO_FLAGS_BY_IDX(n, input_gpios, i), \ + }, #define INST_INPUT_LEN(n) DT_INST_PROP_LEN(n, input_gpios) -#define GPIO_INST_INIT(n) \ - COND_CODE_0(CONFIG_ZMK_KSCAN_GPIO_POLLING, (static struct kscan_gpio_irq_callback \ - irq_callbacks_##n[INST_INPUT_LEN(n)];), ()) \ - static struct kscan_gpio_data kscan_gpio_data_##n = { \ - .inputs = { [INST_INPUT_LEN(n)-1] = NULL } \ - }; \ - static int kscan_gpio_init_##n(struct device *dev) \ - { \ - struct kscan_gpio_data *data = dev->driver_data; \ - const struct kscan_gpio_config *cfg = dev->config_info; \ - int err; \ - struct device **input_devices = kscan_gpio_input_devices(dev); \ - for (int i = 0; i < cfg->num_of_inputs; i++) \ - { \ - const struct kscan_gpio_item_config *in_cfg = &kscan_gpio_input_configs(dev)[i]; \ - input_devices[i] = device_get_binding(in_cfg->label); \ - if (!input_devices[i]) \ - { \ - LOG_ERR("Unable to find input GPIO device"); \ - return -EINVAL; \ - } \ - err = gpio_pin_configure(input_devices[i], in_cfg->pin, GPIO_INPUT | in_cfg->flags); \ - if (err) \ - { \ - LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ - return err; \ - } \ - COND_CODE_0(CONFIG_ZMK_KSCAN_GPIO_POLLING, \ - ( \ - irq_callbacks_##n[i].work = &data->work; \ - irq_callbacks_##n[i].debounce_period = cfg->debounce_period; \ - gpio_init_callback(&irq_callbacks_##n[i].callback, kscan_gpio_irq_callback_handler, BIT(in_cfg->pin)); \ - err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ - if (err) \ - { \ - LOG_ERR("Error adding the callback to the column device"); \ - return err; \ - } \ - ), ()) \ - } \ - data->dev = dev; \ - COND_CODE_1(CONFIG_ZMK_KSCAN_GPIO_POLLING, (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ( )) \ - if (cfg->debounce_period > 0) { \ - k_delayed_work_init(&data->work.delayed, kscan_gpio_work_handler); \ - } else { \ - k_work_init(&data->work.direct, kscan_gpio_work_handler); \ - } \ - return 0; \ - } \ - static const struct kscan_gpio_config kscan_gpio_config_##n = { \ - .inputs = { UTIL_LISTIFY(INST_INPUT_LEN(n), KSCAN_DIRECT_INPUT_ITEM, n) }, \ - .num_of_inputs = INST_INPUT_LEN(n), \ - .debounce_period = DT_INST_PROP(n, debounce_period) \ - }; \ - DEVICE_AND_API_INIT(kscan_gpio_##n, DT_INST_LABEL(n), kscan_gpio_init_##n, \ - &kscan_gpio_data_##n, &kscan_gpio_config_##n, \ - POST_KERNEL, CONFIG_ZMK_KSCAN_INIT_PRIORITY, \ - &gpio_driver_api); +#define GPIO_INST_INIT(n) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + (static struct kscan_gpio_irq_callback irq_callbacks_##n[INST_INPUT_LEN(n)];), ()) \ + static struct kscan_gpio_data kscan_gpio_data_##n = { \ + .inputs = {[INST_INPUT_LEN(n) - 1] = NULL}}; \ + static int kscan_gpio_init_##n(struct device *dev) { \ + struct kscan_gpio_data *data = dev->driver_data; \ + const struct kscan_gpio_config *cfg = dev->config_info; \ + int err; \ + struct device **input_devices = kscan_gpio_input_devices(dev); \ + for (int i = 0; i < cfg->num_of_inputs; i++) { \ + const struct kscan_gpio_item_config *in_cfg = &kscan_gpio_input_configs(dev)[i]; \ + input_devices[i] = device_get_binding(in_cfg->label); \ + if (!input_devices[i]) { \ + LOG_ERR("Unable to find input GPIO device"); \ + return -EINVAL; \ + } \ + err = gpio_pin_configure(input_devices[i], in_cfg->pin, GPIO_INPUT | in_cfg->flags); \ + if (err) { \ + LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ + return err; \ + } \ + COND_CODE_0( \ + CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + (irq_callbacks_##n[i].work = &data->work; \ + irq_callbacks_##n[i].debounce_period = cfg->debounce_period; \ + gpio_init_callback(&irq_callbacks_##n[i].callback, \ + kscan_gpio_irq_callback_handler, BIT(in_cfg->pin)); \ + err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ + if (err) { \ + LOG_ERR("Error adding the callback to the column device"); \ + return err; \ + }), \ + ()) \ + } \ + data->dev = dev; \ + COND_CODE_1(CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ + if (cfg->debounce_period > 0) { \ + k_delayed_work_init(&data->work.delayed, kscan_gpio_work_handler); \ + } else { \ + k_work_init(&data->work.direct, kscan_gpio_work_handler); \ + } \ + return 0; \ + } \ + static const struct kscan_gpio_config kscan_gpio_config_##n = { \ + .inputs = {UTIL_LISTIFY(INST_INPUT_LEN(n), KSCAN_DIRECT_INPUT_ITEM, n)}, \ + .num_of_inputs = INST_INPUT_LEN(n), \ + .debounce_period = DT_INST_PROP(n, debounce_period)}; \ + DEVICE_AND_API_INIT(kscan_gpio_##n, DT_INST_LABEL(n), kscan_gpio_init_##n, \ + &kscan_gpio_data_##n, &kscan_gpio_config_##n, POST_KERNEL, \ + CONFIG_ZMK_KSCAN_INIT_PRIORITY, &gpio_driver_api); DT_INST_FOREACH_STATUS_OKAY(GPIO_INST_INIT) diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index 079a8309..634f694c 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -15,266 +15,248 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) -struct kscan_gpio_item_config -{ - char *label; - gpio_pin_t pin; - gpio_flags_t flags; +struct kscan_gpio_item_config { + char *label; + gpio_pin_t pin; + gpio_flags_t flags; }; - -#define _KSCAN_GPIO_ITEM_CFG_INIT(n, prop, idx) \ - { \ - .label = DT_INST_GPIO_LABEL_BY_IDX(n, prop, idx), \ - .pin = DT_INST_GPIO_PIN_BY_IDX(n, prop, idx), \ - .flags = DT_INST_GPIO_FLAGS_BY_IDX(n, prop, idx), \ - }, +#define _KSCAN_GPIO_ITEM_CFG_INIT(n, prop, idx) \ + { \ + .label = DT_INST_GPIO_LABEL_BY_IDX(n, prop, idx), \ + .pin = DT_INST_GPIO_PIN_BY_IDX(n, prop, idx), \ + .flags = DT_INST_GPIO_FLAGS_BY_IDX(n, prop, idx), \ + }, #define _KSCAN_GPIO_ROW_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, row_gpios, idx) #define _KSCAN_GPIO_COL_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, col_gpios, idx) - + static int kscan_gpio_config_interrupts(struct device **devices, - const struct kscan_gpio_item_config *configs, - size_t len, gpio_flags_t flags) -{ - for (int i = 0; i < len; i++) - { - struct device *dev = devices[i]; - const struct kscan_gpio_item_config *cfg = &configs[i]; + const struct kscan_gpio_item_config *configs, size_t len, + gpio_flags_t flags) { + for (int i = 0; i < len; i++) { + struct device *dev = devices[i]; + const struct kscan_gpio_item_config *cfg = &configs[i]; - int err = gpio_pin_interrupt_configure(dev, cfg->pin, flags); + int err = gpio_pin_interrupt_configure(dev, cfg->pin, flags); - if (err) - { - LOG_ERR("Unable to enable matrix GPIO interrupt"); - return err; - } - } + if (err) { + LOG_ERR("Unable to enable matrix GPIO interrupt"); + return err; + } + } - return 0; + return 0; } #define INST_MATRIX_ROWS(n) DT_INST_PROP_LEN(n, row_gpios) #define INST_MATRIX_COLS(n) DT_INST_PROP_LEN(n, col_gpios) -#define INST_OUTPUT_LEN(n) COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (INST_MATRIX_ROWS(n)), (INST_MATRIX_COLS(n))) -#define INST_INPUT_LEN(n) COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (INST_MATRIX_COLS(n)), (INST_MATRIX_ROWS(n))) +#define INST_OUTPUT_LEN(n) \ + COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (INST_MATRIX_ROWS(n)), \ + (INST_MATRIX_COLS(n))) +#define INST_INPUT_LEN(n) \ + COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (INST_MATRIX_COLS(n)), \ + (INST_MATRIX_ROWS(n))) -#define GPIO_INST_INIT(n) \ - struct kscan_gpio_irq_callback_##n \ - { \ - struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) * work; \ - struct gpio_callback callback; \ - }; \ - static struct kscan_gpio_irq_callback_##n \ - irq_callbacks_##n[INST_INPUT_LEN(n)]; \ - struct kscan_gpio_config_##n \ - { \ - struct kscan_gpio_item_config rows[INST_MATRIX_ROWS(n)]; \ - struct kscan_gpio_item_config cols[INST_MATRIX_COLS(n)]; \ - }; \ - struct kscan_gpio_data_##n \ - { \ - kscan_callback_t callback; \ - struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ - bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ - struct device *rows[INST_MATRIX_ROWS(n)]; \ - struct device *cols[INST_MATRIX_COLS(n)]; \ - struct device *dev; \ - }; \ - static struct device **kscan_gpio_input_devices_##n(struct device *dev) \ - { \ - struct kscan_gpio_data_##n *data = dev->driver_data; \ - return (COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (data->cols), (data->rows))); \ - } \ - static const struct kscan_gpio_item_config *kscan_gpio_input_configs_##n(struct device *dev) \ - { \ - const struct kscan_gpio_config_##n *cfg = dev->config_info; \ - return ((COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->cols), (cfg->rows)))); \ - } \ - static struct device **kscan_gpio_output_devices_##n(struct device *dev) \ - { \ - struct kscan_gpio_data_##n *data = dev->driver_data; \ - return (COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (data->rows), (data->cols))); \ - } \ - static const struct kscan_gpio_item_config *kscan_gpio_output_configs_##n(struct device *dev) \ - { \ - const struct kscan_gpio_config_##n *cfg = dev->config_info; \ - return (COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ - } \ - static int kscan_gpio_enable_interrupts_##n(struct device *dev) \ - { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ - GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ - } \ - static int kscan_gpio_disable_interrupts_##n(struct device *dev) \ - { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ - GPIO_INT_DISABLE); \ - } \ - static void kscan_gpio_set_output_state_##n(struct device *dev, int value) \ - { \ - for (int i = 0; i < INST_OUTPUT_LEN(n); i++) \ - { \ - struct device *in_dev = kscan_gpio_output_devices_##n(dev)[i]; \ - const struct kscan_gpio_item_config *cfg = &kscan_gpio_output_configs_##n(dev)[i]; \ - gpio_pin_set(in_dev, cfg->pin, value); \ - } \ - } \ - static void kscan_gpio_set_matrix_state_##n(bool state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)], u32_t input_index, u32_t output_index, bool value) \ - { \ - state[COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (output_index), (input_index))][COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (input_index), (output_index))] = value; \ - } \ - static int kscan_gpio_read_##n(struct device *dev) \ - { \ - bool submit_follow_up_read = false; \ - struct kscan_gpio_data_##n *data = dev->driver_data; \ - static bool read_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ - /* Disable our interrupts temporarily while we scan, to avoid */ \ - /* re-entry while we iterate columns and set them active one by one */ \ - /* to get pressed state for each matrix cell. */ \ - kscan_gpio_disable_interrupts_##n(dev); \ - kscan_gpio_set_output_state_##n(dev, 0); \ - for (int o = 0; o < INST_OUTPUT_LEN(n); o++) \ - { \ - struct device *out_dev = kscan_gpio_output_devices_##n(dev)[o]; \ - const struct kscan_gpio_item_config *out_cfg = &kscan_gpio_output_configs_##n(dev)[o]; \ - gpio_pin_set(out_dev, out_cfg->pin, 1); \ - for (int i = 0; i < INST_INPUT_LEN(n); i++) \ - { \ - struct device *in_dev = kscan_gpio_input_devices_##n(dev)[i]; \ - const struct kscan_gpio_item_config *in_cfg = &kscan_gpio_input_configs_##n(dev)[i]; \ - kscan_gpio_set_matrix_state_##n(read_state, i, o, gpio_pin_get(in_dev, in_cfg->pin) > 0); \ - } \ - gpio_pin_set(out_dev, out_cfg->pin, 0); \ - } \ - /* Set all our outputs as active again, then re-enable interrupts, */ \ - /* so we can trigger interrupts again for future press/release */ \ - kscan_gpio_set_output_state_##n(dev, 1); \ - kscan_gpio_enable_interrupts_##n(dev); \ - for (int r = 0; r < INST_MATRIX_ROWS(n); r++) \ - { \ - for (int c = 0; c < INST_MATRIX_COLS(n); c++) \ - { \ - bool pressed = read_state[r][c]; \ - /* Follow up reads needed because further interrupts won't fire on already tripped input GPIO pins */ \ - submit_follow_up_read = (submit_follow_up_read || pressed); \ - if (pressed != data->matrix_state[r][c]) \ - { \ - LOG_DBG("Sending event at %d,%d state %s", \ - r, c, (pressed ? "on" : "off")); \ - data->matrix_state[r][c] = pressed; \ - data->callback(dev, r, c, pressed); \ - } \ - } \ - } \ - if (submit_follow_up_read) { \ - COND_CODE_0(DT_INST_PROP(n, debounce_period), \ - ({ k_work_submit(&data->work); }), \ - ({ \ - k_delayed_work_cancel(&data->work); \ - k_delayed_work_submit(&data->work, K_MSEC(5)); })) \ - } \ - return 0; \ - } \ - static void kscan_gpio_work_handler_##n(struct k_work *work) \ - { \ - struct kscan_gpio_data_##n *data = \ - CONTAINER_OF(work, struct kscan_gpio_data_##n, work); \ - kscan_gpio_read_##n(data->dev); \ - } \ - static void kscan_gpio_irq_callback_handler_##n(struct device *dev, \ - struct gpio_callback *cb, gpio_port_pins_t pin) \ - { \ - struct kscan_gpio_irq_callback_##n *data = \ - CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ - COND_CODE_0(DT_INST_PROP(n, debounce_period), \ - ({ k_work_submit(data->work); }), \ - ({ \ - k_delayed_work_cancel(data->work); \ - k_delayed_work_submit(data->work, K_MSEC(DT_INST_PROP(n, debounce_period))); })) \ - } \ - static struct kscan_gpio_data_##n kscan_gpio_data_##n = { \ - .rows = { [INST_MATRIX_ROWS(n)-1] = NULL}, \ - .cols = { [INST_MATRIX_COLS(n)-1] = NULL }\ - }; \ - static int kscan_gpio_configure_##n(struct device *dev, kscan_callback_t callback) \ - { \ - struct kscan_gpio_data_##n *data = dev->driver_data; \ - if (!callback) \ - { \ - return -EINVAL; \ - } \ - data->callback = callback; \ - return 0; \ - }; \ - static int kscan_gpio_enable_##n(struct device *dev) \ - { \ - int err = kscan_gpio_enable_interrupts_##n(dev); \ - if (err) { return err; } \ - return kscan_gpio_read_##n(dev); \ - }; \ - static int kscan_gpio_init_##n(struct device *dev) \ - { \ - struct kscan_gpio_data_##n *data = dev->driver_data; \ - int err; \ - struct device **input_devices = kscan_gpio_input_devices_##n(dev); \ - for (int i = 0; i < INST_INPUT_LEN(n); i++) \ - { \ - const struct kscan_gpio_item_config *in_cfg = &kscan_gpio_input_configs_##n(dev)[i]; \ - input_devices[i] = device_get_binding(in_cfg->label); \ - if (!input_devices[i]) \ - { \ - LOG_ERR("Unable to find input GPIO device"); \ - return -EINVAL; \ - } \ - err = gpio_pin_configure(input_devices[i], in_cfg->pin, GPIO_INPUT | in_cfg->flags); \ - if (err) \ - { \ - LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ - return err; \ - } \ - irq_callbacks_##n[i].work = &data->work; \ - gpio_init_callback(&irq_callbacks_##n[i].callback, kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ - err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ - if (err) \ - { \ - LOG_ERR("Error adding the callback to the column device"); \ - return err; \ - } \ - } \ - struct device **output_devices = kscan_gpio_output_devices_##n(dev); \ - for (int o = 0; o < INST_OUTPUT_LEN(n); o++) \ - { \ - const struct kscan_gpio_item_config *out_cfg = &kscan_gpio_output_configs_##n(dev)[o]; \ - output_devices[o] = device_get_binding(out_cfg->label); \ - if (!output_devices[o]) \ - { \ - LOG_ERR("Unable to find output GPIO device"); \ - return -EINVAL; \ - } \ - err = gpio_pin_configure(output_devices[o], out_cfg->pin, GPIO_OUTPUT_ACTIVE | out_cfg->flags); \ - if (err) \ - { \ - LOG_ERR("Unable to configure pin %d on %s for output", out_cfg->pin, out_cfg->label); \ - return err; \ - } \ - } \ - data->dev = dev; \ - (COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work_init), (k_delayed_work_init)))(&data->work, kscan_gpio_work_handler_##n); \ - return 0; \ - } \ - static const struct kscan_driver_api gpio_driver_api_##n = { \ - .config = kscan_gpio_configure_##n, \ - .enable_callback = kscan_gpio_enable_##n, \ - .disable_callback = kscan_gpio_disable_interrupts_##n, \ - }; \ - static const struct kscan_gpio_config_##n kscan_gpio_config_##n = { \ - .rows = { UTIL_LISTIFY(INST_MATRIX_ROWS(n), _KSCAN_GPIO_ROW_CFG_INIT, n) }, \ - .cols = { UTIL_LISTIFY(INST_MATRIX_COLS(n), _KSCAN_GPIO_COL_CFG_INIT, n) }, \ - }; \ - DEVICE_AND_API_INIT(kscan_gpio_##n, DT_INST_LABEL(n), kscan_gpio_init_##n, \ - &kscan_gpio_data_##n, &kscan_gpio_config_##n, \ - APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY, \ - &gpio_driver_api_##n); +#define GPIO_INST_INIT(n) \ + struct kscan_gpio_irq_callback_##n { \ + struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) * work; \ + struct gpio_callback callback; \ + }; \ + static struct kscan_gpio_irq_callback_##n irq_callbacks_##n[INST_INPUT_LEN(n)]; \ + struct kscan_gpio_config_##n { \ + struct kscan_gpio_item_config rows[INST_MATRIX_ROWS(n)]; \ + struct kscan_gpio_item_config cols[INST_MATRIX_COLS(n)]; \ + }; \ + struct kscan_gpio_data_##n { \ + kscan_callback_t callback; \ + struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ + bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ + struct device *rows[INST_MATRIX_ROWS(n)]; \ + struct device *cols[INST_MATRIX_COLS(n)]; \ + struct device *dev; \ + }; \ + static struct device **kscan_gpio_input_devices_##n(struct device *dev) { \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + return (COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (data->cols), \ + (data->rows))); \ + } \ + static const struct kscan_gpio_item_config *kscan_gpio_input_configs_##n(struct device *dev) { \ + const struct kscan_gpio_config_##n *cfg = dev->config_info; \ + return (( \ + COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->cols), (cfg->rows)))); \ + } \ + static struct device **kscan_gpio_output_devices_##n(struct device *dev) { \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + return (COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (data->rows), \ + (data->cols))); \ + } \ + static const struct kscan_gpio_item_config *kscan_gpio_output_configs_##n( \ + struct device *dev) { \ + const struct kscan_gpio_config_##n *cfg = dev->config_info; \ + return ( \ + COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ + } \ + static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ + GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ + } \ + static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ + GPIO_INT_DISABLE); \ + } \ + static void kscan_gpio_set_output_state_##n(struct device *dev, int value) { \ + for (int i = 0; i < INST_OUTPUT_LEN(n); i++) { \ + struct device *in_dev = kscan_gpio_output_devices_##n(dev)[i]; \ + const struct kscan_gpio_item_config *cfg = &kscan_gpio_output_configs_##n(dev)[i]; \ + gpio_pin_set(in_dev, cfg->pin, value); \ + } \ + } \ + static void kscan_gpio_set_matrix_state_##n( \ + bool state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)], u32_t input_index, \ + u32_t output_index, bool value) { \ + state[COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (output_index), \ + (input_index))] \ + [COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (input_index), \ + (output_index))] = value; \ + } \ + static int kscan_gpio_read_##n(struct device *dev) { \ + bool submit_follow_up_read = false; \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + static bool read_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ + /* Disable our interrupts temporarily while we scan, to avoid */ \ + /* re-entry while we iterate columns and set them active one by one */ \ + /* to get pressed state for each matrix cell. */ \ + kscan_gpio_disable_interrupts_##n(dev); \ + kscan_gpio_set_output_state_##n(dev, 0); \ + for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ + struct device *out_dev = kscan_gpio_output_devices_##n(dev)[o]; \ + const struct kscan_gpio_item_config *out_cfg = &kscan_gpio_output_configs_##n(dev)[o]; \ + gpio_pin_set(out_dev, out_cfg->pin, 1); \ + for (int i = 0; i < INST_INPUT_LEN(n); i++) { \ + struct device *in_dev = kscan_gpio_input_devices_##n(dev)[i]; \ + const struct kscan_gpio_item_config *in_cfg = \ + &kscan_gpio_input_configs_##n(dev)[i]; \ + kscan_gpio_set_matrix_state_##n(read_state, i, o, \ + gpio_pin_get(in_dev, in_cfg->pin) > 0); \ + } \ + gpio_pin_set(out_dev, out_cfg->pin, 0); \ + } \ + /* Set all our outputs as active again, then re-enable interrupts, */ \ + /* so we can trigger interrupts again for future press/release */ \ + kscan_gpio_set_output_state_##n(dev, 1); \ + kscan_gpio_enable_interrupts_##n(dev); \ + for (int r = 0; r < INST_MATRIX_ROWS(n); r++) { \ + for (int c = 0; c < INST_MATRIX_COLS(n); c++) { \ + bool pressed = read_state[r][c]; \ + /* Follow up reads needed because further interrupts won't fire on already tripped \ + * input GPIO pins */ \ + submit_follow_up_read = (submit_follow_up_read || pressed); \ + if (pressed != data->matrix_state[r][c]) { \ + LOG_DBG("Sending event at %d,%d state %s", r, c, (pressed ? "on" : "off")); \ + data->matrix_state[r][c] = pressed; \ + data->callback(dev, r, c, pressed); \ + } \ + } \ + } \ + if (submit_follow_up_read) { \ + COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(&data->work); }), ({ \ + k_delayed_work_cancel(&data->work); \ + k_delayed_work_submit(&data->work, K_MSEC(5)); \ + })) \ + } \ + return 0; \ + } \ + static void kscan_gpio_work_handler_##n(struct k_work *work) { \ + struct kscan_gpio_data_##n *data = CONTAINER_OF(work, struct kscan_gpio_data_##n, work); \ + kscan_gpio_read_##n(data->dev); \ + } \ + static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ + gpio_port_pins_t pin) { \ + struct kscan_gpio_irq_callback_##n *data = \ + CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ + COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(data->work); }), ({ \ + k_delayed_work_cancel(data->work); \ + k_delayed_work_submit(data->work, \ + K_MSEC(DT_INST_PROP(n, debounce_period))); \ + })) \ + } \ + static struct kscan_gpio_data_##n kscan_gpio_data_##n = { \ + .rows = {[INST_MATRIX_ROWS(n) - 1] = NULL}, .cols = {[INST_MATRIX_COLS(n) - 1] = NULL}}; \ + static int kscan_gpio_configure_##n(struct device *dev, kscan_callback_t callback) { \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + if (!callback) { \ + return -EINVAL; \ + } \ + data->callback = callback; \ + return 0; \ + }; \ + static int kscan_gpio_enable_##n(struct device *dev) { \ + int err = kscan_gpio_enable_interrupts_##n(dev); \ + if (err) { \ + return err; \ + } \ + return kscan_gpio_read_##n(dev); \ + }; \ + static int kscan_gpio_init_##n(struct device *dev) { \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + int err; \ + struct device **input_devices = kscan_gpio_input_devices_##n(dev); \ + for (int i = 0; i < INST_INPUT_LEN(n); i++) { \ + const struct kscan_gpio_item_config *in_cfg = &kscan_gpio_input_configs_##n(dev)[i]; \ + input_devices[i] = device_get_binding(in_cfg->label); \ + if (!input_devices[i]) { \ + LOG_ERR("Unable to find input GPIO device"); \ + return -EINVAL; \ + } \ + err = gpio_pin_configure(input_devices[i], in_cfg->pin, GPIO_INPUT | in_cfg->flags); \ + if (err) { \ + LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ + return err; \ + } \ + irq_callbacks_##n[i].work = &data->work; \ + gpio_init_callback(&irq_callbacks_##n[i].callback, \ + kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ + err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ + if (err) { \ + LOG_ERR("Error adding the callback to the column device"); \ + return err; \ + } \ + } \ + struct device **output_devices = kscan_gpio_output_devices_##n(dev); \ + for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ + const struct kscan_gpio_item_config *out_cfg = &kscan_gpio_output_configs_##n(dev)[o]; \ + output_devices[o] = device_get_binding(out_cfg->label); \ + if (!output_devices[o]) { \ + LOG_ERR("Unable to find output GPIO device"); \ + return -EINVAL; \ + } \ + err = gpio_pin_configure(output_devices[o], out_cfg->pin, \ + GPIO_OUTPUT_ACTIVE | out_cfg->flags); \ + if (err) { \ + LOG_ERR("Unable to configure pin %d on %s for output", out_cfg->pin, \ + out_cfg->label); \ + return err; \ + } \ + } \ + data->dev = dev; \ + (COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work_init), (k_delayed_work_init)))( \ + &data->work, kscan_gpio_work_handler_##n); \ + return 0; \ + } \ + static const struct kscan_driver_api gpio_driver_api_##n = { \ + .config = kscan_gpio_configure_##n, \ + .enable_callback = kscan_gpio_enable_##n, \ + .disable_callback = kscan_gpio_disable_interrupts_##n, \ + }; \ + static const struct kscan_gpio_config_##n kscan_gpio_config_##n = { \ + .rows = {UTIL_LISTIFY(INST_MATRIX_ROWS(n), _KSCAN_GPIO_ROW_CFG_INIT, n)}, \ + .cols = {UTIL_LISTIFY(INST_MATRIX_COLS(n), _KSCAN_GPIO_COL_CFG_INIT, n)}, \ + }; \ + DEVICE_AND_API_INIT(kscan_gpio_##n, DT_INST_LABEL(n), kscan_gpio_init_##n, \ + &kscan_gpio_data_##n, &kscan_gpio_config_##n, APPLICATION, \ + CONFIG_APPLICATION_INIT_PRIORITY, &gpio_driver_api_##n); DT_INST_FOREACH_STATUS_OKAY(GPIO_INST_INIT) diff --git a/app/include/drivers/behavior.h b/app/include/drivers/behavior.h index 617b5ab5..45b8bea7 100644 --- a/app/include/drivers/behavior.h +++ b/app/include/drivers/behavior.h @@ -19,19 +19,20 @@ * (Internal use only.) */ -typedef int (*behavior_keymap_binding_callback_t)(struct device *dev, u32_t position, u32_t param1, u32_t param2); -typedef int (*behavior_sensor_keymap_binding_callback_t)(struct device *dev, struct device *sensor, u32_t param1, u32_t param2); +typedef int (*behavior_keymap_binding_callback_t)(struct device *dev, u32_t position, u32_t param1, + u32_t param2); +typedef int (*behavior_sensor_keymap_binding_callback_t)(struct device *dev, struct device *sensor, + u32_t param1, u32_t param2); __subsystem struct behavior_driver_api { - behavior_keymap_binding_callback_t binding_pressed; - behavior_keymap_binding_callback_t binding_released; - behavior_sensor_keymap_binding_callback_t sensor_binding_triggered; + behavior_keymap_binding_callback_t binding_pressed; + behavior_keymap_binding_callback_t binding_released; + behavior_sensor_keymap_binding_callback_t sensor_binding_triggered; }; /** * @endcond */ - /** * @brief Handle the keymap binding being pressed * @param dev Pointer to the device structure for the driver instance. @@ -41,18 +42,18 @@ __subsystem struct behavior_driver_api { * @retval 0 If successful. * @retval Negative errno code if failure. */ -__syscall int behavior_keymap_binding_pressed(struct device *dev, u32_t position, u32_t param1, u32_t param2); +__syscall int behavior_keymap_binding_pressed(struct device *dev, u32_t position, u32_t param1, + u32_t param2); -static inline int z_impl_behavior_keymap_binding_pressed(struct device *dev, u32_t position, u32_t param1, u32_t param2) -{ - const struct behavior_driver_api *api = - (const struct behavior_driver_api *)dev->driver_api; +static inline int z_impl_behavior_keymap_binding_pressed(struct device *dev, u32_t position, + u32_t param1, u32_t param2) { + const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api; - if (api->binding_pressed == NULL) { - return -ENOTSUP; - } + if (api->binding_pressed == NULL) { + return -ENOTSUP; + } - return api->binding_pressed(dev, position, param1, param2); + return api->binding_pressed(dev, position, param1, param2); } /** @@ -63,18 +64,18 @@ static inline int z_impl_behavior_keymap_binding_pressed(struct device *dev, u32 * @retval 0 If successful. * @retval Negative errno code if failure. */ -__syscall int behavior_keymap_binding_released(struct device *dev, u32_t position, u32_t param1, u32_t param2); +__syscall int behavior_keymap_binding_released(struct device *dev, u32_t position, u32_t param1, + u32_t param2); -static inline int z_impl_behavior_keymap_binding_released(struct device *dev, u32_t position, u32_t param1, u32_t param2) -{ - const struct behavior_driver_api *api = - (const struct behavior_driver_api *)dev->driver_api; +static inline int z_impl_behavior_keymap_binding_released(struct device *dev, u32_t position, + u32_t param1, u32_t param2) { + const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api; - if (api->binding_released == NULL) { - return -ENOTSUP; - } + if (api->binding_released == NULL) { + return -ENOTSUP; + } - return api->binding_released(dev, position, param1, param2); + return api->binding_released(dev, position, param1, param2); } /** @@ -87,21 +88,21 @@ static inline int z_impl_behavior_keymap_binding_released(struct device *dev, u3 * @retval 0 If successful. * @retval Negative errno code if failure. */ -__syscall int behavior_sensor_keymap_binding_triggered(struct device *dev, struct device *sensor, u32_t param1, u32_t param2); +__syscall int behavior_sensor_keymap_binding_triggered(struct device *dev, struct device *sensor, + u32_t param1, u32_t param2); -static inline int z_impl_behavior_sensor_keymap_binding_triggered(struct device *dev, struct device *sensor, u32_t param1, u32_t param2) -{ - const struct behavior_driver_api *api = - (const struct behavior_driver_api *)dev->driver_api; +static inline int z_impl_behavior_sensor_keymap_binding_triggered(struct device *dev, + struct device *sensor, + u32_t param1, u32_t param2) { + const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api; - if (api->sensor_binding_triggered == NULL) { - return -ENOTSUP; - } + if (api->sensor_binding_triggered == NULL) { + return -ENOTSUP; + } - return api->sensor_binding_triggered(dev, sensor, param1, param2); + return api->sensor_binding_triggered(dev, sensor, param1, param2); } - /** * @} */ diff --git a/app/include/dt-bindings/zmk/bt.h b/app/include/dt-bindings/zmk/bt.h index bf8b4f53..05fd65c8 100644 --- a/app/include/dt-bindings/zmk/bt.h +++ b/app/include/dt-bindings/zmk/bt.h @@ -4,10 +4,10 @@ * SPDX-License-Identifier: MIT */ -#define BT_CLR_CMD 0 -#define BT_NXT_CMD 1 -#define BT_PRV_CMD 2 -#define BT_SEL_CMD 3 +#define BT_CLR_CMD 0 +#define BT_NXT_CMD 1 +#define BT_PRV_CMD 2 +#define BT_SEL_CMD 3 // #define BT_FULL_RESET_CMD 4 /* @@ -15,7 +15,7 @@ Note: Some future commands will include additional parameters, so we defines these aliases up front. */ -#define BT_CLR BT_CLR_CMD 0 -#define BT_NXT BT_NXT_CMD 0 -#define BT_PRV BT_PRV_CMD 0 -#define BT_SEL BT_SEL_CMD \ No newline at end of file +#define BT_CLR BT_CLR_CMD 0 +#define BT_NXT BT_NXT_CMD 0 +#define BT_PRV BT_PRV_CMD 0 +#define BT_SEL BT_SEL_CMD \ No newline at end of file diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index cd9261d9..d3dd6341 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -55,7 +55,7 @@ #define QUOT 0x34 #define GRAV 0x35 #define CMMA 0x36 -#define DOT 0x37 +#define DOT 0x37 #define FSLH 0x38 #define CLCK 0x39 #define F1 0x3A @@ -77,8 +77,8 @@ #define INS 0x49 #define HOME 0x4A #define PGUP 0x4B -#define DEL 0x4C -#define END 0x4D +#define DEL 0x4C +#define END 0x4D #define PGDN 0x4E #define RARW 0x4F #define LARW 0x50 diff --git a/app/include/dt-bindings/zmk/reset.h b/app/include/dt-bindings/zmk/reset.h index 683f9658..2b3d8760 100644 --- a/app/include/dt-bindings/zmk/reset.h +++ b/app/include/dt-bindings/zmk/reset.h @@ -4,9 +4,10 @@ * SPDX-License-Identifier: MIT */ -#define RST_WARM 0x00 -#define RST_COLD 0x01 +#define RST_WARM 0x00 +#define RST_COLD 0x01 -// AdaFruit nrf52 Bootloader Specific. See https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/d6b28e66053eea467166f44875e3c7ec741cb471/src/main.c#L107 +// AdaFruit nrf52 Bootloader Specific. See +// https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/d6b28e66053eea467166f44875e3c7ec741cb471/src/main.c#L107 -#define RST_UF2 0x57 \ No newline at end of file +#define RST_UF2 0x57 \ No newline at end of file diff --git a/app/include/zmk/event-manager.h b/app/include/zmk/event-manager.h index 9da66029..4b8f72c0 100644 --- a/app/include/zmk/event-manager.h +++ b/app/include/zmk/event-manager.h @@ -3,20 +3,19 @@ * * SPDX-License-Identifier: MIT */ - + #pragma once #include #include #include -struct zmk_event_type -{ +struct zmk_event_type { const char *name; }; struct zmk_event_header { - const struct zmk_event_type* event; + const struct zmk_event_type *event; u8_t last_listener_index; }; @@ -24,8 +23,7 @@ struct zmk_event_header { #define ZMK_EV_EVENT_CAPTURED 2 typedef int (*zmk_listener_callback_t)(const struct zmk_event_header *eh); -struct zmk_listener -{ +struct zmk_listener { zmk_listener_callback_t callback; }; @@ -34,55 +32,50 @@ struct zmk_event_subscription { const struct zmk_listener *listener; }; -#define ZMK_EVENT_DECLARE(event_type) \ - struct event_type* new_##event_type(); \ - bool is_##event_type(const struct zmk_event_header *eh); \ - struct event_type* cast_##event_type(const struct zmk_event_header *eh); \ +#define ZMK_EVENT_DECLARE(event_type) \ + struct event_type *new_##event_type(); \ + bool is_##event_type(const struct zmk_event_header *eh); \ + struct event_type *cast_##event_type(const struct zmk_event_header *eh); \ extern const struct zmk_event_type zmk_event_##event_type; -#define ZMK_EVENT_IMPL(event_type) \ - const struct zmk_event_type zmk_event_##event_type = { \ - .name = STRINGIFY(event_type) \ - }; \ - const struct zmk_event_type* zmk_event_ref_##event_type __used __attribute__((__section__(".event_type"))) = &zmk_event_##event_type; \ - struct event_type* new_##event_type() { \ - struct event_type* ev = (struct event_type *) k_malloc(sizeof(struct event_type)); \ - ev->header.event = &zmk_event_##event_type; \ - return ev; \ - }; \ - bool is_##event_type(const struct zmk_event_header *eh) { \ - return eh->event == &zmk_event_##event_type; \ - }; \ - struct event_type* cast_##event_type(const struct zmk_event_header *eh) {\ - return (struct event_type*)eh; \ - }; - - -#define ZMK_LISTENER(mod, cb) \ - const struct zmk_listener zmk_listener_##mod = { \ - .callback = cb \ +#define ZMK_EVENT_IMPL(event_type) \ + const struct zmk_event_type zmk_event_##event_type = {.name = STRINGIFY(event_type)}; \ + const struct zmk_event_type *zmk_event_ref_##event_type __used \ + __attribute__((__section__(".event_type"))) = &zmk_event_##event_type; \ + struct event_type *new_##event_type() { \ + struct event_type *ev = (struct event_type *)k_malloc(sizeof(struct event_type)); \ + ev->header.event = &zmk_event_##event_type; \ + return ev; \ + }; \ + bool is_##event_type(const struct zmk_event_header *eh) { \ + return eh->event == &zmk_event_##event_type; \ + }; \ + struct event_type *cast_##event_type(const struct zmk_event_header *eh) { \ + return (struct event_type *)eh; \ }; -#define ZMK_SUBSCRIPTION(mod, ev_type) \ - const Z_DECL_ALIGN(struct zmk_event_subscription) _CONCAT(_CONCAT(zmk_event_sub_,mod),ev_type) __used __attribute__((__section__(".event_subscription"))) = { \ - .event_type = &zmk_event_##ev_type, \ - .listener = &zmk_listener_##mod, \ +#define ZMK_LISTENER(mod, cb) const struct zmk_listener zmk_listener_##mod = {.callback = cb}; + +#define ZMK_SUBSCRIPTION(mod, ev_type) \ + const Z_DECL_ALIGN(struct zmk_event_subscription) \ + _CONCAT(_CONCAT(zmk_event_sub_, mod), ev_type) __used \ + __attribute__((__section__(".event_subscription"))) = { \ + .event_type = &zmk_event_##ev_type, \ + .listener = &zmk_listener_##mod, \ }; -#define ZMK_EVENT_RAISE(ev) \ - zmk_event_manager_raise((struct zmk_event_header *)ev); +#define ZMK_EVENT_RAISE(ev) zmk_event_manager_raise((struct zmk_event_header *)ev); -#define ZMK_EVENT_RAISE_AFTER(ev, mod) \ +#define ZMK_EVENT_RAISE_AFTER(ev, mod) \ zmk_event_manager_raise_after((struct zmk_event_header *)ev, &zmk_listener_##mod); - -#define ZMK_EVENT_RAISE_AT(ev, mod) \ +#define ZMK_EVENT_RAISE_AT(ev, mod) \ zmk_event_manager_raise_at((struct zmk_event_header *)ev, &zmk_listener_##mod); -#define ZMK_EVENT_RELEASE(ev) \ - zmk_event_manager_release((struct zmk_event_header *)ev); +#define ZMK_EVENT_RELEASE(ev) zmk_event_manager_release((struct zmk_event_header *)ev); int zmk_event_manager_raise(struct zmk_event_header *event); -int zmk_event_manager_raise_after(struct zmk_event_header *event, const struct zmk_listener *listener); +int zmk_event_manager_raise_after(struct zmk_event_header *event, + const struct zmk_listener *listener); int zmk_event_manager_raise_at(struct zmk_event_header *event, const struct zmk_listener *listener); int zmk_event_manager_release(struct zmk_event_header *event); diff --git a/app/include/zmk/events/ble-active-profile-changed.h b/app/include/zmk/events/ble-active-profile-changed.h index c464236f..66f40c77 100644 --- a/app/include/zmk/events/ble-active-profile-changed.h +++ b/app/include/zmk/events/ble-active-profile-changed.h @@ -12,7 +12,6 @@ #include - struct ble_active_profile_changed { struct zmk_event_header header; u8_t index; diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h index fc37946b..4c006543 100644 --- a/app/include/zmk/events/keycode-state-changed.h +++ b/app/include/zmk/events/keycode-state-changed.h @@ -18,9 +18,9 @@ struct keycode_state_changed { ZMK_EVENT_DECLARE(keycode_state_changed); -inline struct keycode_state_changed* create_keycode_state_changed(u8_t usage_page, u32_t keycode, bool state) -{ - struct keycode_state_changed* ev = new_keycode_state_changed(); +inline struct keycode_state_changed *create_keycode_state_changed(u8_t usage_page, u32_t keycode, + bool state) { + struct keycode_state_changed *ev = new_keycode_state_changed(); ev->usage_page = usage_page; ev->keycode = keycode; ev->state = state; diff --git a/app/include/zmk/events/modifiers-state-changed.h b/app/include/zmk/events/modifiers-state-changed.h index b39e11e0..d2e02f82 100644 --- a/app/include/zmk/events/modifiers-state-changed.h +++ b/app/include/zmk/events/modifiers-state-changed.h @@ -3,7 +3,7 @@ * * SPDX-License-Identifier: MIT */ - + #pragma once #include @@ -18,9 +18,9 @@ struct modifiers_state_changed { ZMK_EVENT_DECLARE(modifiers_state_changed); -inline struct modifiers_state_changed* create_modifiers_state_changed(zmk_mod_flags modifiers, bool state) -{ - struct modifiers_state_changed* ev = new_modifiers_state_changed(); +inline struct modifiers_state_changed *create_modifiers_state_changed(zmk_mod_flags modifiers, + bool state) { + struct modifiers_state_changed *ev = new_modifiers_state_changed(); ev->modifiers = modifiers; ev->state = state; diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index a945e729..744de98e 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -140,25 +140,21 @@ static const u8_t zmk_hid_report_desc[] = { // u8_t keys[6]; // } __packed; -struct zmk_hid_keypad_report_body -{ +struct zmk_hid_keypad_report_body { zmk_mod_flags modifiers; u8_t keys[13]; } __packed; -struct zmk_hid_keypad_report -{ +struct zmk_hid_keypad_report { u8_t report_id; struct zmk_hid_keypad_report_body body; } __packed; -struct zmk_hid_consumer_report_body -{ +struct zmk_hid_consumer_report_body { u8_t keys[6]; } __packed; -struct zmk_hid_consumer_report -{ +struct zmk_hid_consumer_report { u8_t report_id; struct zmk_hid_consumer_report_body body; } __packed; diff --git a/app/include/zmk/keys.h b/app/include/zmk/keys.h index ee9c3d93..af474b1f 100644 --- a/app/include/zmk/keys.h +++ b/app/include/zmk/keys.h @@ -14,8 +14,7 @@ typedef u8_t zmk_action; typedef u8_t zmk_mod; typedef u8_t zmk_mod_flags; -struct zmk_key_event -{ +struct zmk_key_event { u32_t column; u32_t row; zmk_key key; diff --git a/app/include/zmk/matrix.h b/app/include/zmk/matrix.h index 16143176..b3e2323b 100644 --- a/app/include/zmk/matrix.h +++ b/app/include/zmk/matrix.h @@ -15,20 +15,20 @@ #define ZMK_KEYMAP_TRANSFORM_NODE DT_CHOSEN(zmk_matrix_transform) #define ZMK_KEYMAP_LEN DT_PROP_LEN(ZMK_KEYMAP_TRANSFORM_NODE, map) -#define ZMK_MATRIX_ROWS DT_PROP(ZMK_KEYMAP_TRANSFORM_NODE,rows) -#define ZMK_MATRIX_COLS DT_PROP(ZMK_KEYMAP_TRANSFORM_NODE,columns) +#define ZMK_MATRIX_ROWS DT_PROP(ZMK_KEYMAP_TRANSFORM_NODE, rows) +#define ZMK_MATRIX_COLS DT_PROP(ZMK_KEYMAP_TRANSFORM_NODE, columns) #else /* DT_HAS_CHOSEN(zmk_matrix_transform) */ -#if DT_NODE_HAS_PROP(ZMK_MATRIX_NODE_ID,row_gpios) -#define ZMK_MATRIX_ROWS DT_PROP_LEN(ZMK_MATRIX_NODE_ID,row_gpios) -#define ZMK_MATRIX_COLS DT_PROP_LEN(ZMK_MATRIX_NODE_ID,col_gpios) -#elif DT_NODE_HAS_PROP(ZMK_MATRIX_NODE_ID,input_gpios) +#if DT_NODE_HAS_PROP(ZMK_MATRIX_NODE_ID, row_gpios) +#define ZMK_MATRIX_ROWS DT_PROP_LEN(ZMK_MATRIX_NODE_ID, row_gpios) +#define ZMK_MATRIX_COLS DT_PROP_LEN(ZMK_MATRIX_NODE_ID, col_gpios) +#elif DT_NODE_HAS_PROP(ZMK_MATRIX_NODE_ID, input_gpios) #define ZMK_MATRIX_ROWS 1 -#define ZMK_MATRIX_COLS DT_PROP_LEN(ZMK_MATRIX_NODE_ID,input_gpios) +#define ZMK_MATRIX_COLS DT_PROP_LEN(ZMK_MATRIX_NODE_ID, input_gpios) #else -#define ZMK_MATRIX_ROWS DT_PROP(ZMK_MATRIX_NODE_ID,rows) -#define ZMK_MATRIX_COLS DT_PROP(ZMK_MATRIX_NODE_ID,columns) +#define ZMK_MATRIX_ROWS DT_PROP(ZMK_MATRIX_NODE_ID, rows) +#define ZMK_MATRIX_COLS DT_PROP(ZMK_MATRIX_NODE_ID, columns) #endif #define ZMK_KEYMAP_LEN (ZMK_MATRIX_COLS * ZMK_MATRIX_ROWS) diff --git a/app/include/zmk/split/bluetooth/uuid.h b/app/include/zmk/split/bluetooth/uuid.h index 59f2f712..a8dfbf62 100644 --- a/app/include/zmk/split/bluetooth/uuid.h +++ b/app/include/zmk/split/bluetooth/uuid.h @@ -3,10 +3,9 @@ #include #ifndef BT_UUID_NUM_OF_DIGITALS -#define BT_UUID_NUM_OF_DIGITALS BT_UUID_DECLARE_16(0x2909) +#define BT_UUID_NUM_OF_DIGITALS BT_UUID_DECLARE_16(0x2909) #endif -#define ZMK_BT_SPLIT_UUID(num) BT_UUID_128_ENCODE(num, 0x0096, 0x7107, 0xc967, 0xc5cfb1c2482a) +#define ZMK_BT_SPLIT_UUID(num) BT_UUID_128_ENCODE(num, 0x0096, 0x7107, 0xc967, 0xc5cfb1c2482a) #define ZMK_SPLIT_BT_SERVICE_UUID ZMK_BT_SPLIT_UUID(0x00000000) #define ZMK_SPLIT_BT_CHAR_POSITION_STATE_UUID ZMK_BT_SPLIT_UUID(0x00000001) - diff --git a/app/src/behaviors/behavior_bt.c b/app/src/behaviors/behavior_bt.c index 3a5fbfbf..09fadba2 100644 --- a/app/src/behaviors/behavior_bt.c +++ b/app/src/behaviors/behavior_bt.c @@ -18,10 +18,8 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t command, u32_t arg) -{ - switch (command) - { +static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t command, u32_t arg) { + switch (command) { case BT_CLR_CMD: return zmk_ble_clear_bonds(); case BT_NXT_CMD: @@ -37,13 +35,10 @@ static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t c return -ENOTSUP; } -static int behavior_bt_init(struct device *dev) -{ - return 0; -}; +static int behavior_bt_init(struct device *dev) { return 0; }; -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t command, u32_t arg) -{ +static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t command, + u32_t arg) { return 0; } @@ -52,9 +47,5 @@ static const struct behavior_driver_api behavior_bt_driver_api = { .binding_released = on_keymap_binding_released, }; -DEVICE_AND_API_INIT(behavior_bt, DT_INST_LABEL(0), - behavior_bt_init, - NULL, - NULL, - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, - &behavior_bt_driver_api); +DEVICE_AND_API_INIT(behavior_bt, DT_INST_LABEL(0), behavior_bt_init, NULL, NULL, APPLICATION, + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_bt_driver_api); diff --git a/app/src/behaviors/behavior_hold_tap.c b/app/src/behaviors/behavior_hold_tap.c index dce724d9..8f307a6b 100644 --- a/app/src/behaviors/behavior_hold_tap.c +++ b/app/src/behaviors/behavior_hold_tap.c @@ -29,36 +29,35 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); // increase if you have keyboard with more keys. #define ZMK_BHV_HOLD_TAP_POSITION_NOT_USED 9999 - enum flavor { - ZMK_BHV_HOLD_TAP_FLAVOR_HOLD_PREFERRED = 0, - ZMK_BHV_HOLD_TAP_FLAVOR_BALANCED = 1, - ZMK_BHV_HOLD_TAP_FLAVOR_TAP_PREFERRED = 2, + ZMK_BHV_HOLD_TAP_FLAVOR_HOLD_PREFERRED = 0, + ZMK_BHV_HOLD_TAP_FLAVOR_BALANCED = 1, + ZMK_BHV_HOLD_TAP_FLAVOR_TAP_PREFERRED = 2, }; struct behavior_hold_tap_behaviors { - struct zmk_behavior_binding tap; - struct zmk_behavior_binding hold; + struct zmk_behavior_binding tap; + struct zmk_behavior_binding hold; }; typedef k_timeout_t (*timer_func)(); struct behavior_hold_tap_config { - timer_func tapping_term_ms; - struct behavior_hold_tap_behaviors *behaviors; - enum flavor flavor; + timer_func tapping_term_ms; + struct behavior_hold_tap_behaviors *behaviors; + enum flavor flavor; }; // this data is specific for each hold-tap struct active_hold_tap { - s32_t position; - u32_t param_hold; - u32_t param_tap; - bool is_decided; - bool is_hold; - const struct behavior_hold_tap_config *config; - struct k_delayed_work work; - bool work_is_cancelled; + s32_t position; + u32_t param_hold; + u32_t param_tap; + bool is_decided; + bool is_hold; + const struct behavior_hold_tap_config *config; + struct k_delayed_work work; + bool work_is_cancelled; }; // The undecided hold tap is the hold tap that needs to be decided before @@ -71,371 +70,366 @@ struct active_hold_tap active_hold_taps[ZMK_BHV_HOLD_TAP_MAX_HELD] = {}; // We capture most position_state_changed events and some modifiers_state_changed events. const struct zmk_event_header *captured_events[ZMK_BHV_HOLD_TAP_MAX_CAPTURED_EVENTS] = {}; -static int capture_event(const struct zmk_event_header *event) -{ - for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_CAPTURED_EVENTS; i++) { - if (captured_events[i] == NULL) { - captured_events[i] = event; - return 0; - } - } - return -ENOMEM; +static int capture_event(const struct zmk_event_header *event) { + for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_CAPTURED_EVENTS; i++) { + if (captured_events[i] == NULL) { + captured_events[i] = event; + return 0; + } + } + return -ENOMEM; } -static struct position_state_changed *find_captured_keydown_event(u32_t position) -{ - struct position_state_changed *last_match = NULL; - for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_CAPTURED_EVENTS; i++) { - const struct zmk_event_header *eh = captured_events[i]; - if (eh == NULL) { - return last_match; - } - if (!is_position_state_changed(eh)) { - continue; - } - struct position_state_changed *position_event = cast_position_state_changed(eh); - if (position_event->position == position && position_event->state) { - last_match = position_event; - } - } - return last_match; +static struct position_state_changed *find_captured_keydown_event(u32_t position) { + struct position_state_changed *last_match = NULL; + for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_CAPTURED_EVENTS; i++) { + const struct zmk_event_header *eh = captured_events[i]; + if (eh == NULL) { + return last_match; + } + if (!is_position_state_changed(eh)) { + continue; + } + struct position_state_changed *position_event = cast_position_state_changed(eh); + if (position_event->position == position && position_event->state) { + last_match = position_event; + } + } + return last_match; } const struct zmk_listener zmk_listener_behavior_hold_tap; -static void release_captured_events() -{ - if (undecided_hold_tap != NULL) { - return; - } +static void release_captured_events() { + if (undecided_hold_tap != NULL) { + return; + } - // We use a trick to prevent copying the captured_events array. - // - // Events for different mod-tap instances are separated by a NULL pointer. - // - // The first event popped will never be catched by the next active hold-tap - // because to start capturing a mod-tap-key-down event must first completely - // go through the events queue. - // - // Example of this release process; - // [mt2_down, k1_down, k1_up, mt2_up, null, ...] - // ^ - // mt2_down position event isn't captured because no hold-tap is active. - // mt2_down behavior event is handled, now we have an undecided hold-tap - // [null, k1_down, k1_up, mt2_up, null, ...] - // ^ - // k1_down is captured by the mt2 mod-tap - // !note that searches for find_captured_keydown_event by the mt2 behavior will stop at the first null encountered - // [mt1_down, null, k1_up, mt2_up, null, ...] - // ^ - // k1_up event is captured by the new hold-tap: - // [k1_down, k1_up, null, mt2_up, null, ...] - // ^ - // mt2_up event is not captured but causes release of mt2 behavior - // [k1_down, k1_up, null, null, null, ...] - // now mt2 will start releasing it's own captured positions. - for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_CAPTURED_EVENTS; i++) { - const struct zmk_event_header *captured_event = captured_events[i]; - if (captured_event == NULL) { - return; - } - captured_events[i] = NULL; - if (undecided_hold_tap != NULL) { - k_msleep(10); - } - if (is_position_state_changed(captured_event)) { - struct position_state_changed *position_event = cast_position_state_changed(captured_event); - LOG_DBG("Releasing key position event for position %d %s", position_event->position, (position_event->state ? "pressed" : "released")); - } else { - struct keycode_state_changed *modifier_event = cast_keycode_state_changed(captured_event); - LOG_DBG("Releasing mods changed event 0x%02X %s", modifier_event->keycode, (modifier_event->state ? "pressed" : "released")); - } - ZMK_EVENT_RAISE_AT(captured_event, behavior_hold_tap); - } + // We use a trick to prevent copying the captured_events array. + // + // Events for different mod-tap instances are separated by a NULL pointer. + // + // The first event popped will never be catched by the next active hold-tap + // because to start capturing a mod-tap-key-down event must first completely + // go through the events queue. + // + // Example of this release process; + // [mt2_down, k1_down, k1_up, mt2_up, null, ...] + // ^ + // mt2_down position event isn't captured because no hold-tap is active. + // mt2_down behavior event is handled, now we have an undecided hold-tap + // [null, k1_down, k1_up, mt2_up, null, ...] + // ^ + // k1_down is captured by the mt2 mod-tap + // !note that searches for find_captured_keydown_event by the mt2 behavior will stop at the + // first null encountered [mt1_down, null, k1_up, mt2_up, null, ...] + // ^ + // k1_up event is captured by the new hold-tap: + // [k1_down, k1_up, null, mt2_up, null, ...] + // ^ + // mt2_up event is not captured but causes release of mt2 behavior + // [k1_down, k1_up, null, null, null, ...] + // now mt2 will start releasing it's own captured positions. + for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_CAPTURED_EVENTS; i++) { + const struct zmk_event_header *captured_event = captured_events[i]; + if (captured_event == NULL) { + return; + } + captured_events[i] = NULL; + if (undecided_hold_tap != NULL) { + k_msleep(10); + } + if (is_position_state_changed(captured_event)) { + struct position_state_changed *position_event = + cast_position_state_changed(captured_event); + LOG_DBG("Releasing key position event for position %d %s", position_event->position, + (position_event->state ? "pressed" : "released")); + } else { + struct keycode_state_changed *modifier_event = + cast_keycode_state_changed(captured_event); + LOG_DBG("Releasing mods changed event 0x%02X %s", modifier_event->keycode, + (modifier_event->state ? "pressed" : "released")); + } + ZMK_EVENT_RAISE_AT(captured_event, behavior_hold_tap); + } } -static struct active_hold_tap *find_hold_tap(u32_t position) -{ - for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_HELD; i++) { - if (active_hold_taps[i].position == position) { - return &active_hold_taps[i]; - } - } - return NULL; +static struct active_hold_tap *find_hold_tap(u32_t position) { + for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_HELD; i++) { + if (active_hold_taps[i].position == position) { + return &active_hold_taps[i]; + } + } + return NULL; } -static struct active_hold_tap *store_hold_tap(u32_t position, u32_t param_hold, u32_t param_tap, const struct behavior_hold_tap_config *config) -{ - for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_HELD; i++) { - if (active_hold_taps[i].position != ZMK_BHV_HOLD_TAP_POSITION_NOT_USED) { - continue; - } - active_hold_taps[i].position = position; - active_hold_taps[i].is_decided = false; - active_hold_taps[i].is_hold = false; - active_hold_taps[i].config = config; - active_hold_taps[i].param_hold = param_hold; - active_hold_taps[i].param_tap = param_tap; - return &active_hold_taps[i]; - } - return NULL; +static struct active_hold_tap *store_hold_tap(u32_t position, u32_t param_hold, u32_t param_tap, + const struct behavior_hold_tap_config *config) { + for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_HELD; i++) { + if (active_hold_taps[i].position != ZMK_BHV_HOLD_TAP_POSITION_NOT_USED) { + continue; + } + active_hold_taps[i].position = position; + active_hold_taps[i].is_decided = false; + active_hold_taps[i].is_hold = false; + active_hold_taps[i].config = config; + active_hold_taps[i].param_hold = param_hold; + active_hold_taps[i].param_tap = param_tap; + return &active_hold_taps[i]; + } + return NULL; } -static void clear_hold_tap(struct active_hold_tap *hold_tap) -{ - hold_tap->position = ZMK_BHV_HOLD_TAP_POSITION_NOT_USED; - hold_tap->is_decided = false; - hold_tap->is_hold = false; - hold_tap->work_is_cancelled = false; +static void clear_hold_tap(struct active_hold_tap *hold_tap) { + hold_tap->position = ZMK_BHV_HOLD_TAP_POSITION_NOT_USED; + hold_tap->is_decided = false; + hold_tap->is_hold = false; + hold_tap->work_is_cancelled = false; } enum decision_moment { - HT_KEY_UP = 0, - HT_OTHER_KEY_DOWN = 1, - HT_OTHER_KEY_UP = 2, - HT_TIMER_EVENT = 3, + HT_KEY_UP = 0, + HT_OTHER_KEY_DOWN = 1, + HT_OTHER_KEY_UP = 2, + HT_TIMER_EVENT = 3, }; -static void decide_balanced(struct active_hold_tap *hold_tap, enum decision_moment event) -{ - switch (event) { - case HT_KEY_UP: - hold_tap->is_hold = 0; - hold_tap->is_decided = true; - break; - case HT_OTHER_KEY_UP: - case HT_TIMER_EVENT: - hold_tap->is_hold = 1; - hold_tap->is_decided = true; - break; - default: return; - } +static void decide_balanced(struct active_hold_tap *hold_tap, enum decision_moment event) { + switch (event) { + case HT_KEY_UP: + hold_tap->is_hold = 0; + hold_tap->is_decided = true; + break; + case HT_OTHER_KEY_UP: + case HT_TIMER_EVENT: + hold_tap->is_hold = 1; + hold_tap->is_decided = true; + break; + default: + return; + } } -static void decide_tap_preferred(struct active_hold_tap *hold_tap, enum decision_moment event) -{ - switch (event) { - case HT_KEY_UP: - hold_tap->is_hold = 0; - hold_tap->is_decided = true; - break; - case HT_TIMER_EVENT: - hold_tap->is_hold = 1; - hold_tap->is_decided = true; - break; - default: return; - } +static void decide_tap_preferred(struct active_hold_tap *hold_tap, enum decision_moment event) { + switch (event) { + case HT_KEY_UP: + hold_tap->is_hold = 0; + hold_tap->is_decided = true; + break; + case HT_TIMER_EVENT: + hold_tap->is_hold = 1; + hold_tap->is_decided = true; + break; + default: + return; + } } -static void decide_hold_preferred(struct active_hold_tap *hold_tap, enum decision_moment event) -{ - switch (event) { - case HT_KEY_UP: - hold_tap->is_hold = 0; - hold_tap->is_decided = true; - break; - case HT_OTHER_KEY_DOWN: - case HT_TIMER_EVENT: - hold_tap->is_hold = 1; - hold_tap->is_decided = true; - break; - default: return; - } +static void decide_hold_preferred(struct active_hold_tap *hold_tap, enum decision_moment event) { + switch (event) { + case HT_KEY_UP: + hold_tap->is_hold = 0; + hold_tap->is_decided = true; + break; + case HT_OTHER_KEY_DOWN: + case HT_TIMER_EVENT: + hold_tap->is_hold = 1; + hold_tap->is_decided = true; + break; + default: + return; + } } -static inline char* flavor_str(enum flavor flavor) { - switch(flavor) { - case ZMK_BHV_HOLD_TAP_FLAVOR_HOLD_PREFERRED: - return "hold-preferred"; - case ZMK_BHV_HOLD_TAP_FLAVOR_BALANCED: - return "balanced"; - case ZMK_BHV_HOLD_TAP_FLAVOR_TAP_PREFERRED: - return "tap-preferred"; - } - return "UNKNOWN FLAVOR"; +static inline char *flavor_str(enum flavor flavor) { + switch (flavor) { + case ZMK_BHV_HOLD_TAP_FLAVOR_HOLD_PREFERRED: + return "hold-preferred"; + case ZMK_BHV_HOLD_TAP_FLAVOR_BALANCED: + return "balanced"; + case ZMK_BHV_HOLD_TAP_FLAVOR_TAP_PREFERRED: + return "tap-preferred"; + } + return "UNKNOWN FLAVOR"; } -static void decide_hold_tap(struct active_hold_tap *hold_tap, enum decision_moment event) -{ - if (hold_tap->is_decided) { - return; - } +static void decide_hold_tap(struct active_hold_tap *hold_tap, enum decision_moment event) { + if (hold_tap->is_decided) { + return; + } - if (hold_tap != undecided_hold_tap) { - LOG_DBG("ERROR found undecided tap hold that is not the active tap hold"); - return; - } + if (hold_tap != undecided_hold_tap) { + LOG_DBG("ERROR found undecided tap hold that is not the active tap hold"); + return; + } - switch(hold_tap->config->flavor) { - case ZMK_BHV_HOLD_TAP_FLAVOR_HOLD_PREFERRED: - decide_hold_preferred(hold_tap, event); - case ZMK_BHV_HOLD_TAP_FLAVOR_BALANCED: - decide_balanced(hold_tap, event); - case ZMK_BHV_HOLD_TAP_FLAVOR_TAP_PREFERRED: - decide_tap_preferred(hold_tap, event); - } + switch (hold_tap->config->flavor) { + case ZMK_BHV_HOLD_TAP_FLAVOR_HOLD_PREFERRED: + decide_hold_preferred(hold_tap, event); + case ZMK_BHV_HOLD_TAP_FLAVOR_BALANCED: + decide_balanced(hold_tap, event); + case ZMK_BHV_HOLD_TAP_FLAVOR_TAP_PREFERRED: + decide_tap_preferred(hold_tap, event); + } - if (!hold_tap->is_decided) { - return; - } + if (!hold_tap->is_decided) { + return; + } - LOG_DBG("%d decided %s (%s event %d)", - hold_tap->position, - hold_tap->is_hold ? "hold" : "tap", - flavor_str(hold_tap->config->flavor), - event); - undecided_hold_tap = NULL; + LOG_DBG("%d decided %s (%s event %d)", hold_tap->position, hold_tap->is_hold ? "hold" : "tap", + flavor_str(hold_tap->config->flavor), event); + undecided_hold_tap = NULL; - struct zmk_behavior_binding *behavior; - if (hold_tap->is_hold) { - behavior = &hold_tap->config->behaviors->hold; - struct device *behavior_device = device_get_binding(behavior->behavior_dev); - behavior_keymap_binding_pressed(behavior_device, hold_tap->position, hold_tap->param_hold, 0); - } else { - behavior = &hold_tap->config->behaviors->tap; - struct device *behavior_device = device_get_binding(behavior->behavior_dev); - behavior_keymap_binding_pressed(behavior_device, hold_tap->position, hold_tap->param_tap, 0); - } - release_captured_events(); + struct zmk_behavior_binding *behavior; + if (hold_tap->is_hold) { + behavior = &hold_tap->config->behaviors->hold; + struct device *behavior_device = device_get_binding(behavior->behavior_dev); + behavior_keymap_binding_pressed(behavior_device, hold_tap->position, hold_tap->param_hold, + 0); + } else { + behavior = &hold_tap->config->behaviors->tap; + struct device *behavior_device = device_get_binding(behavior->behavior_dev); + behavior_keymap_binding_pressed(behavior_device, hold_tap->position, hold_tap->param_tap, + 0); + } + release_captured_events(); } -static int on_hold_tap_binding_pressed(struct device *dev, u32_t position, u32_t param_hold, u32_t param_tap) -{ - const struct behavior_hold_tap_config *cfg = dev->config_info; +static int on_hold_tap_binding_pressed(struct device *dev, u32_t position, u32_t param_hold, + u32_t param_tap) { + const struct behavior_hold_tap_config *cfg = dev->config_info; - if (undecided_hold_tap != NULL) { - LOG_DBG("ERROR another hold-tap behavior is undecided."); - // if this happens, make sure the behavior events occur AFTER other position events. - return 0; - } + if (undecided_hold_tap != NULL) { + LOG_DBG("ERROR another hold-tap behavior is undecided."); + // if this happens, make sure the behavior events occur AFTER other position events. + return 0; + } - struct active_hold_tap *hold_tap = store_hold_tap(position, param_hold, param_tap, cfg); - if (hold_tap == NULL) { - LOG_ERR("unable to store hold-tap info, did you press more than %d hold-taps?", ZMK_BHV_HOLD_TAP_MAX_HELD); - return 0; - } + struct active_hold_tap *hold_tap = store_hold_tap(position, param_hold, param_tap, cfg); + if (hold_tap == NULL) { + LOG_ERR("unable to store hold-tap info, did you press more than %d hold-taps?", + ZMK_BHV_HOLD_TAP_MAX_HELD); + return 0; + } - LOG_DBG("%d new undecided hold_tap", position); - undecided_hold_tap = hold_tap; - k_delayed_work_submit(&hold_tap->work, cfg->tapping_term_ms()); + LOG_DBG("%d new undecided hold_tap", position); + undecided_hold_tap = hold_tap; + k_delayed_work_submit(&hold_tap->work, cfg->tapping_term_ms()); - // todo: once we get timing info for keypresses, start the timer relative to the original keypress - // don't forget to simulate a timer-event before the event after that time was handled. + // todo: once we get timing info for keypresses, start the timer relative to the original + // keypress don't forget to simulate a timer-event before the event after that time was handled. - return 0; + return 0; } -static int on_hold_tap_binding_released(struct device *dev, u32_t position, u32_t _, u32_t __) -{ - struct active_hold_tap *hold_tap = find_hold_tap(position); +static int on_hold_tap_binding_released(struct device *dev, u32_t position, u32_t _, u32_t __) { + struct active_hold_tap *hold_tap = find_hold_tap(position); - if (hold_tap == NULL) { - LOG_ERR("ACTIVE_HOLD_TAP_CLEANED_UP_TOO_EARLY"); - return 0; - } + if (hold_tap == NULL) { + LOG_ERR("ACTIVE_HOLD_TAP_CLEANED_UP_TOO_EARLY"); + return 0; + } - int work_cancel_result = k_delayed_work_cancel(&hold_tap->work); - decide_hold_tap(hold_tap, HT_KEY_UP); + int work_cancel_result = k_delayed_work_cancel(&hold_tap->work); + decide_hold_tap(hold_tap, HT_KEY_UP); - struct zmk_behavior_binding *behavior; - if (hold_tap->is_hold) { - behavior = &hold_tap->config->behaviors->hold; - struct device *behavior_device = device_get_binding(behavior->behavior_dev); - behavior_keymap_binding_released(behavior_device, hold_tap->position, hold_tap->param_hold, 0); - } else { - behavior = &hold_tap->config->behaviors->tap; - struct device *behavior_device = device_get_binding(behavior->behavior_dev); - behavior_keymap_binding_released(behavior_device, hold_tap->position, hold_tap->param_tap, 0); - } + struct zmk_behavior_binding *behavior; + if (hold_tap->is_hold) { + behavior = &hold_tap->config->behaviors->hold; + struct device *behavior_device = device_get_binding(behavior->behavior_dev); + behavior_keymap_binding_released(behavior_device, hold_tap->position, hold_tap->param_hold, + 0); + } else { + behavior = &hold_tap->config->behaviors->tap; + struct device *behavior_device = device_get_binding(behavior->behavior_dev); + behavior_keymap_binding_released(behavior_device, hold_tap->position, hold_tap->param_tap, + 0); + } + if (work_cancel_result == -EINPROGRESS) { + // let the timer handler clean up + // if we'd clear now, the timer may call back for an uninitialized active_hold_tap. + LOG_DBG("%d hold-tap timer work in event queue", position); + hold_tap->work_is_cancelled = true; + } else { + LOG_DBG("%d cleaning up hold-tap", position); + clear_hold_tap(hold_tap); + } - if (work_cancel_result == -EINPROGRESS) { - // let the timer handler clean up - // if we'd clear now, the timer may call back for an uninitialized active_hold_tap. - LOG_DBG("%d hold-tap timer work in event queue", position); - hold_tap->work_is_cancelled = true; - } else { - LOG_DBG("%d cleaning up hold-tap", position); - clear_hold_tap(hold_tap); - } - - return 0; + return 0; } static const struct behavior_driver_api behavior_hold_tap_driver_api = { - .binding_pressed = on_hold_tap_binding_pressed, - .binding_released = on_hold_tap_binding_released, + .binding_pressed = on_hold_tap_binding_pressed, + .binding_released = on_hold_tap_binding_released, }; +static int position_state_changed_listener(const struct zmk_event_header *eh) { + struct position_state_changed *ev = cast_position_state_changed(eh); -static int position_state_changed_listener(const struct zmk_event_header *eh) -{ - struct position_state_changed *ev = cast_position_state_changed(eh); + if (undecided_hold_tap == NULL) { + LOG_DBG("%d bubble (no undecided hold_tap active)", ev->position); + return 0; + } - if (undecided_hold_tap == NULL) { - LOG_DBG("%d bubble (no undecided hold_tap active)", ev->position); - return 0; - } + if (undecided_hold_tap->position == ev->position) { + if (ev->state) { // keydown + LOG_ERR("hold-tap listener should be called before before most other listeners!"); + return 0; + } else { // keyup + LOG_DBG("%d bubble undecided hold-tap keyrelease event", undecided_hold_tap->position); + return 0; + } + } - if (undecided_hold_tap->position == ev->position) { - if (ev->state) { // keydown - LOG_ERR("hold-tap listener should be called before before most other listeners!"); - return 0; - } else { // keyup - LOG_DBG("%d bubble undecided hold-tap keyrelease event", undecided_hold_tap->position); - return 0; - } - } + if (!ev->state && find_captured_keydown_event(ev->position) == NULL) { + // no keydown event has been captured, let it bubble. + // we'll catch modifiers later in modifier_state_changed_listener + LOG_DBG("%d bubbling %d %s event", undecided_hold_tap->position, ev->position, + ev->state ? "down" : "up"); + return 0; + } - if (!ev->state && find_captured_keydown_event(ev->position) == NULL) { - // no keydown event has been captured, let it bubble. - // we'll catch modifiers later in modifier_state_changed_listener - LOG_DBG("%d bubbling %d %s event", undecided_hold_tap->position, ev->position, ev->state ? "down" : "up"); - return 0; - } - - LOG_DBG("%d capturing %d %s event", undecided_hold_tap->position, ev->position, ev->state ? "down" : "up"); - capture_event(eh); - decide_hold_tap(undecided_hold_tap, ev->state ? HT_OTHER_KEY_DOWN : HT_OTHER_KEY_UP); - return ZMK_EV_EVENT_CAPTURED; + LOG_DBG("%d capturing %d %s event", undecided_hold_tap->position, ev->position, + ev->state ? "down" : "up"); + capture_event(eh); + decide_hold_tap(undecided_hold_tap, ev->state ? HT_OTHER_KEY_DOWN : HT_OTHER_KEY_UP); + return ZMK_EV_EVENT_CAPTURED; } -static bool is_mod(struct keycode_state_changed *ev) -{ - return ev->usage_page == USAGE_KEYPAD && ev->keycode >= LCTL && ev->keycode <= RGUI; +static bool is_mod(struct keycode_state_changed *ev) { + return ev->usage_page == USAGE_KEYPAD && ev->keycode >= LCTL && ev->keycode <= RGUI; } -static int keycode_state_changed_listener(const struct zmk_event_header *eh) -{ - // we want to catch layer-up events too... how? - struct keycode_state_changed *ev = cast_keycode_state_changed(eh); +static int keycode_state_changed_listener(const struct zmk_event_header *eh) { + // we want to catch layer-up events too... how? + struct keycode_state_changed *ev = cast_keycode_state_changed(eh); - if (undecided_hold_tap == NULL) { - // LOG_DBG("0x%02X bubble (no undecided hold_tap active)", ev->keycode); - return 0; - } + if (undecided_hold_tap == NULL) { + // LOG_DBG("0x%02X bubble (no undecided hold_tap active)", ev->keycode); + return 0; + } - if (!is_mod(ev)) { - // LOG_DBG("0x%02X bubble (not a mod)", ev->keycode); - return 0; - } + if (!is_mod(ev)) { + // LOG_DBG("0x%02X bubble (not a mod)", ev->keycode); + return 0; + } - // only key-up events will bubble through position_state_changed_listener - // if a undecided_hold_tap is active. - LOG_DBG("%d capturing 0x%02X %s event", undecided_hold_tap->position, ev->keycode, ev->state ? "down" : "up"); - capture_event(eh); - return ZMK_EV_EVENT_CAPTURED; + // only key-up events will bubble through position_state_changed_listener + // if a undecided_hold_tap is active. + LOG_DBG("%d capturing 0x%02X %s event", undecided_hold_tap->position, ev->keycode, + ev->state ? "down" : "up"); + capture_event(eh); + return ZMK_EV_EVENT_CAPTURED; } - -int behavior_hold_tap_listener(const struct zmk_event_header *eh) -{ - if (is_position_state_changed(eh)) { - return position_state_changed_listener(eh); - } else if (is_keycode_state_changed(eh)) { - return keycode_state_changed_listener(eh); - } - return 0; +int behavior_hold_tap_listener(const struct zmk_event_header *eh) { + if (is_position_state_changed(eh)) { + return position_state_changed_listener(eh); + } else if (is_keycode_state_changed(eh)) { + return keycode_state_changed_listener(eh); + } + return 0; } ZMK_LISTENER(behavior_hold_tap, behavior_hold_tap_listener); @@ -443,60 +437,56 @@ ZMK_SUBSCRIPTION(behavior_hold_tap, position_state_changed); // this should be modifiers_state_changed, but unfrotunately that's not implemented yet. ZMK_SUBSCRIPTION(behavior_hold_tap, keycode_state_changed); -void behavior_hold_tap_timer_work_handler(struct k_work *item) -{ - struct active_hold_tap *hold_tap = CONTAINER_OF(item, struct active_hold_tap, work); +void behavior_hold_tap_timer_work_handler(struct k_work *item) { + struct active_hold_tap *hold_tap = CONTAINER_OF(item, struct active_hold_tap, work); - if (hold_tap->work_is_cancelled) { - clear_hold_tap(hold_tap); - } else { - decide_hold_tap(hold_tap, HT_TIMER_EVENT); - } + if (hold_tap->work_is_cancelled) { + clear_hold_tap(hold_tap); + } else { + decide_hold_tap(hold_tap, HT_TIMER_EVENT); + } } -static int behavior_hold_tap_init(struct device *dev) -{ - static bool init_first_run = true; +static int behavior_hold_tap_init(struct device *dev) { + static bool init_first_run = true; - if (init_first_run) { - for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_HELD; i++) { - k_delayed_work_init(&active_hold_taps[i].work, behavior_hold_tap_timer_work_handler); - active_hold_taps[i].position = ZMK_BHV_HOLD_TAP_POSITION_NOT_USED; - } - } - init_first_run = false; - return 0; + if (init_first_run) { + for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_HELD; i++) { + k_delayed_work_init(&active_hold_taps[i].work, behavior_hold_tap_timer_work_handler); + active_hold_taps[i].position = ZMK_BHV_HOLD_TAP_POSITION_NOT_USED; + } + } + init_first_run = false; + return 0; } struct behavior_hold_tap_data {}; static struct behavior_hold_tap_data behavior_hold_tap_data; -#define _TRANSFORM_ENTRY(idx, node) \ - { \ - .behavior_dev = DT_LABEL(DT_INST_PHANDLE_BY_IDX(node, bindings, idx)), \ - .param1 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param1), (0), (DT_INST_PHA_BY_IDX(node, bindings, idx, param1))), \ - .param2 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param2), (0), (DT_INST_PHA_BY_IDX(node, bindings, idx, param2))), \ - }, +#define _TRANSFORM_ENTRY(idx, node) \ + { \ + .behavior_dev = DT_LABEL(DT_INST_PHANDLE_BY_IDX(node, bindings, idx)), \ + .param1 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param1), (0), \ + (DT_INST_PHA_BY_IDX(node, bindings, idx, param1))), \ + .param2 = COND_CODE_0(DT_INST_PHA_HAS_CELL_AT_IDX(node, bindings, idx, param2), (0), \ + (DT_INST_PHA_BY_IDX(node, bindings, idx, param2))), \ + }, -#define KP_INST(n) \ - static k_timeout_t behavior_hold_tap_config_##n##_gettime() { return K_MSEC(DT_INST_PROP(n, tapping_term_ms)); } \ - static struct behavior_hold_tap_behaviors behavior_hold_tap_behaviors_##n = { \ - .hold = _TRANSFORM_ENTRY(0, n) \ - .tap = _TRANSFORM_ENTRY(1, n) \ - }; \ - static struct behavior_hold_tap_config behavior_hold_tap_config_##n = { \ - .behaviors = &behavior_hold_tap_behaviors_##n, \ - .tapping_term_ms = &behavior_hold_tap_config_##n##_gettime, \ - .flavor = DT_ENUM_IDX(DT_DRV_INST(n), flavor), \ - }; \ - DEVICE_AND_API_INIT( \ - behavior_hold_tap_##n, DT_INST_LABEL(n), behavior_hold_tap_init, \ - &behavior_hold_tap_data, \ - &behavior_hold_tap_config_##n, \ - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \ - &behavior_hold_tap_driver_api); +#define KP_INST(n) \ + static k_timeout_t behavior_hold_tap_config_##n##_gettime() { \ + return K_MSEC(DT_INST_PROP(n, tapping_term_ms)); \ + } \ + static struct behavior_hold_tap_behaviors behavior_hold_tap_behaviors_##n = { \ + .hold = _TRANSFORM_ENTRY(0, n).tap = _TRANSFORM_ENTRY(1, n)}; \ + static struct behavior_hold_tap_config behavior_hold_tap_config_##n = { \ + .behaviors = &behavior_hold_tap_behaviors_##n, \ + .tapping_term_ms = &behavior_hold_tap_config_##n##_gettime, \ + .flavor = DT_ENUM_IDX(DT_DRV_INST(n), flavor), \ + }; \ + DEVICE_AND_API_INIT(behavior_hold_tap_##n, DT_INST_LABEL(n), behavior_hold_tap_init, \ + &behavior_hold_tap_data, &behavior_hold_tap_config_##n, APPLICATION, \ + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_hold_tap_driver_api); DT_INST_FOREACH_STATUS_OKAY(KP_INST) - #endif \ No newline at end of file diff --git a/app/src/behaviors/behavior_key_press.c b/app/src/behaviors/behavior_key_press.c index 42becf50..bbfbe369 100644 --- a/app/src/behaviors/behavior_key_press.c +++ b/app/src/behaviors/behavior_key_press.c @@ -16,45 +16,35 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); struct behavior_key_press_config { - u8_t usage_page; + u8_t usage_page; }; -struct behavior_key_press_data { }; +struct behavior_key_press_data {}; -static int behavior_key_press_init(struct device *dev) -{ - return 0; -}; +static int behavior_key_press_init(struct device *dev) { return 0; }; -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t keycode, u32_t _) -{ - const struct behavior_key_press_config *cfg = dev->config_info; - LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", position, cfg->usage_page, keycode); +static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t keycode, u32_t _) { + const struct behavior_key_press_config *cfg = dev->config_info; + LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", position, cfg->usage_page, keycode); - return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, keycode, true)); + return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, keycode, true)); } -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t keycode, u32_t _) -{ - const struct behavior_key_press_config *cfg = dev->config_info; - LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", position, cfg->usage_page, keycode); +static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t keycode, u32_t _) { + const struct behavior_key_press_config *cfg = dev->config_info; + LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", position, cfg->usage_page, keycode); - return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, keycode, false)); + return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, keycode, false)); } static const struct behavior_driver_api behavior_key_press_driver_api = { - .binding_pressed = on_keymap_binding_pressed, - .binding_released = on_keymap_binding_released -}; + .binding_pressed = on_keymap_binding_pressed, .binding_released = on_keymap_binding_released}; -#define KP_INST(n) \ - static const struct behavior_key_press_config behavior_key_press_config_##n = { \ - .usage_page = DT_INST_PROP(n, usage_page) \ - }; \ - static struct behavior_key_press_data behavior_key_press_data_##n; \ - DEVICE_AND_API_INIT(behavior_key_press_##n, DT_INST_LABEL(n), behavior_key_press_init, \ - &behavior_key_press_data_##n, \ - &behavior_key_press_config_##n, \ - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \ - &behavior_key_press_driver_api); +#define KP_INST(n) \ + static const struct behavior_key_press_config behavior_key_press_config_##n = { \ + .usage_page = DT_INST_PROP(n, usage_page)}; \ + static struct behavior_key_press_data behavior_key_press_data_##n; \ + DEVICE_AND_API_INIT(behavior_key_press_##n, DT_INST_LABEL(n), behavior_key_press_init, \ + &behavior_key_press_data_##n, &behavior_key_press_config_##n, APPLICATION, \ + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_key_press_driver_api); DT_INST_FOREACH_STATUS_OKAY(KP_INST) \ No newline at end of file diff --git a/app/src/behaviors/behavior_momentary_layer.c b/app/src/behaviors/behavior_momentary_layer.c index 7d651354..80b7165b 100644 --- a/app/src/behaviors/behavior_momentary_layer.c +++ b/app/src/behaviors/behavior_momentary_layer.c @@ -14,41 +14,30 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -struct behavior_mo_config { }; -struct behavior_mo_data { }; +struct behavior_mo_config {}; +struct behavior_mo_data {}; -static int behavior_mo_init(struct device *dev) -{ - return 0; -}; +static int behavior_mo_init(struct device *dev) { return 0; }; +static int mo_keymap_binding_pressed(struct device *dev, u32_t position, u32_t layer, u32_t _) { + LOG_DBG("position %d layer %d", position, layer); -static int mo_keymap_binding_pressed(struct device *dev, u32_t position, u32_t layer, u32_t _) -{ - LOG_DBG("position %d layer %d", position, layer); - - return zmk_keymap_layer_activate(layer); + return zmk_keymap_layer_activate(layer); } -static int mo_keymap_binding_released(struct device *dev, u32_t position, u32_t layer, u32_t _) -{ - LOG_DBG("position %d layer %d", position, layer); +static int mo_keymap_binding_released(struct device *dev, u32_t position, u32_t layer, u32_t _) { + LOG_DBG("position %d layer %d", position, layer); - return zmk_keymap_layer_deactivate(layer); + return zmk_keymap_layer_deactivate(layer); } static const struct behavior_driver_api behavior_mo_driver_api = { - .binding_pressed = mo_keymap_binding_pressed, - .binding_released = mo_keymap_binding_released -}; - + .binding_pressed = mo_keymap_binding_pressed, .binding_released = mo_keymap_binding_released}; static const struct behavior_mo_config behavior_mo_config = {}; static struct behavior_mo_data behavior_mo_data; -DEVICE_AND_API_INIT(behavior_mo, DT_INST_LABEL(0), behavior_mo_init, - &behavior_mo_data, - &behavior_mo_config, - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, +DEVICE_AND_API_INIT(behavior_mo, DT_INST_LABEL(0), behavior_mo_init, &behavior_mo_data, + &behavior_mo_config, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_mo_driver_api); diff --git a/app/src/behaviors/behavior_none.c b/app/src/behaviors/behavior_none.c index c4649882..b548e6f7 100644 --- a/app/src/behaviors/behavior_none.c +++ b/app/src/behaviors/behavior_none.c @@ -13,36 +13,30 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -struct behavior_none_config { }; -struct behavior_none_data { }; +struct behavior_none_config {}; +struct behavior_none_data {}; -static int behavior_none_init(struct device *dev) -{ - return 0; -}; +static int behavior_none_init(struct device *dev) { return 0; }; -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, u32_t _param2) -{ - return 0; +static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, + u32_t _param2) { + return 0; } -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t _param1, u32_t _param2) -{ - return 0; +static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t _param1, + u32_t _param2) { + return 0; } static const struct behavior_driver_api behavior_none_driver_api = { - .binding_pressed = on_keymap_binding_pressed, - .binding_released = on_keymap_binding_released, + .binding_pressed = on_keymap_binding_pressed, + .binding_released = on_keymap_binding_released, }; - static const struct behavior_none_config behavior_none_config = {}; static struct behavior_none_data behavior_none_data; -DEVICE_AND_API_INIT(behavior_none, DT_INST_LABEL(0), behavior_none_init, - &behavior_none_data, - &behavior_none_config, - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, +DEVICE_AND_API_INIT(behavior_none, DT_INST_LABEL(0), behavior_none_init, &behavior_none_data, + &behavior_none_config, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_none_driver_api); \ No newline at end of file diff --git a/app/src/behaviors/behavior_reset.c b/app/src/behaviors/behavior_reset.c index b5692b50..90de20b0 100644 --- a/app/src/behaviors/behavior_reset.c +++ b/app/src/behaviors/behavior_reset.c @@ -14,37 +14,31 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); struct behavior_reset_config { - int type; + int type; }; -static int behavior_reset_init(struct device *dev) -{ - return 0; -}; +static int behavior_reset_init(struct device *dev) { return 0; }; -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, u32_t _param2) -{ - const struct behavior_reset_config *cfg = dev->config_info; +static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, + u32_t _param2) { + const struct behavior_reset_config *cfg = dev->config_info; - // TODO: Correct magic code for going into DFU? - // See https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/d6b28e66053eea467166f44875e3c7ec741cb471/src/main.c#L107 - sys_reboot(cfg->type); - return 0; + // TODO: Correct magic code for going into DFU? + // See + // https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/d6b28e66053eea467166f44875e3c7ec741cb471/src/main.c#L107 + sys_reboot(cfg->type); + return 0; } static const struct behavior_driver_api behavior_reset_driver_api = { - .binding_pressed = on_keymap_binding_pressed, + .binding_pressed = on_keymap_binding_pressed, }; +#define RST_INST(n) \ + static const struct behavior_reset_config behavior_reset_config_##n = { \ + .type = DT_INST_PROP(n, type)}; \ + DEVICE_AND_API_INIT(behavior_reset_##n, DT_INST_LABEL(n), behavior_reset_init, NULL, \ + &behavior_reset_config_##n, APPLICATION, \ + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_reset_driver_api); -#define RST_INST(n) \ - static const struct behavior_reset_config behavior_reset_config_##n = { \ - .type = DT_INST_PROP(n, type) \ - }; \ - DEVICE_AND_API_INIT(behavior_reset_##n, DT_INST_LABEL(n), behavior_reset_init, \ - NULL, \ - &behavior_reset_config_##n, \ - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \ - &behavior_reset_driver_api); - DT_INST_FOREACH_STATUS_OKAY(RST_INST) \ No newline at end of file diff --git a/app/src/behaviors/behavior_rgb_underglow.c b/app/src/behaviors/behavior_rgb_underglow.c index f0a35ef8..621eab5e 100644 --- a/app/src/behaviors/behavior_rgb_underglow.c +++ b/app/src/behaviors/behavior_rgb_underglow.c @@ -15,48 +15,41 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -static int behavior_rgb_underglow_init(struct device *dev) -{ - return 0; -} +static int behavior_rgb_underglow_init(struct device *dev) { return 0; } -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t action, u32_t _) -{ - switch (action) - { +static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t action, u32_t _) { + switch (action) { case RGB_TOG: - return zmk_rgb_underglow_toggle(); + return zmk_rgb_underglow_toggle(); case RGB_HUI: - return zmk_rgb_underglow_change_hue(1); + return zmk_rgb_underglow_change_hue(1); case RGB_HUD: - return zmk_rgb_underglow_change_hue(-1); + return zmk_rgb_underglow_change_hue(-1); case RGB_SAI: - return zmk_rgb_underglow_change_sat(1); + return zmk_rgb_underglow_change_sat(1); case RGB_SAD: - return zmk_rgb_underglow_change_sat(-1); + return zmk_rgb_underglow_change_sat(-1); case RGB_BRI: - return zmk_rgb_underglow_change_brt(1); + return zmk_rgb_underglow_change_brt(1); case RGB_BRD: - return zmk_rgb_underglow_change_brt(-1); + return zmk_rgb_underglow_change_brt(-1); case RGB_SPI: - return zmk_rgb_underglow_change_spd(1); + return zmk_rgb_underglow_change_spd(1); case RGB_SPD: - return zmk_rgb_underglow_change_spd(-1); + return zmk_rgb_underglow_change_spd(-1); case RGB_EFF: - return zmk_rgb_underglow_cycle_effect(1); + return zmk_rgb_underglow_cycle_effect(1); case RGB_EFR: - return zmk_rgb_underglow_cycle_effect(-1); - } + return zmk_rgb_underglow_cycle_effect(-1); + } - return -ENOTSUP; + return -ENOTSUP; } static const struct behavior_driver_api behavior_rgb_underglow_driver_api = { - .binding_pressed = on_keymap_binding_pressed, + .binding_pressed = on_keymap_binding_pressed, }; -DEVICE_AND_API_INIT(behavior_rgb_underglow, DT_INST_LABEL(0), behavior_rgb_underglow_init, - NULL, - NULL, - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, +DEVICE_AND_API_INIT(behavior_rgb_underglow, DT_INST_LABEL(0), behavior_rgb_underglow_init, NULL, + NULL, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_rgb_underglow_driver_api); \ No newline at end of file diff --git a/app/src/behaviors/behavior_sensor_rotate_key_press.c b/app/src/behaviors/behavior_sensor_rotate_key_press.c index fa555752..1a0bf03a 100644 --- a/app/src/behaviors/behavior_sensor_rotate_key_press.c +++ b/app/src/behaviors/behavior_sensor_rotate_key_press.c @@ -17,75 +17,69 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); struct behavior_sensor_rotate_key_press_config { - u8_t usage_page; + u8_t usage_page; }; -struct behavior_sensor_rotate_key_press_data { }; +struct behavior_sensor_rotate_key_press_data {}; -static int behavior_sensor_rotate_key_press_init(struct device *dev) -{ - return 0; -}; +static int behavior_sensor_rotate_key_press_init(struct device *dev) { return 0; }; +static int on_sensor_binding_triggered(struct device *dev, struct device *sensor, + u32_t increment_keycode, u32_t decrement_keycode) { + const struct behavior_sensor_rotate_key_press_config *cfg = dev->config_info; + struct sensor_value value; + int err; + u32_t keycode; + struct keycode_state_changed *ev; + LOG_DBG("usage_page 0x%02X inc keycode 0x%02X dec keycode 0x%02X", cfg->usage_page, + increment_keycode, decrement_keycode); -static int on_sensor_binding_triggered(struct device *dev, struct device *sensor, u32_t increment_keycode, u32_t decrement_keycode) -{ - const struct behavior_sensor_rotate_key_press_config *cfg = dev->config_info; - struct sensor_value value; - int err; - u32_t keycode; - struct keycode_state_changed *ev; - LOG_DBG("usage_page 0x%02X inc keycode 0x%02X dec keycode 0x%02X", cfg->usage_page, increment_keycode, decrement_keycode); + err = sensor_channel_get(sensor, SENSOR_CHAN_ROTATION, &value); - err = sensor_channel_get(sensor, SENSOR_CHAN_ROTATION, &value); + if (err) { + LOG_WRN("Failed to ge sensor rotation value: %d", err); + return err; + } - if (err) { - LOG_WRN("Failed to ge sensor rotation value: %d", err); - return err; - } - - switch (value.val1) { + switch (value.val1) { case 1: - keycode = increment_keycode; - break; + keycode = increment_keycode; + break; case -1: - keycode = decrement_keycode; - break; + keycode = decrement_keycode; + break; default: - return -ENOTSUP; - } + return -ENOTSUP; + } - LOG_DBG("SEND %d", keycode); + LOG_DBG("SEND %d", keycode); + ev = new_keycode_state_changed(); + ev->usage_page = cfg->usage_page; + ev->keycode = keycode; + ev->state = true; + ZMK_EVENT_RAISE(ev); - ev = new_keycode_state_changed(); - ev->usage_page = cfg->usage_page; - ev->keycode = keycode; - ev->state = true; - ZMK_EVENT_RAISE(ev); + // TODO: Better way to do this? + k_msleep(5); - // TODO: Better way to do this? - k_msleep(5); - - ev = new_keycode_state_changed(); - ev->usage_page = cfg->usage_page; - ev->keycode = keycode; - ev->state = false; - return ZMK_EVENT_RAISE(ev); + ev = new_keycode_state_changed(); + ev->usage_page = cfg->usage_page; + ev->keycode = keycode; + ev->state = false; + return ZMK_EVENT_RAISE(ev); } static const struct behavior_driver_api behavior_sensor_rotate_key_press_driver_api = { - .sensor_binding_triggered = on_sensor_binding_triggered -}; + .sensor_binding_triggered = on_sensor_binding_triggered}; -#define KP_INST(n) \ - static const struct behavior_sensor_rotate_key_press_config behavior_sensor_rotate_key_press_config_##n = { \ - .usage_page = DT_INST_PROP(n, usage_page) \ - }; \ - static struct behavior_sensor_rotate_key_press_data behavior_sensor_rotate_key_press_data_##n; \ - DEVICE_AND_API_INIT(behavior_sensor_rotate_key_press_##n, DT_INST_LABEL(n), behavior_sensor_rotate_key_press_init, \ - &behavior_sensor_rotate_key_press_data_##n, \ - &behavior_sensor_rotate_key_press_config_##n, \ - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \ - &behavior_sensor_rotate_key_press_driver_api); +#define KP_INST(n) \ + static const struct behavior_sensor_rotate_key_press_config \ + behavior_sensor_rotate_key_press_config_##n = {.usage_page = DT_INST_PROP(n, usage_page)}; \ + static struct behavior_sensor_rotate_key_press_data behavior_sensor_rotate_key_press_data_##n; \ + DEVICE_AND_API_INIT( \ + behavior_sensor_rotate_key_press_##n, DT_INST_LABEL(n), \ + behavior_sensor_rotate_key_press_init, &behavior_sensor_rotate_key_press_data_##n, \ + &behavior_sensor_rotate_key_press_config_##n, APPLICATION, \ + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_sensor_rotate_key_press_driver_api); DT_INST_FOREACH_STATUS_OKAY(KP_INST) \ No newline at end of file diff --git a/app/src/behaviors/behavior_toggle_layer.c b/app/src/behaviors/behavior_toggle_layer.c index c6d52251..28194519 100644 --- a/app/src/behaviors/behavior_toggle_layer.c +++ b/app/src/behaviors/behavior_toggle_layer.c @@ -14,30 +14,21 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -struct behavior_tog_config -{ -}; -struct behavior_tog_data -{ -}; +struct behavior_tog_config {}; +struct behavior_tog_data {}; -static int behavior_tog_init(struct device *dev) -{ - return 0; -}; +static int behavior_tog_init(struct device *dev) { return 0; }; -static int tog_keymap_binding_pressed(struct device *dev, u32_t position, u32_t layer, u32_t _) -{ - LOG_DBG("position %d layer %d", position, layer); +static int tog_keymap_binding_pressed(struct device *dev, u32_t position, u32_t layer, u32_t _) { + LOG_DBG("position %d layer %d", position, layer); - return zmk_keymap_layer_toggle(layer); + return zmk_keymap_layer_toggle(layer); } -static int tog_keymap_binding_released(struct device *dev, u32_t position, u32_t layer, u32_t _) -{ - LOG_DBG("position %d layer %d", position, layer); +static int tog_keymap_binding_released(struct device *dev, u32_t position, u32_t layer, u32_t _) { + LOG_DBG("position %d layer %d", position, layer); - return 0; + return 0; } static const struct behavior_driver_api behavior_tog_driver_api = { @@ -49,8 +40,6 @@ static const struct behavior_tog_config behavior_tog_config = {}; static struct behavior_tog_data behavior_tog_data; -DEVICE_AND_API_INIT(behavior_tog, DT_INST_LABEL(0), behavior_tog_init, - &behavior_tog_data, - &behavior_tog_config, - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, +DEVICE_AND_API_INIT(behavior_tog, DT_INST_LABEL(0), behavior_tog_init, &behavior_tog_data, + &behavior_tog_config, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_tog_driver_api); diff --git a/app/src/behaviors/behavior_transparent.c b/app/src/behaviors/behavior_transparent.c index 51f682b5..f7852f39 100644 --- a/app/src/behaviors/behavior_transparent.c +++ b/app/src/behaviors/behavior_transparent.c @@ -13,36 +13,30 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -struct behavior_transparent_config { }; -struct behavior_transparent_data { }; +struct behavior_transparent_config {}; +struct behavior_transparent_data {}; -static int behavior_transparent_init(struct device *dev) -{ - return 0; -}; +static int behavior_transparent_init(struct device *dev) { return 0; }; -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, u32_t _param2) -{ - return 1; +static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, + u32_t _param2) { + return 1; } -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t _param1, u32_t _param2) -{ - return 1; +static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t _param1, + u32_t _param2) { + return 1; } static const struct behavior_driver_api behavior_transparent_driver_api = { - .binding_pressed = on_keymap_binding_pressed, - .binding_released = on_keymap_binding_released, + .binding_pressed = on_keymap_binding_pressed, + .binding_released = on_keymap_binding_released, }; - static const struct behavior_transparent_config behavior_transparent_config = {}; static struct behavior_transparent_data behavior_transparent_data; DEVICE_AND_API_INIT(behavior_transparent, DT_INST_LABEL(0), behavior_transparent_init, - &behavior_transparent_data, - &behavior_transparent_config, - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, - &behavior_transparent_driver_api); \ No newline at end of file + &behavior_transparent_data, &behavior_transparent_config, APPLICATION, + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_transparent_driver_api); \ No newline at end of file diff --git a/app/src/ble.c b/app/src/ble.c index a2a8207a..49e2b3b0 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -45,7 +45,6 @@ static u8_t passkey_digit = 0; #define PROFILE_COUNT CONFIG_BT_MAX_PAIRED #endif - static struct zmk_ble_profile profiles[PROFILE_COUNT]; static u8_t active_profile; @@ -53,13 +52,12 @@ static const struct bt_data zmk_ble_ad[] = { BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)), BT_DATA_BYTES(BT_DATA_UUID16_SOME, #if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) - 0x12, 0x18, /* HID Service */ + 0x12, 0x18, /* HID Service */ #endif 0x0f, 0x18 /* Battery Service */ - ), + ), #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) - BT_DATA_BYTES(BT_DATA_UUID128_ALL, - ZMK_SPLIT_BT_SERVICE_UUID) + BT_DATA_BYTES(BT_DATA_UUID128_ALL, ZMK_SPLIT_BT_SERVICE_UUID) #endif }; @@ -69,8 +67,7 @@ static bt_addr_le_t peripheral_addr; #endif /* IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) */ -static void raise_profile_changed_event() -{ +static void raise_profile_changed_event() { struct ble_active_profile_changed *ev = new_ble_active_profile_changed(); ev->index = active_profile; ev->profile = &profiles[active_profile]; @@ -78,13 +75,11 @@ static void raise_profile_changed_event() ZMK_EVENT_RAISE(ev); } -static bool active_profile_is_open() -{ +static bool active_profile_is_open() { return !bt_addr_le_cmp(&profiles[active_profile].peer, BT_ADDR_LE_ANY); } -void set_profile_address(u8_t index, const bt_addr_le_t *addr) -{ +void set_profile_address(u8_t index, const bt_addr_le_t *addr) { char setting_name[15]; char addr_str[BT_ADDR_LE_STR_LEN]; @@ -97,8 +92,7 @@ void set_profile_address(u8_t index, const bt_addr_le_t *addr) raise_profile_changed_event(); } -int zmk_ble_adv_pause() -{ +int zmk_ble_adv_pause() { int err = bt_le_adv_stop(); if (err) { LOG_ERR("Failed to stop advertising (err %d)", err); @@ -108,16 +102,12 @@ int zmk_ble_adv_pause() return 0; }; -int zmk_ble_adv_resume() -{ - LOG_DBG("active_profile %d, directed? %s", active_profile, active_profile_is_open() ? "no" : "yes"); +int zmk_ble_adv_resume() { + LOG_DBG("active_profile %d, directed? %s", active_profile, + active_profile_is_open() ? "no" : "yes"); - int err = bt_le_adv_start( - BT_LE_ADV_CONN_NAME, - zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), - NULL, 0); - if (err) - { + int err = bt_le_adv_start(BT_LE_ADV_CONN_NAME, zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), NULL, 0); + if (err) { LOG_ERR("Advertising failed to start (err %d)", err); return err; } @@ -125,10 +115,9 @@ int zmk_ble_adv_resume() return 0; }; -int zmk_ble_clear_bonds() -{ +int zmk_ble_clear_bonds() { LOG_DBG(""); - + if (bt_addr_le_cmp(&profiles[active_profile].peer, BT_ADDR_LE_ANY)) { LOG_DBG("Unpairing!"); bt_unpair(BT_ID_DEFAULT, &profiles[active_profile].peer); @@ -138,8 +127,7 @@ int zmk_ble_clear_bonds() return 0; }; -int zmk_ble_prof_select(u8_t index) -{ +int zmk_ble_prof_select(u8_t index) { LOG_DBG("profile %d", index); if (active_profile == index) { return 0; @@ -148,35 +136,26 @@ int zmk_ble_prof_select(u8_t index) active_profile = index; return settings_save_one("ble/active_profile", &active_profile, sizeof(active_profile)); - raise_profile_changed_event(); + raise_profile_changed_event(); }; -int zmk_ble_prof_next() -{ +int zmk_ble_prof_next() { LOG_DBG(""); return zmk_ble_prof_select((active_profile + 1) % PROFILE_COUNT); }; -int zmk_ble_prof_prev() -{ +int zmk_ble_prof_prev() { LOG_DBG(""); return zmk_ble_prof_select((active_profile + PROFILE_COUNT - 1) % PROFILE_COUNT); }; -bt_addr_le_t *zmk_ble_active_profile_addr() -{ - return &profiles[active_profile].peer; -} +bt_addr_le_t *zmk_ble_active_profile_addr() { return &profiles[active_profile].peer; } -char *zmk_ble_active_profile_name() -{ - return profiles[active_profile].name; -} +char *zmk_ble_active_profile_name() { return profiles[active_profile].name; } #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) -void zmk_ble_set_peripheral_addr(bt_addr_le_t *addr) -{ +void zmk_ble_set_peripheral_addr(bt_addr_le_t *addr) { memcpy(&peripheral_addr, addr, sizeof(bt_addr_le_t)); settings_save_one("ble/peripheral_address", addr, sizeof(bt_addr_le_t)); } @@ -185,8 +164,8 @@ void zmk_ble_set_peripheral_addr(bt_addr_le_t *addr) #if IS_ENABLED(CONFIG_SETTINGS) -static int ble_profiles_handle_set(const char *name, size_t len, settings_read_cb read_cb, void *cb_arg) -{ +static int ble_profiles_handle_set(const char *name, size_t len, settings_read_cb read_cb, + void *cb_arg) { const char *next; LOG_DBG("Setting BLE value %s", log_strdup(name)); @@ -200,7 +179,8 @@ static int ble_profiles_handle_set(const char *name, size_t len, settings_read_c } if (len != sizeof(struct zmk_ble_profile)) { - LOG_ERR("Invalid profile size (got %d expected %d)", len, sizeof(struct zmk_ble_profile)); + LOG_ERR("Invalid profile size (got %d expected %d)", len, + sizeof(struct zmk_ble_profile)); return -EINVAL; } @@ -247,19 +227,14 @@ static int ble_profiles_handle_set(const char *name, size_t len, settings_read_c return 0; }; -struct settings_handler profiles_handler = { - .name = "ble", - .h_set = ble_profiles_handle_set -}; +struct settings_handler profiles_handler = {.name = "ble", .h_set = ble_profiles_handle_set}; #endif /* IS_ENABLED(CONFIG_SETTINGS) */ -static void connected(struct bt_conn *conn, u8_t err) -{ +static void connected(struct bt_conn *conn, u8_t err) { char addr[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); - if (err) - { + if (err) { LOG_WRN("Failed to connect to %s (%u)", log_strdup(addr), err); return; } @@ -272,14 +247,12 @@ static void connected(struct bt_conn *conn, u8_t err) bt_conn_le_phy_update(conn, BT_CONN_LE_PHY_PARAM_2M); #endif - if (bt_conn_set_security(conn, BT_SECURITY_L2)) - { + if (bt_conn_set_security(conn, BT_SECURITY_L2)) { LOG_ERR("Failed to set security"); } } -static void disconnected(struct bt_conn *conn, u8_t reason) -{ +static void disconnected(struct bt_conn *conn, u8_t reason) { char addr[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); @@ -287,29 +260,24 @@ static void disconnected(struct bt_conn *conn, u8_t reason) LOG_DBG("Disconnected from %s (reason 0x%02x)", log_strdup(addr), reason); #if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) - // if (bt_addr_le_cmp(&peripheral_addr, BT_ADDR_LE_ANY) && bt_addr_le_cmp(&peripheral_addr, bt_conn_get_dst(conn))) { + // if (bt_addr_le_cmp(&peripheral_addr, BT_ADDR_LE_ANY) && bt_addr_le_cmp(&peripheral_addr, + // bt_conn_get_dst(conn))) { // zmk_ble_adv_resume(); // } -#else +#else // zmk_ble_adv_resume(); #endif } -static void security_changed(struct bt_conn *conn, bt_security_t level, - enum bt_security_err err) -{ +static void security_changed(struct bt_conn *conn, bt_security_t level, enum bt_security_err err) { char addr[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); - if (!err) - { + if (!err) { LOG_DBG("Security changed: %s level %u", log_strdup(addr), level); - } - else - { - LOG_ERR("Security failed: %s level %u err %d", log_strdup(addr), level, - err); + } else { + LOG_ERR("Security failed: %s level %u err %d", log_strdup(addr), level, err); } } @@ -319,8 +287,7 @@ static struct bt_conn_cb conn_callbacks = { .security_changed = security_changed, }; -static void auth_passkey_display(struct bt_conn *conn, unsigned int passkey) -{ +static void auth_passkey_display(struct bt_conn *conn, unsigned int passkey) { char addr[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); @@ -330,8 +297,7 @@ static void auth_passkey_display(struct bt_conn *conn, unsigned int passkey) #ifdef CONFIG_ZMK_BLE_PASSKEY_ENTRY -static void auth_passkey_entry(struct bt_conn *conn) -{ +static void auth_passkey_entry(struct bt_conn *conn) { char addr[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); @@ -342,14 +308,12 @@ static void auth_passkey_entry(struct bt_conn *conn) #endif -static void auth_cancel(struct bt_conn *conn) -{ +static void auth_cancel(struct bt_conn *conn) { char addr[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); - if (auth_passkey_entry_conn) - { + if (auth_passkey_entry_conn) { bt_conn_unref(auth_passkey_entry_conn); auth_passkey_entry_conn = NULL; } @@ -360,8 +324,8 @@ static void auth_cancel(struct bt_conn *conn) } #if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) -static enum bt_security_err auth_pairing_accept(struct bt_conn *conn, const struct bt_conn_pairing_feat *const feat) -{ +static enum bt_security_err auth_pairing_accept(struct bt_conn *conn, + const struct bt_conn_pairing_feat *const feat) { struct bt_conn_info info; bt_conn_get_info(conn, &info); @@ -375,8 +339,7 @@ static enum bt_security_err auth_pairing_accept(struct bt_conn *conn, const stru }; #endif /* !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) */ -static void auth_pairing_complete(struct bt_conn *conn, bool bonded) -{ +static void auth_pairing_complete(struct bt_conn *conn, bool bonded) { struct bt_conn_info info; char addr[BT_ADDR_LE_STR_LEN]; const bt_addr_le_t *dst = bt_conn_get_dst(conn); @@ -413,12 +376,9 @@ static struct bt_conn_auth_cb zmk_ble_auth_cb_display = { .cancel = auth_cancel, }; - -static void zmk_ble_ready(int err) -{ +static void zmk_ble_ready(int err) { LOG_DBG("ready? %d", err); - if (err) - { + if (err) { LOG_ERR("Bluetooth init failed (err %d)", err); return; } @@ -426,12 +386,10 @@ static void zmk_ble_ready(int err) zmk_ble_adv_resume(); } -static int zmk_ble_init(struct device *_arg) -{ +static int zmk_ble_init(struct device *_arg) { int err = bt_enable(NULL); - if (err) - { + if (err) { LOG_ERR("BLUETOOTH FAILED (%d)", err); return err; } @@ -475,8 +433,7 @@ static int zmk_ble_init(struct device *_arg) return 0; } -int zmk_ble_unpair_all() -{ +int zmk_ble_unpair_all() { int resp = 0; for (int i = BT_ID_DEFAULT; i < CONFIG_BT_ID_MAX; i++) { @@ -490,17 +447,14 @@ int zmk_ble_unpair_all() return resp; }; -bool zmk_ble_handle_key_user(struct zmk_key_event *key_event) -{ +bool zmk_ble_handle_key_user(struct zmk_key_event *key_event) { zmk_key key = key_event->key; - if (!auth_passkey_entry_conn) - { + if (!auth_passkey_entry_conn) { return true; } - if (key < NUM_1 || key > NUM_0) - { + if (key < NUM_1 || key > NUM_0) { return true; } @@ -508,11 +462,9 @@ bool zmk_ble_handle_key_user(struct zmk_key_event *key_event) passkey_entries[passkey_digit++] = val; - if (passkey_digit == 6) - { + if (passkey_digit == 6) { u32_t passkey = 0; - for (int i = 5; i >= 0; i--) - { + for (int i = 5; i >= 0; i--) { passkey = (passkey * 10) + val; } bt_conn_auth_passkey_entry(auth_passkey_entry_conn, passkey); @@ -523,6 +475,4 @@ bool zmk_ble_handle_key_user(struct zmk_key_event *key_event) return false; } -SYS_INIT(zmk_ble_init, - APPLICATION, - CONFIG_ZMK_BLE_INIT_PRIORITY); +SYS_INIT(zmk_ble_init, APPLICATION, CONFIG_ZMK_BLE_INIT_PRIORITY); diff --git a/app/src/ble_unpair_combo.c b/app/src/ble_unpair_combo.c index 3633a5b0..b6e542de 100644 --- a/app/src/ble_unpair_combo.c +++ b/app/src/ble_unpair_combo.c @@ -18,14 +18,12 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include - static u8_t combo_state; const u32_t key_positions[] = DT_INST_PROP(0, key_positions); #define KP_LEN DT_INST_PROP_LEN(0, key_positions) -int index_for_key_position(u32_t kp) -{ +int index_for_key_position(u32_t kp) { for (int i = 0; i < KP_LEN; i++) { if (key_positions[i] == kp) { return i; @@ -35,8 +33,7 @@ int index_for_key_position(u32_t kp) return -1; } -int unpair_combo_listener(const struct zmk_event_header *eh) -{ +int unpair_combo_listener(const struct zmk_event_header *eh) { if (is_position_state_changed(eh)) { const struct position_state_changed *psc = cast_position_state_changed(eh); @@ -51,8 +48,7 @@ int unpair_combo_listener(const struct zmk_event_header *eh) return 0; }; -void unpair_combo_work_handler(struct k_work *work) -{ +void unpair_combo_work_handler(struct k_work *work) { for (int i = 0; i < KP_LEN; i++) { if (!(combo_state & BIT(i))) { LOG_DBG("Key position %d not held, skipping unpair combo", key_positions[i]); @@ -65,8 +61,7 @@ void unpair_combo_work_handler(struct k_work *work) struct k_delayed_work unpair_combo_work; -int zmk_ble_unpair_combo_init(struct device *_unused) -{ +int zmk_ble_unpair_combo_init(struct device *_unused) { k_delayed_work_init(&unpair_combo_work, unpair_combo_work_handler); k_delayed_work_submit(&unpair_combo_work, K_SECONDS(2)); @@ -76,8 +71,6 @@ int zmk_ble_unpair_combo_init(struct device *_unused) ZMK_LISTENER(zmk_ble_unpair_combo, unpair_combo_listener); ZMK_SUBSCRIPTION(zmk_ble_unpair_combo, position_state_changed); -SYS_INIT(zmk_ble_unpair_combo_init, - APPLICATION, - CONFIG_APPLICATION_INIT_PRIORITY); +SYS_INIT(zmk_ble_unpair_combo_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); #endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ diff --git a/app/src/display.c b/app/src/display.c index dca462e4..ecd19086 100644 --- a/app/src/display.c +++ b/app/src/display.c @@ -20,8 +20,7 @@ static struct device *display; static lv_obj_t *screen; -int zmk_display_init() -{ +int zmk_display_init() { lv_obj_t *hello_world_label; lv_obj_t *count_label; @@ -48,8 +47,7 @@ int zmk_display_init() return 0; } -void zmk_display_task_handler() -{ +void zmk_display_task_handler() { lv_tick_inc(10); lv_task_handler(); k_sleep(K_MSEC(10)); diff --git a/app/src/endpoints.c b/app/src/endpoints.c index 61e86cee..ae785870 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -12,27 +12,24 @@ #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -int zmk_endpoints_send_report(u8_t usage_page) -{ +int zmk_endpoints_send_report(u8_t usage_page) { int err; struct zmk_hid_keypad_report *keypad_report; struct zmk_hid_consumer_report *consumer_report; LOG_DBG("usage page 0x%02X", usage_page); - switch (usage_page) - { + switch (usage_page) { case USAGE_KEYPAD: keypad_report = zmk_hid_get_keypad_report(); #ifdef CONFIG_ZMK_USB - if (zmk_usb_hid_send_report((u8_t *)keypad_report, sizeof(struct zmk_hid_keypad_report)) != 0) - { + if (zmk_usb_hid_send_report((u8_t *)keypad_report, sizeof(struct zmk_hid_keypad_report)) != + 0) { LOG_DBG("USB Send Failed"); } #endif /* CONFIG_ZMK_USB */ #ifdef CONFIG_ZMK_BLE err = zmk_hog_send_keypad_report(&keypad_report->body); - if (err) - { + if (err) { LOG_ERR("FAILED TO SEND OVER HOG: %d", err); } #endif /* CONFIG_ZMK_BLE */ @@ -41,16 +38,15 @@ int zmk_endpoints_send_report(u8_t usage_page) case USAGE_CONSUMER: consumer_report = zmk_hid_get_consumer_report(); #ifdef CONFIG_ZMK_USB - if (zmk_usb_hid_send_report((u8_t *)consumer_report, sizeof(struct zmk_hid_consumer_report)) != 0) - { + if (zmk_usb_hid_send_report((u8_t *)consumer_report, + sizeof(struct zmk_hid_consumer_report)) != 0) { LOG_DBG("USB Send Failed"); } #endif /* CONFIG_ZMK_USB */ #ifdef CONFIG_ZMK_BLE err = zmk_hog_send_consumer_report(&consumer_report->body); - if (err) - { + if (err) { LOG_ERR("FAILED TO SEND OVER HOG: %d", err); } #endif /* CONFIG_ZMK_BLE */ @@ -63,4 +59,3 @@ int zmk_endpoints_send_report(u8_t usage_page) return 0; } - diff --git a/app/src/event_manager.c b/app/src/event_manager.c index 6d37e4e6..226f3ce8 100644 --- a/app/src/event_manager.c +++ b/app/src/event_manager.c @@ -3,7 +3,7 @@ * * SPDX-License-Identifier: MIT */ - + #include #include @@ -11,15 +11,13 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include -extern struct zmk_event_type* __event_type_start[]; -extern struct zmk_event_type* __event_type_end[]; +extern struct zmk_event_type *__event_type_start[]; +extern struct zmk_event_type *__event_type_end[]; extern struct zmk_event_subscription __event_subscriptions_start[]; extern struct zmk_event_subscription __event_subscriptions_end[]; - -int zmk_event_manager_handle_from(struct zmk_event_header *event, u8_t start_index) -{ +int zmk_event_manager_handle_from(struct zmk_event_header *event, u8_t start_index) { int ret = 0; u8_t len = __event_subscriptions_end - __event_subscriptions_start; for (int i = start_index; i < len; i++) { @@ -31,15 +29,15 @@ int zmk_event_manager_handle_from(struct zmk_event_header *event, u8_t start_ind goto release; } else if (ret > 0) { switch (ret) { - case ZMK_EV_EVENT_HANDLED: - LOG_DBG("Listener handled the event"); - ret = 0; - goto release; - case ZMK_EV_EVENT_CAPTURED: - LOG_DBG("Listener captured the event"); - event->last_listener_index = i; - // Listeners are expected to free events they capture - return 0; + case ZMK_EV_EVENT_HANDLED: + LOG_DBG("Listener handled the event"); + ret = 0; + goto release; + case ZMK_EV_EVENT_CAPTURED: + LOG_DBG("Listener captured the event"); + event->last_listener_index = i; + // Listeners are expected to free events they capture + return 0; } } } @@ -50,19 +48,18 @@ release: return ret; } -int zmk_event_manager_raise(struct zmk_event_header *event) -{ +int zmk_event_manager_raise(struct zmk_event_header *event) { return zmk_event_manager_handle_from(event, 0); } -int zmk_event_manager_raise_after(struct zmk_event_header *event, const struct zmk_listener *listener) -{ +int zmk_event_manager_raise_after(struct zmk_event_header *event, + const struct zmk_listener *listener) { u8_t len = __event_subscriptions_end - __event_subscriptions_start; for (int i = 0; i < len; i++) { struct zmk_event_subscription *ev_sub = __event_subscriptions_start + i; if (ev_sub->event_type == event->event && ev_sub->listener == listener) { - return zmk_event_manager_handle_from(event, i+1); + return zmk_event_manager_handle_from(event, i + 1); } } @@ -71,8 +68,8 @@ int zmk_event_manager_raise_after(struct zmk_event_header *event, const struct z return -EINVAL; } -int zmk_event_manager_raise_at(struct zmk_event_header *event, const struct zmk_listener *listener) -{ +int zmk_event_manager_raise_at(struct zmk_event_header *event, + const struct zmk_listener *listener) { u8_t len = __event_subscriptions_end - __event_subscriptions_start; for (int i = 0; i < len; i++) { struct zmk_event_subscription *ev_sub = __event_subscriptions_start + i; @@ -87,7 +84,6 @@ int zmk_event_manager_raise_at(struct zmk_event_header *event, const struct zmk_ return -EINVAL; } -int zmk_event_manager_release(struct zmk_event_header *event) -{ +int zmk_event_manager_release(struct zmk_event_header *event) { return zmk_event_manager_handle_from(event, event->last_listener_index + 1); } diff --git a/app/src/hid.c b/app/src/hid.c index 07fc3a0b..f80906cc 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -10,41 +10,27 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include static struct zmk_hid_keypad_report kp_report = { - .report_id = 1, - .body = { - .modifiers = 0, - .keys = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}}; + .report_id = 1, .body = {.modifiers = 0, .keys = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}}; -static struct zmk_hid_consumer_report consumer_report = { - .report_id = 2, - .body = { - .keys = {0,0,0,0,0,0}}}; +static struct zmk_hid_consumer_report consumer_report = {.report_id = 2, + .body = {.keys = {0, 0, 0, 0, 0, 0}}}; -#define _TOGGLE_MOD(mod, state) \ - if (modifier > MOD_RGUI) \ - { \ - return -EINVAL; \ - } \ - WRITE_BIT(kp_report.body.modifiers, mod, state); \ +#define _TOGGLE_MOD(mod, state) \ + if (modifier > MOD_RGUI) { \ + return -EINVAL; \ + } \ + WRITE_BIT(kp_report.body.modifiers, mod, state); \ return 0; -int zmk_hid_register_mod(zmk_mod modifier) -{ - _TOGGLE_MOD(modifier, true); -} -int zmk_hid_unregister_mod(zmk_mod modifier) -{ - _TOGGLE_MOD(modifier, false); -} +int zmk_hid_register_mod(zmk_mod modifier) { _TOGGLE_MOD(modifier, true); } +int zmk_hid_unregister_mod(zmk_mod modifier) { _TOGGLE_MOD(modifier, false); } -int zmk_hid_register_mods(zmk_mod_flags modifiers) -{ +int zmk_hid_register_mods(zmk_mod_flags modifiers) { kp_report.body.modifiers |= modifiers; return 0; } -int zmk_hid_unregister_mods(zmk_mod_flags modifiers) -{ +int zmk_hid_unregister_mods(zmk_mod_flags modifiers) { kp_report.body.modifiers &= ~modifiers; return 0; } @@ -67,28 +53,21 @@ int zmk_hid_unregister_mods(zmk_mod_flags modifiers) #define TOGGLE_KEY(code, val) WRITE_BIT(kp_report.body.keys[code / 8], code % 8, val) -#define TOGGLE_CONSUMER(match, val) \ - for (int idx = 0; idx < MAX_KEYS; idx++) \ - { \ - if (consumer_report.body.keys[idx] != match) \ - { \ - continue; \ - } \ - consumer_report.body.keys[idx] = val; \ - break; \ +#define TOGGLE_CONSUMER(match, val) \ + for (int idx = 0; idx < MAX_KEYS; idx++) { \ + if (consumer_report.body.keys[idx] != match) { \ + continue; \ + } \ + consumer_report.body.keys[idx] = val; \ + break; \ } - -int zmk_hid_keypad_press(zmk_key code) -{ - if (code >= LCTL && code <= RGUI) - { +int zmk_hid_keypad_press(zmk_key code) { + if (code >= LCTL && code <= RGUI) { return zmk_hid_register_mod(code - LCTL); } - - if (code > ZMK_HID_MAX_KEYCODE) - { + if (code > ZMK_HID_MAX_KEYCODE) { return -EINVAL; } @@ -99,15 +78,12 @@ int zmk_hid_keypad_press(zmk_key code) return 0; }; -int zmk_hid_keypad_release(zmk_key code) -{ - if (code >= LCTL && code <= RGUI) - { +int zmk_hid_keypad_release(zmk_key code) { + if (code >= LCTL && code <= RGUI) { return zmk_hid_unregister_mod(code - LCTL); } - if (code > ZMK_HID_MAX_KEYCODE) - { + if (code > ZMK_HID_MAX_KEYCODE) { return -EINVAL; } @@ -118,25 +94,20 @@ int zmk_hid_keypad_release(zmk_key code) return 0; }; -int zmk_hid_consumer_press(zmk_key code) -{ +int zmk_hid_consumer_press(zmk_key code) { TOGGLE_CONSUMER(0U, code); return 0; }; - -int zmk_hid_consumer_release(zmk_key code) -{ +int zmk_hid_consumer_release(zmk_key code) { TOGGLE_CONSUMER(code, 0U); return 0; }; -struct zmk_hid_keypad_report *zmk_hid_get_keypad_report() -{ +struct zmk_hid_keypad_report *zmk_hid_get_keypad_report() { return &kp_report; } -struct zmk_hid_consumer_report *zmk_hid_get_consumer_report() -{ +struct zmk_hid_consumer_report *zmk_hid_get_consumer_report() { return &consumer_report; } diff --git a/app/src/hid_listener.c b/app/src/hid_listener.c index 9f68ca20..4467e6d4 100644 --- a/app/src/hid_listener.c +++ b/app/src/hid_listener.c @@ -15,90 +15,84 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include +static int hid_listener_keycode_pressed(u8_t usage_page, u32_t keycode) { + int err; + LOG_DBG("usage_page 0x%02X keycode 0x%02X", usage_page, keycode); -static int hid_listener_keycode_pressed(u8_t usage_page, u32_t keycode) -{ - int err; - LOG_DBG("usage_page 0x%02X keycode 0x%02X", usage_page, keycode); - - switch (usage_page) { - case USAGE_KEYPAD: - err = zmk_hid_keypad_press(keycode); - if (err) { - LOG_ERR("Unable to press keycode"); - return err; + switch (usage_page) { + case USAGE_KEYPAD: + err = zmk_hid_keypad_press(keycode); + if (err) { + LOG_ERR("Unable to press keycode"); + return err; + } + break; + case USAGE_CONSUMER: + err = zmk_hid_consumer_press(keycode); + if (err) { + LOG_ERR("Unable to press keycode"); + return err; + } + break; } - break; - case USAGE_CONSUMER: - err = zmk_hid_consumer_press(keycode); - if (err) { - LOG_ERR("Unable to press keycode"); - return err; - } - break; - } - return zmk_endpoints_send_report(usage_page); + return zmk_endpoints_send_report(usage_page); } -static int hid_listener_keycode_released(u8_t usage_page, u32_t keycode) -{ - int err; - LOG_DBG("usage_page 0x%02X keycode 0x%02X", usage_page, keycode); - - switch (usage_page) { - case USAGE_KEYPAD: - err = zmk_hid_keypad_release(keycode); - if (err) { - LOG_ERR("Unable to release keycode"); - return err; +static int hid_listener_keycode_released(u8_t usage_page, u32_t keycode) { + int err; + LOG_DBG("usage_page 0x%02X keycode 0x%02X", usage_page, keycode); + + switch (usage_page) { + case USAGE_KEYPAD: + err = zmk_hid_keypad_release(keycode); + if (err) { + LOG_ERR("Unable to release keycode"); + return err; + } + break; + case USAGE_CONSUMER: + err = zmk_hid_consumer_release(keycode); + if (err) { + LOG_ERR("Unable to release keycode"); + return err; + } + break; } - break; - case USAGE_CONSUMER: - err = zmk_hid_consumer_release(keycode); - if (err) { - LOG_ERR("Unable to release keycode"); - return err; - } - break; - } - return zmk_endpoints_send_report(usage_page); + return zmk_endpoints_send_report(usage_page); } -static int hid_listener_modifiers_pressed(zmk_mod_flags modifiers) -{ - LOG_DBG("modifiers %d", modifiers); - - zmk_hid_register_mods(modifiers); - return zmk_endpoints_send_report(USAGE_KEYPAD); +static int hid_listener_modifiers_pressed(zmk_mod_flags modifiers) { + LOG_DBG("modifiers %d", modifiers); + + zmk_hid_register_mods(modifiers); + return zmk_endpoints_send_report(USAGE_KEYPAD); } -static int hid_listener_modifiers_released(zmk_mod_flags modifiers) -{ - LOG_DBG("modifiers %d", modifiers); - - zmk_hid_unregister_mods(modifiers); - return zmk_endpoints_send_report(USAGE_KEYPAD); +static int hid_listener_modifiers_released(zmk_mod_flags modifiers) { + LOG_DBG("modifiers %d", modifiers); + + zmk_hid_unregister_mods(modifiers); + return zmk_endpoints_send_report(USAGE_KEYPAD); } -int hid_listener(const struct zmk_event_header *eh) -{ - if (is_keycode_state_changed(eh)) { - const struct keycode_state_changed *ev = cast_keycode_state_changed(eh); - if (ev->state) { - hid_listener_keycode_pressed(ev->usage_page, ev->keycode); - } else { - hid_listener_keycode_released(ev->usage_page, ev->keycode); +int hid_listener(const struct zmk_event_header *eh) { + if (is_keycode_state_changed(eh)) { + const struct keycode_state_changed *ev = cast_keycode_state_changed(eh); + if (ev->state) { + hid_listener_keycode_pressed(ev->usage_page, ev->keycode); + } else { + hid_listener_keycode_released(ev->usage_page, ev->keycode); + } + } else if (is_modifiers_state_changed(eh)) { + const struct modifiers_state_changed *ev = cast_modifiers_state_changed(eh); + if (ev->state) { + hid_listener_modifiers_pressed(ev->modifiers); + } else { + hid_listener_modifiers_released(ev->modifiers); + } } - } else if (is_modifiers_state_changed(eh)) { - const struct modifiers_state_changed *ev = cast_modifiers_state_changed(eh); - if (ev->state) { - hid_listener_modifiers_pressed(ev->modifiers); - } else { - hid_listener_modifiers_released(ev->modifiers); - } - } - return 0; + return 0; } ZMK_LISTENER(hid_listener, hid_listener); diff --git a/app/src/hog.c b/app/src/hog.c index 93e6d9b3..11349acd 100644 --- a/app/src/hog.c +++ b/app/src/hog.c @@ -17,21 +17,18 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include -enum -{ +enum { HIDS_REMOTE_WAKE = BIT(0), HIDS_NORMALLY_CONNECTABLE = BIT(1), }; -struct hids_info -{ +struct hids_info { u16_t version; /* version number of base USB HID Specification */ u8_t code; /* country HID Device hardware is localized for. */ u8_t flags; } __packed; -struct hids_report -{ +struct hids_report { u8_t id; /* report id */ u8_t type; /* report type */ } __packed; @@ -42,8 +39,7 @@ static struct hids_info info = { .flags = HIDS_NORMALLY_CONNECTABLE & HIDS_REMOTE_WAKE, }; -enum -{ +enum { HIDS_INPUT = 0x01, HIDS_OUTPUT = 0x02, HIDS_FEATURE = 0x03, @@ -63,31 +59,37 @@ static bool host_requests_notification = false; static u8_t ctrl_point; // static u8_t proto_mode; -static ssize_t read_hids_info(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) -{ - return bt_gatt_attr_read(conn, attr, buf, len, offset, attr->user_data, sizeof(struct hids_info)); +static ssize_t read_hids_info(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, + u16_t len, u16_t offset) { + return bt_gatt_attr_read(conn, attr, buf, len, offset, attr->user_data, + sizeof(struct hids_info)); } -static ssize_t read_hids_report_ref(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) -{ - return bt_gatt_attr_read(conn, attr, buf, len, offset, attr->user_data, sizeof(struct hids_report)); +static ssize_t read_hids_report_ref(struct bt_conn *conn, const struct bt_gatt_attr *attr, + void *buf, u16_t len, u16_t offset) { + return bt_gatt_attr_read(conn, attr, buf, len, offset, attr->user_data, + sizeof(struct hids_report)); } -static ssize_t read_hids_report_map(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) -{ - return bt_gatt_attr_read(conn, attr, buf, len, offset, zmk_hid_report_desc, sizeof(zmk_hid_report_desc)); +static ssize_t read_hids_report_map(struct bt_conn *conn, const struct bt_gatt_attr *attr, + void *buf, u16_t len, u16_t offset) { + return bt_gatt_attr_read(conn, attr, buf, len, offset, zmk_hid_report_desc, + sizeof(zmk_hid_report_desc)); } -static ssize_t read_hids_input_report(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) -{ +static ssize_t read_hids_input_report(struct bt_conn *conn, const struct bt_gatt_attr *attr, + void *buf, u16_t len, u16_t offset) { struct zmk_hid_keypad_report_body *report_body = &zmk_hid_get_keypad_report()->body; - return bt_gatt_attr_read(conn, attr, buf, len, offset, report_body, sizeof(struct zmk_hid_keypad_report_body)); + return bt_gatt_attr_read(conn, attr, buf, len, offset, report_body, + sizeof(struct zmk_hid_keypad_report_body)); } -static ssize_t read_hids_consumer_input_report(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) -{ +static ssize_t read_hids_consumer_input_report(struct bt_conn *conn, + const struct bt_gatt_attr *attr, void *buf, + u16_t len, u16_t offset) { struct zmk_hid_consumer_report_body *report_body = &zmk_hid_get_consumer_report()->body; - return bt_gatt_attr_read(conn, attr, buf, len, offset, report_body, sizeof(struct zmk_hid_consumer_report_body)); + return bt_gatt_attr_read(conn, attr, buf, len, offset, report_body, + sizeof(struct zmk_hid_consumer_report_body)); } // static ssize_t write_proto_mode(struct bt_conn *conn, @@ -99,20 +101,15 @@ static ssize_t read_hids_consumer_input_report(struct bt_conn *conn, const struc // return 0; // } -static void input_ccc_changed(const struct bt_gatt_attr *attr, u16_t value) -{ +static void input_ccc_changed(const struct bt_gatt_attr *attr, u16_t value) { host_requests_notification = (value == BT_GATT_CCC_NOTIFY) ? 1 : 0; } -static ssize_t write_ctrl_point(struct bt_conn *conn, - const struct bt_gatt_attr *attr, - const void *buf, u16_t len, u16_t offset, - u8_t flags) -{ +static ssize_t write_ctrl_point(struct bt_conn *conn, const struct bt_gatt_attr *attr, + const void *buf, u16_t len, u16_t offset, u8_t flags) { u8_t *value = attr->user_data; - if (offset + len > sizeof(ctrl_point)) - { + if (offset + len > sizeof(ctrl_point)) { return BT_GATT_ERR(BT_ATT_ERR_INVALID_OFFSET); } @@ -122,35 +119,27 @@ static ssize_t write_ctrl_point(struct bt_conn *conn, } /* HID Service Declaration */ -BT_GATT_SERVICE_DEFINE(hog_svc, - BT_GATT_PRIMARY_SERVICE(BT_UUID_HIDS), - // BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_PROTOCOL_MODE, BT_GATT_CHRC_WRITE_WITHOUT_RESP, - // BT_GATT_PERM_WRITE, NULL, write_proto_mode, &proto_mode), - BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_INFO, BT_GATT_CHRC_READ, - BT_GATT_PERM_READ, read_hids_info, NULL, &info), - BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT_MAP, BT_GATT_CHRC_READ, - BT_GATT_PERM_READ, read_hids_report_map, NULL, NULL), +BT_GATT_SERVICE_DEFINE( + hog_svc, BT_GATT_PRIMARY_SERVICE(BT_UUID_HIDS), + // BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_PROTOCOL_MODE, BT_GATT_CHRC_WRITE_WITHOUT_RESP, + // BT_GATT_PERM_WRITE, NULL, write_proto_mode, &proto_mode), + BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_INFO, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, read_hids_info, + NULL, &info), + BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT_MAP, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, + read_hids_report_map, NULL, NULL), - BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT, - BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY, - BT_GATT_PERM_READ_ENCRYPT, - read_hids_input_report, NULL, NULL), - BT_GATT_CCC(input_ccc_changed, - BT_GATT_PERM_READ_ENCRYPT | BT_GATT_PERM_WRITE_ENCRYPT), - BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, - read_hids_report_ref, NULL, &input), - BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT, - BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY, - BT_GATT_PERM_READ_ENCRYPT, - read_hids_consumer_input_report, NULL, NULL), - BT_GATT_CCC(input_ccc_changed, - BT_GATT_PERM_READ_ENCRYPT | BT_GATT_PERM_WRITE_ENCRYPT), - BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, - read_hids_report_ref, NULL, &consumer_input), - BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_CTRL_POINT, - BT_GATT_CHRC_WRITE_WITHOUT_RESP, - BT_GATT_PERM_WRITE, - NULL, write_ctrl_point, &ctrl_point)); + BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY, + BT_GATT_PERM_READ_ENCRYPT, read_hids_input_report, NULL, NULL), + BT_GATT_CCC(input_ccc_changed, BT_GATT_PERM_READ_ENCRYPT | BT_GATT_PERM_WRITE_ENCRYPT), + BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, read_hids_report_ref, NULL, + &input), + BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY, + BT_GATT_PERM_READ_ENCRYPT, read_hids_consumer_input_report, NULL, NULL), + BT_GATT_CCC(input_ccc_changed, BT_GATT_PERM_READ_ENCRYPT | BT_GATT_PERM_WRITE_ENCRYPT), + BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, read_hids_report_ref, NULL, + &consumer_input), + BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_CTRL_POINT, BT_GATT_CHRC_WRITE_WITHOUT_RESP, + BT_GATT_PERM_WRITE, NULL, write_ctrl_point, &ctrl_point)); struct bt_conn *destination_connection() { struct bt_conn *conn; @@ -165,11 +154,9 @@ struct bt_conn *destination_connection() { } return conn; - } -int zmk_hog_send_keypad_report(struct zmk_hid_keypad_report_body *report) -{ +int zmk_hog_send_keypad_report(struct zmk_hid_keypad_report_body *report) { struct bt_conn *conn = destination_connection(); if (conn == NULL) { return -ENOTCONN; @@ -177,15 +164,16 @@ int zmk_hog_send_keypad_report(struct zmk_hid_keypad_report_body *report) LOG_DBG("Sending to NULL? %s", conn == NULL ? "yes" : "no"); - return bt_gatt_notify(conn, &hog_svc.attrs[5], report, sizeof(struct zmk_hid_keypad_report_body)); + return bt_gatt_notify(conn, &hog_svc.attrs[5], report, + sizeof(struct zmk_hid_keypad_report_body)); }; -int zmk_hog_send_consumer_report(struct zmk_hid_consumer_report_body *report) -{ +int zmk_hog_send_consumer_report(struct zmk_hid_consumer_report_body *report) { struct bt_conn *conn = destination_connection(); if (conn == NULL) { return -ENOTCONN; } - - return bt_gatt_notify(conn, &hog_svc.attrs[10], report, sizeof(struct zmk_hid_consumer_report_body)); + + return bt_gatt_notify(conn, &hog_svc.attrs[10], report, + sizeof(struct zmk_hid_consumer_report_body)); }; diff --git a/app/src/keymap.c b/app/src/keymap.c index b1c68f1e..a87ce04b 100644 --- a/app/src/keymap.c +++ b/app/src/keymap.c @@ -24,33 +24,38 @@ static u8_t zmk_keymap_layer_default = 0; #define DT_DRV_COMPAT zmk_keymap -#define LAYER_CHILD_LEN(node) 1+ +#define LAYER_CHILD_LEN(node) 1 + #define ZMK_KEYMAP_NODE DT_DRV_INST(0) -#define ZMK_KEYMAP_LAYERS_LEN (DT_INST_FOREACH_CHILD(0, LAYER_CHILD_LEN) 0) +#define ZMK_KEYMAP_LAYERS_LEN (DT_INST_FOREACH_CHILD(0, LAYER_CHILD_LEN) 0) #define LAYER_NODE(l) DT_PHANDLE_BY_IDX(ZMK_KEYMAP_NODE, layers, l) -#define _TRANSFORM_ENTRY(idx, layer) \ - { .behavior_dev = DT_LABEL(DT_PHANDLE_BY_IDX(layer, bindings, idx)), \ - .param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, bindings, idx, param1), (0), (DT_PHA_BY_IDX(layer, bindings, idx, param1))), \ - .param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, bindings, idx, param2), (0), (DT_PHA_BY_IDX(layer, bindings, idx, param2))), \ - }, - -#define TRANSFORMED_LAYER(node) \ - { UTIL_LISTIFY(DT_PROP_LEN(node, bindings), _TRANSFORM_ENTRY, node) }, +#define _TRANSFORM_ENTRY(idx, layer) \ + { \ + .behavior_dev = DT_LABEL(DT_PHANDLE_BY_IDX(layer, bindings, idx)), \ + .param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, bindings, idx, param1), (0), \ + (DT_PHA_BY_IDX(layer, bindings, idx, param1))), \ + .param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, bindings, idx, param2), (0), \ + (DT_PHA_BY_IDX(layer, bindings, idx, param2))), \ + }, +#define TRANSFORMED_LAYER(node) {UTIL_LISTIFY(DT_PROP_LEN(node, bindings), _TRANSFORM_ENTRY, node)}, #if ZMK_KEYMAP_HAS_SENSORS -#define _TRANSFORM_SENSOR_ENTRY(idx, layer) \ - { .behavior_dev = DT_LABEL(DT_PHANDLE_BY_IDX(layer, sensor_bindings, idx)), \ - .param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, sensor_bindings, idx, param1), (0), (DT_PHA_BY_IDX(layer, sensor_bindings, idx, param1))), \ - .param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, sensor_bindings, idx, param2), (0), (DT_PHA_BY_IDX(layer, sensor_bindings, idx, param2))), \ - }, +#define _TRANSFORM_SENSOR_ENTRY(idx, layer) \ + { \ + .behavior_dev = DT_LABEL(DT_PHANDLE_BY_IDX(layer, sensor_bindings, idx)), \ + .param1 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, sensor_bindings, idx, param1), (0), \ + (DT_PHA_BY_IDX(layer, sensor_bindings, idx, param1))), \ + .param2 = COND_CODE_0(DT_PHA_HAS_CELL_AT_IDX(layer, sensor_bindings, idx, param2), (0), \ + (DT_PHA_BY_IDX(layer, sensor_bindings, idx, param2))), \ + }, -#define SENSOR_LAYER(node) \ - COND_CODE_1(DT_NODE_HAS_PROP(node, sensor_bindings), \ - ({ UTIL_LISTIFY(DT_PROP_LEN(node, sensor_bindings), _TRANSFORM_SENSOR_ENTRY, node) }), \ - ({})), +#define SENSOR_LAYER(node) \ + COND_CODE_1( \ + DT_NODE_HAS_PROP(node, sensor_bindings), \ + ({UTIL_LISTIFY(DT_PROP_LEN(node, sensor_bindings), _TRANSFORM_SENSOR_ENTRY, node)}), \ + ({})), #endif /* ZMK_KEYMAP_HAS_SENSORS */ @@ -62,155 +67,142 @@ static u8_t zmk_keymap_layer_default = 0; static u32_t zmk_keymap_active_behavior_layer[ZMK_KEYMAP_LEN]; static struct zmk_behavior_binding zmk_keymap[ZMK_KEYMAP_LAYERS_LEN][ZMK_KEYMAP_LEN] = { - DT_INST_FOREACH_CHILD(0, TRANSFORMED_LAYER) -}; + DT_INST_FOREACH_CHILD(0, TRANSFORMED_LAYER)}; #if ZMK_KEYMAP_HAS_SENSORS -static struct zmk_behavior_binding zmk_sensor_keymap[ZMK_KEYMAP_LAYERS_LEN][ZMK_KEYMAP_SENSORS_LEN] = { - DT_INST_FOREACH_CHILD(0, SENSOR_LAYER) -}; +static struct zmk_behavior_binding zmk_sensor_keymap[ZMK_KEYMAP_LAYERS_LEN] + [ZMK_KEYMAP_SENSORS_LEN] = { + DT_INST_FOREACH_CHILD(0, SENSOR_LAYER)}; #endif /* ZMK_KEYMAP_HAS_SENSORS */ -#define SET_LAYER_STATE(layer, state) \ - if (layer >= 32) \ - { \ - return -EINVAL; \ - } \ - WRITE_BIT(zmk_keymap_layer_state, layer, state); \ - return 0; +#define SET_LAYER_STATE(layer, state) \ + if (layer >= 32) { \ + return -EINVAL; \ + } \ + WRITE_BIT(zmk_keymap_layer_state, layer, state); \ + return 0; -bool zmk_keymap_layer_active(u8_t layer) -{ - return (zmk_keymap_layer_state & (BIT(layer))) == (BIT(layer)); +bool zmk_keymap_layer_active(u8_t layer) { + return (zmk_keymap_layer_state & (BIT(layer))) == (BIT(layer)); }; -int zmk_keymap_layer_activate(u8_t layer) -{ - SET_LAYER_STATE(layer, true); +int zmk_keymap_layer_activate(u8_t layer) { SET_LAYER_STATE(layer, true); }; + +int zmk_keymap_layer_deactivate(u8_t layer) { SET_LAYER_STATE(layer, false); }; + +int zmk_keymap_layer_toggle(u8_t layer) { + if (zmk_keymap_layer_active(layer)) { + return zmk_keymap_layer_deactivate(layer); + } + + return zmk_keymap_layer_activate(layer); }; -int zmk_keymap_layer_deactivate(u8_t layer) -{ - SET_LAYER_STATE(layer, false); -}; - -int zmk_keymap_layer_toggle(u8_t layer) -{ - if (zmk_keymap_layer_active(layer)) - { - return zmk_keymap_layer_deactivate(layer); - } - - return zmk_keymap_layer_activate(layer); -}; - -bool is_active_layer(u8_t layer, u32_t layer_state) -{ - return (layer_state & BIT(layer)) == BIT(layer) - || layer == zmk_keymap_layer_default; +bool is_active_layer(u8_t layer, u32_t layer_state) { + return (layer_state & BIT(layer)) == BIT(layer) || layer == zmk_keymap_layer_default; } -int zmk_keymap_apply_position_state(int layer, u32_t position, bool pressed) -{ - struct zmk_behavior_binding *binding = &zmk_keymap[layer][position]; - struct device *behavior; +int zmk_keymap_apply_position_state(int layer, u32_t position, bool pressed) { + struct zmk_behavior_binding *binding = &zmk_keymap[layer][position]; + struct device *behavior; - LOG_DBG("layer: %d position: %d, binding name: %s", layer, position, log_strdup(binding->behavior_dev)); + LOG_DBG("layer: %d position: %d, binding name: %s", layer, position, + log_strdup(binding->behavior_dev)); - behavior = device_get_binding(binding->behavior_dev); + behavior = device_get_binding(binding->behavior_dev); - if (!behavior) { - LOG_DBG("No behavior assigned to %d on layer %d", position, layer); - return 1; - } + if (!behavior) { + LOG_DBG("No behavior assigned to %d on layer %d", position, layer); + return 1; + } - if (pressed) { - return behavior_keymap_binding_pressed(behavior, position, binding->param1, binding->param2); - } else { - return behavior_keymap_binding_released(behavior, position, binding->param1, binding->param2); - } + if (pressed) { + return behavior_keymap_binding_pressed(behavior, position, binding->param1, + binding->param2); + } else { + return behavior_keymap_binding_released(behavior, position, binding->param1, + binding->param2); + } } - -int zmk_keymap_position_state_changed(u32_t position, bool pressed) -{ - for (int layer = ZMK_KEYMAP_LAYERS_LEN - 1; layer >= zmk_keymap_layer_default; layer--) - { - u32_t layer_state = pressed ? zmk_keymap_layer_state : zmk_keymap_active_behavior_layer[position]; - if (is_active_layer(layer, layer_state)) - { - int ret = zmk_keymap_apply_position_state(layer, position, pressed); - zmk_keymap_active_behavior_layer[position] = zmk_keymap_layer_state; +int zmk_keymap_position_state_changed(u32_t position, bool pressed) { + for (int layer = ZMK_KEYMAP_LAYERS_LEN - 1; layer >= zmk_keymap_layer_default; layer--) { + u32_t layer_state = + pressed ? zmk_keymap_layer_state : zmk_keymap_active_behavior_layer[position]; + if (is_active_layer(layer, layer_state)) { + int ret = zmk_keymap_apply_position_state(layer, position, pressed); - if (ret > 0) { - LOG_DBG("behavior processing to continue to next layer"); - continue; - } else if (ret < 0) { - LOG_DBG("Behavior returned error: %d", ret); - return ret; - } else { - return ret; - } - } - } + zmk_keymap_active_behavior_layer[position] = zmk_keymap_layer_state; - return -ENOTSUP; + if (ret > 0) { + LOG_DBG("behavior processing to continue to next layer"); + continue; + } else if (ret < 0) { + LOG_DBG("Behavior returned error: %d", ret); + return ret; + } else { + return ret; + } + } + } + + return -ENOTSUP; } #if ZMK_KEYMAP_HAS_SENSORS -int zmk_keymap_sensor_triggered(u8_t sensor_number, struct device *sensor) -{ - for (int layer = ZMK_KEYMAP_LAYERS_LEN - 1; layer >= zmk_keymap_layer_default; layer--) - { - if (((zmk_keymap_layer_state & BIT(layer)) == BIT(layer) || layer == zmk_keymap_layer_default) && zmk_sensor_keymap[layer] != NULL) - { - struct zmk_behavior_binding *binding = &zmk_sensor_keymap[layer][sensor_number]; - struct device *behavior; - int ret; +int zmk_keymap_sensor_triggered(u8_t sensor_number, struct device *sensor) { + for (int layer = ZMK_KEYMAP_LAYERS_LEN - 1; layer >= zmk_keymap_layer_default; layer--) { + if (((zmk_keymap_layer_state & BIT(layer)) == BIT(layer) || + layer == zmk_keymap_layer_default) && + zmk_sensor_keymap[layer] != NULL) { + struct zmk_behavior_binding *binding = &zmk_sensor_keymap[layer][sensor_number]; + struct device *behavior; + int ret; - LOG_DBG("layer: %d sensor_number: %d, binding name: %s", layer, sensor_number, log_strdup(binding->behavior_dev)); + LOG_DBG("layer: %d sensor_number: %d, binding name: %s", layer, sensor_number, + log_strdup(binding->behavior_dev)); - behavior = device_get_binding(binding->behavior_dev); + behavior = device_get_binding(binding->behavior_dev); - if (!behavior) { - LOG_DBG("No behavior assigned to %d on layer %d", sensor_number, layer); - continue; - } - - ret = behavior_sensor_keymap_binding_triggered(behavior, sensor, binding->param1, binding->param2); + if (!behavior) { + LOG_DBG("No behavior assigned to %d on layer %d", sensor_number, layer); + continue; + } - if (ret > 0) { - LOG_DBG("behavior processing to continue to next layer"); - continue; - } else if (ret < 0) { - LOG_DBG("Behavior returned error: %d", ret); - return ret; - } else { - return ret; - } - } - } + ret = behavior_sensor_keymap_binding_triggered(behavior, sensor, binding->param1, + binding->param2); - return -ENOTSUP; + if (ret > 0) { + LOG_DBG("behavior processing to continue to next layer"); + continue; + } else if (ret < 0) { + LOG_DBG("Behavior returned error: %d", ret); + return ret; + } else { + return ret; + } + } + } + + return -ENOTSUP; } #endif /* ZMK_KEYMAP_HAS_SENSORS */ -int keymap_listener(const struct zmk_event_header *eh) -{ - if (is_position_state_changed(eh)) { - const struct position_state_changed *ev = cast_position_state_changed(eh); - return zmk_keymap_position_state_changed(ev->position, ev->state); +int keymap_listener(const struct zmk_event_header *eh) { + if (is_position_state_changed(eh)) { + const struct position_state_changed *ev = cast_position_state_changed(eh); + return zmk_keymap_position_state_changed(ev->position, ev->state); #if ZMK_KEYMAP_HAS_SENSORS - } else if (is_sensor_event(eh)) { - const struct sensor_event *ev = cast_sensor_event(eh); - return zmk_keymap_sensor_triggered(ev->sensor_number, ev->sensor); + } else if (is_sensor_event(eh)) { + const struct sensor_event *ev = cast_sensor_event(eh); + return zmk_keymap_sensor_triggered(ev->sensor_number, ev->sensor); #endif /* ZMK_KEYMAP_HAS_SENSORS */ - } + } - return -ENOTSUP; + return -ENOTSUP; } ZMK_LISTENER(keymap, keymap_listener); @@ -219,4 +211,3 @@ ZMK_SUBSCRIPTION(keymap, position_state_changed); #if ZMK_KEYMAP_HAS_SENSORS ZMK_SUBSCRIPTION(keymap, sensor_event); #endif /* ZMK_KEYMAP_HAS_SENSORS */ - diff --git a/app/src/kscan.c b/app/src/kscan.c index 7a4d3a49..0046f5ca 100644 --- a/app/src/kscan.c +++ b/app/src/kscan.c @@ -18,61 +18,55 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #define ZMK_KSCAN_EVENT_STATE_PRESSED 0 #define ZMK_KSCAN_EVENT_STATE_RELEASED 1 -struct zmk_kscan_event -{ - u32_t row; - u32_t column; - u32_t state; +struct zmk_kscan_event { + u32_t row; + u32_t column; + u32_t state; }; -struct zmk_kscan_msg_processor -{ - struct k_work work; +struct zmk_kscan_msg_processor { + struct k_work work; } msg_processor; K_MSGQ_DEFINE(zmk_kscan_msgq, sizeof(struct zmk_kscan_event), CONFIG_ZMK_KSCAN_EVENT_QUEUE_SIZE, 4); -static void zmk_kscan_callback(struct device *dev, u32_t row, u32_t column, bool pressed) -{ - struct zmk_kscan_event ev = { - .row = row, - .column = column, - .state = (pressed ? ZMK_KSCAN_EVENT_STATE_PRESSED : ZMK_KSCAN_EVENT_STATE_RELEASED)}; +static void zmk_kscan_callback(struct device *dev, u32_t row, u32_t column, bool pressed) { + struct zmk_kscan_event ev = { + .row = row, + .column = column, + .state = (pressed ? ZMK_KSCAN_EVENT_STATE_PRESSED : ZMK_KSCAN_EVENT_STATE_RELEASED)}; - k_msgq_put(&zmk_kscan_msgq, &ev, K_NO_WAIT); - k_work_submit(&msg_processor.work); + k_msgq_put(&zmk_kscan_msgq, &ev, K_NO_WAIT); + k_work_submit(&msg_processor.work); } -void zmk_kscan_process_msgq(struct k_work *item) -{ - struct zmk_kscan_event ev; +void zmk_kscan_process_msgq(struct k_work *item) { + struct zmk_kscan_event ev; - while (k_msgq_get(&zmk_kscan_msgq, &ev, K_NO_WAIT) == 0) - { - bool pressed = (ev.state == ZMK_KSCAN_EVENT_STATE_PRESSED); - u32_t position = zmk_matrix_transform_row_column_to_position(ev.row, ev.column); - struct position_state_changed *pos_ev; - LOG_DBG("Row: %d, col: %d, position: %d, pressed: %s\n", ev.row, ev.column, position, (pressed ? "true" : "false")); - pos_ev = new_position_state_changed(); - pos_ev->state = pressed; - pos_ev->position = position; - ZMK_EVENT_RAISE(pos_ev); - } + while (k_msgq_get(&zmk_kscan_msgq, &ev, K_NO_WAIT) == 0) { + bool pressed = (ev.state == ZMK_KSCAN_EVENT_STATE_PRESSED); + u32_t position = zmk_matrix_transform_row_column_to_position(ev.row, ev.column); + struct position_state_changed *pos_ev; + LOG_DBG("Row: %d, col: %d, position: %d, pressed: %s\n", ev.row, ev.column, position, + (pressed ? "true" : "false")); + pos_ev = new_position_state_changed(); + pos_ev->state = pressed; + pos_ev->position = position; + ZMK_EVENT_RAISE(pos_ev); + } } -int zmk_kscan_init(char *name) -{ - struct device *dev = device_get_binding(name); - if (dev == NULL) - { - LOG_ERR("Failed to get the KSCAN device"); - return -EINVAL; - } +int zmk_kscan_init(char *name) { + struct device *dev = device_get_binding(name); + if (dev == NULL) { + LOG_ERR("Failed to get the KSCAN device"); + return -EINVAL; + } - k_work_init(&msg_processor.work, zmk_kscan_process_msgq); + k_work_init(&msg_processor.work, zmk_kscan_process_msgq); - kscan_config(dev, zmk_kscan_callback); - kscan_enable_callback(dev); + kscan_config(dev, zmk_kscan_callback); + kscan_enable_callback(dev); - return 0; + return 0; } diff --git a/app/src/kscan_composite.c b/app/src/kscan_composite.c index 15527ebe..02491407 100644 --- a/app/src/kscan_composite.c +++ b/app/src/kscan_composite.c @@ -15,37 +15,31 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #define MATRIX_ROWS DT_PROP(MATRIX_NODE_ID, rows) #define MATRIX_COLS DT_PROP(MATRIX_NODE_ID, columns) -struct kscan_composite_child_config -{ +struct kscan_composite_child_config { char *label; u8_t row_offset; u8_t column_offset; }; -#define CHILD_CONFIG(inst) \ - { \ - .label = DT_LABEL(DT_PHANDLE(inst, kscan)), \ - .row_offset = DT_PROP(inst, row_offset), \ - .column_offset = DT_PROP(inst, column_offset)}, +#define CHILD_CONFIG(inst) \ + {.label = DT_LABEL(DT_PHANDLE(inst, kscan)), \ + .row_offset = DT_PROP(inst, row_offset), \ + .column_offset = DT_PROP(inst, column_offset)}, const struct kscan_composite_child_config kscan_composite_children[] = { DT_FOREACH_CHILD(MATRIX_NODE_ID, CHILD_CONFIG)}; -struct kscan_composite_config -{ -}; +struct kscan_composite_config {}; -struct kscan_composite_data -{ +struct kscan_composite_data { kscan_callback_t callback; struct device *dev; }; -static int kscan_composite_enable_callback(struct device *dev) -{ - for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); i++) - { +static int kscan_composite_enable_callback(struct device *dev) { + for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); + i++) { const struct kscan_composite_child_config *cfg = &kscan_composite_children[i]; kscan_enable_callback(device_get_binding(cfg->label)); @@ -53,10 +47,9 @@ static int kscan_composite_enable_callback(struct device *dev) return 0; } -static int kscan_composite_disable_callback(struct device *dev) -{ - for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); i++) - { +static int kscan_composite_disable_callback(struct device *dev) { + for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); + i++) { const struct kscan_composite_child_config *cfg = &kscan_composite_children[i]; kscan_disable_callback(device_get_binding(cfg->label)); @@ -64,18 +57,17 @@ static int kscan_composite_disable_callback(struct device *dev) return 0; } -static void kscan_composite_child_callback(struct device *child_dev, u32_t row, u32_t column, bool pressed) -{ +static void kscan_composite_child_callback(struct device *child_dev, u32_t row, u32_t column, + bool pressed) { // TODO: Ideally we can get this passed into our callback! struct device *dev = device_get_binding(DT_INST_LABEL(0)); struct kscan_composite_data *data = dev->driver_data; - for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); i++) - { + for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); + i++) { const struct kscan_composite_child_config *cfg = &kscan_composite_children[i]; - if (device_get_binding(cfg->label) != child_dev) - { + if (device_get_binding(cfg->label) != child_dev) { continue; } @@ -83,17 +75,15 @@ static void kscan_composite_child_callback(struct device *child_dev, u32_t row, } } -static int kscan_composite_configure(struct device *dev, kscan_callback_t callback) -{ +static int kscan_composite_configure(struct device *dev, kscan_callback_t callback) { struct kscan_composite_data *data = dev->driver_data; - if (!callback) - { + if (!callback) { return -EINVAL; } - for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); i++) - { + for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); + i++) { const struct kscan_composite_child_config *cfg = &kscan_composite_children[i]; kscan_config(device_get_binding(cfg->label), &kscan_composite_child_callback); @@ -104,8 +94,7 @@ static int kscan_composite_configure(struct device *dev, kscan_callback_t callba return 0; } -static int kscan_composite_init(struct device *dev) -{ +static int kscan_composite_init(struct device *dev) { struct kscan_composite_data *data = dev->driver_data; data->dev = dev; @@ -123,8 +112,6 @@ static const struct kscan_composite_config kscan_composite_config = {}; static struct kscan_composite_data kscan_composite_data; -DEVICE_AND_API_INIT(kscan_composite, DT_INST_LABEL(0), kscan_composite_init, - &kscan_composite_data, - &kscan_composite_config, - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, +DEVICE_AND_API_INIT(kscan_composite, DT_INST_LABEL(0), kscan_composite_init, &kscan_composite_data, + &kscan_composite_config, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &mock_driver_api); diff --git a/app/src/kscan_mock.c b/app/src/kscan_mock.c index 741f6c17..e9c15a05 100644 --- a/app/src/kscan_mock.c +++ b/app/src/kscan_mock.c @@ -15,8 +15,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include -struct kscan_mock_data -{ +struct kscan_mock_data { kscan_callback_t callback; u8_t event_index; @@ -24,20 +23,17 @@ struct kscan_mock_data struct device *dev; }; -static int kscan_mock_disable_callback(struct device *dev) -{ +static int kscan_mock_disable_callback(struct device *dev) { struct kscan_mock_data *data = dev->driver_data; k_delayed_work_cancel(&data->work); return 0; } -static int kscan_mock_configure(struct device *dev, kscan_callback_t callback) -{ +static int kscan_mock_configure(struct device *dev, kscan_callback_t callback) { struct kscan_mock_data *data = dev->driver_data; - if (!callback) - { + if (!callback) { return -EINVAL; } @@ -47,64 +43,53 @@ static int kscan_mock_configure(struct device *dev, kscan_callback_t callback) return 0; } -#define MOCK_INST_INIT(n) \ - struct kscan_mock_config_##n \ - { \ - u32_t events[DT_INST_PROP_LEN(n, events)]; \ - bool exit_after; \ - }; \ - static void kscan_mock_schedule_next_event_##n(struct device *dev) \ - { \ - struct kscan_mock_data *data = dev->driver_data; \ - const struct kscan_mock_config_##n *cfg = dev->config_info; \ - if (data->event_index < DT_INST_PROP_LEN(n, events)) \ - { \ - u32_t ev = cfg->events[data->event_index]; \ - LOG_DBG("delaying next keypress: %d", ZMK_MOCK_MSEC(ev)); \ - k_delayed_work_submit(&data->work, K_MSEC(ZMK_MOCK_MSEC(ev))); \ - } else if (cfg->exit_after) { \ - LOG_DBG("Exiting"); \ - exit(0); \ - } \ - } \ - static void kscan_mock_work_handler_##n(struct k_work *work) \ - { \ - struct kscan_mock_data *data = \ - CONTAINER_OF(work, struct kscan_mock_data, work); \ - const struct kscan_mock_config_##n *cfg = data->dev->config_info; \ - u32_t ev = cfg->events[data->event_index]; \ - LOG_DBG("ev %u row %d column %d state %d\n", ev, \ - ZMK_MOCK_ROW(ev), ZMK_MOCK_COL(ev), ZMK_MOCK_IS_PRESS(ev)); \ - data->callback(data->dev, \ - ZMK_MOCK_ROW(ev), ZMK_MOCK_COL(ev), ZMK_MOCK_IS_PRESS(ev)); \ - kscan_mock_schedule_next_event_##n(data->dev); \ - data->event_index++; \ - } \ - static int kscan_mock_init_##n(struct device *dev) \ - { \ - struct kscan_mock_data *data = dev->driver_data; \ - data->dev = dev; \ - k_delayed_work_init(&data->work, kscan_mock_work_handler_##n); \ - return 0; \ - } \ - static int kscan_mock_enable_callback_##n(struct device *dev) \ - { \ - kscan_mock_schedule_next_event_##n(dev); \ - return 0; \ - } \ - static const struct kscan_driver_api mock_driver_api_##n = { \ - .config = kscan_mock_configure, \ - .enable_callback = kscan_mock_enable_callback_##n, \ - .disable_callback = kscan_mock_disable_callback, \ - }; \ - static struct kscan_mock_data kscan_mock_data_##n; \ - static const struct kscan_mock_config_##n kscan_mock_config_##n = { \ - .events = DT_INST_PROP(n, events), \ - .exit_after = DT_INST_PROP(n, exit_after) }; \ - DEVICE_AND_API_INIT(kscan_mock_##n, DT_INST_LABEL(n), kscan_mock_init_##n, \ - &kscan_mock_data_##n, \ - &kscan_mock_config_##n, \ - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \ - &mock_driver_api_##n); +#define MOCK_INST_INIT(n) \ + struct kscan_mock_config_##n { \ + u32_t events[DT_INST_PROP_LEN(n, events)]; \ + bool exit_after; \ + }; \ + static void kscan_mock_schedule_next_event_##n(struct device *dev) { \ + struct kscan_mock_data *data = dev->driver_data; \ + const struct kscan_mock_config_##n *cfg = dev->config_info; \ + if (data->event_index < DT_INST_PROP_LEN(n, events)) { \ + u32_t ev = cfg->events[data->event_index]; \ + LOG_DBG("delaying next keypress: %d", ZMK_MOCK_MSEC(ev)); \ + k_delayed_work_submit(&data->work, K_MSEC(ZMK_MOCK_MSEC(ev))); \ + } else if (cfg->exit_after) { \ + LOG_DBG("Exiting"); \ + exit(0); \ + } \ + } \ + static void kscan_mock_work_handler_##n(struct k_work *work) { \ + struct kscan_mock_data *data = CONTAINER_OF(work, struct kscan_mock_data, work); \ + const struct kscan_mock_config_##n *cfg = data->dev->config_info; \ + u32_t ev = cfg->events[data->event_index]; \ + LOG_DBG("ev %u row %d column %d state %d\n", ev, ZMK_MOCK_ROW(ev), ZMK_MOCK_COL(ev), \ + ZMK_MOCK_IS_PRESS(ev)); \ + data->callback(data->dev, ZMK_MOCK_ROW(ev), ZMK_MOCK_COL(ev), ZMK_MOCK_IS_PRESS(ev)); \ + kscan_mock_schedule_next_event_##n(data->dev); \ + data->event_index++; \ + } \ + static int kscan_mock_init_##n(struct device *dev) { \ + struct kscan_mock_data *data = dev->driver_data; \ + data->dev = dev; \ + k_delayed_work_init(&data->work, kscan_mock_work_handler_##n); \ + return 0; \ + } \ + static int kscan_mock_enable_callback_##n(struct device *dev) { \ + kscan_mock_schedule_next_event_##n(dev); \ + return 0; \ + } \ + static const struct kscan_driver_api mock_driver_api_##n = { \ + .config = kscan_mock_configure, \ + .enable_callback = kscan_mock_enable_callback_##n, \ + .disable_callback = kscan_mock_disable_callback, \ + }; \ + static struct kscan_mock_data kscan_mock_data_##n; \ + static const struct kscan_mock_config_##n kscan_mock_config_##n = { \ + .events = DT_INST_PROP(n, events), .exit_after = DT_INST_PROP(n, exit_after)}; \ + DEVICE_AND_API_INIT(kscan_mock_##n, DT_INST_LABEL(n), kscan_mock_init_##n, \ + &kscan_mock_data_##n, &kscan_mock_config_##n, APPLICATION, \ + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &mock_driver_api_##n); DT_INST_FOREACH_STATUS_OKAY(MOCK_INST_INIT) diff --git a/app/src/main.c b/app/src/main.c index 5da272e5..dca923e9 100644 --- a/app/src/main.c +++ b/app/src/main.c @@ -18,20 +18,18 @@ LOG_MODULE_REGISTER(zmk, CONFIG_ZMK_LOG_LEVEL); #define ZMK_KSCAN_DEV DT_LABEL(ZMK_MATRIX_NODE_ID) -void main(void) -{ - LOG_INF("Welcome to ZMK!\n"); +void main(void) { + LOG_INF("Welcome to ZMK!\n"); - if (zmk_kscan_init(ZMK_KSCAN_DEV) != 0) - { - return; - } + if (zmk_kscan_init(ZMK_KSCAN_DEV) != 0) { + return; + } #ifdef CONFIG_ZMK_DISPLAY - zmk_display_init(); + zmk_display_init(); - while (1) { - zmk_display_task_handler(); - } + while (1) { + zmk_display_task_handler(); + } #endif /* CONFIG_ZMK_DISPLAY */ } diff --git a/app/src/matrix_transform.c b/app/src/matrix_transform.c index 8a037b34..4e68a56f 100644 --- a/app/src/matrix_transform.c +++ b/app/src/matrix_transform.c @@ -11,16 +11,15 @@ #ifdef ZMK_KEYMAP_TRANSFORM_NODE -#define _TRANSFORM_ENTRY(i, _) \ - [(KT_ROW(DT_PROP_BY_IDX(ZMK_KEYMAP_TRANSFORM_NODE, map, i)) * ZMK_MATRIX_COLS) + KT_COL(DT_PROP_BY_IDX(ZMK_KEYMAP_TRANSFORM_NODE, map, i))] = i, +#define _TRANSFORM_ENTRY(i, _) \ + [(KT_ROW(DT_PROP_BY_IDX(ZMK_KEYMAP_TRANSFORM_NODE, map, i)) * ZMK_MATRIX_COLS) + \ + KT_COL(DT_PROP_BY_IDX(ZMK_KEYMAP_TRANSFORM_NODE, map, i))] = i, -static u32_t transform[] = - { UTIL_LISTIFY(ZMK_KEYMAP_LEN, _TRANSFORM_ENTRY, 0) }; +static u32_t transform[] = {UTIL_LISTIFY(ZMK_KEYMAP_LEN, _TRANSFORM_ENTRY, 0)}; #endif -u32_t zmk_matrix_transform_row_column_to_position(u32_t row, u32_t column) -{ +u32_t zmk_matrix_transform_row_column_to_position(u32_t row, u32_t column) { u32_t matrix_index; #if DT_NODE_HAS_PROP(ZMK_KEYMAP_TRANSFORM_NODE, col_offset) diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 97c2ac0a..13912e30 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -18,8 +18,8 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -#define STRIP_LABEL DT_LABEL(DT_CHOSEN(zmk_underglow)) -#define STRIP_NUM_PIXELS DT_PROP(DT_CHOSEN(zmk_underglow), chain_length) +#define STRIP_LABEL DT_LABEL(DT_CHOSEN(zmk_underglow)) +#define STRIP_NUM_PIXELS DT_PROP(DT_CHOSEN(zmk_underglow), chain_length) enum rgb_underglow_effect { UNDERGLOW_EFFECT_SOLID, @@ -30,19 +30,19 @@ enum rgb_underglow_effect { }; struct led_hsb { - u16_t h; - u8_t s; - u8_t b; + u16_t h; + u8_t s; + u8_t b; }; struct rgb_underglow_state { u16_t hue; - u8_t saturation; - u8_t brightness; - u8_t animation_speed; - u8_t current_effect; + u8_t saturation; + u8_t brightness; + u8_t animation_speed; + u8_t current_effect; u16_t animation_step; - bool on; + bool on; }; struct rgb_underglow_state state; @@ -51,8 +51,7 @@ struct device *led_strip; struct led_rgb pixels[STRIP_NUM_PIXELS]; -static struct led_rgb hsb_to_rgb(struct led_hsb hsb) -{ +static struct led_rgb hsb_to_rgb(struct led_hsb hsb) { double r, g, b; u8_t i = hsb.h / 60; @@ -63,64 +62,81 @@ static struct led_rgb hsb_to_rgb(struct led_hsb hsb) double q = v * (1 - f * s); double t = v * (1 - (1 - f) * s); - switch (i % 6) - { - case 0: r = v; g = t; b = p; break; - case 1: r = q; g = v; b = p; break; - case 2: r = p; g = v; b = t; break; - case 3: r = p; g = q; b = v; break; - case 4: r = t; g = p; b = v; break; - case 5: r = v; g = p; b = q; break; + switch (i % 6) { + case 0: + r = v; + g = t; + b = p; + break; + case 1: + r = q; + g = v; + b = p; + break; + case 2: + r = p; + g = v; + b = t; + break; + case 3: + r = p; + g = q; + b = v; + break; + case 4: + r = t; + g = p; + b = v; + break; + case 5: + r = v; + g = p; + b = q; + break; } - struct led_rgb rgb = { r: r*255, g: g*255, b: b*255 }; + struct led_rgb rgb = {r : r * 255, g : g * 255, b : b * 255}; return rgb; } -static void zmk_rgb_underglow_effect_solid() -{ - for (int i=0; i 2400) { state.animation_step = 0; } } -static void zmk_rgb_underglow_effect_spectrum() -{ - for (int i=0; i= UNDERGLOW_EFFECT_NUMBER) { state.current_effect = 0; } - + state.animation_step = 0; return 0; } -int zmk_rgb_underglow_toggle() -{ - if (!led_strip) return -ENODEV; +int zmk_rgb_underglow_toggle() { + if (!led_strip) + return -ENODEV; state.on = !state.on; @@ -232,9 +242,8 @@ int zmk_rgb_underglow_toggle() k_timer_start(&underglow_tick, K_NO_WAIT, K_MSEC(50)); } else { - for (int i=0; i 350) { @@ -263,9 +272,9 @@ int zmk_rgb_underglow_change_hue(int direction) return 0; } -int zmk_rgb_underglow_change_sat(int direction) -{ - if (!led_strip) return -ENODEV; +int zmk_rgb_underglow_change_sat(int direction) { + if (!led_strip) + return -ENODEV; if (state.saturation == 0 && direction < 0) { return 0; @@ -280,9 +289,9 @@ int zmk_rgb_underglow_change_sat(int direction) return 0; } -int zmk_rgb_underglow_change_brt(int direction) -{ - if (!led_strip) return -ENODEV; +int zmk_rgb_underglow_change_brt(int direction) { + if (!led_strip) + return -ENODEV; if (state.brightness == 0 && direction < 0) { return 0; @@ -297,9 +306,9 @@ int zmk_rgb_underglow_change_brt(int direction) return 0; } -int zmk_rgb_underglow_change_spd(int direction) -{ - if (!led_strip) return -ENODEV; +int zmk_rgb_underglow_change_spd(int direction) { + if (!led_strip) + return -ENODEV; if (state.animation_speed == 1 && direction < 0) { return 0; @@ -314,6 +323,4 @@ int zmk_rgb_underglow_change_spd(int direction) return 0; } -SYS_INIT(zmk_rgb_underglow_init, - APPLICATION, - CONFIG_APPLICATION_INIT_PRIORITY); +SYS_INIT(zmk_rgb_underglow_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); diff --git a/app/src/sensors.c b/app/src/sensors.c index 7a7c0c5b..15f374b3 100644 --- a/app/src/sensors.c +++ b/app/src/sensors.c @@ -24,19 +24,19 @@ struct sensors_data_item { struct sensor_trigger trigger; }; -#define _SENSOR_ITEM(node) {.dev = NULL, .trigger = { .type = SENSOR_TRIG_DELTA, .chan = SENSOR_CHAN_ROTATION } }, -#define SENSOR_ITEM(idx, _) COND_CODE_1(DT_NODE_HAS_STATUS(ZMK_KEYMAP_SENSORS_BY_IDX(idx),okay), (_SENSOR_ITEM(ZMK_KEYMAP_SENSORS_BY_IDX(idx))),()) +#define _SENSOR_ITEM(node) \ + {.dev = NULL, .trigger = {.type = SENSOR_TRIG_DELTA, .chan = SENSOR_CHAN_ROTATION}}, +#define SENSOR_ITEM(idx, _) \ + COND_CODE_1(DT_NODE_HAS_STATUS(ZMK_KEYMAP_SENSORS_BY_IDX(idx), okay), \ + (_SENSOR_ITEM(ZMK_KEYMAP_SENSORS_BY_IDX(idx))), ()) -static struct sensors_data_item sensors[] = { - UTIL_LISTIFY(ZMK_KEYMAP_SENSORS_LEN, SENSOR_ITEM, 0) -}; +static struct sensors_data_item sensors[] = {UTIL_LISTIFY(ZMK_KEYMAP_SENSORS_LEN, SENSOR_ITEM, 0)}; -static void zmk_sensors_trigger_handler(struct device *dev, struct sensor_trigger *trigger) -{ +static void zmk_sensors_trigger_handler(struct device *dev, struct sensor_trigger *trigger) { int err; - struct sensors_data_item * item = CONTAINER_OF(trigger, struct sensors_data_item, trigger); + struct sensors_data_item *item = CONTAINER_OF(trigger, struct sensors_data_item, trigger); struct sensor_event *event; - + LOG_DBG("sensor %d", item->sensor_number); err = sensor_sample_fetch(dev); @@ -52,8 +52,7 @@ static void zmk_sensors_trigger_handler(struct device *dev, struct sensor_trigge ZMK_EVENT_RAISE(event); } -static void zmk_sensors_init_item(const char *node, u8_t i, u8_t abs_i) -{ +static void zmk_sensors_init_item(const char *node, u8_t i, u8_t abs_i) { LOG_DBG("Init %s at index %d with sensor_number %d", node, i, abs_i); sensors[i].dev = device_get_binding(node); @@ -68,10 +67,11 @@ static void zmk_sensors_init_item(const char *node, u8_t i, u8_t abs_i) } #define _SENSOR_INIT(node) zmk_sensors_init_item(DT_LABEL(node), local_index++, absolute_index++); -#define SENSOR_INIT(idx, _i) COND_CODE_1(DT_NODE_HAS_STATUS(ZMK_KEYMAP_SENSORS_BY_IDX(idx),okay), (_SENSOR_INIT(ZMK_KEYMAP_SENSORS_BY_IDX(idx))),(absolute_index++;)) +#define SENSOR_INIT(idx, _i) \ + COND_CODE_1(DT_NODE_HAS_STATUS(ZMK_KEYMAP_SENSORS_BY_IDX(idx), okay), \ + (_SENSOR_INIT(ZMK_KEYMAP_SENSORS_BY_IDX(idx))), (absolute_index++;)) -static int zmk_sensors_init(struct device *_arg) -{ +static int zmk_sensors_init(struct device *_arg) { int local_index = 0; int absolute_index = 0; @@ -79,8 +79,6 @@ static int zmk_sensors_init(struct device *_arg) return 0; } -SYS_INIT(zmk_sensors_init, - APPLICATION, - CONFIG_APPLICATION_INIT_PRIORITY); +SYS_INIT(zmk_sensors_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); #endif /* ZMK_KEYMAP_HAS_SENSORS */ \ No newline at end of file diff --git a/app/src/split/bluetooth/central.c b/app/src/split/bluetooth/central.c index 6d8b4357..cb1b68be 100644 --- a/app/src/split/bluetooth/central.c +++ b/app/src/split/bluetooth/central.c @@ -33,303 +33,290 @@ static struct bt_uuid_128 uuid = BT_UUID_INIT_128(ZMK_SPLIT_BT_SERVICE_UUID); static struct bt_gatt_discover_params discover_params; static struct bt_gatt_subscribe_params subscribe_params; -static u8_t split_central_notify_func(struct bt_conn *conn, - struct bt_gatt_subscribe_params *params, - const void *data, u16_t length) -{ - static u8_t position_state[POSITION_STATE_DATA_LEN]; +static u8_t split_central_notify_func(struct bt_conn *conn, struct bt_gatt_subscribe_params *params, + const void *data, u16_t length) { + static u8_t position_state[POSITION_STATE_DATA_LEN]; - u8_t changed_positions[POSITION_STATE_DATA_LEN]; + u8_t changed_positions[POSITION_STATE_DATA_LEN]; - if (!data) { - LOG_DBG("[UNSUBSCRIBED]"); - params->value_handle = 0U; - return BT_GATT_ITER_STOP; - } + if (!data) { + LOG_DBG("[UNSUBSCRIBED]"); + params->value_handle = 0U; + return BT_GATT_ITER_STOP; + } - LOG_DBG("[NOTIFICATION] data %p length %u", data, length); + LOG_DBG("[NOTIFICATION] data %p length %u", data, length); - for (int i = 0; i < POSITION_STATE_DATA_LEN; i++) { - changed_positions[i] = ((u8_t *)data)[i] ^ position_state[i]; - position_state[i] = ((u8_t *)data)[i]; - } + for (int i = 0; i < POSITION_STATE_DATA_LEN; i++) { + changed_positions[i] = ((u8_t *)data)[i] ^ position_state[i]; + position_state[i] = ((u8_t *)data)[i]; + } - for (int i = 0; i < POSITION_STATE_DATA_LEN; i++) { - for (int j = 0; j < 8; j++) { - if (changed_positions[i] & BIT(j)) { - u32_t position = (i * 8) + j; - bool pressed = position_state[i] & BIT(j); - struct position_state_changed *pos_ev = new_position_state_changed(); - pos_ev->position = position; - pos_ev->state = pressed; + for (int i = 0; i < POSITION_STATE_DATA_LEN; i++) { + for (int j = 0; j < 8; j++) { + if (changed_positions[i] & BIT(j)) { + u32_t position = (i * 8) + j; + bool pressed = position_state[i] & BIT(j); + struct position_state_changed *pos_ev = new_position_state_changed(); + pos_ev->position = position; + pos_ev->state = pressed; - LOG_DBG("Trigger key position state change for %d", position); - ZMK_EVENT_RAISE(pos_ev); - } - } - } + LOG_DBG("Trigger key position state change for %d", position); + ZMK_EVENT_RAISE(pos_ev); + } + } + } - - return BT_GATT_ITER_CONTINUE; + return BT_GATT_ITER_CONTINUE; } -static int split_central_subscribe(struct bt_conn *conn) -{ - int err = bt_gatt_subscribe(conn, &subscribe_params); - switch (err) { - case -EALREADY: - LOG_DBG("[ALREADY SUBSCRIBED]"); - break; - // break; - // bt_gatt_unsubscribe(conn, &subscribe_params); - // return split_central_subscribe(conn); - case 0: - LOG_DBG("[SUBSCRIBED]"); - break; - default: - LOG_ERR("Subscribe failed (err %d)", err); - break; - } +static int split_central_subscribe(struct bt_conn *conn) { + int err = bt_gatt_subscribe(conn, &subscribe_params); + switch (err) { + case -EALREADY: + LOG_DBG("[ALREADY SUBSCRIBED]"); + break; + // break; + // bt_gatt_unsubscribe(conn, &subscribe_params); + // return split_central_subscribe(conn); + case 0: + LOG_DBG("[SUBSCRIBED]"); + break; + default: + LOG_ERR("Subscribe failed (err %d)", err); + break; + } - return 0; + return 0; } -static u8_t split_central_discovery_func(struct bt_conn *conn, - const struct bt_gatt_attr *attr, - struct bt_gatt_discover_params *params) -{ - int err; +static u8_t split_central_discovery_func(struct bt_conn *conn, const struct bt_gatt_attr *attr, + struct bt_gatt_discover_params *params) { + int err; - if (!attr) { - LOG_DBG("Discover complete"); - (void)memset(params, 0, sizeof(*params)); - return BT_GATT_ITER_STOP; - } + if (!attr) { + LOG_DBG("Discover complete"); + (void)memset(params, 0, sizeof(*params)); + return BT_GATT_ITER_STOP; + } - LOG_DBG("[ATTRIBUTE] handle %u", attr->handle); + LOG_DBG("[ATTRIBUTE] handle %u", attr->handle); - if (!bt_uuid_cmp(discover_params.uuid, BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID))) { - memcpy(&uuid, BT_UUID_DECLARE_128(ZMK_SPLIT_BT_CHAR_POSITION_STATE_UUID), sizeof(uuid)); - discover_params.uuid = &uuid.uuid; - discover_params.start_handle = attr->handle + 1; - discover_params.type = BT_GATT_DISCOVER_CHARACTERISTIC; + if (!bt_uuid_cmp(discover_params.uuid, BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID))) { + memcpy(&uuid, BT_UUID_DECLARE_128(ZMK_SPLIT_BT_CHAR_POSITION_STATE_UUID), sizeof(uuid)); + discover_params.uuid = &uuid.uuid; + discover_params.start_handle = attr->handle + 1; + discover_params.type = BT_GATT_DISCOVER_CHARACTERISTIC; - err = bt_gatt_discover(conn, &discover_params); - if (err) { - LOG_ERR("Discover failed (err %d)", err); - } - } else if (!bt_uuid_cmp(discover_params.uuid, - BT_UUID_DECLARE_128(ZMK_SPLIT_BT_CHAR_POSITION_STATE_UUID))) { - memcpy(&uuid, BT_UUID_GATT_CCC, sizeof(uuid)); - discover_params.uuid = &uuid.uuid; - discover_params.start_handle = attr->handle + 2; - discover_params.type = BT_GATT_DISCOVER_DESCRIPTOR; - subscribe_params.value_handle = bt_gatt_attr_value_handle(attr); + err = bt_gatt_discover(conn, &discover_params); + if (err) { + LOG_ERR("Discover failed (err %d)", err); + } + } else if (!bt_uuid_cmp(discover_params.uuid, + BT_UUID_DECLARE_128(ZMK_SPLIT_BT_CHAR_POSITION_STATE_UUID))) { + memcpy(&uuid, BT_UUID_GATT_CCC, sizeof(uuid)); + discover_params.uuid = &uuid.uuid; + discover_params.start_handle = attr->handle + 2; + discover_params.type = BT_GATT_DISCOVER_DESCRIPTOR; + subscribe_params.value_handle = bt_gatt_attr_value_handle(attr); - err = bt_gatt_discover(conn, &discover_params); - if (err) { - LOG_ERR("Discover failed (err %d)", err); - } - } else { - subscribe_params.notify = split_central_notify_func; - subscribe_params.value = BT_GATT_CCC_NOTIFY; - subscribe_params.ccc_handle = attr->handle; + err = bt_gatt_discover(conn, &discover_params); + if (err) { + LOG_ERR("Discover failed (err %d)", err); + } + } else { + subscribe_params.notify = split_central_notify_func; + subscribe_params.value = BT_GATT_CCC_NOTIFY; + subscribe_params.ccc_handle = attr->handle; - split_central_subscribe(conn); + split_central_subscribe(conn); - return BT_GATT_ITER_STOP; - } + return BT_GATT_ITER_STOP; + } - return BT_GATT_ITER_STOP; + return BT_GATT_ITER_STOP; } static void split_central_process_connection(struct bt_conn *conn) { - int err; + int err; - LOG_DBG("Current security for connection: %d", bt_conn_get_security(conn)); - - err = bt_conn_set_security(conn, BT_SECURITY_L2); - if (err) { - LOG_ERR("Failed to set security (reason %d)", err); - return; - } + LOG_DBG("Current security for connection: %d", bt_conn_get_security(conn)); - if (conn == default_conn && !subscribe_params.value) { - discover_params.uuid = &uuid.uuid; - discover_params.func = split_central_discovery_func; - discover_params.start_handle = 0x0001; - discover_params.end_handle = 0xffff; - discover_params.type = BT_GATT_DISCOVER_PRIMARY; + err = bt_conn_set_security(conn, BT_SECURITY_L2); + if (err) { + LOG_ERR("Failed to set security (reason %d)", err); + return; + } - err = bt_gatt_discover(default_conn, &discover_params); - if (err) { - LOG_ERR("Discover failed(err %d)", err); - return; - } - } + if (conn == default_conn && !subscribe_params.value) { + discover_params.uuid = &uuid.uuid; + discover_params.func = split_central_discovery_func; + discover_params.start_handle = 0x0001; + discover_params.end_handle = 0xffff; + discover_params.type = BT_GATT_DISCOVER_PRIMARY; - struct bt_conn_info info; + err = bt_gatt_discover(default_conn, &discover_params); + if (err) { + LOG_ERR("Discover failed(err %d)", err); + return; + } + } - bt_conn_get_info(conn, &info); + struct bt_conn_info info; - LOG_DBG("New connection params: Interval: %d, Latency: %d, PHY: %d", info.le.interval, info.le.latency, info.le.phy->rx_phy); + bt_conn_get_info(conn, &info); + + LOG_DBG("New connection params: Interval: %d, Latency: %d, PHY: %d", info.le.interval, + info.le.latency, info.le.phy->rx_phy); } -static bool split_central_eir_found(struct bt_data *data, void *user_data) -{ - bt_addr_le_t *addr = user_data; - int i; +static bool split_central_eir_found(struct bt_data *data, void *user_data) { + bt_addr_le_t *addr = user_data; + int i; - LOG_DBG("[AD]: %u data_len %u", data->type, data->data_len); + LOG_DBG("[AD]: %u data_len %u", data->type, data->data_len); - switch (data->type) { - case BT_DATA_UUID128_SOME: - case BT_DATA_UUID128_ALL: - if (data->data_len % 16 != 0U) { - LOG_ERR("AD malformed"); - return true; - } + switch (data->type) { + case BT_DATA_UUID128_SOME: + case BT_DATA_UUID128_ALL: + if (data->data_len % 16 != 0U) { + LOG_ERR("AD malformed"); + return true; + } - for (i = 0; i < data->data_len; i += 16) { - struct bt_le_conn_param *param; - struct bt_uuid uuid; - int err; + for (i = 0; i < data->data_len; i += 16) { + struct bt_le_conn_param *param; + struct bt_uuid uuid; + int err; if (!bt_uuid_create(&uuid, &data->data[i], 16)) { LOG_ERR("Unable to load UUID"); continue; } - if (!bt_uuid_cmp(&uuid, BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID))) { - char uuid_str[BT_UUID_STR_LEN]; - char service_uuid_str[BT_UUID_STR_LEN]; + if (!bt_uuid_cmp(&uuid, BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID))) { + char uuid_str[BT_UUID_STR_LEN]; + char service_uuid_str[BT_UUID_STR_LEN]; - bt_uuid_to_str(&uuid, uuid_str, sizeof(uuid_str)); - bt_uuid_to_str(BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID), service_uuid_str, sizeof(service_uuid_str)); - LOG_DBG("UUID %s does not match split UUID: %s", log_strdup(uuid_str), log_strdup(service_uuid_str)); - continue; - } + bt_uuid_to_str(&uuid, uuid_str, sizeof(uuid_str)); + bt_uuid_to_str(BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID), service_uuid_str, + sizeof(service_uuid_str)); + LOG_DBG("UUID %s does not match split UUID: %s", log_strdup(uuid_str), + log_strdup(service_uuid_str)); + continue; + } - LOG_DBG("Found the split service"); + LOG_DBG("Found the split service"); - zmk_ble_set_peripheral_addr(addr); + zmk_ble_set_peripheral_addr(addr); - err = bt_le_scan_stop(); - if (err) { - LOG_ERR("Stop LE scan failed (err %d)", err); - continue; - } + err = bt_le_scan_stop(); + if (err) { + LOG_ERR("Stop LE scan failed (err %d)", err); + continue; + } - default_conn = bt_conn_lookup_addr_le(BT_ID_DEFAULT, addr); - if (default_conn) { - LOG_DBG("Found existing connection"); - split_central_process_connection(default_conn); - } else { - param = BT_LE_CONN_PARAM(0x0006, 0x0006, 30, 400); + default_conn = bt_conn_lookup_addr_le(BT_ID_DEFAULT, addr); + if (default_conn) { + LOG_DBG("Found existing connection"); + split_central_process_connection(default_conn); + } else { + param = BT_LE_CONN_PARAM(0x0006, 0x0006, 30, 400); - err = bt_conn_le_create(addr, BT_CONN_LE_CREATE_CONN, - param, &default_conn); - if (err) { - LOG_ERR("Create conn failed (err %d) (create conn? 0x%04x)", err, BT_HCI_OP_LE_CREATE_CONN); - start_scan(); - } + err = bt_conn_le_create(addr, BT_CONN_LE_CREATE_CONN, param, &default_conn); + if (err) { + LOG_ERR("Create conn failed (err %d) (create conn? 0x%04x)", err, + BT_HCI_OP_LE_CREATE_CONN); + start_scan(); + } - err = bt_conn_le_phy_update(default_conn, BT_CONN_LE_PHY_PARAM_2M); - if (err) { - LOG_ERR("Update phy conn failed (err %d)", err); - start_scan(); - } - } + err = bt_conn_le_phy_update(default_conn, BT_CONN_LE_PHY_PARAM_2M); + if (err) { + LOG_ERR("Update phy conn failed (err %d)", err); + start_scan(); + } + } - return false; - } - } + return false; + } + } - return true; + return true; } static void split_central_device_found(const bt_addr_le_t *addr, s8_t rssi, u8_t type, - struct net_buf_simple *ad) -{ - char dev[BT_ADDR_LE_STR_LEN]; + struct net_buf_simple *ad) { + char dev[BT_ADDR_LE_STR_LEN]; - bt_addr_le_to_str(addr, dev, sizeof(dev)); - LOG_DBG("[DEVICE]: %s, AD evt type %u, AD data len %u, RSSI %i", - log_strdup(dev), type, ad->len, rssi); + bt_addr_le_to_str(addr, dev, sizeof(dev)); + LOG_DBG("[DEVICE]: %s, AD evt type %u, AD data len %u, RSSI %i", log_strdup(dev), type, ad->len, + rssi); - /* We're only interested in connectable events */ - if (type == BT_GAP_ADV_TYPE_ADV_IND || - type == BT_GAP_ADV_TYPE_ADV_DIRECT_IND) { - bt_data_parse(ad, split_central_eir_found, (void *)addr); - } + /* We're only interested in connectable events */ + if (type == BT_GAP_ADV_TYPE_ADV_IND || type == BT_GAP_ADV_TYPE_ADV_DIRECT_IND) { + bt_data_parse(ad, split_central_eir_found, (void *)addr); + } } -static int start_scan(void) -{ - int err; +static int start_scan(void) { + int err; - err = bt_le_scan_start(BT_LE_SCAN_PASSIVE, split_central_device_found); - if (err) { - LOG_ERR("Scanning failed to start (err %d)", err); - return err; - } + err = bt_le_scan_start(BT_LE_SCAN_PASSIVE, split_central_device_found); + if (err) { + LOG_ERR("Scanning failed to start (err %d)", err); + return err; + } - LOG_DBG("Scanning successfully started"); + LOG_DBG("Scanning successfully started"); return 0; } -static void split_central_connected(struct bt_conn *conn, u8_t conn_err) -{ - char addr[BT_ADDR_LE_STR_LEN]; +static void split_central_connected(struct bt_conn *conn, u8_t conn_err) { + char addr[BT_ADDR_LE_STR_LEN]; - bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); + bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); + if (conn_err) { + LOG_ERR("Failed to connect to %s (%u)", log_strdup(addr), conn_err); - if (conn_err) { - LOG_ERR("Failed to connect to %s (%u)", log_strdup(addr), conn_err); + bt_conn_unref(default_conn); + default_conn = NULL; - bt_conn_unref(default_conn); - default_conn = NULL; + start_scan(); + return; + } - start_scan(); - return; - } + LOG_DBG("Connected: %s", log_strdup(addr)); - LOG_DBG("Connected: %s", log_strdup(addr)); - - split_central_process_connection(conn); + split_central_process_connection(conn); } -static void split_central_disconnected(struct bt_conn *conn, u8_t reason) -{ - char addr[BT_ADDR_LE_STR_LEN]; +static void split_central_disconnected(struct bt_conn *conn, u8_t reason) { + char addr[BT_ADDR_LE_STR_LEN]; - bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); + bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); - LOG_DBG("Disconnected: %s (reason %d)", log_strdup(addr), reason); + LOG_DBG("Disconnected: %s (reason %d)", log_strdup(addr), reason); - if (default_conn != conn) { - return; - } + if (default_conn != conn) { + return; + } - bt_conn_unref(default_conn); - default_conn = NULL; + bt_conn_unref(default_conn); + default_conn = NULL; - start_scan(); + start_scan(); } static struct bt_conn_cb conn_callbacks = { - .connected = split_central_connected, - .disconnected = split_central_disconnected, + .connected = split_central_connected, + .disconnected = split_central_disconnected, }; -int zmk_split_bt_central_init(struct device *_arg) -{ - bt_conn_cb_register(&conn_callbacks); +int zmk_split_bt_central_init(struct device *_arg) { + bt_conn_cb_register(&conn_callbacks); - return start_scan(); + return start_scan(); } -SYS_INIT(zmk_split_bt_central_init, - APPLICATION, - CONFIG_ZMK_BLE_INIT_PRIORITY); \ No newline at end of file +SYS_INIT(zmk_split_bt_central_init, APPLICATION, CONFIG_ZMK_BLE_INIT_PRIORITY); \ No newline at end of file diff --git a/app/src/split/bluetooth/service.c b/app/src/split/bluetooth/service.c index c2f65d28..86af685f 100644 --- a/app/src/split/bluetooth/service.c +++ b/app/src/split/bluetooth/service.c @@ -21,41 +21,36 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); static u8_t num_of_positions = ZMK_KEYMAP_LEN; static u8_t position_state[16]; -static ssize_t split_svc_pos_state(struct bt_conn *conn, const struct bt_gatt_attr *attrs, void *buf, u16_t len, u16_t offset) -{ - return bt_gatt_attr_read(conn, attrs, buf, len, offset, &position_state, sizeof(position_state)); +static ssize_t split_svc_pos_state(struct bt_conn *conn, const struct bt_gatt_attr *attrs, + void *buf, u16_t len, u16_t offset) { + return bt_gatt_attr_read(conn, attrs, buf, len, offset, &position_state, + sizeof(position_state)); } -static ssize_t split_svc_num_of_positions(struct bt_conn *conn, const struct bt_gatt_attr *attrs, void *buf, u16_t len, u16_t offset) -{ +static ssize_t split_svc_num_of_positions(struct bt_conn *conn, const struct bt_gatt_attr *attrs, + void *buf, u16_t len, u16_t offset) { return bt_gatt_attr_read(conn, attrs, buf, len, offset, attrs->user_data, sizeof(u8_t)); } -static void split_svc_pos_state_ccc(const struct bt_gatt_attr *attr, u16_t value) -{ +static void split_svc_pos_state_ccc(const struct bt_gatt_attr *attr, u16_t value) { LOG_DBG("value %d", value); } +BT_GATT_SERVICE_DEFINE( + split_svc, BT_GATT_PRIMARY_SERVICE(BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID)), + BT_GATT_CHARACTERISTIC(BT_UUID_DECLARE_128(ZMK_SPLIT_BT_CHAR_POSITION_STATE_UUID), + BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_READ_ENCRYPT, + split_svc_pos_state, NULL, &position_state), + BT_GATT_CCC(split_svc_pos_state_ccc, BT_GATT_PERM_READ_ENCRYPT | BT_GATT_PERM_WRITE_ENCRYPT), + BT_GATT_DESCRIPTOR(BT_UUID_NUM_OF_DIGITALS, BT_GATT_PERM_READ, split_svc_num_of_positions, NULL, + &num_of_positions), ); -BT_GATT_SERVICE_DEFINE(split_svc, - BT_GATT_PRIMARY_SERVICE(BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID)), - BT_GATT_CHARACTERISTIC(BT_UUID_DECLARE_128(ZMK_SPLIT_BT_CHAR_POSITION_STATE_UUID), BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY, - BT_GATT_PERM_READ_ENCRYPT, - split_svc_pos_state, NULL, &position_state), - BT_GATT_CCC(split_svc_pos_state_ccc, - BT_GATT_PERM_READ_ENCRYPT | BT_GATT_PERM_WRITE_ENCRYPT), - BT_GATT_DESCRIPTOR(BT_UUID_NUM_OF_DIGITALS, BT_GATT_PERM_READ, - split_svc_num_of_positions, NULL, &num_of_positions), -); - -int zmk_split_bt_position_pressed(u8_t position) -{ +int zmk_split_bt_position_pressed(u8_t position) { WRITE_BIT(position_state[position / 8], position % 8, true); return bt_gatt_notify(NULL, &split_svc.attrs[1], &position_state, sizeof(position_state)); } -int zmk_split_bt_position_released(u8_t position) -{ +int zmk_split_bt_position_released(u8_t position) { WRITE_BIT(position_state[position / 8], position % 8, false); return bt_gatt_notify(NULL, &split_svc.attrs[1], &position_state, sizeof(position_state)); } \ No newline at end of file diff --git a/app/src/split_listener.c b/app/src/split_listener.c index 12638073..b2adfb2e 100644 --- a/app/src/split_listener.c +++ b/app/src/split_listener.c @@ -19,18 +19,17 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include -int split_listener(const struct zmk_event_header *eh) -{ - LOG_DBG(""); - if (is_position_state_changed(eh)) { - const struct position_state_changed *ev = cast_position_state_changed(eh); - if (ev->state) { - return zmk_split_bt_position_pressed(ev->position); - } else { - return zmk_split_bt_position_released(ev->position); +int split_listener(const struct zmk_event_header *eh) { + LOG_DBG(""); + if (is_position_state_changed(eh)) { + const struct position_state_changed *ev = cast_position_state_changed(eh); + if (ev->state) { + return zmk_split_bt_position_pressed(ev->position); + } else { + return zmk_split_bt_position_released(ev->position); + } } - } - return 0; + return 0; } ZMK_LISTENER(split_listener, split_listener); diff --git a/app/src/usb_hid.c b/app/src/usb_hid.c index e2fe0f3d..530ffea8 100644 --- a/app/src/usb_hid.c +++ b/app/src/usb_hid.c @@ -22,71 +22,56 @@ static struct device *hid_dev; static K_SEM_DEFINE(hid_sem, 1, 1); -static void in_ready_cb(void) -{ - k_sem_give(&hid_sem); -} +static void in_ready_cb(void) { k_sem_give(&hid_sem); } -static const struct hid_ops ops = -{ - .int_in_ready = in_ready_cb, +static const struct hid_ops ops = { + .int_in_ready = in_ready_cb, }; -int zmk_usb_hid_send_report(const u8_t *report, size_t len) -{ - switch(usb_status) { - case USB_DC_SUSPEND: - return usb_wakeup_request(); - case USB_DC_ERROR: - case USB_DC_RESET: - case USB_DC_DISCONNECTED: - case USB_DC_UNKNOWN: - return -ENODEV; - default: - k_sem_take(&hid_sem, K_MSEC(30)); - int err = hid_int_ep_write(hid_dev, report, len, NULL); +int zmk_usb_hid_send_report(const u8_t *report, size_t len) { + switch (usb_status) { + case USB_DC_SUSPEND: + return usb_wakeup_request(); + case USB_DC_ERROR: + case USB_DC_RESET: + case USB_DC_DISCONNECTED: + case USB_DC_UNKNOWN: + return -ENODEV; + default: + k_sem_take(&hid_sem, K_MSEC(30)); + int err = hid_int_ep_write(hid_dev, report, len, NULL); - if (err) { - k_sem_give(&hid_sem); - } + if (err) { + k_sem_give(&hid_sem); + } - return err; - } + return err; + } } -void usb_hid_status_cb(enum usb_dc_status_code status, const u8_t *params) -{ - usb_status = status; -}; +void usb_hid_status_cb(enum usb_dc_status_code status, const u8_t *params) { usb_status = status; }; -static int zmk_usb_hid_init(struct device *_arg) -{ - int usb_enable_ret; +static int zmk_usb_hid_init(struct device *_arg) { + int usb_enable_ret; - hid_dev = device_get_binding("HID_0"); - if (hid_dev == NULL) - { - LOG_ERR("Unable to locate HID device"); - return -EINVAL; - } + hid_dev = device_get_binding("HID_0"); + if (hid_dev == NULL) { + LOG_ERR("Unable to locate HID device"); + return -EINVAL; + } - usb_hid_register_device(hid_dev, - zmk_hid_report_desc, sizeof(zmk_hid_report_desc), - &ops); + usb_hid_register_device(hid_dev, zmk_hid_report_desc, sizeof(zmk_hid_report_desc), &ops); - usb_hid_init(hid_dev); + usb_hid_init(hid_dev); - usb_enable_ret = usb_enable(usb_hid_status_cb); + usb_enable_ret = usb_enable(usb_hid_status_cb); - if (usb_enable_ret != 0) - { - LOG_ERR("Unable to enable USB"); - return -EINVAL; - } + if (usb_enable_ret != 0) { + LOG_ERR("Unable to enable USB"); + return -EINVAL; + } - return 0; + return 0; } -SYS_INIT(zmk_usb_hid_init, - APPLICATION, - CONFIG_ZMK_USB_INIT_PRIORITY); +SYS_INIT(zmk_usb_hid_init, APPLICATION, CONFIG_ZMK_USB_INIT_PRIORITY); From 7b12dc6caf7517aa95d66fadb529c260be752ff5 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 13 Sep 2020 23:29:31 -0500 Subject: [PATCH 074/353] feature(board): add BT prof management to defaults --- app/boards/shields/corne/corne.keymap | 11 ++++++----- app/boards/shields/iris/iris.keymap | 13 +++++++------ app/boards/shields/lily58/lily58.keymap | 13 +++++++------ app/boards/shields/qaz/qaz.keymap | 3 ++- app/boards/shields/romac/romac.keymap | 17 +++++++++-------- app/boards/shields/sofle/sofle.keymap | 13 +++++++------ 6 files changed, 38 insertions(+), 32 deletions(-) diff --git a/app/boards/shields/corne/corne.keymap b/app/boards/shields/corne/corne.keymap index c0bbb4ab..5f0f15f0 100644 --- a/app/boards/shields/corne/corne.keymap +++ b/app/boards/shields/corne/corne.keymap @@ -1,5 +1,6 @@ #include #include +#include / { keymap { @@ -21,14 +22,14 @@ lower_layer { // ----------------------------------------------------------------------------------------- // | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BKSP | -// | CTRL | | | | | | | LFT | DWN | UP | RGT | | | +// | BTCLR| BT1 | BT2 | BT3 | BT4 | BT5 | | LFT | DWN | UP | RGT | | | // | SHFT | | | | | | | | | | | | | // | GUI | | SPC | | ENT | | ALT | bindings = < - &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp BKSP - &kp LCTL &trans &trans &trans &trans &trans &kp LARW &kp DARW &kp UARW &kp RARW &trans &trans - &kp LSFT &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &kp LGUI &trans &kp SPC &kp RET &trans &kp RALT + &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp BKSP + &bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp LARW &kp DARW &kp UARW &kp RARW &trans &trans + &kp LSFT &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans + &kp LGUI &trans &kp SPC &kp RET &trans &kp RALT >; }; diff --git a/app/boards/shields/iris/iris.keymap b/app/boards/shields/iris/iris.keymap index 46b0817f..3bd74ed7 100644 --- a/app/boards/shields/iris/iris.keymap +++ b/app/boards/shields/iris/iris.keymap @@ -3,6 +3,7 @@ #include #include +#include / { keymap { @@ -26,17 +27,17 @@ lower_layer { // ------------------------------------------------------------------------------------------------------------ -// | | | | | | | | | | | | | | +// | BTCLR | BT1 | BT2 | BT3 | BT4 | BT5 | | | | | | | | // | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | // | ` | ! | @ | # | $ | % | | ^ | & | * | ( | ) | ~ | // | | | | | | | | | | | _ | + | { | } | "|" | // | | | | | | | | bindings = < -&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans -&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 -&kp GRAV &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN &kp TILD -&trans &trans &trans &trans &trans &trans &trans &trans &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE - &trans &trans &trans &trans &trans &trans +&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans &trans +&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 +&kp GRAV &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN &kp TILD +&trans &trans &trans &trans &trans &trans &trans &trans &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE + &trans &trans &trans &trans &trans &trans >; }; diff --git a/app/boards/shields/lily58/lily58.keymap b/app/boards/shields/lily58/lily58.keymap index afd2694e..61c19f86 100644 --- a/app/boards/shields/lily58/lily58.keymap +++ b/app/boards/shields/lily58/lily58.keymap @@ -1,5 +1,6 @@ #include #include +#include / { keymap { @@ -25,17 +26,17 @@ lower_layer { // ------------------------------------------------------------------------------------------------------------ -// | | | | | | | | | | | | | | +// | BTCLR | BT1 | BT2 | BT3 | BT4 | BT5 | | | | | | | | // | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | // | ` | ! | @ | # | $ | % | | ^ | & | * | ( | ) | ~ | // | | | | | | | | | | | _ | + | { | } | "|" | // | | | | | | | | | | bindings = < -&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans -&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 -&kp GRAV &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN &kp TILD -&trans &trans &trans &trans &trans &trans &trans &trans &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE - &trans &trans &trans &trans &trans &trans &trans &trans +&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans &trans +&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 +&kp GRAV &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN &kp TILD +&trans &trans &trans &trans &trans &trans &trans &trans &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE + &trans &trans &trans &trans &trans &trans &trans &trans >; sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; diff --git a/app/boards/shields/qaz/qaz.keymap b/app/boards/shields/qaz/qaz.keymap index ffa2f6cc..07cd90e4 100644 --- a/app/boards/shields/qaz/qaz.keymap +++ b/app/boards/shields/qaz/qaz.keymap @@ -6,6 +6,7 @@ #include #include +#include #define DEFAULT 0 #define NUM_SYM 1 @@ -34,7 +35,7 @@ nav { bindings = < - &none &none &none &none &none &none &none &kp UARW &none &kp BKSP + &bt BT_CLR &bt BT_NXT &bt BT_PRV &none &none &none &none &kp UARW &none &kp BKSP &trans &trans &trans &trans &none &none &kp LARW &kp DARW &kp RARW &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &trans &trans &kp RET &trans &kp FSLH diff --git a/app/boards/shields/romac/romac.keymap b/app/boards/shields/romac/romac.keymap index f94a8290..97ea9c54 100644 --- a/app/boards/shields/romac/romac.keymap +++ b/app/boards/shields/romac/romac.keymap @@ -6,6 +6,7 @@ #include #include +#include / { keymap { @@ -28,16 +29,16 @@ nav_layer { // ----------------------- -// | _ | HOME | PGUP | -// | _ | END | PGDN | -// | _ | _ | _ | -// | _ | _ | RET | +// | BTNXT | HOME | PGUP | +// | BTPRV | END | PGDN | +// | BTCLR | _ | _ | +// | _ | _ | RET | // ----------------------- bindings = < - &trans &kp HOME &kp PGUP - &trans &kp END &kp PGDN - &trans &trans &trans - &trans &trans &kp RET + &bt BT_NXT &kp HOME &kp PGUP + &bt BT_PRV &kp END &kp PGDN + &bt BT_CLR &trans &trans + &trans &trans &kp RET >; }; }; diff --git a/app/boards/shields/sofle/sofle.keymap b/app/boards/shields/sofle/sofle.keymap index aadffa1f..1cbe742c 100644 --- a/app/boards/shields/sofle/sofle.keymap +++ b/app/boards/shields/sofle/sofle.keymap @@ -1,5 +1,6 @@ #include #include +#include / { keymap { @@ -44,17 +45,17 @@ raise_layer { // ------------------------------------------------------------------------------------------------------------ -// | | | | | | | | | | | | | | +// |BTCLR| BT1 | BT2 | BT3 | BT4 | BT5 | | | | | | | | // | | INS | PSCR | GUI | | | | PGUP | | ^ | | | | // | | ALT | CTRL | SHIFT | | CAPS | | PGDN | <- | v | -> | DEL | BKSPC | // | | UNDO | CUT | COPY | PASTE | | | | | | | | | | | // | | | | | | | | | | | | bindings = < -&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans -&trans &kp INS &kp PRSC &kp GUI &trans &trans &kp PGUP &trans &kp UARW &trans &kp NUM_0 &trans -&trans &kp LALT &kp LCTL &kp LSFT &trans &kp CLCK &kp PGDN &kp LARW &kp DARW &kp RARW &kp DEL &kp BKSP -&trans &kp UNDO &kp CUT &kp COPY &kp PSTE &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans +&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans &trans +&trans &kp INS &kp PRSC &kp GUI &trans &trans &kp PGUP &trans &kp UARW &trans &kp NUM_0 &trans +&trans &kp LALT &kp LCTL &kp LSFT &trans &kp CLCK &kp PGDN &kp LARW &kp DARW &kp RARW &kp DEL &kp BKSP +&trans &kp UNDO &kp CUT &kp COPY &kp PSTE &trans &trans &trans &trans &trans &trans &trans &trans &trans + &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; From 1183f96cbc4e9a9d01b49278a43ea722486d5e67 Mon Sep 17 00:00:00 2001 From: tominabox1 Date: Mon, 14 Sep 2020 07:39:42 -0500 Subject: [PATCH 075/353] Update QAZ keymap for bluetooth config options and homerow hold-taps --- app/boards/shields/qaz/qaz.keymap | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/app/boards/shields/qaz/qaz.keymap b/app/boards/shields/qaz/qaz.keymap index ffa2f6cc..ac10772a 100644 --- a/app/boards/shields/qaz/qaz.keymap +++ b/app/boards/shields/qaz/qaz.keymap @@ -4,13 +4,27 @@ * SPDX-License-Identifier: MIT */ +#include #include #include #define DEFAULT 0 #define NUM_SYM 1 #define NAV 2 - + +/ { + behaviors { + hm: homerow_mods { + compatible = "zmk,behavior-hold-tap"; + label = "homerow mods"; + #binding-cells = <2>; + tapping_term_ms = <225>; + flavor = "tap-preferred"; + bindings = <&kp>, <&kp>; + }; + }; +}; + / { keymap { compatible = "zmk,keymap"; @@ -18,9 +32,9 @@ default_layer { bindings = < &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P - &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp RET + &hm LGUI A &hm LALT S &hm LCTL D &hm LSFT F &kp G &kp H &hm RSFT J &hm RCTL K &hm RALT L &hm RGUI RET &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT - &kp LSFT &kp LGUI &kp LALT &mo NAV &kp SPC &mo NUM_SYM &kp QUOT &kp FSLH + &kp LSFT &kp LGUI &kp LALT < NAV RET < NUM_SYM SPC &kp COLN &kp QUOT &kp FSLH >; }; num_sym { @@ -37,7 +51,7 @@ &none &none &none &none &none &none &none &kp UARW &none &kp BKSP &trans &trans &trans &trans &none &none &kp LARW &kp DARW &kp RARW &none &none &none &none &none &none &none &none &none &none - &none &none &none &none &none &trans &trans &kp RET &trans &kp FSLH + &bt BT_CLR &bt BT_NXT &none &trans &trans &kp RET &trans &kp FSLH >; }; }; From fc167f5f5ede2049f5d7649353b456e36c9f0be3 Mon Sep 17 00:00:00 2001 From: tominabox1 Date: Mon, 14 Sep 2020 07:39:42 -0500 Subject: [PATCH 076/353] Update QAZ keymap for bluetooth config options and homerow hold-taps --- app/boards/shields/qaz/qaz.keymap | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/app/boards/shields/qaz/qaz.keymap b/app/boards/shields/qaz/qaz.keymap index 07cd90e4..1bcaba60 100644 --- a/app/boards/shields/qaz/qaz.keymap +++ b/app/boards/shields/qaz/qaz.keymap @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT */ +#include #include #include #include @@ -11,7 +12,20 @@ #define DEFAULT 0 #define NUM_SYM 1 #define NAV 2 - + +/ { + behaviors { + hm: homerow_mods { + compatible = "zmk,behavior-hold-tap"; + label = "homerow mods"; + #binding-cells = <2>; + tapping_term_ms = <225>; + flavor = "tap-preferred"; + bindings = <&kp>, <&kp>; + }; + }; +}; + / { keymap { compatible = "zmk,keymap"; @@ -19,9 +33,9 @@ default_layer { bindings = < &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P - &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp RET + &hm LGUI A &hm LALT S &hm LCTL D &hm LSFT F &kp G &kp H &hm RSFT J &hm RCTL K &hm RALT L &hm RGUI RET &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT - &kp LSFT &kp LGUI &kp LALT &mo NAV &kp SPC &mo NUM_SYM &kp QUOT &kp FSLH + &kp LSFT &kp LGUI &kp LALT < NAV RET < NUM_SYM SPC &kp COLN &kp QUOT &kp FSLH >; }; num_sym { @@ -38,7 +52,7 @@ &bt BT_CLR &bt BT_NXT &bt BT_PRV &none &none &none &none &kp UARW &none &kp BKSP &trans &trans &trans &trans &none &none &kp LARW &kp DARW &kp RARW &none &none &none &none &none &none &none &none &none &none - &none &none &none &none &none &trans &trans &kp RET &trans &kp FSLH + &bt BT_CLR &bt BT_NXT &none &trans &trans &kp RET &trans &kp FSLH >; }; }; From 6a02a2968aaae4ce803147fc4ab1f9e2ca6b4379 Mon Sep 17 00:00:00 2001 From: tominabox1 Date: Mon, 14 Sep 2020 08:43:28 -0500 Subject: [PATCH 077/353] add dstore to git ignore list --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e02cca0e..40e0536c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /tools /zephyr /build +*.DS_Store From 63e105db908dbae529c44a76c7f29622574f188c Mon Sep 17 00:00:00 2001 From: tominabox1 Date: Mon, 14 Sep 2020 08:45:31 -0500 Subject: [PATCH 078/353] Revising keymap to jive with upstream changes --- app/boards/shields/qaz/qaz.keymap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/boards/shields/qaz/qaz.keymap b/app/boards/shields/qaz/qaz.keymap index 1bcaba60..8781428b 100644 --- a/app/boards/shields/qaz/qaz.keymap +++ b/app/boards/shields/qaz/qaz.keymap @@ -52,7 +52,7 @@ &bt BT_CLR &bt BT_NXT &bt BT_PRV &none &none &none &none &kp UARW &none &kp BKSP &trans &trans &trans &trans &none &none &kp LARW &kp DARW &kp RARW &none &none &none &none &none &none &none &none &none &none - &bt BT_CLR &bt BT_NXT &none &trans &trans &kp RET &trans &kp FSLH + &none &none &none &trans &trans &kp RET &trans &kp FSLH >; }; }; From 62c47b1981f27bdcbdecb7aa3b704d665785ed2b Mon Sep 17 00:00:00 2001 From: tominabox1 Date: Mon, 14 Sep 2020 08:46:07 -0500 Subject: [PATCH 079/353] Remove duplicate include --- app/boards/shields/qaz/qaz.keymap | 1 - 1 file changed, 1 deletion(-) diff --git a/app/boards/shields/qaz/qaz.keymap b/app/boards/shields/qaz/qaz.keymap index 8781428b..5ad9628e 100644 --- a/app/boards/shields/qaz/qaz.keymap +++ b/app/boards/shields/qaz/qaz.keymap @@ -4,7 +4,6 @@ * SPDX-License-Identifier: MIT */ -#include #include #include #include From 42c42ccbbd114641c596d795a196307cf36aea5d Mon Sep 17 00:00:00 2001 From: tominabox1 Date: Mon, 14 Sep 2020 09:25:31 -0500 Subject: [PATCH 080/353] Fixed some space/tab issues as well as updated copyright statements --- app/boards/shields/qaz/Kconfig.defconfig | 4 ++-- app/boards/shields/qaz/Kconfig.shield | 8 ++++---- app/boards/shields/qaz/qaz.keymap | 16 ++++++++-------- app/boards/shields/qaz/qaz.overlay | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/boards/shields/qaz/Kconfig.defconfig b/app/boards/shields/qaz/Kconfig.defconfig index f82f4586..c84180bf 100644 --- a/app/boards/shields/qaz/Kconfig.defconfig +++ b/app/boards/shields/qaz/Kconfig.defconfig @@ -1,5 +1,5 @@ - # Copyright (c) 2020 TJ Campie - # SPDX-License-Identifier: MIT +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT if SHIELD_QAZ diff --git a/app/boards/shields/qaz/Kconfig.shield b/app/boards/shields/qaz/Kconfig.shield index 9da60772..32c443cd 100644 --- a/app/boards/shields/qaz/Kconfig.shield +++ b/app/boards/shields/qaz/Kconfig.shield @@ -1,5 +1,5 @@ -# Copyright (c) 2020 TJ Campie +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT - - config SHIELD_MY_BOARD - def_bool $(shields_list_contains,qaz) + +config SHIELD_MY_BOARD + def_bool $(shields_list_contains,qaz) diff --git a/app/boards/shields/qaz/qaz.keymap b/app/boards/shields/qaz/qaz.keymap index 5ad9628e..36229727 100644 --- a/app/boards/shields/qaz/qaz.keymap +++ b/app/boards/shields/qaz/qaz.keymap @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020 TJ Campie - * + * Copyright (c) 2020 The ZMK Contributors + * * SPDX-License-Identifier: MIT */ @@ -14,13 +14,13 @@ / { behaviors { - hm: homerow_mods { - compatible = "zmk,behavior-hold-tap"; - label = "homerow mods"; - #binding-cells = <2>; - tapping_term_ms = <225>; + hm: homerow_mods { + compatible = "zmk,behavior-hold-tap"; + label = "homerow mods"; + #binding-cells = <2>; + tapping_term_ms = <225>; flavor = "tap-preferred"; - bindings = <&kp>, <&kp>; + bindings = <&kp>, <&kp>; }; }; }; diff --git a/app/boards/shields/qaz/qaz.overlay b/app/boards/shields/qaz/qaz.overlay index 472005b9..4e733707 100644 --- a/app/boards/shields/qaz/qaz.overlay +++ b/app/boards/shields/qaz/qaz.overlay @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020 TJ Campie - * + * Copyright (c) 2020 The ZMK Contributors + * * SPDX-License-Identifier: MIT */ From f6269df5fc7bbdf36ebb5aa5f0de9fc48f76469e Mon Sep 17 00:00:00 2001 From: Cody McGinnis Date: Mon, 14 Sep 2020 10:34:05 -0400 Subject: [PATCH 081/353] fix(tests): return error code when build fails --- app/run-test.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/app/run-test.sh b/app/run-test.sh index 3b7cd589..dd8c8eed 100755 --- a/app/run-test.sh +++ b/app/run-test.sh @@ -22,6 +22,7 @@ echo "Running $testcase:" west build -d build/$testcase -b native_posix -- -DZMK_CONFIG=$testcase > /dev/null 2>&1 if [ $? -gt 0 ]; then echo "FAIL: $testcase did not build" >> ./build/tests/pass-fail.log + exit 1 else ./build/$testcase/zephyr/zmk.exe | sed -e "s/.*> //" | tee build/$testcase/keycode_events_full.log | sed -n -f $testcase/events.patterns > build/$testcase/keycode_events.log diff -au $testcase/keycode_events.snapshot build/$testcase/keycode_events.log From 0bf4467729f3bf560a04e51900489d81fe129376 Mon Sep 17 00:00:00 2001 From: tominabox1 Date: Mon, 14 Sep 2020 09:35:57 -0500 Subject: [PATCH 082/353] Update Kconfig.shield --- app/boards/shields/qaz/Kconfig.shield | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/boards/shields/qaz/Kconfig.shield b/app/boards/shields/qaz/Kconfig.shield index 32c443cd..7cc8f1e4 100644 --- a/app/boards/shields/qaz/Kconfig.shield +++ b/app/boards/shields/qaz/Kconfig.shield @@ -1,5 +1,5 @@ # Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT -config SHIELD_MY_BOARD +config SHIELD_QAZ def_bool $(shields_list_contains,qaz) From 64c11f15b0cbc494045b8c2ba06e90e6a878d0ca Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Mon, 14 Sep 2020 20:19:54 -0700 Subject: [PATCH 083/353] Removed Copyright Header causing Parse Error --- app/boards/shields/iris/iris.keymap | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/boards/shields/iris/iris.keymap b/app/boards/shields/iris/iris.keymap index 46b0817f..4607adf0 100644 --- a/app/boards/shields/iris/iris.keymap +++ b/app/boards/shields/iris/iris.keymap @@ -1,6 +1,3 @@ -# Copyright (c) 2020 Pete Johanson, Kurtis Lew -# SPDX-License-Identifier: MIT - #include #include From 98098dbe21d96d75adbbbc2f7f375b85ce0c055e Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Mon, 14 Sep 2020 20:20:29 -0700 Subject: [PATCH 084/353] Updated build.yml to check default iris keymaps --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8a711c1..30de94ee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,6 +16,8 @@ jobs: - kyria_right - lily58_left - lily58_right + - iris_left + - iris_right - romac include: - board: proton_c From 1a492f0f9847d4c4f7e992c32b52920074d76ee4 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Mon, 14 Sep 2020 20:37:26 -0700 Subject: [PATCH 085/353] Updated dev guide --- docs/docs/dev-guide-new-shield.md | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 6140b078..71af54ee 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -18,6 +18,9 @@ The high level steps are: - Add a default keymap, which users can override in their own configs as needed. - Add support for features such as encoders, OLED displays, or RGB underglow. + +- Update build.yml + It may be helpful to review the upstream [shields documentation](https://docs.zephyrproject.org/2.3.0/guides/porting/shields.html#shields) to get a proper understanding of the underlying system before continuing. ## New Shield Directory @@ -302,3 +305,36 @@ and then flash with: ``` west flash ``` + +## Updating `build.yml` + +Before publishing your shield to the public via a PR, navigate to `build.yml` found in `.github/workflows` and add your shield to the appropriate list. An example edit to `build.yml` is shown below. + +``` +jobs: + build: + runs-on: ubuntu-latest + name: Build Test + strategy: + matrix: + board: [proton_c, nice_nano, bluemicro840_v1, nrfmicro_13] + shield: + - corne_left + - corne_right + - kyria_left + - kyria_right + - lily58_left + - lily58_right + - iris_left + - iris_right + - romac + - + - + - + include: + - board: proton_c + shield: clueboard_california +``` +:::note +Notice that both the left and right halves of a split board need to be added to the list of shields for proper error checking. +:::note \ No newline at end of file From 5383bdd4dfc85b7782c489341eff96d0abf7dc72 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Mon, 14 Sep 2020 20:38:58 -0700 Subject: [PATCH 086/353] Revert "Merge pull request #1 from zmkfirmware/main" This reverts commit 36da21b8e334f70b6bd9986e9b31c8ec02b29f87, reversing changes made to 719db13c4150e0d09da2d3dbe90838fe604c2267. --- .../pro-micro/pro-micro-pins-labelled.jpg | Bin 115573 -> 0 bytes docs/docs/behavior/hold-tap.md | 2 +- docs/docs/dev-boards-shields-keymaps.md | 2 -- docs/docs/dev-guide-new-shield.md | 4 ---- 4 files changed, 1 insertion(+), 7 deletions(-) delete mode 100644 docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg diff --git a/docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg b/docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg deleted file mode 100644 index f72d407719e9ff4d20ed45d93d12dead8caa9da5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115573 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 DB^7&W diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index ab510223..fa68538b 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -59,4 +59,4 @@ If this config does not work for you, try the flavor "tap-preferred" and a short If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. #### Note -Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. +Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. \ No newline at end of file diff --git a/docs/docs/dev-boards-shields-keymaps.md b/docs/docs/dev-boards-shields-keymaps.md index 9ed5a328..cfe52526 100644 --- a/docs/docs/dev-boards-shields-keymaps.md +++ b/docs/docs/dev-boards-shields-keymaps.md @@ -35,8 +35,6 @@ in the `app/boards/${arch}/${board_name}` directory, e.g. `app/boards/arm/planck ## Pro Micro Compatible Keyboard -![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) - For keyboards that require a (usually Pro Micro compatible) add-on board to operate, the ZMK integration pieces are places in the _shield_ definition for that keyboard, allowing users to swap in different Pro Micro compatible boards (e.g. Proton-C, or nice!nano) and build a firmware the matches their actual diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 71af54ee..f270199d 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -67,10 +67,6 @@ endif ## Shield Overlay -![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) - -ZMK uses the green color coded pin names to generate devicetree node references. For example, to refer to the node `D0` in the devicetree files, use `&pro_micro_d 0` or to refer to `A1`, use `&pro_micro_a 1`. - The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the [chosen]() node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, this might look something like: From f6932992d213a9e5ef061a13e7b8ef1137e7aa2f Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Mon, 14 Sep 2020 20:39:30 -0700 Subject: [PATCH 087/353] Revert "Revert "Merge pull request #1 from zmkfirmware/main"" This reverts commit 5383bdd4dfc85b7782c489341eff96d0abf7dc72. --- .../pro-micro/pro-micro-pins-labelled.jpg | Bin 0 -> 115573 bytes docs/docs/behavior/hold-tap.md | 2 +- docs/docs/dev-boards-shields-keymaps.md | 2 ++ docs/docs/dev-guide-new-shield.md | 4 ++++ 4 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg diff --git a/docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg b/docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f72d407719e9ff4d20ed45d93d12dead8caa9da5 GIT binary patch literal 115573 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 DB^7&W literal 0 HcmV?d00001 diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index fa68538b..ab510223 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -59,4 +59,4 @@ If this config does not work for you, try the flavor "tap-preferred" and a short If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. #### Note -Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. \ No newline at end of file +Astute readers may notice similarities between the possible behaviors in ZMK and other firmware, such as QMK. The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. diff --git a/docs/docs/dev-boards-shields-keymaps.md b/docs/docs/dev-boards-shields-keymaps.md index cfe52526..9ed5a328 100644 --- a/docs/docs/dev-boards-shields-keymaps.md +++ b/docs/docs/dev-boards-shields-keymaps.md @@ -35,6 +35,8 @@ in the `app/boards/${arch}/${board_name}` directory, e.g. `app/boards/arm/planck ## Pro Micro Compatible Keyboard +![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) + For keyboards that require a (usually Pro Micro compatible) add-on board to operate, the ZMK integration pieces are places in the _shield_ definition for that keyboard, allowing users to swap in different Pro Micro compatible boards (e.g. Proton-C, or nice!nano) and build a firmware the matches their actual diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index f270199d..71af54ee 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -67,6 +67,10 @@ endif ## Shield Overlay +![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) + +ZMK uses the green color coded pin names to generate devicetree node references. For example, to refer to the node `D0` in the devicetree files, use `&pro_micro_d 0` or to refer to `A1`, use `&pro_micro_a 1`. + The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the [chosen]() node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, this might look something like: From 0f8561daa155c765b2c04fe012bc4fa3d38cdfd7 Mon Sep 17 00:00:00 2001 From: Kurtis Lew Date: Mon, 14 Sep 2020 20:46:42 -0700 Subject: [PATCH 088/353] Update dev-guide-new-shield.md --- docs/docs/dev-guide-new-shield.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 71af54ee..c5b9a3de 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -17,8 +17,6 @@ The high level steps are: - (Optional) Add the matrix transform for mapping KSCAN row/column values to sane key positions. This is needed for non-rectangular keyboards, or where the underlying row/column pin arrangement does not map one to one with logical locations on the keyboard. - Add a default keymap, which users can override in their own configs as needed. - Add support for features such as encoders, OLED displays, or RGB underglow. - - - Update build.yml It may be helpful to review the upstream [shields documentation](https://docs.zephyrproject.org/2.3.0/guides/porting/shields.html#shields) to get a proper understanding of the underlying system before continuing. @@ -337,4 +335,4 @@ jobs: ``` :::note Notice that both the left and right halves of a split board need to be added to the list of shields for proper error checking. -:::note \ No newline at end of file +:::note From d86e571757aef33dd0e9256715752a462b5a60fe Mon Sep 17 00:00:00 2001 From: Kurtis Lew Date: Mon, 14 Sep 2020 20:47:55 -0700 Subject: [PATCH 089/353] Update iris.keymap --- app/boards/shields/iris/iris.keymap | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/boards/shields/iris/iris.keymap b/app/boards/shields/iris/iris.keymap index 4607adf0..87654021 100644 --- a/app/boards/shields/iris/iris.keymap +++ b/app/boards/shields/iris/iris.keymap @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 Pete Johanson, Kurtis Lew + * + * SPDX-License-Identifier: MIT + */ + #include #include From ec86500524239500552e0105a86dd62872b99fd7 Mon Sep 17 00:00:00 2001 From: Kurtis Lew Date: Mon, 14 Sep 2020 20:53:26 -0700 Subject: [PATCH 090/353] Update dev-guide-new-shield.md --- docs/docs/dev-guide-new-shield.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index c5b9a3de..01aad30c 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -326,9 +326,9 @@ jobs: - iris_left - iris_right - romac - - - - - - + - + - + - include: - board: proton_c shield: clueboard_california From 81bc157f539235ad032fde78b6f6cec7a16d2c39 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 15 Sep 2020 14:31:59 -0500 Subject: [PATCH 091/353] Fix underglow not working by default --- app/Kconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Kconfig b/app/Kconfig index cefae21a..cda5c582 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -168,6 +168,10 @@ menuconfig ZMK_RGB_UNDERGLOW if ZMK_RGB_UNDERGLOW +# This default value cuts down on tons of excess .conf files, if you're using GPIO, manually disable this +config SPI + default y + config ZMK_RGB_UNDERGLOW_HUE_STEP int "RGB underglow hue step in degrees of 360" default 10 From 608ae0df6dfe4d75bc98c36f6756dc4d69399109 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 15 Sep 2020 14:47:19 -0500 Subject: [PATCH 092/353] fix lint with clang-format --- app/src/rgb_underglow.c | 57 ++++++++++++++++------------------------- app/src/settings.c | 9 ++----- 2 files changed, 24 insertions(+), 42 deletions(-) diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index d453755b..b371c943 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -52,9 +52,7 @@ struct led_rgb pixels[STRIP_NUM_PIXELS]; struct rgb_underglow_state state; #if IS_ENABLED(CONFIG_SETTINGS) -static int rgb_settings_set(const char *name, size_t len, - settings_read_cb read_cb, void *cb_arg) -{ +static int rgb_settings_set(const char *name, size_t len, settings_read_cb read_cb, void *cb_arg) { const char *next; int rc; @@ -74,14 +72,10 @@ static int rgb_settings_set(const char *name, size_t len, return -ENOENT; } -struct settings_handler rgb_conf = { - .name = "rgb/underglow", - .h_set = rgb_settings_set -}; +struct settings_handler rgb_conf = {.name = "rgb/underglow", .h_set = rgb_settings_set}; #endif -static struct led_rgb hsb_to_rgb(struct led_hsb hsb) -{ +static struct led_rgb hsb_to_rgb(struct led_hsb hsb) { double r, g, b; u8_t i = hsb.h / 60; @@ -130,20 +124,16 @@ static struct led_rgb hsb_to_rgb(struct led_hsb hsb) return rgb; } -static void zmk_rgb_underglow_off() -{ - for (int i=0; i #include -static int zmk_settings_init(struct device *_arg) -{ - return settings_load(); -} +static int zmk_settings_init(struct device *_arg) { return settings_load(); } -SYS_INIT(zmk_settings_init, - APPLICATION, - CONFIG_APPLICATION_INIT_PRIORITY); +SYS_INIT(zmk_settings_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); From 2855ba75f53554887f6e788736c45b7c818d09ac Mon Sep 17 00:00:00 2001 From: David Barr Date: Sat, 19 Sep 2020 10:55:07 +0100 Subject: [PATCH 093/353] Actually really working Ok, both sides work as expected, need to write a keymap. --- app/boards/shields/Kconfig.defconfig | 14 +++++ app/boards/shields/Kconfig.shield | 5 ++ app/boards/shields/cradios.dtsi | 67 ++++++++++++++++++++++++ app/boards/shields/cradios.keymap | 18 +++++++ app/boards/shields/cradios_left.conf | 2 + app/boards/shields/cradios_left.overlay | 15 ++++++ app/boards/shields/cradios_right.conf | 2 + app/boards/shields/cradios_right.overlay | 17 ++++++ 8 files changed, 140 insertions(+) create mode 100644 app/boards/shields/Kconfig.defconfig create mode 100644 app/boards/shields/Kconfig.shield create mode 100644 app/boards/shields/cradios.dtsi create mode 100644 app/boards/shields/cradios.keymap create mode 100644 app/boards/shields/cradios_left.conf create mode 100644 app/boards/shields/cradios_left.overlay create mode 100644 app/boards/shields/cradios_right.conf create mode 100644 app/boards/shields/cradios_right.overlay diff --git a/app/boards/shields/Kconfig.defconfig b/app/boards/shields/Kconfig.defconfig new file mode 100644 index 00000000..5b9ca9a1 --- /dev/null +++ b/app/boards/shields/Kconfig.defconfig @@ -0,0 +1,14 @@ + + + +config ZMK_KEYBOARD_NAME + default "cradios" + +# Unable to use interrupts as the same pin number is used +# across A & B controllers, and STM32F303CCT6 can't enable +# interrutps for multiple controllers for the same "line" +# for the external interrupts. +config ZMK_KSCAN_GPIO_POLLING + default y + + diff --git a/app/boards/shields/Kconfig.shield b/app/boards/shields/Kconfig.shield new file mode 100644 index 00000000..844d4332 --- /dev/null +++ b/app/boards/shields/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 Pete Johanson +# SPDX-License-Identifier: MIT + +config SHIELD_CRADIOS + def_bool $(shields_list_contains,cradios) diff --git a/app/boards/shields/cradios.dtsi b/app/boards/shields/cradios.dtsi new file mode 100644 index 00000000..68d1fc57 --- /dev/null +++ b/app/boards/shields/cradios.dtsi @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT + */ + #include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <34>; + rows = <1>; + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,21) RC(0,20) RC(0,19) RC(0,18) RC(0,17) +RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,26) RC(0,25) RC(0,24) RC(0,23) RC(0,22) +RC(0,10)RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,31) RC(0,30) RC(0,29) RC(0,28) RC(0,27) +RC(0,15) RC(0,16) RC(0,33) RC(0,32) +>; + + + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-direct"; + label = "KSCAN"; + }; + + + + + bt_unpair_combo: bt_unpair_combo { + compatible = "zmk,bt-unpair-combo"; + }; + + + + }; + + + &kscan0 { + input-gpios + = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + ; +}; + + diff --git a/app/boards/shields/cradios.keymap b/app/boards/shields/cradios.keymap new file mode 100644 index 00000000..c46468dd --- /dev/null +++ b/app/boards/shields/cradios.keymap @@ -0,0 +1,18 @@ +#include +#include + + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P + &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN + &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH + &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 + >; + }; + }; +}; diff --git a/app/boards/shields/cradios_left.conf b/app/boards/shields/cradios_left.conf new file mode 100644 index 00000000..1e028a78 --- /dev/null +++ b/app/boards/shields/cradios_left.conf @@ -0,0 +1,2 @@ +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y diff --git a/app/boards/shields/cradios_left.overlay b/app/boards/shields/cradios_left.overlay new file mode 100644 index 00000000..b0bdc6fe --- /dev/null +++ b/app/boards/shields/cradios_left.overlay @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT + */ +#include "cradios.dtsi" + + + + + + +&bt_unpair_combo { + key-positions = <0 16>; +}; diff --git a/app/boards/shields/cradios_right.conf b/app/boards/shields/cradios_right.conf new file mode 100644 index 00000000..990cf7c0 --- /dev/null +++ b/app/boards/shields/cradios_right.conf @@ -0,0 +1,2 @@ +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL=y diff --git a/app/boards/shields/cradios_right.overlay b/app/boards/shields/cradios_right.overlay new file mode 100644 index 00000000..ef920ac3 --- /dev/null +++ b/app/boards/shields/cradios_right.overlay @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT + */ +#include "cradios.dtsi" + +&default_transform { + col-offset = <17>; +}; + + + + +&bt_unpair_combo { + key-positions = <21 32>; +}; From ed5d3646fe7596fb40d0b7505f8062cdac6537be Mon Sep 17 00:00:00 2001 From: David Barr Date: Sat, 19 Sep 2020 10:56:40 +0100 Subject: [PATCH 094/353] Add files via upload --- app/boards/shields/cradios/cradios.dtsi | 51 ++++++++++++++++--- .../shields/cradios/cradios_left.overlay | 29 +++-------- .../shields/cradios/cradios_right.overlay | 29 +++-------- 3 files changed, 55 insertions(+), 54 deletions(-) diff --git a/app/boards/shields/cradios/cradios.dtsi b/app/boards/shields/cradios/cradios.dtsi index 95b4f272..68d1fc57 100644 --- a/app/boards/shields/cradios/cradios.dtsi +++ b/app/boards/shields/cradios/cradios.dtsi @@ -10,23 +10,58 @@ zmk,kscan = &kscan0; zmk,matrix_transform = &default_transform; }; - default_transform: keymap_transform_0 { compatible = "zmk,matrix-transform"; columns = <34>; rows = <1>; map = < -RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,17) RC(0,18) RC(0,19) RC(0,20) RC(0,21) -RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,22) RC(0,23) RC(0,24) RC(0,25) RC(0,26) -RC(0,10)RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,27) RC(0,28) RC(0,29) RC(0,30) RC(0,31) -RC(0,15) RC(0,16) RC(0,32) RC(0,33) +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,21) RC(0,20) RC(0,19) RC(0,18) RC(0,17) +RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,26) RC(0,25) RC(0,24) RC(0,23) RC(0,22) +RC(0,10)RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,31) RC(0,30) RC(0,29) RC(0,28) RC(0,27) +RC(0,15) RC(0,16) RC(0,33) RC(0,32) >; + + }; - kscan0: kscan { - compatible = "zmk,kscan-gpio-direct"; - label = "KSCAN"; + kscan0: kscan { + compatible = "zmk,kscan-gpio-direct"; + label = "KSCAN"; }; + + + + bt_unpair_combo: bt_unpair_combo { + compatible = "zmk,bt-unpair-combo"; + }; + + + }; + + + &kscan0 { + input-gpios + = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_a 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + ; +}; + + diff --git a/app/boards/shields/cradios/cradios_left.overlay b/app/boards/shields/cradios/cradios_left.overlay index ab5a874d..b0bdc6fe 100644 --- a/app/boards/shields/cradios/cradios_left.overlay +++ b/app/boards/shields/cradios/cradios_left.overlay @@ -6,27 +6,10 @@ #include "cradios.dtsi" -&kscan0 { - input-gpios - = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - ; + + + + +&bt_unpair_combo { + key-positions = <0 16>; }; - - - diff --git a/app/boards/shields/cradios/cradios_right.overlay b/app/boards/shields/cradios/cradios_right.overlay index 59a81ba5..ef920ac3 100644 --- a/app/boards/shields/cradios/cradios_right.overlay +++ b/app/boards/shields/cradios/cradios_right.overlay @@ -8,27 +8,10 @@ &default_transform { col-offset = <17>; }; -&kscan0 { - input-gpios - = <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - ; + + + + +&bt_unpair_combo { + key-positions = <21 32>; }; - - - From 844f2c76749cbc5ff611d8e69819af82b698089a Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 19 Sep 2020 19:14:59 -0500 Subject: [PATCH 095/353] Voltage divider driver initial implementation --- app/boards/arm/nice_nano/nice_nano.dts | 10 ++ app/boards/arm/nice_nano/nice_nano_defconfig | 4 + app/drivers/zephyr/CMakeLists.txt | 1 + app/drivers/zephyr/battery_voltage_divider.c | 115 ++++++++++++++++++ .../bindings/zmk,battery-voltage-divider.yaml | 9 ++ 5 files changed, 139 insertions(+) create mode 100644 app/drivers/zephyr/battery_voltage_divider.c create mode 100644 app/drivers/zephyr/dts/bindings/zmk,battery-voltage-divider.yaml diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index 2e9556b8..18312ecc 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -29,6 +29,16 @@ }; }; + vbatt { + compatible = "zmk,battery-voltage-divider"; + io-channels = <&adc 2>; + output-ohms = <2000000>; + full-ohms = <(2000000 + 806000)>; + }; +}; + +&adc { + status = "okay"; }; &gpio0 { diff --git a/app/boards/arm/nice_nano/nice_nano_defconfig b/app/boards/arm/nice_nano/nice_nano_defconfig index 393d61fe..b727fe0b 100644 --- a/app/boards/arm/nice_nano/nice_nano_defconfig +++ b/app/boards/arm/nice_nano/nice_nano_defconfig @@ -10,6 +10,10 @@ CONFIG_ARM_MPU=y # enable GPIO CONFIG_GPIO=y +CONFIG_ADC=y + +CONFIG_NEWLIB_LIBC=y + CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/drivers/zephyr/CMakeLists.txt b/app/drivers/zephyr/CMakeLists.txt index 8778ded3..0b1d18fb 100644 --- a/app/drivers/zephyr/CMakeLists.txt +++ b/app/drivers/zephyr/CMakeLists.txt @@ -5,6 +5,7 @@ if(CONFIG_ZMK_KSCAN_GPIO_DRIVER) zephyr_library_sources( kscan_gpio_matrix.c kscan_gpio_direct.c + battery_voltage_divider.c ) zephyr_library_sources_ifdef(CONFIG_EC11 ec11.c) diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c new file mode 100644 index 00000000..35fc799c --- /dev/null +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#define DT_DRV_COMPAT zmk_battery_voltage_divider + +#include +#include +#include +#include +#include +#include +#include + +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) + +#define VBATT DT_PATH(vbatt) + +struct battery_config { + struct device *adc; + struct adc_channel_cfg acc; + struct adc_sequence as; + int16_t adc_raw; +}; + +static struct battery_config battery_config; + +static int lithium_ion_mv_to_pct(int16_t bat_mv) { + // Magic function that maps mV to this discharge graph from adafruit: https://learn.adafruit.com/li-ion-and-lipoly-batteries/voltages + return round(106.818 + (-0.032685 - 106.818) / pow(1 + pow(bat_mv/3679.35, 58.979), 0.347386)); +} + +static void battery_read(struct k_work *workd) { + struct battery_config *cfg = &battery_config; + struct adc_sequence *as = &cfg->as; + + int rc = adc_read(cfg->adc, as); + as->calibrate = false; + if (rc == 0) { + int32_t val = cfg->adc_raw; + + adc_raw_to_millivolts(adc_ref_internal(cfg->adc), cfg->acc.gain, as->resolution, &val); + + rc = val * (uint64_t)DT_PROP(VBATT, full_ohms) / DT_PROP(VBATT, output_ohms); + LOG_DBG("ADC raw %d ~ %d mV => %d mV\n", cfg->adc_raw, val, rc); + int percent = lithium_ion_mv_to_pct(rc); + LOG_DBG("Percent: %d", percent); + } else { + LOG_DBG("Failed to read ADC: %d", rc); + } +} + +K_WORK_DEFINE(battery_work, battery_read); + +static void battery_handler(struct k_timer *timer) +{ + k_work_submit(&battery_work); +} + +K_TIMER_DEFINE(battery_tick, battery_handler, NULL); + +static int battery_setup(struct device *_arg) { + struct battery_config *cfg = &battery_config; + struct adc_sequence *as = &cfg->as; + struct adc_channel_cfg *acc = &cfg->acc; + + cfg->adc = device_get_binding(DT_IO_CHANNELS_LABEL(VBATT)); + + if (cfg->adc == NULL) { + LOG_ERR("ADC %s failed to retrieve", DT_IO_CHANNELS_LABEL(VBATT)); + return -ENOENT; + } + + *as = (struct adc_sequence){ + .channels = BIT(0), + .buffer = &cfg->adc_raw, + .buffer_size = sizeof(cfg->adc_raw), + .oversampling = 4, + .calibrate = true, + }; + +#ifdef CONFIG_ADC_NRFX_SAADC + *acc = (struct adc_channel_cfg){ + .gain = ADC_GAIN_1_5, + .reference = ADC_REF_INTERNAL, + .acquisition_time = ADC_ACQ_TIME(ADC_ACQ_TIME_MICROSECONDS, 40), + .input_positive = SAADC_CH_PSELP_PSELP_AnalogInput0 + DT_IO_CHANNELS_INPUT(VBATT), + }; + + as->resolution = 12; +#else +#error Unsupported ADC +#endif + + int adc_rc = adc_channel_setup(cfg->adc, acc); + LOG_DBG("AIN%u setup returned %d", DT_IO_CHANNELS_INPUT(VBATT), adc_rc); + + if (adc_rc != 0) { + return adc_rc; + } + + k_timer_start(&battery_tick, K_NO_WAIT, K_SECONDS(5)); + + return 0; +} + +SYS_INIT(battery_setup, + APPLICATION, + CONFIG_APPLICATION_INIT_PRIORITY); + +#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ \ No newline at end of file diff --git a/app/drivers/zephyr/dts/bindings/zmk,battery-voltage-divider.yaml b/app/drivers/zephyr/dts/bindings/zmk,battery-voltage-divider.yaml new file mode 100644 index 00000000..f6e06427 --- /dev/null +++ b/app/drivers/zephyr/dts/bindings/zmk,battery-voltage-divider.yaml @@ -0,0 +1,9 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +description: Battery SoC monitoring using voltage divider + +compatible: "zmk,battery-voltage-divider" + +include: voltage-divider.yaml + \ No newline at end of file From f5909f9c265ec1d88ee4fc13d45745873a2ad081 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 19 Sep 2020 19:18:03 -0500 Subject: [PATCH 096/353] fix(clang-format) --- app/drivers/zephyr/battery_voltage_divider.c | 109 +++++++++---------- 1 file changed, 53 insertions(+), 56 deletions(-) diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index 35fc799c..34de6cf1 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -21,95 +21,92 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #define VBATT DT_PATH(vbatt) struct battery_config { - struct device *adc; - struct adc_channel_cfg acc; - struct adc_sequence as; - int16_t adc_raw; + struct device *adc; + struct adc_channel_cfg acc; + struct adc_sequence as; + int16_t adc_raw; }; static struct battery_config battery_config; static int lithium_ion_mv_to_pct(int16_t bat_mv) { - // Magic function that maps mV to this discharge graph from adafruit: https://learn.adafruit.com/li-ion-and-lipoly-batteries/voltages - return round(106.818 + (-0.032685 - 106.818) / pow(1 + pow(bat_mv/3679.35, 58.979), 0.347386)); + // Magic function that maps mV to this discharge graph from adafruit: + // https://learn.adafruit.com/li-ion-and-lipoly-batteries/voltages + return round(106.818 + + (-0.032685 - 106.818) / pow(1 + pow(bat_mv / 3679.35, 58.979), 0.347386)); } static void battery_read(struct k_work *workd) { - struct battery_config *cfg = &battery_config; - struct adc_sequence *as = &cfg->as; + struct battery_config *cfg = &battery_config; + struct adc_sequence *as = &cfg->as; - int rc = adc_read(cfg->adc, as); - as->calibrate = false; - if (rc == 0) { - int32_t val = cfg->adc_raw; + int rc = adc_read(cfg->adc, as); + as->calibrate = false; + if (rc == 0) { + int32_t val = cfg->adc_raw; - adc_raw_to_millivolts(adc_ref_internal(cfg->adc), cfg->acc.gain, as->resolution, &val); + adc_raw_to_millivolts(adc_ref_internal(cfg->adc), cfg->acc.gain, as->resolution, &val); - rc = val * (uint64_t)DT_PROP(VBATT, full_ohms) / DT_PROP(VBATT, output_ohms); - LOG_DBG("ADC raw %d ~ %d mV => %d mV\n", cfg->adc_raw, val, rc); - int percent = lithium_ion_mv_to_pct(rc); - LOG_DBG("Percent: %d", percent); - } else { - LOG_DBG("Failed to read ADC: %d", rc); - } + rc = val * (uint64_t)DT_PROP(VBATT, full_ohms) / DT_PROP(VBATT, output_ohms); + LOG_DBG("ADC raw %d ~ %d mV => %d mV\n", cfg->adc_raw, val, rc); + int percent = lithium_ion_mv_to_pct(rc); + LOG_DBG("Percent: %d", percent); + } else { + LOG_DBG("Failed to read ADC: %d", rc); + } } K_WORK_DEFINE(battery_work, battery_read); -static void battery_handler(struct k_timer *timer) -{ - k_work_submit(&battery_work); -} +static void battery_handler(struct k_timer *timer) { k_work_submit(&battery_work); } K_TIMER_DEFINE(battery_tick, battery_handler, NULL); static int battery_setup(struct device *_arg) { - struct battery_config *cfg = &battery_config; - struct adc_sequence *as = &cfg->as; - struct adc_channel_cfg *acc = &cfg->acc; + struct battery_config *cfg = &battery_config; + struct adc_sequence *as = &cfg->as; + struct adc_channel_cfg *acc = &cfg->acc; - cfg->adc = device_get_binding(DT_IO_CHANNELS_LABEL(VBATT)); + cfg->adc = device_get_binding(DT_IO_CHANNELS_LABEL(VBATT)); - if (cfg->adc == NULL) { - LOG_ERR("ADC %s failed to retrieve", DT_IO_CHANNELS_LABEL(VBATT)); - return -ENOENT; - } + if (cfg->adc == NULL) { + LOG_ERR("ADC %s failed to retrieve", DT_IO_CHANNELS_LABEL(VBATT)); + return -ENOENT; + } - *as = (struct adc_sequence){ - .channels = BIT(0), - .buffer = &cfg->adc_raw, - .buffer_size = sizeof(cfg->adc_raw), - .oversampling = 4, - .calibrate = true, - }; + *as = (struct adc_sequence){ + .channels = BIT(0), + .buffer = &cfg->adc_raw, + .buffer_size = sizeof(cfg->adc_raw), + .oversampling = 4, + .calibrate = true, + }; #ifdef CONFIG_ADC_NRFX_SAADC - *acc = (struct adc_channel_cfg){ - .gain = ADC_GAIN_1_5, - .reference = ADC_REF_INTERNAL, - .acquisition_time = ADC_ACQ_TIME(ADC_ACQ_TIME_MICROSECONDS, 40), - .input_positive = SAADC_CH_PSELP_PSELP_AnalogInput0 + DT_IO_CHANNELS_INPUT(VBATT), - }; + *acc = (struct adc_channel_cfg){ + .gain = ADC_GAIN_1_5, + .reference = ADC_REF_INTERNAL, + .acquisition_time = ADC_ACQ_TIME(ADC_ACQ_TIME_MICROSECONDS, 40), + .input_positive = SAADC_CH_PSELP_PSELP_AnalogInput0 + DT_IO_CHANNELS_INPUT(VBATT), + }; - as->resolution = 12; + as->resolution = 12; #else #error Unsupported ADC #endif - int adc_rc = adc_channel_setup(cfg->adc, acc); - LOG_DBG("AIN%u setup returned %d", DT_IO_CHANNELS_INPUT(VBATT), adc_rc); + int adc_rc = adc_channel_setup(cfg->adc, acc); + LOG_DBG("AIN%u setup returned %d", DT_IO_CHANNELS_INPUT(VBATT), adc_rc); - if (adc_rc != 0) { - return adc_rc; - } + if (adc_rc != 0) { + return adc_rc; + } - k_timer_start(&battery_tick, K_NO_WAIT, K_SECONDS(5)); + k_timer_start(&battery_tick, K_NO_WAIT, K_SECONDS(5)); - return 0; + return 0; } -SYS_INIT(battery_setup, - APPLICATION, - CONFIG_APPLICATION_INIT_PRIORITY); +SYS_INIT(battery_setup, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); #endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ \ No newline at end of file From 550c35db23f15c6835a43fe1d2e4a3b5a04ac2b8 Mon Sep 17 00:00:00 2001 From: CrossR Date: Sun, 20 Sep 2020 12:52:25 +0100 Subject: [PATCH 097/353] Fix PR comments, add error checking for push. --- docs/static/setup.ps1 | 23 ++++++++++++++++++----- docs/static/setup.sh | 34 +++++++++++++++++++++++----------- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index acda1944..a2d66eec 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -16,7 +16,7 @@ function Get-Choice-From-Options { if ($selection -eq $Options.length + 1) { Write-Host "Goodbye!" - exit + exit 1 } elseif ($selection -le $Options.length) { $choice = $($selection - 1) @@ -40,7 +40,7 @@ function Test-Git-Config { if ($lastExitCode -ne 0) { Write-Host $ErrMsg - exit + exit 1 } } @@ -49,7 +49,7 @@ try { } catch [System.Management.Automation.CommandNotFoundException] { Write-Host "Git is not installed, and is required for this script!" - exit + exit 1 } Test-Git-Config -Option "user.name" -ErrMsg "Git username not set!`nRun: git config --global user.name 'My Name'" @@ -134,7 +134,7 @@ $do_it = Read-Host "Continue? [Yn]" if ($do_it -ne "" -and $do_it -ne "Y" -and $do_it -ne "y") { Write-Host "Aborting..." - exit + exit 1 } git clone --single-branch "$repo_path" "$repo_name" @@ -167,10 +167,23 @@ git commit -m "Initial User Config." if ($github_repo -ne "") { git remote add origin "$github_repo" + git push --set-upstream origin $(git symbolic-ref --short HEAD) + # If push failed, assume that the origin was incorrect and give instructions on fixing. + if ($lastExitCode -ne 0) { + Write-Host "Remote repository $github_repo not found..." + Write-Host "Check GitHub URL, and try adding again." + Write-Host "Run the following: " + Write-Host " git remote rm origin" + Write-Host " git remote add origin FIXED_URL" + Write-Host " git push --set-upstream origin $(git symbolic-ref --short HEAD)" + Write-Host "Once pushed, your firmware should be availalbe from GitHub Actions at: $actions" + exit 1 + } + if ($github_repo -imatch "https") { $actions = "$($github_repo.substring(0, $github_repo.length - 4))/actions" - Write-Host "Your firmware should be availalbe from the GitHub Actions shortly: $actions" + Write-Host "Your firmware should be availalbe from GitHub Actions shortly: $actions" } } diff --git a/docs/static/setup.sh b/docs/static/setup.sh index b3c14f77..df985a67 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -2,21 +2,21 @@ set -e -CheckExists() { +check_exists() { command_to_run=$1 error_message=$2 if ! eval "$command_to_run" &> /dev/null; then printf "%s\n" "$error_message" - exit + exit 1 fi } -CheckExists "command -v git" "git is not installed, and is required for this script!" -CheckExists "command -v curl" "curl is not installed, and is required for this script!" +check_exists "command -v git" "git is not installed, and is required for this script!" +check_exists "command -v curl" "curl is not installed, and is required for this script!" -CheckExists "git config user.name" "Git username not set!\nRun: git config --global user.name 'My Name'" -CheckExists "git config user.email" "Git email not set!\nRun: git config --global user.email 'example@myemail.com'" +check_exists "git config user.name" "Git username not set!\nRun: git config --global user.name 'My Name'" +check_exists "git config user.email" "Git email not set!\nRun: git config --global user.email 'example@myemail.com'" repo_path="https://github.com/zmkfirmware/zmk-config-split-template.git" title="ZMK Config Setup:" @@ -36,8 +36,8 @@ select opt in "${options[@]}" "Quit"; do 2 ) board="proton_c"; break;; 3 ) board="bluemicro840_v1"; break;; - $(( ${#options[@]}+1 )) ) echo "Goodbye!"; exit;; - *) echo "Invalid option. Try another one.";continue;; + $(( ${#options[@]}+1 )) ) echo "Goodbye!"; exit 1;; + *) echo "Invalid option. Try another one."; continue;; esac done @@ -65,7 +65,7 @@ select opt in "${options[@]}" "Quit"; do # Add link to docs on adding your own custom shield in your ZMK config! # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; - $(( ${#options[@]}+1 )) ) echo "Goodbye!"; exit;; + $(( ${#options[@]}+1 )) ) echo "Goodbye!"; exit 1;; *) echo "Invalid option. Try another one.";continue;; esac @@ -111,7 +111,7 @@ read -r -p "Continue? [Yn]: " do_it if [ -n "$do_it" ] && [ "$do_it" != "y" ] && [ "$do_it" != "Y" ]; then echo "Aborting..." - exit + exit 1 fi git clone --single-branch $repo_path ${repo_name} @@ -149,8 +149,20 @@ if [ -n "$github_repo" ]; then git remote add origin "$github_repo" git push --set-upstream origin "$(git symbolic-ref --short HEAD)" + # If push failed, assume that the origin was incorrect and give instructions on fixing. + if [ $? -ne 0 ] { + echo "Remote repository $github_repo not found..." + echo "Check GitHub URL, and try adding again." + echo "Run the following: " + echo " git remote rm origin" + echo " git remote add origin FIXED_URL" + echo " git push --set-upstream origin $(git symbolic-ref --short HEAD)" + echo "Once pushed, your firmware should be availalbe from GitHub Actions at: ${github_repo%.git}/actions" + exit 1 + } + # TODO: Support determing the actions URL when non-https:// repo URL is used. if [ "${github_repo}" != "${github_repo#https://}" ]; then - echo "Your firmware should be available from the GitHub Actions shortly: ${github_repo%.git}/actions" + echo "Your firmware should be available from GitHub Actions shortly: ${github_repo%.git}/actions" fi fi From aa1f9bad6e76b878441806d3b2b6e555ff7e2c43 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sat, 19 Sep 2020 23:18:48 -0400 Subject: [PATCH 098/353] chore: Add initial CONTRIBUTING.md docs.* Closes #23 --- CONTRIBUTING.md | 120 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..3ea8c783 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,120 @@ +# Contributing To ZMK + +Thanks for taking an interest in contributing to ZMK! After reading through the documentation, if +you have any questions, please come join us on the +[ZMK Discord Server][discord-invite]. + +## Code of Conduct + +All community members are expected to abide by the [Code of Conduct][code-of-conduct]. +For any and all conduct inquiries or concerns, please contact conduct@zmkfirmware.dev. + +[code-of-conduct]: https://github.com/zmkfirmware/zmk/blob/main/CODE_OF_CONDUCT.md + +## How Can I Contribute + +There are many different ways that you can contribute to ZMK, several of which require no coding +abilities. These include: + +- Chat Support +- Issue Reporting/Commenting +- Testing +- Documentation +- Code Contributions + +## Chat Support + +Providing user support on the [ZMK Discord Server][discord-invite] is a great way to help the +project. In particular, answering questions in the [#help](https://discord.com/channels/719497620560543766/719909884769992755) channel is incredibly appreciated. + +## Issue Reporting/Commenting + +Often, you might encounter unexpected behavior when building, flashing, or running the ZMK +firmware. Submitting or commenting on issues on GitHub is a great way to contribute to the +ZMK project. + +### Before Submitting a Report + +- Review the [Frequently Asked Questions](https://zmkfirmware.dev/docs/faq). +- Check the [Troubleshooting Guide](https://zmkfirmware.dev/docs/troubleshooting) for answers. +- Search the [open issues](https://github.com/zmkfirmware/zmk/issues) for an existing report that + matches your problem. + +### Opening A Report + +To open a report: + +- Head to https://github.com/zmkfirmware/zmk/issues/new +- Provide an accurate summary of the issue in the title. +- Provide as much detail as you can about the issue including: + - What [board/shield](https://zmkfirmware.dev/docs/faq#what-is-a-board) you are using. + - A link to the user repository, if you used it to build your firmware. + - Exact steps to reproduce the problem. + - Any relevant screenshots or [logs](https://zmkfirmware.dev/docs/dev-guide-usb-logging) + +## Testing + +The `help wanted` label will be added to any [pull requests](https://github.com/zmkfirmware/zmk/pulls?q=is%3Aopen+is%3Apr+label%3A%22help+wanted%22) +or [issues](https://github.com/zmkfirmware/zmk/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) +where user testing can assist the ZMK contributors to verify fixes, confirm +bugs, etc. + +When providing testing feedback, please provide: + +- Exact steps used to test +- Any hardware details relevant to testing +- Pass/fail summary for testing. +- Full details of any failures, including: + - Logs + - Screenshots + +## Documentation + +Quality documentation is a huge part of what makes a successful project. Contributions to add +documentation to areas not currently covered are greatly appreciated. + +### Contributing + +- The documentation site can be found in the main ZMK repo, in the + [docs/](https://github.com/zmkfirmware/zmk/tree/main/docs) subdirectory. +- The documentation is maintained using [Docusaurus V2](https://v2.docusaurus.io/docs/). +- To get started, from the `docs/` directory, run `npm ci` and then `npm start`. +- Enhancements should be submitted as pull requests to the `main` branch of ZMK. + +## Code Contributions + +### Development Setup + +To get your development environment setup going, start at the +[basic setup](https://zmkfirmware.dev/docs/dev-setup) docs, and make sure you can build and flash +your own locally built firmware. + +### Formatting + +ZMK uses `clang-format` to ensure consist formatting for our source code. Before submitting your +changes, make sure you've manually run `clang-format`, or have your IDE configured to auto-format +on save. + +### Commit Messages + +The ZMK project is working towards, but not yet enforcing, the use of +[conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) for commit messages. + +Further documentation and details will be provided here soon. + +### Pull Requests + +When opening a pull request with your changes, please: + +- Submit the PR to the `main` branch of the + [`zmkfirmware/zmk`](https://github.com/zmkfirmware/zmk) repository. +- Use a descriptive title that summarizes the change. +- In the description, include: + - References to any open issues fixed by the PR. + - Feature added by the PR + - Bugs fixed by the PR. + - Testing you've performed locally. + - Requested testing by reviewers or testers. + - Screenshots or logs that support understanding the change. + +[discord-invite]: https://zmkfirmware.dev/community/discord/invite From 90bfe6026da99f352af750403880fb55defa1b42 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 21 Sep 2020 09:49:56 -0400 Subject: [PATCH 099/353] fix(boards): Flash Planck with `dfu-util`. --- app/boards/arm/planck/board.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/boards/arm/planck/board.cmake b/app/boards/arm/planck/board.cmake index 4843c415..772796da 100644 --- a/app/boards/arm/planck/board.cmake +++ b/app/boards/arm/planck/board.cmake @@ -1,6 +1,7 @@ # SPDX-License-Identifier: MIT +board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") board_runner_args(jlink "--device=STM32F303VC" "--speed=4000") -include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) From a7ef79e3f8f98785523cf0ebf990c1ca3db2fe60 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 21 Sep 2020 01:25:37 -0400 Subject: [PATCH 100/353] feat(blog): SOTF #2 initial work.- Closes #182 --- docs/blog/2020-09-21-zmk-sotf-2.md | 106 +++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 docs/blog/2020-09-21-zmk-sotf-2.md diff --git a/docs/blog/2020-09-21-zmk-sotf-2.md b/docs/blog/2020-09-21-zmk-sotf-2.md new file mode 100644 index 00000000..82278add --- /dev/null +++ b/docs/blog/2020-09-21-zmk-sotf-2.md @@ -0,0 +1,106 @@ +--- +title: ZMK State Of The Firmware \#2 +author: Pete Johanson +author_title: Project Creator +author_url: https://gitlab.com/petejohanson +author_image_url: https://www.gravatar.com/avatar/2001ceff7e9dc753cf96fcb2e6f41110 +tags: [SOTF, keyboards, firmware, oss, ble] +--- + +Welcome to the second ZMK "State Of The Firmware" (SOTF)! + +This update will cover all the major activity since [SOTF #1](/blog/2020/08/12/zmk-sotf-1), preparations for the upcoming +Hacktoberfest activity, and a current open call for community feedback on a ZMK mascot. + +## Recent Activity + +So much going on in ZMK! + +- Added a new generic [Hold Tap behavior](https://zmkfirmware.dev/docs/behavior/hold-tap) + in [#146](https://github.com/zmkfirmware/zmk/pull/146) which now powers mod-tap, layer-tap, etc. - [okke-formsma] +- [BLE profile/connection management](https://zmkfirmware.dev/docs/behavior/bluetooth) + in [#133](https://github.com/zmkfirmware/zmk/pull/133) - [petejohanson] +- Integration tests were added to automate testing of behaviors in [#131](https://github.com/zmkfirmware/zmk/pull/131) by [BrainWart] & [petejohanson] +- [Toggle layer behavior](https://zmkfirmware.dev/docs/behavior/layers#toggle-layer), e.g. `&tog LOWER`, in + [#98](https://github.com/zmkfirmware/zmk/pull/98) - [BrainWart] +- Key fix for dropped press/release over HID [#93](https://github.com/zmkfirmware/zmk/pull/93)/[#96](https://github.com/zmkfirmware/zmk/pull/96) - [careyk007](https://github.com/careyk007) & [petejohanson] +- Code formatting standardized using `clang-format` in [#183](https://github.com/zmkfirmware/zmk/pull/183) - [petejohanson] +- [Bootloader reset behavior](https://zmkfirmware.dev/docs/behavior/reset#bootloader-reset), e.g. `&bootloader`, in [#116](https://github.com/zmkfirmware/zmk/pull/116) - [petejohanson] +- Various bug fixes and documentation + +## New Shields + +- QAZ in [#130](https://github.com/zmkfirmware/zmk/pull/130) - [tominabox1](https://github.com/tominabox1) +- Iris in [#151](https://github.com/zmkfirmware/zmk/pull/151) - [kurtis-lew](https://github.com/kurtis-lew) +- RoMac 2.1 in [#122](https://github.com/zmkfirmware/zmk/pull/122) - [bmcgavin](https://github.com/bmcgavin) +- Sofle in [#118](https://github.com/zmkfirmware/zmk/pull/118) - [CrossR](https://github.com/CrossR) +- splitreus62 in [#92](https://github.com/zmkfirmware/zmk/pull/92) - [Na-Cly](https://github.com/Na-Cly) + +## New Boards + +- DZ60RGB rev1 in [#166](https://github.com/zmkfirmware/zmk/pull/166) - [Nicell] +- nrfMicro in [#101](https://github.com/zmkfirmware/zmk/pull/101) - [okke-formsma] +- BlueMicro840 [#91](https://github.com/zmkfirmware/zmk/pull/91) - [Na-Cly](https://github.com/Na-Cly) + +## Hacktoberfest Preparation + +[Hacktoberfest](https://hacktoberfest.digitalocean.com/) is a yearly celebration of open source, +which encourages participation in OSS, especially from new contributors. + +The ZMK contributors have been busy preparing for folks to join in on the fun by contributing to +ZMK! + +- There is now a basic [Contributing Guide](https://github.com/zmkfirmware/zmk/blob/main/CONTRIBUTING.md) to help newcomers get oriented, and get up to speed. +- The [`Hacktoberfest`](https://github.com/zmkfirmware/zmk/issues?q=is%3Aissue+is%3Aopen+label%3AHacktoberfest) + issue label will help participants discover good issues to work on. + (The existing [`good first issue`](https://github.com/zmkfirmware/zmk/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) label also helps with this) + +We're looking forward to the launch of Hacktoberfest! + +## Mascot Selection Feedback + +The ZMK project would like to settle on a mascot! We're soliciting community feedback as part of +the process before a final mascot is selected. + +The current mascots up for consideration are: + +- Griffin +- Peregrine Falcon +- Zapata Wren +- Zorro (south american fox) + +If you're interested in helping with the decision, head over to [Issue #195](https://github.com/zmkfirmware/zmk/issues/195) and add a reaction! + +## Coming Soon! + +There still lots of activity in ZMK, and plenty of exciting upcoming changes. + +- Improved modifier infrastructure, including "shifted keycodes" - [okke-formsma] +- Battery percentage reporting over BLE - [Nicell] +- Complete defines for HID keycodes/usage IDs - [innovaker](https://github.com/innovaker) +- Additional core BLE connection/bond management work - [petejohanson] +- Improved power management - [petejohanson], [Nicell] +- One shot mod/layer behaviors - [okke-formsma] + +## Statistics + +Some statistics of interest for ZMK: + +- GitHub + - 115 Closed PRs + - 64 Stars + - 48 Forks +- Discord Chat + - 186 total registered +- Website (last 30 days) + - 7.4K page views + - 474 new users + +## Thanks! + +Thanks again to the numerous contributors and users who have made working on ZMK such a pleasure! + +[okke-formsma]: https://github.com/okke-formsma +[nicell]: https://github.com/Nicell +[petejohanson]: https://github.com/petejohanson +[brainwart]: https://github.com/BrainWart From c044fe853275a6322834bfdeaf61b9f62becf085 Mon Sep 17 00:00:00 2001 From: Kristoffer Onias Date: Mon, 21 Sep 2020 22:29:54 -0700 Subject: [PATCH 101/353] Add RoMac plus v4 support on nice nano v1 --- .../shields/romac_plus/Kconfig.defconfig | 9 +++ app/boards/shields/romac_plus/Kconfig.shield | 5 ++ .../romac_plus/boards/nice_nano.overlay | 28 +++++++++ app/boards/shields/romac_plus/romac_plus.conf | 3 + app/boards/shields/romac_plus/romac_plus.dtsi | 61 +++++++++++++++++++ .../shields/romac_plus/romac_plus.keymap | 48 +++++++++++++++ .../shields/romac_plus/romac_plus.overlay | 37 +++++++++++ 7 files changed, 191 insertions(+) create mode 100644 app/boards/shields/romac_plus/Kconfig.defconfig create mode 100644 app/boards/shields/romac_plus/Kconfig.shield create mode 100644 app/boards/shields/romac_plus/boards/nice_nano.overlay create mode 100644 app/boards/shields/romac_plus/romac_plus.conf create mode 100644 app/boards/shields/romac_plus/romac_plus.dtsi create mode 100644 app/boards/shields/romac_plus/romac_plus.keymap create mode 100644 app/boards/shields/romac_plus/romac_plus.overlay diff --git a/app/boards/shields/romac_plus/Kconfig.defconfig b/app/boards/shields/romac_plus/Kconfig.defconfig new file mode 100644 index 00000000..45b15b8d --- /dev/null +++ b/app/boards/shields/romac_plus/Kconfig.defconfig @@ -0,0 +1,9 @@ +# Copyright (c) 2020 Pete Johanson, Richard Jones +# SPDX-License-Identifier: MIT + +if SHIELD_ROMAC_PLUS + +config ZMK_KEYBOARD_NAME + default "RoMac_plus-v4" + +endif \ No newline at end of file diff --git a/app/boards/shields/romac_plus/Kconfig.shield b/app/boards/shields/romac_plus/Kconfig.shield new file mode 100644 index 00000000..c89ef023 --- /dev/null +++ b/app/boards/shields/romac_plus/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 Pete Johanson, Richard Jones +# SPDX-License-Identifier: MIT + +config SHIELD_ROMAC_PLUS + def_bool $(shields_list_contains,romac_plus) diff --git a/app/boards/shields/romac_plus/boards/nice_nano.overlay b/app/boards/shields/romac_plus/boards/nice_nano.overlay new file mode 100644 index 00000000..a8dafa2d --- /dev/null +++ b/app/boards/shields/romac_plus/boards/nice_nano.overlay @@ -0,0 +1,28 @@ +&spi1 { + compatible = "nordic,nrf-spi"; + status = "okay"; + mosi-pin = <6>; + // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. + sck-pin = <5>; + miso-pin = <7>; + + led_strip: ws2812@0 { + compatible = "worldsemi,ws2812-spi"; + label = "WS2812"; + + /* SPI */ + reg = <0>; /* ignored, but necessary for SPI bindings */ + spi-max-frequency = <4000000>; + + /* WS2812 */ + chain-length = <10>; /* arbitrary; change at will */ + spi-one-frame = <0x70>; + spi-zero-frame = <0x40>; + }; +}; + +/ { + chosen { + zmk,underglow = &led_strip; + }; +}; \ No newline at end of file diff --git a/app/boards/shields/romac_plus/romac_plus.conf b/app/boards/shields/romac_plus/romac_plus.conf new file mode 100644 index 00000000..8ec9fa98 --- /dev/null +++ b/app/boards/shields/romac_plus/romac_plus.conf @@ -0,0 +1,3 @@ +# Uncomment to enable encoder +CONFIG_EC11=y +CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y \ No newline at end of file diff --git a/app/boards/shields/romac_plus/romac_plus.dtsi b/app/boards/shields/romac_plus/romac_plus.dtsi new file mode 100644 index 00000000..3895f860 --- /dev/null +++ b/app/boards/shields/romac_plus/romac_plus.dtsi @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <3>; + rows = <4>; + + map = < +RC(0,0) RC(0,1) RC(0,2) +RC(1,0) RC(1,1) RC(1,2) +RC(2,0) RC(2,1) RC(2,2) +RC(3,0) RC(3,1) RC(3,2) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&pro_micro_d 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + }; + + left_encoder: encoder_left { + compatible = "alps,ec11"; + label = "LEFT_ENCODER"; + a-gpios = <&pro_micro_d 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; + b-gpios = <&pro_micro_d 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; + resolution = <4>; + status = "disabled"; + }; + + sensors { + compatible = "zmk,keymap-sensors"; + sensors = <&left_encoder>; + }; + + bt_unpair_combo: bt_unpair_combo { + compatible = "zmk,bt-unpair-combo"; + }; + + // TODO: per-key RGB node(s)? +}; \ No newline at end of file diff --git a/app/boards/shields/romac_plus/romac_plus.keymap b/app/boards/shields/romac_plus/romac_plus.keymap new file mode 100644 index 00000000..77485dce --- /dev/null +++ b/app/boards/shields/romac_plus/romac_plus.keymap @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2020 Pete Johanson, Richard Jones + * + * SPDX-License-Identifier: MIT + */ + +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { +// ------------------- +// | 7 | 8 | 9 | +// | 4 | 5 | 6 | +// | 1 | 2 | 3 | +// | MO(1) | 0 | . | +// ---------------------- + bindings = < + &kp NUM_7 &kp NUM_8 &kp NUM_9 + &kp NUM_4 &kp NUM_5 &kp NUM_6 + &kp NUM_1 &kp NUM_2 &kp NUM_3 + &cp M_PLAY &kp NUM_0 &kp DOT + >; + + sensor-bindings = <&inc_dec_cp M_NEXT M_PREV>; + }; + + // nav_layer { +// ----------------------- +// | _ | HOME | PGUP | +// | _ | END | PGDN | +// | _ | _ | _ | +// | _ | _ | RET | +// ----------------------- + // bindings = < + // &trans &kp HOME &kp PGUP + // &trans &kp END &kp PGDN + // &trans &trans &trans .0 + // &trans &trans &kp RET + // >; + + // sensor-bindings = <&inc_dec_kp A B>; + // }; + }; +}; \ No newline at end of file diff --git a/app/boards/shields/romac_plus/romac_plus.overlay b/app/boards/shields/romac_plus/romac_plus.overlay new file mode 100644 index 00000000..23ef3e68 --- /dev/null +++ b/app/boards/shields/romac_plus/romac_plus.overlay @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 Pete Johanson, Richard Jones + * + * SPDX-License-Identifier: MIT + */ + +#include "romac_plus.dtsi" + +/ { + chosen { + zmk,kscan = &kscan0; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + + col-gpios + = <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 2 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 3 GPIO_ACTIVE_HIGH> + ; + + }; + + bt_unpair_combo: bt_unpair_combo { + compatible = "zmk,bt-unpair-combo"; + key-positions = <0 11>; + }; + +}; + +&left_encoder { + status = "okay"; +}; \ No newline at end of file From 551756b0ec7131e6129d31c0a28083d072d160a2 Mon Sep 17 00:00:00 2001 From: Kristoffer Onias Date: Mon, 21 Sep 2020 22:52:50 -0700 Subject: [PATCH 102/353] Add romac_plus to build.yml --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4a43f5d5..9af3d22b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,7 @@ jobs: - iris_left - iris_right - romac + - romac_plus - settings_reset include: - board: proton_c From f1fd71c231ab75d2e2563d7b40cb1460dca0eed7 Mon Sep 17 00:00:00 2001 From: Kristoffer Onias Date: Wed, 23 Sep 2020 12:39:06 -0700 Subject: [PATCH 103/353] Disabled ec11 since it's an optional configuration --- app/boards/shields/romac_plus/romac_plus.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/boards/shields/romac_plus/romac_plus.conf b/app/boards/shields/romac_plus/romac_plus.conf index 8ec9fa98..cff5b30c 100644 --- a/app/boards/shields/romac_plus/romac_plus.conf +++ b/app/boards/shields/romac_plus/romac_plus.conf @@ -1,3 +1,3 @@ # Uncomment to enable encoder -CONFIG_EC11=y -CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y \ No newline at end of file +#CONFIG_EC11=y +#CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y \ No newline at end of file From 31af9646e6d1316cd960d8cff98c524c2f25934a Mon Sep 17 00:00:00 2001 From: Jason Chestnut Date: Wed, 23 Sep 2020 16:05:29 -0400 Subject: [PATCH 104/353] Adding kconfig flag for enabling matrix polling (vs interrupts) on the matrix gpio driver. --- app/drivers/zephyr/Kconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/drivers/zephyr/Kconfig b/app/drivers/zephyr/Kconfig index 0237846a..a5b6d20c 100644 --- a/app/drivers/zephyr/Kconfig +++ b/app/drivers/zephyr/Kconfig @@ -9,6 +9,10 @@ config ZMK_KSCAN_GPIO_POLLING bool "Poll for key event triggers instead of using interrupts" default n +config ZMK_KSCAN_GPIO_MATRIX_POLLING + bool "Poll for key event triggers instead of using interrupts on matrix boards." + default n + endif config ZMK_KSCAN_INIT_PRIORITY From 4c092044ce22f0c60c3bf0ef860ecc543328d5bf Mon Sep 17 00:00:00 2001 From: Kristoffer Onias Date: Wed, 23 Sep 2020 16:21:42 -0700 Subject: [PATCH 105/353] Adopt single authors headers --- app/boards/shields/romac_plus/Kconfig.defconfig | 2 +- app/boards/shields/romac_plus/Kconfig.shield | 2 +- app/boards/shields/romac_plus/romac_plus.conf | 3 +++ app/boards/shields/romac_plus/romac_plus.dtsi | 2 +- app/boards/shields/romac_plus/romac_plus.keymap | 2 +- app/boards/shields/romac_plus/romac_plus.overlay | 2 +- 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/boards/shields/romac_plus/Kconfig.defconfig b/app/boards/shields/romac_plus/Kconfig.defconfig index 45b15b8d..1d04082c 100644 --- a/app/boards/shields/romac_plus/Kconfig.defconfig +++ b/app/boards/shields/romac_plus/Kconfig.defconfig @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Pete Johanson, Richard Jones +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT if SHIELD_ROMAC_PLUS diff --git a/app/boards/shields/romac_plus/Kconfig.shield b/app/boards/shields/romac_plus/Kconfig.shield index c89ef023..a7c7c614 100644 --- a/app/boards/shields/romac_plus/Kconfig.shield +++ b/app/boards/shields/romac_plus/Kconfig.shield @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Pete Johanson, Richard Jones +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT config SHIELD_ROMAC_PLUS diff --git a/app/boards/shields/romac_plus/romac_plus.conf b/app/boards/shields/romac_plus/romac_plus.conf index cff5b30c..d784dc48 100644 --- a/app/boards/shields/romac_plus/romac_plus.conf +++ b/app/boards/shields/romac_plus/romac_plus.conf @@ -1,3 +1,6 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + # Uncomment to enable encoder #CONFIG_EC11=y #CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y \ No newline at end of file diff --git a/app/boards/shields/romac_plus/romac_plus.dtsi b/app/boards/shields/romac_plus/romac_plus.dtsi index 3895f860..be056185 100644 --- a/app/boards/shields/romac_plus/romac_plus.dtsi +++ b/app/boards/shields/romac_plus/romac_plus.dtsi @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/romac_plus/romac_plus.keymap b/app/boards/shields/romac_plus/romac_plus.keymap index 77485dce..947b20a9 100644 --- a/app/boards/shields/romac_plus/romac_plus.keymap +++ b/app/boards/shields/romac_plus/romac_plus.keymap @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson, Richard Jones + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/romac_plus/romac_plus.overlay b/app/boards/shields/romac_plus/romac_plus.overlay index 23ef3e68..7b570015 100644 --- a/app/boards/shields/romac_plus/romac_plus.overlay +++ b/app/boards/shields/romac_plus/romac_plus.overlay @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson, Richard Jones + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ From 0ce36865b2026c8739c01cebd3031180aa0f3b1f Mon Sep 17 00:00:00 2001 From: Kristoffer Onias Date: Wed, 23 Sep 2020 16:23:54 -0700 Subject: [PATCH 106/353] Update keyboard name to be more user friendly --- app/boards/shields/romac_plus/Kconfig.defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/boards/shields/romac_plus/Kconfig.defconfig b/app/boards/shields/romac_plus/Kconfig.defconfig index 1d04082c..c4efdb97 100644 --- a/app/boards/shields/romac_plus/Kconfig.defconfig +++ b/app/boards/shields/romac_plus/Kconfig.defconfig @@ -4,6 +4,6 @@ if SHIELD_ROMAC_PLUS config ZMK_KEYBOARD_NAME - default "RoMac_plus-v4" + default "RoMac+ v4" endif \ No newline at end of file From 9fffebd5dac13d0a57f6f6aaff0654a2bd0986c1 Mon Sep 17 00:00:00 2001 From: Kristoffer Onias Date: Wed, 23 Sep 2020 16:31:02 -0700 Subject: [PATCH 107/353] Adopt new BT unpairing standards --- app/boards/shields/romac_plus/romac_plus.dtsi | 3 --- app/boards/shields/romac_plus/romac_plus.keymap | 5 +++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/boards/shields/romac_plus/romac_plus.dtsi b/app/boards/shields/romac_plus/romac_plus.dtsi index be056185..d04b2142 100644 --- a/app/boards/shields/romac_plus/romac_plus.dtsi +++ b/app/boards/shields/romac_plus/romac_plus.dtsi @@ -53,9 +53,6 @@ RC(3,0) RC(3,1) RC(3,2) sensors = <&left_encoder>; }; - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; // TODO: per-key RGB node(s)? }; \ No newline at end of file diff --git a/app/boards/shields/romac_plus/romac_plus.keymap b/app/boards/shields/romac_plus/romac_plus.keymap index 947b20a9..3fa9441b 100644 --- a/app/boards/shields/romac_plus/romac_plus.keymap +++ b/app/boards/shields/romac_plus/romac_plus.keymap @@ -5,6 +5,7 @@ */ #include +#include #include / { @@ -30,13 +31,13 @@ // nav_layer { // ----------------------- -// | _ | HOME | PGUP | +// | BT_CLR | HOME | PGUP | // | _ | END | PGDN | // | _ | _ | _ | // | _ | _ | RET | // ----------------------- // bindings = < - // &trans &kp HOME &kp PGUP + // &bt BT_CLR &kp HOME &kp PGUP // &trans &kp END &kp PGDN // &trans &trans &trans .0 // &trans &trans &kp RET From 641524b1b9564fd2b433b9bc430736fb3205a3c5 Mon Sep 17 00:00:00 2001 From: Kristoffer Onias Date: Wed, 23 Sep 2020 16:37:46 -0700 Subject: [PATCH 108/353] Update Keymap legends for consistency --- app/boards/shields/romac_plus/romac_plus.dtsi | 2 - .../shields/romac_plus/romac_plus.keymap | 44 +++++++++---------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/app/boards/shields/romac_plus/romac_plus.dtsi b/app/boards/shields/romac_plus/romac_plus.dtsi index d04b2142..9b148ca0 100644 --- a/app/boards/shields/romac_plus/romac_plus.dtsi +++ b/app/boards/shields/romac_plus/romac_plus.dtsi @@ -36,7 +36,6 @@ RC(3,0) RC(3,1) RC(3,2) , <&pro_micro_d 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&pro_micro_d 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> ; - }; left_encoder: encoder_left { @@ -52,7 +51,6 @@ RC(3,0) RC(3,1) RC(3,2) compatible = "zmk,keymap-sensors"; sensors = <&left_encoder>; }; - // TODO: per-key RGB node(s)? }; \ No newline at end of file diff --git a/app/boards/shields/romac_plus/romac_plus.keymap b/app/boards/shields/romac_plus/romac_plus.keymap index 3fa9441b..d8d1f787 100644 --- a/app/boards/shields/romac_plus/romac_plus.keymap +++ b/app/boards/shields/romac_plus/romac_plus.keymap @@ -13,37 +13,37 @@ compatible = "zmk,keymap"; default_layer { -// ------------------- -// | 7 | 8 | 9 | -// | 4 | 5 | 6 | -// | 1 | 2 | 3 | -// | MO(1) | 0 | . | -// ---------------------- +// -------------------------- +// | 7 | 8 | 9 | +// | 4 | 5 | 6 | +// | 1 | 2 | 3 | +// | M_PLAY | 0 | MO(1) | +// -------------------------- bindings = < &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_1 &kp NUM_2 &kp NUM_3 - &cp M_PLAY &kp NUM_0 &kp DOT + &cp M_PLAY &kp NUM_0 &mo 1 >; sensor-bindings = <&inc_dec_cp M_NEXT M_PREV>; }; - // nav_layer { -// ----------------------- -// | BT_CLR | HOME | PGUP | -// | _ | END | PGDN | -// | _ | _ | _ | -// | _ | _ | RET | -// ----------------------- - // bindings = < - // &bt BT_CLR &kp HOME &kp PGUP - // &trans &kp END &kp PGDN - // &trans &trans &trans .0 - // &trans &trans &kp RET - // >; + nav_layer { +// -------------------------- +// | BT_CLR | HOME | PGUP | +// | _ | END | PGDN | +// | _ | _ | _ | +// | _ | _ | _ | +// -------------------------- + bindings = < + &bt BT_CLR &kp HOME &kp PGUP + &trans &kp END &kp PGDN + &trans &trans &trans + &trans &trans &trans + >; - // sensor-bindings = <&inc_dec_kp A B>; - // }; + sensor-bindings = <&inc_dec_kp A B>; + }; }; }; \ No newline at end of file From 8e92ae30893e620ca1c615637a3bcf3f05088225 Mon Sep 17 00:00:00 2001 From: Kristoffer Onias Date: Wed, 23 Sep 2020 17:49:13 -0700 Subject: [PATCH 109/353] Remove bt_unpair_combo from romac_plus.overlay --- app/boards/shields/romac_plus/romac_plus.overlay | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/boards/shields/romac_plus/romac_plus.overlay b/app/boards/shields/romac_plus/romac_plus.overlay index 7b570015..86430349 100644 --- a/app/boards/shields/romac_plus/romac_plus.overlay +++ b/app/boards/shields/romac_plus/romac_plus.overlay @@ -22,12 +22,6 @@ , <&pro_micro_a 2 GPIO_ACTIVE_HIGH> , <&pro_micro_a 3 GPIO_ACTIVE_HIGH> ; - - }; - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - key-positions = <0 11>; }; }; From 53425aa3c4719908eb8e6ed23057188f4e502237 Mon Sep 17 00:00:00 2001 From: Jason Chestnut Date: Thu, 24 Sep 2020 07:55:32 -0400 Subject: [PATCH 110/353] Rename kscan direct wired driver polling kscan flag in preparationfor addition of new matrix driver flag that enables polling. --- app/drivers/zephyr/Kconfig | 4 ++-- app/drivers/zephyr/kscan_gpio_direct.c | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/drivers/zephyr/Kconfig b/app/drivers/zephyr/Kconfig index a5b6d20c..0bf6c0a6 100644 --- a/app/drivers/zephyr/Kconfig +++ b/app/drivers/zephyr/Kconfig @@ -5,11 +5,11 @@ config ZMK_KSCAN_GPIO_DRIVER if ZMK_KSCAN_GPIO_DRIVER -config ZMK_KSCAN_GPIO_POLLING +config ZMK_KSCAN_MATRIX_POLLING bool "Poll for key event triggers instead of using interrupts" default n -config ZMK_KSCAN_GPIO_MATRIX_POLLING +config ZMK_KSCAN_DIRECT_POLLING bool "Poll for key event triggers instead of using interrupts on matrix boards." default n diff --git a/app/drivers/zephyr/kscan_gpio_direct.c b/app/drivers/zephyr/kscan_gpio_direct.c index 1e5ab59e..7ba3399b 100644 --- a/app/drivers/zephyr/kscan_gpio_direct.c +++ b/app/drivers/zephyr/kscan_gpio_direct.c @@ -33,9 +33,9 @@ struct kscan_gpio_config { }; struct kscan_gpio_data { -#if defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) +#if defined(ZMK_KSCAN_DIRECT_POLLING) struct k_timer poll_timer; -#endif /* defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ +#endif /* defined(ZMK_KSCAN_DIRECT_POLLING) */ kscan_callback_t callback; union work_reference work; struct device *dev; @@ -53,7 +53,7 @@ static const struct kscan_gpio_item_config *kscan_gpio_input_configs(struct devi return cfg->inputs; } -#if !defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) +#if !defined(ZMK_KSCAN_DIRECT_POLLING) struct kscan_gpio_irq_callback { union work_reference *work; @@ -101,7 +101,7 @@ static void kscan_gpio_irq_callback_handler(struct device *dev, struct gpio_call } } -#else /* !defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ +#else /* !defined(ZMK_KSCAN_DIRECT_POLLING) */ static void kscan_gpio_timer_handler(struct k_timer *timer) { struct kscan_gpio_data *data = CONTAINER_OF(timer, struct kscan_gpio_data, poll_timer); @@ -120,7 +120,7 @@ static int kscan_gpio_direct_disable(struct device *dev) { return 0; } -#endif /* defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ +#endif /* defined(ZMK_KSCAN_DIRECT_POLLING) */ static int kscan_gpio_direct_configure(struct device *dev, kscan_callback_t callback) { struct kscan_gpio_data *data = dev->driver_data; @@ -173,7 +173,7 @@ static const struct kscan_driver_api gpio_driver_api = { #define INST_INPUT_LEN(n) DT_INST_PROP_LEN(n, input_gpios) #define GPIO_INST_INIT(n) \ - COND_CODE_0(CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + COND_CODE_0(ZMK_KSCAN_DIRECT_POLLING, \ (static struct kscan_gpio_irq_callback irq_callbacks_##n[INST_INPUT_LEN(n)];), ()) \ static struct kscan_gpio_data kscan_gpio_data_##n = { \ .inputs = {[INST_INPUT_LEN(n) - 1] = NULL}}; \ @@ -195,7 +195,7 @@ static const struct kscan_driver_api gpio_driver_api = { return err; \ } \ COND_CODE_0( \ - CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + ZMK_KSCAN_DIRECT_POLLING, \ (irq_callbacks_##n[i].work = &data->work; \ irq_callbacks_##n[i].debounce_period = cfg->debounce_period; \ gpio_init_callback(&irq_callbacks_##n[i].callback, \ @@ -208,7 +208,7 @@ static const struct kscan_driver_api gpio_driver_api = { ()) \ } \ data->dev = dev; \ - COND_CODE_1(CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + COND_CODE_1(ZMK_KSCAN_DIRECT_POLLING, \ (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ if (cfg->debounce_period > 0) { \ k_delayed_work_init(&data->work.delayed, kscan_gpio_work_handler); \ @@ -227,4 +227,4 @@ static const struct kscan_driver_api gpio_driver_api = { DT_INST_FOREACH_STATUS_OKAY(GPIO_INST_INIT) -#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ \ No newline at end of file +#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ From cd194dbac4747126f017ce6e9ddf070ca6cc1fef Mon Sep 17 00:00:00 2001 From: CrossR Date: Thu, 24 Sep 2020 17:42:34 +0100 Subject: [PATCH 111/353] Add licenses. --- docs/static/setup.ps1 | 8 ++++++-- docs/static/setup.sh | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index a2d66eec..3946e66c 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -1,3 +1,7 @@ +# Copyright (c) 2020 The ZMK Contributors +# +# SPDX-License-Identifier: MIT + $ErrorActionPreference = "Stop" function Get-Choice-From-Options { @@ -10,7 +14,7 @@ function Get-Choice-From-Options { for ($i = 0; $i -lt $Options.length; $i++) { Write-Host "$($i + 1)) $($Options[$i])" } - + Write-Host "$($Options.length + 1)) Quit" $selection = Read-Host $Prompt @@ -103,7 +107,7 @@ if ($github_user -ne "") { } $github_repo = Read-Host "GitHub Repo [https://github.com/$github_user/$repo_name.git]" - + if ($github_repo -eq "") { $github_repo = "https://github.com/$github_user/$repo_name.git" } diff --git a/docs/static/setup.sh b/docs/static/setup.sh index df985a67..5bf36451 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -1,11 +1,15 @@ #!/bin/bash +# Copyright (c) 2020 The ZMK Contributors +# +# SPDX-License-Identifier: MIT + set -e check_exists() { command_to_run=$1 error_message=$2 - + if ! eval "$command_to_run" &> /dev/null; then printf "%s\n" "$error_message" exit 1 @@ -28,7 +32,7 @@ echo "$title" echo "" echo "MCU Board Selection:" PS3="$prompt " -select opt in "${options[@]}" "Quit"; do +select opt in "${options[@]}" "Quit"; do case "$REPLY" in @@ -50,8 +54,8 @@ options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac") PS3="$prompt " # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. -# select opt in "${options[@]}" "Other" "Quit"; do -select opt in "${options[@]}" "Quit"; do +# select opt in "${options[@]}" "Other" "Quit"; do +select opt in "${options[@]}" "Quit"; do case "$REPLY" in @@ -64,7 +68,7 @@ select opt in "${options[@]}" "Quit"; do 7 ) shield_title="RoMac" shield="romac"; split="n"; break;; # Add link to docs on adding your own custom shield in your ZMK config! - # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; + # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; $(( ${#options[@]}+1 )) ) echo "Goodbye!"; exit 1;; *) echo "Invalid option. Try another one.";continue;; @@ -148,9 +152,10 @@ git commit -m "Initial User Config." if [ -n "$github_repo" ]; then git remote add origin "$github_repo" git push --set-upstream origin "$(git symbolic-ref --short HEAD)" + push_return_code=$? # If push failed, assume that the origin was incorrect and give instructions on fixing. - if [ $? -ne 0 ] { + if [ ${push_return_code} -ne 0 ]; then echo "Remote repository $github_repo not found..." echo "Check GitHub URL, and try adding again." echo "Run the following: " @@ -159,7 +164,7 @@ if [ -n "$github_repo" ]; then echo " git push --set-upstream origin $(git symbolic-ref --short HEAD)" echo "Once pushed, your firmware should be availalbe from GitHub Actions at: ${github_repo%.git}/actions" exit 1 - } + fi # TODO: Support determing the actions URL when non-https:// repo URL is used. if [ "${github_repo}" != "${github_repo#https://}" ]; then From 5c4705d465d4b5f742299cf77f549186c9cc7933 Mon Sep 17 00:00:00 2001 From: Jason Chestnut Date: Thu, 24 Sep 2020 14:30:47 -0400 Subject: [PATCH 112/353] Add new matrix scan flag and implementation in the gpio matrix driver. --- app/boards/arm/planck/Kconfig.defconfig | 3 + .../clueboard_california/Kconfig.defconfig | 2 +- app/drivers/zephyr/Kconfig | 6 +- app/drivers/zephyr/kscan_gpio_matrix.c | 133 ++++++++++++------ 4 files changed, 95 insertions(+), 49 deletions(-) diff --git a/app/boards/arm/planck/Kconfig.defconfig b/app/boards/arm/planck/Kconfig.defconfig index 6f5bf525..913c1c13 100644 --- a/app/boards/arm/planck/Kconfig.defconfig +++ b/app/boards/arm/planck/Kconfig.defconfig @@ -11,4 +11,7 @@ config ZMK_KEYBOARD_NAME config ZMK_USB default y +config ZMK_KSCAN_MATRIX_POLLING + default y + endif # BOARD_PLANCK_REV6 diff --git a/app/boards/shields/clueboard_california/Kconfig.defconfig b/app/boards/shields/clueboard_california/Kconfig.defconfig index 2408f9ff..e101ea76 100644 --- a/app/boards/shields/clueboard_california/Kconfig.defconfig +++ b/app/boards/shields/clueboard_california/Kconfig.defconfig @@ -8,7 +8,7 @@ config ZMK_KEYBOARD_NAME # across A & B controllers, and STM32F303CCT6 can't enable # interrutps for multiple controllers for the same "line" # for the external interrupts. -config ZMK_KSCAN_GPIO_POLLING +config ZMK_KSCAN_DIRECT_POLLING default y endif diff --git a/app/drivers/zephyr/Kconfig b/app/drivers/zephyr/Kconfig index 0bf6c0a6..c5ff3a66 100644 --- a/app/drivers/zephyr/Kconfig +++ b/app/drivers/zephyr/Kconfig @@ -6,11 +6,11 @@ config ZMK_KSCAN_GPIO_DRIVER if ZMK_KSCAN_GPIO_DRIVER config ZMK_KSCAN_MATRIX_POLLING - bool "Poll for key event triggers instead of using interrupts" - default n + bool "Poll for key event triggers instead of using interrupts on matrix boards." + default y config ZMK_KSCAN_DIRECT_POLLING - bool "Poll for key event triggers instead of using interrupts on matrix boards." + bool "Poll for key event triggers instead of using interrupts on direct wired boards." default n endif diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index 634f694c..46616ff5 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -31,6 +31,8 @@ struct kscan_gpio_item_config { #define _KSCAN_GPIO_ROW_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, row_gpios, idx) #define _KSCAN_GPIO_COL_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, col_gpios, idx) +#if !defined(ZMK_KSCAN_MATRIX_POLLING) +/* Set up for interrupt-based input. */ static int kscan_gpio_config_interrupts(struct device **devices, const struct kscan_gpio_item_config *configs, size_t len, gpio_flags_t flags) { @@ -48,6 +50,61 @@ static int kscan_gpio_config_interrupts(struct device **devices, return 0; } + +#define KSCAN_GPIO_MATRIX_ENABLE(n) \ +static int kscan_gpio_matrix_enable(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ + GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ +} \ + +#define KSCAN_GPIO_MATRIX_DISABLE(n) \ +static int kscan_gpio_matrix_disable(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ + GPIO_INT_DISABLE); \ +} \ + +#define KSCAN_GPIO_CALLBACK_HANDLER(n) \ +static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ + gpio_port_pins_t pin) { \ + struct kscan_gpio_irq_callback_##n *data = \ + CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ + COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(data->work); }), ({ \ + k_delayed_work_cancel(data->work); \ + k_delayed_work_submit(data->work, \ + K_MSEC(DT_INST_PROP(n, debounce_period))); \ + })) \ +} \ + +#else /* !defined(ZMK_KSCAN_MATRIX_POLLING) */ +/* Set up for matrix scanning. */ + +static void kscan_gpio_timer_handler(struct k_timer *timer) { + struct kscan_gpio_data *data = CONTAINER_OF(timer, struct kscan_gpio_data, poll_timer); + + k_work_submit(&data->work.direct); +} + +#define KSCAN_GPIO_MATRIX_ENABLE(n) \ +static int kscan_gpio_matrix_enable(struct device *dev) { \ + struct kscan_gpio_data *data = dev->driver_data; \ + k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); \ + return 0; \ +} \ + +#define KSCAN_GPIO_MATRIX_DISABLE(n) \ +static int kscan_gpio_matrix_disable(struct device *dev) { \ + struct kscan_gpio_data *data = dev->driver_data; \ + k_timer_stop(&data->poll_timer, K_MSEC(10), K_MSEC(10)); \ + return 0; \ +} \ + +#define KSCAN_GPIO_MATRIX_ENABLE(n) \ + + +#endif /* !defined(ZMK_KSCAN_MATRIX_POLLING) */ + #define INST_MATRIX_ROWS(n) DT_INST_PROP_LEN(n, row_gpios) #define INST_MATRIX_COLS(n) DT_INST_PROP_LEN(n, col_gpios) #define INST_OUTPUT_LEN(n) \ @@ -58,17 +115,22 @@ static int kscan_gpio_config_interrupts(struct device **devices, (INST_MATRIX_ROWS(n))) #define GPIO_INST_INIT(n) \ - struct kscan_gpio_irq_callback_##n { \ - struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) * work; \ - struct gpio_callback callback; \ - }; \ - static struct kscan_gpio_irq_callback_##n irq_callbacks_##n[INST_INPUT_LEN(n)]; \ + COND_CODE_0( \ + ZMK_KSCAN_MATRIX_POLLING, \ + (struct kscan_gpio_irq_callback_##n { \ + struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) * work; \ + struct gpio_callback callback; \ + }; \ + static struct kscan_gpio_irq_callback_##n irq_callbacks_##n[INST_INPUT_LEN(n)]; \ + KSCAN_GPIO_ENTABLE_INTERRUPTS(n)), \ + ()) \ struct kscan_gpio_config_##n { \ struct kscan_gpio_item_config rows[INST_MATRIX_ROWS(n)]; \ struct kscan_gpio_item_config cols[INST_MATRIX_COLS(n)]; \ }; \ struct kscan_gpio_data_##n { \ - kscan_callback_t callback; \ + COND_CODE_1(ZMK_KSCAN_MATRIX_POLLING, \ + (struct k_timer poll_timer;),(kscan_callback_t callback;)) \ struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ struct device *rows[INST_MATRIX_ROWS(n)]; \ @@ -96,16 +158,6 @@ static int kscan_gpio_config_interrupts(struct device **devices, return ( \ COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ } \ - static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ - kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ - GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ - } \ - static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ - kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ - GPIO_INT_DISABLE); \ - } \ static void kscan_gpio_set_output_state_##n(struct device *dev, int value) { \ for (int i = 0; i < INST_OUTPUT_LEN(n); i++) { \ struct device *in_dev = kscan_gpio_output_devices_##n(dev)[i]; \ @@ -128,7 +180,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, /* Disable our interrupts temporarily while we scan, to avoid */ \ /* re-entry while we iterate columns and set them active one by one */ \ /* to get pressed state for each matrix cell. */ \ - kscan_gpio_disable_interrupts_##n(dev); \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (kscan_gpio_disable_interrupts_##n(dev);), ()) \ kscan_gpio_set_output_state_##n(dev, 0); \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ struct device *out_dev = kscan_gpio_output_devices_##n(dev)[o]; \ @@ -146,7 +198,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, /* Set all our outputs as active again, then re-enable interrupts, */ \ /* so we can trigger interrupts again for future press/release */ \ kscan_gpio_set_output_state_##n(dev, 1); \ - kscan_gpio_enable_interrupts_##n(dev); \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (kscan_gpio_enable_interrupts_##n(dev);), ()) \ for (int r = 0; r < INST_MATRIX_ROWS(n); r++) { \ for (int c = 0; c < INST_MATRIX_COLS(n); c++) { \ bool pressed = read_state[r][c]; \ @@ -172,16 +224,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, struct kscan_gpio_data_##n *data = CONTAINER_OF(work, struct kscan_gpio_data_##n, work); \ kscan_gpio_read_##n(data->dev); \ } \ - static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ - gpio_port_pins_t pin) { \ - struct kscan_gpio_irq_callback_##n *data = \ - CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ - COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(data->work); }), ({ \ - k_delayed_work_cancel(data->work); \ - k_delayed_work_submit(data->work, \ - K_MSEC(DT_INST_PROP(n, debounce_period))); \ - })) \ - } \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (KSCAN_GPIO_CALLBACK_HANDLER(n)), ()) \ static struct kscan_gpio_data_##n kscan_gpio_data_##n = { \ .rows = {[INST_MATRIX_ROWS(n) - 1] = NULL}, .cols = {[INST_MATRIX_COLS(n) - 1] = NULL}}; \ static int kscan_gpio_configure_##n(struct device *dev, kscan_callback_t callback) { \ @@ -192,13 +235,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, data->callback = callback; \ return 0; \ }; \ - static int kscan_gpio_enable_##n(struct device *dev) { \ - int err = kscan_gpio_enable_interrupts_##n(dev); \ - if (err) { \ - return err; \ - } \ - return kscan_gpio_read_##n(dev); \ - }; \ + KSCAN_GPIO_MATRIX_ENABLE(n) \ + KSCAN_GPIO_MATRIX_DISABLE(n) \ static int kscan_gpio_init_##n(struct device *dev) { \ struct kscan_gpio_data_##n *data = dev->driver_data; \ int err; \ @@ -215,16 +253,21 @@ static int kscan_gpio_config_interrupts(struct device **devices, LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ return err; \ } \ - irq_callbacks_##n[i].work = &data->work; \ - gpio_init_callback(&irq_callbacks_##n[i].callback, \ - kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ - err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ - if (err) { \ - LOG_ERR("Error adding the callback to the column device"); \ - return err; \ - } \ + COND_CODE_0( \ + ZMK_KSCAN_MATRIX_POLLING, \ + (irq_callbacks_##n[i].work = &data->work; \ + gpio_init_callback(&irq_callbacks_##n[i].callback, \ + kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ + err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ + if (err) { \ + LOG_ERR("Error adding the callback to the column device"); \ + return err; \ + }), \ + ()) \ } \ struct device **output_devices = kscan_gpio_output_devices_##n(dev); \ + COND_CODE_1(ZMK_KSCAN_MATRIX_POLLING, \ + (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ const struct kscan_gpio_item_config *out_cfg = &kscan_gpio_output_configs_##n(dev)[o]; \ output_devices[o] = device_get_binding(out_cfg->label); \ @@ -247,8 +290,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, } \ static const struct kscan_driver_api gpio_driver_api_##n = { \ .config = kscan_gpio_configure_##n, \ - .enable_callback = kscan_gpio_enable_##n, \ - .disable_callback = kscan_gpio_disable_interrupts_##n, \ + .enable_callback = kscan_gpio_matrix_enable, \ + .disable_callback = kscan_gpio_matrix_disable, \ }; \ static const struct kscan_gpio_config_##n kscan_gpio_config_##n = { \ .rows = {UTIL_LISTIFY(INST_MATRIX_ROWS(n), _KSCAN_GPIO_ROW_CFG_INIT, n)}, \ From d5ec32612d9a1d1bf07674fe4b01a926c727ba99 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 24 Sep 2020 14:34:38 -0400 Subject: [PATCH 113/353] feat(docs): Add missing shields to hardware page. --- docs/docs/hardware.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/docs/hardware.md b/docs/docs/hardware.md index 299d1f5c..236aa972 100644 --- a/docs/docs/hardware.md +++ b/docs/docs/hardware.md @@ -26,6 +26,11 @@ That being said, there are currently only a few specific [boards](/docs/faq#what - [Kyria](https://splitkb.com/products/kyria-pcb-kit) (`kyria_left` and `kyria_right`) - [Corne](https://github.com/foostan/crkbd) (`corne_left` and `corne_right`) - [Lily58](https://github.com/kata0510/Lily58) (`lily58_left` and `lily58_right`) +- [Sofle](https://github.com/josefadamcik/SofleKeyboard) (`sofle_left` and `sofle_right`) +- [Splitreus62](https://github.com/Na-Cly/splitreus62) (`splitreus62_left` and `splitreus62_right`) +- [RoMac+ v4](https://www.littlekeyboards.com/products/romac) (`romac_plus`) +- [RoMac v2](https://mechboards.co.uk/shop/kits/romac-macro-pad/) (`romac') +- [QAZ](https://www.cbkbd.com/product/qaz-keyboard-kit) (`qaz`) ## Other Hardware From 966830562182bca5645ec5c7f44c1e7390408bdd Mon Sep 17 00:00:00 2001 From: Jason Chestnut Date: Thu, 24 Sep 2020 17:35:51 -0400 Subject: [PATCH 114/353] Restore original matrix driver to correct implementation errors. --- app/drivers/zephyr/kscan_gpio_matrix.c | 133 +++++++++---------------- 1 file changed, 45 insertions(+), 88 deletions(-) diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index 46616ff5..634f694c 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -31,8 +31,6 @@ struct kscan_gpio_item_config { #define _KSCAN_GPIO_ROW_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, row_gpios, idx) #define _KSCAN_GPIO_COL_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, col_gpios, idx) -#if !defined(ZMK_KSCAN_MATRIX_POLLING) -/* Set up for interrupt-based input. */ static int kscan_gpio_config_interrupts(struct device **devices, const struct kscan_gpio_item_config *configs, size_t len, gpio_flags_t flags) { @@ -50,61 +48,6 @@ static int kscan_gpio_config_interrupts(struct device **devices, return 0; } - -#define KSCAN_GPIO_MATRIX_ENABLE(n) \ -static int kscan_gpio_matrix_enable(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ - kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ - GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ -} \ - -#define KSCAN_GPIO_MATRIX_DISABLE(n) \ -static int kscan_gpio_matrix_disable(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ - kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ - GPIO_INT_DISABLE); \ -} \ - -#define KSCAN_GPIO_CALLBACK_HANDLER(n) \ -static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ - gpio_port_pins_t pin) { \ - struct kscan_gpio_irq_callback_##n *data = \ - CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ - COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(data->work); }), ({ \ - k_delayed_work_cancel(data->work); \ - k_delayed_work_submit(data->work, \ - K_MSEC(DT_INST_PROP(n, debounce_period))); \ - })) \ -} \ - -#else /* !defined(ZMK_KSCAN_MATRIX_POLLING) */ -/* Set up for matrix scanning. */ - -static void kscan_gpio_timer_handler(struct k_timer *timer) { - struct kscan_gpio_data *data = CONTAINER_OF(timer, struct kscan_gpio_data, poll_timer); - - k_work_submit(&data->work.direct); -} - -#define KSCAN_GPIO_MATRIX_ENABLE(n) \ -static int kscan_gpio_matrix_enable(struct device *dev) { \ - struct kscan_gpio_data *data = dev->driver_data; \ - k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); \ - return 0; \ -} \ - -#define KSCAN_GPIO_MATRIX_DISABLE(n) \ -static int kscan_gpio_matrix_disable(struct device *dev) { \ - struct kscan_gpio_data *data = dev->driver_data; \ - k_timer_stop(&data->poll_timer, K_MSEC(10), K_MSEC(10)); \ - return 0; \ -} \ - -#define KSCAN_GPIO_MATRIX_ENABLE(n) \ - - -#endif /* !defined(ZMK_KSCAN_MATRIX_POLLING) */ - #define INST_MATRIX_ROWS(n) DT_INST_PROP_LEN(n, row_gpios) #define INST_MATRIX_COLS(n) DT_INST_PROP_LEN(n, col_gpios) #define INST_OUTPUT_LEN(n) \ @@ -115,22 +58,17 @@ static int kscan_gpio_matrix_disable(struct device *dev) { (INST_MATRIX_ROWS(n))) #define GPIO_INST_INIT(n) \ - COND_CODE_0( \ - ZMK_KSCAN_MATRIX_POLLING, \ - (struct kscan_gpio_irq_callback_##n { \ - struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) * work; \ - struct gpio_callback callback; \ - }; \ - static struct kscan_gpio_irq_callback_##n irq_callbacks_##n[INST_INPUT_LEN(n)]; \ - KSCAN_GPIO_ENTABLE_INTERRUPTS(n)), \ - ()) \ + struct kscan_gpio_irq_callback_##n { \ + struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) * work; \ + struct gpio_callback callback; \ + }; \ + static struct kscan_gpio_irq_callback_##n irq_callbacks_##n[INST_INPUT_LEN(n)]; \ struct kscan_gpio_config_##n { \ struct kscan_gpio_item_config rows[INST_MATRIX_ROWS(n)]; \ struct kscan_gpio_item_config cols[INST_MATRIX_COLS(n)]; \ }; \ struct kscan_gpio_data_##n { \ - COND_CODE_1(ZMK_KSCAN_MATRIX_POLLING, \ - (struct k_timer poll_timer;),(kscan_callback_t callback;)) \ + kscan_callback_t callback; \ struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ struct device *rows[INST_MATRIX_ROWS(n)]; \ @@ -158,6 +96,16 @@ static int kscan_gpio_matrix_disable(struct device *dev) { return ( \ COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ } \ + static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ + GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ + } \ + static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ + GPIO_INT_DISABLE); \ + } \ static void kscan_gpio_set_output_state_##n(struct device *dev, int value) { \ for (int i = 0; i < INST_OUTPUT_LEN(n); i++) { \ struct device *in_dev = kscan_gpio_output_devices_##n(dev)[i]; \ @@ -180,7 +128,7 @@ static int kscan_gpio_matrix_disable(struct device *dev) { /* Disable our interrupts temporarily while we scan, to avoid */ \ /* re-entry while we iterate columns and set them active one by one */ \ /* to get pressed state for each matrix cell. */ \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (kscan_gpio_disable_interrupts_##n(dev);), ()) \ + kscan_gpio_disable_interrupts_##n(dev); \ kscan_gpio_set_output_state_##n(dev, 0); \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ struct device *out_dev = kscan_gpio_output_devices_##n(dev)[o]; \ @@ -198,7 +146,7 @@ static int kscan_gpio_matrix_disable(struct device *dev) { /* Set all our outputs as active again, then re-enable interrupts, */ \ /* so we can trigger interrupts again for future press/release */ \ kscan_gpio_set_output_state_##n(dev, 1); \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (kscan_gpio_enable_interrupts_##n(dev);), ()) \ + kscan_gpio_enable_interrupts_##n(dev); \ for (int r = 0; r < INST_MATRIX_ROWS(n); r++) { \ for (int c = 0; c < INST_MATRIX_COLS(n); c++) { \ bool pressed = read_state[r][c]; \ @@ -224,7 +172,16 @@ static int kscan_gpio_matrix_disable(struct device *dev) { struct kscan_gpio_data_##n *data = CONTAINER_OF(work, struct kscan_gpio_data_##n, work); \ kscan_gpio_read_##n(data->dev); \ } \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (KSCAN_GPIO_CALLBACK_HANDLER(n)), ()) \ + static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ + gpio_port_pins_t pin) { \ + struct kscan_gpio_irq_callback_##n *data = \ + CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ + COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(data->work); }), ({ \ + k_delayed_work_cancel(data->work); \ + k_delayed_work_submit(data->work, \ + K_MSEC(DT_INST_PROP(n, debounce_period))); \ + })) \ + } \ static struct kscan_gpio_data_##n kscan_gpio_data_##n = { \ .rows = {[INST_MATRIX_ROWS(n) - 1] = NULL}, .cols = {[INST_MATRIX_COLS(n) - 1] = NULL}}; \ static int kscan_gpio_configure_##n(struct device *dev, kscan_callback_t callback) { \ @@ -235,8 +192,13 @@ static int kscan_gpio_matrix_disable(struct device *dev) { data->callback = callback; \ return 0; \ }; \ - KSCAN_GPIO_MATRIX_ENABLE(n) \ - KSCAN_GPIO_MATRIX_DISABLE(n) \ + static int kscan_gpio_enable_##n(struct device *dev) { \ + int err = kscan_gpio_enable_interrupts_##n(dev); \ + if (err) { \ + return err; \ + } \ + return kscan_gpio_read_##n(dev); \ + }; \ static int kscan_gpio_init_##n(struct device *dev) { \ struct kscan_gpio_data_##n *data = dev->driver_data; \ int err; \ @@ -253,21 +215,16 @@ static int kscan_gpio_matrix_disable(struct device *dev) { LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ return err; \ } \ - COND_CODE_0( \ - ZMK_KSCAN_MATRIX_POLLING, \ - (irq_callbacks_##n[i].work = &data->work; \ - gpio_init_callback(&irq_callbacks_##n[i].callback, \ - kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ - err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ - if (err) { \ - LOG_ERR("Error adding the callback to the column device"); \ - return err; \ - }), \ - ()) \ + irq_callbacks_##n[i].work = &data->work; \ + gpio_init_callback(&irq_callbacks_##n[i].callback, \ + kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ + err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ + if (err) { \ + LOG_ERR("Error adding the callback to the column device"); \ + return err; \ + } \ } \ struct device **output_devices = kscan_gpio_output_devices_##n(dev); \ - COND_CODE_1(ZMK_KSCAN_MATRIX_POLLING, \ - (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ const struct kscan_gpio_item_config *out_cfg = &kscan_gpio_output_configs_##n(dev)[o]; \ output_devices[o] = device_get_binding(out_cfg->label); \ @@ -290,8 +247,8 @@ static int kscan_gpio_matrix_disable(struct device *dev) { } \ static const struct kscan_driver_api gpio_driver_api_##n = { \ .config = kscan_gpio_configure_##n, \ - .enable_callback = kscan_gpio_matrix_enable, \ - .disable_callback = kscan_gpio_matrix_disable, \ + .enable_callback = kscan_gpio_enable_##n, \ + .disable_callback = kscan_gpio_disable_interrupts_##n, \ }; \ static const struct kscan_gpio_config_##n kscan_gpio_config_##n = { \ .rows = {UTIL_LISTIFY(INST_MATRIX_ROWS(n), _KSCAN_GPIO_ROW_CFG_INIT, n)}, \ From b1dce208f8accab56c7864e01cff70a88bc39b3f Mon Sep 17 00:00:00 2001 From: Jason Chestnut Date: Fri, 25 Sep 2020 11:29:21 -0400 Subject: [PATCH 115/353] Add matrix polling logic to matrix GPIO driver. --- app/drivers/zephyr/Kconfig | 2 +- app/drivers/zephyr/kscan_gpio_matrix.c | 65 +++++++++++++++++++------- 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/app/drivers/zephyr/Kconfig b/app/drivers/zephyr/Kconfig index c5ff3a66..0534cab2 100644 --- a/app/drivers/zephyr/Kconfig +++ b/app/drivers/zephyr/Kconfig @@ -7,7 +7,7 @@ if ZMK_KSCAN_GPIO_DRIVER config ZMK_KSCAN_MATRIX_POLLING bool "Poll for key event triggers instead of using interrupts on matrix boards." - default y + default n config ZMK_KSCAN_DIRECT_POLLING bool "Poll for key event triggers instead of using interrupts on direct wired boards." diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index 634f694c..8c6cabd8 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -31,7 +31,8 @@ struct kscan_gpio_item_config { #define _KSCAN_GPIO_ROW_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, row_gpios, idx) #define _KSCAN_GPIO_COL_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, col_gpios, idx) -static int kscan_gpio_config_interrupts(struct device **devices, +COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, +(static int kscan_gpio_config_interrupts(struct device **devices, const struct kscan_gpio_item_config *configs, size_t len, gpio_flags_t flags) { for (int i = 0; i < len; i++) { @@ -47,7 +48,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, } return 0; -} +}), ()) + #define INST_MATRIX_ROWS(n) DT_INST_PROP_LEN(n, row_gpios) #define INST_MATRIX_COLS(n) DT_INST_PROP_LEN(n, col_gpios) #define INST_OUTPUT_LEN(n) \ @@ -69,6 +71,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, }; \ struct kscan_gpio_data_##n { \ kscan_callback_t callback; \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), (struct k_timer poll_timer;)) \ struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ struct device *rows[INST_MATRIX_ROWS(n)]; \ @@ -96,16 +99,17 @@ static int kscan_gpio_config_interrupts(struct device **devices, return ( \ COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ } \ - static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ - } \ - static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + } \ + static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ GPIO_INT_DISABLE); \ - } \ + }), ()) \ static void kscan_gpio_set_output_state_##n(struct device *dev, int value) { \ for (int i = 0; i < INST_OUTPUT_LEN(n); i++) { \ struct device *in_dev = kscan_gpio_output_devices_##n(dev)[i]; \ @@ -128,7 +132,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, /* Disable our interrupts temporarily while we scan, to avoid */ \ /* re-entry while we iterate columns and set them active one by one */ \ /* to get pressed state for each matrix cell. */ \ - kscan_gpio_disable_interrupts_##n(dev); \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (kscan_gpio_disable_interrupts_##n(dev);),()) \ kscan_gpio_set_output_state_##n(dev, 0); \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ struct device *out_dev = kscan_gpio_output_devices_##n(dev)[o]; \ @@ -143,10 +148,11 @@ static int kscan_gpio_config_interrupts(struct device **devices, } \ gpio_pin_set(out_dev, out_cfg->pin, 0); \ } \ - /* Set all our outputs as active again, then re-enable interrupts, */ \ - /* so we can trigger interrupts again for future press/release */ \ + /* Set all our outputs as active again. */ \ kscan_gpio_set_output_state_##n(dev, 1); \ - kscan_gpio_enable_interrupts_##n(dev); \ + /*Re-enable interrupts so that they can be triggered again for future press/release*/ \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (kscan_gpio_enable_interrupts_##n(dev);), ()) \ for (int r = 0; r < INST_MATRIX_ROWS(n); r++) { \ for (int c = 0; c < INST_MATRIX_COLS(n); c++) { \ bool pressed = read_state[r][c]; \ @@ -190,15 +196,34 @@ static int kscan_gpio_config_interrupts(struct device **devices, return -EINVAL; \ } \ data->callback = callback; \ + LOG_DBG("Configured GPIO %d", n); \ return 0; \ }; \ static int kscan_gpio_enable_##n(struct device *dev) { \ - int err = kscan_gpio_enable_interrupts_##n(dev); \ - if (err) { \ - return err; \ - } \ - return kscan_gpio_read_##n(dev); \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (int err = kscan_gpio_enable_interrupts_##n(dev); \ + if (err) { \ + return err; \ + } \ + return kscan_gpio_read_##n(dev);), \ + (struct kscan_gpio_data_##n *data = dev->driver_data; \ + k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); \ + return 0;)) \ }; \ + static int kscan_gpio_disable_##n(struct device *dev) { \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (return kscan_gpio_disable_interrupts_##n(dev);), \ + (struct kscan_gpio_data_##n *data = dev->driver_data; \ + k_timer_stop(&data->poll_timer); \ + return 0;)) \ + }; \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), \ + (static void kscan_gpio_timer_handler(struct k_timer *timer) { \ + struct kscan_gpio_data_##n *data = \ + CONTAINER_OF(timer, struct kscan_gpio_data_##n, poll_timer); \ + k_work_submit(&data->work.work); \ + LOG_DBG("Submitted work in timer handler."); \ + })) \ static int kscan_gpio_init_##n(struct device *dev) { \ struct kscan_gpio_data_##n *data = dev->driver_data; \ int err; \ @@ -214,6 +239,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, if (err) { \ LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ return err; \ + } else { \ + LOG_DBG("Configured pin %d on %s for input", in_cfg->pin, in_cfg->label); \ } \ irq_callbacks_##n[i].work = &data->work; \ gpio_init_callback(&irq_callbacks_##n[i].callback, \ @@ -241,6 +268,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, } \ } \ data->dev = dev; \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), \ + (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);)) \ (COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work_init), (k_delayed_work_init)))( \ &data->work, kscan_gpio_work_handler_##n); \ return 0; \ @@ -248,7 +277,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, static const struct kscan_driver_api gpio_driver_api_##n = { \ .config = kscan_gpio_configure_##n, \ .enable_callback = kscan_gpio_enable_##n, \ - .disable_callback = kscan_gpio_disable_interrupts_##n, \ + .disable_callback = kscan_gpio_disable_##n, \ }; \ static const struct kscan_gpio_config_##n kscan_gpio_config_##n = { \ .rows = {UTIL_LISTIFY(INST_MATRIX_ROWS(n), _KSCAN_GPIO_ROW_CFG_INIT, n)}, \ From cca8337f0562afbfb11de5af92ba5dc3c9334991 Mon Sep 17 00:00:00 2001 From: Jason Chestnut Date: Wed, 23 Sep 2020 16:05:29 -0400 Subject: [PATCH 116/353] Add support to GPIO matrix driver for matrix polling, rather than interrupt-based IO. - Add ZMK_KSCAN_MATRIX_POLLING config flag to Kconfig - Update matrix driver code to use the above flag to conditionally add the handling code for polling operations. --- app/boards/arm/planck/Kconfig.defconfig | 3 + .../clueboard_california/Kconfig.defconfig | 2 +- app/drivers/zephyr/Kconfig | 8 ++- app/drivers/zephyr/kscan_gpio_direct.c | 18 +++--- app/drivers/zephyr/kscan_gpio_matrix.c | 63 +++++++++++++------ 5 files changed, 64 insertions(+), 30 deletions(-) diff --git a/app/boards/arm/planck/Kconfig.defconfig b/app/boards/arm/planck/Kconfig.defconfig index 6f5bf525..913c1c13 100644 --- a/app/boards/arm/planck/Kconfig.defconfig +++ b/app/boards/arm/planck/Kconfig.defconfig @@ -11,4 +11,7 @@ config ZMK_KEYBOARD_NAME config ZMK_USB default y +config ZMK_KSCAN_MATRIX_POLLING + default y + endif # BOARD_PLANCK_REV6 diff --git a/app/boards/shields/clueboard_california/Kconfig.defconfig b/app/boards/shields/clueboard_california/Kconfig.defconfig index 2408f9ff..e101ea76 100644 --- a/app/boards/shields/clueboard_california/Kconfig.defconfig +++ b/app/boards/shields/clueboard_california/Kconfig.defconfig @@ -8,7 +8,7 @@ config ZMK_KEYBOARD_NAME # across A & B controllers, and STM32F303CCT6 can't enable # interrutps for multiple controllers for the same "line" # for the external interrupts. -config ZMK_KSCAN_GPIO_POLLING +config ZMK_KSCAN_DIRECT_POLLING default y endif diff --git a/app/drivers/zephyr/Kconfig b/app/drivers/zephyr/Kconfig index 0237846a..0534cab2 100644 --- a/app/drivers/zephyr/Kconfig +++ b/app/drivers/zephyr/Kconfig @@ -5,10 +5,14 @@ config ZMK_KSCAN_GPIO_DRIVER if ZMK_KSCAN_GPIO_DRIVER -config ZMK_KSCAN_GPIO_POLLING - bool "Poll for key event triggers instead of using interrupts" +config ZMK_KSCAN_MATRIX_POLLING + bool "Poll for key event triggers instead of using interrupts on matrix boards." default n +config ZMK_KSCAN_DIRECT_POLLING + bool "Poll for key event triggers instead of using interrupts on direct wired boards." + default n + endif config ZMK_KSCAN_INIT_PRIORITY diff --git a/app/drivers/zephyr/kscan_gpio_direct.c b/app/drivers/zephyr/kscan_gpio_direct.c index 1e5ab59e..7ba3399b 100644 --- a/app/drivers/zephyr/kscan_gpio_direct.c +++ b/app/drivers/zephyr/kscan_gpio_direct.c @@ -33,9 +33,9 @@ struct kscan_gpio_config { }; struct kscan_gpio_data { -#if defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) +#if defined(ZMK_KSCAN_DIRECT_POLLING) struct k_timer poll_timer; -#endif /* defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ +#endif /* defined(ZMK_KSCAN_DIRECT_POLLING) */ kscan_callback_t callback; union work_reference work; struct device *dev; @@ -53,7 +53,7 @@ static const struct kscan_gpio_item_config *kscan_gpio_input_configs(struct devi return cfg->inputs; } -#if !defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) +#if !defined(ZMK_KSCAN_DIRECT_POLLING) struct kscan_gpio_irq_callback { union work_reference *work; @@ -101,7 +101,7 @@ static void kscan_gpio_irq_callback_handler(struct device *dev, struct gpio_call } } -#else /* !defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ +#else /* !defined(ZMK_KSCAN_DIRECT_POLLING) */ static void kscan_gpio_timer_handler(struct k_timer *timer) { struct kscan_gpio_data *data = CONTAINER_OF(timer, struct kscan_gpio_data, poll_timer); @@ -120,7 +120,7 @@ static int kscan_gpio_direct_disable(struct device *dev) { return 0; } -#endif /* defined(CONFIG_ZMK_KSCAN_GPIO_POLLING) */ +#endif /* defined(ZMK_KSCAN_DIRECT_POLLING) */ static int kscan_gpio_direct_configure(struct device *dev, kscan_callback_t callback) { struct kscan_gpio_data *data = dev->driver_data; @@ -173,7 +173,7 @@ static const struct kscan_driver_api gpio_driver_api = { #define INST_INPUT_LEN(n) DT_INST_PROP_LEN(n, input_gpios) #define GPIO_INST_INIT(n) \ - COND_CODE_0(CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + COND_CODE_0(ZMK_KSCAN_DIRECT_POLLING, \ (static struct kscan_gpio_irq_callback irq_callbacks_##n[INST_INPUT_LEN(n)];), ()) \ static struct kscan_gpio_data kscan_gpio_data_##n = { \ .inputs = {[INST_INPUT_LEN(n) - 1] = NULL}}; \ @@ -195,7 +195,7 @@ static const struct kscan_driver_api gpio_driver_api = { return err; \ } \ COND_CODE_0( \ - CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + ZMK_KSCAN_DIRECT_POLLING, \ (irq_callbacks_##n[i].work = &data->work; \ irq_callbacks_##n[i].debounce_period = cfg->debounce_period; \ gpio_init_callback(&irq_callbacks_##n[i].callback, \ @@ -208,7 +208,7 @@ static const struct kscan_driver_api gpio_driver_api = { ()) \ } \ data->dev = dev; \ - COND_CODE_1(CONFIG_ZMK_KSCAN_GPIO_POLLING, \ + COND_CODE_1(ZMK_KSCAN_DIRECT_POLLING, \ (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ if (cfg->debounce_period > 0) { \ k_delayed_work_init(&data->work.delayed, kscan_gpio_work_handler); \ @@ -227,4 +227,4 @@ static const struct kscan_driver_api gpio_driver_api = { DT_INST_FOREACH_STATUS_OKAY(GPIO_INST_INIT) -#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ \ No newline at end of file +#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index 634f694c..72709ba0 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -31,7 +31,8 @@ struct kscan_gpio_item_config { #define _KSCAN_GPIO_ROW_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, row_gpios, idx) #define _KSCAN_GPIO_COL_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, col_gpios, idx) -static int kscan_gpio_config_interrupts(struct device **devices, +COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, +(static int kscan_gpio_config_interrupts(struct device **devices, const struct kscan_gpio_item_config *configs, size_t len, gpio_flags_t flags) { for (int i = 0; i < len; i++) { @@ -47,7 +48,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, } return 0; -} +}), ()) + #define INST_MATRIX_ROWS(n) DT_INST_PROP_LEN(n, row_gpios) #define INST_MATRIX_COLS(n) DT_INST_PROP_LEN(n, col_gpios) #define INST_OUTPUT_LEN(n) \ @@ -69,6 +71,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, }; \ struct kscan_gpio_data_##n { \ kscan_callback_t callback; \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), (struct k_timer poll_timer;)) \ struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ struct device *rows[INST_MATRIX_ROWS(n)]; \ @@ -96,16 +99,17 @@ static int kscan_gpio_config_interrupts(struct device **devices, return ( \ COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ } \ - static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ - } \ - static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + } \ + static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ GPIO_INT_DISABLE); \ - } \ + }), ()) \ static void kscan_gpio_set_output_state_##n(struct device *dev, int value) { \ for (int i = 0; i < INST_OUTPUT_LEN(n); i++) { \ struct device *in_dev = kscan_gpio_output_devices_##n(dev)[i]; \ @@ -128,7 +132,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, /* Disable our interrupts temporarily while we scan, to avoid */ \ /* re-entry while we iterate columns and set them active one by one */ \ /* to get pressed state for each matrix cell. */ \ - kscan_gpio_disable_interrupts_##n(dev); \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (kscan_gpio_disable_interrupts_##n(dev);),()) \ kscan_gpio_set_output_state_##n(dev, 0); \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ struct device *out_dev = kscan_gpio_output_devices_##n(dev)[o]; \ @@ -143,10 +148,11 @@ static int kscan_gpio_config_interrupts(struct device **devices, } \ gpio_pin_set(out_dev, out_cfg->pin, 0); \ } \ - /* Set all our outputs as active again, then re-enable interrupts, */ \ - /* so we can trigger interrupts again for future press/release */ \ + /* Set all our outputs as active again. */ \ kscan_gpio_set_output_state_##n(dev, 1); \ - kscan_gpio_enable_interrupts_##n(dev); \ + /*Re-enable interrupts so that they can be triggered again for future press/release*/ \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (kscan_gpio_enable_interrupts_##n(dev);), ()) \ for (int r = 0; r < INST_MATRIX_ROWS(n); r++) { \ for (int c = 0; c < INST_MATRIX_COLS(n); c++) { \ bool pressed = read_state[r][c]; \ @@ -193,12 +199,29 @@ static int kscan_gpio_config_interrupts(struct device **devices, return 0; \ }; \ static int kscan_gpio_enable_##n(struct device *dev) { \ - int err = kscan_gpio_enable_interrupts_##n(dev); \ - if (err) { \ - return err; \ - } \ - return kscan_gpio_read_##n(dev); \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (int err = kscan_gpio_enable_interrupts_##n(dev); \ + if (err) { \ + return err; \ + } \ + return kscan_gpio_read_##n(dev);), \ + (struct kscan_gpio_data_##n *data = dev->driver_data; \ + k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); \ + return 0;)) \ }; \ + static int kscan_gpio_disable_##n(struct device *dev) { \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + (return kscan_gpio_disable_interrupts_##n(dev);), \ + (struct kscan_gpio_data_##n *data = dev->driver_data; \ + k_timer_stop(&data->poll_timer); \ + return 0;)) \ + }; \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), \ + (static void kscan_gpio_timer_handler(struct k_timer *timer) { \ + struct kscan_gpio_data_##n *data = \ + CONTAINER_OF(timer, struct kscan_gpio_data_##n, poll_timer); \ + k_work_submit(&data->work.work); \ + })) \ static int kscan_gpio_init_##n(struct device *dev) { \ struct kscan_gpio_data_##n *data = dev->driver_data; \ int err; \ @@ -214,6 +237,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, if (err) { \ LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ return err; \ + } else { \ + LOG_DBG("Configured pin %d on %s for input", in_cfg->pin, in_cfg->label); \ } \ irq_callbacks_##n[i].work = &data->work; \ gpio_init_callback(&irq_callbacks_##n[i].callback, \ @@ -241,6 +266,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, } \ } \ data->dev = dev; \ + COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), \ + (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);)) \ (COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work_init), (k_delayed_work_init)))( \ &data->work, kscan_gpio_work_handler_##n); \ return 0; \ @@ -248,7 +275,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, static const struct kscan_driver_api gpio_driver_api_##n = { \ .config = kscan_gpio_configure_##n, \ .enable_callback = kscan_gpio_enable_##n, \ - .disable_callback = kscan_gpio_disable_interrupts_##n, \ + .disable_callback = kscan_gpio_disable_##n, \ }; \ static const struct kscan_gpio_config_##n kscan_gpio_config_##n = { \ .rows = {UTIL_LISTIFY(INST_MATRIX_ROWS(n), _KSCAN_GPIO_ROW_CFG_INIT, n)}, \ From 7f7c7037b04c78d8a3b74557197e0a2996eb980e Mon Sep 17 00:00:00 2001 From: Noah Thornton Date: Sat, 26 Sep 2020 11:59:12 -0700 Subject: [PATCH 117/353] Add quefrency shield --- .github/workflows/build.yml | 2 + .../shields/quefrency/Kconfig.defconfig | 17 +++++++ app/boards/shields/quefrency/Kconfig.shield | 8 +++ app/boards/shields/quefrency/quefrency.conf | 0 app/boards/shields/quefrency/quefrency.dtsi | 29 +++++++++++ app/boards/shields/quefrency/quefrency.keymap | 51 +++++++++++++++++++ .../shields/quefrency/quefrency_left.conf | 2 + .../shields/quefrency/quefrency_left.overlay | 34 +++++++++++++ .../shields/quefrency/quefrency_right.conf | 2 + .../shields/quefrency/quefrency_right.overlay | 42 +++++++++++++++ 10 files changed, 187 insertions(+) create mode 100644 app/boards/shields/quefrency/Kconfig.defconfig create mode 100644 app/boards/shields/quefrency/Kconfig.shield create mode 100644 app/boards/shields/quefrency/quefrency.conf create mode 100644 app/boards/shields/quefrency/quefrency.dtsi create mode 100644 app/boards/shields/quefrency/quefrency.keymap create mode 100644 app/boards/shields/quefrency/quefrency_left.conf create mode 100644 app/boards/shields/quefrency/quefrency_left.overlay create mode 100644 app/boards/shields/quefrency/quefrency_right.conf create mode 100644 app/boards/shields/quefrency/quefrency_right.overlay diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9af3d22b..454ab796 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,6 +21,8 @@ jobs: - romac - romac_plus - settings_reset + - quefrency_left + - quefrency_right include: - board: proton_c shield: clueboard_california diff --git a/app/boards/shields/quefrency/Kconfig.defconfig b/app/boards/shields/quefrency/Kconfig.defconfig new file mode 100644 index 00000000..c383340d --- /dev/null +++ b/app/boards/shields/quefrency/Kconfig.defconfig @@ -0,0 +1,17 @@ +#Copyright (c) 2020 Noah Thornton +#SPDX-License-Identifier: MIT + + +if SHIELD_QUEFRENCY_LEFT + +config ZMK_KEYBOARD_NAME + default "Quefrency Left" + +endif + +if SHIELD_QUEFRENCY_RIGHT + +config ZMK_KEYBOARD_NAME + default "Quefrency Right" + +endif diff --git a/app/boards/shields/quefrency/Kconfig.shield b/app/boards/shields/quefrency/Kconfig.shield new file mode 100644 index 00000000..d56a1b22 --- /dev/null +++ b/app/boards/shields/quefrency/Kconfig.shield @@ -0,0 +1,8 @@ +# Copyright (c) 2020 Noah Thornton +# SPDX-License-Identifier: MIT + +config SHIELD_QUEFRENCY_LEFT + def_bool $(shields_list_contains,quefrency_left) + +config SHIELD_QUEFRENCY_RIGHT + def_bool $(shields_list_contains,quefrency_right) diff --git a/app/boards/shields/quefrency/quefrency.conf b/app/boards/shields/quefrency/quefrency.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/quefrency/quefrency.dtsi b/app/boards/shields/quefrency/quefrency.dtsi new file mode 100644 index 00000000..76f9b2e4 --- /dev/null +++ b/app/boards/shields/quefrency/quefrency.dtsi @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2020 Noah Thornton + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <15>; + rows = <6>; + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) /**/ RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,12) RC(0,14) RC(5,13) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) /**/RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) RC(1,12) RC(1,13) RC(1,14) RC(5,14) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) /**/ RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,12) RC(2,14) RC(2,13) +RC(3,0) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) /**/ RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,12) RC(3,13) RC(3,14) RC(3,11) +RC(4,0) RC(4,1) RC(4,2) RC(4,4) RC(4,6) /**/ RC(4,7) RC(4,10) RC(4,11) RC(4,12) RC(4,13) RC(4,14) RC(4,9) + >; + }; +}; + diff --git a/app/boards/shields/quefrency/quefrency.keymap b/app/boards/shields/quefrency/quefrency.keymap new file mode 100644 index 00000000..1eb7caa8 --- /dev/null +++ b/app/boards/shields/quefrency/quefrency.keymap @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2020 Noah Thornton + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + +// ---------------------------------------------- ----------------------------------------------------- +// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BKSPC | ` | +// | TAB | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | DEL | +// | LCTRL | A | S | D | F | G | | H | J | K | L | ; | ' | ENTER | PGUP | +// | SHIFT | Z | X | C | V | B | | N | M | , | . | / | RSHFT | UP | PGDN | +// | LCTRL | LGUI | LALT | SPACE | FN | | SPACE | RALT | FN | RCTRL | LFT | DWN | RGHT | +// ------------------------------------------- ------------------------------------------------------ + + default_layer { + bindings = < + &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 /**/ &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp MINUS &kp EQL &kp BKSP &kp GRAV + &kp TAB &kp Q &kp W &kp E &kp R &kp T /**/ &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH &kp HOME + &kp LCTL &kp A &kp S &kp D &kp F &kp G /**/ &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT &kp RET &kp PGUP + &kp LSFT &kp Z &kp X &kp C &kp V &kp B /**/ &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RSFT &kp UARW &kp PGDN + &kp LCTL &kp LGUI &kp LALT &kp SPC &mo 1 /**/ &kp SPC &kp RALT &mo 1 &kp RCTL &kp LARW &kp DARW &kp RARW + >; + }; + +// ---------------------------------------------- ----------------------------------------------------- +// |BT_CLR| F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |BT_CLR| +// | | BT-0 | BT-1| BT-2 | | | | | | | | | | | | | +// | | | | | | | | | | | | | | | | +// | | | | | | | | | | | | | | | | +// | | | | | | | | | | | | | | +// ------------------------------------------- ------------------------------------------------------ + + fn_layer { + bindings = < + &bt BT_CLR &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 /**/ &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &trans &bt BT_CLR + &trans &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &trans &trans /**/ &trans &trans &trans &trans &trans &trans &trans &trans &trans + &trans &trans &trans &trans &trans &trans /**/ &trans &trans &trans &trans &trans &trans &trans &trans + &trans &trans &trans &trans &trans &trans /**/ &trans &trans &trans &trans &trans &trans &trans &trans + &trans &trans &trans &trans &trans /**/ &trans &trans &trans &trans &trans &trans &trans + >; + }; + }; +}; diff --git a/app/boards/shields/quefrency/quefrency_left.conf b/app/boards/shields/quefrency/quefrency_left.conf new file mode 100644 index 00000000..1e028a78 --- /dev/null +++ b/app/boards/shields/quefrency/quefrency_left.conf @@ -0,0 +1,2 @@ +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y diff --git a/app/boards/shields/quefrency/quefrency_left.overlay b/app/boards/shields/quefrency/quefrency_left.overlay new file mode 100644 index 00000000..a62ac8f7 --- /dev/null +++ b/app/boards/shields/quefrency/quefrency_left.overlay @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020 Noah Thornton + * + * SPDX-License-Identifier: MIT + */ + +#include "quefrency.dtsi" + +/ { + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + + + col-gpios + = <&pro_micro_a 2 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 10 GPIO_ACTIVE_HIGH> + ; + + row-gpios + = <&pro_micro_a 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + }; +}; diff --git a/app/boards/shields/quefrency/quefrency_right.conf b/app/boards/shields/quefrency/quefrency_right.conf new file mode 100644 index 00000000..990cf7c0 --- /dev/null +++ b/app/boards/shields/quefrency/quefrency_right.conf @@ -0,0 +1,2 @@ +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL=y diff --git a/app/boards/shields/quefrency/quefrency_right.overlay b/app/boards/shields/quefrency/quefrency_right.overlay new file mode 100644 index 00000000..f4037ced --- /dev/null +++ b/app/boards/shields/quefrency/quefrency_right.overlay @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2020 Noah Thornton + * + * SPDX-License-Identifier: MIT + */ + +#include "quefrency.dtsi" + +&default_transform { + col-offset = <7>; +}; + +/ { + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + + + + col-gpios + = <&pro_micro_a 2 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 10 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 5 GPIO_ACTIVE_HIGH> + ; + + row-gpios + = <&pro_micro_a 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + }; +}; From 24b638dfa37211fc5f0c09844d38760bae5eda5f Mon Sep 17 00:00:00 2001 From: Noah Thornton Date: Sat, 26 Sep 2020 21:09:19 -0500 Subject: [PATCH 118/353] Apply suggestions from code review Revise copyright header Co-authored-by: Pete Johanson --- app/boards/shields/quefrency/Kconfig.defconfig | 2 +- app/boards/shields/quefrency/Kconfig.shield | 2 +- app/boards/shields/quefrency/quefrency.dtsi | 3 +-- app/boards/shields/quefrency/quefrency.keymap | 2 +- app/boards/shields/quefrency/quefrency_left.overlay | 2 +- app/boards/shields/quefrency/quefrency_right.overlay | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/boards/shields/quefrency/Kconfig.defconfig b/app/boards/shields/quefrency/Kconfig.defconfig index c383340d..2b00cb62 100644 --- a/app/boards/shields/quefrency/Kconfig.defconfig +++ b/app/boards/shields/quefrency/Kconfig.defconfig @@ -1,4 +1,4 @@ -#Copyright (c) 2020 Noah Thornton +#Copyright (c) 2020 The ZMK Contributors #SPDX-License-Identifier: MIT diff --git a/app/boards/shields/quefrency/Kconfig.shield b/app/boards/shields/quefrency/Kconfig.shield index d56a1b22..d205e58f 100644 --- a/app/boards/shields/quefrency/Kconfig.shield +++ b/app/boards/shields/quefrency/Kconfig.shield @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Noah Thornton +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT config SHIELD_QUEFRENCY_LEFT diff --git a/app/boards/shields/quefrency/quefrency.dtsi b/app/boards/shields/quefrency/quefrency.dtsi index 76f9b2e4..74ddc33d 100644 --- a/app/boards/shields/quefrency/quefrency.dtsi +++ b/app/boards/shields/quefrency/quefrency.dtsi @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Noah Thornton + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ @@ -26,4 +26,3 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,4) RC(4,6) /**/ RC(4,7) >; }; }; - diff --git a/app/boards/shields/quefrency/quefrency.keymap b/app/boards/shields/quefrency/quefrency.keymap index 1eb7caa8..21c5ed40 100644 --- a/app/boards/shields/quefrency/quefrency.keymap +++ b/app/boards/shields/quefrency/quefrency.keymap @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Noah Thornton + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/quefrency/quefrency_left.overlay b/app/boards/shields/quefrency/quefrency_left.overlay index a62ac8f7..a1d205e3 100644 --- a/app/boards/shields/quefrency/quefrency_left.overlay +++ b/app/boards/shields/quefrency/quefrency_left.overlay @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Noah Thornton + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/quefrency/quefrency_right.overlay b/app/boards/shields/quefrency/quefrency_right.overlay index f4037ced..3876144e 100644 --- a/app/boards/shields/quefrency/quefrency_right.overlay +++ b/app/boards/shields/quefrency/quefrency_right.overlay @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Noah Thornton + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ From 9afd44b9d4a6790d315f2824ca6d21953804b1af Mon Sep 17 00:00:00 2001 From: Noah Thornton Date: Sat, 26 Sep 2020 22:10:14 -0500 Subject: [PATCH 119/353] Provide context on Quefrency physical PCB layouts The Quefrency board has two options for each left and right half, resulting in 4 unique combinations. This has been noted in the overlay and dtsi files. --- app/boards/shields/quefrency/quefrency.dtsi | 4 ++++ app/boards/shields/quefrency/quefrency_left.overlay | 3 +++ app/boards/shields/quefrency/quefrency_right.overlay | 3 +++ 3 files changed, 10 insertions(+) diff --git a/app/boards/shields/quefrency/quefrency.dtsi b/app/boards/shields/quefrency/quefrency.dtsi index 74ddc33d..5f1e9086 100644 --- a/app/boards/shields/quefrency/quefrency.dtsi +++ b/app/boards/shields/quefrency/quefrency.dtsi @@ -13,6 +13,10 @@ zmk,matrix_transform = &default_transform; }; + /* + * This transform correspondsto the 60% left without macro keypad and 65% right, even this + * combination of PCBs can have keys in different locations based on configuration. + */ default_transform: keymap_transform_0 { compatible = "zmk,matrix-transform"; columns = <15>; diff --git a/app/boards/shields/quefrency/quefrency_left.overlay b/app/boards/shields/quefrency/quefrency_left.overlay index a1d205e3..a385cc58 100644 --- a/app/boards/shields/quefrency/quefrency_left.overlay +++ b/app/boards/shields/quefrency/quefrency_left.overlay @@ -7,6 +7,9 @@ #include "quefrency.dtsi" / { + /* This kscan is for the 60% left half without macro keys the + * macro pad layout may require different column and row pins + */ kscan0: kscan { compatible = "zmk,kscan-gpio-matrix"; label = "KSCAN"; diff --git a/app/boards/shields/quefrency/quefrency_right.overlay b/app/boards/shields/quefrency/quefrency_right.overlay index 3876144e..53e0f77c 100644 --- a/app/boards/shields/quefrency/quefrency_right.overlay +++ b/app/boards/shields/quefrency/quefrency_right.overlay @@ -12,6 +12,9 @@ / { + /* This kscan is for the 65% right half the 60% right half + * may require different column and row pins + */ kscan0: kscan { compatible = "zmk,kscan-gpio-matrix"; label = "KSCAN"; From 9392c4f9ffbe815a44d007cf85a2a17955f46edb Mon Sep 17 00:00:00 2001 From: jason Date: Sun, 27 Sep 2020 21:27:30 -0400 Subject: [PATCH 120/353] Fix preprocessor flag issues for pull request. --- app/drivers/zephyr/kscan_gpio_direct.c | 16 ++++++++-------- app/drivers/zephyr/kscan_gpio_matrix.c | 23 ++++++++++++----------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/app/drivers/zephyr/kscan_gpio_direct.c b/app/drivers/zephyr/kscan_gpio_direct.c index 7ba3399b..c3414fbf 100644 --- a/app/drivers/zephyr/kscan_gpio_direct.c +++ b/app/drivers/zephyr/kscan_gpio_direct.c @@ -33,9 +33,9 @@ struct kscan_gpio_config { }; struct kscan_gpio_data { -#if defined(ZMK_KSCAN_DIRECT_POLLING) +#if defined(CONFIG_ZMK_KSCAN_DIRECT_POLLING) struct k_timer poll_timer; -#endif /* defined(ZMK_KSCAN_DIRECT_POLLING) */ +#endif /* defined(CONFIG_ZMK_KSCAN_DIRECT_POLLING) */ kscan_callback_t callback; union work_reference work; struct device *dev; @@ -53,7 +53,7 @@ static const struct kscan_gpio_item_config *kscan_gpio_input_configs(struct devi return cfg->inputs; } -#if !defined(ZMK_KSCAN_DIRECT_POLLING) +#if !defined(CONFIG_ZMK_KSCAN_DIRECT_POLLING) struct kscan_gpio_irq_callback { union work_reference *work; @@ -101,7 +101,7 @@ static void kscan_gpio_irq_callback_handler(struct device *dev, struct gpio_call } } -#else /* !defined(ZMK_KSCAN_DIRECT_POLLING) */ +#else /* !defined(CONFIG_ZMK_KSCAN_DIRECT_POLLING) */ static void kscan_gpio_timer_handler(struct k_timer *timer) { struct kscan_gpio_data *data = CONTAINER_OF(timer, struct kscan_gpio_data, poll_timer); @@ -120,7 +120,7 @@ static int kscan_gpio_direct_disable(struct device *dev) { return 0; } -#endif /* defined(ZMK_KSCAN_DIRECT_POLLING) */ +#endif /* defined(CONFIG_ZMK_KSCAN_DIRECT_POLLING) */ static int kscan_gpio_direct_configure(struct device *dev, kscan_callback_t callback) { struct kscan_gpio_data *data = dev->driver_data; @@ -173,7 +173,7 @@ static const struct kscan_driver_api gpio_driver_api = { #define INST_INPUT_LEN(n) DT_INST_PROP_LEN(n, input_gpios) #define GPIO_INST_INIT(n) \ - COND_CODE_0(ZMK_KSCAN_DIRECT_POLLING, \ + COND_CODE_0(CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ (static struct kscan_gpio_irq_callback irq_callbacks_##n[INST_INPUT_LEN(n)];), ()) \ static struct kscan_gpio_data kscan_gpio_data_##n = { \ .inputs = {[INST_INPUT_LEN(n) - 1] = NULL}}; \ @@ -195,7 +195,7 @@ static const struct kscan_driver_api gpio_driver_api = { return err; \ } \ COND_CODE_0( \ - ZMK_KSCAN_DIRECT_POLLING, \ + CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ (irq_callbacks_##n[i].work = &data->work; \ irq_callbacks_##n[i].debounce_period = cfg->debounce_period; \ gpio_init_callback(&irq_callbacks_##n[i].callback, \ @@ -208,7 +208,7 @@ static const struct kscan_driver_api gpio_driver_api = { ()) \ } \ data->dev = dev; \ - COND_CODE_1(ZMK_KSCAN_DIRECT_POLLING, \ + COND_CODE_1(CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ if (cfg->debounce_period > 0) { \ k_delayed_work_init(&data->work.delayed, kscan_gpio_work_handler); \ diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index e581d33e..b940c6da 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -31,8 +31,8 @@ struct kscan_gpio_item_config { #define _KSCAN_GPIO_ROW_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, row_gpios, idx) #define _KSCAN_GPIO_COL_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, col_gpios, idx) -COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, -(static int kscan_gpio_config_interrupts(struct device **devices, +#ifdef CONFIG_ZMK_KSCAN_MATRIX_POLLING +static int kscan_gpio_config_interrupts(struct device **devices, const struct kscan_gpio_item_config *configs, size_t len, gpio_flags_t flags) { for (int i = 0; i < len; i++) { @@ -48,7 +48,8 @@ COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, } return 0; -}), ()) +} +#endif #define INST_MATRIX_ROWS(n) DT_INST_PROP_LEN(n, row_gpios) #define INST_MATRIX_COLS(n) DT_INST_PROP_LEN(n, col_gpios) @@ -71,7 +72,7 @@ COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, }; \ struct kscan_gpio_data_##n { \ kscan_callback_t callback; \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), (struct k_timer poll_timer;)) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), (struct k_timer poll_timer;)) \ struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ struct device *rows[INST_MATRIX_ROWS(n)]; \ @@ -99,7 +100,7 @@ COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, return ( \ COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ } \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ (static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ @@ -132,7 +133,7 @@ COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, /* Disable our interrupts temporarily while we scan, to avoid */ \ /* re-entry while we iterate columns and set them active one by one */ \ /* to get pressed state for each matrix cell. */ \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ (kscan_gpio_disable_interrupts_##n(dev);),()) \ kscan_gpio_set_output_state_##n(dev, 0); \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ @@ -151,7 +152,7 @@ COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, /* Set all our outputs as active again. */ \ kscan_gpio_set_output_state_##n(dev, 1); \ /*Re-enable interrupts so that they can be triggered again for future press/release*/ \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ (kscan_gpio_enable_interrupts_##n(dev);), ()) \ for (int r = 0; r < INST_MATRIX_ROWS(n); r++) { \ for (int c = 0; c < INST_MATRIX_COLS(n); c++) { \ @@ -200,7 +201,7 @@ COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, return 0; \ }; \ static int kscan_gpio_enable_##n(struct device *dev) { \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ (int err = kscan_gpio_enable_interrupts_##n(dev); \ if (err) { \ return err; \ @@ -211,13 +212,13 @@ COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, return 0;)) \ }; \ static int kscan_gpio_disable_##n(struct device *dev) { \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ (return kscan_gpio_disable_interrupts_##n(dev);), \ (struct kscan_gpio_data_##n *data = dev->driver_data; \ k_timer_stop(&data->poll_timer); \ return 0;)) \ }; \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ (static void kscan_gpio_timer_handler(struct k_timer *timer) { \ struct kscan_gpio_data_##n *data = \ CONTAINER_OF(timer, struct kscan_gpio_data_##n, poll_timer); \ @@ -267,7 +268,7 @@ COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, } \ } \ data->dev = dev; \ - COND_CODE_0(ZMK_KSCAN_MATRIX_POLLING, (), \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);)) \ (COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work_init), (k_delayed_work_init)))( \ &data->work, kscan_gpio_work_handler_##n); \ From c2a861c0e6a731fd92368768a9b07d5feac7d374 Mon Sep 17 00:00:00 2001 From: Jason Chestnut Date: Mon, 28 Sep 2020 08:24:51 -0400 Subject: [PATCH 121/353] Modify preprocessor directives to use basic #if !defined() rather than Zephyr macros where appropriate. --- app/drivers/zephyr/kscan_gpio_matrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index b940c6da..5fa618bc 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -31,7 +31,7 @@ struct kscan_gpio_item_config { #define _KSCAN_GPIO_ROW_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, row_gpios, idx) #define _KSCAN_GPIO_COL_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, col_gpios, idx) -#ifdef CONFIG_ZMK_KSCAN_MATRIX_POLLING +#if !defined(CONFIG_ZMK_KSCAN_MATRIX_POLLING) static int kscan_gpio_config_interrupts(struct device **devices, const struct kscan_gpio_item_config *configs, size_t len, gpio_flags_t flags) { From 182a6dca1fc9b1d5e7b0d3828501d6be43ff70dd Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 29 Sep 2020 12:21:06 -0400 Subject: [PATCH 122/353] fix(bluetooth): Proper max paired/conns. * Proper max values for both split central, and non-split keyboards. --- app/Kconfig | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/Kconfig b/app/Kconfig index 61805656..ccd40da5 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -132,14 +132,28 @@ endif endif -if ZMK_BLE && (!ZMK_SPLIT_BLE || ZMK_SPLIT_BLE_ROLE_CENTRAL) +if ZMK_BLE + +if ZMK_SPLIT_BLE && ZMK_SPLIT_BLE_ROLE_CENTRAL config BT_MAX_CONN default 6 config BT_MAX_PAIRED + default 6 + +endif + +if !ZMK_SPLIT_BLE + +config BT_MAX_CONN default 5 +config BT_MAX_PAIRED + default 5 + +endif + endif endmenu From a3d0c03726a0bc607d4daab7a90dda57d4ba6a6f Mon Sep 17 00:00:00 2001 From: David Barr Date: Wed, 30 Sep 2020 16:20:41 +0100 Subject: [PATCH 123/353] rename cradios to cradio --- .DS_Store | Bin 0 -> 8196 bytes app/.DS_Store | Bin 0 -> 8196 bytes app/boards/.DS_Store | Bin 0 -> 8196 bytes app/boards/shields/.DS_Store | Bin 0 -> 8196 bytes .../{cradios => cradio}/Kconfig.defconfig | 5 +- .../{cradios => cradio}/Kconfig.shield | 4 +- .../{cradios.dtsi => cradio/cradio.dtsi} | 4 -- .../{cradios.keymap => cradio/cradio.keymap} | 0 .../cradio_left.conf} | 0 .../cradio_left.overlay} | 8 +-- .../cradio_right.conf} | 0 .../cradio_right.overlay} | 5 +- .../{cradios => cradio}/default.keymap | 0 app/boards/shields/cradios/cradios.dtsi | 67 ------------------ app/boards/shields/cradios/cradios.keymap | 18 ----- .../shields/cradios/cradios_right.overlay | 17 ----- app/boards/shields/cradios_left.conf | 2 - app/boards/shields/cradios_left.overlay | 15 ---- app/boards/shields/cradios_right.conf | 2 - 19 files changed, 6 insertions(+), 141 deletions(-) create mode 100644 .DS_Store create mode 100644 app/.DS_Store create mode 100644 app/boards/.DS_Store create mode 100644 app/boards/shields/.DS_Store rename app/boards/shields/{cradios => cradio}/Kconfig.defconfig (92%) rename app/boards/shields/{cradios => cradio}/Kconfig.shield (50%) rename app/boards/shields/{cradios.dtsi => cradio/cradio.dtsi} (99%) rename app/boards/shields/{cradios.keymap => cradio/cradio.keymap} (100%) rename app/boards/shields/{cradios/cradios_left.conf => cradio/cradio_left.conf} (100%) rename app/boards/shields/{cradios/cradios_left.overlay => cradio/cradio_left.overlay} (81%) rename app/boards/shields/{cradios/cradios_right.conf => cradio/cradio_right.conf} (100%) rename app/boards/shields/{cradios_right.overlay => cradio/cradio_right.overlay} (86%) rename app/boards/shields/{cradios => cradio}/default.keymap (100%) delete mode 100644 app/boards/shields/cradios/cradios.dtsi delete mode 100644 app/boards/shields/cradios/cradios.keymap delete mode 100644 app/boards/shields/cradios/cradios_right.overlay delete mode 100644 app/boards/shields/cradios_left.conf delete mode 100644 app/boards/shields/cradios_left.overlay delete mode 100644 app/boards/shields/cradios_right.conf diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6b508f3d3ac3d8e154cb8b9356cbeda358ea05b0 GIT binary patch literal 8196 zcmeHMTWl3Y82Y%Mi6DcsKM4J8t2@<}4agPTcNPKrjKq%t>nhl&t^ z5P=YZ5P=YZ5P|;#0(55cBCT-l3v1Yh2!sgSmI(0oLyRhyi9pT@>AyOt@vi_R`4zw~ z)MvayG8V{0AZLXn3l$WhBt<9&R}2*4q>lxDi9pT@DZ&AR%LfKCV{k)3e|CC)%y$P& z2pP5^0wDr7BEWw>d7wcCGO5Yy@9&oBdhz(z7|F|DwR(*t%aXiKKG`$oO!j!1mvdXR z>~TIirg>wjpx^5_)#G&gP7x@nL0O`5tlHcUv_ zo_X3dva(zhY3#MNabxbzl2WFYshj4bgzsXk#LA_?T*^F?GrhB74mGw#me^Y-bXrcA zqw^=~zC~4I+a>8Z*SBU3YK2-+D|S(U*6Y%$gJo9TBg@R~eUP?OgerUQm1L&(Sz5}l z0#*HfQXLtX5NHO&5fs614T!FXYJ@^Q&!N>3! zd;#CVkMJ}63ctbc@CW>b63VDx0jjta%W)gVaX&U-BQ{|R9>Js7h27YTCvgOmsNpDP z@C;_r!}ItkK8BCullVNojIZFU_!_>6@8G+572n4X@N@hU=fwIV^JMJ`)*A@?o;tyg zk;oc+OpA=%jI7c2`<0IWhOFNfaE2DG-%z}9bNS9aHFXD?7dCO(zFkitpEZIOK3(SN z;BVei4$^L`Wy+>#AF;}qTI8_c^gP4a8qObyb3?r=x+Tgual~+2bVrm$h}&XV5#6n@ zJYufwJ69?3C|gA&71q5{C6hIa&(6x$^V>tm*6s7 zg%9CV;@ns81N;QPz@Nl784Iz5*j9#7+>Cc)1@6L1+=KhDo|xB&2e2IvVFw;2_Vr>v z4&V?DV;T)Sjbmu~+{@u4PT|9N0Usd-K7r5TbHu_Ih=rH%^<|vvT*kR8i=3P2$=a4< zkCJAdp-Y{^(Jh5Qp2((@-~ZcJ{{DYUuGBt-AZqLe%FpsJw=rl z?l&u>A3}|P9Vh8u$4M^yVMzTLx$>AqAZLXn4V8cWLqMq-p8r1b0{-y)Uj*ZJ>irGE Cjn>8h literal 0 HcmV?d00001 diff --git a/app/.DS_Store b/app/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7b9df9785ffe429ff6989ceea0ab40fc7af0588f GIT binary patch literal 8196 zcmeHMTTC2P82kW${VP;L1B7USCx=2$tOhe2hhMt%sQ!rX(v`$2ZA61 zK?H&b1Q7@#5Jcer5CJ-~SrOJa_qjG`g9ro>xFsXN-VYI~3}Zena`avu)OaZXAxidaiU&o;{%NihhcL+@16hW=bQODCmt&ei6?c zFvc-xg9ro>SRDcO_!K|_Y)~PclfQqINSTJ?Mx$S1C@+6q!FoXy1#zQzvVY2+?RQl- zP{v6{(xlhTvq1i>*^b;BX#u+3)PYN+S>X9)scp1!@`0nlbB(>4%fHnVGhnxLll6&1A+@UA@&b`;BwDGvexVF6)gscG_+C4CAt#arFCivNLA% z4zhMe47wdNlTo}}xFx)!a&NT0>2Sx=#@mWyN!na8JYzUU!qi7qC#hSSVNDLs8k##b zM)9&-Q`0B?u>&ygjW`%f*sXwTB$k0f%PoPqXGOQIws5`)O0TtF-@aL6o&Y zQ%&fmFKRqUqGQ7|Jet0+F1Uv~(!9{otuE3k{4txOD z;6wNXK7()Id-xH4hF{=U_znI*0Y#Ls5Ea~k6}S_lco3Vg8C$Rok6{n?Vjm9RNu0nq zsyK-$JcDU;@jO0^kKm*DI6jLn;!F54zJjmgTlh9!#dq;N{1iXOB|g7Uma@J6e0{)g zsk7q2B+B|9) zN17}tye(YGMA~zuT-q8QByQ<**O|Lod!xXiVUQd3wiAl7nii*#6$fjwN zpSDcfnk0Fatt(xEtD7t8`-Y)c4xVE zgz71(tT4Mpj-CrOUOG Hi#2}&7R=yI literal 0 HcmV?d00001 diff --git a/app/boards/.DS_Store b/app/boards/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f1a7fabe09abafc68e9bade17e3a66f1e4d09db5 GIT binary patch literal 8196 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 - }; kscan0: kscan { @@ -37,11 +36,8 @@ RC(0,15) RC(0,16) RC(0,33) RC(0,32) compatible = "zmk,bt-unpair-combo"; }; - - }; - &kscan0 { input-gpios = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> diff --git a/app/boards/shields/cradios.keymap b/app/boards/shields/cradio/cradio.keymap similarity index 100% rename from app/boards/shields/cradios.keymap rename to app/boards/shields/cradio/cradio.keymap diff --git a/app/boards/shields/cradios/cradios_left.conf b/app/boards/shields/cradio/cradio_left.conf similarity index 100% rename from app/boards/shields/cradios/cradios_left.conf rename to app/boards/shields/cradio/cradio_left.conf diff --git a/app/boards/shields/cradios/cradios_left.overlay b/app/boards/shields/cradio/cradio_left.overlay similarity index 81% rename from app/boards/shields/cradios/cradios_left.overlay rename to app/boards/shields/cradio/cradio_left.overlay index b0bdc6fe..c6600724 100644 --- a/app/boards/shields/cradios/cradios_left.overlay +++ b/app/boards/shields/cradio/cradio_left.overlay @@ -3,13 +3,9 @@ * * SPDX-License-Identifier: MIT */ -#include "cradios.dtsi" - - - - - +#include "cradio.dtsi" &bt_unpair_combo { + key-positions = <0 16>; }; diff --git a/app/boards/shields/cradios/cradios_right.conf b/app/boards/shields/cradio/cradio_right.conf similarity index 100% rename from app/boards/shields/cradios/cradios_right.conf rename to app/boards/shields/cradio/cradio_right.conf diff --git a/app/boards/shields/cradios_right.overlay b/app/boards/shields/cradio/cradio_right.overlay similarity index 86% rename from app/boards/shields/cradios_right.overlay rename to app/boards/shields/cradio/cradio_right.overlay index ef920ac3..3469199b 100644 --- a/app/boards/shields/cradios_right.overlay +++ b/app/boards/shields/cradio/cradio_right.overlay @@ -3,15 +3,12 @@ * * SPDX-License-Identifier: MIT */ -#include "cradios.dtsi" +#include "cradio.dtsi" &default_transform { col-offset = <17>; }; - - - &bt_unpair_combo { key-positions = <21 32>; }; diff --git a/app/boards/shields/cradios/default.keymap b/app/boards/shields/cradio/default.keymap similarity index 100% rename from app/boards/shields/cradios/default.keymap rename to app/boards/shields/cradio/default.keymap diff --git a/app/boards/shields/cradios/cradios.dtsi b/app/boards/shields/cradios/cradios.dtsi deleted file mode 100644 index 68d1fc57..00000000 --- a/app/boards/shields/cradios/cradios.dtsi +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2020 Pete Johanson - * - * SPDX-License-Identifier: MIT - */ - #include - -/ { - chosen { - zmk,kscan = &kscan0; - zmk,matrix_transform = &default_transform; - }; - - default_transform: keymap_transform_0 { - compatible = "zmk,matrix-transform"; - columns = <34>; - rows = <1>; - map = < -RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,21) RC(0,20) RC(0,19) RC(0,18) RC(0,17) -RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,26) RC(0,25) RC(0,24) RC(0,23) RC(0,22) -RC(0,10)RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,31) RC(0,30) RC(0,29) RC(0,28) RC(0,27) -RC(0,15) RC(0,16) RC(0,33) RC(0,32) ->; - - - }; - - kscan0: kscan { - compatible = "zmk,kscan-gpio-direct"; - label = "KSCAN"; - }; - - - - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; - - - - }; - - - &kscan0 { - input-gpios - = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_a 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - , <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> - ; -}; - - diff --git a/app/boards/shields/cradios/cradios.keymap b/app/boards/shields/cradios/cradios.keymap deleted file mode 100644 index c46468dd..00000000 --- a/app/boards/shields/cradios/cradios.keymap +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - - -/ { - keymap { - compatible = "zmk,keymap"; - - default_layer { - bindings = < - &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P - &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN - &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH - &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 - >; - }; - }; -}; diff --git a/app/boards/shields/cradios/cradios_right.overlay b/app/boards/shields/cradios/cradios_right.overlay deleted file mode 100644 index ef920ac3..00000000 --- a/app/boards/shields/cradios/cradios_right.overlay +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2020 Pete Johanson - * - * SPDX-License-Identifier: MIT - */ -#include "cradios.dtsi" - -&default_transform { - col-offset = <17>; -}; - - - - -&bt_unpair_combo { - key-positions = <21 32>; -}; diff --git a/app/boards/shields/cradios_left.conf b/app/boards/shields/cradios_left.conf deleted file mode 100644 index 1e028a78..00000000 --- a/app/boards/shields/cradios_left.conf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_ZMK_SPLIT=y -CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y diff --git a/app/boards/shields/cradios_left.overlay b/app/boards/shields/cradios_left.overlay deleted file mode 100644 index b0bdc6fe..00000000 --- a/app/boards/shields/cradios_left.overlay +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2020 Pete Johanson - * - * SPDX-License-Identifier: MIT - */ -#include "cradios.dtsi" - - - - - - -&bt_unpair_combo { - key-positions = <0 16>; -}; diff --git a/app/boards/shields/cradios_right.conf b/app/boards/shields/cradios_right.conf deleted file mode 100644 index 990cf7c0..00000000 --- a/app/boards/shields/cradios_right.conf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_ZMK_SPLIT=y -CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL=y From 85af75c7f6ac736d2756095853327131732bd496 Mon Sep 17 00:00:00 2001 From: David Barr Date: Wed, 30 Sep 2020 17:10:29 +0100 Subject: [PATCH 124/353] remove .ds_store junk --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e02cca0e..eb4312fd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /tools /zephyr /build +**/.DS_Store From 17bee0223aa90037896d3a83d08fe01db1cab97b Mon Sep 17 00:00:00 2001 From: David Barr Date: Wed, 30 Sep 2020 17:12:39 +0100 Subject: [PATCH 125/353] remove ds_store files --- .DS_Store | Bin 8196 -> 0 bytes app/.DS_Store | Bin 8196 -> 0 bytes app/boards/.DS_Store | Bin 8196 -> 0 bytes app/boards/shields/.DS_Store | Bin 8196 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 app/.DS_Store delete mode 100644 app/boards/.DS_Store delete mode 100644 app/boards/shields/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 6b508f3d3ac3d8e154cb8b9356cbeda358ea05b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHMTWl3Y82Y%Mi6DcsKM4J8t2@<}4agPTcNPKrjKq%t>nhl&t^ z5P=YZ5P=YZ5P|;#0(55cBCT-l3v1Yh2!sgSmI(0oLyRhyi9pT@>AyOt@vi_R`4zw~ z)MvayG8V{0AZLXn3l$WhBt<9&R}2*4q>lxDi9pT@DZ&AR%LfKCV{k)3e|CC)%y$P& z2pP5^0wDr7BEWw>d7wcCGO5Yy@9&oBdhz(z7|F|DwR(*t%aXiKKG`$oO!j!1mvdXR z>~TIirg>wjpx^5_)#G&gP7x@nL0O`5tlHcUv_ zo_X3dva(zhY3#MNabxbzl2WFYshj4bgzsXk#LA_?T*^F?GrhB74mGw#me^Y-bXrcA zqw^=~zC~4I+a>8Z*SBU3YK2-+D|S(U*6Y%$gJo9TBg@R~eUP?OgerUQm1L&(Sz5}l z0#*HfQXLtX5NHO&5fs614T!FXYJ@^Q&!N>3! zd;#CVkMJ}63ctbc@CW>b63VDx0jjta%W)gVaX&U-BQ{|R9>Js7h27YTCvgOmsNpDP z@C;_r!}ItkK8BCullVNojIZFU_!_>6@8G+572n4X@N@hU=fwIV^JMJ`)*A@?o;tyg zk;oc+OpA=%jI7c2`<0IWhOFNfaE2DG-%z}9bNS9aHFXD?7dCO(zFkitpEZIOK3(SN z;BVei4$^L`Wy+>#AF;}qTI8_c^gP4a8qObyb3?r=x+Tgual~+2bVrm$h}&XV5#6n@ zJYufwJ69?3C|gA&71q5{C6hIa&(6x$^V>tm*6s7 zg%9CV;@ns81N;QPz@Nl784Iz5*j9#7+>Cc)1@6L1+=KhDo|xB&2e2IvVFw;2_Vr>v z4&V?DV;T)Sjbmu~+{@u4PT|9N0Usd-K7r5TbHu_Ih=rH%^<|vvT*kR8i=3P2$=a4< zkCJAdp-Y{^(Jh5Qp2((@-~ZcJ{{DYUuGBt-AZqLe%FpsJw=rl z?l&u>A3}|P9Vh8u$4M^yVMzTLx$>AqAZLXn4V8cWLqMq-p8r1b0{-y)Uj*ZJ>irGE Cjn>8h diff --git a/app/.DS_Store b/app/.DS_Store deleted file mode 100644 index 7b9df9785ffe429ff6989ceea0ab40fc7af0588f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHMTTC2P82kW${VP;L1B7USCx=2$tOhe2hhMt%sQ!rX(v`$2ZA61 zK?H&b1Q7@#5Jcer5CJ-~SrOJa_qjG`g9ro>xFsXN-VYI~3}Zena`avu)OaZXAxidaiU&o;{%NihhcL+@16hW=bQODCmt&ei6?c zFvc-xg9ro>SRDcO_!K|_Y)~PclfQqINSTJ?Mx$S1C@+6q!FoXy1#zQzvVY2+?RQl- zP{v6{(xlhTvq1i>*^b;BX#u+3)PYN+S>X9)scp1!@`0nlbB(>4%fHnVGhnxLll6&1A+@UA@&b`;BwDGvexVF6)gscG_+C4CAt#arFCivNLA% z4zhMe47wdNlTo}}xFx)!a&NT0>2Sx=#@mWyN!na8JYzUU!qi7qC#hSSVNDLs8k##b zM)9&-Q`0B?u>&ygjW`%f*sXwTB$k0f%PoPqXGOQIws5`)O0TtF-@aL6o&Y zQ%&fmFKRqUqGQ7|Jet0+F1Uv~(!9{otuE3k{4txOD z;6wNXK7()Id-xH4hF{=U_znI*0Y#Ls5Ea~k6}S_lco3Vg8C$Rok6{n?Vjm9RNu0nq zsyK-$JcDU;@jO0^kKm*DI6jLn;!F54zJjmgTlh9!#dq;N{1iXOB|g7Uma@J6e0{)g zsk7q2B+B|9) zN17}tye(YGMA~zuT-q8QByQ<**O|Lod!xXiVUQd3wiAl7nii*#6$fjwN zpSDcfnk0Fatt(xEtD7t8`-Y)c4xVE zgz71(tT4Mpj-CrOUOG Hi#2}&7R=yI diff --git a/app/boards/.DS_Store b/app/boards/.DS_Store deleted file mode 100644 index f1a7fabe09abafc68e9bade17e3a66f1e4d09db5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 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 yl$4PR7s5pJN8vcj**^@qo{DwpSWZdF8czTEhXC Date: Wed, 30 Sep 2020 21:35:51 -0500 Subject: [PATCH 126/353] Add TG4X rev 2.1 shield --- app/boards/shields/tg4x/Kconfig.defconfig | 9 ++++ app/boards/shields/tg4x/Kconfig.shield | 5 ++ app/boards/shields/tg4x/tg4x.keymap | 58 +++++++++++++++++++++++ app/boards/shields/tg4x/tg4x.overlay | 56 ++++++++++++++++++++++ 4 files changed, 128 insertions(+) create mode 100644 app/boards/shields/tg4x/Kconfig.defconfig create mode 100644 app/boards/shields/tg4x/Kconfig.shield create mode 100644 app/boards/shields/tg4x/tg4x.keymap create mode 100644 app/boards/shields/tg4x/tg4x.overlay diff --git a/app/boards/shields/tg4x/Kconfig.defconfig b/app/boards/shields/tg4x/Kconfig.defconfig new file mode 100644 index 00000000..ca9fa2c3 --- /dev/null +++ b/app/boards/shields/tg4x/Kconfig.defconfig @@ -0,0 +1,9 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +if SHIELD_TG4X + +config ZMK_KEYBOARD_NAME + default "TG4X" + +endif \ No newline at end of file diff --git a/app/boards/shields/tg4x/Kconfig.shield b/app/boards/shields/tg4x/Kconfig.shield new file mode 100644 index 00000000..7e98b710 --- /dev/null +++ b/app/boards/shields/tg4x/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config SHIELD_TG4X + def_bool $(shields_list_contains,tg4x) diff --git a/app/boards/shields/tg4x/tg4x.keymap b/app/boards/shields/tg4x/tg4x.keymap new file mode 100644 index 00000000..64e98bb3 --- /dev/null +++ b/app/boards/shields/tg4x/tg4x.keymap @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +#define DEFAULT 0 +#define LOWER 1 +#define RAISE 2 + +/ { + behaviors { + hm: homerow_mods { + compatible = "zmk,behavior-hold-tap"; + label = "homerow mods"; + #binding-cells = <2>; + tapping_term_ms = <225>; + flavor = "tap-preferred"; + bindings = <&kp>, <&kp>; + }; + }; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &kp GRAV &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &kp SCLN &kp BKSP + &kp TAB &hm LGUI A &hm LALT R &hm LCTL S &hm LSFT T &kp G &kp M &hm RSFT N &hm RCTL E &hm RALT I &hm RGUI O &kp RET + &kp LSFT &kp Z &kp X &kp C &kp D &kp V &kp K &kp H &kp CMMA &kp DOT &kp FSLH &kp QUOT + &kp LCTL &kp LALT &kp LGUI < 1 BKSP < 2 SPC &kp LARW &kp DARW &kp UARW &kp RARW + >; + }; + lower { + bindings = < + &kp ESC &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp PRSC + &kp DEL &trans &kp VOLU &trans &trans &trans &trans &kp LARW &kp DARW &kp UARW &kp RARW &trans + &trans &trans &kp VOLD &trans &trans &trans &trans &trans &trans &bt BT_PRV &bt BT_NXT &bt BT_CLR + &bootloader &reset &trans &trans &trans &trans &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 + >; + }; + + raise { + bindings = < + &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp PRSC + &kp DEL &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp MINUS &kp EQL &kp LBKT &kp RBKT &kp BSLH + &trans &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp TILD &kp HOME &kp PGUP &kp PGDN &kp END + &trans &trans &trans &trans &trans &trans &kp M_NEXT &kp M_VOLD &kp M_VOLU &kp M_PLAY + >; + }; + }; +}; \ No newline at end of file diff --git a/app/boards/shields/tg4x/tg4x.overlay b/app/boards/shields/tg4x/tg4x.overlay new file mode 100644 index 00000000..acab2e31 --- /dev/null +++ b/app/boards/shields/tg4x/tg4x.overlay @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2020 Pete Johanson, Richard Jones + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <7>; + rows = <8>; + map = < + RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,5) + RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) + RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(6,0) RC(6,1) RC(6,2) RC(6,3) RC(6,4) + RC(3,0) RC(3,1) RC(3,2) RC(3,4) RC(3,5) RC(7,1) RC(7,2) RC(7,3) RC(7,4) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + + col-gpios + = <&pro_micro_d 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 2 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 3 GPIO_ACTIVE_HIGH> + ; + + row-gpios + = <&pro_micro_a 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + }; + +}; + From e993378b2a1705f97a5cca95d16810ab766f8d94 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 1 Oct 2020 11:24:57 -0400 Subject: [PATCH 127/353] chore: Fix some accidental formatting issues. --- app/drivers/zephyr/kscan_gpio_matrix.c | 69 ++++++++++++-------------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index 5fa618bc..62008e32 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -72,7 +72,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, }; \ struct kscan_gpio_data_##n { \ kscan_callback_t callback; \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), (struct k_timer poll_timer;)) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), (struct k_timer poll_timer;)) \ struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ struct device *rows[INST_MATRIX_ROWS(n)]; \ @@ -100,17 +100,18 @@ static int kscan_gpio_config_interrupts(struct device **devices, return ( \ COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ } \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ - (static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ - kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ - GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ - } \ - static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ - return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ - kscan_gpio_input_configs_##n(dev), INST_INPUT_LEN(n), \ - GPIO_INT_DISABLE); \ - }), ()) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ + ( \ + static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts( \ + kscan_gpio_input_devices_##n(dev), kscan_gpio_input_configs_##n(dev), \ + INST_INPUT_LEN(n), GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ + } static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ + return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ + kscan_gpio_input_configs_##n(dev), \ + INST_INPUT_LEN(n), GPIO_INT_DISABLE); \ + }), \ + ()) \ static void kscan_gpio_set_output_state_##n(struct device *dev, int value) { \ for (int i = 0; i < INST_OUTPUT_LEN(n); i++) { \ struct device *in_dev = kscan_gpio_output_devices_##n(dev)[i]; \ @@ -133,8 +134,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, /* Disable our interrupts temporarily while we scan, to avoid */ \ /* re-entry while we iterate columns and set them active one by one */ \ /* to get pressed state for each matrix cell. */ \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ - (kscan_gpio_disable_interrupts_##n(dev);),()) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (kscan_gpio_disable_interrupts_##n(dev);), \ + ()) \ kscan_gpio_set_output_state_##n(dev, 0); \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ struct device *out_dev = kscan_gpio_output_devices_##n(dev)[o]; \ @@ -152,8 +153,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, /* Set all our outputs as active again. */ \ kscan_gpio_set_output_state_##n(dev, 1); \ /*Re-enable interrupts so that they can be triggered again for future press/release*/ \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ - (kscan_gpio_enable_interrupts_##n(dev);), ()) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (kscan_gpio_enable_interrupts_##n(dev);), ()) \ for (int r = 0; r < INST_MATRIX_ROWS(n); r++) { \ for (int c = 0; c < INST_MATRIX_COLS(n); c++) { \ bool pressed = read_state[r][c]; \ @@ -201,29 +201,24 @@ static int kscan_gpio_config_interrupts(struct device **devices, return 0; \ }; \ static int kscan_gpio_enable_##n(struct device *dev) { \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ - (int err = kscan_gpio_enable_interrupts_##n(dev); \ - if (err) { \ - return err; \ - } \ - return kscan_gpio_read_##n(dev);), \ - (struct kscan_gpio_data_##n *data = dev->driver_data; \ - k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); \ - return 0;)) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ + (int err = kscan_gpio_enable_interrupts_##n(dev); \ + if (err) { return err; } return kscan_gpio_read_##n(dev);), \ + (struct kscan_gpio_data_##n *data = dev->driver_data; \ + k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); return 0;)) \ }; \ static int kscan_gpio_disable_##n(struct device *dev) { \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ - (return kscan_gpio_disable_interrupts_##n(dev);), \ - (struct kscan_gpio_data_##n *data = dev->driver_data; \ - k_timer_stop(&data->poll_timer); \ - return 0;)) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ + (return kscan_gpio_disable_interrupts_##n(dev);), \ + (struct kscan_gpio_data_##n *data = dev->driver_data; \ + k_timer_stop(&data->poll_timer); return 0;)) \ }; \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ - (static void kscan_gpio_timer_handler(struct k_timer *timer) { \ - struct kscan_gpio_data_##n *data = \ - CONTAINER_OF(timer, struct kscan_gpio_data_##n, poll_timer); \ - k_work_submit(&data->work.work); \ - })) \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ + (static void kscan_gpio_timer_handler(struct k_timer *timer) { \ + struct kscan_gpio_data_##n *data = \ + CONTAINER_OF(timer, struct kscan_gpio_data_##n, poll_timer); \ + k_work_submit(&data->work.work); \ + })) \ static int kscan_gpio_init_##n(struct device *dev) { \ struct kscan_gpio_data_##n *data = dev->driver_data; \ int err; \ @@ -268,7 +263,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, } \ } \ data->dev = dev; \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ + COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);)) \ (COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work_init), (k_delayed_work_init)))( \ &data->work, kscan_gpio_work_handler_##n); \ From 694b24ca86d315d6dcf906088a1a3d03d57579c0 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 1 Oct 2020 11:31:02 -0400 Subject: [PATCH 128/353] fix(ci): Lint detected changes to drivers dir. --- .github/workflows/clang-format-lint.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/clang-format-lint.yml b/.github/workflows/clang-format-lint.yml index 061bc3da..70ae9863 100644 --- a/.github/workflows/clang-format-lint.yml +++ b/.github/workflows/clang-format-lint.yml @@ -6,11 +6,15 @@ on: - "app/boards/**/*.c" - "app/include/**/*.h" - "app/src/**" + - "app/drivers/**/*.c" + - "app/drivers/**/*.h" pull_request: paths: - "app/boards/**/*.c" - "app/include/**/*.h" - "app/src/**" + - "app/drivers/**/*.c" + - "app/drivers/**/*.h" jobs: build: From 028dfae92e2b0900514182f096959b07a7204ab3 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 1 Oct 2020 11:40:49 -0400 Subject: [PATCH 129/353] chore: Fix remaining formatting issues. --- app/drivers/zephyr/kscan_gpio_direct.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/drivers/zephyr/kscan_gpio_direct.c b/app/drivers/zephyr/kscan_gpio_direct.c index c3414fbf..d6dab4d1 100644 --- a/app/drivers/zephyr/kscan_gpio_direct.c +++ b/app/drivers/zephyr/kscan_gpio_direct.c @@ -173,7 +173,7 @@ static const struct kscan_driver_api gpio_driver_api = { #define INST_INPUT_LEN(n) DT_INST_PROP_LEN(n, input_gpios) #define GPIO_INST_INIT(n) \ - COND_CODE_0(CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ + COND_CODE_0(CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ (static struct kscan_gpio_irq_callback irq_callbacks_##n[INST_INPUT_LEN(n)];), ()) \ static struct kscan_gpio_data kscan_gpio_data_##n = { \ .inputs = {[INST_INPUT_LEN(n) - 1] = NULL}}; \ @@ -195,7 +195,7 @@ static const struct kscan_driver_api gpio_driver_api = { return err; \ } \ COND_CODE_0( \ - CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ + CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ (irq_callbacks_##n[i].work = &data->work; \ irq_callbacks_##n[i].debounce_period = cfg->debounce_period; \ gpio_init_callback(&irq_callbacks_##n[i].callback, \ @@ -208,7 +208,7 @@ static const struct kscan_driver_api gpio_driver_api = { ()) \ } \ data->dev = dev; \ - COND_CODE_1(CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ + COND_CODE_1(CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ if (cfg->debounce_period > 0) { \ k_delayed_work_init(&data->work.delayed, kscan_gpio_work_handler); \ From 9a3d515583997a78b41ab9d2b84e8b56126dda09 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 1 Oct 2020 15:40:39 -0400 Subject: [PATCH 130/353] fix(docs): Link to nice!nano product page itself. --- docs/docs/hardware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/hardware.md b/docs/docs/hardware.md index 236aa972..faac57c6 100644 --- a/docs/docs/hardware.md +++ b/docs/docs/hardware.md @@ -16,7 +16,7 @@ That being said, there are currently only a few specific [boards](/docs/faq#what ## Boards -- [nice!nano](https://docs.nicekeyboards.com/#/nice!nano/) (`nice_nano`) +- [nice!nano](https://nicekeyboards.com/products/nice-nano-v1-0) (`nice_nano`) - [nrfMicro](https://github.com/joric/nrfmicro) (`nrfmicro_13`, `nrfmicro_11`, `nrfmicro_11_flipped`) - [BlueMicro840](https://store.jpconstantineau.com/#/group/bluemicro) (`bluemicro840_v1`) - [QMK Proton-C](https://qmk.fm/proton-c/) (`proton_c`) From 307a8d09db78b95c858c41bd5549c721da7eb1f8 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 1 Oct 2020 17:18:01 -0400 Subject: [PATCH 131/353] feat(usb): Function to access latest USB status. * To be leveraged by upcoming power management work. --- app/include/zmk/usb_hid.h | 2 ++ app/src/usb_hid.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/app/include/zmk/usb_hid.h b/app/include/zmk/usb_hid.h index 7ee26298..83a45407 100644 --- a/app/include/zmk/usb_hid.h +++ b/app/include/zmk/usb_hid.h @@ -14,4 +14,6 @@ int zmk_usb_hid_init(); +enum usb_dc_status_code zmk_usb_hid_get_status(); + int zmk_usb_hid_send_report(u8_t *report, size_t len); diff --git a/app/src/usb_hid.c b/app/src/usb_hid.c index 530ffea8..64addaea 100644 --- a/app/src/usb_hid.c +++ b/app/src/usb_hid.c @@ -28,6 +28,8 @@ static const struct hid_ops ops = { .int_in_ready = in_ready_cb, }; +enum usb_dc_status_code zmk_usb_hid_get_status() { return usb_status; } + int zmk_usb_hid_send_report(const u8_t *report, size_t len) { switch (usb_status) { case USB_DC_SUSPEND: From c68e3d3e42b9ff1722b2c2b9728f5d3b85784a45 Mon Sep 17 00:00:00 2001 From: Dev Date: Thu, 1 Oct 2020 11:26:54 +0530 Subject: [PATCH 132/353] Add missing licensing header Fixes #205 --- app/include/dt-bindings/zmk/keys.h | 5 +++++ app/include/dt-bindings/zmk/kscan-mock.h | 6 ++++++ app/include/dt-bindings/zmk/matrix-transform.h | 5 +++++ app/include/dt-bindings/zmk/rgb.h | 5 +++++ app/include/zmk/split/bluetooth/service.h | 6 ++++++ app/include/zmk/split/bluetooth/uuid.h | 6 ++++++ 6 files changed, 33 insertions(+) diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index d3dd6341..a3b22297 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #pragma once diff --git a/app/include/dt-bindings/zmk/kscan-mock.h b/app/include/dt-bindings/zmk/kscan-mock.h index d481899f..eff218b2 100644 --- a/app/include/dt-bindings/zmk/kscan-mock.h +++ b/app/include/dt-bindings/zmk/kscan-mock.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once #define ZMK_MOCK_IS_PRESS(v) ((v & (0x01 << 31)) != 0) diff --git a/app/include/dt-bindings/zmk/matrix-transform.h b/app/include/dt-bindings/zmk/matrix-transform.h index 4fd3e6c9..2989cb60 100644 --- a/app/include/dt-bindings/zmk/matrix-transform.h +++ b/app/include/dt-bindings/zmk/matrix-transform.h @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #define KT_ROW(item) (item >> 8) #define KT_COL(item) (item & 0xFF) diff --git a/app/include/dt-bindings/zmk/rgb.h b/app/include/dt-bindings/zmk/rgb.h index c2efda88..eb721807 100644 --- a/app/include/dt-bindings/zmk/rgb.h +++ b/app/include/dt-bindings/zmk/rgb.h @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ #define RGB_TOG 0 #define RGB_HUI 1 diff --git a/app/include/zmk/split/bluetooth/service.h b/app/include/zmk/split/bluetooth/service.h index 954e0cdd..c2be512f 100644 --- a/app/include/zmk/split/bluetooth/service.h +++ b/app/include/zmk/split/bluetooth/service.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once int zmk_split_bt_position_pressed(u8_t position); diff --git a/app/include/zmk/split/bluetooth/uuid.h b/app/include/zmk/split/bluetooth/uuid.h index a8dfbf62..a31884d9 100644 --- a/app/include/zmk/split/bluetooth/uuid.h +++ b/app/include/zmk/split/bluetooth/uuid.h @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #pragma once #include From 38a418a1d16707d721d85900c0c7c637cd1795a3 Mon Sep 17 00:00:00 2001 From: David Barr Date: Fri, 2 Oct 2020 14:16:59 +0100 Subject: [PATCH 133/353] updates as per PR changes (i hope) --- app/boards/shields/cradio/Kconfig.defconfig | 7 +++--- app/boards/shields/cradio/Kconfig.shield | 2 +- app/boards/shields/cradio/cradio.dtsi | 23 ++++++++----------- app/boards/shields/cradio/cradio_left.conf | 3 +++ app/boards/shields/cradio/cradio_left.overlay | 7 +----- app/boards/shields/cradio/cradio_right.conf | 3 +++ .../shields/cradio/cradio_right.overlay | 3 ++- 7 files changed, 23 insertions(+), 25 deletions(-) diff --git a/app/boards/shields/cradio/Kconfig.defconfig b/app/boards/shields/cradio/Kconfig.defconfig index ab38e258..46799b9e 100644 --- a/app/boards/shields/cradio/Kconfig.defconfig +++ b/app/boards/shields/cradio/Kconfig.defconfig @@ -1,10 +1,9 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + config ZMK_KEYBOARD_NAME default "cradio" -# Unable to use interrupts as the same pin number is used -# across A & B controllers, and STM32F303CCT6 can't enable -# interrutps for multiple controllers for the same "line" -# for the external interrupts. config ZMK_KSCAN_GPIO_POLLING default y diff --git a/app/boards/shields/cradio/Kconfig.shield b/app/boards/shields/cradio/Kconfig.shield index 0385d23e..71a439e0 100644 --- a/app/boards/shields/cradio/Kconfig.shield +++ b/app/boards/shields/cradio/Kconfig.shield @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Pete Johanson +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT config SHIELD_CRADIO diff --git a/app/boards/shields/cradio/cradio.dtsi b/app/boards/shields/cradio/cradio.dtsi index 19225f90..582f58a4 100644 --- a/app/boards/shields/cradio/cradio.dtsi +++ b/app/boards/shields/cradio/cradio.dtsi @@ -1,8 +1,9 @@ /* * Copyright (c) 2020 Pete Johanson * - * SPDX-License-Identifier: MIT + * Copyright (c) 2020 The ZMK Contributors */ + #include / { @@ -16,31 +17,27 @@ columns = <34>; rows = <1>; map = < -RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,21) RC(0,20) RC(0,19) RC(0,18) RC(0,17) -RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,26) RC(0,25) RC(0,24) RC(0,23) RC(0,22) -RC(0,10)RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,31) RC(0,30) RC(0,29) RC(0,28) RC(0,27) -RC(0,15) RC(0,16) RC(0,33) RC(0,32) ->; + RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,21) RC(0,20) RC(0,19) RC(0,18) RC(0,17) + RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,26) RC(0,25) RC(0,24) RC(0,23) RC(0,22) + RC(0,10)RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,31) RC(0,30) RC(0,29) RC(0,28) RC(0,27) + RC(0,15) RC(0,16) RC(0,33) RC(0,32) + >; - }; - kscan0: kscan { compatible = "zmk,kscan-gpio-direct"; label = "KSCAN"; }; - - - bt_unpair_combo: bt_unpair_combo { compatible = "zmk,bt-unpair-combo"; }; - }; + }; + }; &kscan0 { input-gpios - = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> diff --git a/app/boards/shields/cradio/cradio_left.conf b/app/boards/shields/cradio/cradio_left.conf index 1e028a78..405f04db 100644 --- a/app/boards/shields/cradio/cradio_left.conf +++ b/app/boards/shields/cradio/cradio_left.conf @@ -1,2 +1,5 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + CONFIG_ZMK_SPLIT=y CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y diff --git a/app/boards/shields/cradio/cradio_left.overlay b/app/boards/shields/cradio/cradio_left.overlay index c6600724..6caf8e3d 100644 --- a/app/boards/shields/cradio/cradio_left.overlay +++ b/app/boards/shields/cradio/cradio_left.overlay @@ -1,11 +1,6 @@ /* * Copyright (c) 2020 Pete Johanson * - * SPDX-License-Identifier: MIT + * Copyright (c) 2020 The ZMK Contributors */ -#include "cradio.dtsi" -&bt_unpair_combo { - - key-positions = <0 16>; -}; diff --git a/app/boards/shields/cradio/cradio_right.conf b/app/boards/shields/cradio/cradio_right.conf index 990cf7c0..bd2c93bf 100644 --- a/app/boards/shields/cradio/cradio_right.conf +++ b/app/boards/shields/cradio/cradio_right.conf @@ -1,2 +1,5 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + CONFIG_ZMK_SPLIT=y CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL=y diff --git a/app/boards/shields/cradio/cradio_right.overlay b/app/boards/shields/cradio/cradio_right.overlay index 3469199b..09efc53b 100644 --- a/app/boards/shields/cradio/cradio_right.overlay +++ b/app/boards/shields/cradio/cradio_right.overlay @@ -1,8 +1,9 @@ /* * Copyright (c) 2020 Pete Johanson * - * SPDX-License-Identifier: MIT + * Copyright (c) 2020 The ZMK Contributors */ + #include "cradio.dtsi" &default_transform { From 260044ae5e8dfc531ed98d08d0a3c9b9328e2ffe Mon Sep 17 00:00:00 2001 From: David Barr Date: Fri, 2 Oct 2020 14:17:35 +0100 Subject: [PATCH 134/353] Delete default.keymap --- app/boards/shields/cradio/default.keymap | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 app/boards/shields/cradio/default.keymap diff --git a/app/boards/shields/cradio/default.keymap b/app/boards/shields/cradio/default.keymap deleted file mode 100644 index 08210052..00000000 --- a/app/boards/shields/cradio/default.keymap +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - - -/ { - keymap0: keymap { - compatible = "zmk,keymap"; - - default_layer { - bindings = < - &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P - &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN - &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH - &kp DEL &kp RET &kp RET &kp SPC - - >; - }; - }; -}; From dfb4f1277d66b58de5473c46ed04cf3d7c102b30 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 2 Oct 2020 23:17:53 -0400 Subject: [PATCH 135/353] fix(docs): Proper emphasis of MUST NOT. --- docs/docs/dev-clean-room.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/dev-clean-room.md b/docs/docs/dev-clean-room.md index c11171c8..2f301ec7 100644 --- a/docs/docs/dev-clean-room.md +++ b/docs/docs/dev-clean-room.md @@ -6,7 +6,7 @@ sidebar_label: Clean Room :::warning -Anyone wanting to contribute code to ZMK _must_ read this, and adhere to the steps outlines in order to not violate any licenses/copyright of other projects +Anyone wanting to contribute code to ZMK _MUST_ read this, and adhere to the steps outlines in order to not violate any licenses/copyright of other projects ::: @@ -22,8 +22,8 @@ or duplicating any of the GPL code found in those other projects, even though th Contributors to ZMK must adhere to the following standard. -- Implementations of features for ZMK _MUST_ not reuse any existing code from any projects not licensed with the MIT license. -- Contributors _MUST_ not study or refer to any GPL licensed source code while working on ZMK. +- Implementations of features for ZMK _MUST NOT_ reuse any existing code from any projects not licensed with the MIT license. +- Contributors _MUST NOT_ study or refer to any GPL licensed source code while working on ZMK. - Contributors _MAY_ read the documentation from other GPL licensed projects, to gain a broad understanding of the behavior of certain features in order to implement equivalent features for ZMK. - Contributors _MAY_ refer to the [QMK Configurator](https://config.qmk.fm/) to inspect existing layouts/keymaps for keyboards, and re-implement them for ZMK. From f6f8abe05514c3588c4aa4a56897462c377bcab6 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sat, 26 Sep 2020 18:39:13 -0500 Subject: [PATCH 136/353] fix(ec11): allow more than one encoder Fixes "device.h:101:11: error: redefinition of '__device_ec11'" in firmware that has more than one encoder. --- app/drivers/zephyr/ec11.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/drivers/zephyr/ec11.c b/app/drivers/zephyr/ec11.c index a4e96c24..00d00905 100644 --- a/app/drivers/zephyr/ec11.c +++ b/app/drivers/zephyr/ec11.c @@ -142,7 +142,7 @@ int ec11_init(struct device *dev) { .b_flags = DT_INST_GPIO_FLAGS(n, b_gpios), \ COND_CODE_0(DT_INST_NODE_HAS_PROP(n, resolution), (1), (DT_INST_PROP(n, resolution))), \ }; \ - DEVICE_AND_API_INIT(ec11, DT_INST_LABEL(n), ec11_init, &ec11_data_##n, &ec11_cfg_##n, \ + DEVICE_AND_API_INIT(ec11_##n, DT_INST_LABEL(n), ec11_init, &ec11_data_##n, &ec11_cfg_##n, \ POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, &ec11_driver_api); DT_INST_FOREACH_STATUS_OKAY(EC11_INST) \ No newline at end of file From fc5915b2001c80df5ab2db72b04d86a083e27556 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sun, 4 Oct 2020 12:33:12 -0500 Subject: [PATCH 137/353] improvement(kscan): use ARRAY_SIZE macro --- app/src/kscan_composite.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/src/kscan_composite.c b/app/src/kscan_composite.c index 02491407..f8e8d604 100644 --- a/app/src/kscan_composite.c +++ b/app/src/kscan_composite.c @@ -38,8 +38,7 @@ struct kscan_composite_data { }; static int kscan_composite_enable_callback(struct device *dev) { - for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); - i++) { + for (int i = 0; i < ARRAY_SIZE(kscan_composite_children); i++) { const struct kscan_composite_child_config *cfg = &kscan_composite_children[i]; kscan_enable_callback(device_get_binding(cfg->label)); @@ -48,8 +47,7 @@ static int kscan_composite_enable_callback(struct device *dev) { } static int kscan_composite_disable_callback(struct device *dev) { - for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); - i++) { + for (int i = 0; i < ARRAY_SIZE(kscan_composite_children); i++) { const struct kscan_composite_child_config *cfg = &kscan_composite_children[i]; kscan_disable_callback(device_get_binding(cfg->label)); @@ -63,8 +61,7 @@ static void kscan_composite_child_callback(struct device *child_dev, u32_t row, struct device *dev = device_get_binding(DT_INST_LABEL(0)); struct kscan_composite_data *data = dev->driver_data; - for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); - i++) { + for (int i = 0; i < ARRAY_SIZE(kscan_composite_children); i++) { const struct kscan_composite_child_config *cfg = &kscan_composite_children[i]; if (device_get_binding(cfg->label) != child_dev) { @@ -82,8 +79,7 @@ static int kscan_composite_configure(struct device *dev, kscan_callback_t callba return -EINVAL; } - for (int i = 0; i < sizeof(kscan_composite_children) / sizeof(kscan_composite_children[0]); - i++) { + for (int i = 0; i < ARRAY_SIZE(kscan_composite_children); i++) { const struct kscan_composite_child_config *cfg = &kscan_composite_children[i]; kscan_config(device_get_binding(cfg->label), &kscan_composite_child_callback); From 4121b07f7f75b81cf1d533632fde858074b0fc03 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sun, 4 Oct 2020 14:03:55 -0500 Subject: [PATCH 138/353] fix(kscan): fix direct GPIO when using interrupts Fixed initializing interrupts for direct GPIO when CONFIG_ZMK_KSCAN_DIRECT_POLLING is not enabled. IS_ENABLED() is needed to map the possibly-undefined value to 0 or 1 so COND_CODE_0() and COND_CODE_1() work. --- app/drivers/zephyr/kscan_gpio_direct.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/drivers/zephyr/kscan_gpio_direct.c b/app/drivers/zephyr/kscan_gpio_direct.c index d6dab4d1..4818c995 100644 --- a/app/drivers/zephyr/kscan_gpio_direct.c +++ b/app/drivers/zephyr/kscan_gpio_direct.c @@ -173,7 +173,7 @@ static const struct kscan_driver_api gpio_driver_api = { #define INST_INPUT_LEN(n) DT_INST_PROP_LEN(n, input_gpios) #define GPIO_INST_INIT(n) \ - COND_CODE_0(CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ + COND_CODE_0(IS_ENABLED(CONFIG_ZMK_KSCAN_DIRECT_POLLING), \ (static struct kscan_gpio_irq_callback irq_callbacks_##n[INST_INPUT_LEN(n)];), ()) \ static struct kscan_gpio_data kscan_gpio_data_##n = { \ .inputs = {[INST_INPUT_LEN(n) - 1] = NULL}}; \ @@ -195,7 +195,7 @@ static const struct kscan_driver_api gpio_driver_api = { return err; \ } \ COND_CODE_0( \ - CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ + IS_ENABLED(CONFIG_ZMK_KSCAN_DIRECT_POLLING), \ (irq_callbacks_##n[i].work = &data->work; \ irq_callbacks_##n[i].debounce_period = cfg->debounce_period; \ gpio_init_callback(&irq_callbacks_##n[i].callback, \ @@ -208,7 +208,7 @@ static const struct kscan_driver_api gpio_driver_api = { ()) \ } \ data->dev = dev; \ - COND_CODE_1(CONFIG_ZMK_KSCAN_DIRECT_POLLING, \ + COND_CODE_1(IS_ENABLED(CONFIG_ZMK_KSCAN_DIRECT_POLLING), \ (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ if (cfg->debounce_period > 0) { \ k_delayed_work_init(&data->work.delayed, kscan_gpio_work_handler); \ From 31e481954f1e22e42bde4b71753e279cdd4c77ed Mon Sep 17 00:00:00 2001 From: Kevin Date: Sun, 4 Oct 2020 17:03:56 -0700 Subject: [PATCH 139/353] fix(docs): Fixed Python environment variables and commands for Windows setup --- docs/docs/dev-setup.md | 111 +++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/docs/docs/dev-setup.md b/docs/docs/dev-setup.md index 1d7d703b..2e232f89 100644 --- a/docs/docs/dev-setup.md +++ b/docs/docs/dev-setup.md @@ -12,16 +12,16 @@ groupId="operating-systems" defaultValue="debian" values={[ {label: 'Debian/Ubuntu', value: 'debian'}, -{label: 'Raspberry OS', value: 'raspberryos'}, -{label: 'Fedora', value: 'fedora'}, {label: 'Windows', value: 'win'}, {label: 'macOS', value: 'mac'}, +{label: 'Raspberry OS', value: 'raspberryos'}, +{label: 'Fedora', value: 'fedora'}, ] }>{props.children}); ## Prerequisites -A unix-like environment with the following base packages installed: +ZMK requires the following base packages to first be installed: - Git - Python 3 @@ -34,6 +34,7 @@ A unix-like environment with the following base packages installed: + On Debian and Ubuntu, we'll use `apt` to install our base dependencies: First, if you haven't updated recently, or if this is a new install, @@ -74,7 +75,8 @@ or download and install CMake version 3.13.1 or newer manually. ::: -On Raspberry OS, we'll use apt to install our base dependencies: + +On Raspberry OS, we'll use `apt` to install our base dependencies: First, if you haven't updated recently, or if this is a new install, you should update to get the latest package information: @@ -185,14 +187,39 @@ brew install cmake ninja python3 ccache dtc git wget `west` is the [Zephyr™ meta-tool](https://docs.zephyrproject.org/2.3.0/guides/west/index.html) used to configure and build Zephyr™ applications. -West can be installed by using the `pip` python package manager. +West can be installed by using the `pip` python package manager. The [Zephyr™ instructions](https://docs.zephyrproject.org/latest/guides/west/install.html#installing-west) are summarized here: + + + ```sh pip3 install --user -U west ``` -:::danger pip user packages -If you haven't done so yet, you may need to add the Python Pip user package directory to your `PATH` otherwise your computer will not be able to find the `west` command. + + + +In `cmd.exe` as **Administrator**: + +```sh +pip3 install -U west +``` + +Once `west` is installed, close Command Prompt and open a new session as a **user** for the remainder of the instructions. +:::note +**For Windows, do not use the `--user` argument** that Linux uses otherwise `west` will be installed in a different location and the below instructions for adding Python `pip` will no longer apply. +::: + + + + +:::danger `pip` user packages +If you haven't done so yet, you may need to add the Python `pip` package directory to your `PATH` otherwise your computer will not be able to find the `west` command. ::: 1. See the [Environment Variables](#environment-variables) section on how to get to the Environment Variables page. -3. Click "Edit..." and then "New" to add the directory where your west.exe is located. By default this should be something like `C:\Python38\Scripts`. +2. Under "System variables" select the "Path" variable. Click "Edit..." and then "New" to add the directory where your `west.exe` is located. By default this should be `C:\Python##\Scripts` where ## is your Python version number. +3. Close Command Prompt and open a new session for the changes to take effect, or run `refreshenv`. @@ -279,7 +307,7 @@ The installation will prompt with several questions about installation location, #### GNU ARM Embedded -Since the Zephyr™ SDK is not available for Windows, we recommending following the steps to install the [GNU ARM Embedded](https://docs.zephyrproject.org/2.3.0/getting_started/toolchain_3rd_party_x_compilers.html#gnu-arm-embedded). +Since the Zephyr™ SDK is not available for Windows, we recommending following the [Zephyr documentation](https://docs.zephyrproject.org/2.3.0/getting_started/toolchain_3rd_party_x_compilers.html#gnu-arm-embedded) to install a GNU ARM Embedded build. Note the warnings regarding installing the toolchain into a path with spaces, and make sure to follow the steps to add the environment variables which are also summarized with screenshots in the [Environment Variables](#environment-variables) section below. @@ -308,7 +336,7 @@ The transient instructions must be run to build firmware using the current shell ### Source Code -Next, you'll need to clone the ZMK source repository if you haven't already: +Next, you'll need to clone the ZMK source repository if you haven't already. Navigate to the folder you would like to place your `zmk` directory in and run the following command: ``` git clone https://github.com/zmkfirmware/zmk.git @@ -358,12 +386,17 @@ pip3 install --user -r zephyr/scripts/requirements-base.txt ### Environment Variables + + + #### For GNU ARM Embedded on Windows -On Windows, you will have to set two environment variables for ZMK to build properly: `ZEPHYR_TOOLCHAIN_VARIANT` and `GNUARMEMB_TOOLCHAIN_PATH`. - -

- Steps to Update Environment Variables +On Windows, only two environment variables need to be set for ZMK to build properly: `ZEPHYR_TOOLCHAIN_VARIANT` and `GNUARMEMB_TOOLCHAIN_PATH`. 1. Open Start Menu and type 'env' to find the 'Edit the system environment variables' option. Open it. @@ -381,11 +414,15 @@ On Windows, you will have to set two environment variables for ZMK to build prop ![Adding Zephyr toolchain variable](assets/env-var/zephyr_toolchain.png) -5. Create another variable with variable name 'GNUARMEMB_TOOLCHAIN_PATH' and value set to wherever you installed your toolchain. Click OK to save. +5. Create another variable with variable name 'GNUARMEMB_TOOLCHAIN_PATH' and value set to wherever you installed your toolchain. **Make sure this path does not contain any spaces.** If it does, rename the folder and update here. Click OK to save. ![Adding GNUARMEMB variable](assets/env-var/gnuarmemb.png) -
+6. Close Command Prompt and reopen, or run `refreshenv` to apply the changes. + + + + #### For Zephyr @@ -396,48 +433,10 @@ We suggest two main [options](https://docs.zephyrproject.org/2.3.0/guides/env_va To load the Zephyr environment properly for just one transient shell, run the following from your ZMK checkout directory: - - - ``` source zephyr/zephyr-env.sh ``` - - - - -``` -source zephyr/zephyr-env.sh -``` - - - - - -``` -source zephyr/zephyr-env.sh -``` - - - - - -``` -source zephyr/zephyr-env.sh -``` - - - - - -``` -source zephyr/zephyr-env.cmd -``` - - - - ##### All Shells To load the environment variables for your shell every time, @@ -469,3 +468,7 @@ cat ~/.zephyrrc >> ~/.zshrc + + + + From 6427e64df3e889325ea471ff98f185f5eee27027 Mon Sep 17 00:00:00 2001 From: Kevin Date: Sun, 4 Oct 2020 17:10:34 -0700 Subject: [PATCH 140/353] fix(docs): Reorganized section in Windows setup --- docs/docs/dev-setup.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docs/dev-setup.md b/docs/docs/dev-setup.md index 2e232f89..4891f5af 100644 --- a/docs/docs/dev-setup.md +++ b/docs/docs/dev-setup.md @@ -210,11 +210,12 @@ In `cmd.exe` as **Administrator**: pip3 install -U west ``` -Once `west` is installed, close Command Prompt and open a new session as a **user** for the remainder of the instructions. :::note **For Windows, do not use the `--user` argument** that Linux uses otherwise `west` will be installed in a different location and the below instructions for adding Python `pip` will no longer apply. ::: +Once `west` is installed, close Command Prompt and open a new session as a **user** for the remainder of the instructions. + From bbf5a5905a973d6d23457d2e7bf15bf6bac234c3 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 4 Oct 2020 18:18:44 -0400 Subject: [PATCH 141/353] refactor(usb): Report USB status w/o HID output. --- app/CMakeLists.txt | 2 +- app/Kconfig | 6 +++++- app/include/zmk/{usb_hid.h => usb.h} | 6 +++--- app/src/endpoints.c | 2 +- app/src/{usb_hid.c => usb.c} | 19 +++++++++++++------ 5 files changed, 23 insertions(+), 12 deletions(-) rename app/include/zmk/{usb_hid.h => usb.h} (73%) rename app/src/{usb_hid.c => usb.c} (77%) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 3e0560b7..5c77c54f 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -54,7 +54,7 @@ target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL app PRIVATE src/split/ target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL app PRIVATE src/split/bluetooth/central.c) target_sources_ifdef(CONFIG_ZMK_KSCAN_MOCK_DRIVER app PRIVATE src/kscan_mock.c) target_sources_ifdef(CONFIG_ZMK_KSCAN_COMPOSITE_DRIVER app PRIVATE src/kscan_composite.c) -target_sources_ifdef(CONFIG_ZMK_USB app PRIVATE src/usb_hid.c) +target_sources_ifdef(CONFIG_USB app PRIVATE src/usb.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/hog.c) target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c) target_sources(app PRIVATE src/endpoints.c) diff --git a/app/Kconfig b/app/Kconfig index ccd40da5..9398fce1 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -21,12 +21,16 @@ menuconfig ZMK_USB select USB_DEVICE_STACK select USB_DEVICE_HID -if ZMK_USB +if USB config ZMK_USB_INIT_PRIORITY int "Init Priority" default 50 +endif + +if ZMK_USB + config USB_NUMOF_EP_WRITE_RETRIES default 10 diff --git a/app/include/zmk/usb_hid.h b/app/include/zmk/usb.h similarity index 73% rename from app/include/zmk/usb_hid.h rename to app/include/zmk/usb.h index 83a45407..452fd54d 100644 --- a/app/include/zmk/usb_hid.h +++ b/app/include/zmk/usb.h @@ -12,8 +12,8 @@ #include #include -int zmk_usb_hid_init(); - -enum usb_dc_status_code zmk_usb_hid_get_status(); +enum usb_dc_status_code zmk_usb_get_status(); +#ifdef CONFIG_ZMK_USB int zmk_usb_hid_send_report(u8_t *report, size_t len); +#endif /* CONFIG_ZMK_USB */ \ No newline at end of file diff --git a/app/src/endpoints.c b/app/src/endpoints.c index ae785870..79d294ef 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include diff --git a/app/src/usb_hid.c b/app/src/usb.c similarity index 77% rename from app/src/usb_hid.c rename to app/src/usb.c index 64addaea..434b3d4d 100644 --- a/app/src/usb_hid.c +++ b/app/src/usb.c @@ -18,6 +18,8 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); static enum usb_dc_status_code usb_status = USB_DC_UNKNOWN; +#ifdef CONFIG_ZMK_USB + static struct device *hid_dev; static K_SEM_DEFINE(hid_sem, 1, 1); @@ -28,8 +30,6 @@ static const struct hid_ops ops = { .int_in_ready = in_ready_cb, }; -enum usb_dc_status_code zmk_usb_hid_get_status() { return usb_status; } - int zmk_usb_hid_send_report(const u8_t *report, size_t len) { switch (usb_status) { case USB_DC_SUSPEND: @@ -51,11 +51,16 @@ int zmk_usb_hid_send_report(const u8_t *report, size_t len) { } } -void usb_hid_status_cb(enum usb_dc_status_code status, const u8_t *params) { usb_status = status; }; +#endif /* CONFIG_ZMK_USB */ -static int zmk_usb_hid_init(struct device *_arg) { +enum usb_dc_status_code zmk_usb_get_status() { return usb_status; } + +void usb_status_cb(enum usb_dc_status_code status, const u8_t *params) { usb_status = status; }; + +static int zmk_usb_init(struct device *_arg) { int usb_enable_ret; +#ifdef CONFIG_ZMK_USB hid_dev = device_get_binding("HID_0"); if (hid_dev == NULL) { LOG_ERR("Unable to locate HID device"); @@ -66,7 +71,9 @@ static int zmk_usb_hid_init(struct device *_arg) { usb_hid_init(hid_dev); - usb_enable_ret = usb_enable(usb_hid_status_cb); +#endif /* CONFIG_ZMK_USB */ + + usb_enable_ret = usb_enable(usb_status_cb); if (usb_enable_ret != 0) { LOG_ERR("Unable to enable USB"); @@ -76,4 +83,4 @@ static int zmk_usb_hid_init(struct device *_arg) { return 0; } -SYS_INIT(zmk_usb_hid_init, APPLICATION, CONFIG_ZMK_USB_INIT_PRIORITY); +SYS_INIT(zmk_usb_init, APPLICATION, CONFIG_ZMK_USB_INIT_PRIORITY); From 9be566603e2eb248fbaa7af65cba42d5c06dbd33 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 6 Aug 2020 09:30:31 -0400 Subject: [PATCH 142/353] feat(kscan): Use PORT events for kscan matrix interrupts * Lower power usage compared to regular interrupts on nrf52. --- app/boards/arm/nice_nano/nice_nano.dts | 4 ++++ app/drivers/zephyr/kscan_gpio_matrix.c | 16 ++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index 2e9556b8..3ffb0ea8 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -31,6 +31,10 @@ }; +&gpiote { + status = "okay"; +}; + &gpio0 { status = "okay"; }; diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index 62008e32..cd793243 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -64,6 +64,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, struct kscan_gpio_irq_callback_##n { \ struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) * work; \ struct gpio_callback callback; \ + struct device *dev; \ }; \ static struct kscan_gpio_irq_callback_##n irq_callbacks_##n[INST_INPUT_LEN(n)]; \ struct kscan_gpio_config_##n { \ @@ -105,7 +106,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ return kscan_gpio_config_interrupts( \ kscan_gpio_input_devices_##n(dev), kscan_gpio_input_configs_##n(dev), \ - INST_INPUT_LEN(n), GPIO_INT_DEBOUNCE | GPIO_INT_EDGE_BOTH); \ + INST_INPUT_LEN(n), GPIO_INT_LEVEL_ACTIVE); \ } static int kscan_gpio_disable_interrupts_##n(struct device *dev) { \ return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ kscan_gpio_input_configs_##n(dev), \ @@ -113,10 +114,13 @@ static int kscan_gpio_config_interrupts(struct device **devices, }), \ ()) \ static void kscan_gpio_set_output_state_##n(struct device *dev, int value) { \ + int err; \ for (int i = 0; i < INST_OUTPUT_LEN(n); i++) { \ struct device *in_dev = kscan_gpio_output_devices_##n(dev)[i]; \ const struct kscan_gpio_item_config *cfg = &kscan_gpio_output_configs_##n(dev)[i]; \ - gpio_pin_set(in_dev, cfg->pin, value); \ + if ((err = gpio_pin_set(in_dev, cfg->pin, value))) { \ + LOG_DBG("FAILED TO SET OUTPUT %d to %d", cfg->pin, err); \ + } \ } \ } \ static void kscan_gpio_set_matrix_state_##n( \ @@ -134,8 +138,6 @@ static int kscan_gpio_config_interrupts(struct device **devices, /* Disable our interrupts temporarily while we scan, to avoid */ \ /* re-entry while we iterate columns and set them active one by one */ \ /* to get pressed state for each matrix cell. */ \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (kscan_gpio_disable_interrupts_##n(dev);), \ - ()) \ kscan_gpio_set_output_state_##n(dev, 0); \ for (int o = 0; o < INST_OUTPUT_LEN(n); o++) { \ struct device *out_dev = kscan_gpio_output_devices_##n(dev)[o]; \ @@ -152,8 +154,6 @@ static int kscan_gpio_config_interrupts(struct device **devices, } \ /* Set all our outputs as active again. */ \ kscan_gpio_set_output_state_##n(dev, 1); \ - /*Re-enable interrupts so that they can be triggered again for future press/release*/ \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (kscan_gpio_enable_interrupts_##n(dev);), ()) \ for (int r = 0; r < INST_MATRIX_ROWS(n); r++) { \ for (int c = 0; c < INST_MATRIX_COLS(n); c++) { \ bool pressed = read_state[r][c]; \ @@ -172,6 +172,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, k_delayed_work_cancel(&data->work); \ k_delayed_work_submit(&data->work, K_MSEC(5)); \ })) \ + } else { \ + kscan_gpio_enable_interrupts_##n(dev); \ } \ return 0; \ } \ @@ -183,6 +185,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, gpio_port_pins_t pin) { \ struct kscan_gpio_irq_callback_##n *data = \ CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ + kscan_gpio_disable_interrupts_##n(data->dev); \ COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(data->work); }), ({ \ k_delayed_work_cancel(data->work); \ k_delayed_work_submit(data->work, \ @@ -238,6 +241,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, LOG_DBG("Configured pin %d on %s for input", in_cfg->pin, in_cfg->label); \ } \ irq_callbacks_##n[i].work = &data->work; \ + irq_callbacks_##n[i].dev = dev; \ gpio_init_callback(&irq_callbacks_##n[i].callback, \ kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ From c54decd1443a41bd68905256db6286d51324c8e4 Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Thu, 1 Oct 2020 23:57:16 +0800 Subject: [PATCH 143/353] Added Makerdiary M.2 module --- app/boards/arm/nrf52840_m2/CMakeLists.txt | 13 +++ app/boards/arm/nrf52840_m2/Kconfig | 10 ++ app/boards/arm/nrf52840_m2/Kconfig.board | 10 ++ app/boards/arm/nrf52840_m2/Kconfig.defconfig | 30 ++++++ app/boards/arm/nrf52840_m2/board.cmake | 9 ++ app/boards/arm/nrf52840_m2/nrf52840_m2.dts | 97 +++++++++++++++++++ app/boards/arm/nrf52840_m2/nrf52840_m2.yaml | 15 +++ .../arm/nrf52840_m2/nrf52840_m2_defconfig | 23 +++++ 8 files changed, 207 insertions(+) create mode 100644 app/boards/arm/nrf52840_m2/CMakeLists.txt create mode 100644 app/boards/arm/nrf52840_m2/Kconfig create mode 100644 app/boards/arm/nrf52840_m2/Kconfig.board create mode 100644 app/boards/arm/nrf52840_m2/Kconfig.defconfig create mode 100644 app/boards/arm/nrf52840_m2/board.cmake create mode 100644 app/boards/arm/nrf52840_m2/nrf52840_m2.dts create mode 100644 app/boards/arm/nrf52840_m2/nrf52840_m2.yaml create mode 100644 app/boards/arm/nrf52840_m2/nrf52840_m2_defconfig diff --git a/app/boards/arm/nrf52840_m2/CMakeLists.txt b/app/boards/arm/nrf52840_m2/CMakeLists.txt new file mode 100644 index 00000000..84b2ab99 --- /dev/null +++ b/app/boards/arm/nrf52840_m2/CMakeLists.txt @@ -0,0 +1,13 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +set_property(GLOBAL APPEND PROPERTY extra_post_build_commands + COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/../tools/uf2/utils/uf2conv.py + -c + -b 0x26000 + -f 0xADA52840 + -o ${PROJECT_BINARY_DIR}/${CONFIG_KERNEL_BIN_NAME}.uf2 + ${PROJECT_BINARY_DIR}/${CONFIG_KERNEL_BIN_NAME}.bin +) diff --git a/app/boards/arm/nrf52840_m2/Kconfig b/app/boards/arm/nrf52840_m2/Kconfig new file mode 100644 index 00000000..faff4925 --- /dev/null +++ b/app/boards/arm/nrf52840_m2/Kconfig @@ -0,0 +1,10 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +config BOARD_ENABLE_DCDC + bool "Enable DCDC mode" + select SOC_DCDC_NRF52X + default y + depends on BOARD_NRF52840_M2 diff --git a/app/boards/arm/nrf52840_m2/Kconfig.board b/app/boards/arm/nrf52840_m2/Kconfig.board new file mode 100644 index 00000000..6ade68c1 --- /dev/null +++ b/app/boards/arm/nrf52840_m2/Kconfig.board @@ -0,0 +1,10 @@ +# Maker Diary nrf52840 M.2 board configuration +# +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +config BOARD_NRF52840_M2 + bool "nrf52480_m2" + depends on SOC_NRF52840_QIAA + diff --git a/app/boards/arm/nrf52840_m2/Kconfig.defconfig b/app/boards/arm/nrf52840_m2/Kconfig.defconfig new file mode 100644 index 00000000..98fcd083 --- /dev/null +++ b/app/boards/arm/nrf52840_m2/Kconfig.defconfig @@ -0,0 +1,30 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +if BOARD_NRF52840_M2 + +config BOARD + default "nrf52480_m2" + +if USB + +config USB_NRFX + default y + +config USB_DEVICE_STACK + default y + +endif # USB + +config BT_CTLR + default BT + +config ZMK_BLE + default y + +config ZMK_USB + default y + +endif # BOARD_NRF52840_M2 diff --git a/app/boards/arm/nrf52840_m2/board.cmake b/app/boards/arm/nrf52840_m2/board.cmake new file mode 100644 index 00000000..f521e2c0 --- /dev/null +++ b/app/boards/arm/nrf52840_m2/board.cmake @@ -0,0 +1,9 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") + +include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) diff --git a/app/boards/arm/nrf52840_m2/nrf52840_m2.dts b/app/boards/arm/nrf52840_m2/nrf52840_m2.dts new file mode 100644 index 00000000..fb5b0ff6 --- /dev/null +++ b/app/boards/arm/nrf52840_m2/nrf52840_m2.dts @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * SPDX-License-Identifier: MIT + */ + +/dts-v1/; +#include + +/ { + model = "Makerdiary nRF52840 M.2 module"; + compatible = "makerdiary,nrf52840_m2"; + + chosen { + zephyr,code-partition = &code_partition; + //zephyr,console = &uart0; + //zephyr,bt-mon-uart = &uart0; + //zephyr,bt-c2h-uart = &uart0; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; + + leds { + compatible = "gpio-leds"; + red_led: led_0 { + gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>; + label = "Red LED"; + }; + green_led: led_1 { + gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>; + label = "Green LED"; + }; + blue_led: led_2 { + gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>; + label = "Blue LED"; + }; + }; + +}; + +&gpio0 { + status = "okay"; +}; + +&gpio1 { + status = "okay"; +}; + +&uart0 { + compatible = "nordic,nrf-uart"; + status = "okay"; + current-speed = <115200>; + tx-pin = <16>; + rx-pin = <15>; + rts-pin = <14>; + cts-pin = <13>; +}; + +&usbd { + compatible = "nordic,nrf-usbd"; + status = "okay"; +}; + + +&flash0 { + /* + * For more information, see: + * http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html + */ + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + boot_partition: partition@0 { + label = "adafruit_boot"; + reg = <0x000000000 0x0000C000>; + }; + code_partition: partition@26000 { + label = "code_partition"; + reg = <0x00026000 0x000d2000>; + }; + + /* + * The flash starting at 0x000f8000 and ending at + * 0x000fffff is reserved for use by the application. + */ + + /* + * Storage partition will be used by FCB/LittleFS/NVS + * if enabled. + */ + storage_partition: partition@f8000 { + label = "storage"; + reg = <0x000f8000 0x00008000>; + }; + }; +}; diff --git a/app/boards/arm/nrf52840_m2/nrf52840_m2.yaml b/app/boards/arm/nrf52840_m2/nrf52840_m2.yaml new file mode 100644 index 00000000..0a999bbf --- /dev/null +++ b/app/boards/arm/nrf52840_m2/nrf52840_m2.yaml @@ -0,0 +1,15 @@ +identifier: nrf52840_m2 +name: Makerdiary nRF52840 M.2 module +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - adc + - usb_device + - ble + - ieee802154 + - pwm + - watchdog diff --git a/app/boards/arm/nrf52840_m2/nrf52840_m2_defconfig b/app/boards/arm/nrf52840_m2/nrf52840_m2_defconfig new file mode 100644 index 00000000..e74438b7 --- /dev/null +++ b/app/boards/arm/nrf52840_m2/nrf52840_m2_defconfig @@ -0,0 +1,23 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +CONFIG_SOC_SERIES_NRF52X=y +CONFIG_SOC_NRF52840_QIAA=y +CONFIG_BOARD_NRF52840_M2=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y + +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y From 9d06c730ba8b70429ecb67d3ff502ed1fde584bd Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Fri, 2 Oct 2020 00:18:30 +0800 Subject: [PATCH 144/353] Added Makerdiary M60 keyboard --- app/boards/shields/m60/Kconfig.defconfig | 10 ++++ app/boards/shields/m60/Kconfig.shield | 5 ++ app/boards/shields/m60/m60.conf | 0 app/boards/shields/m60/m60.keymap | 26 ++++++++++ app/boards/shields/m60/m60.overlay | 65 ++++++++++++++++++++++++ app/boards/shields/m60/readme.md | 15 ++++++ 6 files changed, 121 insertions(+) create mode 100644 app/boards/shields/m60/Kconfig.defconfig create mode 100644 app/boards/shields/m60/Kconfig.shield create mode 100644 app/boards/shields/m60/m60.conf create mode 100644 app/boards/shields/m60/m60.keymap create mode 100644 app/boards/shields/m60/m60.overlay create mode 100644 app/boards/shields/m60/readme.md diff --git a/app/boards/shields/m60/Kconfig.defconfig b/app/boards/shields/m60/Kconfig.defconfig new file mode 100644 index 00000000..e358a587 --- /dev/null +++ b/app/boards/shields/m60/Kconfig.defconfig @@ -0,0 +1,10 @@ + +if SHIELD_M60 + +config ZMK_KEYBOARD_NAME + default "m60" + +config ZMK_KSCAN_MATRIX_POLLING + default y + +endif diff --git a/app/boards/shields/m60/Kconfig.shield b/app/boards/shields/m60/Kconfig.shield new file mode 100644 index 00000000..4ed58c49 --- /dev/null +++ b/app/boards/shields/m60/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config SHIELD_M60 + def_bool $(shields_list_contains,m60) diff --git a/app/boards/shields/m60/m60.conf b/app/boards/shields/m60/m60.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/m60/m60.keymap b/app/boards/shields/m60/m60.keymap new file mode 100644 index 00000000..aa0fa75e --- /dev/null +++ b/app/boards/shields/m60/m60.keymap @@ -0,0 +1,26 @@ +#include +#include +#include + +/ { + keymap0: keymap { + compatible = "zmk,keymap"; + + default_layer { +// ------------------------------------------------------------------------------------------ +// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | +// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | "|" | +// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | +// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | +// | CTL | WIN | ALT | SPACE | ALT | MO(1) | WIN | CTRL | +// ------------------------------------------------------------------------------------------ + bindings = < + &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp MINUS &kp EQL &kp BKSP + &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH + &kp CLCK &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT &kp RET + &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RSFT + &kp LCTL &kp LGUI &kp LALT &kp SPC &kp RALT &mo 1 &kp RGUI &kp RCTL + >; + }; + }; +}; diff --git a/app/boards/shields/m60/m60.overlay b/app/boards/shields/m60/m60.overlay new file mode 100644 index 00000000..c20d4525 --- /dev/null +++ b/app/boards/shields/m60/m60.overlay @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&gpio0 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio0 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio0 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio0 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio1 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio0 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio0 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + col-gpios + = <&gpio0 19 GPIO_ACTIVE_HIGH> + , <&gpio0 20 GPIO_ACTIVE_HIGH> + , <&gpio0 21 GPIO_ACTIVE_HIGH> + , <&gpio0 22 GPIO_ACTIVE_HIGH> + , <&gpio0 23 GPIO_ACTIVE_HIGH> + , <&gpio0 24 GPIO_ACTIVE_HIGH> + , <&gpio0 25 GPIO_ACTIVE_HIGH> + , <&gpio0 26 GPIO_ACTIVE_HIGH> + ; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <8>; + rows = <8>; +// | MX1 | MX2 | MX3 | MX4 | MX5 | MX6 | MX7 | MX8 | MX9 | MX10 | MX11 | MX12 | MX13 | MX14 | +// | MX15 | MX16 | MX17 | MX18 | MX19 | MX20 | MX21 | MX22 | MX23 | MX24 | MX25 | MX26 | MX27 | MX28 | +// | MX29 | MX30 | MX31 | MX32 | MX33 | MX34 | MX35 | MX36 | MX37 | MX38 | MX39 | MX40 | MX41 | +// | MX42 | MX43 | MX44 | MX45 | MX46 | MX47 | MX48 | MX49 | MX50 | MX51 | MX52 | MX53 | +// | MX54 | MX55 | MX56 | MX57 | MX58 | MX59 | MX60 | MX61 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) +RC(3,3) RC(3,2) RC(3,1) RC(3,0) RC(2,7) RC(2,6) RC(2,5) RC(2,4) RC(2,3) RC(2,2) RC(2,1) RC(2,0) RC(1,7) RC(1,6) +RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,7) RC(5,0) +RC(6,4) RC(6,3) RC(6,2) RC(6,1) RC(6,0) RC(5,7) RC(5,6) RC(5,5) RC(5,4) RC(5,3) RC(5,2) RC(5,1) +RC(6,5) RC(6,6) RC(6,7) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) + >; + }; + + bt_unpair_combo: bt_unpair_combo { + compatible = "zmk,bt-unpair-combo"; + key-positions = <0 53>; + }; + +}; + diff --git a/app/boards/shields/m60/readme.md b/app/boards/shields/m60/readme.md new file mode 100644 index 00000000..7eaf226d --- /dev/null +++ b/app/boards/shields/m60/readme.md @@ -0,0 +1,15 @@ +# [Makerdiary M60](https://wiki.makerdiary.com/m60) + +A 60% ANSI keyboard designed and manufactured by Makerdiary. +http://makerdairy.com + +## Features + +- Per key RGB LED. +- Uses makerdiary M.2 nRF52840 module +- Matrix wiring + +## Hardware Notes + +https://wiki.makerdiary.com/m60/developer_guide/hardware/ + From e2299836bccf21bf56a4d34c5ed2f53a2fa21da2 Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Sat, 3 Oct 2020 17:35:17 +0800 Subject: [PATCH 145/353] Update contributors in all keymap files --- .../clueboard_california/clueboard_california.keymap | 6 ++++++ app/boards/shields/corne/corne.keymap | 6 ++++++ app/boards/shields/iris/iris.keymap | 2 +- app/boards/shields/kyria/kyria.keymap | 6 ++++++ app/boards/shields/lily58/lily58.keymap | 6 ++++++ app/boards/shields/m60/Kconfig.defconfig | 4 ++++ app/boards/shields/m60/Kconfig.shield | 2 ++ app/boards/shields/m60/m60.keymap | 6 ++++++ app/boards/shields/m60/m60.overlay | 1 + app/boards/shields/romac/romac.keymap | 2 +- app/boards/shields/sofle/sofle.keymap | 6 ++++++ app/boards/shields/splitreus62/splitreus62.keymap | 3 ++- 12 files changed, 47 insertions(+), 3 deletions(-) diff --git a/app/boards/shields/clueboard_california/clueboard_california.keymap b/app/boards/shields/clueboard_california/clueboard_california.keymap index 7a84b119..44a0b076 100644 --- a/app/boards/shields/clueboard_california/clueboard_california.keymap +++ b/app/boards/shields/clueboard_california/clueboard_california.keymap @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #include #include diff --git a/app/boards/shields/corne/corne.keymap b/app/boards/shields/corne/corne.keymap index 5f0f15f0..64d4a001 100644 --- a/app/boards/shields/corne/corne.keymap +++ b/app/boards/shields/corne/corne.keymap @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #include #include #include diff --git a/app/boards/shields/iris/iris.keymap b/app/boards/shields/iris/iris.keymap index 6042ad7b..8b06b1b7 100644 --- a/app/boards/shields/iris/iris.keymap +++ b/app/boards/shields/iris/iris.keymap @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson, Kurtis Lew + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/kyria/kyria.keymap b/app/boards/shields/kyria/kyria.keymap index f689ef62..ac0d13f0 100644 --- a/app/boards/shields/kyria/kyria.keymap +++ b/app/boards/shields/kyria/kyria.keymap @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #include #include diff --git a/app/boards/shields/lily58/lily58.keymap b/app/boards/shields/lily58/lily58.keymap index 61c19f86..997a1248 100644 --- a/app/boards/shields/lily58/lily58.keymap +++ b/app/boards/shields/lily58/lily58.keymap @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #include #include #include diff --git a/app/boards/shields/m60/Kconfig.defconfig b/app/boards/shields/m60/Kconfig.defconfig index e358a587..56695b96 100644 --- a/app/boards/shields/m60/Kconfig.defconfig +++ b/app/boards/shields/m60/Kconfig.defconfig @@ -1,3 +1,7 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT +# if SHIELD_M60 diff --git a/app/boards/shields/m60/Kconfig.shield b/app/boards/shields/m60/Kconfig.shield index 4ed58c49..47a28e24 100644 --- a/app/boards/shields/m60/Kconfig.shield +++ b/app/boards/shields/m60/Kconfig.shield @@ -1,5 +1,7 @@ +# # Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT +# config SHIELD_M60 def_bool $(shields_list_contains,m60) diff --git a/app/boards/shields/m60/m60.keymap b/app/boards/shields/m60/m60.keymap index aa0fa75e..16ad2470 100644 --- a/app/boards/shields/m60/m60.keymap +++ b/app/boards/shields/m60/m60.keymap @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #include #include #include diff --git a/app/boards/shields/m60/m60.overlay b/app/boards/shields/m60/m60.overlay index c20d4525..babae2db 100644 --- a/app/boards/shields/m60/m60.overlay +++ b/app/boards/shields/m60/m60.overlay @@ -3,6 +3,7 @@ * * SPDX-License-Identifier: MIT */ + #include / { diff --git a/app/boards/shields/romac/romac.keymap b/app/boards/shields/romac/romac.keymap index 97ea9c54..31e1ce82 100644 --- a/app/boards/shields/romac/romac.keymap +++ b/app/boards/shields/romac/romac.keymap @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson, Richard Jones + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/sofle/sofle.keymap b/app/boards/shields/sofle/sofle.keymap index 1cbe742c..e2ebc1aa 100644 --- a/app/boards/shields/sofle/sofle.keymap +++ b/app/boards/shields/sofle/sofle.keymap @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + #include #include #include diff --git a/app/boards/shields/splitreus62/splitreus62.keymap b/app/boards/shields/splitreus62/splitreus62.keymap index 920e61ad..07dd2ad6 100644 --- a/app/boards/shields/splitreus62/splitreus62.keymap +++ b/app/boards/shields/splitreus62/splitreus62.keymap @@ -1,9 +1,10 @@ /* - * Copyright (c) 2020 Derek Schmell + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ + #include #include From b8cb5f939a3c018af13de7727c15d7765ea1f1c1 Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Sat, 3 Oct 2020 18:21:22 +0800 Subject: [PATCH 146/353] M60 keymap update and misc changes * Updated M60 keymap * Make nrfjproj as default runner * Remove the polling config --- app/boards/arm/nrf52840_m2/board.cmake | 2 +- app/boards/shields/m60/Kconfig.defconfig | 3 --- app/boards/shields/m60/m60.keymap | 12 +++++++++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/boards/arm/nrf52840_m2/board.cmake b/app/boards/arm/nrf52840_m2/board.cmake index f521e2c0..55b44e27 100644 --- a/app/boards/arm/nrf52840_m2/board.cmake +++ b/app/boards/arm/nrf52840_m2/board.cmake @@ -5,5 +5,5 @@ board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") -include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) +include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) diff --git a/app/boards/shields/m60/Kconfig.defconfig b/app/boards/shields/m60/Kconfig.defconfig index 56695b96..e31d5a53 100644 --- a/app/boards/shields/m60/Kconfig.defconfig +++ b/app/boards/shields/m60/Kconfig.defconfig @@ -8,7 +8,4 @@ if SHIELD_M60 config ZMK_KEYBOARD_NAME default "m60" -config ZMK_KSCAN_MATRIX_POLLING - default y - endif diff --git a/app/boards/shields/m60/m60.keymap b/app/boards/shields/m60/m60.keymap index 16ad2470..cbe356c2 100644 --- a/app/boards/shields/m60/m60.keymap +++ b/app/boards/shields/m60/m60.keymap @@ -15,7 +15,7 @@ default_layer { // ------------------------------------------------------------------------------------------ // | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | -// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | "|" | +// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | // | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | // | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | // | CTL | WIN | ALT | SPACE | ALT | MO(1) | WIN | CTRL | @@ -28,5 +28,15 @@ &kp LCTL &kp LGUI &kp LALT &kp SPC &kp RALT &mo 1 &kp RGUI &kp RCTL >; }; + + fn_layer { + bindings = < +&kp GRAV &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &bootloader +&trans &bt BT_CLR &none &none &none &none &none &none &none &none &none &none &none &reset +&trans &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp LARW &kp DARW &kp UARW &kp RARW &none &none &trans +&trans &none &none &none &none &none &none &none &none &none &none &trans +&trans &trans &trans &trans &trans &trans &trans &trans + >; + }; }; }; From 4de7cc45de18f791ecbb361bfc2330a45e97d79e Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 5 Oct 2020 09:43:05 -0400 Subject: [PATCH 147/353] feat(setup): Add M.2 and M60 to setup scripts. --- docs/static/setup.ps1 | 10 +++++----- docs/static/setup.sh | 6 ++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index 3946e66c..dc7b18c9 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -63,8 +63,8 @@ $repo_path = "https://github.com/zmkfirmware/zmk-config-split-template.git" $title = "ZMK Config Setup:" $prompt = "Pick an MCU board" -$options = "nice!nano", "QMK Proton-C", "BlueMicro840 (v1)" -$boards = "nice_nano", "proton_c", "bluemicro840_v1" +$options = "nice!nano", "QMK Proton-C", "BlueMicro840 (v1)", "makerdiary nRF52840 M.2" +$boards = "nice_nano", "proton_c", "bluemicro840_v1", "nrf52840_m2" Write-Host "$title" Write-Host "" @@ -78,9 +78,9 @@ Write-Host "Keyboard Shield Selection:" $prompt = "Pick a keyboard" # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. -$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac" -$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac" -$splits = "y", "y", "y", "y", "y", "y", "n" +$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac", "makerdiary M60" +$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac", "m60" +$splits = "y", "y", "y", "y", "y", "y", "n", "n" $choice = Get-Choice-From-Options -Options $options -Prompt $prompt $shield_title = $($options[$choice]) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 5bf36451..9e989644 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -26,7 +26,7 @@ repo_path="https://github.com/zmkfirmware/zmk-config-split-template.git" title="ZMK Config Setup:" prompt="Pick an MCU board:" -options=("nice!nano" "QMK Proton-C" "BlueMicro840 (v1)") +options=("nice!nano" "QMK Proton-C" "BlueMicro840 (v1)" "makerdiary nRF52840 M.2") echo "$title" echo "" @@ -39,6 +39,7 @@ select opt in "${options[@]}" "Quit"; do 1 ) board="nice_nano"; break;; 2 ) board="proton_c"; break;; 3 ) board="bluemicro840_v1"; break;; + 3 ) board="nrf52840_m2"; break;; $(( ${#options[@]}+1 )) ) echo "Goodbye!"; exit 1;; *) echo "Invalid option. Try another one."; continue;; @@ -50,7 +51,7 @@ echo "" echo "Keyboard Shield Selection:" prompt="Pick an keyboard:" -options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac") +options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac" "makerdiary M60") PS3="$prompt " # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. @@ -66,6 +67,7 @@ select opt in "${options[@]}" "Quit"; do 5 ) shield_title="Sofle" shield="sofle"; split="y"; break;; 6 ) shield_title="Iris" shield="iris"; split="y"; break;; 7 ) shield_title="RoMac" shield="romac"; split="n"; break;; + 7 ) shield_title="M60" shield="m60"; split="n"; break;; # Add link to docs on adding your own custom shield in your ZMK config! # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; From ce59223efe9062ac1da77bae93a3578ce0463b66 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 5 Oct 2020 23:40:29 -0400 Subject: [PATCH 148/353] fix(shields): Typo in makerdiary URL. --- app/boards/shields/m60/readme.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/boards/shields/m60/readme.md b/app/boards/shields/m60/readme.md index 7eaf226d..e801c788 100644 --- a/app/boards/shields/m60/readme.md +++ b/app/boards/shields/m60/readme.md @@ -1,7 +1,7 @@ # [Makerdiary M60](https://wiki.makerdiary.com/m60) A 60% ANSI keyboard designed and manufactured by Makerdiary. -http://makerdairy.com +http://makerdiary.com ## Features @@ -12,4 +12,3 @@ http://makerdairy.com ## Hardware Notes https://wiki.makerdiary.com/m60/developer_guide/hardware/ - From a7496ab06425cab7de5fc7164b4ce5a34dd7107b Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 2 Oct 2020 02:09:38 -0400 Subject: [PATCH 149/353] feat(power): Initial deep sleep work. * New ZMK_SLEEP Kconfig symbol to enable the functionality. * Switch to PORT events that allows wake from deep sleep. * Initial basic power management policy, with idle ms, and ignoring deep sleep if we detect a USB connection. --- app/CMakeLists.txt | 1 + app/Kconfig | 20 +++++++- app/drivers/zephyr/kscan_gpio_matrix.c | 58 ++++++++++++---------- app/include/dt-bindings/zmk/bt.h | 2 +- app/src/power.c | 69 ++++++++++++++++++++++++++ 5 files changed, 121 insertions(+), 29 deletions(-) create mode 100644 app/src/power.c diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 5c77c54f..3e59d751 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -23,6 +23,7 @@ zephyr_linker_sources(RODATA include/linker/zmk-events.ld) # Add your source file to the "app" target. This must come after # find_package(Zephyr) which defines the target. target_include_directories(app PRIVATE include) +target_sources_ifdef(CONFIG_ZMK_SLEEP app PRIVATE src/power.c) target_sources(app PRIVATE src/kscan.c) target_sources(app PRIVATE src/matrix_transform.c) target_sources(app PRIVATE src/hid.c) diff --git a/app/Kconfig b/app/Kconfig index 9398fce1..edf58670 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -76,6 +76,25 @@ endif endmenu +menuconfig ZMK_SLEEP + bool "Enable deep sleep support" + imply USB + +if ZMK_SLEEP + +config SYS_POWER_DEEP_SLEEP_STATES + default y + +choice SYS_PM_POLICY + default SYS_PM_POLICY_APP +endchoice + +config ZMK_IDLE_SLEEP_TIMEOUT + int "Milliseconds to wait to sleep when going idle" + default 900000 + +endif + config ZMK_DISPLAY bool "ZMK display support" default n @@ -112,7 +131,6 @@ config ZMK_SPLIT_BLE_ROLE_CENTRAL config ZMK_SPLIT_BLE_ROLE_PERIPHERAL bool "Peripheral" - select BT_KEYS_OVERWRITE_OLDEST if ZMK_SPLIT_BLE_ROLE_PERIPHERAL diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index cd793243..a0b22e4a 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -73,7 +73,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, }; \ struct kscan_gpio_data_##n { \ kscan_callback_t callback; \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), (struct k_timer poll_timer;)) \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (struct k_timer poll_timer;), ()) \ struct COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work), (k_delayed_work)) work; \ bool matrix_state[INST_MATRIX_ROWS(n)][INST_MATRIX_COLS(n)]; \ struct device *rows[INST_MATRIX_ROWS(n)]; \ @@ -101,7 +101,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, return ( \ COND_CODE_0(DT_ENUM_IDX(DT_DRV_INST(n), diode_direction), (cfg->rows), (cfg->cols))); \ } \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ ( \ static int kscan_gpio_enable_interrupts_##n(struct device *dev) { \ return kscan_gpio_config_interrupts( \ @@ -111,8 +111,7 @@ static int kscan_gpio_config_interrupts(struct device **devices, return kscan_gpio_config_interrupts(kscan_gpio_input_devices_##n(dev), \ kscan_gpio_input_configs_##n(dev), \ INST_INPUT_LEN(n), GPIO_INT_DISABLE); \ - }), \ - ()) \ + })) \ static void kscan_gpio_set_output_state_##n(struct device *dev, int value) { \ int err; \ for (int i = 0; i < INST_OUTPUT_LEN(n); i++) { \ @@ -173,7 +172,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, k_delayed_work_submit(&data->work, K_MSEC(5)); \ })) \ } else { \ - kscan_gpio_enable_interrupts_##n(dev); \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ + (kscan_gpio_enable_interrupts_##n(dev);)) \ } \ return 0; \ } \ @@ -181,17 +181,20 @@ static int kscan_gpio_config_interrupts(struct device **devices, struct kscan_gpio_data_##n *data = CONTAINER_OF(work, struct kscan_gpio_data_##n, work); \ kscan_gpio_read_##n(data->dev); \ } \ - static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ - gpio_port_pins_t pin) { \ - struct kscan_gpio_irq_callback_##n *data = \ - CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ - kscan_gpio_disable_interrupts_##n(data->dev); \ - COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(data->work); }), ({ \ - k_delayed_work_cancel(data->work); \ - k_delayed_work_submit(data->work, \ - K_MSEC(DT_INST_PROP(n, debounce_period))); \ - })) \ - } \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ + (static void kscan_gpio_irq_callback_handler_##n( \ + struct device *dev, struct gpio_callback *cb, gpio_port_pins_t pin) { \ + struct kscan_gpio_irq_callback_##n *data = \ + CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ + kscan_gpio_disable_interrupts_##n(data->dev); \ + COND_CODE_0(DT_INST_PROP(n, debounce_period), \ + ({ k_work_submit(data->work); }), ({ \ + k_delayed_work_cancel(data->work); \ + k_delayed_work_submit( \ + data->work, K_MSEC(DT_INST_PROP(n, debounce_period))); \ + })) \ + })) \ + \ static struct kscan_gpio_data_##n kscan_gpio_data_##n = { \ .rows = {[INST_MATRIX_ROWS(n) - 1] = NULL}, .cols = {[INST_MATRIX_COLS(n) - 1] = NULL}}; \ static int kscan_gpio_configure_##n(struct device *dev, kscan_callback_t callback) { \ @@ -204,24 +207,25 @@ static int kscan_gpio_config_interrupts(struct device **devices, return 0; \ }; \ static int kscan_gpio_enable_##n(struct device *dev) { \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ - (int err = kscan_gpio_enable_interrupts_##n(dev); \ - if (err) { return err; } return kscan_gpio_read_##n(dev);), \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ (struct kscan_gpio_data_##n *data = dev->driver_data; \ - k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); return 0;)) \ + k_timer_start(&data->poll_timer, K_MSEC(10), K_MSEC(10)); return 0;), \ + (int err = kscan_gpio_enable_interrupts_##n(dev); \ + if (err) { return err; } return kscan_gpio_read_##n(dev);)) \ }; \ static int kscan_gpio_disable_##n(struct device *dev) { \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ - (return kscan_gpio_disable_interrupts_##n(dev);), \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ (struct kscan_gpio_data_##n *data = dev->driver_data; \ - k_timer_stop(&data->poll_timer); return 0;)) \ + k_timer_stop(&data->poll_timer); return 0;), \ + (return kscan_gpio_disable_interrupts_##n(dev);)) \ }; \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ (static void kscan_gpio_timer_handler(struct k_timer *timer) { \ struct kscan_gpio_data_##n *data = \ CONTAINER_OF(timer, struct kscan_gpio_data_##n, poll_timer); \ k_work_submit(&data->work.work); \ - })) \ + }), \ + ()) \ static int kscan_gpio_init_##n(struct device *dev) { \ struct kscan_gpio_data_##n *data = dev->driver_data; \ int err; \ @@ -267,8 +271,8 @@ static int kscan_gpio_config_interrupts(struct device **devices, } \ } \ data->dev = dev; \ - COND_CODE_0(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ - (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);)) \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, \ + (k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL);), ()) \ (COND_CODE_0(DT_INST_PROP(n, debounce_period), (k_work_init), (k_delayed_work_init)))( \ &data->work, kscan_gpio_work_handler_##n); \ return 0; \ diff --git a/app/include/dt-bindings/zmk/bt.h b/app/include/dt-bindings/zmk/bt.h index 05fd65c8..a403d35d 100644 --- a/app/include/dt-bindings/zmk/bt.h +++ b/app/include/dt-bindings/zmk/bt.h @@ -18,4 +18,4 @@ defines these aliases up front. #define BT_CLR BT_CLR_CMD 0 #define BT_NXT BT_NXT_CMD 0 #define BT_PRV BT_PRV_CMD 0 -#define BT_SEL BT_SEL_CMD \ No newline at end of file +#define BT_SEL BT_SEL_CMD diff --git a/app/src/power.c b/app/src/power.c new file mode 100644 index 00000000..73b3f123 --- /dev/null +++ b/app/src/power.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +#include + +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +#include +#include +#include +#include + +static u32_t power_last_uptime; + +#define MAX_IDLE_MS CONFIG_ZMK_IDLE_SLEEP_TIMEOUT + +bool is_usb_power_present() { +#ifdef CONFIG_USB + enum usb_dc_status_code usb_status = zmk_usb_get_status(); + switch (usb_status) { + case USB_DC_DISCONNECTED: + case USB_DC_UNKNOWN: + return false; + default: + return true; + } +#else + return false; +#endif /* CONFIG_USB */ +} + +enum power_states sys_pm_policy_next_state(s32_t ticks) { +#ifdef CONFIG_SYS_POWER_DEEP_SLEEP_STATES +#ifdef CONFIG_HAS_SYS_POWER_STATE_DEEP_SLEEP_1 + s32_t current = k_uptime_get(); + if (power_last_uptime > 0 && !is_usb_power_present() && + current - power_last_uptime > MAX_IDLE_MS) { + return SYS_POWER_STATE_DEEP_SLEEP_1; + } +#endif /* CONFIG_HAS_SYS_POWER_STATE_DEEP_SLEEP_1 */ +#endif /* CONFIG_SYS_POWER_DEEP_SLEEP_STATES */ + + return SYS_POWER_STATE_ACTIVE; +} + +int power_event_listener(const struct zmk_event_header *eh) { + power_last_uptime = k_uptime_get(); + + return 0; +} + +int power_init() { + power_last_uptime = k_uptime_get(); + + return 0; +} + +ZMK_LISTENER(power, power_event_listener); +ZMK_SUBSCRIPTION(power, position_state_changed); +ZMK_SUBSCRIPTION(power, sensor_event); + +SYS_INIT(power_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); \ No newline at end of file From d5d8d79a76a9fbe65981d4f5455097e5258d1564 Mon Sep 17 00:00:00 2001 From: David Barr Date: Wed, 7 Oct 2020 16:23:59 +0100 Subject: [PATCH 150/353] Update cradio_right.overlay --- app/boards/shields/cradio/cradio_right.overlay | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/boards/shields/cradio/cradio_right.overlay b/app/boards/shields/cradio/cradio_right.overlay index 09efc53b..232d7d43 100644 --- a/app/boards/shields/cradio/cradio_right.overlay +++ b/app/boards/shields/cradio/cradio_right.overlay @@ -9,7 +9,3 @@ &default_transform { col-offset = <17>; }; - -&bt_unpair_combo { - key-positions = <21 32>; -}; From 2300ce306afadebd5f1987acf8ded6ac228f68e8 Mon Sep 17 00:00:00 2001 From: Ben Huddleston <40238853+BenHuddleston@users.noreply.github.com> Date: Wed, 7 Oct 2020 22:25:21 +0100 Subject: [PATCH 151/353] Correct typo in previous profile behaviour binding in bluetooth.md --- docs/docs/behavior/bluetooth.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/behavior/bluetooth.md b/docs/docs/behavior/bluetooth.md index f802a9a2..8bde71bf 100644 --- a/docs/docs/behavior/bluetooth.md +++ b/docs/docs/behavior/bluetooth.md @@ -66,7 +66,7 @@ The bluetooth behavior completes an bluetooth action given on press. 1. Behavior binding to select the previous profile: ``` - &bt BT_NXT + &bt BT_PRV ``` 1. Behavior binding to select the 2nd profile (passed parameters are [zero based](https://en.wikipedia.org/wiki/Zero-based_numbering)): From f3eaa7e4247321042618a732596f842e5bb104da Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Wed, 7 Oct 2020 20:40:04 -0700 Subject: [PATCH 152/353] working shield, need to improve default keymap --- app/boards/shields/microdox/Kconfig.defconfig | 58 +++++++++++++++ app/boards/shields/microdox/Kconfig.shield | 9 +++ .../shields/microdox/boards/nice_nano.overlay | 29 ++++++++ app/boards/shields/microdox/microdox.conf | 6 ++ app/boards/shields/microdox/microdox.dtsi | 71 +++++++++++++++++++ app/boards/shields/microdox/microdox.keymap | 57 +++++++++++++++ .../shields/microdox/microdox_left.conf | 2 + .../shields/microdox/microdox_left.overlay | 22 ++++++ .../shields/microdox/microdox_right.conf | 2 + .../shields/microdox/microdox_right.overlay | 26 +++++++ 10 files changed, 282 insertions(+) create mode 100644 app/boards/shields/microdox/Kconfig.defconfig create mode 100644 app/boards/shields/microdox/Kconfig.shield create mode 100644 app/boards/shields/microdox/boards/nice_nano.overlay create mode 100644 app/boards/shields/microdox/microdox.conf create mode 100644 app/boards/shields/microdox/microdox.dtsi create mode 100644 app/boards/shields/microdox/microdox.keymap create mode 100644 app/boards/shields/microdox/microdox_left.conf create mode 100644 app/boards/shields/microdox/microdox_left.overlay create mode 100644 app/boards/shields/microdox/microdox_right.conf create mode 100644 app/boards/shields/microdox/microdox_right.overlay diff --git a/app/boards/shields/microdox/Kconfig.defconfig b/app/boards/shields/microdox/Kconfig.defconfig new file mode 100644 index 00000000..218443f9 --- /dev/null +++ b/app/boards/shields/microdox/Kconfig.defconfig @@ -0,0 +1,58 @@ + +if SHIELD_MICRODOX_LEFT + +config ZMK_KEYBOARD_NAME + default "Microdox Left" + +endif + + +if SHIELD_MICRODOX_RIGHT + +config ZMK_KEYBOARD_NAME + default "Microdox Right" + +endif + +if SHIELD_MICRODOX_LEFT || SHIELD_MICRODOX_RIGHT + +config ZMK_SPLIT + default y + +if ZMK_DISPLAY + +config I2C + default y + +config SSD1306 + default y + +config SSD1306_REVERSE_MODE + default y + +endif # ZMK_DISPLAY + +if LVGL + +config LVGL_HOR_RES + default 128 + +config LVGL_VER_RES + default 32 + +config LVGL_VDB_SIZE + default 64 + +config LVGL_DPI + default 148 + +config LVGL_BITS_PER_PIXEL + default 1 + +choice LVGL_COLOR_DEPTH + default LVGL_COLOR_DEPTH_1 +endchoice + +endif # LVGL + +endif diff --git a/app/boards/shields/microdox/Kconfig.shield b/app/boards/shields/microdox/Kconfig.shield new file mode 100644 index 00000000..7d7148de --- /dev/null +++ b/app/boards/shields/microdox/Kconfig.shield @@ -0,0 +1,9 @@ +# Copyright (c) 2020 Pete Johanson +# Copyright (c) 2020 Kellen Carey +# SPDX-License-Identifier: MIT + +config SHIELD_MICRODOX_LEFT + def_bool $(shields_list_contains,microdox_left) + +config SHIELD_MICRODOX_RIGHT + def_bool $(shields_list_contains,microdox_right) diff --git a/app/boards/shields/microdox/boards/nice_nano.overlay b/app/boards/shields/microdox/boards/nice_nano.overlay new file mode 100644 index 00000000..c7c3eb8e --- /dev/null +++ b/app/boards/shields/microdox/boards/nice_nano.overlay @@ -0,0 +1,29 @@ +&spi1 { + compatible = "nordic,nrf-spi"; + /* Cannot be used together with i2c0. */ + status = "okay"; + mosi-pin = <6>; + // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. + sck-pin = <5>; + miso-pin = <7>; + + led_strip: ws2812@0 { + compatible = "worldsemi,ws2812-spi"; + label = "SK6812mini"; + + /* SPI */ + reg = <0>; /* ignored, but necessary for SPI bindings */ + spi-max-frequency = <4000000>; + + /* WS2812 */ + chain-length = <6>; /* There are per-key RGB, but the first 6 are underglow */ + spi-one-frame = <0x70>; + spi-zero-frame = <0x40>; + }; +}; + +/ { + chosen { + zmk,underglow = &led_strip; + }; +}; diff --git a/app/boards/shields/microdox/microdox.conf b/app/boards/shields/microdox/microdox.conf new file mode 100644 index 00000000..b79385bd --- /dev/null +++ b/app/boards/shields/microdox/microdox.conf @@ -0,0 +1,6 @@ +# Uncomment the following lines to enable the Corne RGB Underglow +# ZMK_RGB_UNDERGLOW=y +# CONFIG_WS2812_STRIP=y + +# Uncomment the following line to enable the Corne OLED Display +# CONFIG_ZMK_DISPLAY=y diff --git a/app/boards/shields/microdox/microdox.dtsi b/app/boards/shields/microdox/microdox.dtsi new file mode 100644 index 00000000..bf7950df --- /dev/null +++ b/app/boards/shields/microdox/microdox.dtsi @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2020 Pete Johanson + * Copyright (c) 2020 Kellen Carey + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <10>; + rows = <4>; +// | SW1 | SW2 | SW3 | SW4 | SW5 | | SW5 | SW4 | SW3 | SW2 | SW1 | +// | SW6 | SW7 | SW8 | SW9 | SW10 | | SW10 | SW9 | SW8 | SW7 | SW6 | +// | SW11 | SW12 | SW13 | SW14 | SW15 | | SW15 | SW14 | SW13 | SW12 | SW11 | +// | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) + RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&pro_micro_d 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + }; + + bt_unpair_combo: bt_unpair_combo { + compatible = "zmk,bt-unpair-combo"; + }; + + // TODO: per-key RGB node(s)? +}; + +&pro_micro_i2c { + status = "okay"; + + oled: ssd1306@3c { + compatible = "solomon,ssd1306fb"; + reg = <0x3c>; + label = "DISPLAY"; + width = <128>; + height = <32>; + segment-offset = <0>; + page-offset = <0>; + display-offset = <0>; + multiplex-ratio = <31>; + segment-remap; + com-invdir; + com-sequential; + prechargep = <0x22>; + }; +}; diff --git a/app/boards/shields/microdox/microdox.keymap b/app/boards/shields/microdox/microdox.keymap new file mode 100644 index 00000000..fa43a637 --- /dev/null +++ b/app/boards/shields/microdox/microdox.keymap @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { +// ----------------------------------------------------------------------------------------- +// | TAB | Q | W | E | R | T | | Y | U | I | O | P | BKSP | +// | CTRL | A | S | D | F | G | | H | J | K | L | ; | ' | +// | SHFT | Z | X | C | V | B | | N | M | , | . | / | SHFT | +// | GUI | LWR | SPC | | ENT | RSE | ALT | + bindings = < + &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P + &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN + &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH + &kp LGUI &mo 1 &kp SPC &kp RET &mo 2 &kp RALT + >; + }; + lower_layer { +// ----------------------------------------------------------------------------------------- +// | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BKSP | +// | BTCLR| BT1 | BT2 | BT3 | BT4 | BT5 | | LFT | DWN | UP | RGT | | | +// | SHFT | | | | | | | | | | | | | +// | GUI | | SPC | | ENT | | ALT | + bindings = < + &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 + &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp LARW &kp DARW &kp UARW &kp RARW &trans + &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans + &kp LGUI &trans &kp SPC &kp RET &trans &kp RALT + >; + }; + + raise_layer { +// ----------------------------------------------------------------------------------------- +// | ESC | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BKSP | +// | CTRL | | | | | | | - | = | { | } | "|" | ` | +// | SHFT | | | | | | | _ | + | [ | ] | \ | ~ | // TODO: Fix this row when &mkp is committed +// | GUI | | SPC | | ENT | | ALT | + bindings = < + &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN + &trans &trans &trans &trans &trans &kp MINUS &kp EQL &kp LBKT &kp RBKT &kp PIPE + &trans &trans &trans &trans &trans &trans &trans &trans &trans &kp BSLH + &kp LGUI &trans &kp SPC &kp RET &trans &kp RALT + >; + }; + }; +}; + diff --git a/app/boards/shields/microdox/microdox_left.conf b/app/boards/shields/microdox/microdox_left.conf new file mode 100644 index 00000000..1e028a78 --- /dev/null +++ b/app/boards/shields/microdox/microdox_left.conf @@ -0,0 +1,2 @@ +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y diff --git a/app/boards/shields/microdox/microdox_left.overlay b/app/boards/shields/microdox/microdox_left.overlay new file mode 100644 index 00000000..0a3f823a --- /dev/null +++ b/app/boards/shields/microdox/microdox_left.overlay @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 Pete Johanson + * Copyright (c) 2020 Kellen Carey + * + * SPDX-License-Identifier: MIT + */ + +#include "microdox.dtsi" + +&kscan0 { + col-gpios + = <&pro_micro_a 3 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 2 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + ; +}; + +&bt_unpair_combo { + key-positions = <0 38>; +}; diff --git a/app/boards/shields/microdox/microdox_right.conf b/app/boards/shields/microdox/microdox_right.conf new file mode 100644 index 00000000..990cf7c0 --- /dev/null +++ b/app/boards/shields/microdox/microdox_right.conf @@ -0,0 +1,2 @@ +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL=y diff --git a/app/boards/shields/microdox/microdox_right.overlay b/app/boards/shields/microdox/microdox_right.overlay new file mode 100644 index 00000000..2638a398 --- /dev/null +++ b/app/boards/shields/microdox/microdox_right.overlay @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2020 Pete Johanson + * Copyright (c) 2020 Kellen Carey + * + * SPDX-License-Identifier: MIT + */ + +#include "microdox.dtsi" + +&default_transform { + col-offset = <5>; +}; + +&kscan0 { + col-gpios + = <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 2 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 3 GPIO_ACTIVE_HIGH> + ; +}; + +&bt_unpair_combo { + key-positions = <9 35>; +}; From ca29c40206031f95525c29750650013efc0e56f1 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Wed, 7 Oct 2020 21:22:08 -0700 Subject: [PATCH 153/353] clean up keymap --- app/boards/shields/microdox/microdox.keymap | 52 +++++++++++++-------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/app/boards/shields/microdox/microdox.keymap b/app/boards/shields/microdox/microdox.keymap index fa43a637..916141c7 100644 --- a/app/boards/shields/microdox/microdox.keymap +++ b/app/boards/shields/microdox/microdox.keymap @@ -14,37 +14,37 @@ default_layer { // ----------------------------------------------------------------------------------------- -// | TAB | Q | W | E | R | T | | Y | U | I | O | P | BKSP | -// | CTRL | A | S | D | F | G | | H | J | K | L | ; | ' | -// | SHFT | Z | X | C | V | B | | N | M | , | . | / | SHFT | -// | GUI | LWR | SPC | | ENT | RSE | ALT | +// | Q | W | E | R | T | | Y | U | I | O | P | +// | A | S | D | F | G | | H | J | K | L | ; | +// | Z | X | C | V | B | | N | M | , | . | / | +// | GUI | NAV | SHFT | | SPC | SYM | ALT | bindings = < &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH - &kp LGUI &mo 1 &kp SPC &kp RET &mo 2 &kp RALT + &kp LGUI &mo 1 &kp LSFT &kp SPC &mo 2 &kp RALT >; }; - lower_layer { + nav_layer { // ----------------------------------------------------------------------------------------- -// | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BKSP | -// | BTCLR| BT1 | BT2 | BT3 | BT4 | BT5 | | LFT | DWN | UP | RGT | | | -// | SHFT | | | | | | | | | | | | | -// | GUI | | SPC | | ENT | | ALT | +// | | | ESC | ~ | | | TAB | HOME | UP | END | DEL | +// | | GUI | ALT | CTRL | NUM | | / | LEFT | DOWN | RGT | BKSP | +// | | | | | | | \ | ENT | | | | +// | | | | | | | | bindings = < - &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 - &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp LARW &kp DARW &kp UARW &kp RARW &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &kp LGUI &trans &kp SPC &kp RET &trans &kp RALT + &trans &trans &kp ESC &kp TILD &trans &kp TAB &kp HOME &kp UARW &kp END &kp DEL + &trans &kp GUI &kp RALT &kp LCTL &mo 3 &kp FSLH &kp LARW &kp DARW &kp RARW &kp BKSP + &trans &trans &trans &trans &trans &kp BSLH &kp RET &trans &trans &trans + &trans &trans &trans &trans &trans &trans >; }; - raise_layer { + sym_layer { // ----------------------------------------------------------------------------------------- -// | ESC | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BKSP | -// | CTRL | | | | | | | - | = | { | } | "|" | ` | -// | SHFT | | | | | | | _ | + | [ | ] | \ | ~ | // TODO: Fix this row when &mkp is committed -// | GUI | | SPC | | ENT | | ALT | +// | ! | @ | # | $ | % | | ^ | & | * | ( | ) | +// | | | | | | | - | = | { | } | "|" | +// | | | | | | | _ | + | [ | ] | \ | +// | GUI | | SPC | | ENT | | ALT | bindings = < &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN &trans &trans &trans &trans &trans &kp MINUS &kp EQL &kp LBKT &kp RBKT &kp PIPE @@ -52,6 +52,20 @@ &kp LGUI &trans &kp SPC &kp RET &trans &kp RALT >; }; + + num_layer { +// ----------------------------------------------------------------------------------------- +// | | | | | | | A | 7 | 8 | 9 | D | +// | | | | | | | B | 4 | 5 | 6 | E | +// | | | | | | | C | 1 | 2 | 3 | F | +// | | | | | 0 | . | | + bindings = < + &trans &trans &trans &trans &trans &kp A &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp D + &trans &trans &trans &trans &trans &kp B &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp E + &trans &trans &trans &trans &trans &kp C &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp F + &trans &trans &trans &kp NUM_0 &kp DOT &trans + >; + }; }; }; From 426b25892f2fd6c569b9d0b983fd7fbaff6c9d93 Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:09:35 +0100 Subject: [PATCH 154/353] rename gpio to direct polling --- app/boards/shields/cradio/Kconfig.defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/boards/shields/cradio/Kconfig.defconfig b/app/boards/shields/cradio/Kconfig.defconfig index 46799b9e..43509a47 100644 --- a/app/boards/shields/cradio/Kconfig.defconfig +++ b/app/boards/shields/cradio/Kconfig.defconfig @@ -4,7 +4,7 @@ config ZMK_KEYBOARD_NAME default "cradio" -config ZMK_KSCAN_GPIO_POLLING +config ZMK_KSCAN_DIRECT_POLLING default y From 7d582b6b8e16cf64cadf27dacba050dfb88d543a Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:11:01 +0100 Subject: [PATCH 155/353] remove dupe copyright --- app/boards/shields/cradio/cradio_left.overlay | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/boards/shields/cradio/cradio_left.overlay b/app/boards/shields/cradio/cradio_left.overlay index 6caf8e3d..61fc3bd7 100644 --- a/app/boards/shields/cradio/cradio_left.overlay +++ b/app/boards/shields/cradio/cradio_left.overlay @@ -1,6 +1,4 @@ /* - * Copyright (c) 2020 Pete Johanson - * * Copyright (c) 2020 The ZMK Contributors */ From 95b94009a9b3b9b953220ab48f0276fc5a083499 Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:11:40 +0100 Subject: [PATCH 156/353] remove dupe copyright --- app/boards/shields/cradio/cradio_right.overlay | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/boards/shields/cradio/cradio_right.overlay b/app/boards/shields/cradio/cradio_right.overlay index 232d7d43..1c06006f 100644 --- a/app/boards/shields/cradio/cradio_right.overlay +++ b/app/boards/shields/cradio/cradio_right.overlay @@ -1,6 +1,4 @@ /* - * Copyright (c) 2020 Pete Johanson - * * Copyright (c) 2020 The ZMK Contributors */ From 24e73f68610a9a4a1497c6e7737b615d6181836b Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:12:04 +0100 Subject: [PATCH 157/353] Update cradio.dtsi --- app/boards/shields/cradio/cradio.dtsi | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/boards/shields/cradio/cradio.dtsi b/app/boards/shields/cradio/cradio.dtsi index 582f58a4..d32d2ed3 100644 --- a/app/boards/shields/cradio/cradio.dtsi +++ b/app/boards/shields/cradio/cradio.dtsi @@ -1,6 +1,4 @@ /* - * Copyright (c) 2020 Pete Johanson - * * Copyright (c) 2020 The ZMK Contributors */ From a3cdab9e9f9940a854ec68e60622443ae376183e Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:14:46 +0100 Subject: [PATCH 158/353] update header --- app/boards/shields/cradio/cradio.keymap | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/boards/shields/cradio/cradio.keymap b/app/boards/shields/cradio/cradio.keymap index c46468dd..1d11cfd6 100644 --- a/app/boards/shields/cradio/cradio.keymap +++ b/app/boards/shields/cradio/cradio.keymap @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + + #include #include From 55c1f51b3147490d994d846907e9fd99039e4e8b Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:16:08 +0100 Subject: [PATCH 159/353] update header --- app/boards/shields/cradio/cradio_right.overlay | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/boards/shields/cradio/cradio_right.overlay b/app/boards/shields/cradio/cradio_right.overlay index 1c06006f..fea59c23 100644 --- a/app/boards/shields/cradio/cradio_right.overlay +++ b/app/boards/shields/cradio/cradio_right.overlay @@ -1,5 +1,7 @@ /* - * Copyright (c) 2020 The ZMK Contributors + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT */ #include "cradio.dtsi" From eeac54e9a4f24e5a455cbc52ba0930a10d2bcfc9 Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:16:28 +0100 Subject: [PATCH 160/353] Update cradio_left.overlay --- app/boards/shields/cradio/cradio_left.overlay | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/boards/shields/cradio/cradio_left.overlay b/app/boards/shields/cradio/cradio_left.overlay index 61fc3bd7..cac95757 100644 --- a/app/boards/shields/cradio/cradio_left.overlay +++ b/app/boards/shields/cradio/cradio_left.overlay @@ -1,4 +1,5 @@ /* - * Copyright (c) 2020 The ZMK Contributors + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT */ - From a629aa0b42caf6a86152ef5eedc6160b90200627 Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:17:53 +0100 Subject: [PATCH 161/353] Update Kconfig.defconfig --- app/boards/shields/cradio/Kconfig.defconfig | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/boards/shields/cradio/Kconfig.defconfig b/app/boards/shields/cradio/Kconfig.defconfig index 43509a47..1043c7e9 100644 --- a/app/boards/shields/cradio/Kconfig.defconfig +++ b/app/boards/shields/cradio/Kconfig.defconfig @@ -1,8 +1,20 @@ # Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT +if SHIELD_CRADIO_LEFT + config ZMK_KEYBOARD_NAME - default "cradio" + default "Cradio Left" + +endif + + +if SHIELD_CRADIO_RIGHT + +config ZMK_KEYBOARD_NAME + default "Cradio Right" + +endif config ZMK_KSCAN_DIRECT_POLLING default y From ad77df59897ae973824377373665a4fdc6542d3c Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:20:22 +0100 Subject: [PATCH 162/353] capital C --- app/boards/shields/cradio/Kconfig.defconfig | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/app/boards/shields/cradio/Kconfig.defconfig b/app/boards/shields/cradio/Kconfig.defconfig index 1043c7e9..5f8bb80d 100644 --- a/app/boards/shields/cradio/Kconfig.defconfig +++ b/app/boards/shields/cradio/Kconfig.defconfig @@ -1,20 +1,8 @@ # Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT -if SHIELD_CRADIO_LEFT - config ZMK_KEYBOARD_NAME - default "Cradio Left" - -endif - - -if SHIELD_CRADIO_RIGHT - -config ZMK_KEYBOARD_NAME - default "Cradio Right" - -endif + default "Cradio" config ZMK_KSCAN_DIRECT_POLLING default y From 2b09174ec1a171e043018cbe28e47d86025ce1de Mon Sep 17 00:00:00 2001 From: David Barr Date: Thu, 8 Oct 2020 11:22:34 +0100 Subject: [PATCH 163/353] update header again based on corne --- app/boards/shields/cradio/cradio.dtsi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/boards/shields/cradio/cradio.dtsi b/app/boards/shields/cradio/cradio.dtsi index d32d2ed3..ab22e929 100644 --- a/app/boards/shields/cradio/cradio.dtsi +++ b/app/boards/shields/cradio/cradio.dtsi @@ -1,5 +1,7 @@ /* - * Copyright (c) 2020 The ZMK Contributors + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT */ #include From a8d48b043d0913e2f4e15d34547989d78b1b8088 Mon Sep 17 00:00:00 2001 From: Tyler Walker Date: Thu, 8 Oct 2020 18:42:55 -0400 Subject: [PATCH 164/353] add benign uf2 transfer error for macOS to troubleshooting --- .../assets/troubleshooting/filetransfer/mac.png | Bin 0 -> 26499 bytes docs/docs/troubleshooting.md | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 docs/docs/assets/troubleshooting/filetransfer/mac.png diff --git a/docs/docs/assets/troubleshooting/filetransfer/mac.png b/docs/docs/assets/troubleshooting/filetransfer/mac.png new file mode 100644 index 0000000000000000000000000000000000000000..f28ca8d78369ec7b4cdfb2fd20f7cd3032cb454c GIT binary patch literal 26499 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 K-1SHt4qw0YvK zKP>!>Xk%-u8faH#=;zm1V%iM3=u(S0wsZ+9-v!N8H+eHrrFg`bj*cYPrx848hQDLrtq4~f6++39!a9?5Bga1X% zqD%_n0EaFQOaE=>{{#|BI0~EjN!h=nnZGPSnGiHr^grg~13EZ7G|tyIU!$!TJ0ZqE3BHxTVl=46jH4Zr#JzuK(c!5F{yd1}h;+B~^Z^GN4o{x&8Hj1~{?{rO$_1&eMp1Cruxh>6U+IdW*-AEY z=6!1UQ~mcg`}^}j=AY{TFXsq25+SD<0f%&6D@2K5b)R#~WgnbiozD s6yremh$rlNrBw!%Hq(IW@cR|IqqMH+OVD`db!TWrIaS%x2j(IF2R8r@?f?J) literal 0 HcmV?d00001 diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index deb89b64..2e5e9899 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -19,6 +19,10 @@ Variations of the warnings shown below occur when flashing the `.uf2` | :-------------------------------------------------------------------------------: | | An example of the file transfer error on Linux | +| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/mac.png) | +| :-------------------------------------------------------------------------------: | +| An example of the file transfer error on MacOS | + ### CMake Error From ea05df029086a47d0b0e33fe882801009e3b6872 Mon Sep 17 00:00:00 2001 From: Kevin Date: Thu, 8 Oct 2020 21:44:32 -0700 Subject: [PATCH 165/353] docs: Added link to clarify where to add sensor-bindings code --- docs/docs/dev-guide-new-shield.md | 10 +++++++--- docs/docs/feature/encoders.md | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 01aad30c..1ba572c5 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -238,7 +238,6 @@ If building locally for split boards, you may need to add these lines to the spe In your device tree file you will need to add the following lines to define the encoder sensor: - ``` left_encoder: encoder_left { compatible = "alps,ec11"; @@ -248,6 +247,7 @@ left_encoder: encoder_left { resolution = <4>; }; ``` + Here you will have to replace PIN_A and PIN_B with the appropriate pins that your PCB utilizes for the encoder(s). For keyboards that use the Pro Micro or any of the Pro Micro replacements, Sparkfun's [Pro Micro Hookup Guide](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro) has a pinout diagram that can be useful to determine the right pins. Reference either the blue numbers labeled "Arduino" (digital pins) or the green numbers labeled "Analog" (analog pins). For pins that are labeled as both digital and analog, refer to your specific board's .dtsi file to determine how you should refer to that pin. Add additional encoders as necessary by duplicating the above lines, replacing `left` with whatever you would like to call your encoder, and updating the pins. Note that support for peripheral (right) side sensors over BLE is still in progress. @@ -279,12 +279,15 @@ For split keyboards, make sure to add left hand encoders to the left .overlay fi -Add the following line to your keymap file to add default encoder behavior bindings: +Add the following line to each layer of your keymap file to add default encoder behavior bindings: ``` sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; ``` -Add additional bindings as necessary to match the default number of encoders on your board. See the [Encoders](/docs/feature/encoders) and [Keymap](/docs/feature/keymaps) feature documentation for more details. + +This should be placed after the regular key bindings but within the layer (see the [Default Keymap section](/docs/dev-guide-new-shield#default-keymap) above for an example of where). + +Add additional bindings as necessary to match the default number of encoders on your board. Details on the syntax can be found in the [Encoders](/docs/feature/encoders) and [Keymap](/docs/feature/keymaps) feature documentation. @@ -333,6 +336,7 @@ jobs: - board: proton_c shield: clueboard_california ``` + :::note Notice that both the left and right halves of a split board need to be added to the list of shields for proper error checking. :::note diff --git a/docs/docs/feature/encoders.md b/docs/docs/feature/encoders.md index 38ff9d31..9caccc2f 100644 --- a/docs/docs/feature/encoders.md +++ b/docs/docs/feature/encoders.md @@ -41,4 +41,4 @@ Here, the left encoder is configured to control volume up and down while the rig ## Adding Encoder Support -See the [New Keyboard Shield](/docs/dev-guide-new-shield) documentation for how to add or modify additional encoders to your shield. +See the [New Keyboard Shield](/docs/dev-guide-new-shield#encoders) documentation for how to add or modify additional encoders to your shield. From 59a804f751a2eec2b62b91fbde1f69535376d63c Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 9 Oct 2020 01:05:50 -0400 Subject: [PATCH 166/353] fix(actions): Upload UF2 for all compatible boards --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 454ab796..60c337de 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -75,7 +75,7 @@ jobs: args: 'build "-s app -b ${{ matrix.board }} -- -DSHIELD=${{ matrix.shield }}"' - name: Archive Build uses: actions/upload-artifact@v2 - if: ${{ matrix.board == 'nice_nano' }} + if: ${{ matrix.board != 'proton_c' }} with: name: "${{ matrix.board }}-${{ matrix.shield }}-zmk-uf2" path: build/zephyr/zmk.uf2 From a9ec1148e50ff0601f82c9eb55b90c33e7c70dab Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Thu, 8 Oct 2020 22:16:53 -0700 Subject: [PATCH 167/353] Added -DZMK_CONFIG Documentation --- docs/docs/dev-build.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/docs/dev-build.md b/docs/docs/dev-build.md index 816468e2..a7c1cd91 100644 --- a/docs/docs/dev-build.md +++ b/docs/docs/dev-build.md @@ -84,6 +84,19 @@ west build -d build/right -b nice_nano -- -DSHIELD=kyria_right ``` This produces `left` and `right` subfolders under the `build` directory and two separate .uf2 files. For future work on a specific half, use the `-d` parameter again to ensure you are building into the correct location. +### Building from `zmk-config` Folder + +Instead of building .uf2 files using the default keymap and config files, you can build directly from your [`zmk-config` folder](user-setup.md) by adding +`-DZMK_CONFIG="C:/the/absolute/path/config"` to your `west build` command. **Notice that this path should point to the folder labelled `config` within your `zmk-config` folder.** + + +For instance, building kyria firmware from a user `myUser`'s `zmk-config` folder on Windows 10 may look something like this: + +``` +west build -b nice_nano -- -DSHIELD=kyria_left -DZMK_CONFIG="C:/Users/myUser/Documents/Github/zmk-config/config" +``` + + ## Flashing Once built, the previously supplied parameters will be remembered so you can run the following to flash your From 49315c2f6df6c17966dafa5a97668774a6a65bb0 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Thu, 8 Oct 2020 22:18:53 -0700 Subject: [PATCH 168/353] Addressing Issue #181 --- docs/docs/dev-guide-new-shield.md | 135 ++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 01aad30c..ee489155 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -21,6 +21,10 @@ The high level steps are: It may be helpful to review the upstream [shields documentation](https://docs.zephyrproject.org/2.3.0/guides/porting/shields.html#shields) to get a proper understanding of the underlying system before continuing. +:::note +ZMK support for split keyboards requires a few more files than single boards to ensure proper connectivity between the central and peripheral units. Check the following guides thoroughly to ensure that all the files are in place. +::: + ## New Shield Directory Shields for Zephyr applications go into the `boards/shields/` directory; since ZMK's Zephyr application lives in the `app/` subdirectory of the repository, that means the new shield directory should be: @@ -45,6 +49,16 @@ config SHIELD_MY_BOARD This will make sure the new configuration `SHIELD_MY_BOARD` is set to true whenever `my_board` is added as a shield in your build. + +**For split boards**, you will need to add configurations for the left and right sides. +``` +config SHIELD_MY_BOARD_LEFT + def_bool $(shields_list_contains,my_board_left) + +config SHIELD_MY_BOARD_RIGHT + def_bool $(shields_list_contains,my_board_right) +``` + ### Kconfig.defconfig The `Kconfig.defconfig` file is where overrides for various configuration settings @@ -63,6 +77,26 @@ config ZMK_KEYBOARD_NAME endif ``` + +Similarly to defining the halves of a split board in `Kconfig.shield` it is important to set the `ZMK_KEYBOARD_NAME` for each half of a split keyboard. + +``` +if SHIELD_MY_BOARD_LEFT + +config ZMK_KEYBOARD_NAME + default "My Awesome Keyboard Left" + +endif + +if SHIELD_MY_BOARD_RIGHT + +config ZMK_KEYBOARD_NAME + default "My Awesome Keyboard Right" + +endif +``` + + ## Shield Overlay ![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) @@ -98,6 +132,74 @@ this might look something like: }; ``` +:::note +For split keyboards, it is preferred to define only the `col-gpios` or `row-gpios` in the common shield .dtsi, depending on the diode-direction. +For `col2row` directed boards like the iris, a sample kscan in the .dtsi folder would look like this: + +``` +kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&pro_micro_d 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + }; +``` + +The missing `col-gpios` would be defined in your `_left.overlay` and `_right.overlay` files. +Keep in mind that the mirrored position of the GPIOs means that the `col-gpios` will appear reversed when the .overlay files are compared to one another. +This is exemplified with the iris .overlay files. + +``` +// iris_left.overlay + +#include "iris.dtsi" // Notice that the main dtsi files are included in the overlay. + +&kscan0 { + col-gpios + = <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 10 GPIO_ACTIVE_HIGH> + ; +}; +``` + +``` +// iris_right.overlay + +#include "iris.dtsi" + +&default_transform { // The matrix transform for this board is 6 columns over because the matrix on the left side is 6 columns wide. + col-offset = <6>; +}; + +&kscan0 { + col-gpios + = <&pro_micro_d 10 GPIO_ACTIVE_HIGH> //&pro_micro_a 1 in the left side + , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> //&pro_micro_a 0 in the left side + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> //&pro_micro_d 15 in the left side + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> //&pro_micro_d 14 in the left side + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> //&pro_micro_d 16 in the left side + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> //&pro_micro_d 10 in the left side + ; +}; + +``` + +Split keyboards, will often use [Matrix Transform](#optional-matrix-transform) to account for their thumb clusters and other oddities. + +::: + ## (Optional) Matrix Transform Internally ZMK translates all row/column events into "key position" events to maintain a consistent model that works no matter what any possible GPIO matrix may look like for a certain keyboard. This is particularly helpful when: @@ -289,6 +391,39 @@ Add additional bindings as necessary to match the default number of encoders on +## (Split Keyboards Only) .conf files + +While normal boards only have one .conf file that applies configuration characteristics to the entire board, split keyboards are unique in that they contain multiple .conf files +with different scopes. For example, a split board called `my_awesome_split_board` would have the following files: + +* `my_awesome_split_board.conf` - Configuration elements affect both halves +* `my_awesome_split_board_left.conf` - Configuration elements only affect left half +* `my_awesome_split_board_right.conf` - Configuration elements only affect right half + +The discrete .conf files for each half allows the user to define the central and peripheral sides of the split, like so: + +``` +// Central Half + +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y +``` + +``` +// Peripheral Half + +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y +``` + +Using the .conf file that affects both halves of a split board would be for circumstances like deep-sleep or _. + +``` +// Global .conf + +CONFIG_ZMK_SLEEP=y +``` + ## Testing Once you've fully created the new keyboard shield definition, From dbda99a3788fb27d258a7c5b9c8f56638f190d65 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Thu, 8 Oct 2020 22:19:26 -0700 Subject: [PATCH 169/353] Addressed Issue #181 --- docs/docs/dev-guide-new-shield.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index ee489155..b8f1a194 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -403,14 +403,14 @@ with different scopes. For example, a split board called `my_awesome_split_board The discrete .conf files for each half allows the user to define the central and peripheral sides of the split, like so: ``` -// Central Half +// Central Half (Usually the left side: my_awesome_split_board_left.conf) CONFIG_ZMK_SPLIT=y CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y ``` ``` -// Peripheral Half +// Peripheral Half (Usually the right side: my_awesome_split_board_right.conf) CONFIG_ZMK_SPLIT=y CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y @@ -419,7 +419,7 @@ CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y Using the .conf file that affects both halves of a split board would be for circumstances like deep-sleep or _. ``` -// Global .conf +// my_awesome_split_board.conf CONFIG_ZMK_SLEEP=y ``` From c27d3c66f150a0adfa19a2dd6c2bd64544c261a7 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Thu, 8 Oct 2020 22:21:49 -0700 Subject: [PATCH 170/353] Removed blank space --- docs/docs/dev-guide-new-shield.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index b8f1a194..9c0a2651 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -416,7 +416,7 @@ CONFIG_ZMK_SPLIT=y CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y ``` -Using the .conf file that affects both halves of a split board would be for circumstances like deep-sleep or _. +Using the .conf file that affects both halves of a split board would be for circumstances like deep-sleep. ``` // my_awesome_split_board.conf From a58a8412c7335df27077cc9647444f014b6a094e Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Fri, 9 Oct 2020 08:15:38 -0700 Subject: [PATCH 171/353] Documented Issue #220 --- docs/docs/bond-reset.md | 4 ++-- docs/docs/troubleshooting.md | 13 +++++++++++++ docs/sidebars.js | 1 - 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/docs/bond-reset.md b/docs/docs/bond-reset.md index 1ba79ee0..504fd72a 100644 --- a/docs/docs/bond-reset.md +++ b/docs/docs/bond-reset.md @@ -1,7 +1,7 @@ --- id: bond-reset -title: Reset BLE Connections -sidebar_label: BLE Reset +title: Reset BLE Connections (DEPRECATED) +sidebar_label: BLE Reset (DEPRECATED) --- Known as a 'bond reset', each keyboard has a special key combination independent of the user defined key map which will diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index deb89b64..8dd12614 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -59,3 +59,16 @@ After opening the `.dts.pre.tmp:` and scrolling down to the | ![Healthy Keymap Temp](../docs/assets/troubleshooting/keymaps/healthyEDIT.png) | | :-------------------------------------------------------------------------------: | | A properly defined keymap with successful compilation. As shown in red, the corrected keycode (`&kp SPC`) references the proper Usage ID defined in the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12)| + +### Split Keyboard Halves Unable to Pair + +The previous method of pairing split keyboard halves involved a **BLE Reset** with a specific combination of held keys that would remove all bluetooth profile information from the keyboard. +Since then, a much simpler procedure of performing a bluetooth reset for split keyboards has come about, without the need for any file modification: + +1. Log into Github and download the "settings clear" UF2 image from latest GH actions from the `main` of ZMK +1. Put both sides into bootloader mode +1. Flash both sides with the "settings clear" UF2 images from step 1. After, put both sides into bootloader mode again. +1. Flash the actual image for each half of the split keyboard + +After completing these steps, pair the halves of the split keyboard together by resetting them at the same time. Most commonly, this is done by grounding the reset pins +for each of your keyboard's microcontrollers or pressing the reset buttons at the same time. \ No newline at end of file diff --git a/docs/sidebars.js b/docs/sidebars.js index ace7fa17..93ce2264 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -6,7 +6,6 @@ module.exports = { "faq", "user-setup", "customization", - "bond-reset", "troubleshooting" ], Features: [ From aca801d90ffcc12076244626dc0d4b239df25ab4 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Fri, 9 Oct 2020 08:19:08 -0700 Subject: [PATCH 172/353] Revert "Removed blank space" This reverts commit c27d3c66f150a0adfa19a2dd6c2bd64544c261a7. --- docs/docs/dev-guide-new-shield.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 9c0a2651..b8f1a194 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -416,7 +416,7 @@ CONFIG_ZMK_SPLIT=y CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y ``` -Using the .conf file that affects both halves of a split board would be for circumstances like deep-sleep. +Using the .conf file that affects both halves of a split board would be for circumstances like deep-sleep or _. ``` // my_awesome_split_board.conf From 429c9dc464c38bb0604a3ebe55151b451580d8ca Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Fri, 9 Oct 2020 08:19:40 -0700 Subject: [PATCH 173/353] Revert "Addressed Issue #181" This reverts commit dbda99a3788fb27d258a7c5b9c8f56638f190d65. --- docs/docs/dev-guide-new-shield.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index b8f1a194..ee489155 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -403,14 +403,14 @@ with different scopes. For example, a split board called `my_awesome_split_board The discrete .conf files for each half allows the user to define the central and peripheral sides of the split, like so: ``` -// Central Half (Usually the left side: my_awesome_split_board_left.conf) +// Central Half CONFIG_ZMK_SPLIT=y CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y ``` ``` -// Peripheral Half (Usually the right side: my_awesome_split_board_right.conf) +// Peripheral Half CONFIG_ZMK_SPLIT=y CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y @@ -419,7 +419,7 @@ CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y Using the .conf file that affects both halves of a split board would be for circumstances like deep-sleep or _. ``` -// my_awesome_split_board.conf +// Global .conf CONFIG_ZMK_SLEEP=y ``` From e03b51fe2ea5dfbedcc7747ac64899b5d0999a04 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Fri, 9 Oct 2020 08:19:46 -0700 Subject: [PATCH 174/353] Revert "Addressing Issue #181" This reverts commit 49315c2f6df6c17966dafa5a97668774a6a65bb0. --- docs/docs/dev-guide-new-shield.md | 135 ------------------------------ 1 file changed, 135 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index ee489155..01aad30c 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -21,10 +21,6 @@ The high level steps are: It may be helpful to review the upstream [shields documentation](https://docs.zephyrproject.org/2.3.0/guides/porting/shields.html#shields) to get a proper understanding of the underlying system before continuing. -:::note -ZMK support for split keyboards requires a few more files than single boards to ensure proper connectivity between the central and peripheral units. Check the following guides thoroughly to ensure that all the files are in place. -::: - ## New Shield Directory Shields for Zephyr applications go into the `boards/shields/` directory; since ZMK's Zephyr application lives in the `app/` subdirectory of the repository, that means the new shield directory should be: @@ -49,16 +45,6 @@ config SHIELD_MY_BOARD This will make sure the new configuration `SHIELD_MY_BOARD` is set to true whenever `my_board` is added as a shield in your build. - -**For split boards**, you will need to add configurations for the left and right sides. -``` -config SHIELD_MY_BOARD_LEFT - def_bool $(shields_list_contains,my_board_left) - -config SHIELD_MY_BOARD_RIGHT - def_bool $(shields_list_contains,my_board_right) -``` - ### Kconfig.defconfig The `Kconfig.defconfig` file is where overrides for various configuration settings @@ -77,26 +63,6 @@ config ZMK_KEYBOARD_NAME endif ``` - -Similarly to defining the halves of a split board in `Kconfig.shield` it is important to set the `ZMK_KEYBOARD_NAME` for each half of a split keyboard. - -``` -if SHIELD_MY_BOARD_LEFT - -config ZMK_KEYBOARD_NAME - default "My Awesome Keyboard Left" - -endif - -if SHIELD_MY_BOARD_RIGHT - -config ZMK_KEYBOARD_NAME - default "My Awesome Keyboard Right" - -endif -``` - - ## Shield Overlay ![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) @@ -132,74 +98,6 @@ this might look something like: }; ``` -:::note -For split keyboards, it is preferred to define only the `col-gpios` or `row-gpios` in the common shield .dtsi, depending on the diode-direction. -For `col2row` directed boards like the iris, a sample kscan in the .dtsi folder would look like this: - -``` -kscan0: kscan { - compatible = "zmk,kscan-gpio-matrix"; - label = "KSCAN"; - - diode-direction = "col2row"; - row-gpios - = <&pro_micro_d 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro_d 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro_d 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro_d 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&pro_micro_d 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - ; - - }; -``` - -The missing `col-gpios` would be defined in your `_left.overlay` and `_right.overlay` files. -Keep in mind that the mirrored position of the GPIOs means that the `col-gpios` will appear reversed when the .overlay files are compared to one another. -This is exemplified with the iris .overlay files. - -``` -// iris_left.overlay - -#include "iris.dtsi" // Notice that the main dtsi files are included in the overlay. - -&kscan0 { - col-gpios - = <&pro_micro_a 1 GPIO_ACTIVE_HIGH> - , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> - , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> - , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> - , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> - , <&pro_micro_d 10 GPIO_ACTIVE_HIGH> - ; -}; -``` - -``` -// iris_right.overlay - -#include "iris.dtsi" - -&default_transform { // The matrix transform for this board is 6 columns over because the matrix on the left side is 6 columns wide. - col-offset = <6>; -}; - -&kscan0 { - col-gpios - = <&pro_micro_d 10 GPIO_ACTIVE_HIGH> //&pro_micro_a 1 in the left side - , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> //&pro_micro_a 0 in the left side - , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> //&pro_micro_d 15 in the left side - , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> //&pro_micro_d 14 in the left side - , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> //&pro_micro_d 16 in the left side - , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> //&pro_micro_d 10 in the left side - ; -}; - -``` - -Split keyboards, will often use [Matrix Transform](#optional-matrix-transform) to account for their thumb clusters and other oddities. - -::: - ## (Optional) Matrix Transform Internally ZMK translates all row/column events into "key position" events to maintain a consistent model that works no matter what any possible GPIO matrix may look like for a certain keyboard. This is particularly helpful when: @@ -391,39 +289,6 @@ Add additional bindings as necessary to match the default number of encoders on -## (Split Keyboards Only) .conf files - -While normal boards only have one .conf file that applies configuration characteristics to the entire board, split keyboards are unique in that they contain multiple .conf files -with different scopes. For example, a split board called `my_awesome_split_board` would have the following files: - -* `my_awesome_split_board.conf` - Configuration elements affect both halves -* `my_awesome_split_board_left.conf` - Configuration elements only affect left half -* `my_awesome_split_board_right.conf` - Configuration elements only affect right half - -The discrete .conf files for each half allows the user to define the central and peripheral sides of the split, like so: - -``` -// Central Half - -CONFIG_ZMK_SPLIT=y -CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y -``` - -``` -// Peripheral Half - -CONFIG_ZMK_SPLIT=y -CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y -``` - -Using the .conf file that affects both halves of a split board would be for circumstances like deep-sleep or _. - -``` -// Global .conf - -CONFIG_ZMK_SLEEP=y -``` - ## Testing Once you've fully created the new keyboard shield definition, From 7128808bbafd198a2d3b7275a9a029d4a58d5bc6 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Fri, 9 Oct 2020 08:19:50 -0700 Subject: [PATCH 175/353] Revert "Added -DZMK_CONFIG Documentation" This reverts commit a9ec1148e50ff0601f82c9eb55b90c33e7c70dab. --- docs/docs/dev-build.md | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/docs/docs/dev-build.md b/docs/docs/dev-build.md index a7c1cd91..816468e2 100644 --- a/docs/docs/dev-build.md +++ b/docs/docs/dev-build.md @@ -84,19 +84,6 @@ west build -d build/right -b nice_nano -- -DSHIELD=kyria_right ``` This produces `left` and `right` subfolders under the `build` directory and two separate .uf2 files. For future work on a specific half, use the `-d` parameter again to ensure you are building into the correct location. -### Building from `zmk-config` Folder - -Instead of building .uf2 files using the default keymap and config files, you can build directly from your [`zmk-config` folder](user-setup.md) by adding -`-DZMK_CONFIG="C:/the/absolute/path/config"` to your `west build` command. **Notice that this path should point to the folder labelled `config` within your `zmk-config` folder.** - - -For instance, building kyria firmware from a user `myUser`'s `zmk-config` folder on Windows 10 may look something like this: - -``` -west build -b nice_nano -- -DSHIELD=kyria_left -DZMK_CONFIG="C:/Users/myUser/Documents/Github/zmk-config/config" -``` - - ## Flashing Once built, the previously supplied parameters will be remembered so you can run the following to flash your From e53320a687a8b402fac3ed972a776993495a2f9a Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 9 Oct 2020 11:57:34 -0400 Subject: [PATCH 176/353] fix(docs): Remove hanging footnote. --- docs/docs/behavior/bluetooth.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/behavior/bluetooth.md b/docs/docs/behavior/bluetooth.md index 8bde71bf..be0fb23c 100644 --- a/docs/docs/behavior/bluetooth.md +++ b/docs/docs/behavior/bluetooth.md @@ -24,7 +24,7 @@ Here is a table describing the command for each define: | Define | Action | | ------------ | ---------------------------------------------------------------------------------------------- | -| `BT_CLR_CMD` | Clear bond information between the keyboard and host for the selected profile [^1] | +| `BT_CLR_CMD` | Clear bond information between the keyboard and host for the selected profile. | | `BT_NXT_CMD` | Switch to the next profile, cycling through to the first one when the end is reached. | | `BT_PRV_CMD` | Switch to the previous profile, cycling through to the last one when the beginning is reached. | | `BT_SEL_CMD` | Select the 0-indexed profile by number. | From 01b0bad7a246ac9aef7aa170895dab5ae4790525 Mon Sep 17 00:00:00 2001 From: David Barr Date: Fri, 9 Oct 2020 17:05:09 +0100 Subject: [PATCH 177/353] update headers, spruce up keymap, streamline dtsi. --- app/boards/shields/cradio/Kconfig.defconfig | 2 +- app/boards/shields/cradio/cradio.dtsi | 23 +++++--------- app/boards/shields/cradio/cradio.keymap | 30 +++++++++++++++---- app/boards/shields/cradio/cradio_left.overlay | 4 ++- .../shields/cradio/cradio_right.overlay | 2 +- 5 files changed, 36 insertions(+), 25 deletions(-) diff --git a/app/boards/shields/cradio/Kconfig.defconfig b/app/boards/shields/cradio/Kconfig.defconfig index 5f8bb80d..43509a47 100644 --- a/app/boards/shields/cradio/Kconfig.defconfig +++ b/app/boards/shields/cradio/Kconfig.defconfig @@ -2,7 +2,7 @@ # SPDX-License-Identifier: MIT config ZMK_KEYBOARD_NAME - default "Cradio" + default "cradio" config ZMK_KSCAN_DIRECT_POLLING default y diff --git a/app/boards/shields/cradio/cradio.dtsi b/app/boards/shields/cradio/cradio.dtsi index ab22e929..1f2603c2 100644 --- a/app/boards/shields/cradio/cradio.dtsi +++ b/app/boards/shields/cradio/cradio.dtsi @@ -9,9 +9,9 @@ / { chosen { zmk,kscan = &kscan0; - zmk,matrix_transform = &default_transform; + //zmk,matrix_transform = &default_transform; }; - + default_transform: keymap_transform_0 { compatible = "zmk,matrix-transform"; columns = <34>; @@ -19,23 +19,13 @@ map = < RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,21) RC(0,20) RC(0,19) RC(0,18) RC(0,17) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,26) RC(0,25) RC(0,24) RC(0,23) RC(0,22) - RC(0,10)RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,31) RC(0,30) RC(0,29) RC(0,28) RC(0,27) + RC(0,10) RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,31) RC(0,30) RC(0,29) RC(0,28) RC(0,27) RC(0,15) RC(0,16) RC(0,33) RC(0,32) >; kscan0: kscan { compatible = "zmk,kscan-gpio-direct"; label = "KSCAN"; - }; - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; - - }; - }; - - &kscan0 { input-gpios = <&pro_micro_d 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_a 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> @@ -55,6 +45,7 @@ , <&pro_micro_d 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro_d 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> ; -}; - - + }; + }; + }; + diff --git a/app/boards/shields/cradio/cradio.keymap b/app/boards/shields/cradio/cradio.keymap index 1d11cfd6..487f6dcf 100644 --- a/app/boards/shields/cradio/cradio.keymap +++ b/app/boards/shields/cradio/cradio.keymap @@ -3,23 +3,41 @@ * * SPDX-License-Identifier: MIT */ - - + #include #include +#include / { keymap { compatible = "zmk,keymap"; - - default_layer { + + default_layer { bindings = < &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH - &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 - >; + &mo 1 &kp LCTL &kp SPC &mo 2 + >; }; + upper_layer { + bindings = < + &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 + &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp H &kp J &kp K &kp L &kp SCLN + &kp LSFT &trans &trans &trans &trans &trans &trans &trans &trans &trans + &mo 1 &kp LCTL &kp SPC &mo 2 + >; + }; + + lower_layer { + bindings = < + &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN + &trans &trans &trans &trans &trans &kp MINUS &kp EQL &kp LBKT &kp RBKT &kp PIPE + &trans &trans &trans &trans &trans &trans &trans &trans &kp BSLH &kp TILD + &mo 1 &kp LCTL &kp SPC &mo 2 + >; + }; + }; }; diff --git a/app/boards/shields/cradio/cradio_left.overlay b/app/boards/shields/cradio/cradio_left.overlay index cac95757..6a3704a7 100644 --- a/app/boards/shields/cradio/cradio_left.overlay +++ b/app/boards/shields/cradio/cradio_left.overlay @@ -1,5 +1,7 @@ /* - * Copyright (c) 2020 Pete Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ + +#include "cradio.dtsi" diff --git a/app/boards/shields/cradio/cradio_right.overlay b/app/boards/shields/cradio/cradio_right.overlay index fea59c23..01aa1ab6 100644 --- a/app/boards/shields/cradio/cradio_right.overlay +++ b/app/boards/shields/cradio/cradio_right.overlay @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ From 0b125c028c65ff4a5e326760a7d0ac0f8941899c Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Fri, 9 Oct 2020 11:48:06 -0700 Subject: [PATCH 178/353] address pr comments --- app/boards/shields/microdox/Kconfig.defconfig | 2 ++ app/boards/shields/microdox/Kconfig.shield | 3 +-- .../shields/microdox/boards/nice_nano.overlay | 5 +++++ app/boards/shields/microdox/microdox.dtsi | 7 +------ app/boards/shields/microdox/microdox.keymap | 16 +++++++++------- .../shields/microdox/microdox_left.overlay | 4 ---- .../shields/microdox/microdox_right.overlay | 4 ---- 7 files changed, 18 insertions(+), 23 deletions(-) diff --git a/app/boards/shields/microdox/Kconfig.defconfig b/app/boards/shields/microdox/Kconfig.defconfig index 218443f9..4840eceb 100644 --- a/app/boards/shields/microdox/Kconfig.defconfig +++ b/app/boards/shields/microdox/Kconfig.defconfig @@ -1,3 +1,5 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT if SHIELD_MICRODOX_LEFT diff --git a/app/boards/shields/microdox/Kconfig.shield b/app/boards/shields/microdox/Kconfig.shield index 7d7148de..ac79eab6 100644 --- a/app/boards/shields/microdox/Kconfig.shield +++ b/app/boards/shields/microdox/Kconfig.shield @@ -1,5 +1,4 @@ -# Copyright (c) 2020 Pete Johanson -# Copyright (c) 2020 Kellen Carey +# Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT config SHIELD_MICRODOX_LEFT diff --git a/app/boards/shields/microdox/boards/nice_nano.overlay b/app/boards/shields/microdox/boards/nice_nano.overlay index c7c3eb8e..58cd8613 100644 --- a/app/boards/shields/microdox/boards/nice_nano.overlay +++ b/app/boards/shields/microdox/boards/nice_nano.overlay @@ -1,3 +1,8 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ &spi1 { compatible = "nordic,nrf-spi"; /* Cannot be used together with i2c0. */ diff --git a/app/boards/shields/microdox/microdox.dtsi b/app/boards/shields/microdox/microdox.dtsi index bf7950df..55c67dd3 100644 --- a/app/boards/shields/microdox/microdox.dtsi +++ b/app/boards/shields/microdox/microdox.dtsi @@ -1,6 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson - * Copyright (c) 2020 Kellen Carey + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ @@ -43,10 +42,6 @@ RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) }; - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; - // TODO: per-key RGB node(s)? }; diff --git a/app/boards/shields/microdox/microdox.keymap b/app/boards/shields/microdox/microdox.keymap index 916141c7..5747771b 100644 --- a/app/boards/shields/microdox/microdox.keymap +++ b/app/boards/shields/microdox/microdox.keymap @@ -27,15 +27,15 @@ }; nav_layer { // ----------------------------------------------------------------------------------------- -// | | | ESC | ~ | | | TAB | HOME | UP | END | DEL | -// | | GUI | ALT | CTRL | NUM | | / | LEFT | DOWN | RGT | BKSP | -// | | | | | | | \ | ENT | | | | +// |BTCLR| | ESC | ~ | | | TAB | HOME | UP | END | DEL | +// | BT1 | GUI | ALT | CTRL | NUM | | / | LEFT | DOWN | RGT | BKSP | +// | BT2 | | | | | | \ | ENT | | | | // | | | | | | | | bindings = < - &trans &trans &kp ESC &kp TILD &trans &kp TAB &kp HOME &kp UARW &kp END &kp DEL - &trans &kp GUI &kp RALT &kp LCTL &mo 3 &kp FSLH &kp LARW &kp DARW &kp RARW &kp BKSP - &trans &trans &trans &trans &trans &kp BSLH &kp RET &trans &trans &trans - &trans &trans &trans &trans &trans &trans + &bt BT_CLR &trans &kp ESC &kp TILD &trans &kp TAB &kp HOME &kp UARW &kp END &kp DEL + &bt BT_SEL 0 &kp GUI &kp RALT &kp LCTL &mo 3 &kp FSLH &kp LARW &kp DARW &kp RARW &kp BKSP + &bt BT_SEL 1 &trans &trans &trans &trans &kp BSLH &kp RET &trans &trans &trans + &trans &trans &trans &trans &trans &trans >; }; @@ -53,6 +53,8 @@ >; }; +// This layer is unreachable until "tri layer state" is sorted out. +// Leaving it here for completeness. num_layer { // ----------------------------------------------------------------------------------------- // | | | | | | | A | 7 | 8 | 9 | D | diff --git a/app/boards/shields/microdox/microdox_left.overlay b/app/boards/shields/microdox/microdox_left.overlay index 0a3f823a..07dc0d26 100644 --- a/app/boards/shields/microdox/microdox_left.overlay +++ b/app/boards/shields/microdox/microdox_left.overlay @@ -16,7 +16,3 @@ , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> ; }; - -&bt_unpair_combo { - key-positions = <0 38>; -}; diff --git a/app/boards/shields/microdox/microdox_right.overlay b/app/boards/shields/microdox/microdox_right.overlay index 2638a398..a0d86013 100644 --- a/app/boards/shields/microdox/microdox_right.overlay +++ b/app/boards/shields/microdox/microdox_right.overlay @@ -20,7 +20,3 @@ , <&pro_micro_a 3 GPIO_ACTIVE_HIGH> ; }; - -&bt_unpair_combo { - key-positions = <9 35>; -}; From a695d0d3596817834f7465e029d0205fc9235499 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Fri, 9 Oct 2020 12:18:57 -0700 Subject: [PATCH 179/353] oops --- app/boards/shields/microdox/microdox_left.overlay | 3 +-- app/boards/shields/microdox/microdox_right.overlay | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/boards/shields/microdox/microdox_left.overlay b/app/boards/shields/microdox/microdox_left.overlay index 07dc0d26..4d0378e5 100644 --- a/app/boards/shields/microdox/microdox_left.overlay +++ b/app/boards/shields/microdox/microdox_left.overlay @@ -1,6 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson - * Copyright (c) 2020 Kellen Carey + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/boards/shields/microdox/microdox_right.overlay b/app/boards/shields/microdox/microdox_right.overlay index a0d86013..c5622b25 100644 --- a/app/boards/shields/microdox/microdox_right.overlay +++ b/app/boards/shields/microdox/microdox_right.overlay @@ -1,6 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson - * Copyright (c) 2020 Kellen Carey + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ From 81a4ffef7efb45f30c74802dca97d949312a1785 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 9 Oct 2020 15:44:39 -0400 Subject: [PATCH 180/353] feat(setup): Add Microdox to setup scripts. --- docs/static/setup.ps1 | 6 +++--- docs/static/setup.sh | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index dc7b18c9..abdb6981 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -78,9 +78,9 @@ Write-Host "Keyboard Shield Selection:" $prompt = "Pick a keyboard" # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. -$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac", "makerdiary M60" -$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac", "m60" -$splits = "y", "y", "y", "y", "y", "y", "n", "n" +$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac", "makerdiary M60", "Microdox" +$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac", "m60", "microdox" +$splits = "y", "y", "y", "y", "y", "y", "n", "n", "y" $choice = Get-Choice-From-Options -Options $options -Prompt $prompt $shield_title = $($options[$choice]) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 9e989644..49ed3eb2 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -51,7 +51,7 @@ echo "" echo "Keyboard Shield Selection:" prompt="Pick an keyboard:" -options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac" "makerdiary M60") +options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac" "makerdiary M60" "Microdox") PS3="$prompt " # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. @@ -67,7 +67,8 @@ select opt in "${options[@]}" "Quit"; do 5 ) shield_title="Sofle" shield="sofle"; split="y"; break;; 6 ) shield_title="Iris" shield="iris"; split="y"; break;; 7 ) shield_title="RoMac" shield="romac"; split="n"; break;; - 7 ) shield_title="M60" shield="m60"; split="n"; break;; + 8 ) shield_title="M60" shield="m60"; split="n"; break;; + 9 ) shield_title="Microdox" shield="microdox"; split="y"; break;; # Add link to docs on adding your own custom shield in your ZMK config! # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; From 1f2bdf639f3790ef6d36575c4a477d340b9fd393 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Fri, 9 Oct 2020 12:57:07 -0700 Subject: [PATCH 181/353] Adjusted Wording, Added link to GH Actions --- docs/docs/troubleshooting.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index 8dd12614..7395ff57 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -62,13 +62,17 @@ After opening the `.dts.pre.tmp:` and scrolling down to the ### Split Keyboard Halves Unable to Pair -The previous method of pairing split keyboard halves involved a **BLE Reset** with a specific combination of held keys that would remove all bluetooth profile information from the keyboard. +Previously, pairing split keyboard halves involved a **BLE Reset** via a combination of held keys that removed all bluetooth profile information from the keyboard. Since then, a much simpler procedure of performing a bluetooth reset for split keyboards has come about, without the need for any file modification: -1. Log into Github and download the "settings clear" UF2 image from latest GH actions from the `main` of ZMK -1. Put both sides into bootloader mode -1. Flash both sides with the "settings clear" UF2 images from step 1. After, put both sides into bootloader mode again. -1. Flash the actual image for each half of the split keyboard +**New Procedure:** + +1. Log into Github and download the "settings clear" UF2 image from the [latest build in Github Actions](https://github.com/zmkfirmware/zmk/actions?query=workflow%3ABuild+branch%3Amain) +1. Put each half of the split keyboard into bootloader mode +1. Flash one of the halves of the split with the "settings clear" UF2 image from step 1. Immediately after flashing "settings clear" to the chosen half, immediately put it into bootloader mode +to avoid accidental bonding between the halves. +1. Repeat step 3 with the other half of the split keyboard +1. Flash the actual image for each half of the split keyboard (e.g `my_board_left.uf2` to the left half, `my_board_right.uf2` to the right half) After completing these steps, pair the halves of the split keyboard together by resetting them at the same time. Most commonly, this is done by grounding the reset pins for each of your keyboard's microcontrollers or pressing the reset buttons at the same time. \ No newline at end of file From 4d81b10ba7047a4dbd63cfe33ac879ecf437e108 Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Tue, 6 Oct 2020 15:52:21 +0800 Subject: [PATCH 182/353] Added driver to control the external power output This PR adds support to control the external power output from controllers like nice!nano, nRFMicro etc I have implemented based on my understanding of Pete suggestion on this feature. Testing done: Tested by enabling and disabling the ext_power from application and verified Verified the application does not crash with boards that does not have ext_power support Note: I did not test this in nice!nano since I don't have the boards. Will get help from others once the behavior PR is up Next Steps: Create a behavior PR to control enable/disable ext_power --- app/CMakeLists.txt | 1 + app/Kconfig | 4 + app/boards/arm/nice_nano/nice_nano.dts | 5 + app/boards/arm/nrfmicro/nrfmicro_11.dts | 5 + .../arm/nrfmicro/nrfmicro_11_flipped.dts | 5 + app/boards/arm/nrfmicro/nrfmicro_13.dts | 5 + app/boards/arm/nrfmicro/pinmux.c | 11 -- .../zmk,behavior-sensor-rotate-key-press.yaml | 2 +- app/dts/bindings/zmk,ext-power-generic.yaml | 20 ++++ app/dts/bindings/zmk,keymap-sensors.yaml | 5 + app/include/drivers/ext_power.h | 104 ++++++++++++++++++ app/src/ext_power_generic.c | 91 +++++++++++++++ app/src/main.c | 9 ++ 13 files changed, 255 insertions(+), 12 deletions(-) create mode 100644 app/dts/bindings/zmk,ext-power-generic.yaml create mode 100644 app/include/drivers/ext_power.h create mode 100644 app/src/ext_power_generic.c diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 3e59d751..31d28f57 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -31,6 +31,7 @@ target_sources(app PRIVATE src/sensors.c) target_sources_ifdef(CONFIG_ZMK_DISPLAY app PRIVATE src/display.c) target_sources(app PRIVATE src/event_manager.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble_unpair_combo.c) +target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/ext_power_generic.c) target_sources(app PRIVATE src/events/position_state_changed.c) target_sources(app PRIVATE src/events/keycode_state_changed.c) target_sources(app PRIVATE src/events/modifiers_state_changed.c) diff --git a/app/Kconfig b/app/Kconfig index edf58670..fca49124 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -95,6 +95,10 @@ config ZMK_IDLE_SLEEP_TIMEOUT endif +config ZMK_EXT_POWER + bool "Enable support to control external power output" + default y + config ZMK_DISPLAY bool "ZMK display support" default n diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index 3ffb0ea8..0538b1df 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -29,6 +29,11 @@ }; }; + ext-power { + compatible = "zmk,ext-power-generic"; + label = "EXT_POWER"; + control-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; + }; }; &gpiote { diff --git a/app/boards/arm/nrfmicro/nrfmicro_11.dts b/app/boards/arm/nrfmicro/nrfmicro_11.dts index 95bd8adc..87c650e1 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_11.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_11.dts @@ -26,6 +26,11 @@ }; }; + ext-power { + compatible = "zmk,ext-power-generic"; + label = "EXT_POWER"; + control-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; + }; }; &gpio0 { diff --git a/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts b/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts index 85693a8b..ea15b819 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts @@ -26,6 +26,11 @@ }; }; + ext-power { + compatible = "zmk,ext-power-generic"; + label = "EXT_POWER"; + control-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; + }; }; &gpio0 { diff --git a/app/boards/arm/nrfmicro/nrfmicro_13.dts b/app/boards/arm/nrfmicro/nrfmicro_13.dts index 95bd8adc..ef439462 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_13.dts @@ -26,6 +26,11 @@ }; }; + ext-power { + compatible = "zmk,ext-power-generic"; + label = "EXT_POWER"; + control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; + }; }; &gpio0 { diff --git a/app/boards/arm/nrfmicro/pinmux.c b/app/boards/arm/nrfmicro/pinmux.c index 4e330b65..30117d0f 100644 --- a/app/boards/arm/nrfmicro/pinmux.c +++ b/app/boards/arm/nrfmicro/pinmux.c @@ -14,25 +14,14 @@ static int pinmux_nrfmicro_init(struct device *port) { ARG_UNUSED(port); - struct device *p1 = device_get_binding("GPIO_1"); - #if CONFIG_BOARD_NRFMICRO_13 struct device *p0 = device_get_binding("GPIO_0"); - // enable EXT_VCC (use 0 for nRFMicro 1.3, use 1 for nRFMicro 1.1) - gpio_pin_configure(p1, 9, GPIO_OUTPUT); - gpio_pin_set(p1, 9, 0); - #if CONFIG_BOARD_NRFMICRO_CHARGER gpio_pin_configure(p0, 5, GPIO_OUTPUT); gpio_pin_set(p0, 5, 0); #else gpio_pin_configure(p0, 5, GPIO_INPUT); #endif - -#else - // enable EXT_VCC (use 0 for nRFMicro 1.3, use 1 for nRFMicro 1.1) - gpio_pin_configure(p1, 9, GPIO_OUTPUT); - gpio_pin_set(p1, 9, 1); #endif return 0; } diff --git a/app/dts/bindings/behaviors/zmk,behavior-sensor-rotate-key-press.yaml b/app/dts/bindings/behaviors/zmk,behavior-sensor-rotate-key-press.yaml index bbf35373..6b339107 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-sensor-rotate-key-press.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-sensor-rotate-key-press.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2020, Pete Johanson +# Copyright (c) 2020, The ZMK Contributors # SPDX-License-Identifier: MIT description: Sensor rotate key press/release behavior diff --git a/app/dts/bindings/zmk,ext-power-generic.yaml b/app/dts/bindings/zmk,ext-power-generic.yaml new file mode 100644 index 00000000..5a38a09a --- /dev/null +++ b/app/dts/bindings/zmk,ext-power-generic.yaml @@ -0,0 +1,20 @@ +# +# Copyright (c) 2020, The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +description: | + Generic driver for controlling the external power output + by toggling the control-gpio pin status + (Only in supported hardware) + +compatible: "zmk,ext-power-generic" + +properties: + control-gpios: + type: phandle-array + required: true + label: + type: string + required: true + diff --git a/app/dts/bindings/zmk,keymap-sensors.yaml b/app/dts/bindings/zmk,keymap-sensors.yaml index c56361d1..86ae5c22 100644 --- a/app/dts/bindings/zmk,keymap-sensors.yaml +++ b/app/dts/bindings/zmk,keymap-sensors.yaml @@ -1,3 +1,8 @@ +# +# Copyright (c) 2020, The ZMK Contributors +# SPDX-License-Identifier: MIT +# + description: | Allows defining the collection of sensors bound in the keymap layers diff --git a/app/include/drivers/ext_power.h b/app/include/drivers/ext_power.h new file mode 100644 index 00000000..6c1923e8 --- /dev/null +++ b/app/include/drivers/ext_power.h @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @cond INTERNAL_HIDDEN + * + * Behavior driver API definition and system call entry points. + * + * (Internal use only.) + */ + +typedef int (*ext_power_enable_t)(struct device *dev); +typedef int (*ext_power_disable_t)(struct device *dev); +typedef int (*ext_power_get_t)(struct device *dev); + +__subsystem struct ext_power_api { + ext_power_enable_t enable; + ext_power_disable_t disable; + ext_power_get_t get; +}; +/** + * @endcond + */ + +/** + * @brief Enable the external power output + * @param dev Pointer to the device structure for the driver instance. + * + * @retval 0 If successful. + * @retval Negative errno code if failure. + */ +__syscall int ext_power_enable(struct device *dev); + +static inline int z_impl_ext_power_enable(struct device *dev) { + const struct ext_power_api *api = (const struct ext_power_api *)dev->driver_api; + + if (api->enable == NULL) { + return -ENOTSUP; + } + + return api->enable(dev); +} + +/** + * @brief Disable the external power output + * @param dev Pointer to the device structure for the driver instance. + * + * @retval 0 If successful. + * @retval Negative errno code if failure. + */ +__syscall int ext_power_disable(struct device *dev); + +static inline int z_impl_ext_power_disable(struct device *dev) { + const struct ext_power_api *api = (const struct ext_power_api *)dev->driver_api; + + if (api->disable == NULL) { + return -ENOTSUP; + } + + return api->disable(dev); +} + +/** + * @brief Get the current status of the external power output + * @param dev Pointer to the device structure for the driver instance. + * + * @retval 0 If ext power is disabled. + * @retval 1 if ext power is enabled. + * @retval Negative errno code if failure. + */ +__syscall int ext_power_get(struct device *dev); + +static inline int z_impl_ext_power_get(struct device *dev) { + const struct ext_power_api *api = (const struct ext_power_api *)dev->driver_api; + + if (api->get == NULL) { + return -ENOTSUP; + } + + return api->get(dev); +} + +#ifdef __cplusplus +} +#endif + +/** + * @} + */ + +#include diff --git a/app/src/ext_power_generic.c b/app/src/ext_power_generic.c new file mode 100644 index 00000000..48170304 --- /dev/null +++ b/app/src/ext_power_generic.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#define DT_DRV_COMPAT zmk_ext_power_generic + +#include +#include +#include +#include + +#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) + +#include +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +struct ext_power_generic_config { + const char *label; + const u8_t pin; + const u8_t flags; +}; + +struct ext_power_generic_data { + struct device *gpio; + bool status; +}; + +static int ext_power_generic_enable(struct device *dev) { + struct ext_power_generic_data *data = dev->driver_data; + const struct ext_power_generic_config *config = dev->config_info; + + if (gpio_pin_set(data->gpio, config->pin, 1)) { + LOG_WRN("Failed to set ext-power control pin"); + return -EIO; + } + data->status = true; + return 0; +} + +static int ext_power_generic_disable(struct device *dev) { + struct ext_power_generic_data *data = dev->driver_data; + const struct ext_power_generic_config *config = dev->config_info; + + if (gpio_pin_set(data->gpio, config->pin, 0)) { + LOG_WRN("Failed to clear ext-power control pin"); + return -EIO; + } + data->status = false; + return 0; +} + +static int ext_power_generic_get(struct device *dev) { + struct ext_power_generic_data *data = dev->driver_data; + return data->status; +} + +static int ext_power_generic_init(struct device *dev) { + struct ext_power_generic_data *data = dev->driver_data; + const struct ext_power_generic_config *config = dev->config_info; + + data->gpio = device_get_binding(config->label); + if (data->gpio == NULL) { + LOG_ERR("Failed to get ext-power control device"); + return -EINVAL; + } + + if (gpio_pin_configure(data->gpio, config->pin, config->flags | GPIO_OUTPUT)) { + LOG_ERR("Failed to configure ext-power control pin"); + return -EIO; + } + + return 0; +} + +static const struct ext_power_generic_config config = { + .label = DT_INST_GPIO_LABEL(0, control_gpios), + .pin = DT_INST_GPIO_PIN(0, control_gpios), + .flags = DT_INST_GPIO_FLAGS(0, control_gpios)}; + +static struct ext_power_generic_data data = {.status = false}; + +static const struct ext_power_api api = {.enable = ext_power_generic_enable, + .disable = ext_power_generic_disable, + .get = ext_power_generic_get}; + +DEVICE_AND_API_INIT(ext_power_generic, DT_INST_LABEL(0), ext_power_generic_init, &data, &config, + APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &api); + +#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ diff --git a/app/src/main.c b/app/src/main.c index dca923e9..0551356d 100644 --- a/app/src/main.c +++ b/app/src/main.c @@ -15,16 +15,25 @@ LOG_MODULE_REGISTER(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include #include +#include #define ZMK_KSCAN_DEV DT_LABEL(ZMK_MATRIX_NODE_ID) void main(void) { + struct device *ext_power; LOG_INF("Welcome to ZMK!\n"); if (zmk_kscan_init(ZMK_KSCAN_DEV) != 0) { return; } + // Enable the external VCC output + ext_power = device_get_binding("EXT_POWER"); + if (ext_power != NULL) { + const struct ext_power_api *ext_power_api = ext_power->driver_api; + ext_power_api->enable(ext_power); + } + #ifdef CONFIG_ZMK_DISPLAY zmk_display_init(); From 10029c297ed8f6d97b582bc7382d9e9558808884 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Fri, 9 Oct 2020 18:00:11 -0700 Subject: [PATCH 183/353] exit setup if no write permissions in directory --- docs/static/setup.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 49ed3eb2..96e87688 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -22,6 +22,13 @@ check_exists "command -v curl" "curl is not installed, and is required for this check_exists "git config user.name" "Git username not set!\nRun: git config --global user.name 'My Name'" check_exists "git config user.email" "Git email not set!\nRun: git config --global user.email 'example@myemail.com'" +# Check to see if the user has write permissions in this directory to prevent a cryptic error later on +if [ ! -w `pwd` ]; then + echo 'Sorry, you do not have write permissions in this directory.'; + echo 'Please try running this script again from a directory that you do have write permissions for.'; + exit 1 +fi + repo_path="https://github.com/zmkfirmware/zmk-config-split-template.git" title="ZMK Config Setup:" From 3322c3cab106ee4918ff9200d0dbae83917a68e6 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Fri, 9 Oct 2020 18:51:51 -0700 Subject: [PATCH 184/353] Adressing Issue #138 --- docs/docs/dev-guide-new-shield.md | 200 ++++++++++++++++++++++++++++-- 1 file changed, 192 insertions(+), 8 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 1ba572c5..9f7b23ca 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -21,6 +21,10 @@ The high level steps are: It may be helpful to review the upstream [shields documentation](https://docs.zephyrproject.org/2.3.0/guides/porting/shields.html#shields) to get a proper understanding of the underlying system before continuing. +:::note +ZMK support for split keyboards requires a few more files than single boards to ensure proper connectivity between the central and peripheral units. Check the following guides thoroughly to ensure that all the files are in place. +::: + ## New Shield Directory Shields for Zephyr applications go into the `boards/shields/` directory; since ZMK's Zephyr application lives in the `app/` subdirectory of the repository, that means the new shield directory should be: @@ -45,6 +49,16 @@ config SHIELD_MY_BOARD This will make sure the new configuration `SHIELD_MY_BOARD` is set to true whenever `my_board` is added as a shield in your build. + +**For split boards**, you will need to add configurations for the left and right sides. +``` +config SHIELD_MY_BOARD_LEFT + def_bool $(shields_list_contains,my_board_left) + +config SHIELD_MY_BOARD_RIGHT + def_bool $(shields_list_contains,my_board_right) +``` + ### Kconfig.defconfig The `Kconfig.defconfig` file is where overrides for various configuration settings @@ -63,12 +77,41 @@ config ZMK_KEYBOARD_NAME endif ``` -## Shield Overlay + +Similarly to defining the halves of a split board in `Kconfig.shield` it is important to set the `ZMK_KEYBOARD_NAME` for each half of a split keyboard. + +``` +if SHIELD_MY_BOARD_LEFT + +config ZMK_KEYBOARD_NAME + default "My Awesome Keyboard Left" + +endif + +if SHIELD_MY_BOARD_RIGHT + +config ZMK_KEYBOARD_NAME + default "My Awesome Keyboard Right" + +endif +``` + +## Shield Overlays ![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) + ZMK uses the green color coded pin names to generate devicetree node references. For example, to refer to the node `D0` in the devicetree files, use `&pro_micro_d 0` or to refer to `A1`, use `&pro_micro_a 1`. + + + + The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the [chosen]() node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, this might look something like: @@ -98,6 +141,146 @@ this might look something like: }; ``` + + + + +### .dtsi files and Shield Overlays (Split Shields) + +Unlike unibody keyboards, split keyboards have a core .dtsi file with shield overlays for each half of the keyboard. +It is preferred to define only the `col-gpios` or `row-gpios` in the common shield .dtsi, depending on the `diode-direction` value. +For `col2row` directed boards like the iris, the shared .dtsi file may look like this: + +``` +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <16>; + rows = <4>; +// | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 | | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | +// | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 | | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | +// | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 | | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | +// | SW24 | SW23 | SW22 | SW21 | SW20 | SW19 | SW25 | | SW25 | SW19 | SW20 | SW21 | SW22 | SW23 | SW24 | +// | SW29 | SW28 | SW27 | SW26 | | SW26 | SW27 | SW28 | SW29 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,2) RC(4,9) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11) + RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,7) RC(4,8) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&pro_micro_d 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // Row A from the schematic file + , <&pro_micro_d 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // Row B from the schematic file + , <&pro_micro_d 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // Row C from the schematic file + , <&pro_micro_d 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // Row D from the schematic file + , <&pro_micro_d 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // Row E from the schematic file + ; + + }; +``` + +:::note +Notice that in addition to the common `row-gpios` that are declared in the kscan, the [matrix transform](#optional-matrix-transform) is defined in the .dtsi. +::: + +The missing `col-gpios` would be defined in your `_left.overlay` and `_right.overlay` files. +Keep in mind that the mirrored position of the GPIOs means that the `col-gpios` will appear reversed when the .overlay files are compared to one another. +Furthermore, the column offset for the [matrix transform](#optional-matrix-transform) should be added to the right half of the keyboard's overlay +because the keyboard's switch matrix is read from left to right, top to bottom. +This is exemplified with the iris .overlay files. + +``` +// iris_left.overlay + +#include "iris.dtsi" // Notice that the main dtsi files are included in the overlay. + +&kscan0 { + col-gpios + = <&pro_micro_a 1 GPIO_ACTIVE_HIGH> // col1 in the schematic + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> // col2 in the schematic + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> // col3 in the schematic + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> // col4 in the schematic + , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> // col5 in the schematic + , <&pro_micro_d 10 GPIO_ACTIVE_HIGH> // col6 in the schematic + ; +}; +``` + +``` +// iris_right.overlay + +#include "iris.dtsi" + +&default_transform { // The matrix transform for this board is 6 columns over because the left half is 6 columns wide according to the matrix. + col-offset = <6>; +}; + +&kscan0 { + col-gpios + = <&pro_micro_d 10 GPIO_ACTIVE_HIGH> // col6 in the schematic + , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> // col5 in the schematic + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> // col4 in the schematic + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> // col3 in the schematic + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> // col2 in the schematic + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> // col1 in the schematic + ; +}; + +``` + +### .conf files (Split Shields) + +While unibody boards only have one .conf file that applies configuration characteristics to the entire keyboard, +split keyboards are unique in that they contain multiple .conf files with different scopes. +For example, a split board called `my_awesome_split_board` would have the following files: + +* `my_awesome_split_board.conf` - Configuration elements affect both halves +* `my_awesome_split_board_left.conf` - Configuration elements only affect left half +* `my_awesome_split_board_right.conf` - Configuration elements only affect right half + +For proper communication between keyboard halves and that between the central half and the computer, +the **the central and peripheral halves of the keyboard must be defined**. This can be seen below. + +``` +// Central Half (Usually the left side: my_awesome_split_board_left.conf) + +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL=y +``` + +``` +// Peripheral Half (Usually the right side: my_awesome_split_board_right.conf) + +CONFIG_ZMK_SPLIT=y +CONFIG_ZMK_SPLIT_BLE_ROLE_Peripheral=y +``` + +Using the .conf file that affects both halves of a split board would be for adding features like deep-sleep or rotary encoders. + +``` +// my_awesome_split_board.conf + +CONFIG_ZMK_SLEEP=y +``` + + + + ## (Optional) Matrix Transform Internally ZMK translates all row/column events into "key position" events to maintain a consistent model that works no matter what any possible GPIO matrix may look like for a certain keyboard. This is particularly helpful when: @@ -238,6 +421,7 @@ If building locally for split boards, you may need to add these lines to the spe In your device tree file you will need to add the following lines to define the encoder sensor: + ``` left_encoder: encoder_left { compatible = "alps,ec11"; @@ -247,7 +431,6 @@ left_encoder: encoder_left { resolution = <4>; }; ``` - Here you will have to replace PIN_A and PIN_B with the appropriate pins that your PCB utilizes for the encoder(s). For keyboards that use the Pro Micro or any of the Pro Micro replacements, Sparkfun's [Pro Micro Hookup Guide](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro) has a pinout diagram that can be useful to determine the right pins. Reference either the blue numbers labeled "Arduino" (digital pins) or the green numbers labeled "Analog" (analog pins). For pins that are labeled as both digital and analog, refer to your specific board's .dtsi file to determine how you should refer to that pin. Add additional encoders as necessary by duplicating the above lines, replacing `left` with whatever you would like to call your encoder, and updating the pins. Note that support for peripheral (right) side sensors over BLE is still in progress. @@ -279,15 +462,12 @@ For split keyboards, make sure to add left hand encoders to the left .overlay fi -Add the following line to each layer of your keymap file to add default encoder behavior bindings: +Add the following line to your keymap file to add default encoder behavior bindings: ``` sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; ``` - -This should be placed after the regular key bindings but within the layer (see the [Default Keymap section](/docs/dev-guide-new-shield#default-keymap) above for an example of where). - -Add additional bindings as necessary to match the default number of encoders on your board. Details on the syntax can be found in the [Encoders](/docs/feature/encoders) and [Keymap](/docs/feature/keymaps) feature documentation. +Add additional bindings as necessary to match the default number of encoders on your board. See the [Encoders](/docs/feature/encoders) and [Keymap](/docs/feature/keymaps) feature documentation for more details. @@ -307,6 +487,11 @@ and then flash with: west flash ``` +:::note +Further testing your keyboard shield without altering the root keymap file can be done with the use of `-DZMK_CONFIG` in your `west build` command, +shown [here](dev-build-flash#building-from-zmk-config-folder) +::: + ## Updating `build.yml` Before publishing your shield to the public via a PR, navigate to `build.yml` found in `.github/workflows` and add your shield to the appropriate list. An example edit to `build.yml` is shown below. @@ -336,7 +521,6 @@ jobs: - board: proton_c shield: clueboard_california ``` - :::note Notice that both the left and right halves of a split board need to be added to the list of shields for proper error checking. :::note From b64517943deb3dfe72e2e37ca62319856bc35752 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Fri, 9 Oct 2020 18:53:21 -0700 Subject: [PATCH 185/353] add powershell check --- docs/static/setup.ps1 | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index abdb6981..1da57378 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -59,6 +59,19 @@ catch [System.Management.Automation.CommandNotFoundException] { Test-Git-Config -Option "user.name" -ErrMsg "Git username not set!`nRun: git config --global user.name 'My Name'" Test-Git-Config -Option "user.email" -ErrMsg "Git email not set!`nRun: git config --global user.name 'example@myemail.com'" +$permission = (Get-Acl $PSScriptRoot).Access | +?{$_.IdentityReference -match $env:UserName ` + -and $_.FileSystemRights -match "Read" ` + -or $_.FileSystemRights -match "Write" } | + + Select IdentityReference,FileSystemRights + +If (-Not $permission){ + Write-Host "Sorry, you do not have write permissions in this directory." + Write-Host "Please try running this script again from a directory that you do have write permissions for." + exit 1 +} + $repo_path = "https://github.com/zmkfirmware/zmk-config-split-template.git" $title = "ZMK Config Setup:" From 9231f6c57beb6bfabc030f9debcb659dd964634e Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Thu, 24 Sep 2020 09:52:00 -0700 Subject: [PATCH 186/353] Add VSCode devcontainer configuration --- .devcontainer/Dockerfile | 1 + .devcontainer/devcontainer.json | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..ba4e1223 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1 @@ +FROM zmkfirmware/zephyr-west-action-arm \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..74505346 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,6 @@ +{ + "name": "ZMK Development", + "dockerFile": "Dockerfile", + "extensions": ["ms-vscode.cpptools"] +} + From 5bd09b586e153185850fe468b19fdd0eb534f35d Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Wed, 30 Sep 2020 23:23:42 -0700 Subject: [PATCH 187/353] Remove Dockerfile in favor of image Per the docs, we can directly specify an image in devcontainer.json: https://code.visualstudio.com/docs/remote/devcontainerjson-reference --- .devcontainer/Dockerfile | 1 - .devcontainer/devcontainer.json | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 .devcontainer/Dockerfile diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index ba4e1223..00000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1 +0,0 @@ -FROM zmkfirmware/zephyr-west-action-arm \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 74505346..bbf44bc7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,7 @@ { "name": "ZMK Development", - "dockerFile": "Dockerfile", - "extensions": ["ms-vscode.cpptools"] + "image": "zmkfirmware/zephyr-west-action-arm", + "extensions": ["ms-vscode.cpptools"], + "runArgs": ["--security-opt", "label=disable"] } From 9b29f9b861464a8a0eba78f25058cded118b84d5 Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Thu, 1 Oct 2020 06:52:33 +0000 Subject: [PATCH 188/353] Install SSH and GPG into container Brings back the dockerfile so we can install SSH and GPG into it. This fixes git actions with SSH remotes, and GPG signing now works out of the box. This commit was made from inside the container! --- .devcontainer/Dockerfile | 8 ++++++++ .devcontainer/devcontainer.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .devcontainer/Dockerfile diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..abbe54ac --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,8 @@ +from zmkfirmware/zephyr-west-action-arm + +RUN apt-get -y update && \ + apt-get -y upgrade && \ + apt-get install --no-install-recommends -y \ + ssh \ + gpg && \ + rm -rf /var/lib/apt/lists/* \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index bbf44bc7..f21465df 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "name": "ZMK Development", - "image": "zmkfirmware/zephyr-west-action-arm", + "dockerFile": "Dockerfile", "extensions": ["ms-vscode.cpptools"], "runArgs": ["--security-opt", "label=disable"] } From 42d1915ced3f7ec8a74cf5be506438d2bf07a7d3 Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Thu, 1 Oct 2020 06:56:18 +0000 Subject: [PATCH 189/353] Use spaces, not tabs --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index abbe54ac..cf62b5a3 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,7 +1,7 @@ from zmkfirmware/zephyr-west-action-arm RUN apt-get -y update && \ - apt-get -y upgrade && \ + apt-get -y upgrade && \ apt-get install --no-install-recommends -y \ ssh \ gpg && \ From 15614a946fac635a27ba94a4f32450c67016e5b2 Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Thu, 1 Oct 2020 00:41:33 -0700 Subject: [PATCH 190/353] WIP docs for docker development --- docs/docs/dev-setup.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/docs/dev-setup.md b/docs/docs/dev-setup.md index 4891f5af..be3d6f95 100644 --- a/docs/docs/dev-setup.md +++ b/docs/docs/dev-setup.md @@ -16,6 +16,7 @@ values={[ {label: 'macOS', value: 'mac'}, {label: 'Raspberry OS', value: 'raspberryos'}, {label: 'Fedora', value: 'fedora'}, +{label: 'VS Code & Docker', value: 'docker'}, ] }>{props.children}); @@ -178,6 +179,20 @@ Homebrew is required to install the system dependencies. If you haven't done so, brew install cmake ninja python3 ccache dtc git wget ``` + + + +This setup leverages the same [image which is used by the GitHub action](https://github.com/zmkfirmware/zephyr-west-action) for local development. Beyond the benefits of [dev/prod parity](https://12factor.net/dev-prod-parity), this approach is also the easiest to set up. No toolchain or dependencies are necessary when using Docker; the container image you'll be using already has the toolchain installed and set up to use. + + +1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop) for your operating system. +2. Install [VS Code](https://code.visualstudio.com/) +3. Install the [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + +:::info +The docker container includes `west` and the compilation toolchain. If you're using docker and VS Code, you can skip right to [Source Code](#source-code). +::: + @@ -323,6 +338,11 @@ Please be sure to read the [additional setup instructions](https://docs.zephyrpr ::: + + + +You're already set up: the toolchain is installed and configured inside the docker container. + From 63931a706870652e649346e4052a9fb1b105ff5b Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Tue, 6 Oct 2020 08:51:25 -0700 Subject: [PATCH 191/353] Accept suggestions Co-authored-by: Pete Johanson --- .devcontainer/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index cf62b5a3..160b1481 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,8 +1,8 @@ -from zmkfirmware/zephyr-west-action-arm +FROM zmkfirmware/zephyr-west-action-arm RUN apt-get -y update && \ apt-get -y upgrade && \ apt-get install --no-install-recommends -y \ ssh \ gpg && \ - rm -rf /var/lib/apt/lists/* \ No newline at end of file + rm -rf /var/lib/apt/lists/* From db40fbad598b6f84472cb2921df89f1a46fc6b5c Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Fri, 9 Oct 2020 17:49:42 -0700 Subject: [PATCH 192/353] Conditionally source zephyr-env.sh in .bashrc --- .devcontainer/.bashrc | 6 ++++++ .devcontainer/Dockerfile | 3 +++ 2 files changed, 9 insertions(+) create mode 100644 .devcontainer/.bashrc diff --git a/.devcontainer/.bashrc b/.devcontainer/.bashrc new file mode 100644 index 00000000..6a6ea691 --- /dev/null +++ b/.devcontainer/.bashrc @@ -0,0 +1,6 @@ +export LS_OPTIONS='-F --color=auto' +eval "`dircolors`" +alias ls='ls $LS_OPTIONS' +if [ -f /workspaces/zmk/zephyr/zephyr-env.sh ]; then + source /workspaces/zmk/zephyr/zephyr-env.sh +fi diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 160b1481..184aae9a 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -6,3 +6,6 @@ RUN apt-get -y update && \ ssh \ gpg && \ rm -rf /var/lib/apt/lists/* + +COPY .bashrc tmp +RUN mv /tmp/.bashrc ~/.bashrc From 63ad5b7c089f13a5b5d5514514cc9ad7e798d3e8 Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Sat, 10 Oct 2020 01:42:50 +0000 Subject: [PATCH 193/353] Inject $WORKSPACE_DIR into container This permits users to check ZMK out into arbitrarily-named directories --- .devcontainer/.bashrc | 4 ++-- .devcontainer/devcontainer.json | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.devcontainer/.bashrc b/.devcontainer/.bashrc index 6a6ea691..855ea755 100644 --- a/.devcontainer/.bashrc +++ b/.devcontainer/.bashrc @@ -1,6 +1,6 @@ export LS_OPTIONS='-F --color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS' -if [ -f /workspaces/zmk/zephyr/zephyr-env.sh ]; then - source /workspaces/zmk/zephyr/zephyr-env.sh +if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then + source "$WORKSPACE_DIR/zephyr/zephyr-env.sh" fi diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f21465df..940b78b8 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,6 +2,7 @@ "name": "ZMK Development", "dockerFile": "Dockerfile", "extensions": ["ms-vscode.cpptools"], - "runArgs": ["--security-opt", "label=disable"] + "runArgs": ["--security-opt", "label=disable"], + "containerEnv": {"WORKSPACE_DIR": "${containerWorkspaceFolder}"} } From 5c00c97e9a1647e2676586c303d19c5559e2e2f1 Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Fri, 9 Oct 2020 18:48:41 -0700 Subject: [PATCH 194/353] Wrap up documentation --- .../assets/dev-setup/vscode_devcontainer.png | Bin 0 -> 20773 bytes docs/docs/dev-setup.md | 62 ++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 docs/docs/assets/dev-setup/vscode_devcontainer.png diff --git a/docs/docs/assets/dev-setup/vscode_devcontainer.png b/docs/docs/assets/dev-setup/vscode_devcontainer.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c22b0ac4f8080f47725e570a6bdca990470627 GIT binary patch literal 20773 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 literal 0 HcmV?d00001 diff --git a/docs/docs/dev-setup.md b/docs/docs/dev-setup.md index be3d6f95..6ef0f020 100644 --- a/docs/docs/dev-setup.md +++ b/docs/docs/dev-setup.md @@ -369,12 +369,63 @@ Since ZMK is built as a Zephyr™ application, the next step is to use `west` to initialize and update your workspace. The ZMK Zephyr™ application is in the `app/` source directory: + #### Step into the repository + + + ```sh cd zmk ``` + + + +```sh +cd zmk +``` + + + + +```sh +cd zmk +``` + + + + +```sh +cd zmk +``` + + + + +```sh +cd zmk +``` + + + + + +Open the `zmk` checkout folder in VS Code. The repository includes a configuration for containerized development, so an alert will pop up: + +![VS Code Dev Container Configuration Alert](assets/dev-setup/vscode_devcontainer.png) + +Click `Reopen in Container` in order to reopen the VS Code with the running container. + +The first time you do this on your machine, it will pull the docker image down from the registry and build the container. Subsequent launches are much faster! + +:::caution +All subsequent steps must be performed from the VS Code terminal _inside_ the container. +::: + + + + #### Initialize West ```sh @@ -393,6 +444,17 @@ section again for links to how to do this west update ``` +:::tip +This step pulls down quite a bit of tooling. Go grab a cup of coffee, it can take 10-15 minutes even on a good internet connection! +::: + +:::info +If you're using Docker, you're done with setup! You must restart the container at this point. The easiest way to do so is to close the VS Code window, verify that the container has stopped in Docker Dashboard, and reopen the container with VS Code. + +Once your container is restarted, proceed to [Building and Flashing](./dev-build.md). +::: + + #### Export Zephyr™ Core ```sh From 5401afc002ba086ca964aa7a164fbc6dbd1898b1 Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Fri, 9 Oct 2020 19:10:07 -0700 Subject: [PATCH 195/353] Skip toolchain for docker --- docs/docs/dev-setup.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/docs/dev-setup.md b/docs/docs/dev-setup.md index 6ef0f020..114fe0b3 100644 --- a/docs/docs/dev-setup.md +++ b/docs/docs/dev-setup.md @@ -338,11 +338,6 @@ Please be sure to read the [additional setup instructions](https://docs.zephyrpr ::: - - - -You're already set up: the toolchain is installed and configured inside the docker container. - From fc6c01fd6941ec795710d66ead9e17d5dfbaa19d Mon Sep 17 00:00:00 2001 From: Kurtis Lew Date: Fri, 9 Oct 2020 20:56:52 -0700 Subject: [PATCH 196/353] -DZMK_CONFIG Documentation (#255) feat(docs): `-DZMK_CONFIG` Documentation --- docs/docs/dev-build.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/docs/dev-build.md b/docs/docs/dev-build.md index 816468e2..83ed8cb9 100644 --- a/docs/docs/dev-build.md +++ b/docs/docs/dev-build.md @@ -84,6 +84,19 @@ west build -d build/right -b nice_nano -- -DSHIELD=kyria_right ``` This produces `left` and `right` subfolders under the `build` directory and two separate .uf2 files. For future work on a specific half, use the `-d` parameter again to ensure you are building into the correct location. +### Building from `zmk-config` Folder + +Instead of building .uf2 files using the default keymap and config files, you can build directly from your [`zmk-config` folder](user-setup#github-repo) by adding +`-DZMK_CONFIG="C:/the/absolute/path/config"` to your `west build` command. **Notice that this path should point to the folder labelled `config` within your `zmk-config` folder.** + + +For instance, building kyria firmware from a user `myUser`'s `zmk-config` folder on Windows 10 may look something like this: + +``` +west build -b nice_nano -- -DSHIELD=kyria_left -DZMK_CONFIG="C:/Users/myUser/Documents/Github/zmk-config/config" +``` + + ## Flashing Once built, the previously supplied parameters will be remembered so you can run the following to flash your From 8d4e80c23a51ab4f1499c21086f76549d56ababd Mon Sep 17 00:00:00 2001 From: Tsquash Date: Fri, 9 Oct 2020 22:09:19 -0500 Subject: [PATCH 197/353] Added Dfu-Util to setup instructions --- docs/docs/dev-setup.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/docs/dev-setup.md b/docs/docs/dev-setup.md index 114fe0b3..521d5d02 100644 --- a/docs/docs/dev-setup.md +++ b/docs/docs/dev-setup.md @@ -168,6 +168,10 @@ Chocolatey is recommended and used for the following instructions. You can manua choco install ninja gperf python git ``` +It is recommended to install `dfu-util` to avoid any later confusion while flashing devices. You can do this by running this command with chocolatey: +``` shell +choco install dfu-util +``` @@ -176,7 +180,7 @@ Chocolatey is recommended and used for the following instructions. You can manua Homebrew is required to install the system dependencies. If you haven't done so, visit [Homebrew](https://brew.sh/) for instructions. Once installed, use it to install the base dependencies: ``` -brew install cmake ninja python3 ccache dtc git wget +brew install cmake ninja python3 ccache dtc git wget dfu-util ``` From 45f4ffc03a98359dd41c0a526dfcfa590cf0ceb4 Mon Sep 17 00:00:00 2001 From: Tsquash Date: Sat, 10 Oct 2020 13:03:34 -0500 Subject: [PATCH 198/353] added PowerShell setup Command --- docs/docs/user-setup.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index 2aade829..e069a14a 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -63,6 +63,7 @@ defaultValue="curl" values={[ {label: 'Using curl', value: 'curl'}, {label: 'Using wget', value: 'wget'}, +{label: 'Using PowerShell', value: 'PowerShell'}, ]}> @@ -77,6 +78,12 @@ bash -c "$(curl -fsSL https://zmkfirmware.dev/setup.sh)" bash -c "$(wget https://zmkfirmware.dev/setup.sh -O -)" ``` + + + +``` +iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/CrossR/zmk/CrossR/ShellScriptTidyUp/docs/static/setup.ps1'))" +``` From d79811dd6118357e88ffc6b35b46589799a0c79d Mon Sep 17 00:00:00 2001 From: Tsquash Date: Sat, 10 Oct 2020 14:39:12 -0500 Subject: [PATCH 199/353] Changed setup script url --- docs/docs/user-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index e069a14a..2785096d 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -82,7 +82,7 @@ bash -c "$(wget https://zmkfirmware.dev/setup.sh -O -)" ``` -iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/CrossR/zmk/CrossR/ShellScriptTidyUp/docs/static/setup.ps1'))" +iex ((New-Object System.Net.WebClient).DownloadString('https://zmkfirmware.dev/setup.ps1'))" ``` From d38740cebf3be17a7d55fc51f5f06752182f96d8 Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Sat, 10 Oct 2020 23:32:53 +0200 Subject: [PATCH 200/353] Add timestamps to position and behavior events (#147) * Add timestamps to position events and behaviors. - Take original event timestamps into consideration so nested tap-holds have proper timing. - Add position and timestamp to keycode state changed event so the one-shot behavior can properly identify other keypresses and timings. - Add timestamp to position events received from peripheral * reduce number of arguments to behaviors --- app/include/drivers/behavior.h | 44 ++++--- app/include/zmk/behavior.h | 6 + .../zmk/events/keycode-state-changed.h | 1 - .../zmk/events/position-state-changed.h | 1 + app/include/zmk/keymap.h | 2 +- app/src/behaviors/behavior_bt.c | 18 +-- app/src/behaviors/behavior_hold_tap.c | 114 +++++++++++------- app/src/behaviors/behavior_key_press.c | 19 ++- app/src/behaviors/behavior_momentary_layer.c | 17 +-- app/src/behaviors/behavior_none.c | 10 +- app/src/behaviors/behavior_reset.c | 7 +- app/src/behaviors/behavior_rgb_underglow.c | 6 +- .../behavior_sensor_rotate_key_press.c | 11 +- app/src/behaviors/behavior_toggle_layer.c | 15 +-- app/src/behaviors/behavior_transparent.c | 10 +- app/src/keymap.c | 22 ++-- app/src/kscan.c | 1 + app/src/split/bluetooth/central.c | 1 + .../balanced/many-nested/events.patterns | 4 + .../many-nested/keycode_events.snapshot | 20 +++ .../balanced/many-nested/native_posix.keymap | 41 +++++++ 21 files changed, 248 insertions(+), 122 deletions(-) create mode 100644 app/tests/hold-tap/balanced/many-nested/events.patterns create mode 100644 app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot create mode 100644 app/tests/hold-tap/balanced/many-nested/native_posix.keymap diff --git a/app/include/drivers/behavior.h b/app/include/drivers/behavior.h index 45b8bea7..cf259b13 100644 --- a/app/include/drivers/behavior.h +++ b/app/include/drivers/behavior.h @@ -10,6 +10,7 @@ #include #include #include +#include /** * @cond INTERNAL_HIDDEN @@ -19,10 +20,10 @@ * (Internal use only.) */ -typedef int (*behavior_keymap_binding_callback_t)(struct device *dev, u32_t position, u32_t param1, - u32_t param2); -typedef int (*behavior_sensor_keymap_binding_callback_t)(struct device *dev, struct device *sensor, - u32_t param1, u32_t param2); +typedef int (*behavior_keymap_binding_callback_t)(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event); +typedef int (*behavior_sensor_keymap_binding_callback_t)(struct zmk_behavior_binding *binding, + struct device *sensor); __subsystem struct behavior_driver_api { behavior_keymap_binding_callback_t binding_pressed; @@ -42,18 +43,19 @@ __subsystem struct behavior_driver_api { * @retval 0 If successful. * @retval Negative errno code if failure. */ -__syscall int behavior_keymap_binding_pressed(struct device *dev, u32_t position, u32_t param1, - u32_t param2); +__syscall int behavior_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event); -static inline int z_impl_behavior_keymap_binding_pressed(struct device *dev, u32_t position, - u32_t param1, u32_t param2) { +static inline int z_impl_behavior_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + struct device *dev = device_get_binding(binding->behavior_dev); const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api; if (api->binding_pressed == NULL) { return -ENOTSUP; } - return api->binding_pressed(dev, position, param1, param2); + return api->binding_pressed(binding, event); } /** @@ -64,18 +66,19 @@ static inline int z_impl_behavior_keymap_binding_pressed(struct device *dev, u32 * @retval 0 If successful. * @retval Negative errno code if failure. */ -__syscall int behavior_keymap_binding_released(struct device *dev, u32_t position, u32_t param1, - u32_t param2); +__syscall int behavior_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event); -static inline int z_impl_behavior_keymap_binding_released(struct device *dev, u32_t position, - u32_t param1, u32_t param2) { +static inline int z_impl_behavior_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + struct device *dev = device_get_binding(binding->behavior_dev); const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api; if (api->binding_released == NULL) { return -ENOTSUP; } - return api->binding_released(dev, position, param1, param2); + return api->binding_released(binding, event); } /** @@ -88,19 +91,20 @@ static inline int z_impl_behavior_keymap_binding_released(struct device *dev, u3 * @retval 0 If successful. * @retval Negative errno code if failure. */ -__syscall int behavior_sensor_keymap_binding_triggered(struct device *dev, struct device *sensor, - u32_t param1, u32_t param2); +__syscall int behavior_sensor_keymap_binding_triggered(struct zmk_behavior_binding *binding, + struct device *sensor); -static inline int z_impl_behavior_sensor_keymap_binding_triggered(struct device *dev, - struct device *sensor, - u32_t param1, u32_t param2) { +static inline int +z_impl_behavior_sensor_keymap_binding_triggered(struct zmk_behavior_binding *binding, + struct device *sensor) { + struct device *dev = device_get_binding(binding->behavior_dev); const struct behavior_driver_api *api = (const struct behavior_driver_api *)dev->driver_api; if (api->sensor_binding_triggered == NULL) { return -ENOTSUP; } - return api->sensor_binding_triggered(dev, sensor, param1, param2); + return api->sensor_binding_triggered(binding, sensor); } /** diff --git a/app/include/zmk/behavior.h b/app/include/zmk/behavior.h index 6f5815f1..428ae243 100644 --- a/app/include/zmk/behavior.h +++ b/app/include/zmk/behavior.h @@ -10,4 +10,10 @@ struct zmk_behavior_binding { char *behavior_dev; u32_t param1; u32_t param2; +}; + +struct zmk_behavior_binding_event { + int layer; + u32_t position; + s64_t timestamp; }; \ No newline at end of file diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h index 4c006543..1e2c24e8 100644 --- a/app/include/zmk/events/keycode-state-changed.h +++ b/app/include/zmk/events/keycode-state-changed.h @@ -24,6 +24,5 @@ inline struct keycode_state_changed *create_keycode_state_changed(u8_t usage_pag ev->usage_page = usage_page; ev->keycode = keycode; ev->state = state; - return ev; } \ No newline at end of file diff --git a/app/include/zmk/events/position-state-changed.h b/app/include/zmk/events/position-state-changed.h index f88080d2..e4cbbbe7 100644 --- a/app/include/zmk/events/position-state-changed.h +++ b/app/include/zmk/events/position-state-changed.h @@ -13,6 +13,7 @@ struct position_state_changed { struct zmk_event_header header; u32_t position; bool state; + s64_t timestamp; }; ZMK_EVENT_DECLARE(position_state_changed); \ No newline at end of file diff --git a/app/include/zmk/keymap.h b/app/include/zmk/keymap.h index 61925878..b8f49694 100644 --- a/app/include/zmk/keymap.h +++ b/app/include/zmk/keymap.h @@ -11,4 +11,4 @@ int zmk_keymap_layer_activate(u8_t layer); int zmk_keymap_layer_deactivate(u8_t layer); int zmk_keymap_layer_toggle(u8_t layer); -int zmk_keymap_position_state_changed(u32_t position, bool pressed); +int zmk_keymap_position_state_changed(u32_t position, bool pressed, s64_t timestamp); diff --git a/app/src/behaviors/behavior_bt.c b/app/src/behaviors/behavior_bt.c index 09fadba2..922c1571 100644 --- a/app/src/behaviors/behavior_bt.c +++ b/app/src/behaviors/behavior_bt.c @@ -8,18 +8,18 @@ #include #include - #include - #include - #include +#include + LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t command, u32_t arg) { - switch (command) { +static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + switch (binding->param1) { case BT_CLR_CMD: return zmk_ble_clear_bonds(); case BT_NXT_CMD: @@ -27,9 +27,9 @@ static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t c case BT_PRV_CMD: return zmk_ble_prof_prev(); case BT_SEL_CMD: - return zmk_ble_prof_select(arg); + return zmk_ble_prof_select(binding->param2); default: - LOG_ERR("Unknown BT command: %d", command); + LOG_ERR("Unknown BT command: %d", binding->param1); } return -ENOTSUP; @@ -37,8 +37,8 @@ static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t c static int behavior_bt_init(struct device *dev) { return 0; }; -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t command, - u32_t arg) { +static int on_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { return 0; } diff --git a/app/src/behaviors/behavior_hold_tap.c b/app/src/behaviors/behavior_hold_tap.c index 8f307a6b..8b3620ef 100644 --- a/app/src/behaviors/behavior_hold_tap.c +++ b/app/src/behaviors/behavior_hold_tap.c @@ -10,7 +10,6 @@ #include #include #include - #include #include #include @@ -18,6 +17,7 @@ #include #include #include +#include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -40,10 +40,8 @@ struct behavior_hold_tap_behaviors { struct zmk_behavior_binding hold; }; -typedef k_timeout_t (*timer_func)(); - struct behavior_hold_tap_config { - timer_func tapping_term_ms; + int tapping_term_ms; struct behavior_hold_tap_behaviors *behaviors; enum flavor flavor; }; @@ -51,8 +49,10 @@ struct behavior_hold_tap_config { // this data is specific for each hold-tap struct active_hold_tap { s32_t position; + // todo: move these params into the config->behaviors->tap and u32_t param_hold; u32_t param_tap; + s64_t timestamp; bool is_decided; bool is_hold; const struct behavior_hold_tap_config *config; @@ -164,6 +164,7 @@ static struct active_hold_tap *find_hold_tap(u32_t position) { } static struct active_hold_tap *store_hold_tap(u32_t position, u32_t param_hold, u32_t param_tap, + s64_t timestamp, const struct behavior_hold_tap_config *config) { for (int i = 0; i < ZMK_BHV_HOLD_TAP_MAX_HELD; i++) { if (active_hold_taps[i].position != ZMK_BHV_HOLD_TAP_POSITION_NOT_USED) { @@ -175,6 +176,7 @@ static struct active_hold_tap *store_hold_tap(u32_t position, u32_t param_hold, active_hold_taps[i].config = config; active_hold_taps[i].param_hold = param_hold; active_hold_taps[i].param_tap = param_tap; + active_hold_taps[i].timestamp = timestamp; return &active_hold_taps[i]; } return NULL; @@ -253,7 +255,7 @@ static inline char *flavor_str(enum flavor flavor) { return "UNKNOWN FLAVOR"; } -static void decide_hold_tap(struct active_hold_tap *hold_tap, enum decision_moment event) { +static void decide_hold_tap(struct active_hold_tap *hold_tap, enum decision_moment event_type) { if (hold_tap->is_decided) { return; } @@ -265,11 +267,11 @@ static void decide_hold_tap(struct active_hold_tap *hold_tap, enum decision_mome switch (hold_tap->config->flavor) { case ZMK_BHV_HOLD_TAP_FLAVOR_HOLD_PREFERRED: - decide_hold_preferred(hold_tap, event); + decide_hold_preferred(hold_tap, event_type); case ZMK_BHV_HOLD_TAP_FLAVOR_BALANCED: - decide_balanced(hold_tap, event); + decide_balanced(hold_tap, event_type); case ZMK_BHV_HOLD_TAP_FLAVOR_TAP_PREFERRED: - decide_tap_preferred(hold_tap, event); + decide_tap_preferred(hold_tap, event_type); } if (!hold_tap->is_decided) { @@ -277,26 +279,31 @@ static void decide_hold_tap(struct active_hold_tap *hold_tap, enum decision_mome } LOG_DBG("%d decided %s (%s event %d)", hold_tap->position, hold_tap->is_hold ? "hold" : "tap", - flavor_str(hold_tap->config->flavor), event); + flavor_str(hold_tap->config->flavor), event_type); undecided_hold_tap = NULL; - struct zmk_behavior_binding *behavior; + struct zmk_behavior_binding_event event = { + .position = hold_tap->position, + .timestamp = hold_tap->timestamp, + }; + + struct zmk_behavior_binding binding; if (hold_tap->is_hold) { - behavior = &hold_tap->config->behaviors->hold; - struct device *behavior_device = device_get_binding(behavior->behavior_dev); - behavior_keymap_binding_pressed(behavior_device, hold_tap->position, hold_tap->param_hold, - 0); + binding.behavior_dev = hold_tap->config->behaviors->hold.behavior_dev; + binding.param1 = hold_tap->param_hold; + binding.param2 = 0; } else { - behavior = &hold_tap->config->behaviors->tap; - struct device *behavior_device = device_get_binding(behavior->behavior_dev); - behavior_keymap_binding_pressed(behavior_device, hold_tap->position, hold_tap->param_tap, - 0); + binding.behavior_dev = hold_tap->config->behaviors->tap.behavior_dev; + binding.param1 = hold_tap->param_tap; + binding.param2 = 0; } + behavior_keymap_binding_pressed(&binding, event); release_captured_events(); } -static int on_hold_tap_binding_pressed(struct device *dev, u32_t position, u32_t param_hold, - u32_t param_tap) { +static int on_hold_tap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + struct device *dev = device_get_binding(binding->behavior_dev); const struct behavior_hold_tap_config *cfg = dev->config_info; if (undecided_hold_tap != NULL) { @@ -305,54 +312,69 @@ static int on_hold_tap_binding_pressed(struct device *dev, u32_t position, u32_t return 0; } - struct active_hold_tap *hold_tap = store_hold_tap(position, param_hold, param_tap, cfg); + struct active_hold_tap *hold_tap = + store_hold_tap(event.position, binding->param1, binding->param2, event.timestamp, cfg); if (hold_tap == NULL) { LOG_ERR("unable to store hold-tap info, did you press more than %d hold-taps?", ZMK_BHV_HOLD_TAP_MAX_HELD); return 0; } - LOG_DBG("%d new undecided hold_tap", position); + LOG_DBG("%d new undecided hold_tap", event.position); undecided_hold_tap = hold_tap; - k_delayed_work_submit(&hold_tap->work, cfg->tapping_term_ms()); - // todo: once we get timing info for keypresses, start the timer relative to the original - // keypress don't forget to simulate a timer-event before the event after that time was handled. + // if this behavior was queued we have to adjust the timer to only + // wait for the remaining time. + s32_t tapping_term_ms_left = (hold_tap->timestamp + cfg->tapping_term_ms) - k_uptime_get(); + if (tapping_term_ms_left > 0) { + k_delayed_work_submit(&hold_tap->work, K_MSEC(tapping_term_ms_left)); + } return 0; } -static int on_hold_tap_binding_released(struct device *dev, u32_t position, u32_t _, u32_t __) { - struct active_hold_tap *hold_tap = find_hold_tap(position); - +static int on_hold_tap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + struct active_hold_tap *hold_tap = find_hold_tap(event.position); if (hold_tap == NULL) { LOG_ERR("ACTIVE_HOLD_TAP_CLEANED_UP_TOO_EARLY"); return 0; } + // If these events were queued, the timer event may be queued too late or not at all. + // We insert a timer event before the TH_KEY_UP event to verify. int work_cancel_result = k_delayed_work_cancel(&hold_tap->work); + if (event.timestamp > (hold_tap->timestamp + hold_tap->config->tapping_term_ms)) { + decide_hold_tap(hold_tap, HT_TIMER_EVENT); + } + decide_hold_tap(hold_tap, HT_KEY_UP); - struct zmk_behavior_binding *behavior; + // todo: set up the binding and data items inside of the active_hold_tap struct + struct zmk_behavior_binding_event sub_behavior_data = { + .position = hold_tap->position, + .timestamp = hold_tap->timestamp, + }; + + struct zmk_behavior_binding sub_behavior_binding; if (hold_tap->is_hold) { - behavior = &hold_tap->config->behaviors->hold; - struct device *behavior_device = device_get_binding(behavior->behavior_dev); - behavior_keymap_binding_released(behavior_device, hold_tap->position, hold_tap->param_hold, - 0); + sub_behavior_binding.behavior_dev = hold_tap->config->behaviors->hold.behavior_dev; + sub_behavior_binding.param1 = hold_tap->param_hold; + sub_behavior_binding.param2 = 0; } else { - behavior = &hold_tap->config->behaviors->tap; - struct device *behavior_device = device_get_binding(behavior->behavior_dev); - behavior_keymap_binding_released(behavior_device, hold_tap->position, hold_tap->param_tap, - 0); + sub_behavior_binding.behavior_dev = hold_tap->config->behaviors->tap.behavior_dev; + sub_behavior_binding.param1 = hold_tap->param_tap; + sub_behavior_binding.param2 = 0; } + behavior_keymap_binding_released(&sub_behavior_binding, sub_behavior_data); if (work_cancel_result == -EINPROGRESS) { // let the timer handler clean up // if we'd clear now, the timer may call back for an uninitialized active_hold_tap. - LOG_DBG("%d hold-tap timer work in event queue", position); + LOG_DBG("%d hold-tap timer work in event queue", event.position); hold_tap->work_is_cancelled = true; } else { - LOG_DBG("%d cleaning up hold-tap", position); + LOG_DBG("%d cleaning up hold-tap", event.position); clear_hold_tap(hold_tap); } @@ -382,6 +404,14 @@ static int position_state_changed_listener(const struct zmk_event_header *eh) { } } + // If these events were queued, the timer event may be queued too late or not at all. + // We make a timer decision before the other key events are handled if the timer would + // have run out. + if (ev->timestamp > + (undecided_hold_tap->timestamp + undecided_hold_tap->config->tapping_term_ms)) { + decide_hold_tap(undecided_hold_tap, HT_TIMER_EVENT); + } + if (!ev->state && find_captured_keydown_event(ev->position) == NULL) { // no keydown event has been captured, let it bubble. // we'll catch modifiers later in modifier_state_changed_listener @@ -463,6 +493,7 @@ static int behavior_hold_tap_init(struct device *dev) { struct behavior_hold_tap_data {}; static struct behavior_hold_tap_data behavior_hold_tap_data; +/* todo: get rid of unused param1 and param2. */ #define _TRANSFORM_ENTRY(idx, node) \ { \ .behavior_dev = DT_LABEL(DT_INST_PHANDLE_BY_IDX(node, bindings, idx)), \ @@ -473,14 +504,11 @@ static struct behavior_hold_tap_data behavior_hold_tap_data; }, #define KP_INST(n) \ - static k_timeout_t behavior_hold_tap_config_##n##_gettime() { \ - return K_MSEC(DT_INST_PROP(n, tapping_term_ms)); \ - } \ static struct behavior_hold_tap_behaviors behavior_hold_tap_behaviors_##n = { \ .hold = _TRANSFORM_ENTRY(0, n).tap = _TRANSFORM_ENTRY(1, n)}; \ static struct behavior_hold_tap_config behavior_hold_tap_config_##n = { \ .behaviors = &behavior_hold_tap_behaviors_##n, \ - .tapping_term_ms = &behavior_hold_tap_config_##n##_gettime, \ + .tapping_term_ms = DT_INST_PROP(n, tapping_term_ms), \ .flavor = DT_ENUM_IDX(DT_DRV_INST(n), flavor), \ }; \ DEVICE_AND_API_INIT(behavior_hold_tap_##n, DT_INST_LABEL(n), behavior_hold_tap_init, \ diff --git a/app/src/behaviors/behavior_key_press.c b/app/src/behaviors/behavior_key_press.c index bbfbe369..d691e9fe 100644 --- a/app/src/behaviors/behavior_key_press.c +++ b/app/src/behaviors/behavior_key_press.c @@ -12,6 +12,7 @@ #include #include +#include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -22,18 +23,24 @@ struct behavior_key_press_data {}; static int behavior_key_press_init(struct device *dev) { return 0; }; -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t keycode, u32_t _) { +static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + struct device *dev = device_get_binding(binding->behavior_dev); const struct behavior_key_press_config *cfg = dev->config_info; - LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", position, cfg->usage_page, keycode); + LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", event.position, cfg->usage_page, + binding->param1); - return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, keycode, true)); + return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, binding->param1, true)); } -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t keycode, u32_t _) { +static int on_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + struct device *dev = device_get_binding(binding->behavior_dev); const struct behavior_key_press_config *cfg = dev->config_info; - LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", position, cfg->usage_page, keycode); + LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", event.position, cfg->usage_page, + binding->param1); - return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, keycode, false)); + return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, binding->param1, false)); } static const struct behavior_driver_api behavior_key_press_driver_api = { diff --git a/app/src/behaviors/behavior_momentary_layer.c b/app/src/behaviors/behavior_momentary_layer.c index 80b7165b..b1fb14b0 100644 --- a/app/src/behaviors/behavior_momentary_layer.c +++ b/app/src/behaviors/behavior_momentary_layer.c @@ -11,6 +11,7 @@ #include #include +#include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -19,16 +20,16 @@ struct behavior_mo_data {}; static int behavior_mo_init(struct device *dev) { return 0; }; -static int mo_keymap_binding_pressed(struct device *dev, u32_t position, u32_t layer, u32_t _) { - LOG_DBG("position %d layer %d", position, layer); - - return zmk_keymap_layer_activate(layer); +static int mo_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + LOG_DBG("position %d layer %d", event.position, binding->param1); + return zmk_keymap_layer_activate(binding->param1); } -static int mo_keymap_binding_released(struct device *dev, u32_t position, u32_t layer, u32_t _) { - LOG_DBG("position %d layer %d", position, layer); - - return zmk_keymap_layer_deactivate(layer); +static int mo_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + LOG_DBG("position %d layer %d", event.position, binding->param1); + return zmk_keymap_layer_deactivate(binding->param1); } static const struct behavior_driver_api behavior_mo_driver_api = { diff --git a/app/src/behaviors/behavior_none.c b/app/src/behaviors/behavior_none.c index b548e6f7..96ea9d5d 100644 --- a/app/src/behaviors/behavior_none.c +++ b/app/src/behaviors/behavior_none.c @@ -11,6 +11,8 @@ #include #include +#include + LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); struct behavior_none_config {}; @@ -18,13 +20,13 @@ struct behavior_none_data {}; static int behavior_none_init(struct device *dev) { return 0; }; -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, - u32_t _param2) { +static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { return 0; } -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t _param1, - u32_t _param2) { +static int on_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { return 0; } diff --git a/app/src/behaviors/behavior_reset.c b/app/src/behaviors/behavior_reset.c index 90de20b0..d1233a51 100644 --- a/app/src/behaviors/behavior_reset.c +++ b/app/src/behaviors/behavior_reset.c @@ -11,6 +11,8 @@ #include #include +#include + LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); struct behavior_reset_config { @@ -19,8 +21,9 @@ struct behavior_reset_config { static int behavior_reset_init(struct device *dev) { return 0; }; -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, - u32_t _param2) { +static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + struct device *dev = device_get_binding(binding->behavior_dev); const struct behavior_reset_config *cfg = dev->config_info; // TODO: Correct magic code for going into DFU? diff --git a/app/src/behaviors/behavior_rgb_underglow.c b/app/src/behaviors/behavior_rgb_underglow.c index 621eab5e..2ee6716a 100644 --- a/app/src/behaviors/behavior_rgb_underglow.c +++ b/app/src/behaviors/behavior_rgb_underglow.c @@ -12,13 +12,15 @@ #include #include +#include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); static int behavior_rgb_underglow_init(struct device *dev) { return 0; } -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t action, u32_t _) { - switch (action) { +static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + switch (binding->param1) { case RGB_TOG: return zmk_rgb_underglow_toggle(); case RGB_HUI: diff --git a/app/src/behaviors/behavior_sensor_rotate_key_press.c b/app/src/behaviors/behavior_sensor_rotate_key_press.c index 1a0bf03a..71c4376c 100644 --- a/app/src/behaviors/behavior_sensor_rotate_key_press.c +++ b/app/src/behaviors/behavior_sensor_rotate_key_press.c @@ -23,15 +23,16 @@ struct behavior_sensor_rotate_key_press_data {}; static int behavior_sensor_rotate_key_press_init(struct device *dev) { return 0; }; -static int on_sensor_binding_triggered(struct device *dev, struct device *sensor, - u32_t increment_keycode, u32_t decrement_keycode) { +static int on_sensor_binding_triggered(struct zmk_behavior_binding *binding, + struct device *sensor) { + struct device *dev = device_get_binding(binding->behavior_dev); const struct behavior_sensor_rotate_key_press_config *cfg = dev->config_info; struct sensor_value value; int err; u32_t keycode; struct keycode_state_changed *ev; LOG_DBG("usage_page 0x%02X inc keycode 0x%02X dec keycode 0x%02X", cfg->usage_page, - increment_keycode, decrement_keycode); + binding->param1, binding->param2); err = sensor_channel_get(sensor, SENSOR_CHAN_ROTATION, &value); @@ -42,10 +43,10 @@ static int on_sensor_binding_triggered(struct device *dev, struct device *sensor switch (value.val1) { case 1: - keycode = increment_keycode; + keycode = binding->param1; break; case -1: - keycode = decrement_keycode; + keycode = binding->param2; break; default: return -ENOTSUP; diff --git a/app/src/behaviors/behavior_toggle_layer.c b/app/src/behaviors/behavior_toggle_layer.c index 28194519..b3c69614 100644 --- a/app/src/behaviors/behavior_toggle_layer.c +++ b/app/src/behaviors/behavior_toggle_layer.c @@ -11,6 +11,7 @@ #include #include +#include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -19,15 +20,15 @@ struct behavior_tog_data {}; static int behavior_tog_init(struct device *dev) { return 0; }; -static int tog_keymap_binding_pressed(struct device *dev, u32_t position, u32_t layer, u32_t _) { - LOG_DBG("position %d layer %d", position, layer); - - return zmk_keymap_layer_toggle(layer); +static int tog_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + LOG_DBG("position %d layer %d", event.position, binding->param1); + return zmk_keymap_layer_toggle(binding->param1); } -static int tog_keymap_binding_released(struct device *dev, u32_t position, u32_t layer, u32_t _) { - LOG_DBG("position %d layer %d", position, layer); - +static int tog_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + LOG_DBG("position %d layer %d", event.position, binding->param1); return 0; } diff --git a/app/src/behaviors/behavior_transparent.c b/app/src/behaviors/behavior_transparent.c index f7852f39..cede3699 100644 --- a/app/src/behaviors/behavior_transparent.c +++ b/app/src/behaviors/behavior_transparent.c @@ -11,6 +11,8 @@ #include #include +#include + LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); struct behavior_transparent_config {}; @@ -18,13 +20,13 @@ struct behavior_transparent_data {}; static int behavior_transparent_init(struct device *dev) { return 0; }; -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t _param1, - u32_t _param2) { +static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { return 1; } -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t _param1, - u32_t _param2) { +static int on_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { return 1; } diff --git a/app/src/keymap.c b/app/src/keymap.c index a87ce04b..74fe60db 100644 --- a/app/src/keymap.c +++ b/app/src/keymap.c @@ -104,9 +104,14 @@ bool is_active_layer(u8_t layer, u32_t layer_state) { return (layer_state & BIT(layer)) == BIT(layer) || layer == zmk_keymap_layer_default; } -int zmk_keymap_apply_position_state(int layer, u32_t position, bool pressed) { +int zmk_keymap_apply_position_state(int layer, u32_t position, bool pressed, s64_t timestamp) { struct zmk_behavior_binding *binding = &zmk_keymap[layer][position]; struct device *behavior; + struct zmk_behavior_binding_event event = { + .layer = layer, + .position = position, + .timestamp = timestamp, + }; LOG_DBG("layer: %d position: %d, binding name: %s", layer, position, log_strdup(binding->behavior_dev)); @@ -119,20 +124,18 @@ int zmk_keymap_apply_position_state(int layer, u32_t position, bool pressed) { } if (pressed) { - return behavior_keymap_binding_pressed(behavior, position, binding->param1, - binding->param2); + return behavior_keymap_binding_pressed(binding, event); } else { - return behavior_keymap_binding_released(behavior, position, binding->param1, - binding->param2); + return behavior_keymap_binding_released(binding, event); } } -int zmk_keymap_position_state_changed(u32_t position, bool pressed) { +int zmk_keymap_position_state_changed(u32_t position, bool pressed, s64_t timestamp) { for (int layer = ZMK_KEYMAP_LAYERS_LEN - 1; layer >= zmk_keymap_layer_default; layer--) { u32_t layer_state = pressed ? zmk_keymap_layer_state : zmk_keymap_active_behavior_layer[position]; if (is_active_layer(layer, layer_state)) { - int ret = zmk_keymap_apply_position_state(layer, position, pressed); + int ret = zmk_keymap_apply_position_state(layer, position, pressed, timestamp); zmk_keymap_active_behavior_layer[position] = zmk_keymap_layer_state; @@ -171,8 +174,7 @@ int zmk_keymap_sensor_triggered(u8_t sensor_number, struct device *sensor) { continue; } - ret = behavior_sensor_keymap_binding_triggered(behavior, sensor, binding->param1, - binding->param2); + ret = behavior_sensor_keymap_binding_triggered(binding, sensor); if (ret > 0) { LOG_DBG("behavior processing to continue to next layer"); @@ -194,7 +196,7 @@ int zmk_keymap_sensor_triggered(u8_t sensor_number, struct device *sensor) { int keymap_listener(const struct zmk_event_header *eh) { if (is_position_state_changed(eh)) { const struct position_state_changed *ev = cast_position_state_changed(eh); - return zmk_keymap_position_state_changed(ev->position, ev->state); + return zmk_keymap_position_state_changed(ev->position, ev->state, ev->timestamp); #if ZMK_KEYMAP_HAS_SENSORS } else if (is_sensor_event(eh)) { const struct sensor_event *ev = cast_sensor_event(eh); diff --git a/app/src/kscan.c b/app/src/kscan.c index 0046f5ca..8575e708 100644 --- a/app/src/kscan.c +++ b/app/src/kscan.c @@ -52,6 +52,7 @@ void zmk_kscan_process_msgq(struct k_work *item) { pos_ev = new_position_state_changed(); pos_ev->state = pressed; pos_ev->position = position; + pos_ev->timestamp = k_uptime_get(); ZMK_EVENT_RAISE(pos_ev); } } diff --git a/app/src/split/bluetooth/central.c b/app/src/split/bluetooth/central.c index cb1b68be..ed52ba07 100644 --- a/app/src/split/bluetooth/central.c +++ b/app/src/split/bluetooth/central.c @@ -60,6 +60,7 @@ static u8_t split_central_notify_func(struct bt_conn *conn, struct bt_gatt_subsc struct position_state_changed *pos_ev = new_position_state_changed(); pos_ev->position = position; pos_ev->state = pressed; + pos_ev->timestamp = k_uptime_get(); LOG_DBG("Trigger key position state change for %d", position); ZMK_EVENT_RAISE(pos_ev); diff --git a/app/tests/hold-tap/balanced/many-nested/events.patterns b/app/tests/hold-tap/balanced/many-nested/events.patterns new file mode 100644 index 00000000..fdf2b15c --- /dev/null +++ b/app/tests/hold-tap/balanced/many-nested/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode/kp/p +s/.*mo_keymap_binding/mo/p +s/.*on_hold_tap_binding/ht_binding/p +s/.*decide_hold_tap/ht_decide/p \ No newline at end of file diff --git a/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot b/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot new file mode 100644 index 00000000..806896fb --- /dev/null +++ b/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot @@ -0,0 +1,20 @@ +ht_binding_pressed: 0 new undecided hold_tap +ht_decide: 0 decided hold (balanced event 3) +kp_pressed: usage_page 0x07 keycode 0xe1 +ht_binding_pressed: 1 new undecided hold_tap +ht_decide: 1 decided hold (balanced event 3) +kp_pressed: usage_page 0x07 keycode 0xe0 +ht_binding_pressed: 2 new undecided hold_tap +ht_binding_released: 0 cleaning up hold-tap +ht_decide: 2 decided hold (balanced event 3) +kp_pressed: usage_page 0x07 keycode 0xe3 +ht_binding_pressed: 3 new undecided hold_tap +ht_binding_released: 1 cleaning up hold-tap +ht_decide: 3 decided hold (balanced event 3) +kp_pressed: usage_page 0x07 keycode 0xe2 +kp_released: usage_page 0x07 keycode 0xe1 +kp_released: usage_page 0x07 keycode 0xe0 +kp_released: usage_page 0x07 keycode 0xe3 +ht_binding_released: 2 cleaning up hold-tap +kp_released: usage_page 0x07 keycode 0xe2 +ht_binding_released: 3 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/many-nested/native_posix.keymap b/app/tests/hold-tap/balanced/many-nested/native_posix.keymap new file mode 100644 index 00000000..3cb04c34 --- /dev/null +++ b/app/tests/hold-tap/balanced/many-nested/native_posix.keymap @@ -0,0 +1,41 @@ +#include +#include +#include + +/ { + behaviors { + ht_bal: behavior_hold_tap_balanced { + compatible = "zmk,behavior-hold-tap"; + label = "HOLD_TAP_BALANCED"; + #binding-cells = <2>; + flavor = "balanced"; + tapping_term_ms = <300>; + bindings = <&kp>, <&kp>; + }; + }; + + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &ht_bal LSFT F &ht_bal LCTL J + &ht_bal LGUI H &ht_bal LALT L + >; + }; + }; +}; + +&kscan { + events = < + ZMK_MOCK_PRESS(0,0,100) + ZMK_MOCK_PRESS(0,1,100) + ZMK_MOCK_PRESS(1,0,100) + ZMK_MOCK_PRESS(1,1,100) + ZMK_MOCK_RELEASE(0,0,100) + ZMK_MOCK_RELEASE(0,1,100) + ZMK_MOCK_RELEASE(1,0,100) + ZMK_MOCK_RELEASE(1,1,100) + >; +}; From 7fc7a351170fb2017cb40e8de79b4535a936a6f6 Mon Sep 17 00:00:00 2001 From: Mubeen Khan Date: Sat, 10 Oct 2020 16:51:17 -0500 Subject: [PATCH 201/353] Revised keymap to Qwerty --- app/boards/shields/tg4x/tg4x.keymap | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/boards/shields/tg4x/tg4x.keymap b/app/boards/shields/tg4x/tg4x.keymap index 64e98bb3..bee5c87b 100644 --- a/app/boards/shields/tg4x/tg4x.keymap +++ b/app/boards/shields/tg4x/tg4x.keymap @@ -31,27 +31,27 @@ default_layer { bindings = < - &kp GRAV &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &kp SCLN &kp BKSP - &kp TAB &hm LGUI A &hm LALT R &hm LCTL S &hm LSFT T &kp G &kp M &hm RSFT N &hm RCTL E &hm RALT I &hm RGUI O &kp RET - &kp LSFT &kp Z &kp X &kp C &kp D &kp V &kp K &kp H &kp CMMA &kp DOT &kp FSLH &kp QUOT - &kp LCTL &kp LALT &kp LGUI < 1 BKSP < 2 SPC &kp LARW &kp DARW &kp UARW &kp RARW + &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BKSP + &kp TAB &hm LGUI A &hm LALT S &hm LCTL D &hm LSFT F &kp G &kp H &hm RSFT J &hm RCTL K &hm RALT L &hm RGUI SCLN &kp RET + &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp QUOT + &kp LCTL &kp LALT &kp LGUI < 1 BKSP < 2 SPC &kp LARW &kp DARW &kp UARW &kp RARW >; }; lower { bindings = < - &kp ESC &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp PRSC - &kp DEL &trans &kp VOLU &trans &trans &trans &trans &kp LARW &kp DARW &kp UARW &kp RARW &trans - &trans &trans &kp VOLD &trans &trans &trans &trans &trans &trans &bt BT_PRV &bt BT_NXT &bt BT_CLR - &bootloader &reset &trans &trans &trans &trans &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 + &kp GRAV &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp PRSC + &kp DEL &trans &kp VOLU &trans &trans &trans &trans &kp LARW &kp DARW &kp UARW &kp RARW &trans + &trans &trans &kp VOLD &trans &trans &trans &trans &trans &trans &bt BT_PRV &bt BT_NXT &bt BT_CLR + &bootloader &reset &trans &trans &trans &trans &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 >; }; raise { bindings = < - &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp PRSC - &kp DEL &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp MINUS &kp EQL &kp LBKT &kp RBKT &kp BSLH - &trans &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp TILD &kp HOME &kp PGUP &kp PGDN &kp END - &trans &trans &trans &trans &trans &trans &kp M_NEXT &kp M_VOLD &kp M_VOLU &kp M_PLAY + &kp GRAV &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp PRSC + &kp DEL &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp MINUS &kp EQL &kp LBKT &kp RBKT &kp BSLH + &trans &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp TILD &kp HOME &kp PGUP &kp PGDN &kp END + &trans &trans &trans &trans &trans &trans &kp M_NEXT &kp M_VOLD &kp M_VOLU &kp M_PLAY >; }; }; From 5f58193cdefed39aca16802772f8eefdebc09513 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sat, 10 Oct 2020 21:40:22 +0000 Subject: [PATCH 202/353] fix: check out Bash scripts with LF Always check out Bashs scripts with Unix-style line endings so they work if you run them inside Docker on Windows. --- .gitattributes | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..3d05d86d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +* text=auto + +# Always use Unix-style line endings for Bash scripts so they work in +# Docker on Windows. +.bashrc text eol=lf +*.sh text eol=lf From 425ea441c4d691fa444601fcda1afb3259b833fa Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sat, 10 Oct 2020 23:14:38 +0000 Subject: [PATCH 203/353] fix: allow nested zmk-config for dev container VS Code can't share two folders with a Docker container at the same time, so to build with -DZMK_CONFIG the zmk-config repo needs to be a subfolder of the zmk repo. Added zmk-config to .gitignore to allow this. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 40e0536c..8a06510d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ /modules /tools /zephyr +/zmk-config /build *.DS_Store From 4aa45c6f40c3e640cebce58b4d10cd24dc61b8ed Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Sat, 10 Oct 2020 17:00:13 -0700 Subject: [PATCH 204/353] update setup.ps1 --- docs/static/setup.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index 1da57378..63bd5c0e 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -57,11 +57,11 @@ catch [System.Management.Automation.CommandNotFoundException] { } Test-Git-Config -Option "user.name" -ErrMsg "Git username not set!`nRun: git config --global user.name 'My Name'" -Test-Git-Config -Option "user.email" -ErrMsg "Git email not set!`nRun: git config --global user.name 'example@myemail.com'" +Test-Git-Config -Option "user.email" -ErrMsg "Git email not set!`nRun: git config --global user.email 'example@myemail.com'" -$permission = (Get-Acl $PSScriptRoot).Access | +$permission = (Get-Acl $pwd).Access | ?{$_.IdentityReference -match $env:UserName ` - -and $_.FileSystemRights -match "Read" ` + -and $_.FileSystemRights -match "FullControl" ` -or $_.FileSystemRights -match "Write" } | Select IdentityReference,FileSystemRights From f9e8866a520051385bcb89a60caaef0ec2fe23ad Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Sat, 10 Oct 2020 18:28:16 -0700 Subject: [PATCH 205/353] add support for wget to setup.sh --- docs/static/setup.sh | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 96e87688..fc5a7cdd 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -9,15 +9,25 @@ set -e check_exists() { command_to_run=$1 error_message=$2 + local __resultvar=$3 if ! eval "$command_to_run" &> /dev/null; then - printf "%s\n" "$error_message" - exit 1 + if [[ "$__resultvar" != "" ]]; then + eval $__resultvar="'false'" + else + printf "%s\n" "$error_message" + exit 1 + fi + else + if [[ "$__resultvar" != "" ]]; then + eval $__resultvar="'true'" + fi fi } check_exists "command -v git" "git is not installed, and is required for this script!" -check_exists "command -v curl" "curl is not installed, and is required for this script!" +check_exists "command -v curl" "curl is not installed, and is required for this script!" curl_exists +check_exists "command -v wget" "wget is not installed, and is required for this script!" wget_exists check_exists "git config user.name" "Git username not set!\nRun: git config --global user.name 'My Name'" check_exists "git config user.email" "Git email not set!\nRun: git config --global user.email 'example@myemail.com'" @@ -29,6 +39,30 @@ if [ ! -w `pwd` ]; then exit 1 fi +if [[ $curl_exists == "true" && $wget_exists == "true" ]]; then + prompt="Detected both curl and wget, which one would you like to use? [default is curl]" + options=("curl" "wget") + PS3="$prompt " + select opt in "${options[@]}" "Quit"; do + case "$REPLY" in + + 1 ) download_command="curl -O "; break;; + 2 ) download_command="wget "; break;; + + $(( ${#options[@]}+1 )) ) echo "Goodbye!"; exit 1;; + *) download_command="curl -O "; break;; + + esac + done +elif [[ $curl_exists == "true" ]]; then + download_command="curl -O " +elif [[ $wget_exists == "true" ]]; then + download_command="wget " +else + echo 'Neither curl nor wget are installed. One of the two is required for this script!' + exit 1 +fi + repo_path="https://github.com/zmkfirmware/zmk-config-split-template.git" title="ZMK Config Setup:" @@ -133,10 +167,10 @@ cd ${repo_name} pushd config -curl -O "https://raw.githubusercontent.com/zmkfirmware/zmk/main/app/boards/shields/${shield}/${shield}.conf" +$download_command "https://raw.githubusercontent.com/zmkfirmware/zmk/main/app/boards/shields/${shield}/${shield}.conf" if [ "$copy_keymap" == "yes" ]; then - curl -O "https://raw.githubusercontent.com/zmkfirmware/zmk/main/app/boards/shields/${shield}/${shield}.keymap" + $download_command "https://raw.githubusercontent.com/zmkfirmware/zmk/main/app/boards/shields/${shield}/${shield}.keymap" fi popd From b738cc9d75e50bf7400a621c33ce32e697f3c250 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Sat, 10 Oct 2020 19:16:07 -0700 Subject: [PATCH 206/353] add option to use wget --- docs/static/setup.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index fc5a7cdd..b5abb288 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -39,21 +39,21 @@ if [ ! -w `pwd` ]; then exit 1 fi +# Parse all commandline options +while [[ "$#" -gt 0 ]]; do + case $1 in + -w|--wget) force_wget="true"; break;; + *) echo "Unknown parameter: $1"; exit 1;; + esac + shift +done + if [[ $curl_exists == "true" && $wget_exists == "true" ]]; then - prompt="Detected both curl and wget, which one would you like to use? [default is curl]" - options=("curl" "wget") - PS3="$prompt " - select opt in "${options[@]}" "Quit"; do - case "$REPLY" in - - 1 ) download_command="curl -O "; break;; - 2 ) download_command="wget "; break;; - - $(( ${#options[@]}+1 )) ) echo "Goodbye!"; exit 1;; - *) download_command="curl -O "; break;; - - esac - done + if [[ $force_wget == "true" ]]; then + download_command="wget " + else + download_command="curl -O " + fi elif [[ $curl_exists == "true" ]]; then download_command="curl -O " elif [[ $wget_exists == "true" ]]; then From 677746014c61a33040da45eccf76e869c6891f79 Mon Sep 17 00:00:00 2001 From: kurtis-lew Date: Sat, 10 Oct 2020 19:33:47 -0700 Subject: [PATCH 207/353] Addressing #138 - ZMK Config Folders --- docs/docs/customization.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/docs/customization.md b/docs/docs/customization.md index 0bb17941..261c40de 100644 --- a/docs/docs/customization.md +++ b/docs/docs/customization.md @@ -1,10 +1,21 @@ --- id: customization -title: Customizing ZMK +title: Customizing ZMK/`zmk-config` folders sidebar_label: Customizing ZMK --- After verifying you can successfully flash the default firmware, you will probably want to begin customizing your keymap and other keyboard options. +[In the initial setup tutorial](user-setup), you created a Github repository called `zmk-config`. This repository is a discrete filesystem which works +with the main `zmk` firmware repository to build your desired firmware. The main advantage of a discrete configuration folder is ensuring that the +working components of ZMK are kept separate from your personal keyboard settings, reducing the amount of file manipulation in the configuration process. +This makes flashing ZMK to your keyboard much easier, especially because you don't need to keep an up-to-date copy of zmk on your computer at all times. + +On default `zmk-config` folder should contain two files: +* `.conf` +* ``.keymap + +However, your config folder can also be modified to include a `boards/` directory for keymaps and configurations for multiple boards/shields +outside of the default keyboard setting definitions. ## Configuration Changes @@ -26,8 +37,23 @@ GitHub Actions job to build your firmware which you can download once it complet If you need to, a review of [Learn The Basics Of Git In Under 10 Minutes](https://www.freecodecamp.org/news/learn-the-basics-of-git-in-under-10-minutes-da548267cc91/) will help you get these steps right. ::: +## Building from a local `zmk` fork using `zmk-config` + +[As outlined here](dev-build-flash), firmware comes in the form of .uf2 files, which can be built locally using the command `west build`. Normally, +`west build` will default to using the in-tree .keymap and .conf files found in your local copy of the `zmk` repository. However, you can append the command, `-DZMK_CONFIG="C:/the/absolute/path/config"` to `west build` in order to use the contents of your `zmk-config` folder instead of the +default keyboard settings. + **Notice that this path should point to the folder labelled `config` within your `zmk-config` folder.** + + +For instance, building kyria firmware from a user `myUser`'s `zmk-config` folder on Windows 10 may look something like this: + +``` +west build -b nice_nano -- -DSHIELD=kyria_left -DZMK_CONFIG="C:/Users/myUser/Documents/Github/zmk-config/config" +``` + ## Flashing Your Changes For normal keyboards, follow the same flashing instructions as before to flash your updated firmware. For split keyboards, only the central (left) side will need to be reflashed if you are just updating your keymap. +More troubleshooting information for split keyboards can be found [here](troubleshooting#split-keyboard-halves-unable-to-pair). From 23e9cbcaf9b00c87953a4a8b4e953ced154e1e4b Mon Sep 17 00:00:00 2001 From: Tsquash Date: Thu, 8 Oct 2020 20:40:28 -0500 Subject: [PATCH 208/353] Added Table and fixed Feature sentence added feature table new feature sentence --- docs/docs/intro.md | 49 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 8c1c043d..02a93e0c 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -13,31 +13,30 @@ feature. ## Features -At this point, ZMK is still missing many features. Currently, the working bits -include: - -- Wireless connectivity via BLE HID Over GATT (HOG) -- USB connectivity -- Low active power usage -- Split keyboard support -- [Keymaps and layers](behavior/layers) -- [Hold-tap](behavior/hold-tap) (which includes [mod-tap](behavior/mod-tap), [layer-tap](behavior/layers)) -- [Basic HID over USB](behavior/key-press) -- [Basic consumer (media) keycodes](behavior/key-press#consumer-key-press) -- [Encoders](feature/encoders) -- Basic [OLED display support](feature/displays) -- [RGB Underglow](feature/underglow) - -## Missing Features - -- One Shot Keys -- Combo keys -- Macros -- Complete split support (encoders and RGB are not supported on the 'peripheral' side) -- Battery reporting -- Low power sleep states -- Low power mode (to toggle LEDs and screen off) -- Shell over BLE +At this point, ZMK is still missing many features compared to more developed firmwares such as QMK. Here is a table comparing supported ZMK and QMK features: + +| | ZMK | QMK | +|----------------------------------------------------------------------------------------------------------|:---------:|:-----------:| +| Wireless Connectivity via BLE | ✅ | | +| USB Connectivity | ✅ | ✅ | +| Low Active Power Usage | ✅ | | +| Split Keyboard Support | ✅ | ✅ | +| [Keymaps and Layers](behavior/layers) | ✅ | ✅ | +| [Hold-tap](behavior/hold-tap) (which includes [mod-tap](behavior/mod-tap), [layer-tap](behavior/layers)) | ✅ | ✅ | +| [Basic HID over USB](behavior/key-press) | ✅ | ✅ | +| [Basic consumer (media) keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | +| [Encoders](feature/encoders) | ✅ | ✅ | +| Basic [OLED display support](feature/displays) | ✅ | ✅ | +| [RGB Underglow](feature/underglow) | ✅ | ✅ | +| One Shot Keys | | ✅ | +| Combo Keys | | ✅ | +| Macros | | ✅ | +| Mouse Keys | | ✅ | +| Battery Reporting | | | +| Low Power Sleep States | | | +| Low Power Mode (VCC Shutoff) | | | +| Shell over BLE | | | +| AVR/8 Bit | | ✅ | ## Code Of Conduct From 90b56a19410302b84aba5b9443f3e2f5b852a380 Mon Sep 17 00:00:00 2001 From: Tsquash Date: Thu, 8 Oct 2020 21:15:50 -0500 Subject: [PATCH 209/353] added in dev --- docs/docs/intro.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 02a93e0c..5d4b50e2 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -13,9 +13,9 @@ feature. ## Features -At this point, ZMK is still missing many features compared to more developed firmwares such as QMK. Here is a table comparing supported ZMK and QMK features: +At this point, ZMK is still missing many features compared to more developed firmware such as QMK. Here is a table comparing supported ZMK and QMK features: -| | ZMK | QMK | +| **Feature** | ZMK | QMK | |----------------------------------------------------------------------------------------------------------|:---------:|:-----------:| | Wireless Connectivity via BLE | ✅ | | | USB Connectivity | ✅ | ✅ | @@ -28,16 +28,17 @@ At this point, ZMK is still missing many features compared to more developed fir | [Encoders](feature/encoders) | ✅ | ✅ | | Basic [OLED display support](feature/displays) | ✅ | ✅ | | [RGB Underglow](feature/underglow) | ✅ | ✅ | -| One Shot Keys | | ✅ | -| Combo Keys | | ✅ | -| Macros | | ✅ | +| One Shot Keys | In Dev | ✅ | +| Combo Keys | In Dev | ✅ | +| Macros | In Dev | ✅ | | Mouse Keys | | ✅ | -| Battery Reporting | | | -| Low Power Sleep States | | | -| Low Power Mode (VCC Shutoff) | | | +| Battery Reporting | In Dev | | +| Low Power Sleep States | In Dev | | +| Low Power Mode (VCC Shutoff) | In Dev | | | Shell over BLE | | | +| Realtime Keymap Updating | In Dev | ✅ | | AVR/8 Bit | | ✅ | - +| Wide Range of ARM Chips Supported | ✅ | | ## Code Of Conduct Please note that this project is released with a From e740a83d68bfce54e2d0018d10b93c3242b3a9d9 Mon Sep 17 00:00:00 2001 From: Tsquash Date: Thu, 8 Oct 2020 23:33:58 -0500 Subject: [PATCH 210/353] Made columns wider --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 5d4b50e2..62797661 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -15,7 +15,7 @@ feature. At this point, ZMK is still missing many features compared to more developed firmware such as QMK. Here is a table comparing supported ZMK and QMK features: -| **Feature** | ZMK | QMK | +| **Feature** |   ZMK   |   QMK   | |----------------------------------------------------------------------------------------------------------|:---------:|:-----------:| | Wireless Connectivity via BLE | ✅ | | | USB Connectivity | ✅ | ✅ | From 910e207dbcc17fc5120b56550270458a29e0663c Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot <61706196+Tsquash@users.noreply.github.com> Date: Fri, 9 Oct 2020 11:12:10 -0500 Subject: [PATCH 211/353] Update Intro changed intro wording and link to layer tap Update intro.md --- docs/docs/intro.md | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 62797661..8348c547 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -13,32 +13,35 @@ feature. ## Features -At this point, ZMK is still missing many features compared to more developed firmware such as QMK. Here is a table comparing supported ZMK and QMK features: +At this point, ZMK is still missing many features compared to popular firmware such as QMK. Here is a table comparing supported ZMK and QMK features: | **Feature** |   ZMK   |   QMK   | |----------------------------------------------------------------------------------------------------------|:---------:|:-----------:| -| Wireless Connectivity via BLE | ✅ | | +| Multi-Device BLE Support | ✅ | | | USB Connectivity | ✅ | ✅ | -| Low Active Power Usage | ✅ | | +| Low Active Power Usage | ✅ | | | Split Keyboard Support | ✅ | ✅ | | [Keymaps and Layers](behavior/layers) | ✅ | ✅ | -| [Hold-tap](behavior/hold-tap) (which includes [mod-tap](behavior/mod-tap), [layer-tap](behavior/layers)) | ✅ | ✅ | -| [Basic HID over USB](behavior/key-press) | ✅ | ✅ | +| [Hold-tap](behavior/hold-tap) (which includes [mod-tap](behavior/mod-tap), [layer-tap](behavior/layers/#layer-tap)) | ✅ | ✅ | +| [Basic Keycodes](behavior/key-press) | ✅ | ✅ | | [Basic consumer (media) keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | -| [Encoders](feature/encoders) | ✅ | ✅ | -| Basic [OLED display support](feature/displays) | ✅ | ✅ | +| [Encoders](feature/encoders)[^1] | ✅ | ✅ | +| Proof of Concept [OLED display support](feature/displays) | ✅ | ✅ | | [RGB Underglow](feature/underglow) | ✅ | ✅ | | One Shot Keys | In Dev | ✅ | | Combo Keys | In Dev | ✅ | | Macros | In Dev | ✅ | -| Mouse Keys | | ✅ | +| Mouse Keys | | ✅ | | Battery Reporting | In Dev | | -| Low Power Sleep States | In Dev | | +| Low Power Sleep States | In Dev | | | Low Power Mode (VCC Shutoff) | In Dev | | -| Shell over BLE | | | -| Realtime Keymap Updating | In Dev | ✅ | -| AVR/8 Bit | | ✅ | -| Wide Range of ARM Chips Supported | ✅ | | +| Shell over BLE | | | +| Realtime Keymap Updating | Planned | ✅ | +| AVR/8 Bit | | ✅ | +| Wide Range of ARM Chips Supported | ✅ | | +[^1]:Note: Encoders are not currently supported on peripheral side splits. + + ## Code Of Conduct Please note that this project is released with a From 93c5ae17acd509207e8109e3307b59b9f70aa3d1 Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot <61706196+Tsquash@users.noreply.github.com> Date: Fri, 9 Oct 2020 11:28:23 -0500 Subject: [PATCH 212/353] Uniformed Capitals, Added footnotes --- docs/docs/intro.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 8348c547..f0b15d54 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -22,11 +22,11 @@ At this point, ZMK is still missing many features compared to popular firmware s | Low Active Power Usage | ✅ | | | Split Keyboard Support | ✅ | ✅ | | [Keymaps and Layers](behavior/layers) | ✅ | ✅ | -| [Hold-tap](behavior/hold-tap) (which includes [mod-tap](behavior/mod-tap), [layer-tap](behavior/layers/#layer-tap)) | ✅ | ✅ | +| [Hold-Tap](behavior/hold-tap) (Which Includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | | [Basic Keycodes](behavior/key-press) | ✅ | ✅ | -| [Basic consumer (media) keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | +| [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | | [Encoders](feature/encoders)[^1] | ✅ | ✅ | -| Proof of Concept [OLED display support](feature/displays) | ✅ | ✅ | +| [OLED Display Support](feature/displays)[^2] | In Dev ✅ | | [RGB Underglow](feature/underglow) | ✅ | ✅ | | One Shot Keys | In Dev | ✅ | | Combo Keys | In Dev | ✅ | @@ -39,8 +39,8 @@ At this point, ZMK is still missing many features compared to popular firmware s | Realtime Keymap Updating | Planned | ✅ | | AVR/8 Bit | | ✅ | | Wide Range of ARM Chips Supported | ✅ | | -[^1]:Note: Encoders are not currently supported on peripheral side splits. - +[^1]: Encoders are not currently supported on peripheral side splits. +[2^]: Oleds are currently proof of concept in ZMK. ## Code Of Conduct From e2a845b2eb452abcf3eec500de06172dd08dc58a Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot <61706196+Tsquash@users.noreply.github.com> Date: Fri, 9 Oct 2020 11:29:07 -0500 Subject: [PATCH 213/353] removed checkmark from zmk oled --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index f0b15d54..2090984a 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -26,7 +26,7 @@ At this point, ZMK is still missing many features compared to popular firmware s | [Basic Keycodes](behavior/key-press) | ✅ | ✅ | | [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | | [Encoders](feature/encoders)[^1] | ✅ | ✅ | -| [OLED Display Support](feature/displays)[^2] | In Dev ✅ | +| [OLED Display Support](feature/displays)[^2] | In Dev | | [RGB Underglow](feature/underglow) | ✅ | ✅ | | One Shot Keys | In Dev | ✅ | | Combo Keys | In Dev | ✅ | From eb9dc37f00759940ab172e0da102f3f303483e6f Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot <61706196+Tsquash@users.noreply.github.com> Date: Fri, 9 Oct 2020 11:30:14 -0500 Subject: [PATCH 214/353] fix table --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 2090984a..89857a44 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -26,7 +26,7 @@ At this point, ZMK is still missing many features compared to popular firmware s | [Basic Keycodes](behavior/key-press) | ✅ | ✅ | | [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | | [Encoders](feature/encoders)[^1] | ✅ | ✅ | -| [OLED Display Support](feature/displays)[^2] | In Dev | +| [OLED Display Support](feature/displays)[^2] | In Dev | ✅ | | [RGB Underglow](feature/underglow) | ✅ | ✅ | | One Shot Keys | In Dev | ✅ | | Combo Keys | In Dev | ✅ | From d7bfe979c9a0d67b5b2a9a4f87bc496c32c4ff60 Mon Sep 17 00:00:00 2001 From: Tsquash Date: Fri, 9 Oct 2020 19:05:44 -0500 Subject: [PATCH 215/353] Fixed Footnote and added user config repo --- docs/docs/intro.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 89857a44..095ab41e 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -15,11 +15,11 @@ feature. At this point, ZMK is still missing many features compared to popular firmware such as QMK. Here is a table comparing supported ZMK and QMK features: -| **Feature** |   ZMK   |   QMK   | +| **Feature** | ZMK |QMK | |----------------------------------------------------------------------------------------------------------|:---------:|:-----------:| | Multi-Device BLE Support | ✅ | | | USB Connectivity | ✅ | ✅ | -| Low Active Power Usage | ✅ | | +| User Configuration Repositories | ✅ | | | Split Keyboard Support | ✅ | ✅ | | [Keymaps and Layers](behavior/layers) | ✅ | ✅ | | [Hold-Tap](behavior/hold-tap) (Which Includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | @@ -32,15 +32,16 @@ At this point, ZMK is still missing many features compared to popular firmware s | Combo Keys | In Dev | ✅ | | Macros | In Dev | ✅ | | Mouse Keys | | ✅ | -| Battery Reporting | In Dev | | +| Low Active Power Usage | ✅ | | | Low Power Sleep States | In Dev | | | Low Power Mode (VCC Shutoff) | In Dev | | +| Battery Reporting | In Dev | | | Shell over BLE | | | | Realtime Keymap Updating | Planned | ✅ | | AVR/8 Bit | | ✅ | | Wide Range of ARM Chips Supported | ✅ | | -[^1]: Encoders are not currently supported on peripheral side splits. -[2^]: Oleds are currently proof of concept in ZMK. +[^2]: Encoders are not currently supported on peripheral side splits. +[^1]: OLEDs are currently proof of concept in ZMK. ## Code Of Conduct From 21987d338558610ca38a48ca4109d2a1a25a4b53 Mon Sep 17 00:00:00 2001 From: Tsquash Date: Fri, 9 Oct 2020 21:50:35 -0500 Subject: [PATCH 216/353] update intro.md --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 095ab41e..32222d10 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -19,7 +19,7 @@ At this point, ZMK is still missing many features compared to popular firmware s |----------------------------------------------------------------------------------------------------------|:---------:|:-----------:| | Multi-Device BLE Support | ✅ | | | USB Connectivity | ✅ | ✅ | -| User Configuration Repositories | ✅ | | +| User Configuration Repositories | ✅ | | | Split Keyboard Support | ✅ | ✅ | | [Keymaps and Layers](behavior/layers) | ✅ | ✅ | | [Hold-Tap](behavior/hold-tap) (Which Includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | From 229c8b4358afe4e9ac7dbbe176645ad4bf3cb1a2 Mon Sep 17 00:00:00 2001 From: Tsquash Date: Sat, 10 Oct 2020 12:39:36 -0500 Subject: [PATCH 217/353] Added BlueMicro Collumn --- docs/docs/intro.md | 56 +++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 32222d10..83291812 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -5,41 +5,37 @@ sidebar_label: Introduction --- ZMK Firmware is an open source (MIT) keyboard -firmware built on the [Zephyr™ Project](https://zephyrproject.org/) Real Time Operating System (RTOS). - -The goal is to provide a powerful, featureful keyboard firmware that is free -of licensing issues that prevent upstream BLE support as a first-class -feature. +firmware built on the [Zephyr™ Project](https://zephyrproject.org/) Real Time Operating System (RTOS). ZMK's goal is to provide a modern, wireless, and powerful firmware free of licensing issues. ## Features At this point, ZMK is still missing many features compared to popular firmware such as QMK. Here is a table comparing supported ZMK and QMK features: -| **Feature** | ZMK |QMK | -|----------------------------------------------------------------------------------------------------------|:---------:|:-----------:| -| Multi-Device BLE Support | ✅ | | -| USB Connectivity | ✅ | ✅ | -| User Configuration Repositories | ✅ | | -| Split Keyboard Support | ✅ | ✅ | -| [Keymaps and Layers](behavior/layers) | ✅ | ✅ | -| [Hold-Tap](behavior/hold-tap) (Which Includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | -| [Basic Keycodes](behavior/key-press) | ✅ | ✅ | -| [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | -| [Encoders](feature/encoders)[^1] | ✅ | ✅ | -| [OLED Display Support](feature/displays)[^2] | In Dev | ✅ | -| [RGB Underglow](feature/underglow) | ✅ | ✅ | -| One Shot Keys | In Dev | ✅ | -| Combo Keys | In Dev | ✅ | -| Macros | In Dev | ✅ | -| Mouse Keys | | ✅ | -| Low Active Power Usage | ✅ | | -| Low Power Sleep States | In Dev | | -| Low Power Mode (VCC Shutoff) | In Dev | | -| Battery Reporting | In Dev | | -| Shell over BLE | | | -| Realtime Keymap Updating | Planned | ✅ | -| AVR/8 Bit | | ✅ | -| Wide Range of ARM Chips Supported | ✅ | | +| **Feature** | ZMK | BlueMicro | QMK | +|--------------------------------------------------------------------------------------------------------|:-----------:|:------------:|:-----------:| +| Multi-Device BLE Support | ✅ | ✅ | | +| USB Connectivity | ✅ | | ✅ | +| User Configuration Repositories | ✅ | | | +| Split Keyboard Support | ✅ | ✅ | ✅ | +| [Keymaps and Layers](behavior/layers) | ✅ | ✅ | ✅ | +| [Hold-Tap](behavior/hold-tap) (Which Includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | ✅ | +| [Basic Keycodes](behavior/key-press) | ✅ | ✅ | ✅ | +| [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | ✅ | +| [Encoders](feature/encoders)[^1] | ✅ | | ✅ | +| [OLED Display Support](feature/displays)[^2] | In Dev | In Dev | ✅ | +| [RGB Underglow](feature/underglow) | ✅ | ✅ | ✅ | +| One Shot Keys | In Dev | ✅ | ✅ | +| Combo Keys | In Dev | | ✅ | +| Macros | In Dev | ✅ | ✅ | +| Mouse Keys | | ✅ | ✅ | +| Low Active Power Usage | ✅ | | | +| Low Power Sleep States | In Dev | ✅ | | +| Low Power Mode (VCC Shutoff) | In Dev | | | +| Battery Reporting | In Dev | ✅ | | +| Shell over BLE | | | | +| Realtime Keymap Updating | Planned | | ✅ | +| AVR/8 Bit | | | ✅ | +| Wide Range of ARM Chips Supported | ✅ | | | [^2]: Encoders are not currently supported on peripheral side splits. [^1]: OLEDs are currently proof of concept in ZMK. From 56ab812a6764d6ba0471f41e2806d3a7d076b8c8 Mon Sep 17 00:00:00 2001 From: Tsquash Date: Sat, 10 Oct 2020 12:53:44 -0500 Subject: [PATCH 218/353] fixed BLE part of table --- docs/docs/intro.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 83291812..ab211383 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -9,11 +9,12 @@ firmware built on the [Zephyr™ Project](https://zephyrproject.org/) Real Time ## Features -At this point, ZMK is still missing many features compared to popular firmware such as QMK. Here is a table comparing supported ZMK and QMK features: +At this point, ZMK is still missing many features compared to popular firmware such as QMK. Here is a table comparing supported ZMK, BlueMicro, and QMK features: | **Feature** | ZMK | BlueMicro | QMK | |--------------------------------------------------------------------------------------------------------|:-----------:|:------------:|:-----------:| -| Multi-Device BLE Support | ✅ | ✅ | | +| Low Latency BLE Support | ✅ | ✅ | | +| Multi-Device BLE Support | ✅ | | | | USB Connectivity | ✅ | | ✅ | | User Configuration Repositories | ✅ | | | | Split Keyboard Support | ✅ | ✅ | ✅ | From 593d7ff7812f2ec66d3bbafd577205137c59879f Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot Date: Sat, 10 Oct 2020 22:40:14 -0500 Subject: [PATCH 219/353] made table completely visual; changed feature sentence --- docs/docs/intro.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index ab211383..c5a214d3 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -9,7 +9,8 @@ firmware built on the [Zephyr™ Project](https://zephyrproject.org/) Real Time ## Features -At this point, ZMK is still missing many features compared to popular firmware such as QMK. Here is a table comparing supported ZMK, BlueMicro, and QMK features: +ZMK is currently missing some features found in other popular firmware. This table compares the features supported by ZMK, BlueMicro and QMK: + | **Feature** | ZMK | BlueMicro | QMK | |--------------------------------------------------------------------------------------------------------|:-----------:|:------------:|:-----------:| @@ -19,24 +20,24 @@ At this point, ZMK is still missing many features compared to popular firmware s | User Configuration Repositories | ✅ | | | | Split Keyboard Support | ✅ | ✅ | ✅ | | [Keymaps and Layers](behavior/layers) | ✅ | ✅ | ✅ | -| [Hold-Tap](behavior/hold-tap) (Which Includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | ✅ | +| [Hold-Tap](behavior/hold-tap) (which includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | ✅ | | [Basic Keycodes](behavior/key-press) | ✅ | ✅ | ✅ | | [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | ✅ | | [Encoders](feature/encoders)[^1] | ✅ | | ✅ | -| [OLED Display Support](feature/displays)[^2] | In Dev | In Dev | ✅ | +| [OLED Display Support](feature/displays)[^2] | 🚧 | 🚧 | ✅ | | [RGB Underglow](feature/underglow) | ✅ | ✅ | ✅ | -| One Shot Keys | In Dev | ✅ | ✅ | -| Combo Keys | In Dev | | ✅ | -| Macros | In Dev | ✅ | ✅ | +| One Shot Keys | 🚧 | ✅ | ✅ | +| Combo Keys | 🚧 | | ✅ | +| Macros | 🚧 | ✅ | ✅ | | Mouse Keys | | ✅ | ✅ | | Low Active Power Usage | ✅ | | | -| Low Power Sleep States | In Dev | ✅ | | -| Low Power Mode (VCC Shutoff) | In Dev | | | -| Battery Reporting | In Dev | ✅ | | -| Shell over BLE | | | | -| Realtime Keymap Updating | Planned | | ✅ | -| AVR/8 Bit | | | ✅ | -| Wide Range of ARM Chips Supported | ✅ | | | +| Low Power Sleep States | 🚧 | ✅ | | +| Low Power Mode (VCC Shutoff) | 🚧 | | | +| Battery Reporting | 🚧 | ✅ | | +| Shell over BLE | | | | +| Realtime Keymap Updating | 💡 | | ✅ | +| AVR/8 Bit | | | ✅ | +| Wide Range of ARM Chips Supported | ✅ | | | [^2]: Encoders are not currently supported on peripheral side splits. [^1]: OLEDs are currently proof of concept in ZMK. From 1ef21c57ea4d186290b1a47110885a5e2bf2f043 Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot Date: Sat, 10 Oct 2020 23:03:07 -0500 Subject: [PATCH 220/353] added links to see progress of features. --- docs/docs/intro.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index c5a214d3..60fe0d22 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -31,13 +31,13 @@ ZMK is currently missing some features found in other popular firmware. This tab | Macros | 🚧 | ✅ | ✅ | | Mouse Keys | | ✅ | ✅ | | Low Active Power Usage | ✅ | | | -| Low Power Sleep States | 🚧 | ✅ | | -| Low Power Mode (VCC Shutoff) | 🚧 | | | -| Battery Reporting | 🚧 | ✅ | | +| [Low Power Sleep States](https://github.com/zmkfirmware/zmk/pull/211) | 🚧 | ✅ | | +| [Low Power Mode (VCC Shutoff)](https://github.com/zmkfirmware/zmk/pull/242) | 🚧 | | | +| [Battery Reporting](https://github.com/zmkfirmware/zmk/issues/47) | 🚧 | ✅ | | | Shell over BLE | | | | | Realtime Keymap Updating | 💡 | | ✅ | | AVR/8 Bit | | | ✅ | -| Wide Range of ARM Chips Supported | ✅ | | | +| [Wide Range of ARM Chips Supported](https://docs.zephyrproject.org/latest/boards/index.html) | ✅ | | | [^2]: Encoders are not currently supported on peripheral side splits. [^1]: OLEDs are currently proof of concept in ZMK. From 78cb6c8b2115b5eebeddc03d7d8ecff6ba2574a7 Mon Sep 17 00:00:00 2001 From: Nuxiom <61762260+nuxiom@users.noreply.github.com> Date: Sun, 11 Oct 2020 16:57:26 +1100 Subject: [PATCH 221/353] Fix kscan_gpio_irq_callback_handler_##n conditional macro --- app/drivers/zephyr/kscan_gpio_matrix.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index a0b22e4a..ea07ee88 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -181,19 +181,19 @@ static int kscan_gpio_config_interrupts(struct device **devices, struct kscan_gpio_data_##n *data = CONTAINER_OF(work, struct kscan_gpio_data_##n, work); \ kscan_gpio_read_##n(data->dev); \ } \ - COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ - (static void kscan_gpio_irq_callback_handler_##n( \ - struct device *dev, struct gpio_callback *cb, gpio_port_pins_t pin) { \ - struct kscan_gpio_irq_callback_##n *data = \ - CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ - kscan_gpio_disable_interrupts_##n(data->dev); \ - COND_CODE_0(DT_INST_PROP(n, debounce_period), \ - ({ k_work_submit(data->work); }), ({ \ - k_delayed_work_cancel(data->work); \ - k_delayed_work_submit( \ - data->work, K_MSEC(DT_INST_PROP(n, debounce_period))); \ - })) \ - })) \ + static void kscan_gpio_irq_callback_handler_##n( \ + struct device *dev, struct gpio_callback *cb, gpio_port_pins_t pin) { \ + struct kscan_gpio_irq_callback_##n *data = \ + CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ + COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ + (kscan_gpio_disable_interrupts_##n(data->dev);)) \ + COND_CODE_0(DT_INST_PROP(n, debounce_period), \ + ({ k_work_submit(data->work); }), ({ \ + k_delayed_work_cancel(data->work); \ + k_delayed_work_submit( \ + data->work, K_MSEC(DT_INST_PROP(n, debounce_period))); \ + })) \ + } \ \ static struct kscan_gpio_data_##n kscan_gpio_data_##n = { \ .rows = {[INST_MATRIX_ROWS(n) - 1] = NULL}, .cols = {[INST_MATRIX_COLS(n) - 1] = NULL}}; \ From 1c0c02e09773413752e5f166a30178073c570349 Mon Sep 17 00:00:00 2001 From: Nuxiom <61762260+nuxiom@users.noreply.github.com> Date: Sun, 11 Oct 2020 17:51:06 +1100 Subject: [PATCH 222/353] Reformatted according to clang-format lint --- app/drivers/zephyr/kscan_gpio_matrix.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/drivers/zephyr/kscan_gpio_matrix.c b/app/drivers/zephyr/kscan_gpio_matrix.c index ea07ee88..ec4fb39a 100644 --- a/app/drivers/zephyr/kscan_gpio_matrix.c +++ b/app/drivers/zephyr/kscan_gpio_matrix.c @@ -181,17 +181,16 @@ static int kscan_gpio_config_interrupts(struct device **devices, struct kscan_gpio_data_##n *data = CONTAINER_OF(work, struct kscan_gpio_data_##n, work); \ kscan_gpio_read_##n(data->dev); \ } \ - static void kscan_gpio_irq_callback_handler_##n( \ - struct device *dev, struct gpio_callback *cb, gpio_port_pins_t pin) { \ + static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ + gpio_port_pins_t pin) { \ struct kscan_gpio_irq_callback_##n *data = \ CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ COND_CODE_1(CONFIG_ZMK_KSCAN_MATRIX_POLLING, (), \ (kscan_gpio_disable_interrupts_##n(data->dev);)) \ - COND_CODE_0(DT_INST_PROP(n, debounce_period), \ - ({ k_work_submit(data->work); }), ({ \ + COND_CODE_0(DT_INST_PROP(n, debounce_period), ({ k_work_submit(data->work); }), ({ \ k_delayed_work_cancel(data->work); \ - k_delayed_work_submit( \ - data->work, K_MSEC(DT_INST_PROP(n, debounce_period))); \ + k_delayed_work_submit(data->work, \ + K_MSEC(DT_INST_PROP(n, debounce_period))); \ })) \ } \ \ From 7798c974f697afb43d13cf8692802caf87210b02 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sun, 11 Oct 2020 14:58:24 -0500 Subject: [PATCH 223/353] fix: don't leak bt_conn refs bt_conn_lookup_addr_le() gives us a new reference that must be released with bt_conn_unref() --- app/src/hog.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/hog.c b/app/src/hog.c index 11349acd..bcd652d2 100644 --- a/app/src/hog.c +++ b/app/src/hog.c @@ -164,8 +164,10 @@ int zmk_hog_send_keypad_report(struct zmk_hid_keypad_report_body *report) { LOG_DBG("Sending to NULL? %s", conn == NULL ? "yes" : "no"); - return bt_gatt_notify(conn, &hog_svc.attrs[5], report, - sizeof(struct zmk_hid_keypad_report_body)); + int err = + bt_gatt_notify(conn, &hog_svc.attrs[5], report, sizeof(struct zmk_hid_keypad_report_body)); + bt_conn_unref(conn); + return err; }; int zmk_hog_send_consumer_report(struct zmk_hid_consumer_report_body *report) { @@ -174,6 +176,8 @@ int zmk_hog_send_consumer_report(struct zmk_hid_consumer_report_body *report) { return -ENOTCONN; } - return bt_gatt_notify(conn, &hog_svc.attrs[10], report, - sizeof(struct zmk_hid_consumer_report_body)); + int err = bt_gatt_notify(conn, &hog_svc.attrs[10], report, + sizeof(struct zmk_hid_consumer_report_body)); + bt_conn_unref(conn); + return err; }; From 7a2314ef59a3eebf68ce187fd9b90925fdab8cf9 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Sun, 11 Oct 2020 17:36:32 -0700 Subject: [PATCH 224/353] refactor kconfig to look nicer --- app/Kconfig | 121 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 70 insertions(+), 51 deletions(-) diff --git a/app/Kconfig b/app/Kconfig index fca49124..ab1f6c52 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -1,5 +1,8 @@ mainmenu "ZMK Firmware" +menu "ZMK" + +menu "Basic Keyboard Setup" config ZMK_KEYBOARD_NAME string "Keyboard Name" @@ -9,10 +12,6 @@ config USB_DEVICE_PRODUCT config BT_DEVICE_NAME default ZMK_KEYBOARD_NAME -config ZMK_KSCAN_EVENT_QUEUE_SIZE - int "Size of the event queue for KSCAN events to buffer events" - default 4 - menu "HID Output Types" menuconfig ZMK_USB @@ -27,13 +26,16 @@ config ZMK_USB_INIT_PRIORITY int "Init Priority" default 50 +#USB endif +#Where does this get set? if ZMK_USB config USB_NUMOF_EP_WRITE_RETRIES default 10 +#ZMK_USB endif menuconfig ZMK_BLE @@ -72,42 +74,12 @@ config ZMK_BLE_PASSKEY_ENTRY bool "Experimental: Requiring typing passkey from host to pair BLE connection" default n +#ZMK_BLE endif +#ZMK_BLE endmenu -menuconfig ZMK_SLEEP - bool "Enable deep sleep support" - imply USB - -if ZMK_SLEEP - -config SYS_POWER_DEEP_SLEEP_STATES - default y - -choice SYS_PM_POLICY - default SYS_PM_POLICY_APP -endchoice - -config ZMK_IDLE_SLEEP_TIMEOUT - int "Milliseconds to wait to sleep when going idle" - default 900000 - -endif - -config ZMK_EXT_POWER - bool "Enable support to control external power output" - default y - -config ZMK_DISPLAY - bool "ZMK display support" - default n - select DISPLAY - select LVGL - select LVGL_THEMES - select LVGL_THEME_MONO - select LVGL_OBJ_LABEL - menu "Split Support" config ZMK_SPLIT @@ -184,23 +156,19 @@ endif endmenu -config ZMK_KSCAN_MOCK_DRIVER - bool "Enable mock kscan driver to simulate key presses" - default n - - -config ZMK_KSCAN_COMPOSITE_DRIVER - bool "Enable composite kscan driver to combine kscan devices" - default n - -menu "ZMK Actions" - -config ZMK_ACTION_MOD_TAP - bool "Enable the Mod-Tap Action" - +#ZMK basic keyboard setup endmenu -menu "ZMK Lighting" +menu "Display/LED Options" + +config ZMK_DISPLAY + bool "ZMK display support" + default n + select DISPLAY + select LVGL + select LVGL_THEMES + select LVGL_THEME_MONO + select LVGL_OBJ_LABEL menuconfig ZMK_RGB_UNDERGLOW bool "RGB Adressable LED Underglow" @@ -222,6 +190,57 @@ config ZMK_RGB_UNDERGLOW_BRT_STEP endif +#ZMK display/led options +endmenu + +menu "Power Management" + +menuconfig ZMK_SLEEP + bool "Enable deep sleep support" + imply USB + +if ZMK_SLEEP + +config SYS_POWER_DEEP_SLEEP_STATES + default y + +choice SYS_PM_POLICY + default SYS_PM_POLICY_APP +endchoice + +config ZMK_IDLE_SLEEP_TIMEOUT + int "Milliseconds to wait to sleep when going idle" + default 900000 + +#ZMK_SLEEP +endif + +config ZMK_EXT_POWER + bool "Enable support to control external power output" + default y + +#Power management +endmenu + +menu "KSCAN Settings (Advanced)" + +config ZMK_KSCAN_EVENT_QUEUE_SIZE + int "Size of the event queue for KSCAN events to buffer events" + default 4 + +config ZMK_KSCAN_MOCK_DRIVER + bool "Enable mock kscan driver to simulate key presses" + default n + +config ZMK_KSCAN_COMPOSITE_DRIVER + bool "Enable composite kscan driver to combine kscan devices" + default n + +#kscan settings +endmenu + +#ZMK ugly + endmenu config HEAP_MEM_POOL_SIZE From 8e298ec7010254011d83f0dcc66c00ab0a5470ec Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Sun, 11 Oct 2020 18:05:27 -0700 Subject: [PATCH 225/353] happy with layout, need to improve interactions --- app/Kconfig | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/app/Kconfig b/app/Kconfig index ab1f6c52..462c053f 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -3,6 +3,7 @@ mainmenu "ZMK Firmware" menu "ZMK" menu "Basic Keyboard Setup" + config ZMK_KEYBOARD_NAME string "Keyboard Name" @@ -14,31 +15,25 @@ config BT_DEVICE_NAME menu "HID Output Types" -menuconfig ZMK_USB +config ZMK_USB bool "USB" select USB select USB_DEVICE_STACK select USB_DEVICE_HID -if USB +if ZMK_USB config ZMK_USB_INIT_PRIORITY - int "Init Priority" + int "USB Init Priority" default 50 -#USB -endif - -#Where does this get set? -if ZMK_USB - config USB_NUMOF_EP_WRITE_RETRIES default 10 #ZMK_USB endif -menuconfig ZMK_BLE +config ZMK_BLE bool "BLE (HID over GATT)" select BT select BT_SMP @@ -53,7 +48,7 @@ menuconfig ZMK_BLE if ZMK_BLE config ZMK_BLE_INIT_PRIORITY - int "Init Priority" + int "BLE Init Priority" default 50 config SYSTEM_WORKQUEUE_STACK_SIZE @@ -77,7 +72,7 @@ config ZMK_BLE_PASSKEY_ENTRY #ZMK_BLE endif -#ZMK_BLE +#HID Output Types endmenu menu "Split Support" @@ -122,12 +117,16 @@ config BT_MAX_CONN config BT_GAP_AUTO_UPDATE_CONN_PARAMS default n +#ZMK_SPLIT_BLE_ROLE_PERIPHERAL endif +#ZMK_SPLIT_BLE_ROLE endchoice +#ZMK_SPLIT_BLE endif +#ZMK_SPLIT endif if ZMK_BLE @@ -140,6 +139,7 @@ config BT_MAX_CONN config BT_MAX_PAIRED default 6 +#ZMK_SPLIT_BLE && ZMK_SPLIT_BLE_ROLE_CENTRAL endif if !ZMK_SPLIT_BLE @@ -150,13 +150,16 @@ config BT_MAX_CONN config BT_MAX_PAIRED default 5 +#!ZMK_SPLIT_BLE endif +#ZMK_BLE endif +#Split Support endmenu -#ZMK basic keyboard setup +#Basic Keyboard Setup endmenu menu "Display/LED Options" @@ -170,7 +173,7 @@ config ZMK_DISPLAY select LVGL_THEME_MONO select LVGL_OBJ_LABEL -menuconfig ZMK_RGB_UNDERGLOW +config ZMK_RGB_UNDERGLOW bool "RGB Adressable LED Underglow" select LED_STRIP @@ -188,14 +191,15 @@ config ZMK_RGB_UNDERGLOW_BRT_STEP int "RGB underglow brightness step in percent" default 10 +#ZMK_RGB_UNDERGLOW endif -#ZMK display/led options +#Display/LED Options endmenu menu "Power Management" -menuconfig ZMK_SLEEP +config ZMK_SLEEP bool "Enable deep sleep support" imply USB @@ -219,7 +223,7 @@ config ZMK_EXT_POWER bool "Enable support to control external power output" default y -#Power management +#Power Management endmenu menu "KSCAN Settings (Advanced)" @@ -236,11 +240,10 @@ config ZMK_KSCAN_COMPOSITE_DRIVER bool "Enable composite kscan driver to combine kscan devices" default n -#kscan settings +#KSCAN Settings (Advanced) endmenu -#ZMK ugly - +#ZMK endmenu config HEAP_MEM_POOL_SIZE From 8b9b24759280c5c40de108ca2312a8f160523963 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Sun, 11 Oct 2020 20:11:19 -0700 Subject: [PATCH 226/353] allow ble to be enabled if split transport is ble --- app/Kconfig | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/Kconfig b/app/Kconfig index 462c053f..f06a92c5 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -85,9 +85,17 @@ if ZMK_SPLIT config ZMK_SPLIT_BLE bool "Split keyboard support via BLE transport" - depends on ZMK_BLE default y select BT_USER_PHY_UPDATE + select BT + select BT_SMP + select BT_SMP_SC_PAIR_ONLY + select BT_SMP_APP_PAIRING_ACCEPT + select BT_PERIPHERAL + select BT_GATT_DIS + select BT_GATT_BAS + select BT_SETTINGS + select SETTINGS if ZMK_SPLIT_BLE @@ -129,7 +137,7 @@ endif #ZMK_SPLIT endif -if ZMK_BLE +if ZMK_BLE || ZMK_SPLIT_BLE if ZMK_SPLIT_BLE && ZMK_SPLIT_BLE_ROLE_CENTRAL @@ -153,7 +161,7 @@ config BT_MAX_PAIRED #!ZMK_SPLIT_BLE endif -#ZMK_BLE +#ZMK_BLE || ZMK_SPLIT_BLE endif #Split Support From 26057c0200add18ed1a08d3795116e36a34b14b4 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Mon, 12 Oct 2020 06:48:35 -0700 Subject: [PATCH 227/353] update build.yml --- .github/workflows/build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 60c337de..b8da4b19 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ jobs: name: Build Test strategy: matrix: - board: [proton_c, nice_nano, bluemicro840_v1, nrfmicro_13] + board: [nice_nano, bluemicro840_v1, nrfmicro_13] shield: - corne_left - corne_right @@ -26,6 +26,12 @@ jobs: include: - board: proton_c shield: clueboard_california + - board: proton_c + shield: romac + - board: proton_c + shield: romac_plus + - board: proton_c + shield: settings_reset steps: # To use this repository's private action, # you must check out the repository From b5e1c8a7addc186d0bd542082482157ffb2d1f5a Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Sat, 10 Oct 2020 09:29:07 +0800 Subject: [PATCH 228/353] New behavior for ext power control --- app/CMakeLists.txt | 1 + app/boards/shields/lily58/lily58.keymap | 11 ++-- app/dts/behaviors.dtsi | 3 +- app/dts/behaviors/ext_power.dtsi | 9 ++++ .../behaviors/zmk,behavior-ext-power.yaml | 10 ++++ app/include/dt-bindings/zmk/ext_power.h | 16 ++++++ app/src/behaviors/behavior_ext_power.c | 54 +++++++++++++++++++ 7 files changed, 98 insertions(+), 6 deletions(-) create mode 100644 app/dts/behaviors/ext_power.dtsi create mode 100644 app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml create mode 100644 app/include/dt-bindings/zmk/ext_power.h create mode 100644 app/src/behaviors/behavior_ext_power.c diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 31d28f57..39509edf 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -46,6 +46,7 @@ if (NOT CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) target_sources(app PRIVATE src/behaviors/behavior_transparent.c) target_sources(app PRIVATE src/behaviors/behavior_none.c) target_sources(app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c) + target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c) target_sources(app PRIVATE src/keymap.c) endif() target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c) diff --git a/app/boards/shields/lily58/lily58.keymap b/app/boards/shields/lily58/lily58.keymap index 997a1248..90dec236 100644 --- a/app/boards/shields/lily58/lily58.keymap +++ b/app/boards/shields/lily58/lily58.keymap @@ -7,6 +7,7 @@ #include #include #include +#include / { keymap { @@ -38,11 +39,11 @@ // | | | | | | | | | | | _ | + | { | } | "|" | // | | | | | | | | | | bindings = < -&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans &trans -&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 -&kp GRAV &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN &kp TILD -&trans &trans &trans &trans &trans &trans &trans &trans &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE - &trans &trans &trans &trans &trans &trans &trans &trans +&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans &trans +&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 +&kp GRAV &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN &kp TILD +&trans &ext_power EP_ON &ext_power EP_OFF &trans &trans &trans &trans &trans &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE + &trans &trans &trans &trans &trans &trans &trans &trans >; sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; diff --git a/app/dts/behaviors.dtsi b/app/dts/behaviors.dtsi index 202202b4..36c918cf 100644 --- a/app/dts/behaviors.dtsi +++ b/app/dts/behaviors.dtsi @@ -8,4 +8,5 @@ #include #include #include -#include \ No newline at end of file +#include +#include diff --git a/app/dts/behaviors/ext_power.dtsi b/app/dts/behaviors/ext_power.dtsi new file mode 100644 index 00000000..c4d8714e --- /dev/null +++ b/app/dts/behaviors/ext_power.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + ext_power: behavior_ext_power { + compatible = "zmk,behavior-ext-power"; + label = "EXT_POWER_BEHAVIOR"; + #binding-cells = <2>; + }; + }; +}; diff --git a/app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml b/app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml new file mode 100644 index 00000000..b9abd92c --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml @@ -0,0 +1,10 @@ +# +# Copyright (c) 2020, The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +description: External power control Behavior + +compatible: "zmk,behavior-ext-power" + +include: two_param.yaml diff --git a/app/include/dt-bindings/zmk/ext_power.h b/app/include/dt-bindings/zmk/ext_power.h new file mode 100644 index 00000000..a72b6571 --- /dev/null +++ b/app/include/dt-bindings/zmk/ext_power.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#define EXT_POWER_OFF_CMD 0 +#define EXT_POWER_ON_CMD 1 + +/* + * Note: Some future commands might include additional parameters, so we + * defines these aliases up front. + */ + +#define EP_ON EXT_POWER_ON_CMD 0 +#define EP_OFF EXT_POWER_OFF_CMD 0 diff --git a/app/src/behaviors/behavior_ext_power.c b/app/src/behaviors/behavior_ext_power.c new file mode 100644 index 00000000..2bd93ee0 --- /dev/null +++ b/app/src/behaviors/behavior_ext_power.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#define DT_DRV_COMPAT zmk_behavior_ext_power + +#include +#include +#include + +#include + +#include +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +#include + +static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t command, u32_t arg) { + const struct device *ext_power = device_get_binding("EXT_POWER"); + if (ext_power == NULL) { + LOG_ERR("Unable to retrieve ext_power device: %d", command); + return -EIO; + } + const struct ext_power_api *ext_power_api = ext_power->driver_api; + + switch (command) { + case EXT_POWER_OFF_CMD: + return ext_power_api->disable(ext_power); + case EXT_POWER_ON_CMD: + return ext_power_api->enable(ext_power); + default: + LOG_ERR("Unknown ext_power command: %d", command); + } + + return -ENOTSUP; +} + +static int behavior_ext_power_init(struct device *dev) { return 0; }; + +static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t command, + u32_t arg) { + return 0; +} + +static const struct behavior_driver_api behavior_ext_power_driver_api = { + .binding_pressed = on_keymap_binding_pressed, + .binding_released = on_keymap_binding_released, +}; + +DEVICE_AND_API_INIT(behavior_ext_power, DT_INST_LABEL(0), behavior_ext_power_init, NULL, NULL, + APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, + &behavior_ext_power_driver_api); From 5d1c083959967b6f55ce7cff3c83442bc71d23cb Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Mon, 12 Oct 2020 00:30:51 +0800 Subject: [PATCH 229/353] Added toggle and removed a param --- app/include/dt-bindings/zmk/ext_power.h | 11 ++++------- app/src/behaviors/behavior_ext_power.c | 5 +++++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/include/dt-bindings/zmk/ext_power.h b/app/include/dt-bindings/zmk/ext_power.h index a72b6571..2a3e8460 100644 --- a/app/include/dt-bindings/zmk/ext_power.h +++ b/app/include/dt-bindings/zmk/ext_power.h @@ -6,11 +6,8 @@ #define EXT_POWER_OFF_CMD 0 #define EXT_POWER_ON_CMD 1 +#define EXT_POWER_TOGGLE_CMD 2 -/* - * Note: Some future commands might include additional parameters, so we - * defines these aliases up front. - */ - -#define EP_ON EXT_POWER_ON_CMD 0 -#define EP_OFF EXT_POWER_OFF_CMD 0 +#define EP_ON EXT_POWER_ON_CMD +#define EP_OFF EXT_POWER_OFF_CMD +#define EP_TOG EXT_POWER_TOGGLE_CMD diff --git a/app/src/behaviors/behavior_ext_power.c b/app/src/behaviors/behavior_ext_power.c index 2bd93ee0..7f06e1dd 100644 --- a/app/src/behaviors/behavior_ext_power.c +++ b/app/src/behaviors/behavior_ext_power.c @@ -30,6 +30,11 @@ static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t c return ext_power_api->disable(ext_power); case EXT_POWER_ON_CMD: return ext_power_api->enable(ext_power); + case EXT_POWER_TOGGLE_CMD: + if(ext_power_api->get(ext_power) > 0) + return ext_power_api->disable(ext_power); + else + return ext_power_api->enable(ext_power); default: LOG_ERR("Unknown ext_power command: %d", command); } From 4adcb396ff01bf4a8ab98799139ed3f3339d207c Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Mon, 12 Oct 2020 23:50:54 +0800 Subject: [PATCH 230/353] Rebased and fixed nasty code --- app/boards/shields/lily58/lily58.keymap | 2 +- app/src/behaviors/behavior_ext_power.c | 32 +++++++++++-------------- app/src/behaviors/behavior_key_press.c | 2 +- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/app/boards/shields/lily58/lily58.keymap b/app/boards/shields/lily58/lily58.keymap index 90dec236..d44b3fe8 100644 --- a/app/boards/shields/lily58/lily58.keymap +++ b/app/boards/shields/lily58/lily58.keymap @@ -42,7 +42,7 @@ &bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans &trans &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp GRAV &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp KMLT &kp LPRN &kp RPRN &kp TILD -&trans &ext_power EP_ON &ext_power EP_OFF &trans &trans &trans &trans &trans &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE +&trans &ext_power EP_ON &ext_power EP_OFF &ext_power EP_TOG &trans &trans &trans &trans &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE &trans &trans &trans &trans &trans &trans &trans &trans >; diff --git a/app/src/behaviors/behavior_ext_power.c b/app/src/behaviors/behavior_ext_power.c index 7f06e1dd..e8190c17 100644 --- a/app/src/behaviors/behavior_ext_power.c +++ b/app/src/behaviors/behavior_ext_power.c @@ -9,32 +9,29 @@ #include #include #include - -#include +#include #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -#include - -static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t command, u32_t arg) { +static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { const struct device *ext_power = device_get_binding("EXT_POWER"); if (ext_power == NULL) { LOG_ERR("Unable to retrieve ext_power device: %d", command); return -EIO; } - const struct ext_power_api *ext_power_api = ext_power->driver_api; - switch (command) { + switch (binding->param1) { case EXT_POWER_OFF_CMD: - return ext_power_api->disable(ext_power); + return ext_power_disable(ext_power); case EXT_POWER_ON_CMD: - return ext_power_api->enable(ext_power); + return ext_power_enable(ext_power); case EXT_POWER_TOGGLE_CMD: - if(ext_power_api->get(ext_power) > 0) - return ext_power_api->disable(ext_power); + if (ext_power_get(ext_power) > 0) + return ext_power_disable(ext_power); else - return ext_power_api->enable(ext_power); + return ext_power_enable(ext_power); default: LOG_ERR("Unknown ext_power command: %d", command); } @@ -42,18 +39,17 @@ static int on_keymap_binding_pressed(struct device *dev, u32_t position, u32_t c return -ENOTSUP; } -static int behavior_ext_power_init(struct device *dev) { return 0; }; - -static int on_keymap_binding_released(struct device *dev, u32_t position, u32_t command, - u32_t arg) { +static int on_keymap_binding_released(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { return 0; } +static int behavior_ext_power_init(struct device *dev) { return 0; }; + static const struct behavior_driver_api behavior_ext_power_driver_api = { .binding_pressed = on_keymap_binding_pressed, .binding_released = on_keymap_binding_released, }; DEVICE_AND_API_INIT(behavior_ext_power, DT_INST_LABEL(0), behavior_ext_power_init, NULL, NULL, - APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, - &behavior_ext_power_driver_api); + APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY, &behavior_ext_power_driver_api); diff --git a/app/src/behaviors/behavior_key_press.c b/app/src/behaviors/behavior_key_press.c index d691e9fe..923b0982 100644 --- a/app/src/behaviors/behavior_key_press.c +++ b/app/src/behaviors/behavior_key_press.c @@ -54,4 +54,4 @@ static const struct behavior_driver_api behavior_key_press_driver_api = { &behavior_key_press_data_##n, &behavior_key_press_config_##n, APPLICATION, \ CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_key_press_driver_api); -DT_INST_FOREACH_STATUS_OKAY(KP_INST) \ No newline at end of file +DT_INST_FOREACH_STATUS_OKAY(KP_INST) From 2e649b7fd4113ff2f0e6ffdfa1ac6ede5feaebf6 Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Tue, 13 Oct 2020 00:09:57 +0800 Subject: [PATCH 231/353] Fix compilation errors and minor tweaks --- app/dts/behaviors/ext_power.dtsi | 2 +- app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml | 2 +- app/src/behaviors/behavior_ext_power.c | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/dts/behaviors/ext_power.dtsi b/app/dts/behaviors/ext_power.dtsi index c4d8714e..92f00352 100644 --- a/app/dts/behaviors/ext_power.dtsi +++ b/app/dts/behaviors/ext_power.dtsi @@ -3,7 +3,7 @@ ext_power: behavior_ext_power { compatible = "zmk,behavior-ext-power"; label = "EXT_POWER_BEHAVIOR"; - #binding-cells = <2>; + #binding-cells = <1>; }; }; }; diff --git a/app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml b/app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml index b9abd92c..d86c6f9f 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml @@ -7,4 +7,4 @@ description: External power control Behavior compatible: "zmk,behavior-ext-power" -include: two_param.yaml +include: one_param.yaml diff --git a/app/src/behaviors/behavior_ext_power.c b/app/src/behaviors/behavior_ext_power.c index e8190c17..825f9834 100644 --- a/app/src/behaviors/behavior_ext_power.c +++ b/app/src/behaviors/behavior_ext_power.c @@ -11,14 +11,16 @@ #include #include +#include + #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, struct zmk_behavior_binding_event event) { - const struct device *ext_power = device_get_binding("EXT_POWER"); + struct device *ext_power = device_get_binding("EXT_POWER"); if (ext_power == NULL) { - LOG_ERR("Unable to retrieve ext_power device: %d", command); + LOG_ERR("Unable to retrieve ext_power device: %d", binding->param1); return -EIO; } @@ -33,7 +35,7 @@ static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, else return ext_power_enable(ext_power); default: - LOG_ERR("Unknown ext_power command: %d", command); + LOG_ERR("Unknown ext_power command: %d", binding->param1); } return -ENOTSUP; From 6d9aa4f5ea033d08e6db8c368242e80e205b6f1a Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 12 Oct 2020 13:03:10 -0400 Subject: [PATCH 232/353] fix: Updated copyright headers to single author file. --- app/include/dt-bindings/zmk/bt.h | 2 +- app/include/zmk/ble/profile.h | 2 +- app/include/zmk/events/ble-active-profile-changed.h | 2 +- app/src/behaviors/behavior_bt.c | 2 +- app/src/events/ble_active_profile_changed.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/include/dt-bindings/zmk/bt.h b/app/include/dt-bindings/zmk/bt.h index a403d35d..8ca10606 100644 --- a/app/include/dt-bindings/zmk/bt.h +++ b/app/include/dt-bindings/zmk/bt.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/ble/profile.h b/app/include/zmk/ble/profile.h index 9a79c6d3..1df27436 100644 --- a/app/include/zmk/ble/profile.h +++ b/app/include/zmk/ble/profile.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/include/zmk/events/ble-active-profile-changed.h b/app/include/zmk/events/ble-active-profile-changed.h index 66f40c77..1e3a198b 100644 --- a/app/include/zmk/events/ble-active-profile-changed.h +++ b/app/include/zmk/events/ble-active-profile-changed.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/behaviors/behavior_bt.c b/app/src/behaviors/behavior_bt.c index 922c1571..066c4371 100644 --- a/app/src/behaviors/behavior_bt.c +++ b/app/src/behaviors/behavior_bt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ diff --git a/app/src/events/ble_active_profile_changed.c b/app/src/events/ble_active_profile_changed.c index a270a144..06988e23 100644 --- a/app/src/events/ble_active_profile_changed.c +++ b/app/src/events/ble_active_profile_changed.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Peter Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ From eee8eb6e776c81192e81f685bd24a3795467ec91 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 12 Oct 2020 13:04:24 -0400 Subject: [PATCH 233/353] fix: Single author file copyright header fix. --- app/boards/shields/tg4x/tg4x.overlay | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/boards/shields/tg4x/tg4x.overlay b/app/boards/shields/tg4x/tg4x.overlay index acab2e31..10ce524a 100644 --- a/app/boards/shields/tg4x/tg4x.overlay +++ b/app/boards/shields/tg4x/tg4x.overlay @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson, Richard Jones + * Copyright (c) 2020 The ZMK Contrbutors * * SPDX-License-Identifier: MIT */ From 737283bcbcbd771767a82fb8abbdbd087c691808 Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Mon, 12 Oct 2020 14:23:34 -0700 Subject: [PATCH 234/353] Behave properly in GH Codespaces --- .devcontainer/.bashrc | 4 +++- .devcontainer/devcontainer.json | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.devcontainer/.bashrc b/.devcontainer/.bashrc index 855ea755..9fdb8f69 100644 --- a/.devcontainer/.bashrc +++ b/.devcontainer/.bashrc @@ -1,6 +1,8 @@ export LS_OPTIONS='-F --color=auto' -eval "`dircolors`" alias ls='ls $LS_OPTIONS' +if [ "${CODESPACES}" = "true" ]; then + export WORKSPACE_DIR="$HOME/workspace/zmk" +fi if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then source "$WORKSPACE_DIR/zephyr/zephyr-env.sh" fi diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 940b78b8..14feeff4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,6 +3,9 @@ "dockerFile": "Dockerfile", "extensions": ["ms-vscode.cpptools"], "runArgs": ["--security-opt", "label=disable"], - "containerEnv": {"WORKSPACE_DIR": "${containerWorkspaceFolder}"} + "containerEnv": {"WORKSPACE_DIR": "${containerWorkspaceFolder}"}, + "settings": { + "terminal.integrated.shell.linux": "/bin/bash" + }, } From d4b83c3ebf6a51c563a4bdebacae65e9cb17465b Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot Date: Mon, 12 Oct 2020 18:52:29 -0500 Subject: [PATCH 235/353] Increased Comprehension of Oled Footnote --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 60fe0d22..fc598987 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -39,7 +39,7 @@ ZMK is currently missing some features found in other popular firmware. This tab | AVR/8 Bit | | | ✅ | | [Wide Range of ARM Chips Supported](https://docs.zephyrproject.org/latest/boards/index.html) | ✅ | | | [^2]: Encoders are not currently supported on peripheral side splits. -[^1]: OLEDs are currently proof of concept in ZMK. +[^1]: OLEDs are currently a proof of concept in ZMK. ## Code Of Conduct From e4752606641c8f8393a2ac345511ac17f227fa0e Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot Date: Mon, 12 Oct 2020 19:06:40 -0500 Subject: [PATCH 236/353] Revert "Increased Comprehension of Oled Footnote" This reverts commit d4b83c3ebf6a51c563a4bdebacae65e9cb17465b. --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index fc598987..60fe0d22 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -39,7 +39,7 @@ ZMK is currently missing some features found in other popular firmware. This tab | AVR/8 Bit | | | ✅ | | [Wide Range of ARM Chips Supported](https://docs.zephyrproject.org/latest/boards/index.html) | ✅ | | | [^2]: Encoders are not currently supported on peripheral side splits. -[^1]: OLEDs are currently a proof of concept in ZMK. +[^1]: OLEDs are currently proof of concept in ZMK. ## Code Of Conduct From 59e8c58051298175bc1c77593f1b24d9394aa848 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 13 Oct 2020 00:11:08 -0400 Subject: [PATCH 237/353] fix: Copyright header for cradio.dtsi --- app/boards/shields/cradio/cradio.dtsi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/boards/shields/cradio/cradio.dtsi b/app/boards/shields/cradio/cradio.dtsi index 1f2603c2..43f90493 100644 --- a/app/boards/shields/cradio/cradio.dtsi +++ b/app/boards/shields/cradio/cradio.dtsi @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Pete Johanson + * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ @@ -48,4 +48,3 @@ }; }; }; - From 94bc2c31b14d5ace4c51f409f934ef077323eb32 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 13 Oct 2020 00:23:25 -0400 Subject: [PATCH 238/353] feat: Add a couple missing shields to user setup. --- docs/static/setup.ps1 | 6 +++--- docs/static/setup.sh | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index 63bd5c0e..1686be25 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -91,9 +91,9 @@ Write-Host "Keyboard Shield Selection:" $prompt = "Pick a keyboard" # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. -$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac", "makerdiary M60", "Microdox" -$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac", "m60", "microdox" -$splits = "y", "y", "y", "y", "y", "y", "n", "n", "y" +$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac", "RoMac+", "makerdiary M60", "Microdox", "TG4X" +$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac", "romac_plus", "m60", "microdox", "tg4x" +$splits = "y", "y", "y", "y", "y", "y", "n", "n", "n", "y", "n" $choice = Get-Choice-From-Options -Options $options -Prompt $prompt $shield_title = $($options[$choice]) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 96e87688..d7e2b8cd 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -58,7 +58,7 @@ echo "" echo "Keyboard Shield Selection:" prompt="Pick an keyboard:" -options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac" "makerdiary M60" "Microdox") +options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac" "RoMac+" "makerdiary M60" "Microdox" "TG4X") PS3="$prompt " # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. @@ -74,8 +74,10 @@ select opt in "${options[@]}" "Quit"; do 5 ) shield_title="Sofle" shield="sofle"; split="y"; break;; 6 ) shield_title="Iris" shield="iris"; split="y"; break;; 7 ) shield_title="RoMac" shield="romac"; split="n"; break;; - 8 ) shield_title="M60" shield="m60"; split="n"; break;; - 9 ) shield_title="Microdox" shield="microdox"; split="y"; break;; + 8 ) shield_title="RoMac+" shield="romac_plus"; split="n"; break;; + 9 ) shield_title="M60" shield="m60"; split="n"; break;; + 10 ) shield_title="Microdox" shield="microdox"; split="y"; break;; + 11 ) shield_title="TG4X" shield="tg4x"; split="n"; break;; # Add link to docs on adding your own custom shield in your ZMK config! # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; From cc21167d57665a9bf0b413a4a85984f771d7812f Mon Sep 17 00:00:00 2001 From: Mega Mind <68985133+megamind4089@users.noreply.github.com> Date: Wed, 14 Oct 2020 00:27:32 +0800 Subject: [PATCH 239/353] Added docs for external power output --- docs/docs/behavior/power.md | 64 +++++++++++++++++++++++++++++++++++++ docs/sidebars.js | 1 + 2 files changed, 65 insertions(+) create mode 100644 docs/docs/behavior/power.md diff --git a/docs/docs/behavior/power.md b/docs/docs/behavior/power.md new file mode 100644 index 00000000..6b8237be --- /dev/null +++ b/docs/docs/behavior/power.md @@ -0,0 +1,64 @@ +--- +title: Power Management Behaviors +sidebar_label: Power Management +--- + +## Summary + +These page contains some of the power management behaviors currently supported by ZMK. + +## External Power Control + +The External power control behavior allows enabling or disabling the VCC power output +to save power. Some of the LEDs will consume power even in OFF state. To preserve +battery life in this scenario, some controller boards have support to disable the +external power completely. + +The following boards currently support this feature: +- nRFMicro +- nice!nano + +## External Power Control Command Defines + +External power control command defines are provided through the [`dt-bindings/zmk/ext_power.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/ext_power.h) header, +which is added at the top of the keymap file: + +``` +#include +``` + +This will allow you to reference the actions defined in this header such as `EXT_POWER_OFF_CMD`. + +Here is a table describing the command for each define: + +| Define | Action | Alias | +| ------------ | -------------------------------------- | -------- | +| `EXT_POWER_OFF_CMD` | Disable the external power. | `EP_OFF` | +| `EXT_POWER_ON_CMD` | Enable the external power. | `EP_ON` | +| `EXT_POWER_TOGGLE_CMD` | Toggle the external power. | `EP_TOG` | + +### Behavior Binding + +- Reference: `&ext_power` +- Parameter#1: Command, e.g `EP_ON` + +### Example: + +1. Behavior binding to enable the external power + + ``` + &ext_power EP_ON + ``` + +1. Behavior binding to disable the external power + + ``` + &ext_power EP_OFF + ``` + +1. Behavior binding to toggle the external power + + ``` + &ext_power EP_TOG + ``` + diff --git a/docs/sidebars.js b/docs/sidebars.js index 93ce2264..12b4a6e3 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -23,6 +23,7 @@ module.exports = { "behavior/reset", "behavior/bluetooth", "behavior/lighting", + "behavior/power", ], Development: [ "dev-clean-room", From 43c900f94a9394bc09bdfc646bfd3f42f947d927 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 13 Oct 2020 19:46:02 -0400 Subject: [PATCH 240/353] feat: Add qaz to setup scripts. --- docs/static/setup.ps1 | 6 +++--- docs/static/setup.sh | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index 1686be25..5ebd3768 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -91,9 +91,9 @@ Write-Host "Keyboard Shield Selection:" $prompt = "Pick a keyboard" # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. -$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac", "RoMac+", "makerdiary M60", "Microdox", "TG4X" -$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac", "romac_plus", "m60", "microdox", "tg4x" -$splits = "y", "y", "y", "y", "y", "y", "n", "n", "n", "y", "n" +$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac", "RoMac+", "makerdiary M60", "Microdox", "TG4X", "QAZ" +$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac", "romac_plus", "m60", "microdox", "tg4x", "qaz" +$splits = "y", "y", "y", "y", "y", "y", "n", "n", "n", "y", "n", "n" $choice = Get-Choice-From-Options -Options $options -Prompt $prompt $shield_title = $($options[$choice]) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index d7e2b8cd..e45a7ed7 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -58,7 +58,7 @@ echo "" echo "Keyboard Shield Selection:" prompt="Pick an keyboard:" -options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac" "RoMac+" "makerdiary M60" "Microdox" "TG4X") +options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac" "RoMac+" "makerdiary M60" "Microdox" "TG4X" "QAZ") PS3="$prompt " # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. @@ -78,6 +78,7 @@ select opt in "${options[@]}" "Quit"; do 9 ) shield_title="M60" shield="m60"; split="n"; break;; 10 ) shield_title="Microdox" shield="microdox"; split="y"; break;; 11 ) shield_title="TG4X" shield="tg4x"; split="n"; break;; + 12 ) shield_title="QAZ" shield="qaz"; split="n"; break;; # Add link to docs on adding your own custom shield in your ZMK config! # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; From b2cad7e597a2cbadf78b2544734b9a6dd50c45a2 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 13 Oct 2020 19:50:24 -0400 Subject: [PATCH 241/353] fix(docs): Proper block for romac shield. --- docs/docs/hardware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/hardware.md b/docs/docs/hardware.md index faac57c6..fe229dfe 100644 --- a/docs/docs/hardware.md +++ b/docs/docs/hardware.md @@ -29,7 +29,7 @@ That being said, there are currently only a few specific [boards](/docs/faq#what - [Sofle](https://github.com/josefadamcik/SofleKeyboard) (`sofle_left` and `sofle_right`) - [Splitreus62](https://github.com/Na-Cly/splitreus62) (`splitreus62_left` and `splitreus62_right`) - [RoMac+ v4](https://www.littlekeyboards.com/products/romac) (`romac_plus`) -- [RoMac v2](https://mechboards.co.uk/shop/kits/romac-macro-pad/) (`romac') +- [RoMac v2](https://mechboards.co.uk/shop/kits/romac-macro-pad/) (`romac`) - [QAZ](https://www.cbkbd.com/product/qaz-keyboard-kit) (`qaz`) ## Other Hardware From 3186a553a5d18f24fc6fbac2987cf8054afadcbb Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 13 Oct 2020 21:00:54 -0400 Subject: [PATCH 242/353] fix(shields): Add default qaz.conf file. --- app/boards/shields/qaz/qaz.conf | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/boards/shields/qaz/qaz.conf diff --git a/app/boards/shields/qaz/qaz.conf b/app/boards/shields/qaz/qaz.conf new file mode 100644 index 00000000..e69de29b From 91b208faf390e9c334de3eaae043cf1aa3b70374 Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot Date: Tue, 13 Oct 2020 21:12:29 -0500 Subject: [PATCH 243/353] Documented TX Power Config in Troubleshooting --- docs/docs/troubleshooting.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index 36682e7f..0c46ad99 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -79,4 +79,14 @@ to avoid accidental bonding between the halves. 1. Flash the actual image for each half of the split keyboard (e.g `my_board_left.uf2` to the left half, `my_board_right.uf2` to the right half) After completing these steps, pair the halves of the split keyboard together by resetting them at the same time. Most commonly, this is done by grounding the reset pins -for each of your keyboard's microcontrollers or pressing the reset buttons at the same time. \ No newline at end of file +for each of your keyboard's microcontrollers or pressing the reset buttons at the same time. + +### Connectivity Issues ### + +Some users may experience poor connection from their keyboard to their host device, whether it be from a bad Bluetooth card, a metal enclosure on the keyboard or host, or distance to the host device. Increasing the transmit power of your board may solve this problem. To do this, simply enable the `CONFIG_BT_CTLR_TX_PWR_PLUS_8` configuration value in the `.conf` file of your user config directory as such: + +``` +CONFIG_BT_CTLR_TX_PWR_PLUS_8=y +``` + +On the `NRF52840`, the value `PLUS_8` can be set to any multiple of four between `MINUS_20` and `PLUS_8`. The default value for this config is `0`, but if you are having connection issues it is recommended to set it to `PLUS_8` because the power consumption difference is negligible. From 204d1300ba6b13041e9a69cc297c06ac189f1f0d Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 15 Oct 2020 00:00:37 -0400 Subject: [PATCH 244/353] fix(ble): Only advertise when needed.* Once we have a peer connected to for the active profile, don't continue advertising. --- app/src/ble.c | 139 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 113 insertions(+), 26 deletions(-) diff --git a/app/src/ble.c b/app/src/ble.c index 49e2b3b0..8cc42bcd 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -45,6 +45,18 @@ static u8_t passkey_digit = 0; #define PROFILE_COUNT CONFIG_BT_MAX_PAIRED #endif +enum advertising_type { + ZMK_ADV_NONE, + ZMK_ADV_DIR, + ZMK_ADV_CONN, +} advertising_status; + +#define CURR_ADV(adv) (adv << 4) + +#define ZMK_ADV_CONN_NAME \ + BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME | BT_LE_ADV_OPT_USE_NAME, \ + BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, NULL) + static struct zmk_ble_profile profiles[PROFILE_COUNT]; static u8_t active_profile; @@ -92,28 +104,96 @@ void set_profile_address(u8_t index, const bt_addr_le_t *addr) { raise_profile_changed_event(); } -int zmk_ble_adv_pause() { - int err = bt_le_adv_stop(); - if (err) { - LOG_ERR("Failed to stop advertising (err %d)", err); - return err; +bool active_profile_is_connected() { + struct bt_conn *conn; + bt_addr_le_t *addr = zmk_ble_active_profile_addr(); + if (!bt_addr_le_cmp(addr, BT_ADDR_LE_ANY)) { + return false; + } else if ((conn = bt_conn_lookup_addr_le(BT_ID_DEFAULT, addr)) == NULL) { + return false; + } + + bt_conn_unref(conn); + + return true; +} + +#define CHECKED_ADV_STOP() \ + err = bt_le_adv_stop(); \ + advertising_status = ZMK_ADV_NONE; \ + if (err) { \ + LOG_ERR("Failed to stop advertising (err %d)", err); \ + return err; \ + } + +#define CHECKED_DIR_ADV() \ + addr = zmk_ble_active_profile_addr(); \ + conn = bt_conn_lookup_addr_le(BT_ID_DEFAULT, addr); \ + if (conn != NULL) { /* TODO: Check status of connection */ \ + LOG_DBG("Skipping advertising, profile host is already connected"); \ + bt_conn_unref(conn); \ + return 0; \ + } \ + err = bt_le_adv_start(BT_LE_ADV_CONN_DIR_LOW_DUTY(addr), zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), \ + NULL, 0); \ + if (err) { \ + LOG_ERR("Advertising failed to start (err %d)", err); \ + return err; \ + } \ + advertising_status = ZMK_ADV_DIR; + +#define CHECKED_OPEN_ADV() \ + err = bt_le_adv_start(ZMK_ADV_CONN_NAME, zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), NULL, 0); \ + if (err) { \ + LOG_ERR("Advertising failed to start (err %d)", err); \ + return err; \ + } \ + advertising_status = ZMK_ADV_CONN; + +int update_advertising() { + int err = 0; + bt_addr_le_t *addr; + struct bt_conn *conn; + enum advertising_type desired_adv = ZMK_ADV_NONE; + + if (active_profile_is_open() || !active_profile_is_connected()) { + desired_adv = ZMK_ADV_CONN; + } else if (!active_profile_is_connected()) { + desired_adv = ZMK_ADV_CONN; + // Need to fix directed advertising for privacy centrals. See + // https://github.com/zephyrproject-rtos/zephyr/pull/14984 char + // addr_str[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(zmk_ble_active_profile_addr(), addr_str, + // sizeof(addr_str)); + + // LOG_DBG("Directed advertising to %s", log_strdup(addr_str)); + // desired_adv = ZMK_ADV_DIR; + } + LOG_DBG("advertising from %d to %d", advertising_status, desired_adv); + + switch (desired_adv + CURR_ADV(advertising_status)) { + case ZMK_ADV_DIR + CURR_ADV(ZMK_ADV_DIR): + case ZMK_ADV_DIR + CURR_ADV(ZMK_ADV_CONN): + CHECKED_ADV_STOP(); + CHECKED_DIR_ADV(); + break; + case ZMK_ADV_DIR + CURR_ADV(ZMK_ADV_NONE): + CHECKED_DIR_ADV(); + break; + case ZMK_ADV_CONN + CURR_ADV(ZMK_ADV_DIR): + CHECKED_ADV_STOP(); + CHECKED_OPEN_ADV(); + break; + case ZMK_ADV_CONN + CURR_ADV(ZMK_ADV_NONE): + CHECKED_OPEN_ADV(); + break; } return 0; }; -int zmk_ble_adv_resume() { - LOG_DBG("active_profile %d, directed? %s", active_profile, - active_profile_is_open() ? "no" : "yes"); +static void update_advertising_callback(struct k_work *work) { update_advertising(); } - int err = bt_le_adv_start(BT_LE_ADV_CONN_NAME, zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), NULL, 0); - if (err) { - LOG_ERR("Advertising failed to start (err %d)", err); - return err; - } - - return 0; -}; +K_WORK_DEFINE(update_advertising_work, update_advertising_callback); int zmk_ble_clear_bonds() { LOG_DBG(""); @@ -124,6 +204,8 @@ int zmk_ble_clear_bonds() { set_profile_address(active_profile, BT_ADDR_LE_ANY); } + update_advertising(); + return 0; }; @@ -134,9 +216,13 @@ int zmk_ble_prof_select(u8_t index) { } active_profile = index; - return settings_save_one("ble/active_profile", &active_profile, sizeof(active_profile)); + settings_save_one("ble/active_profile", &active_profile, sizeof(active_profile)); + + update_advertising(); raise_profile_changed_event(); + + return 0; }; int zmk_ble_prof_next() { @@ -234,8 +320,11 @@ static void connected(struct bt_conn *conn, u8_t err) { char addr[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); + advertising_status = ZMK_ADV_NONE; + if (err) { LOG_WRN("Failed to connect to %s (%u)", log_strdup(addr), err); + update_advertising(); return; } @@ -250,6 +339,8 @@ static void connected(struct bt_conn *conn, u8_t err) { if (bt_conn_set_security(conn, BT_SECURITY_L2)) { LOG_ERR("Failed to set security"); } + + update_advertising(); } static void disconnected(struct bt_conn *conn, u8_t reason) { @@ -259,14 +350,9 @@ static void disconnected(struct bt_conn *conn, u8_t reason) { LOG_DBG("Disconnected from %s (reason 0x%02x)", log_strdup(addr), reason); -#if IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) - // if (bt_addr_le_cmp(&peripheral_addr, BT_ADDR_LE_ANY) && bt_addr_le_cmp(&peripheral_addr, - // bt_conn_get_dst(conn))) { - // zmk_ble_adv_resume(); - // } -#else - // zmk_ble_adv_resume(); -#endif + // We need to do this in a work callback, otherwise the advertising update will still see the + // connection for a profile as active, and not start advertising yet. + k_work_submit(&update_advertising_work); } static void security_changed(struct bt_conn *conn, bt_security_t level, enum bt_security_err err) { @@ -361,6 +447,7 @@ static void auth_pairing_complete(struct bt_conn *conn, bool bonded) { #endif /* !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) */ set_profile_address(active_profile, dst); + update_advertising(); }; static struct bt_conn_auth_cb zmk_ble_auth_cb_display = { @@ -383,7 +470,7 @@ static void zmk_ble_ready(int err) { return; } - zmk_ble_adv_resume(); + update_advertising(); } static int zmk_ble_init(struct device *_arg) { From f7912eb9decc2048c204818defc717a71135edc6 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 15 Oct 2020 17:08:25 -0400 Subject: [PATCH 245/353] fix: Remove conflicting gitignore entry. --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index eb4312fd..e02cca0e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ /tools /zephyr /build -**/.DS_Store From 4bd41b9bf9b0721ac2dcc4e4f20ce0a3f003ad19 Mon Sep 17 00:00:00 2001 From: Kellen Carey Date: Thu, 15 Oct 2020 16:53:16 -0700 Subject: [PATCH 246/353] add wget flag to example --- docs/docs/user-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index 2aade829..f204c0ee 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -74,7 +74,7 @@ bash -c "$(curl -fsSL https://zmkfirmware.dev/setup.sh)" ``` -bash -c "$(wget https://zmkfirmware.dev/setup.sh -O -)" +bash -c "$(wget https://zmkfirmware.dev/setup.sh -O -)" '' --wget ``` From e468677c4ea5f382a8e48793eda87ecd3d07a4dd Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 15 Oct 2020 20:29:00 -0400 Subject: [PATCH 247/353] fix(shields): Proper cradio Kconfig setup. --- app/boards/shields/cradio/Kconfig.defconfig | 17 +++++++++++++++-- app/boards/shields/cradio/Kconfig.shield | 7 +++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/boards/shields/cradio/Kconfig.defconfig b/app/boards/shields/cradio/Kconfig.defconfig index 43509a47..4d200c95 100644 --- a/app/boards/shields/cradio/Kconfig.defconfig +++ b/app/boards/shields/cradio/Kconfig.defconfig @@ -1,10 +1,23 @@ # Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT +if SHIELD_CRADIO_LEFT + config ZMK_KEYBOARD_NAME - default "cradio" + default "cradio left" + +endif + +if SHIELD_CRADIO_RIGHT + +config ZMK_KEYBOARD_NAME + default "cradio right" + +endif + +if SHIELD_CRADIO_RIGHT || SHIELD_CRADIO_LEFT config ZMK_KSCAN_DIRECT_POLLING default y - +endif diff --git a/app/boards/shields/cradio/Kconfig.shield b/app/boards/shields/cradio/Kconfig.shield index 71a439e0..bb5f0735 100644 --- a/app/boards/shields/cradio/Kconfig.shield +++ b/app/boards/shields/cradio/Kconfig.shield @@ -1,5 +1,8 @@ # Copyright (c) 2020 The ZMK Contributors # SPDX-License-Identifier: MIT -config SHIELD_CRADIO - def_bool $(shields_list_contains,cradio) +config SHIELD_CRADIO_LEFT + def_bool $(shields_list_contains,cradio_left) + +config SHIELD_CRADIO_RIGHT + def_bool $(shields_list_contains,cradio_right) From 818f0a1f91020f3315ae09f70ddda6f8362fab98 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 16 Oct 2020 00:48:53 -0400 Subject: [PATCH 248/353] fix(bluetooth): Advertise name + appearance. * Properly put device name and GAP appearance in advertising packets, for proper display in macOS, Android, etc. * Closes #124 --- app/src/ble.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/ble.c b/app/src/ble.c index 8cc42bcd..ddc92e99 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -54,13 +54,18 @@ enum advertising_type { #define CURR_ADV(adv) (adv << 4) #define ZMK_ADV_CONN_NAME \ - BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME | BT_LE_ADV_OPT_USE_NAME, \ - BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, NULL) + BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME, BT_GAP_ADV_FAST_INT_MIN_2, \ + BT_GAP_ADV_FAST_INT_MAX_2, NULL) static struct zmk_ble_profile profiles[PROFILE_COUNT]; static u8_t active_profile; +#define DEVICE_NAME CONFIG_BT_DEVICE_NAME +#define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1) + static const struct bt_data zmk_ble_ad[] = { + BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN), + BT_DATA_BYTES(BT_DATA_GAP_APPEARANCE, 0xC1, 0x03), BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)), BT_DATA_BYTES(BT_DATA_UUID16_SOME, #if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) From b07475b7d475a592ad974bb36a5580b1c863344f Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 16 Oct 2020 00:56:05 -0400 Subject: [PATCH 249/353] fix(bluetooth): Stop adv on connected profile. --- app/src/ble.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/ble.c b/app/src/ble.c index ddc92e99..1b25ca2a 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -176,6 +176,10 @@ int update_advertising() { LOG_DBG("advertising from %d to %d", advertising_status, desired_adv); switch (desired_adv + CURR_ADV(advertising_status)) { + case ZMK_ADV_NONE + CURR_ADV(ZMK_ADV_DIR): + case ZMK_ADV_NONE + CURR_ADV(ZMK_ADV_CONN): + CHECKED_ADV_STOP(); + break; case ZMK_ADV_DIR + CURR_ADV(ZMK_ADV_DIR): case ZMK_ADV_DIR + CURR_ADV(ZMK_ADV_CONN): CHECKED_ADV_STOP(); From 9d512eaef01d92b930054d6528279944afe221ce Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 16 Oct 2020 09:49:28 -0400 Subject: [PATCH 250/353] fix(bluetooth): Add adv data in non-peripherals. --- app/src/ble.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/ble.c b/app/src/ble.c index 1b25ca2a..9090582c 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -64,8 +64,10 @@ static u8_t active_profile; #define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1) static const struct bt_data zmk_ble_ad[] = { +#if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN), BT_DATA_BYTES(BT_DATA_GAP_APPEARANCE, 0xC1, 0x03), +#endif BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)), BT_DATA_BYTES(BT_DATA_UUID16_SOME, #if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) From 36d3d01a22a46cdc4f1ebcabe27666dec4afface Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 18 Oct 2020 13:24:37 -0400 Subject: [PATCH 251/353] feat(usb): Add proper USB product ID. * Use openmoko product ID from: https://github.com/openmoko/openmoko-usb-oui/pull/15 --- app/Kconfig | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Kconfig b/app/Kconfig index fca49124..4cd01eba 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -9,6 +9,15 @@ config USB_DEVICE_PRODUCT config BT_DEVICE_NAME default ZMK_KEYBOARD_NAME +config USB_DEVICE_VID + default 0x1D50 + +config USB_DEVICE_PID + default 0x615E + +config USB_DEVICE_MANUFACTURER + default "ZMK Project" + config ZMK_KSCAN_EVENT_QUEUE_SIZE int "Size of the event queue for KSCAN events to buffer events" default 4 From 6aae66782682ffcabf953d785308b83ee16fc3b6 Mon Sep 17 00:00:00 2001 From: Carey Date: Tue, 20 Oct 2020 21:47:49 -0500 Subject: [PATCH 252/353] merge changes from master --- app/Kconfig | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/app/Kconfig b/app/Kconfig index f06a92c5..e8bfa3c2 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -13,6 +13,15 @@ config USB_DEVICE_PRODUCT config BT_DEVICE_NAME default ZMK_KEYBOARD_NAME +config USB_DEVICE_VID + default 0x1D50 + +config USB_DEVICE_PID + default 0x615E + +config USB_DEVICE_MANUFACTURER + default "ZMK Project" + menu "HID Output Types" config ZMK_USB @@ -187,6 +196,10 @@ config ZMK_RGB_UNDERGLOW if ZMK_RGB_UNDERGLOW +# This default value cuts down on tons of excess .conf files, if you're using GPIO, manually disable this +config SPI + default y + config ZMK_RGB_UNDERGLOW_HUE_STEP int "RGB underglow hue step in degrees of 360" default 10 @@ -199,6 +212,30 @@ config ZMK_RGB_UNDERGLOW_BRT_STEP int "RGB underglow brightness step in percent" default 10 +config ZMK_RGB_UNDERGLOW_HUE_START + int "RGB underglow start hue value from 0-359" + default 0 + +config ZMK_RGB_UNDERGLOW_SAT_START + int "RGB underglow start saturations value from 0-100" + default 100 + +config ZMK_RGB_UNDERGLOW_BRT_START + int "RGB underglow start brightness value from 0-100" + default 100 + +config ZMK_RGB_UNDERGLOW_SPD_START + int "RGB underglow start animation speed value from 1-5" + default 3 + +config ZMK_RGB_UNDERGLOW_EFF_START + int "RGB underglow start effect int value related to the effect enum list" + default 0 + +config ZMK_RGB_UNDERGLOW_ON_START + bool "Whether RGB underglow starts on by default" + default y + #ZMK_RGB_UNDERGLOW endif From a796ee574f575961b80bafcd10aec98fd6dda651 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Mon, 19 Oct 2020 21:15:57 +0100 Subject: [PATCH 253/353] fix(docs): Remove empty links Prerequisite fixes for Docusaurus 2.0.0-alpha.65 (#286) which has stricter markdown rules. --- docs/docs/dev-guide-new-shield.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 9f7b23ca..d6911e04 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -13,7 +13,7 @@ The high level steps are: - Create a new shield directory. - Add the base Kconfig files. -- Add the shield overlay file to define the [KSCAN driver]() for detecting key press/release. +- Add the shield overlay file to define the KSCAN driver for detecting key press/release. - (Optional) Add the matrix transform for mapping KSCAN row/column values to sane key positions. This is needed for non-rectangular keyboards, or where the underlying row/column pin arrangement does not map one to one with logical locations on the keyboard. - Add a default keymap, which users can override in their own configs as needed. - Add support for features such as encoders, OLED displays, or RGB underglow. @@ -112,7 +112,7 @@ values={[ -The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the [chosen]() node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, +The `.overlay` is the devicetree description of the keyboard shield that is merged with the primary board devicetree description before the build. For ZMK, this file at a minimum should include the chosen node named `zmk,kscan` that references a KSCAN driver instance. For a simple 3x3 macropad matrix, this might look something like: ``` From 99751ad3765e0b85455ce4a369d1ce5a7689cc8b Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Mon, 19 Oct 2020 21:11:18 +0100 Subject: [PATCH 254/353] chore(docs): Docusaurus 2.0.0-alpha.65 Closes #286. Prerequisite of #218. --- docs/package-lock.json | 8026 +++++++++++++++++++++------------------- docs/package.json | 4 +- 2 files changed, 4296 insertions(+), 3734 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index ef531cd0..b88b26f7 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -5,118 +5,118 @@ "requires": true, "dependencies": { "@algolia/cache-browser-local-storage": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.3.1.tgz", - "integrity": "sha512-pNelJomUeeQS5ZagEeUti8HltrfJbqXHnZXB1fez4Ycdm7GsEQm0r6fRCfx+1/6hqQJNo5zQUSA4ZgWi8VMs4Q==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.5.1.tgz", + "integrity": "sha512-TAQHRHaCUAR0bNhUHG0CnO6FTx3EMPwZQrjPuNS6kHvCQ/H8dVD0sLsHyM8C7U4j33xPQCWi9TBnSx8cYXNmNw==", "requires": { - "@algolia/cache-common": "4.3.1" + "@algolia/cache-common": "4.5.1" } }, "@algolia/cache-common": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.3.1.tgz", - "integrity": "sha512-BgZVQKfQ3rYSKHDbEuYeIHgQ7cIqbDVUe8gPib/YI6hB2FWdt3hQyDqKslulBt65MxZ5CLSrWg8mq/qL077Bog==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.5.1.tgz", + "integrity": "sha512-Sux+pcedQi9sfScIiQdl6pEaTVl712qM9OblvDhnaeF1v6lf4jyTlRTiBLP7YBLuvO1Yo54W3maf03kmz9PVhA==" }, "@algolia/cache-in-memory": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.3.1.tgz", - "integrity": "sha512-bd2Aqn8efGJpR8snjUvBJIONyQ2uqYQSbFH9rTrLPmJPMYdoTKTcVLrtpOhOlmvTTfguhqlv+zIjYdJcraeBvg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.5.1.tgz", + "integrity": "sha512-fzwAtBFwveuG+E5T/namChEIvdVl0DoV3djV1C078b/JpO5+DeAwuXIJGYbyl950u170n5NEYuIwYG+R6h4lJQ==", "requires": { - "@algolia/cache-common": "4.3.1" + "@algolia/cache-common": "4.5.1" } }, "@algolia/client-account": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.3.1.tgz", - "integrity": "sha512-062Cxw61llvkeHS2bWghufNI0munw5fKGZBhUfDdnC7lsJpzYJwQdkdchzLqqIOXZa8k9vdLlnlKHk8f53E5fQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.5.1.tgz", + "integrity": "sha512-2WFEaI7Zf4ljnBsSAS4e+YylZ5glovm78xFg4E1JKA8PE6M+TeIgUY6HO2ouLh2dqQKxc9UfdAT1Loo/dha2iQ==", "requires": { - "@algolia/client-common": "4.3.1", - "@algolia/client-search": "4.3.1", - "@algolia/transporter": "4.3.1" + "@algolia/client-common": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/transporter": "4.5.1" } }, "@algolia/client-analytics": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.3.1.tgz", - "integrity": "sha512-+/gn1z3oAh2CE0xox7/Df9SseHcOuqgm4ngSXGh1cWpldsF+gioA9HWSh/4RSydViASKu3YIk5O61zFzVTKbOA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.5.1.tgz", + "integrity": "sha512-bTmZUU8zhZMWBeGEQ/TVqLoL3OOT0benU0HtS3iOnQURwb+AOCv3RsgZvkj2djp+M24Q6P8/L34uBJMmCurbLg==", "requires": { - "@algolia/client-common": "4.3.1", - "@algolia/client-search": "4.3.1", - "@algolia/requester-common": "4.3.1", - "@algolia/transporter": "4.3.1" + "@algolia/client-common": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" } }, "@algolia/client-common": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.3.1.tgz", - "integrity": "sha512-1dcADKy3F/gMN+s+p5yvYdF6A4L5YEY0ll4JjSHGKXvZyWLDxKjyu/ToeUuHlrutWQu9w8UT2X7urES8BZU5WQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.5.1.tgz", + "integrity": "sha512-5CpIf8IK1hke7q+N4e+A4TWdFXVJ5Qwyaa0xS84DrDO8HQ7vfYbDvG1oYa9hVEtGn6c3WVKPAvuWynK+fXQQCA==", "requires": { - "@algolia/requester-common": "4.3.1", - "@algolia/transporter": "4.3.1" + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" } }, "@algolia/client-recommendation": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.3.1.tgz", - "integrity": "sha512-4WZ9Pa2waOkpqv5acom4f8XBBlrnafeEwcSK4R0msubHJpUdkvD/+rxT5Ya1/0FAGvBPhOvtOJqsauaJYKM2Dw==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.5.1.tgz", + "integrity": "sha512-GiFrNSImoEBUQICjFBEoxPGzrjWji8PY9GeMg2CNvOYcRQ0Xt0Y36v9GN53NLjvB7QdQ2FlE1Cuv/PLUfS/aQQ==", "requires": { - "@algolia/client-common": "4.3.1", - "@algolia/requester-common": "4.3.1", - "@algolia/transporter": "4.3.1" + "@algolia/client-common": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" } }, "@algolia/client-search": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.3.1.tgz", - "integrity": "sha512-BGI8+8Gi3OELHtyXHflGz0Ms0DQLUQFu2Hs4us3L9gidyYhuvjl76x8EOOQRkXhQcWzEeqx+L2c2InTKtNfQfg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.5.1.tgz", + "integrity": "sha512-wjuOTte9Auo9Cg4fL0709PjeJ9rXFh4okYUrOt/2SWqQid6DSdZOp+BtyaHKV3E94sj+SlmMxkMUacYluYg5zA==", "requires": { - "@algolia/client-common": "4.3.1", - "@algolia/requester-common": "4.3.1", - "@algolia/transporter": "4.3.1" + "@algolia/client-common": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" } }, "@algolia/logger-common": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.3.1.tgz", - "integrity": "sha512-HOY89EkxFFR0LjeqE+fqaF3EeQUAYFdVdrAXsnrWhm/OsAlXiy+vsoHL4EaJLXvTQlJRBbgNyyQv8ZPAN9JLCw==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.5.1.tgz", + "integrity": "sha512-ZoVnGriinlLHlkvn5K7djOUn1/1IeTjU8rDzOJ3t06T+2hQytgJghaX7rSwKIeH4CjWMy61w8jLisuGJRBOEeg==" }, "@algolia/logger-console": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.3.1.tgz", - "integrity": "sha512-aIJ2N++eTVLkwGFxb1AY60hxYIrNf3FgaEMkokPOAV7sPoWThITSQPj/2vruRLJsYZS2EnD8jxiETrCwSet7mw==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.5.1.tgz", + "integrity": "sha512-1qa7K18+uAgxyWuguayaDS5ViiZFcOjI3J5ACBb0i/n7RsXUo149lP6mwmx6TIU7s135hT0f0TCqnvfMvN1ilA==", "requires": { - "@algolia/logger-common": "4.3.1" + "@algolia/logger-common": "4.5.1" } }, "@algolia/requester-browser-xhr": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.3.1.tgz", - "integrity": "sha512-aSkBWqt9IjZYzmJpP14ISO9tizjyumwAmGxnx2t/QuE3LUh/sJG2FL3Vvq44wjNk9yTPC/c1yiQA85IqeqGZ7g==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.5.1.tgz", + "integrity": "sha512-tsQz+9pZw9dwPm/wMvZDpsWFZgmghLjXi4c3O4rfwoP/Ikum5fhle5fiR14yb4Lw4WlOQ1AJIHJvrg1qLIG8hQ==", "requires": { - "@algolia/requester-common": "4.3.1" + "@algolia/requester-common": "4.5.1" } }, "@algolia/requester-common": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.3.1.tgz", - "integrity": "sha512-2lu0gOB2Rt4mn9gKDxjB8rY2IvU4usDA8bZVGl5tf/E81kRovtDZcgZjuKQ5zMyJ/xuIYXjx+ECXAxjUnNhieA==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.5.1.tgz", + "integrity": "sha512-bPCiLvhHKXaka7f5FLtheChToz0yHVhvza64naFJRRh/3kC0nvyrvQ0ogjiydiSrGIfdNDyyTVfKGdk4gS5gyA==" }, "@algolia/requester-node-http": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.3.1.tgz", - "integrity": "sha512-CnVQ5fHJVsvOZjOIagAIWW315NwGF/spBT5o8/+9ZFTuKQTeLk8/jdj7OXKZ2+vbWkqDM1sKMFXH2jyHOlZjtQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.5.1.tgz", + "integrity": "sha512-BfFc2h9eQOKu1gGs3DtQO7GrVZW/rxUgpJVLja4UVQyGplJyTCrFgkTyfl+8rb3MkNgA/S2LNo7cKNSPfpqeAQ==", "requires": { - "@algolia/requester-common": "4.3.1" + "@algolia/requester-common": "4.5.1" } }, "@algolia/transporter": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.3.1.tgz", - "integrity": "sha512-fbA/XHjdVoO+sp+rPVe/+oK/mCac0S6VugMycg7Etujb4+6nv3STIZxtPiC+Xppbouh5tEEOE81F1aALHXBkBQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.5.1.tgz", + "integrity": "sha512-asPDNToDAPhH0tM6qKGTn1l0wTlNUbekpa1ifZ6v+qhSjo3VdqGyp+2VeciJOBW/wVHXh3HUbAcycvLERRlCLg==", "requires": { - "@algolia/cache-common": "4.3.1", - "@algolia/logger-common": "4.3.1", - "@algolia/requester-common": "4.3.1" + "@algolia/cache-common": "4.5.1", + "@algolia/logger-common": "4.5.1", + "@algolia/requester-common": "4.5.1" } }, "@babel/code-frame": { @@ -124,47 +124,35 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "7.10.4" } }, "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.1.tgz", + "integrity": "sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==" }, "@babel/core": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", - "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.1", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.0", - "@babel/types": "^7.11.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "@babel/code-frame": "7.10.4", + "@babel/generator": "7.12.1", + "@babel/helper-module-transforms": "7.12.1", + "@babel/helpers": "7.12.1", + "@babel/parser": "7.12.3", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1", + "convert-source-map": "1.7.0", + "debug": "4.2.0", + "gensync": "1.0.0-beta.1", + "json5": "2.1.3", + "lodash": "4.17.20", + "resolve": "1.17.0", + "semver": "5.7.1", + "source-map": "0.5.7" }, "dependencies": { "semver": { @@ -175,13 +163,13 @@ } }, "@babel/generator": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", - "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", + "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "7.12.1", + "jsesc": "2.5.2", + "source-map": "0.5.7" } }, "@babel/helper-annotate-as-pure": { @@ -189,7 +177,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "7.12.1" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -197,8 +185,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "7.12.1", + "@babel/types": "7.12.1" } }, "@babel/helper-builder-react-jsx": { @@ -206,30 +194,29 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/types": "7.12.1" } }, "@babel/helper-builder-react-jsx-experimental": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz", - "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.1.tgz", + "integrity": "sha512-82to8lR7TofZWbTd3IEZT1xNHfeU/Ef4rDm/GLXddzqDh+yQ19QuGSzqww51aNxVH8rwfRIzL0EUQsvODVhtyw==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/types": "^7.10.5" + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-module-imports": "7.12.1", + "@babel/types": "7.12.1" } }, "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz", + "integrity": "sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==", "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "7.12.1", + "@babel/helper-validator-option": "7.12.1", + "browserslist": "4.14.5", + "semver": "5.7.1" }, "dependencies": { "semver": { @@ -240,26 +227,25 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-function-name": "7.10.4", + "@babel/helper-member-expression-to-functions": "7.12.1", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/helper-replace-supers": "7.12.1", + "@babel/helper-split-export-declaration": "7.11.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-regex": "7.10.5", + "regexpu-core": "4.7.1" } }, "@babel/helper-define-map": { @@ -267,18 +253,17 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" + "@babel/helper-function-name": "7.10.4", + "@babel/types": "7.12.1", + "lodash": "4.17.20" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", - "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "requires": { - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "7.12.1" } }, "@babel/helper-function-name": { @@ -286,9 +271,9 @@ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-get-function-arity": "7.10.4", + "@babel/template": "7.10.4", + "@babel/types": "7.12.1" } }, "@babel/helper-get-function-arity": { @@ -296,7 +281,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "7.12.1" } }, "@babel/helper-hoist-variables": { @@ -304,37 +289,39 @@ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "7.12.1" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "7.12.1" } }, "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "7.12.1" } }, "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" + "@babel/helper-module-imports": "7.12.1", + "@babel/helper-replace-supers": "7.12.1", + "@babel/helper-simple-access": "7.12.1", + "@babel/helper-split-export-declaration": "7.11.0", + "@babel/helper-validator-identifier": "7.10.4", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1", + "lodash": "4.17.20" } }, "@babel/helper-optimise-call-expression": { @@ -342,7 +329,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "7.12.1" } }, "@babel/helper-plugin-utils": { @@ -355,47 +342,44 @@ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "requires": { - "lodash": "^4.17.19" + "lodash": "4.17.20" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", - "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-wrap-function": "7.12.3", + "@babel/types": "7.12.1" } }, "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", + "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-member-expression-to-functions": "7.12.1", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1" } }, "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "7.12.1" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "7.12.1" } }, "@babel/helper-split-export-declaration": { @@ -403,7 +387,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "7.12.1" } }, "@babel/helper-validator-identifier": { @@ -411,25 +395,30 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==" + }, "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "7.10.4", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1" } }, "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", + "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1" } }, "@babel/highlight": { @@ -437,9 +426,9 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "7.10.4", + "chalk": "2.4.2", + "js-tokens": "4.0.0" }, "dependencies": { "chalk": { @@ -447,136 +436,136 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } } } }, "@babel/parser": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.1.tgz", - "integrity": "sha512-u9QMIRdKVF7hfEkb3nu2LgZDIzCQPv+yHD9Eg6ruoJLjkrQ9fFz4IBSlF/9XwoNri9+2F1IY+dYuOfZrXq8t3w==" + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", + "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-remap-async-to-generator": "7.12.1", + "@babel/plugin-syntax-async-generators": "7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-dynamic-import": "7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-export-namespace-from": "7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-json-strings": "7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", + "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-numeric-separator": "7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-transform-parameters": "7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "7.12.1", + "@babel/plugin-syntax-optional-chaining": "7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -584,15 +573,15 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-dynamic-import": { @@ -600,7 +589,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-export-namespace-from": { @@ -608,7 +597,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-json-strings": { @@ -616,15 +605,15 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", - "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -632,7 +621,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-nullish-coalescing-operator": { @@ -640,7 +629,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-numeric-separator": { @@ -648,7 +637,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -656,7 +645,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-optional-catch-binding": { @@ -664,7 +653,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-optional-chaining": { @@ -672,321 +661,319 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-syntax-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", - "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-module-imports": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-remap-async-to-generator": "7.12.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-define-map": "7.10.5", + "@babel/helper-function-name": "7.10.4", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-replace-supers": "7.12.1", + "@babel/helper-split-export-declaration": "7.11.0", + "globals": "11.12.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "requires": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "babel-plugin-dynamic-import-node": "2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-simple-access": "7.12.1", + "babel-plugin-dynamic-import-node": "2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-hoist-variables": "7.10.4", + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-validator-identifier": "7.10.4", + "babel-plugin-dynamic-import-node": "2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-replace-supers": "7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz", - "integrity": "sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz", + "integrity": "sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", - "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", - "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz", + "integrity": "sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw==", "requires": { - "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@babel/helper-builder-react-jsx": "7.10.4", + "@babel/helper-builder-react-jsx-experimental": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-jsx": "7.12.1" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz", - "integrity": "sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.1.tgz", + "integrity": "sha512-IilcGWdN1yNgEGOrB96jbTplRh+V2Pz1EoEwsKsHfX1a/L40cUYuD71Zepa7C+ujv7kJIxnDftWeZbKNEqZjCQ==", "requires": { - "@babel/helper-builder-react-jsx-experimental": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@babel/helper-builder-react-jsx-experimental": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-jsx": "7.12.1" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", - "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz", - "integrity": "sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz", - "integrity": "sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "requires": { - "regenerator-transform": "^0.14.2" + "regenerator-transform": "0.14.5" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-runtime": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz", - "integrity": "sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", + "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "@babel/helper-module-imports": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "resolve": "1.17.0", + "semver": "5.7.1" }, "dependencies": { "semver": { @@ -997,148 +984,145 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-regex": "7.10.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-typescript": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", - "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-typescript": "^7.10.4" + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-typescript": "7.12.1" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" } }, "@babel/preset-env": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", - "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.0", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "7.12.1", + "@babel/helper-compilation-targets": "7.12.1", + "@babel/helper-module-imports": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-validator-option": "7.12.1", + "@babel/plugin-proposal-async-generator-functions": "7.12.1", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-dynamic-import": "7.12.1", + "@babel/plugin-proposal-export-namespace-from": "7.12.1", + "@babel/plugin-proposal-json-strings": "7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-numeric-separator": "7.12.1", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-proposal-private-methods": "7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "7.12.1", + "@babel/plugin-syntax-async-generators": "7.8.4", + "@babel/plugin-syntax-class-properties": "7.12.1", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-export-namespace-from": "7.8.3", + "@babel/plugin-syntax-json-strings": "7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-syntax-numeric-separator": "7.10.4", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3", + "@babel/plugin-syntax-optional-chaining": "7.8.3", + "@babel/plugin-syntax-top-level-await": "7.12.1", + "@babel/plugin-transform-arrow-functions": "7.12.1", + "@babel/plugin-transform-async-to-generator": "7.12.1", + "@babel/plugin-transform-block-scoped-functions": "7.12.1", + "@babel/plugin-transform-block-scoping": "7.12.1", + "@babel/plugin-transform-classes": "7.12.1", + "@babel/plugin-transform-computed-properties": "7.12.1", + "@babel/plugin-transform-destructuring": "7.12.1", + "@babel/plugin-transform-dotall-regex": "7.12.1", + "@babel/plugin-transform-duplicate-keys": "7.12.1", + "@babel/plugin-transform-exponentiation-operator": "7.12.1", + "@babel/plugin-transform-for-of": "7.12.1", + "@babel/plugin-transform-function-name": "7.12.1", + "@babel/plugin-transform-literals": "7.12.1", + "@babel/plugin-transform-member-expression-literals": "7.12.1", + "@babel/plugin-transform-modules-amd": "7.12.1", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/plugin-transform-modules-systemjs": "7.12.1", + "@babel/plugin-transform-modules-umd": "7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "7.12.1", + "@babel/plugin-transform-new-target": "7.12.1", + "@babel/plugin-transform-object-super": "7.12.1", + "@babel/plugin-transform-parameters": "7.12.1", + "@babel/plugin-transform-property-literals": "7.12.1", + "@babel/plugin-transform-regenerator": "7.12.1", + "@babel/plugin-transform-reserved-words": "7.12.1", + "@babel/plugin-transform-shorthand-properties": "7.12.1", + "@babel/plugin-transform-spread": "7.12.1", + "@babel/plugin-transform-sticky-regex": "7.12.1", + "@babel/plugin-transform-template-literals": "7.12.1", + "@babel/plugin-transform-typeof-symbol": "7.12.1", + "@babel/plugin-transform-unicode-escapes": "7.12.1", + "@babel/plugin-transform-unicode-regex": "7.12.1", + "@babel/preset-modules": "0.1.4", + "@babel/types": "7.12.1", + "core-js-compat": "3.6.5", + "semver": "5.7.1" }, "dependencies": { "semver": { @@ -1149,55 +1133,55 @@ } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "7.12.1", + "@babel/plugin-transform-dotall-regex": "7.12.1", + "@babel/types": "7.12.1", + "esutils": "2.0.3" } }, "@babel/preset-react": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.4.tgz", - "integrity": "sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz", + "integrity": "sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-react-display-name": "^7.10.4", - "@babel/plugin-transform-react-jsx": "^7.10.4", - "@babel/plugin-transform-react-jsx-development": "^7.10.4", - "@babel/plugin-transform-react-jsx-self": "^7.10.4", - "@babel/plugin-transform-react-jsx-source": "^7.10.4", - "@babel/plugin-transform-react-pure-annotations": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-react-jsx": "7.12.1", + "@babel/plugin-transform-react-jsx-development": "7.12.1", + "@babel/plugin-transform-react-jsx-self": "7.12.1", + "@babel/plugin-transform-react-jsx-source": "7.12.1", + "@babel/plugin-transform-react-pure-annotations": "7.12.1" } }, "@babel/preset-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz", - "integrity": "sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz", + "integrity": "sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-transform-typescript": "7.12.1" } }, "@babel/runtime": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.1.tgz", - "integrity": "sha512-nH5y8fLvVl3HAb+ezbgcgwrH8QbClWo8xzkOu7+oyqngo3EVorwpWJQaqXPjGRpfj7mQvsJCl/S8knkfkPWqrw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "0.13.7" } }, "@babel/runtime-corejs3": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.11.1.tgz", - "integrity": "sha512-0gB7HCuTwvPxyCMWJTsRqh8muWkWR6U2c/o5x+oTJPR0xzaFl+thzQxHv4kzMkQadRIhe6KW1D/q1yVrjXmsKA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.1.tgz", + "integrity": "sha512-umhPIcMrlBZ2aTWlWjUseW9LjQKxi1dpFlQS8DzsxB//5K+u6GLTC/JliPKHsd5kJVPIU6X/Hy0YvWOYPcMxBw==", "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" + "core-js-pure": "3.6.5", + "regenerator-runtime": "0.13.7" } }, "@babel/template": { @@ -1205,35 +1189,35 @@ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "7.10.4", + "@babel/parser": "7.12.3", + "@babel/types": "7.12.1" } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", + "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "@babel/code-frame": "7.10.4", + "@babel/generator": "7.12.1", + "@babel/helper-function-name": "7.10.4", + "@babel/helper-split-export-declaration": "7.11.0", + "@babel/parser": "7.12.3", + "@babel/types": "7.12.1", + "debug": "4.2.0", + "globals": "11.12.0", + "lodash": "4.17.20" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/helper-validator-identifier": "7.10.4", + "lodash": "4.17.20", + "to-fast-properties": "2.0.0" } }, "@csstools/convert-colors": { @@ -1242,119 +1226,123 @@ "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" }, "@docsearch/css": { - "version": "1.0.0-alpha.26", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-1.0.0-alpha.26.tgz", - "integrity": "sha512-YAa7R6O2MMdRtxTaMB3TTfeelhpf01J1xtnGZEQa7LNA64QO8BErceQIMQq5/ZMXnGViK/eUjqSVyCu7uzYE5w==" + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-1.0.0-alpha.28.tgz", + "integrity": "sha512-1AhRzVdAkrWwhaxTX6/R7SnFHz8yLz1W8I/AldlTrfbNvZs9INk1FZiEFTJdgHaP68nhgQNWSGlQiDiI3y2RYg==" }, "@docsearch/react": { - "version": "1.0.0-alpha.26", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-1.0.0-alpha.26.tgz", - "integrity": "sha512-2eKIcUXuWbGgz6/xF+p7kYyd1IVGcnB8r+oIkTD6Tqtq0VGzZmf9ZPCOX37G38pVIJXAAxmtAb7oPO311xGWNQ==", + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-1.0.0-alpha.28.tgz", + "integrity": "sha512-XjJOnCBXn+UZmtuDmgzlVIHnnvh6yHVwG4aFq8AXN6xJEIX3f180FvGaowFWAxgdtHplJxFGux0Xx4piHqBzIw==", "requires": { - "@docsearch/css": "^1.0.0-alpha.26", - "@francoischalifour/autocomplete-core": "^1.0.0-alpha.26", - "@francoischalifour/autocomplete-preset-algolia": "^1.0.0-alpha.26", - "algoliasearch": "^4.0.0" + "@docsearch/css": "1.0.0-alpha.28", + "@francoischalifour/autocomplete-core": "1.0.0-alpha.28", + "@francoischalifour/autocomplete-preset-algolia": "1.0.0-alpha.28", + "algoliasearch": "4.5.1" } }, "@docusaurus/core": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-alpha.61.tgz", - "integrity": "sha512-Ev0v5J7L/Pm3VJMdhhyR8I9tUQo8MhVRUUT+Bf0W3TMYG6jp2cIXE88yCfxOsTDducS7EMrdtUXfvePGH9CE/A==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-alpha.65.tgz", + "integrity": "sha512-9kfgPugosRq5byuBC/tz3ZShPFT8xh8t08r5tsx8QujfH2ZpDXSQpLF0x/isbCY1O2NQsRZZCKGXQf5dE6NZfQ==", "requires": { - "@babel/core": "^7.9.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.9.0", - "@babel/preset-env": "^7.9.0", - "@babel/preset-react": "^7.9.4", - "@babel/preset-typescript": "^7.9.0", - "@babel/runtime": "^7.9.2", - "@babel/runtime-corejs3": "^7.10.4", - "@docusaurus/types": "^2.0.0-alpha.61", - "@docusaurus/utils": "^2.0.0-alpha.61", - "@endiliey/static-site-generator-webpack-plugin": "^4.0.0", - "@hapi/joi": "^17.1.1", - "@svgr/webpack": "^5.4.0", - "babel-loader": "^8.1.0", - "babel-plugin-dynamic-import-node": "^2.3.0", - "boxen": "^4.2.0", - "cache-loader": "^4.1.0", - "chalk": "^3.0.0", - "chokidar": "^3.3.0", - "commander": "^4.0.1", - "copy-webpack-plugin": "^5.0.5", - "core-js": "^2.6.5", - "css-loader": "^3.4.2", - "del": "^5.1.0", - "detect-port": "^1.3.0", - "eta": "^1.1.1", - "express": "^4.17.1", - "file-loader": "^6.0.0", - "fs-extra": "^8.1.0", - "globby": "^10.0.1", - "html-minifier-terser": "^5.0.5", - "html-tags": "^3.1.0", - "html-webpack-plugin": "^4.0.4", - "import-fresh": "^3.2.1", - "inquirer": "^7.2.0", - "is-root": "^2.1.0", - "lodash": "^4.5.2", - "lodash.has": "^4.5.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "mini-css-extract-plugin": "^0.8.0", - "nprogress": "^0.2.0", - "null-loader": "^3.0.0", - "optimize-css-assets-webpack-plugin": "^5.0.3", - "pnp-webpack-plugin": "^1.6.4", - "postcss-loader": "^3.0.0", - "postcss-preset-env": "^6.7.0", - "react-dev-utils": "^10.2.1", - "react-helmet": "^6.0.0-beta", - "react-loadable": "^5.5.0", - "react-loadable-ssr-addon": "^0.2.3", - "react-router": "^5.1.2", - "react-router-config": "^5.1.1", - "react-router-dom": "^5.1.2", - "resolve-pathname": "^3.0.0", - "semver": "^6.3.0", - "serve-handler": "^6.1.3", - "shelljs": "^0.8.4", - "std-env": "^2.2.1", - "terser-webpack-plugin": "^2.3.5", - "update-notifier": "^4.1.0", - "url-loader": "^4.1.0", - "wait-file": "^1.0.5", - "webpack": "^4.41.2", - "webpack-bundle-analyzer": "^3.6.1", - "webpack-dev-server": "^3.11.0", - "webpack-merge": "^4.2.2", - "webpackbar": "^4.0.0" + "@babel/core": "7.12.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-transform-runtime": "7.12.1", + "@babel/preset-env": "7.12.1", + "@babel/preset-react": "7.12.1", + "@babel/preset-typescript": "7.12.1", + "@babel/runtime": "7.12.1", + "@babel/runtime-corejs3": "7.12.1", + "@docusaurus/types": "2.0.0-alpha.65", + "@docusaurus/utils": "2.0.0-alpha.65", + "@docusaurus/utils-validation": "2.0.0-alpha.65", + "@endiliey/static-site-generator-webpack-plugin": "4.0.0", + "@hapi/joi": "17.1.1", + "@svgr/webpack": "5.4.0", + "babel-loader": "8.1.0", + "babel-plugin-dynamic-import-node": "2.3.3", + "boxen": "4.2.0", + "cache-loader": "4.1.0", + "chalk": "3.0.0", + "chokidar": "3.4.3", + "commander": "4.1.1", + "copy-webpack-plugin": "6.2.1", + "core-js": "2.6.11", + "css-loader": "3.6.0", + "del": "5.1.0", + "detect-port": "1.3.0", + "eta": "1.11.0", + "express": "4.17.1", + "file-loader": "6.1.1", + "fs-extra": "8.1.0", + "globby": "10.0.2", + "html-minifier-terser": "5.1.1", + "html-tags": "3.1.0", + "html-webpack-plugin": "4.5.0", + "import-fresh": "3.2.1", + "inquirer": "7.3.3", + "is-root": "2.1.0", + "leven": "3.1.0", + "lodash": "4.17.20", + "lodash.flatmap": "4.5.0", + "lodash.has": "4.5.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "mini-css-extract-plugin": "0.8.2", + "nprogress": "0.2.0", + "null-loader": "3.0.0", + "optimize-css-assets-webpack-plugin": "5.0.4", + "pnp-webpack-plugin": "1.6.4", + "postcss-loader": "3.0.0", + "postcss-preset-env": "6.7.0", + "react-dev-utils": "10.2.1", + "react-helmet": "6.1.0", + "react-loadable": "5.5.0", + "react-loadable-ssr-addon": "0.3.0", + "react-router": "5.2.0", + "react-router-config": "5.1.1", + "react-router-dom": "5.2.0", + "resolve-pathname": "3.0.0", + "semver": "6.3.0", + "serve-handler": "6.1.3", + "shelljs": "0.8.4", + "std-env": "2.2.1", + "terser-webpack-plugin": "4.2.3", + "update-notifier": "4.1.3", + "url-loader": "4.1.1", + "wait-file": "1.0.5", + "webpack": "4.44.2", + "webpack-bundle-analyzer": "3.9.0", + "webpack-dev-server": "3.11.0", + "webpack-merge": "4.2.2", + "webpackbar": "4.0.0" } }, "@docusaurus/mdx-loader": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-alpha.61.tgz", - "integrity": "sha512-n7VMfyshgMjoVI2YdQFlPVcMTSR+XOl2UbOTgJXDmD4yCeLOSaj63g8fwVoCy+NRkPgjpWGTGCeLNs63dk9jYg==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-alpha.65.tgz", + "integrity": "sha512-E+8f9dNML4CMDeLVcJi7qfJisPGJY45iGGkjGTdaxPPzP6xEnqA/Y/ghnKMiBY/GYCxKqteQFg52ZDAGNm4Bkg==", "requires": { - "@babel/parser": "^7.9.4", - "@babel/traverse": "^7.9.0", - "@docusaurus/core": "^2.0.0-alpha.61", - "@mdx-js/mdx": "^1.5.8", - "@mdx-js/react": "^1.5.8", - "escape-html": "^1.0.3", - "file-loader": "^6.0.0", - "fs-extra": "^8.1.0", - "github-slugger": "^1.3.0", - "gray-matter": "^4.0.2", - "loader-utils": "^1.2.3", - "mdast-util-to-string": "^1.1.0", - "remark-emoji": "^2.1.0", - "stringify-object": "^3.3.0", - "unist-util-visit": "^2.0.2", - "url-loader": "^4.1.0" + "@babel/parser": "7.12.3", + "@babel/traverse": "7.12.1", + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/utils": "2.0.0-alpha.65", + "@mdx-js/mdx": "1.6.18", + "@mdx-js/react": "1.6.18", + "escape-html": "1.0.3", + "file-loader": "6.1.1", + "fs-extra": "8.1.0", + "github-slugger": "1.3.0", + "gray-matter": "4.0.2", + "loader-utils": "1.4.0", + "mdast-util-to-string": "1.1.0", + "remark-emoji": "2.1.0", + "stringify-object": "3.3.0", + "unist-util-visit": "2.0.3", + "url-loader": "4.1.1" }, "dependencies": { "json5": { @@ -1362,7 +1350,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -1370,31 +1358,33 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } } } }, "@docusaurus/plugin-content-blog": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-alpha.61.tgz", - "integrity": "sha512-C2U5NTKYeDm7AViMt4fqmkLuk2kwxvvkzAK84EvEA3tVy3Q58qTfRqbDyFJGN63OL1Os+1HwQvGjPjCUWVbJ3Q==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-alpha.65.tgz", + "integrity": "sha512-cVt6bmGxsSW/t8DXoS79j1Y/ZwK9KQQFBLT6PK90IK+0Zfa1fRl8T6+aAYEzdADVwoVNIt3976OJ2Z5XT4Xyag==", "requires": { - "@docusaurus/core": "^2.0.0-alpha.61", - "@docusaurus/mdx-loader": "^2.0.0-alpha.61", - "@docusaurus/types": "^2.0.0-alpha.61", - "@docusaurus/utils": "^2.0.0-alpha.61", - "@docusaurus/utils-validation": "^2.0.0-alpha.61", - "@hapi/joi": "^17.1.1", - "feed": "^4.1.0", - "fs-extra": "^8.1.0", - "globby": "^10.0.1", - "loader-utils": "^1.2.3", - "lodash.kebabcase": "^4.1.1", - "reading-time": "^1.2.0", - "remark-admonitions": "^1.2.1" + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/mdx-loader": "2.0.0-alpha.65", + "@docusaurus/types": "2.0.0-alpha.65", + "@docusaurus/utils": "2.0.0-alpha.65", + "@docusaurus/utils-validation": "2.0.0-alpha.65", + "@hapi/joi": "17.1.1", + "chalk": "3.0.0", + "feed": "4.2.1", + "fs-extra": "8.1.0", + "globby": "10.0.2", + "loader-utils": "1.4.0", + "lodash.kebabcase": "4.1.1", + "reading-time": "1.2.0", + "remark-admonitions": "1.2.1", + "webpack": "4.44.2" }, "dependencies": { "json5": { @@ -1402,7 +1392,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -1410,36 +1400,40 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } } } }, "@docusaurus/plugin-content-docs": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-alpha.61.tgz", - "integrity": "sha512-1WojgF+0ZQoARVF3I++2ghzG0sY4panxNiWv8Mzo2MdqECj3lgmR8jaVUSXj4bcTzX7uAEVS9MqKYIf3DBpgYg==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-alpha.65.tgz", + "integrity": "sha512-AMROMNE8p7CPw+szGyBbhHsmCCL5nbm0ljRIEZ/XkDlSXx8s/CDdu9LEbGIYLvoGDjUjnq9Mmi3hNLBYwU2Kow==", "requires": { - "@docusaurus/core": "^2.0.0-alpha.61", - "@docusaurus/mdx-loader": "^2.0.0-alpha.61", - "@docusaurus/types": "^2.0.0-alpha.61", - "@docusaurus/utils": "^2.0.0-alpha.61", - "@docusaurus/utils-validation": "^2.0.0-alpha.61", + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/mdx-loader": "2.0.0-alpha.65", + "@docusaurus/types": "2.0.0-alpha.65", + "@docusaurus/utils": "2.0.0-alpha.65", + "@docusaurus/utils-validation": "2.0.0-alpha.65", "@hapi/joi": "17.1.1", - "execa": "^3.4.0", - "fs-extra": "^8.1.0", - "globby": "^10.0.1", - "import-fresh": "^3.2.1", - "loader-utils": "^1.2.3", - "lodash.flatmap": "^4.5.0", - "lodash.groupby": "^4.6.0", - "lodash.pick": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.sortby": "^4.6.0", - "remark-admonitions": "^1.2.1", - "shelljs": "^0.8.4" + "chalk": "3.0.0", + "execa": "3.4.0", + "fs-extra": "8.1.0", + "globby": "10.0.2", + "import-fresh": "3.2.1", + "loader-utils": "1.4.0", + "lodash": "4.17.20", + "lodash.flatmap": "4.5.0", + "lodash.groupby": "4.6.0", + "lodash.pick": "4.4.0", + "lodash.pickby": "4.6.0", + "lodash.sortby": "4.7.0", + "remark-admonitions": "1.2.1", + "shelljs": "0.8.4", + "utility-types": "3.10.0", + "webpack": "4.44.2" }, "dependencies": { "execa": { @@ -1447,24 +1441,24 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "cross-spawn": "7.0.1", + "get-stream": "5.2.0", + "human-signals": "1.1.1", + "is-stream": "2.0.0", + "merge-stream": "2.0.0", + "npm-run-path": "4.0.1", + "onetime": "5.1.2", + "p-finally": "2.0.1", + "signal-exit": "3.0.3", + "strip-final-newline": "2.0.0" } }, "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } }, "is-stream": { @@ -1477,7 +1471,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -1485,9 +1479,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } }, "npm-run-path": { @@ -1495,7 +1489,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { - "path-key": "^3.0.0" + "path-key": "3.1.1" } }, "p-finally": { @@ -1506,18 +1500,22 @@ } }, "@docusaurus/plugin-content-pages": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-alpha.61.tgz", - "integrity": "sha512-UQmXnGQCQoMltnL0Zvf0Dhqis+tKPwAdtcoBcQN4dvaDp4iEsS8eJjG9QZqvPzqJv+giVyuCT/KeZj/pxCitNw==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-alpha.65.tgz", + "integrity": "sha512-dpdzrGuq2xSIP2SkOtEpQggP+f0WOZcVI+WNON4YpfwftBYoLIf4/S6ISBFdld+AjA/VCJ/nc46/ord4oC6rOQ==", "requires": { - "@docusaurus/mdx-loader": "^2.0.0-alpha.61", - "@docusaurus/types": "^2.0.0-alpha.61", - "@docusaurus/utils": "^2.0.0-alpha.61", - "@docusaurus/utils-validation": "^2.0.0-alpha.61", + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/mdx-loader": "2.0.0-alpha.65", + "@docusaurus/types": "2.0.0-alpha.65", + "@docusaurus/utils": "2.0.0-alpha.65", + "@docusaurus/utils-validation": "2.0.0-alpha.65", "@hapi/joi": "17.1.1", - "globby": "^10.0.1", - "loader-utils": "^1.2.3", - "remark-admonitions": "^1.2.1" + "globby": "10.0.2", + "loader-utils": "1.4.0", + "minimatch": "3.0.4", + "remark-admonitions": "1.2.1", + "slash": "3.0.0", + "webpack": "4.44.2" }, "dependencies": { "json5": { @@ -1525,7 +1523,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -1533,114 +1531,135 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } } } }, "@docusaurus/plugin-debug": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-alpha.61.tgz", - "integrity": "sha512-v0qbGwT/yd5Dy/dcwn5fBCdlFE60IOOhllBDuKUsjJwKCvFDKHZ6jtxrZY+ujIlDfj/Tkc4ban0w46JGWnMj+w==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-alpha.65.tgz", + "integrity": "sha512-+xzDbr1N8pC/LwJyKZDYCZB4VbFnbQwtJ62pRuyt5MSofKDBkXhRJ2r8piud6dpUI4SpcgkL4IbxRXukRCDtkQ==", "requires": { - "@docusaurus/types": "^2.0.0-alpha.61", - "@docusaurus/utils": "^2.0.0-alpha.61" + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/types": "2.0.0-alpha.65", + "@docusaurus/utils": "2.0.0-alpha.65", + "react-json-view": "1.19.1" } }, "@docusaurus/plugin-google-analytics": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-alpha.61.tgz", - "integrity": "sha512-f+KmaoM6eTledmgyijMNREvekZVLJ3nll6aUNDXPod9+MF673Hs4RGDyveMAjLiq03+VCgtXAniTSYsFIHcuAQ==" + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-alpha.65.tgz", + "integrity": "sha512-LK/21sKJlR9Al7upHcxXFT4iMAksuTMYQIC+Xhdte79R1aNZrBhXypWNO0OTbz1hRIK0AAVmpwAiFC5c3RJZgQ==", + "requires": { + "@docusaurus/core": "2.0.0-alpha.65" + } }, "@docusaurus/plugin-google-gtag": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-alpha.61.tgz", - "integrity": "sha512-9l/CUNtBIZqTKY7vD0dOOTrLRpbViXSQPsIOlfYDilS2AQmpsoJVQf6CcCts+GaxWMu0pTw3zeCNnFtJfDV5pA==" + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-alpha.65.tgz", + "integrity": "sha512-tAtqfvmnr1X3UoG1Wh88K1ZIrvJlH6PEVptNgE8QYRDe/Wsykp1mpAm1ppS58kfC1/ofrQ1mNwZplceI5hbukw==", + "requires": { + "@docusaurus/core": "2.0.0-alpha.65" + } }, "@docusaurus/plugin-sitemap": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-alpha.61.tgz", - "integrity": "sha512-7nXJl/zsnr8Hlzxn3bm9NhpwP4sRFGXWwSCWCC4FMrIw9ihXWTtMGe9hDuJx4DqC8xufyQMw26VGauH7XAWdMg==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-alpha.65.tgz", + "integrity": "sha512-h9adEzq3V8vHQxCM5/cM/rskN1G4blH/NHTo1Ng8HqMK6VO8CVX0WgBL9pxpmOo3dVFK9dAB3Pf+zNkJY18Rfw==", "requires": { - "@docusaurus/types": "^2.0.0-alpha.61", + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/types": "2.0.0-alpha.65", "@hapi/joi": "17.1.1", - "fs-extra": "^8.1.0", - "sitemap": "^3.2.2" + "fs-extra": "8.1.0", + "sitemap": "3.2.2" } }, "@docusaurus/preset-classic": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-alpha.61.tgz", - "integrity": "sha512-/3HL468XiSZ1T4mdvqnfV6O80Qv4BxAseJGnmkBwS0u6+Q1VgkNxRxVk4B45OWPaurK/Dl+sCn4sAAUWUGRsZg==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-alpha.65.tgz", + "integrity": "sha512-0wJEB1BvS0Wx0XuWwm+XNfVdVUcZ4Va2nXmK45ZvSYx+DbZ73wL/K4ahIp7R6A5JYv7kPRz6tlm0vusRMmKUVA==", "requires": { - "@docusaurus/plugin-content-blog": "^2.0.0-alpha.61", - "@docusaurus/plugin-content-docs": "^2.0.0-alpha.61", - "@docusaurus/plugin-content-pages": "^2.0.0-alpha.61", - "@docusaurus/plugin-debug": "^2.0.0-alpha.61", - "@docusaurus/plugin-google-analytics": "^2.0.0-alpha.61", - "@docusaurus/plugin-google-gtag": "^2.0.0-alpha.61", - "@docusaurus/plugin-sitemap": "^2.0.0-alpha.61", - "@docusaurus/theme-classic": "^2.0.0-alpha.61", - "@docusaurus/theme-search-algolia": "^2.0.0-alpha.61" + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/plugin-content-blog": "2.0.0-alpha.65", + "@docusaurus/plugin-content-docs": "2.0.0-alpha.65", + "@docusaurus/plugin-content-pages": "2.0.0-alpha.65", + "@docusaurus/plugin-debug": "2.0.0-alpha.65", + "@docusaurus/plugin-google-analytics": "2.0.0-alpha.65", + "@docusaurus/plugin-google-gtag": "2.0.0-alpha.65", + "@docusaurus/plugin-sitemap": "2.0.0-alpha.65", + "@docusaurus/theme-classic": "2.0.0-alpha.65", + "@docusaurus/theme-search-algolia": "2.0.0-alpha.65" } }, "@docusaurus/theme-classic": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-alpha.61.tgz", - "integrity": "sha512-LPJwDi8iPzBe36+U65h4w5N5rXSuXuxPXWzBe/eF0/miR7VVCKydGSSubQLSMAXV0QWspGJIRSPnwuNH3DjJZg==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-alpha.65.tgz", + "integrity": "sha512-i8Uu1bkah7qEbJ7JhNU8TkylkFIh66Tzv3yP8sl9Zcmo3K4/9SAuT1Ux7gb0hd7xsrJy4NalhxvMP0oE1ElEDw==", "requires": { - "@hapi/joi": "^17.1.1", - "@mdx-js/mdx": "^1.5.8", - "@mdx-js/react": "^1.5.8", - "clsx": "^1.1.1", - "copy-text-to-clipboard": "^2.2.0", - "infima": "0.2.0-alpha.12", - "lodash": "^4.17.19", - "parse-numeric-range": "^0.0.2", - "prism-react-renderer": "^1.1.0", - "prismjs": "^1.20.0", - "prop-types": "^15.7.2", - "react-router-dom": "^5.1.2", - "react-toggle": "^4.1.1" + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/plugin-content-blog": "2.0.0-alpha.65", + "@docusaurus/plugin-content-docs": "2.0.0-alpha.65", + "@docusaurus/plugin-content-pages": "2.0.0-alpha.65", + "@docusaurus/types": "2.0.0-alpha.65", + "@docusaurus/utils-validation": "2.0.0-alpha.65", + "@hapi/joi": "17.1.1", + "@mdx-js/mdx": "1.6.18", + "@mdx-js/react": "1.6.18", + "@types/react-toggle": "4.0.2", + "clsx": "1.1.1", + "copy-text-to-clipboard": "2.2.0", + "infima": "0.2.0-alpha.13", + "lodash": "4.17.20", + "parse-numeric-range": "0.0.2", + "prism-react-renderer": "1.1.1", + "prismjs": "1.22.0", + "prop-types": "15.7.2", + "react-router-dom": "5.2.0", + "react-toggle": "4.1.1", + "use-onclickoutside": "0.3.1" } }, "@docusaurus/theme-search-algolia": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-alpha.61.tgz", - "integrity": "sha512-B47SmuBdF2kguBo3Wkx8L/jhYgHXxgxEpcf9JCLPGzK0YiRJk111z43h6PLSwirEpxb4OE+sFqr5oPvnsgnwRw==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-alpha.65.tgz", + "integrity": "sha512-Ois8F9Y5S4eyk2fT7GGFMnLZdtsWDuQi9hAntiMG7ClqcXE3Z3J126RYXqsZV0/Lr3Qaedwe7mED6r0C7Uc+Lg==", "requires": { - "@docsearch/react": "^1.0.0-alpha.25", - "@hapi/joi": "^17.1.1", - "algoliasearch": "^4.0.0", - "algoliasearch-helper": "^3.1.1", - "clsx": "^1.1.1", - "eta": "^1.1.1" + "@docsearch/react": "1.0.0-alpha.28", + "@docusaurus/core": "2.0.0-alpha.65", + "@docusaurus/utils": "2.0.0-alpha.65", + "@hapi/joi": "17.1.1", + "algoliasearch": "4.5.1", + "algoliasearch-helper": "3.2.2", + "clsx": "1.1.1", + "eta": "1.11.0", + "lodash": "4.17.20" } }, "@docusaurus/types": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-alpha.61.tgz", - "integrity": "sha512-x1fBiL/KNfREvA6B40CCTABjK9KP+kj/H/7mHfiwdtOYvVt9GJSgnjThkVD62lpVFbOhQ5C0togZsSzKlw6H/w==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-alpha.65.tgz", + "integrity": "sha512-a4pcWUfS4I4B6O9zi2yJ7JJvjo8lHqwC6+EdwW/XiJ9B40CkD9LGKYGR2EKIUFM2qrRCgSBrDukIK1oAROrkSQ==", "requires": { - "@types/webpack": "^4.41.0", - "commander": "^4.0.1", + "@types/webpack": "4.41.22", + "commander": "4.1.1", "querystring": "0.2.0", - "webpack-merge": "^4.2.2" + "webpack-merge": "4.2.2" } }, "@docusaurus/utils": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-alpha.61.tgz", - "integrity": "sha512-MHvR3Rq8Kk9W6skBR3x7mLsDaNrnp6Mmobyc0ZVql+eiLrjiN7SPunvrVJDE90bQ50HZFLLoAkfgfrvbX5mecg==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-alpha.65.tgz", + "integrity": "sha512-Fz0rF/eMuzgMOJITF3R62H7fC2fDfTNtJ9wq5DBR050647OMEJnimKSilS1Rsckd7c72mfBdhg3Hdb9rrSrk8Q==", "requires": { - "escape-string-regexp": "^2.0.0", - "fs-extra": "^8.1.0", - "gray-matter": "^4.0.2", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "resolve-pathname": "^3.0.0" + "escape-string-regexp": "2.0.0", + "fs-extra": "8.1.0", + "gray-matter": "4.0.2", + "lodash.camelcase": "4.3.0", + "lodash.kebabcase": "4.1.1", + "resolve-pathname": "3.0.0" }, "dependencies": { "escape-string-regexp": { @@ -1651,11 +1670,13 @@ } }, "@docusaurus/utils-validation": { - "version": "2.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-alpha.61.tgz", - "integrity": "sha512-3QrJqZoR5eBz2XG0ijuTIp5AEOe1OHtuv7nkKArOCzFmjuBJLhUTRcECf0K+lcmdJ25zrRAWAYNgTvpVpBjaNg==", + "version": "2.0.0-alpha.65", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-alpha.65.tgz", + "integrity": "sha512-BcWQx8zb+bbQEDzzUerl31Lehuv4axdoty2vSDqt4rhKiAn1lh/XyWYxxPN98r+roailHsl3WRYK0L+KJjTcKA==", "requires": { - "@hapi/joi": "17.1.1" + "@docusaurus/utils": "2.0.0-alpha.65", + "@hapi/joi": "17.1.1", + "chalk": "3.0.0" } }, "@endiliey/static-site-generator-webpack-plugin": { @@ -1663,29 +1684,29 @@ "resolved": "https://registry.npmjs.org/@endiliey/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.0.tgz", "integrity": "sha512-3MBqYCs30qk1OBRC697NqhGouYbs71D1B8hrk/AFJC6GwF2QaJOQZtA1JYAaGSe650sZ8r5ppRTtCRXepDWlng==", "requires": { - "bluebird": "^3.7.1", - "cheerio": "^0.22.0", - "eval": "^0.1.4", - "url": "^0.11.0", - "webpack-sources": "^1.4.3" + "bluebird": "3.7.2", + "cheerio": "0.22.0", + "eval": "0.1.4", + "url": "0.11.0", + "webpack-sources": "1.4.3" } }, "@francoischalifour/autocomplete-core": { - "version": "1.0.0-alpha.26", - "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-core/-/autocomplete-core-1.0.0-alpha.26.tgz", - "integrity": "sha512-XUXAGVx0My9isShokR1QB/oPFQiaPYDCouoTZTN+DISQw5AK6kGZUCFFXJSRNHTxBq1/0e70DYEiQa8E+rT/Og==" + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-core/-/autocomplete-core-1.0.0-alpha.28.tgz", + "integrity": "sha512-rL9x+72btViw+9icfBKUJjZj87FgjFrD2esuTUqtj4RAX3s4AuVZiN8XEsfjQBSc6qJk31cxlvqZHC/BIyYXgg==" }, "@francoischalifour/autocomplete-preset-algolia": { - "version": "1.0.0-alpha.26", - "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.0.0-alpha.26.tgz", - "integrity": "sha512-RrayxZgvTzpwq+RqEIpVn2UOEFLwa+HADCr2I3UI05o/OGU7Wc6LltpQy54scR+FlAIk6qTJwp5Nw/ecJn6xXg==" + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.0.0-alpha.28.tgz", + "integrity": "sha512-bprfNmYt1opFUFEtD2XfY/kEsm13bzHQgU80uMjhuK0DJ914IjolT1GytpkdM6tJ4MBvyiJPP+bTtWO+BZ7c7w==" }, "@hapi/address": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz", "integrity": "sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==", "requires": { - "@hapi/hoek": "^9.0.0" + "@hapi/hoek": "9.1.0" } }, "@hapi/bourne": { @@ -1699,20 +1720,20 @@ "integrity": "sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==" }, "@hapi/hoek": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz", - "integrity": "sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw==" + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.1.0.tgz", + "integrity": "sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw==" }, "@hapi/joi": { "version": "17.1.1", "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz", "integrity": "sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==", "requires": { - "@hapi/address": "^4.0.1", - "@hapi/formula": "^2.0.0", - "@hapi/hoek": "^9.0.0", - "@hapi/pinpoint": "^2.0.0", - "@hapi/topo": "^5.0.0" + "@hapi/address": "4.1.0", + "@hapi/formula": "2.0.0", + "@hapi/hoek": "9.1.0", + "@hapi/pinpoint": "2.0.0", + "@hapi/topo": "5.0.0" } }, "@hapi/pinpoint": { @@ -1725,56 +1746,64 @@ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", "requires": { - "@hapi/hoek": "^9.0.0" + "@hapi/hoek": "9.1.0" } }, "@mdx-js/mdx": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.16.tgz", - "integrity": "sha512-jnYyJ0aCafCIehn3GjYcibIapaLBgs3YkoenNQBPcPFyyuUty7B3B07OE+pMllhJ6YkWeP/R5Ax19x0nqTzgJw==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.18.tgz", + "integrity": "sha512-RXtdFBP3cnf/RILx/ipp5TsSY1k75bYYmjorv7jTaPcHPQwhQdI6K4TrVUed/GL4f8zX5TN2QwO5g+3E/8RsXA==", "requires": { - "@babel/core": "7.10.5", + "@babel/core": "7.11.6", "@babel/plugin-syntax-jsx": "7.10.4", "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.16", - "babel-plugin-apply-mdx-type-prop": "1.6.16", - "babel-plugin-extract-import-names": "1.6.16", + "@mdx-js/util": "1.6.18", + "babel-plugin-apply-mdx-type-prop": "1.6.18", + "babel-plugin-extract-import-names": "1.6.18", "camelcase-css": "2.0.1", "detab": "2.0.3", - "hast-util-raw": "6.0.0", + "hast-util-raw": "6.0.1", "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "9.1.0", - "remark-footnotes": "1.0.0", - "remark-mdx": "1.6.16", + "mdast-util-to-hast": "9.1.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.18", "remark-parse": "8.0.3", "remark-squeeze-paragraphs": "4.0.0", "style-to-object": "0.3.0", - "unified": "9.1.0", + "unified": "9.2.0", "unist-builder": "2.0.3", "unist-util-visit": "2.0.3" }, "dependencies": { "@babel/core": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.5.tgz", - "integrity": "sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.5", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.10.5", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.5", - "@babel/types": "^7.10.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "@babel/code-frame": "7.10.4", + "@babel/generator": "7.12.1", + "@babel/helper-module-transforms": "7.12.1", + "@babel/helpers": "7.12.1", + "@babel/parser": "7.12.3", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1", + "convert-source-map": "1.7.0", + "debug": "4.2.0", + "gensync": "1.0.0-beta.1", + "json5": "2.1.3", + "lodash": "4.17.20", + "resolve": "1.17.0", + "semver": "5.7.1", + "source-map": "0.5.7" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" } }, "semver": { @@ -1785,22 +1814,22 @@ } }, "@mdx-js/react": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.16.tgz", - "integrity": "sha512-+FhuSVOPo7+4fZaRwWuCSRUcZkJOkZu0rfAbBKvoCg1LWb1Td8Vzi0DTLORdSvgWNbU6+EL40HIgwTOs00x2Jw==" + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.18.tgz", + "integrity": "sha512-aFHsZVu7r9WamlP+WO/lyvHHZAubkQjkcRYlvS7fQElypfJvjKdHevjC3xiqlsQpasx/4KqRMoEIb++wNtd+6w==" }, "@mdx-js/util": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.16.tgz", - "integrity": "sha512-SFtLGIGZummuyMDPRL5KdmpgI8U19Ble28UjEWihPjGxF1Lgj8aDjLWY8KiaUy9eqb9CKiVCqEIrK9jbnANfkw==" + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.18.tgz", + "integrity": "sha512-axMe+NoLF55OlXPbhRn4GNCHcL1f5W3V3c0dWzg05S9JXm3Ecpxzxaht3g3vTP0dcqBL/yh/xCvzK0ZpO54Eug==" }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "call-me-maybe": "1.0.1", + "glob-to-regexp": "0.3.0" } }, "@nodelib/fs.scandir": { @@ -1809,7 +1838,7 @@ "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", "requires": { "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" + "run-parallel": "1.1.9" } }, "@nodelib/fs.stat": { @@ -1823,7 +1852,22 @@ "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", "requires": { "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" + "fastq": "1.8.0" + } + }, + "@npmcli/move-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", + "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "requires": { + "mkdirp": "1.0.4" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "@sindresorhus/is": { @@ -1876,14 +1920,14 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.4.0.tgz", "integrity": "sha512-Gyx7cCxua04DBtyILTYdQxeO/pwfTBev6+eXTbVbxe4HTGhOUW6yo7PSbG2p6eJMl44j6XSequ0ZDP7bl0nu9A==", "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.4.0" + "@svgr/babel-plugin-add-jsx-attribute": "5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "5.4.0", + "@svgr/babel-plugin-transform-svg-component": "5.4.0" } }, "@svgr/core": { @@ -1891,9 +1935,9 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.4.0.tgz", "integrity": "sha512-hWGm1DCCvd4IEn7VgDUHYiC597lUYhFau2lwJBYpQWDirYLkX4OsXu9IslPgJ9UpP7wsw3n2Ffv9sW7SXJVfqQ==", "requires": { - "@svgr/plugin-jsx": "^5.4.0", - "camelcase": "^6.0.0", - "cosmiconfig": "^6.0.0" + "@svgr/plugin-jsx": "5.4.0", + "camelcase": "6.1.0", + "cosmiconfig": "6.0.0" } }, "@svgr/hast-util-to-babel-ast": { @@ -1901,7 +1945,7 @@ "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.4.0.tgz", "integrity": "sha512-+U0TZZpPsP2V1WvVhqAOSTk+N+CjYHdZx+x9UBa1eeeZDXwH8pt0CrQf2+SvRl/h2CAPRFkm+Ey96+jKP8Bsgg==", "requires": { - "@babel/types": "^7.9.5" + "@babel/types": "7.12.1" } }, "@svgr/plugin-jsx": { @@ -1909,10 +1953,10 @@ "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.4.0.tgz", "integrity": "sha512-SGzO4JZQ2HvGRKDzRga9YFSqOqaNrgLlQVaGvpZ2Iht2gwRp/tq+18Pvv9kS9ZqOMYgyix2LLxZMY1LOe9NPqw==", "requires": { - "@babel/core": "^7.7.5", - "@svgr/babel-preset": "^5.4.0", - "@svgr/hast-util-to-babel-ast": "^5.4.0", - "svg-parser": "^2.0.2" + "@babel/core": "7.12.3", + "@svgr/babel-preset": "5.4.0", + "@svgr/hast-util-to-babel-ast": "5.4.0", + "svg-parser": "2.0.4" } }, "@svgr/plugin-svgo": { @@ -1920,9 +1964,9 @@ "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.4.0.tgz", "integrity": "sha512-3Cgv3aYi1l6SHyzArV9C36yo4kgwVdF3zPQUC6/aCDUeXAofDYwE5kk3e3oT5ZO2a0N3lB+lLGvipBG6lnG8EA==", "requires": { - "cosmiconfig": "^6.0.0", - "merge-deep": "^3.0.2", - "svgo": "^1.2.2" + "cosmiconfig": "6.0.0", + "merge-deep": "3.0.2", + "svgo": "1.3.2" } }, "@svgr/webpack": { @@ -1930,14 +1974,14 @@ "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.4.0.tgz", "integrity": "sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg==", "requires": { - "@babel/core": "^7.9.0", - "@babel/plugin-transform-react-constant-elements": "^7.9.0", - "@babel/preset-env": "^7.9.5", - "@babel/preset-react": "^7.9.4", - "@svgr/core": "^5.4.0", - "@svgr/plugin-jsx": "^5.4.0", - "@svgr/plugin-svgo": "^5.4.0", - "loader-utils": "^2.0.0" + "@babel/core": "7.12.3", + "@babel/plugin-transform-react-constant-elements": "7.12.1", + "@babel/preset-env": "7.12.1", + "@babel/preset-react": "7.12.1", + "@svgr/core": "5.4.0", + "@svgr/plugin-jsx": "5.4.0", + "@svgr/plugin-svgo": "5.4.0", + "loader-utils": "2.0.0" } }, "@szmarczak/http-timer": { @@ -1945,7 +1989,7 @@ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "requires": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "1.1.3" } }, "@types/anymatch": { @@ -1953,18 +1997,13 @@ "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==" }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "requires": { - "@types/minimatch": "*", - "@types/node": "*" + "@types/minimatch": "3.0.3", + "@types/node": "14.11.10" } }, "@types/hast": { @@ -1972,25 +2011,25 @@ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", "requires": { - "@types/unist": "*" + "@types/unist": "2.0.3" } }, "@types/html-minifier-terser": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz", - "integrity": "sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA==" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==" }, "@types/json-schema": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==" + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" }, "@types/mdast": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", "requires": { - "@types/unist": "*" + "@types/unist": "2.0.3" } }, "@types/minimatch": { @@ -1999,9 +2038,9 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" + "version": "14.11.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.10.tgz", + "integrity": "sha512-yV1nWZPlMFpoXyoknm4S56y2nlTAuFYaJuQtYRAOU7xA/FJ9RY0Xm7QOkaYMMmr8ESdHIuUb6oQgR/0+2NqlyA==" }, "@types/parse-json": { "version": "4.0.0", @@ -2013,11 +2052,33 @@ "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, "@types/q": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" }, + "@types/react": { + "version": "16.9.53", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.53.tgz", + "integrity": "sha512-4nW60Sd4L7+WMXH1D6jCdVftuW7j4Za6zdp6tJ33Rqv0nk1ZAmQKML9ZLD4H0dehA3FZxXR/GM8gXplf82oNGw==", + "requires": { + "@types/prop-types": "15.7.3", + "csstype": "3.0.3" + } + }, + "@types/react-toggle": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/react-toggle/-/react-toggle-4.0.2.tgz", + "integrity": "sha512-sHqfoKFnL0YU2+OC4meNEC8Ptx9FE8/+nFeFvNcdBa6ANA8KpAzj3R9JN8GtrvlLgjKDoYgI7iILgXYcTPo2IA==", + "requires": { + "@types/react": "16.9.53" + } + }, "@types/source-list-map": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", @@ -2029,11 +2090,11 @@ "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==" }, "@types/uglify-js": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.9.3.tgz", - "integrity": "sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.0.tgz", + "integrity": "sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q==", "requires": { - "source-map": "^0.6.1" + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -2049,16 +2110,16 @@ "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" }, "@types/webpack": { - "version": "4.41.21", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.21.tgz", - "integrity": "sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA==", + "version": "4.41.22", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.22.tgz", + "integrity": "sha512-JQDJK6pj8OMV9gWOnN1dcLCyU9Hzs6lux0wBO4lr1+gyEhIBR9U3FMrz12t2GPkg110XAxEAw2WHF6g7nZIbRQ==", "requires": { - "@types/anymatch": "*", - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "source-map": "^0.6.0" + "@types/anymatch": "1.3.1", + "@types/node": "14.11.10", + "@types/tapable": "1.0.6", + "@types/uglify-js": "3.11.0", + "@types/webpack-sources": "2.0.0", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -2069,13 +2130,13 @@ } }, "@types/webpack-sources": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-1.4.2.tgz", - "integrity": "sha512-77T++JyKow4BQB/m9O96n9d/UUHWLQHlcqXb9Vsf4F1+wKNrrlWNFPDLKNT92RJnCSL6CieTc+NDXtCVZswdTw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz", + "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==", "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" + "@types/node": "14.11.10", + "@types/source-list-map": "0.1.2", + "source-map": "0.7.3" }, "dependencies": { "source-map": { @@ -2152,7 +2213,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "requires": { - "@xtuc/ieee754": "^1.2.0" + "@xtuc/ieee754": "1.2.0" } }, "@webassemblyjs/leb128": { @@ -2257,14 +2318,14 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "mime-types": "~2.1.24", + "mime-types": "2.1.27", "negotiator": "0.6.2" } }, "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" }, "acorn-walk": { "version": "7.2.0", @@ -2277,23 +2338,23 @@ "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" }, "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "clean-stack": "2.2.0", + "indent-string": "4.0.0" } }, "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "3.1.3", + "fast-json-stable-stringify": "2.1.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.4.0" } }, "ajv-errors": { @@ -2307,24 +2368,24 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" }, "algoliasearch": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.3.1.tgz", - "integrity": "sha512-q8aIYgdZZWOMzmvlIwxcbktVa8+M5cyI8hIrgd/NcSz/XKHfVTKdNYbnsmPqmYrssAmepx8C8vHnJrPuumUnYA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.5.1.tgz", + "integrity": "sha512-b6yT1vWMlBdVObQipKxvt0M6SEvGetVj+FFFlo0Fy06gkdj6WCJaS4t10Q/hC3I2VG9QmpCqlK3Esgg1y1E+uw==", "requires": { - "@algolia/cache-browser-local-storage": "4.3.1", - "@algolia/cache-common": "4.3.1", - "@algolia/cache-in-memory": "4.3.1", - "@algolia/client-account": "4.3.1", - "@algolia/client-analytics": "4.3.1", - "@algolia/client-common": "4.3.1", - "@algolia/client-recommendation": "4.3.1", - "@algolia/client-search": "4.3.1", - "@algolia/logger-common": "4.3.1", - "@algolia/logger-console": "4.3.1", - "@algolia/requester-browser-xhr": "4.3.1", - "@algolia/requester-common": "4.3.1", - "@algolia/requester-node-http": "4.3.1", - "@algolia/transporter": "4.3.1" + "@algolia/cache-browser-local-storage": "4.5.1", + "@algolia/cache-common": "4.5.1", + "@algolia/cache-in-memory": "4.5.1", + "@algolia/client-account": "4.5.1", + "@algolia/client-analytics": "4.5.1", + "@algolia/client-common": "4.5.1", + "@algolia/client-recommendation": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/logger-common": "4.5.1", + "@algolia/logger-console": "4.5.1", + "@algolia/requester-browser-xhr": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/requester-node-http": "4.5.1", + "@algolia/transporter": "4.5.1" } }, "algoliasearch-helper": { @@ -2332,7 +2393,7 @@ "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.2.2.tgz", "integrity": "sha512-/3XvE33R+gQKaiPdy3nmHYqhF8hqIu8xnlOicVxb1fD6uMFmxW8rGLzzrRfsPfxgAfm+c1NslLb3TzQVIB8aVA==", "requires": { - "events": "^1.1.1" + "events": "1.1.1" }, "dependencies": { "events": { @@ -2352,7 +2413,7 @@ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", "requires": { - "string-width": "^3.0.0" + "string-width": "3.1.0" }, "dependencies": { "string-width": { @@ -2360,9 +2421,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } } } @@ -2377,7 +2438,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", "requires": { - "type-fest": "^0.11.0" + "type-fest": "0.11.0" }, "dependencies": { "type-fest": { @@ -2402,7 +2463,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "anymatch": { @@ -2410,8 +2471,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "normalize-path": "3.0.0", + "picomatch": "2.2.2" } }, "aproba": { @@ -2419,12 +2480,17 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, + "are-passive-events-supported": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/are-passive-events-supported/-/are-passive-events-supported-1.1.1.tgz", + "integrity": "sha512-5wnvlvB/dTbfrCvJ027Y4L4gW/6Mwoy1uFSavney0YO++GU+0e/flnjiBBwH+1kh7xNCgCOGvmJC3s32joYbww==" + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -2448,12 +2514,9 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" }, "array-uniq": { "version": "1.0.3", @@ -2470,14 +2533,20 @@ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "bn.js": "4.11.9", + "inherits": "2.0.4", + "minimalistic-assert": "1.0.1", + "safer-buffer": "2.1.2" }, "dependencies": { "bn.js": { @@ -2492,7 +2561,7 @@ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { - "object-assign": "^4.1.1", + "object-assign": "4.1.1", "util": "0.10.3" }, "dependencies": { @@ -2521,7 +2590,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "^4.17.14" + "lodash": "4.17.20" } }, "async-each": { @@ -2544,13 +2613,13 @@ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" + "browserslist": "4.14.5", + "caniuse-lite": "1.0.30001148", + "colorette": "1.2.1", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "7.0.35", + "postcss-value-parser": "4.1.0" } }, "babel-code-frame": { @@ -2558,9 +2627,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.3", + "js-tokens": "3.0.2" }, "dependencies": { "ansi-regex": { @@ -2578,11 +2647,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "js-tokens": { @@ -2595,7 +2664,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -2610,11 +2679,11 @@ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" + "find-cache-dir": "2.1.0", + "loader-utils": "1.4.0", + "mkdirp": "0.5.5", + "pify": "4.0.1", + "schema-utils": "2.7.1" }, "dependencies": { "json5": { @@ -2622,7 +2691,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -2630,20 +2699,20 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } } } }, "babel-plugin-apply-mdx-type-prop": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.16.tgz", - "integrity": "sha512-hjUd24Yhnr5NKtHpC2mcRBGjC6RUKGzSzjN9g5SdjT4WpL/JDlpmjyBf7vWsJJSXFvMIbzRyxF4lT9ukwOnj/w==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.18.tgz", + "integrity": "sha512-lcpbj/GatKQp48jsJ8Os/ZXv381ZYFNKA27EPllcpFMpqiS696XkoK+xie/2GjzQSe5IIbo3srsXpd6/ik8PsQ==", "requires": { "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.16" + "@mdx-js/util": "1.6.18" } }, "babel-plugin-dynamic-import-node": { @@ -2651,13 +2720,13 @@ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "requires": { - "object.assign": "^4.1.0" + "object.assign": "4.1.1" } }, "babel-plugin-extract-import-names": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.16.tgz", - "integrity": "sha512-Da6Ra0sbA/1Iavli8LdMbTjyrsOPaxMm4lrKl8VJN4sJI5F64qy2EpLj3+5INLvNPfW4ddwpStbfP3Rf3jIgcw==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.18.tgz", + "integrity": "sha512-2EyZia3Ezl3UdhBcgDl6KZTNkYa2VhmAHHbJdhCroa1pZD/E56BulVsSKIhm/kza9agnabDR2VEHO+ZnqpfxbQ==", "requires": { "@babel/helper-plugin-utils": "7.10.4" } @@ -2677,13 +2746,13 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.3.0", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.2", + "pascalcase": "0.1.1" }, "dependencies": { "define-property": { @@ -2691,7 +2760,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -2699,7 +2768,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -2707,7 +2776,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -2715,13 +2784,18 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } } } }, + "base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=" + }, "base64-js": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", @@ -2737,10 +2811,10 @@ "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" + "bluebird": "3.7.2", + "check-types": "8.0.3", + "hoopy": "0.1.4", + "tryer": "1.0.1" } }, "big.js": { @@ -2753,15 +2827,24 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==" + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" }, "body-parser": { "version": "1.19.0", @@ -2769,15 +2852,15 @@ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { "bytes": "3.1.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "1.1.2", "http-errors": "1.7.2", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.7.0", "raw-body": "2.4.0", - "type-is": "~1.6.17" + "type-is": "1.6.18" }, "dependencies": { "debug": { @@ -2800,12 +2883,12 @@ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "array-flatten": "2.1.2", + "deep-equal": "1.1.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" }, "dependencies": { "array-flatten": { @@ -2825,14 +2908,14 @@ "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" + "ansi-align": "3.0.0", + "camelcase": "5.3.1", + "chalk": "3.0.0", + "cli-boxes": "2.2.1", + "string-width": "4.2.0", + "term-size": "2.2.0", + "type-fest": "0.8.1", + "widest-line": "3.1.0" }, "dependencies": { "camelcase": { @@ -2847,7 +2930,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -2856,7 +2939,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { - "fill-range": "^7.0.1" + "fill-range": "7.0.1" } }, "brorand": { @@ -2869,12 +2952,12 @@ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.4", + "safe-buffer": "5.1.2" } }, "browserify-cipher": { @@ -2882,9 +2965,9 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "browserify-aes": "1.2.0", + "browserify-des": "1.0.2", + "evp_bytestokey": "1.0.3" } }, "browserify-des": { @@ -2892,10 +2975,10 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "cipher-base": "1.0.4", + "des.js": "1.0.1", + "inherits": "2.0.4", + "safe-buffer": "5.1.2" } }, "browserify-rsa": { @@ -2903,8 +2986,8 @@ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "bn.js": "4.11.9", + "randombytes": "2.1.0" }, "dependencies": { "bn.js": { @@ -2919,15 +3002,15 @@ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "bn.js": "5.1.3", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "elliptic": "6.5.3", + "inherits": "2.0.4", + "parse-asn1": "5.1.6", + "readable-stream": "3.6.0", + "safe-buffer": "5.2.1" }, "dependencies": { "safe-buffer": { @@ -2942,18 +3025,18 @@ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "requires": { - "pako": "~1.0.5" + "pako": "1.0.11" } }, "browserslist": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", - "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", + "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", "requires": { - "caniuse-lite": "^1.0.30001093", - "electron-to-chromium": "^1.3.488", - "escalade": "^3.0.1", - "node-releases": "^1.1.58" + "caniuse-lite": "1.0.30001148", + "electron-to-chromium": "1.3.582", + "escalade": "3.1.1", + "node-releases": "1.1.63" } }, "buffer": { @@ -2961,9 +3044,9 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "base64-js": "1.3.1", + "ieee754": "1.1.13", + "isarray": "1.0.0" } }, "buffer-from": { @@ -2997,25 +3080,34 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "@npmcli/move-file": "1.0.1", + "chownr": "2.0.0", + "fs-minipass": "2.1.0", + "glob": "7.1.6", + "infer-owner": "1.0.4", + "lru-cache": "6.0.0", + "minipass": "3.1.3", + "minipass-collect": "1.0.2", + "minipass-flush": "1.0.5", + "minipass-pipeline": "1.2.4", + "mkdirp": "1.0.4", + "p-map": "4.0.0", + "promise-inflight": "1.0.1", + "rimraf": "3.0.2", + "ssri": "8.0.0", + "tar": "6.0.5", + "unique-filename": "1.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "cache-base": { @@ -3023,15 +3115,15 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "collection-visit": "1.0.0", + "component-emitter": "1.3.0", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.1", + "to-object-path": "0.3.0", + "union-value": "1.0.1", + "unset-value": "1.0.0" } }, "cache-loader": { @@ -3039,12 +3131,12 @@ "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", "requires": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" + "buffer-json": "2.0.0", + "find-cache-dir": "3.3.1", + "loader-utils": "1.4.0", + "mkdirp": "0.5.5", + "neo-async": "2.6.2", + "schema-utils": "2.7.1" }, "dependencies": { "find-cache-dir": { @@ -3052,9 +3144,9 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "commondir": "1.0.1", + "make-dir": "3.1.0", + "pkg-dir": "4.2.0" } }, "find-up": { @@ -3062,8 +3154,8 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "5.0.0", + "path-exists": "4.0.0" } }, "json5": { @@ -3071,7 +3163,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -3079,9 +3171,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } }, "locate-path": { @@ -3089,7 +3181,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "p-locate": "^4.1.0" + "p-locate": "4.1.0" } }, "make-dir": { @@ -3097,7 +3189,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "requires": { - "semver": "^6.0.0" + "semver": "6.3.0" } }, "p-locate": { @@ -3105,7 +3197,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { - "p-limit": "^2.2.0" + "p-limit": "2.3.0" } }, "path-exists": { @@ -3118,7 +3210,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { - "find-up": "^4.0.0" + "find-up": "4.1.0" } } } @@ -3128,21 +3220,21 @@ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "clone-response": "1.0.2", + "get-stream": "5.2.0", + "http-cache-semantics": "4.1.0", + "keyv": "3.1.0", + "lowercase-keys": "2.0.0", + "normalize-url": "4.5.0", + "responselike": "1.0.2" }, "dependencies": { "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } }, "lowercase-keys": { @@ -3167,7 +3259,7 @@ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "requires": { - "callsites": "^2.0.0" + "callsites": "2.0.0" }, "dependencies": { "callsites": { @@ -3182,7 +3274,7 @@ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "requires": { - "caller-callsite": "^2.0.0" + "caller-callsite": "2.0.0" } }, "callsites": { @@ -3195,14 +3287,14 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", "requires": { - "pascal-case": "^3.1.1", - "tslib": "^1.10.0" + "pascal-case": "3.1.1", + "tslib": "1.14.1" } }, "camelcase": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", - "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.1.0.tgz", + "integrity": "sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ==" }, "camelcase-css": { "version": "2.0.1", @@ -3214,16 +3306,16 @@ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "browserslist": "4.14.5", + "caniuse-lite": "1.0.30001148", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" } }, "caniuse-lite": { - "version": "1.0.30001111", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz", - "integrity": "sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==" + "version": "1.0.30001148", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz", + "integrity": "sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw==" }, "ccount": { "version": "1.0.5", @@ -3235,17 +3327,16 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "color-convert": "2.0.1" } }, "color-convert": { @@ -3253,7 +3344,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.4" } }, "color-name": { @@ -3267,11 +3358,11 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^4.0.0" + "has-flag": "4.0.0" } } } @@ -3306,50 +3397,50 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" + "css-select": "1.2.0", + "dom-serializer": "0.1.1", + "entities": "1.1.2", + "htmlparser2": "3.10.1", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.2", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" } }, "chokidar": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", - "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "anymatch": "3.1.1", + "braces": "3.0.2", + "fsevents": "2.1.3", + "glob-parent": "5.1.1", + "is-binary-path": "2.1.0", + "is-glob": "4.0.1", + "normalize-path": "3.0.0", + "readdirp": "3.5.0" } }, "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "chrome-trace-event": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "requires": { - "tslib": "^1.9.0" + "tslib": "1.14.1" } }, "ci-info": { @@ -3362,8 +3453,8 @@ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.4", + "safe-buffer": "5.1.2" } }, "class-utils": { @@ -3371,10 +3462,10 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { "define-property": { @@ -3382,7 +3473,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -3397,7 +3488,7 @@ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "requires": { - "source-map": "~0.6.0" + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -3413,16 +3504,16 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-boxes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", - "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "requires": { - "restore-cursor": "^3.1.0" + "restore-cursor": "3.1.0" } }, "cli-width": { @@ -3436,9 +3527,9 @@ "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "optional": true, "requires": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" + "good-listener": "1.2.2", + "select": "1.1.2", + "tiny-emitter": "2.1.0" } }, "cliui": { @@ -3446,9 +3537,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "3.1.0", + "strip-ansi": "5.2.0", + "wrap-ansi": "5.1.0" }, "dependencies": { "string-width": { @@ -3456,9 +3547,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } } } @@ -3468,11 +3559,11 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", "requires": { - "for-own": "^0.1.3", - "is-plain-object": "^2.0.1", - "kind-of": "^3.0.2", - "lazy-cache": "^1.0.3", - "shallow-clone": "^0.1.2" + "for-own": "0.1.5", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "lazy-cache": "1.0.4", + "shallow-clone": "0.1.2" }, "dependencies": { "kind-of": { @@ -3480,7 +3571,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3490,7 +3581,7 @@ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "1.0.1" } }, "clsx": { @@ -3503,9 +3594,9 @@ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" + "@types/q": "1.5.4", + "chalk": "2.4.2", + "q": "1.5.1" }, "dependencies": { "chalk": { @@ -3513,9 +3604,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } } } @@ -3530,17 +3621,17 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-convert": "1.9.3", + "color-string": "1.5.4" } }, "color-convert": { @@ -3557,12 +3648,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "color-name": "1.1.3", + "simple-swizzle": "0.2.2" } }, "colorette": { @@ -3595,7 +3686,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "requires": { - "mime-db": ">= 1.43.0 < 2" + "mime-db": "1.44.0" } }, "compression": { @@ -3603,13 +3694,13 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.7", "bytes": "3.0.0", - "compressible": "~2.0.16", + "compressible": "2.0.18", "debug": "2.6.9", - "on-headers": "~1.0.2", + "on-headers": "1.0.2", "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "bytes": { @@ -3642,10 +3733,10 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "buffer-from": "1.1.1", + "inherits": "2.0.4", + "readable-stream": "2.3.7", + "typedarray": "0.0.6" }, "dependencies": { "readable-stream": { @@ -3653,13 +3744,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -3667,7 +3758,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -3677,12 +3768,12 @@ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "dot-prop": "5.3.0", + "graceful-fs": "4.2.4", + "make-dir": "3.1.0", + "unique-string": "2.0.0", + "write-file-atomic": "3.0.3", + "xdg-basedir": "4.0.0" }, "dependencies": { "make-dir": { @@ -3690,7 +3781,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "requires": { - "semver": "^6.0.0" + "semver": "6.3.0" } } } @@ -3733,7 +3824,7 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { - "safe-buffer": "~5.1.1" + "safe-buffer": "5.1.2" } }, "cookie": { @@ -3751,12 +3842,22 @@ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.5", + "rimraf": "2.7.1", + "run-queue": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "7.1.6" + } + } } }, "copy-descriptor": { @@ -3770,87 +3871,118 @@ "integrity": "sha512-WRvoIdnTs1rgPMkgA2pUOa/M4Enh2uzCwdKsOMYNAJiz/4ZvEJgmbF4OmninPmlFdAWisfeh0tH+Cpf7ni3RqQ==" }, "copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz", + "integrity": "sha512-VH2ZTMIBsx4p++Lmpg77adZ0KUyM5gFR/9cuTrbneNnJlcQXUFvsNariPqq2dq2kV3F2skHiDGPQCyKWy1+U0Q==", "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "webpack-log": "^2.0.0" + "cacache": "15.0.5", + "fast-glob": "3.2.4", + "find-cache-dir": "3.3.1", + "glob-parent": "5.1.1", + "globby": "11.0.1", + "loader-utils": "2.0.0", + "normalize-path": "3.0.0", + "p-limit": "3.0.2", + "schema-utils": "3.0.0", + "serialize-javascript": "5.0.1", + "webpack-sources": "1.4.3" }, "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "commondir": "1.0.1", + "make-dir": "3.1.0", + "pkg-dir": "4.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "5.0.0", + "path-exists": "4.0.0" + } + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "requires": { + "array-union": "2.1.0", + "dir-glob": "3.0.1", + "fast-glob": "3.2.4", + "ignore": "5.1.8", + "merge2": "1.4.1", + "slash": "3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "6.3.0" + } + }, + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "requires": { + "p-try": "2.2.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "2.3.0" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "is-extglob": "^2.1.0" + "p-try": "2.2.0" } } } }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { - "minimist": "^1.2.0" + "find-up": "4.1.0" } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" } } } @@ -3865,7 +3997,7 @@ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "requires": { - "browserslist": "^4.8.5", + "browserslist": "4.14.5", "semver": "7.0.0" }, "dependencies": { @@ -3891,11 +4023,11 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "@types/parse-json": "4.0.0", + "import-fresh": "3.2.1", + "parse-json": "5.1.0", + "path-type": "4.0.0", + "yaml": "1.10.0" } }, "create-ecdh": { @@ -3903,8 +4035,8 @@ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "bn.js": "4.11.9", + "elliptic": "6.5.3" }, "dependencies": { "bn.js": { @@ -3919,11 +4051,11 @@ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "cipher-base": "1.0.4", + "inherits": "2.0.4", + "md5.js": "1.3.5", + "ripemd160": "2.0.2", + "sha.js": "2.4.11" } }, "create-hmac": { @@ -3931,12 +4063,12 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "inherits": "2.0.4", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" } }, "cross-spawn": { @@ -3944,9 +4076,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "path-key": "3.1.1", + "shebang-command": "2.0.0", + "which": "2.0.2" } }, "crypto-browserify": { @@ -3954,17 +4086,17 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "browserify-cipher": "1.0.1", + "browserify-sign": "4.2.1", + "create-ecdh": "4.0.4", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", + "inherits": "2.0.4", + "pbkdf2": "3.1.1", + "public-encrypt": "4.0.3", + "randombytes": "2.1.0", + "randomfill": "1.0.4" } }, "crypto-random-string": { @@ -3977,7 +4109,7 @@ "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "requires": { - "postcss": "^7.0.5" + "postcss": "7.0.35" } }, "css-color-names": { @@ -3990,8 +4122,8 @@ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" + "postcss": "7.0.35", + "timsort": "0.3.0" } }, "css-has-pseudo": { @@ -3999,8 +4131,8 @@ "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" + "postcss": "7.0.35", + "postcss-selector-parser": "5.0.0" }, "dependencies": { "cssesc": { @@ -4013,9 +4145,9 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "cssesc": "2.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } } } @@ -4025,19 +4157,19 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" + "camelcase": "5.3.1", + "cssesc": "3.0.0", + "icss-utils": "4.1.1", + "loader-utils": "1.4.0", + "normalize-path": "3.0.0", + "postcss": "7.0.35", + "postcss-modules-extract-imports": "2.0.0", + "postcss-modules-local-by-default": "3.0.3", + "postcss-modules-scope": "2.2.0", + "postcss-modules-values": "3.0.0", + "postcss-value-parser": "4.1.0", + "schema-utils": "2.7.1", + "semver": "6.3.0" }, "dependencies": { "camelcase": { @@ -4050,7 +4182,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -4058,9 +4190,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } } } @@ -4070,7 +4202,7 @@ "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "requires": { - "postcss": "^7.0.5" + "postcss": "7.0.35" } }, "css-select": { @@ -4078,10 +4210,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", + "boolbase": "1.0.0", + "css-what": "2.1.3", "domutils": "1.5.1", - "nth-check": "~1.0.1" + "nth-check": "1.0.2" } }, "css-select-base-adapter": { @@ -4095,7 +4227,7 @@ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", "requires": { "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -4125,10 +4257,10 @@ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" + "cosmiconfig": "5.2.1", + "cssnano-preset-default": "4.0.7", + "is-resolvable": "1.1.0", + "postcss": "7.0.35" }, "dependencies": { "cosmiconfig": { @@ -4136,10 +4268,10 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "import-fresh": "2.0.0", + "is-directory": "0.3.1", + "js-yaml": "3.14.0", + "parse-json": "4.0.0" } }, "import-fresh": { @@ -4147,8 +4279,8 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "caller-path": "2.0.0", + "resolve-from": "3.0.0" } }, "parse-json": { @@ -4156,8 +4288,8 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" } }, "resolve-from": { @@ -4172,36 +4304,36 @@ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" + "css-declaration-sorter": "4.0.1", + "cssnano-util-raw-cache": "4.0.1", + "postcss": "7.0.35", + "postcss-calc": "7.0.5", + "postcss-colormin": "4.0.3", + "postcss-convert-values": "4.0.1", + "postcss-discard-comments": "4.0.2", + "postcss-discard-duplicates": "4.0.2", + "postcss-discard-empty": "4.0.1", + "postcss-discard-overridden": "4.0.1", + "postcss-merge-longhand": "4.0.11", + "postcss-merge-rules": "4.0.3", + "postcss-minify-font-values": "4.0.2", + "postcss-minify-gradients": "4.0.2", + "postcss-minify-params": "4.0.2", + "postcss-minify-selectors": "4.0.2", + "postcss-normalize-charset": "4.0.1", + "postcss-normalize-display-values": "4.0.2", + "postcss-normalize-positions": "4.0.2", + "postcss-normalize-repeat-style": "4.0.2", + "postcss-normalize-string": "4.0.2", + "postcss-normalize-timing-functions": "4.0.2", + "postcss-normalize-unicode": "4.0.1", + "postcss-normalize-url": "4.0.1", + "postcss-normalize-whitespace": "4.0.2", + "postcss-ordered-values": "4.1.2", + "postcss-reduce-initial": "4.0.3", + "postcss-reduce-transforms": "4.0.2", + "postcss-svgo": "4.0.2", + "postcss-unique-selectors": "4.0.1" } }, "cssnano-util-get-arguments": { @@ -4219,7 +4351,7 @@ "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", "requires": { - "postcss": "^7.0.0" + "postcss": "7.0.35" } }, "cssnano-util-same-parent": { @@ -4241,7 +4373,7 @@ "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", "requires": { "mdn-data": "2.0.6", - "source-map": "^0.6.1" + "source-map": "0.6.1" } }, "mdn-data": { @@ -4256,17 +4388,22 @@ } } }, + "csstype": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.3.tgz", + "integrity": "sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag==" + }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { @@ -4284,7 +4421,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "1.0.1" } }, "deep-equal": { @@ -4292,12 +4429,12 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "is-arguments": "1.0.4", + "is-date-object": "1.0.2", + "is-regex": "1.1.1", + "object-is": "1.1.3", + "object-keys": "1.1.1", + "regexp.prototype.flags": "1.3.0" } }, "deep-extend": { @@ -4310,8 +4447,8 @@ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "execa": "1.0.0", + "ip-regex": "2.1.0" } }, "defer-to-connect": { @@ -4324,7 +4461,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "object-keys": "^1.0.12" + "object-keys": "1.1.1" } }, "define-property": { @@ -4332,8 +4469,8 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -4341,7 +4478,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -4349,7 +4486,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -4357,9 +4494,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } } } @@ -4369,28 +4506,23 @@ "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", "requires": { - "globby": "^10.0.1", - "graceful-fs": "^4.2.2", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.1", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0" + "globby": "10.0.2", + "graceful-fs": "4.2.4", + "is-glob": "4.0.1", + "is-path-cwd": "2.2.0", + "is-path-inside": "3.0.2", + "p-map": "3.0.0", + "rimraf": "3.0.2", + "slash": "3.0.0" }, "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "slash": { + "p-map": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "3.1.0" + } } } }, @@ -4410,8 +4542,8 @@ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "inherits": "2.0.4", + "minimalistic-assert": "1.0.1" } }, "destroy": { @@ -4424,7 +4556,7 @@ "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.3.tgz", "integrity": "sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A==", "requires": { - "repeat-string": "^1.5.4" + "repeat-string": "1.6.1" } }, "detect-node": { @@ -4437,8 +4569,8 @@ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" + "address": "1.1.2", + "debug": "2.6.9" }, "dependencies": { "debug": { @@ -4461,9 +4593,9 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "bn.js": "4.11.9", + "miller-rabin": "4.0.1", + "randombytes": "2.1.0" }, "dependencies": { "bn.js": { @@ -4474,26 +4606,11 @@ } }, "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "requires": { - "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } + "path-type": "4.0.0" } }, "dns-equal": { @@ -4506,8 +4623,8 @@ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" + "ip": "1.1.5", + "safe-buffer": "5.1.2" } }, "dns-txt": { @@ -4515,7 +4632,7 @@ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", "requires": { - "buffer-indexof": "^1.0.0" + "buffer-indexof": "1.1.1" } }, "dom-converter": { @@ -4523,7 +4640,7 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "requires": { - "utila": "~0.4" + "utila": "0.4.0" } }, "dom-serializer": { @@ -4531,8 +4648,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "1.3.1", + "entities": "1.1.2" } }, "domain-browser": { @@ -4550,7 +4667,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1" + "domelementtype": "1.3.1" } }, "domutils": { @@ -4558,8 +4675,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.1", + "domelementtype": "1.3.1" } }, "dot-case": { @@ -4567,22 +4684,22 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0" + "no-case": "3.0.3", + "tslib": "1.14.1" } }, "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "requires": { - "is-obj": "^2.0.0" + "is-obj": "2.0.0" } }, "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, "duplexer3": { "version": "0.1.4", @@ -4594,10 +4711,10 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "end-of-stream": "1.4.4", + "inherits": "2.0.4", + "readable-stream": "2.3.7", + "stream-shift": "1.0.1" }, "dependencies": { "readable-stream": { @@ -4605,13 +4722,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -4619,7 +4736,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -4635,22 +4752,22 @@ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" }, "electron-to-chromium": { - "version": "1.3.520", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.520.tgz", - "integrity": "sha512-q6H9E1sXDCjRHP+X06vcP+N0ki8ZvYoRPZfKnDuiRX10WWXxEHzKFVf4O9rBFMpuPtR3M+2KAdJnugJoBBp3Rw==" + "version": "1.3.582", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.582.tgz", + "integrity": "sha512-0nCJ7cSqnkMC+kUuPs0YgklFHraWGl/xHqtZWWtOeVtyi+YqkoAOMGuZQad43DscXCQI/yizcTa3u6B5r+BLww==" }, "elliptic": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "bn.js": "4.11.9", + "brorand": "1.1.0", + "hash.js": "1.1.7", + "hmac-drbg": "1.0.1", + "inherits": "2.0.4", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" }, "dependencies": { "bn.js": { @@ -4680,12 +4797,30 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "requires": { + "safer-buffer": "2.1.2" + } + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "enhanced-resolve": { @@ -4693,9 +4828,9 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "graceful-fs": "4.2.4", + "memory-fs": "0.5.0", + "tapable": "1.1.3" }, "dependencies": { "memory-fs": { @@ -4703,8 +4838,8 @@ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "errno": "0.1.7", + "readable-stream": "2.3.7" } }, "readable-stream": { @@ -4712,13 +4847,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -4726,7 +4861,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -4741,7 +4876,7 @@ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "requires": { - "prr": "~1.0.1" + "prr": "1.0.1" } }, "error-ex": { @@ -4749,25 +4884,26 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" } }, "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-negative-zero": "2.0.0", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" } }, "es-to-primitive": { @@ -4775,15 +4911,15 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "1.2.2", + "is-date-object": "1.0.2", + "is-symbol": "1.0.3" } }, "escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-goat": { "version": "2.1.1", @@ -4805,8 +4941,8 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "esrecurse": "4.3.0", + "estraverse": "4.3.0" } }, "esprima": { @@ -4815,11 +4951,18 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "requires": { - "estraverse": "^4.1.0" + "estraverse": "5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } } }, "estraverse": { @@ -4833,9 +4976,9 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "eta": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/eta/-/eta-1.2.2.tgz", - "integrity": "sha512-8H+zm3HfY2ELz5P4zzR3uJ1LQLnhTAe5gb0vR9ziKZGCLhQrRtqwIyzsOkf7pdBnH7gFPLRAaKZdv2nj9vu9cw==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-1.11.0.tgz", + "integrity": "sha512-lfqIE6qD55WFYT6E0phTBUe0sapHJhfvRDB7jSpXxFGwzDaP69kQqRyF7krBe8I1QzF5nE1yAByiIOLB630x4Q==" }, "etag": { "version": "1.8.1", @@ -4847,13 +4990,13 @@ "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.4.tgz", "integrity": "sha512-npGsebJejyjMRnLdFu+T/97dnigqIU0Ov3IGrZ8ygd1v7RL1vGkEKtvyWZobqUH1AQgKlg0Yqqe2BtMA9/QZLw==", "requires": { - "require-like": ">= 0.1.1" + "require-like": "0.1.2" } }, "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "events": { "version": "3.2.0", @@ -4865,7 +5008,7 @@ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", "requires": { - "original": "^1.0.0" + "original": "1.0.2" } }, "evp_bytestokey": { @@ -4873,8 +5016,8 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "md5.js": "1.3.5", + "safe-buffer": "5.1.2" } }, "execa": { @@ -4882,13 +5025,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.3", + "strip-eof": "1.0.0" }, "dependencies": { "cross-spawn": { @@ -4896,11 +5039,11 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.7.1", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "path-key": { @@ -4918,7 +5061,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -4931,7 +5074,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } } } @@ -4941,13 +5084,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "debug": { @@ -4963,7 +5106,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "ms": { @@ -4978,36 +5121,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { - "accepts": "~1.3.7", + "accepts": "1.3.7", "array-flatten": "1.1.1", "body-parser": "1.19.0", "content-disposition": "0.5.3", - "content-type": "~1.0.4", + "content-type": "1.0.4", "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", + "proxy-addr": "2.0.6", "qs": "6.7.0", - "range-parser": "~1.2.1", + "range-parser": "1.2.1", "safe-buffer": "5.1.2", "send": "0.17.1", "serve-static": "1.14.1", "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", + "statuses": "1.5.0", + "type-is": "1.6.18", "utils-merge": "1.0.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "debug": { @@ -5035,7 +5178,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "external-editor": { @@ -5043,9 +5186,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "chardet": "0.7.0", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" } }, "extglob": { @@ -5053,14 +5196,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -5068,7 +5211,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -5076,7 +5219,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -5084,7 +5227,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -5092,9 +5235,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } } } @@ -5109,12 +5252,12 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.walk": "1.2.4", + "glob-parent": "5.1.1", + "merge2": "1.4.1", + "micromatch": "4.0.2", + "picomatch": "2.2.2" } }, "fast-json-stable-stringify": { @@ -5127,7 +5270,7 @@ "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", "requires": { - "punycode": "^1.3.2" + "punycode": "1.3.2" } }, "fastq": { @@ -5135,7 +5278,7 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", "requires": { - "reusify": "^1.0.4" + "reusify": "1.0.4" } }, "faye-websocket": { @@ -5143,7 +5286,36 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "requires": { - "websocket-driver": ">=0.5.1" + "websocket-driver": "0.6.5" + } + }, + "fbemitter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-2.1.1.tgz", + "integrity": "sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU=", + "requires": { + "fbjs": "0.8.17" + } + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.22" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } } }, "feed": { @@ -5151,7 +5323,7 @@ "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.1.tgz", "integrity": "sha512-l28KKcK1J/u3iq5dRDmmoB2p7dtBfACC2NqJh4dI2kFptxH0asfjmOfcxqh5Sv8suAlVa73gZJ4REY5RrafVvg==", "requires": { - "xml-js": "^1.6.11" + "xml-js": "1.6.11" } }, "figgy-pudding": { @@ -5164,18 +5336,36 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "requires": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "1.0.5" } }, "file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", + "integrity": "sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==", "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" + "loader-utils": "2.0.0", + "schema-utils": "3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "requires": { + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" + } + } } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "filesize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", @@ -5186,7 +5376,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { - "to-regex-range": "^5.0.1" + "to-regex-range": "5.0.1" } }, "finalhandler": { @@ -5195,12 +5385,12 @@ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.3", + "statuses": "1.5.0", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -5223,9 +5413,9 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "commondir": "1.0.1", + "make-dir": "2.1.0", + "pkg-dir": "3.0.0" } }, "find-up": { @@ -5233,7 +5423,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "flatten": { @@ -5246,8 +5436,8 @@ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "inherits": "2.0.4", + "readable-stream": "2.3.7" }, "dependencies": { "readable-stream": { @@ -5255,13 +5445,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -5269,15 +5459,24 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } }, + "flux": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/flux/-/flux-3.1.3.tgz", + "integrity": "sha1-0jvtUVp5oi2TOrU6tK2hnQWy8Io=", + "requires": { + "fbemitter": "2.1.1", + "fbjs": "0.8.17" + } + }, "follow-redirects": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz", - "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==" + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" }, "for-in": { "version": "1.0.2", @@ -5289,7 +5488,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "fork-ts-checker-webpack-plugin": { @@ -5297,14 +5496,14 @@ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "babel-code-frame": "6.26.0", + "chalk": "2.4.2", + "chokidar": "3.4.3", + "micromatch": "3.1.10", + "minimatch": "3.0.4", + "semver": "5.7.1", + "tapable": "1.1.3", + "worker-rpc": "0.1.1" }, "dependencies": { "braces": { @@ -5312,16 +5511,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -5329,7 +5528,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -5339,9 +5538,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "extend-shallow": { @@ -5349,8 +5548,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -5358,7 +5557,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -5368,10 +5567,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -5379,7 +5578,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -5389,7 +5588,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -5397,7 +5596,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -5407,19 +5606,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "semver": { @@ -5432,8 +5631,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } } } @@ -5448,7 +5647,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "^0.2.2" + "map-cache": "0.2.2" } }, "fresh": { @@ -5461,8 +5660,8 @@ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "inherits": "2.0.4", + "readable-stream": "2.3.7" }, "dependencies": { "readable-stream": { @@ -5470,13 +5669,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -5484,7 +5683,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -5494,9 +5693,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "4.2.4", + "jsonfile": "4.0.0", + "universalify": "0.1.2" } }, "fs-minipass": { @@ -5504,7 +5703,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "requires": { - "minipass": "^3.0.0" + "minipass": "3.1.3" } }, "fs-write-stream-atomic": { @@ -5512,10 +5711,10 @@ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "graceful-fs": "4.2.4", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.7" }, "dependencies": { "readable-stream": { @@ -5523,13 +5722,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -5537,7 +5736,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -5578,7 +5777,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } }, "get-value": { @@ -5591,7 +5790,7 @@ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", "requires": { - "emoji-regex": ">=6.0.0 <=6.1.1" + "emoji-regex": "6.1.1" }, "dependencies": { "emoji-regex": { @@ -5606,12 +5805,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-parent": { @@ -5619,7 +5818,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "requires": { - "is-glob": "^4.0.1" + "is-glob": "4.0.1" } }, "glob-to-regexp": { @@ -5632,7 +5831,7 @@ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", "requires": { - "ini": "^1.3.5" + "ini": "1.3.5" } }, "global-modules": { @@ -5640,7 +5839,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "requires": { - "global-prefix": "^3.0.0" + "global-prefix": "3.0.0" } }, "global-prefix": { @@ -5648,9 +5847,9 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "ini": "1.3.5", + "kind-of": "6.0.3", + "which": "1.3.1" }, "dependencies": { "which": { @@ -5658,7 +5857,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } } } @@ -5673,39 +5872,14 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - } + "@types/glob": "7.1.3", + "array-union": "2.1.0", + "dir-glob": "3.0.1", + "fast-glob": "3.2.4", + "glob": "7.1.6", + "ignore": "5.1.8", + "merge2": "1.4.1", + "slash": "3.0.0" } }, "good-listener": { @@ -5714,7 +5888,7 @@ "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", "optional": true, "requires": { - "delegate": "^3.1.2" + "delegate": "3.2.0" } }, "got": { @@ -5722,17 +5896,17 @@ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "@sindresorhus/is": "0.14.0", + "@szmarczak/http-timer": "1.1.2", + "cacheable-request": "6.1.0", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "4.1.0", + "lowercase-keys": "1.0.1", + "mimic-response": "1.0.1", + "p-cancelable": "1.1.0", + "to-readable-stream": "1.0.0", + "url-parse-lax": "3.0.0" } }, "graceful-fs": { @@ -5745,10 +5919,10 @@ "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", "requires": { - "js-yaml": "^3.11.0", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" + "js-yaml": "3.14.0", + "kind-of": "6.0.3", + "section-matter": "1.0.0", + "strip-bom-string": "1.0.0" } }, "gzip-size": { @@ -5756,8 +5930,8 @@ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" + "duplexer": "0.1.2", + "pify": "4.0.1" } }, "handle-thing": { @@ -5770,7 +5944,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "function-bind": "^1.1.1" + "function-bind": "1.1.1" } }, "has-ansi": { @@ -5778,7 +5952,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" }, "dependencies": { "ansi-regex": { @@ -5803,9 +5977,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" } }, "has-values": { @@ -5813,8 +5987,8 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -5822,7 +5996,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -5830,7 +6004,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -5840,7 +6014,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -5855,9 +6029,9 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "inherits": "2.0.4", + "readable-stream": "3.6.0", + "safe-buffer": "5.2.1" }, "dependencies": { "safe-buffer": { @@ -5872,8 +6046,8 @@ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "inherits": "2.0.4", + "minimalistic-assert": "1.0.1" } }, "hast-to-hyperscript": { @@ -5881,13 +6055,13 @@ "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.0.tgz", "integrity": "sha512-NJvMYU3GlMLs7hN3CRbsNlMzusVNkYBogVWDGybsuuVQ336gFLiD+q9qtFZT2meSHzln3pNISZWTASWothMSMg==", "requires": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" + "@types/unist": "2.0.3", + "comma-separated-tokens": "1.0.8", + "property-information": "5.6.0", + "space-separated-tokens": "1.1.5", + "style-to-object": "0.3.0", + "unist-util-is": "4.0.2", + "web-namespaces": "1.1.4" } }, "hast-util-from-parse5": { @@ -5895,12 +6069,12 @@ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.0.tgz", "integrity": "sha512-3ZYnfKenbbkhhNdmOQqgH10vnvPivTdsOJCri+APn0Kty+nRkDHArnaX9Hiaf8H+Ig+vkNptL+SRY/6RwWJk1Q==", "requires": { - "@types/parse5": "^5.0.0", - "ccount": "^1.0.0", - "hastscript": "^5.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0" + "@types/parse5": "5.0.3", + "ccount": "1.0.5", + "hastscript": "5.1.2", + "property-information": "5.6.0", + "vfile": "4.2.0", + "web-namespaces": "1.1.4" } }, "hast-util-parse-selector": { @@ -5909,20 +6083,20 @@ "integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA==" }, "hast-util-raw": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.0.tgz", - "integrity": "sha512-IQo6tv3bMMKxk53DljswliucCJOQxaZFCuKEJ7X80249dmJ1nA9LtOnnylsLlqTG98NjQ+iGcoLAYo9q5FRhRg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", "requires": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" + "@types/hast": "2.3.1", + "hast-util-from-parse5": "6.0.0", + "hast-util-to-parse5": "6.0.0", + "html-void-elements": "1.0.5", + "parse5": "6.0.1", + "unist-util-position": "3.1.0", + "vfile": "4.2.0", + "web-namespaces": "1.1.4", + "xtend": "4.0.2", + "zwitch": "1.0.5" } }, "hast-util-to-parse5": { @@ -5930,11 +6104,11 @@ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", "requires": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" + "hast-to-hyperscript": "9.0.0", + "property-information": "5.6.0", + "web-namespaces": "1.1.4", + "xtend": "4.0.2", + "zwitch": "1.0.5" } }, "hastscript": { @@ -5942,10 +6116,10 @@ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", "requires": { - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" + "comma-separated-tokens": "1.0.8", + "hast-util-parse-selector": "2.2.4", + "property-information": "5.6.0", + "space-separated-tokens": "1.1.5" } }, "he": { @@ -5963,12 +6137,12 @@ "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" + "@babel/runtime": "7.12.1", + "loose-envify": "1.4.0", + "resolve-pathname": "3.0.0", + "tiny-invariant": "1.1.0", + "tiny-warning": "1.0.3", + "value-equal": "1.0.1" } }, "hmac-drbg": { @@ -5976,9 +6150,9 @@ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "hash.js": "1.1.7", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" } }, "hoist-non-react-statics": { @@ -5986,7 +6160,7 @@ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "requires": { - "react-is": "^16.7.0" + "react-is": "16.13.1" } }, "hoopy": { @@ -5999,10 +6173,10 @@ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "inherits": "2.0.4", + "obuf": "1.1.2", + "readable-stream": "2.3.7", + "wbuf": "1.7.3" }, "dependencies": { "readable-stream": { @@ -6010,13 +6184,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -6024,7 +6198,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -6054,13 +6228,13 @@ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" + "camel-case": "4.1.1", + "clean-css": "4.2.3", + "commander": "4.1.1", + "he": "1.2.0", + "param-case": "3.0.3", + "relateurl": "0.2.7", + "terser": "4.8.0" } }, "html-tags": { @@ -6074,18 +6248,18 @@ "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" }, "html-webpack-plugin": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz", - "integrity": "sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz", + "integrity": "sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==", "requires": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.15", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", + "@types/html-minifier-terser": "5.1.1", + "@types/tapable": "1.0.6", + "@types/webpack": "4.41.22", + "html-minifier-terser": "5.1.1", + "loader-utils": "1.4.0", + "lodash": "4.17.20", + "pretty-error": "2.1.2", + "tapable": "1.1.3", "util.promisify": "1.0.0" }, "dependencies": { @@ -6094,7 +6268,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -6102,9 +6276,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } }, "util.promisify": { @@ -6112,8 +6286,8 @@ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "1.1.3", + "object.getownpropertydescriptors": "2.1.0" } } } @@ -6123,12 +6297,12 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "1.3.1", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.2", + "inherits": "2.0.4", + "readable-stream": "3.6.0" } }, "http-cache-semantics": { @@ -6146,10 +6320,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", + "statuses": "1.5.0", "toidentifier": "1.0.0" }, "dependencies": { @@ -6165,9 +6339,9 @@ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "eventemitter3": "4.0.7", + "follow-redirects": "1.13.0", + "requires-port": "1.0.0" } }, "http-proxy-middleware": { @@ -6175,10 +6349,10 @@ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "http-proxy": "1.18.1", + "is-glob": "4.0.1", + "lodash": "4.17.20", + "micromatch": "3.1.10" }, "dependencies": { "braces": { @@ -6186,16 +6360,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -6203,7 +6377,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -6213,8 +6387,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -6222,7 +6396,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -6232,10 +6406,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -6243,7 +6417,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -6253,7 +6427,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -6261,7 +6435,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -6271,19 +6445,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "to-regex-range": { @@ -6291,8 +6465,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } } } @@ -6312,7 +6486,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "icss-utils": { @@ -6320,7 +6494,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", "requires": { - "postcss": "^7.0.14" + "postcss": "7.0.35" } }, "ieee754": { @@ -6334,9 +6508,9 @@ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" }, "immer": { "version": "1.10.0", @@ -6348,7 +6522,7 @@ "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", "requires": { - "import-from": "^2.1.0" + "import-from": "2.1.0" } }, "import-fresh": { @@ -6356,8 +6530,8 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "parent-module": "1.0.1", + "resolve-from": "4.0.0" } }, "import-from": { @@ -6365,7 +6539,7 @@ "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "3.0.0" }, "dependencies": { "resolve-from": { @@ -6385,8 +6559,8 @@ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "3.0.0", + "resolve-cwd": "2.0.0" } }, "imurmurhash": { @@ -6410,17 +6584,17 @@ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "infima": { - "version": "0.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.12.tgz", - "integrity": "sha512-in5n36oE2sdiB/1rzuzdmKyuNRMVUO9P+qUidUG8leHeDU+WMQ7oTP7MXSqtAAxduiPb7HHi0/ptQLLUr/ge4w==" + "version": "0.2.0-alpha.13", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.13.tgz", + "integrity": "sha512-BxCZ1pMcUF0PcL4WV07l/lvaeBBdUUw7uVqNyyeGAutzDpkDyFOl5gOv9wFAJKLo5yerPNFXxFPgDitNjctqIA==" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -6443,19 +6617,19 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", + "ansi-escapes": "4.3.1", + "chalk": "4.1.0", + "cli-cursor": "3.1.0", + "cli-width": "3.0.0", + "external-editor": "3.1.0", + "figures": "3.2.0", + "lodash": "4.17.20", "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "run-async": "2.4.1", + "rxjs": "6.6.3", + "string-width": "4.2.0", + "strip-ansi": "6.0.0", + "through": "2.3.8" }, "dependencies": { "ansi-regex": { @@ -6464,12 +6638,11 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "color-convert": "2.0.1" } }, "chalk": { @@ -6477,8 +6650,8 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" } }, "color-convert": { @@ -6486,7 +6659,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.4" } }, "color-name": { @@ -6504,15 +6677,15 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "5.0.0" } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^4.0.0" + "has-flag": "4.0.0" } } } @@ -6522,8 +6695,8 @@ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" + "default-gateway": "4.2.0", + "ipaddr.js": "1.9.1" } }, "interpret": { @@ -6531,14 +6704,6 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -6564,7 +6729,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -6572,7 +6737,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -6587,8 +6752,8 @@ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "is-alphabetical": "1.0.4", + "is-decimal": "1.0.4" } }, "is-arguments": { @@ -6606,7 +6771,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "requires": { - "binary-extensions": "^2.0.0" + "binary-extensions": "2.1.0" } }, "is-buffer": { @@ -6615,16 +6780,16 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "requires": { - "ci-info": "^2.0.0" + "ci-info": "2.0.0" }, "dependencies": { "ci-info": { @@ -6639,12 +6804,12 @@ "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" + "css-color-names": "0.0.4", + "hex-color-regex": "1.1.0", + "hsl-regex": "1.0.0", + "hsla-regex": "1.0.0", + "rgb-regex": "1.0.1", + "rgba-regex": "1.0.0" } }, "is-data-descriptor": { @@ -6652,7 +6817,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -6660,7 +6825,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -6680,9 +6845,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { @@ -6722,7 +6887,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "2.1.1" } }, "is-hexadecimal": { @@ -6735,10 +6900,15 @@ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" + "global-dirs": "2.0.1", + "is-path-inside": "3.0.2" } }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" + }, "is-npm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", @@ -6764,7 +6934,7 @@ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "requires": { - "is-path-inside": "^2.1.0" + "is-path-inside": "2.1.0" }, "dependencies": { "is-path-inside": { @@ -6772,7 +6942,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "requires": { - "path-is-inside": "^1.0.2" + "path-is-inside": "1.0.2" } } } @@ -6792,7 +6962,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "is-regex": { @@ -6800,7 +6970,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "1.0.1" } }, "is-regexp": { @@ -6828,7 +6998,7 @@ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", "requires": { - "html-comment-regex": "^1.1.0" + "html-comment-regex": "1.1.2" } }, "is-symbol": { @@ -6836,7 +7006,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "1.0.1" } }, "is-typedarray": { @@ -6864,7 +7034,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "requires": { - "is-docker": "^2.0.0" + "is-docker": "2.1.1" } }, "is-yarn-global": { @@ -6887,13 +7057,23 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "jest-worker": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", - "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "node-fetch": "1.7.3", + "whatwg-fetch": "3.4.1" + } + }, + "jest-worker": { + "version": "26.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.5.0.tgz", + "integrity": "sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug==", + "requires": { + "@types/node": "14.11.10", + "merge-stream": "2.0.0", + "supports-color": "7.2.0" }, "dependencies": { "has-flag": { @@ -6902,11 +7082,11 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^4.0.0" + "has-flag": "4.0.0" } } } @@ -6921,8 +7101,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" } }, "jsesc": { @@ -6940,6 +7120,11 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -6955,7 +7140,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "requires": { - "minimist": "^1.2.5" + "minimist": "1.2.5" } }, "jsonfile": { @@ -6963,7 +7148,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.2.4" } }, "keyv": { @@ -6989,8 +7174,8 @@ "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" + "lodash": "4.17.20", + "webpack-sources": "1.4.3" } }, "latest-version": { @@ -6998,7 +7183,7 @@ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", "requires": { - "package-json": "^6.3.0" + "package-json": "6.5.0" } }, "lazy-cache": { @@ -7011,14 +7196,6 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "requires": { - "leven": "^3.1.0" - } - }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -7034,9 +7211,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "2.1.3" } }, "locate-path": { @@ -7044,14 +7221,14 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -7078,6 +7255,11 @@ "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=" }, + "lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" + }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -7098,6 +7280,11 @@ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" }, + "lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=" + }, "lodash.foreach": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", @@ -7183,8 +7370,8 @@ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.2.0" } }, "lodash.templatesettings": { @@ -7192,7 +7379,7 @@ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "requires": { - "lodash._reinterpolate": "^3.0.0" + "lodash._reinterpolate": "3.0.0" } }, "lodash.toarray": { @@ -7206,16 +7393,16 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, "loglevel": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", - "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", + "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==" }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "js-tokens": "4.0.0" } }, "lower-case": { @@ -7223,7 +7410,7 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", "requires": { - "tslib": "^1.10.0" + "tslib": "1.14.1" } }, "lowercase-keys": { @@ -7232,11 +7419,11 @@ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "yallist": "^3.0.2" + "yallist": "4.0.0" } }, "make-dir": { @@ -7244,8 +7431,8 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "pify": "4.0.1", + "semver": "5.7.1" }, "dependencies": { "semver": { @@ -7265,7 +7452,7 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "object-visit": "^1.0.0" + "object-visit": "1.0.1" } }, "markdown-escapes": { @@ -7278,9 +7465,9 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "hash-base": "3.1.0", + "inherits": "2.0.4", + "safe-buffer": "5.1.2" } }, "mdast-squeeze-paragraphs": { @@ -7288,7 +7475,7 @@ "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", "requires": { - "unist-util-remove": "^2.0.0" + "unist-util-remove": "2.0.0" } }, "mdast-util-definitions": { @@ -7296,25 +7483,22 @@ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz", "integrity": "sha512-BAv2iUm/e6IK/b2/t+Fx69EL/AGcq/IG2S+HxHjDJGfLJtd6i9SZUS76aC9cig+IEucsqxKTR0ot3m933R3iuA==", "requires": { - "unist-util-visit": "^2.0.0" + "unist-util-visit": "2.0.3" } }, "mdast-util-to-hast": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-9.1.0.tgz", - "integrity": "sha512-Akl2Vi9y9cSdr19/Dfu58PVwifPXuFt1IrHe7l+Crme1KvgUT+5z+cHLVcQVGCiNTZZcdqjnuv9vPkGsqWytWA==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-9.1.1.tgz", + "integrity": "sha512-vpMWKFKM2mnle+YbNgDXxx95vv0CoLU0v/l3F5oFAG5DV7qwkZVWA206LsAdOnEVyf5vQcLnb3cWJywu7mUxsQ==", "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.3", - "collapse-white-space": "^1.0.0", - "detab": "^2.0.0", - "mdast-util-definitions": "^3.0.0", - "mdurl": "^1.0.0", - "trim-lines": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" + "@types/mdast": "3.0.3", + "@types/unist": "2.0.3", + "mdast-util-definitions": "3.0.1", + "mdurl": "1.0.1", + "unist-builder": "2.0.3", + "unist-util-generated": "1.1.5", + "unist-util-position": "3.1.0", + "unist-util-visit": "2.0.3" } }, "mdast-util-to-string": { @@ -7342,8 +7526,8 @@ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "errno": "0.1.7", + "readable-stream": "2.3.7" }, "dependencies": { "readable-stream": { @@ -7351,13 +7535,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -7365,7 +7549,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -7375,9 +7559,9 @@ "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", "requires": { - "arr-union": "^3.1.0", - "clone-deep": "^0.2.4", - "kind-of": "^3.0.2" + "arr-union": "3.1.0", + "clone-deep": "0.2.4", + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -7385,7 +7569,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -7420,8 +7604,8 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "braces": "3.0.2", + "picomatch": "2.2.2" } }, "miller-rabin": { @@ -7429,8 +7613,8 @@ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "bn.js": "4.11.9", + "brorand": "1.1.0" }, "dependencies": { "bn.js": { @@ -7473,8 +7657,8 @@ "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", "requires": { - "@babel/runtime": "^7.5.5", - "tiny-warning": "^1.0.3" + "@babel/runtime": "7.12.1", + "tiny-warning": "1.0.3" } }, "mini-css-extract-plugin": { @@ -7482,10 +7666,10 @@ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", "requires": { - "loader-utils": "^1.1.0", + "loader-utils": "1.4.0", "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" + "schema-utils": "1.0.0", + "webpack-sources": "1.4.3" }, "dependencies": { "json5": { @@ -7493,7 +7677,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -7501,9 +7685,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } }, "schema-utils": { @@ -7511,9 +7695,9 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" } } } @@ -7533,7 +7717,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -7546,14 +7730,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "yallist": "4.0.0" } }, "minipass-collect": { @@ -7561,7 +7738,7 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "requires": { - "minipass": "^3.0.0" + "minipass": "3.1.3" } }, "minipass-flush": { @@ -7569,7 +7746,7 @@ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "requires": { - "minipass": "^3.0.0" + "minipass": "3.1.3" } }, "minipass-pipeline": { @@ -7577,7 +7754,16 @@ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "requires": { - "minipass": "^3.0.0" + "minipass": "3.1.3" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "3.1.3", + "yallist": "4.0.0" } }, "mississippi": { @@ -7585,16 +7771,16 @@ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "concat-stream": "1.6.2", + "duplexify": "3.7.1", + "end-of-stream": "1.4.4", + "flush-write-stream": "1.1.1", + "from2": "2.3.0", + "parallel-transform": "1.2.0", + "pump": "3.0.0", + "pumpify": "1.5.1", + "stream-each": "1.2.3", + "through2": "2.0.5" } }, "mixin-deep": { @@ -7602,8 +7788,8 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -7611,7 +7797,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -7621,8 +7807,8 @@ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" + "for-in": "0.1.8", + "is-extendable": "0.1.1" }, "dependencies": { "for-in": { @@ -7637,7 +7823,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "^1.2.5" + "minimist": "1.2.5" } }, "move-concurrently": { @@ -7645,12 +7831,22 @@ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.5", + "rimraf": "2.7.1", + "run-queue": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "7.1.6" + } + } } }, "ms": { @@ -7663,8 +7859,8 @@ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" + "dns-packet": "1.3.1", + "thunky": "1.1.0" } }, "multicast-dns-service-types": { @@ -7677,22 +7873,28 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.3", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -7700,8 +7902,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" } }, "is-extendable": { @@ -7709,7 +7911,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -7734,8 +7936,8 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", "requires": { - "lower-case": "^2.0.1", - "tslib": "^1.10.0" + "lower-case": "2.0.1", + "tslib": "1.14.1" } }, "node-emoji": { @@ -7743,42 +7945,51 @@ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", "requires": { - "lodash.toarray": "^4.4.0" + "lodash.toarray": "4.4.0" + } + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.13", + "is-stream": "1.1.0" } }, "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", + "assert": "1.5.0", + "browserify-zlib": "0.2.0", + "buffer": "4.9.2", + "console-browserify": "1.2.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "3.2.0", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", + "process": "0.11.10", + "punycode": "1.3.2", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.7", + "stream-browserify": "2.0.2", + "stream-http": "2.8.3", + "string_decoder": "1.3.0", + "timers-browserify": "2.0.11", "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" + "url": "0.11.0", + "util": "0.11.1", + "vm-browserify": "1.1.2" }, "dependencies": { "readable-stream": { @@ -7786,13 +7997,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" }, "dependencies": { "string_decoder": { @@ -7800,7 +8011,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -7808,9 +8019,9 @@ } }, "node-releases": { - "version": "1.1.60", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", - "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==" + "version": "1.1.63", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.63.tgz", + "integrity": "sha512-ukW3iCfQaoxJkSPN+iK7KznTeqDGVJatAEuXsJERYHa9tn/KaT5lBdIyxQjLEVTzSkyjJEuQ17/vaEjrOauDkg==" }, "normalize-path": { "version": "3.0.0", @@ -7827,10 +8038,10 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" } }, "npm-run-path": { @@ -7838,7 +8049,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "^2.0.0" + "path-key": "2.0.1" }, "dependencies": { "path-key": { @@ -7858,7 +8069,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { - "boolbase": "~1.0.0" + "boolbase": "1.0.0" } }, "null-loader": { @@ -7866,8 +8077,8 @@ "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^1.0.0" + "loader-utils": "1.4.0", + "schema-utils": "1.0.0" }, "dependencies": { "json5": { @@ -7875,7 +8086,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -7883,9 +8094,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } }, "schema-utils": { @@ -7893,9 +8104,9 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" } } } @@ -7915,9 +8126,9 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { "define-property": { @@ -7925,7 +8136,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "kind-of": { @@ -7933,7 +8144,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -7944,12 +8155,12 @@ "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "define-properties": "1.1.3", + "es-abstract": "1.18.0-next.1" } }, "object-keys": { @@ -7962,18 +8173,18 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "isobject": "^3.0.0" + "isobject": "3.0.1" } }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "define-properties": "1.1.3", + "es-abstract": "1.18.0-next.1", + "has-symbols": "1.0.1", + "object-keys": "1.1.1" } }, "object.getownpropertydescriptors": { @@ -7981,8 +8192,28 @@ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + } } }, "object.pick": { @@ -7990,7 +8221,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "object.values": { @@ -7998,10 +8229,30 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "function-bind": "1.1.1", + "has": "1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + } } }, "obuf": { @@ -8027,24 +8278,24 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "onetime": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.1.tgz", - "integrity": "sha512-ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { - "mimic-fn": "^2.1.0" + "mimic-fn": "2.1.0" } }, "open": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.1.0.tgz", - "integrity": "sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", + "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "is-docker": "2.1.1", + "is-wsl": "2.2.0" } }, "opener": { @@ -8057,7 +8308,7 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "requires": { - "is-wsl": "^1.1.0" + "is-wsl": "1.1.0" }, "dependencies": { "is-wsl": { @@ -8068,12 +8319,12 @@ } }, "optimize-css-assets-webpack-plugin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", - "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", "requires": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" + "cssnano": "4.1.10", + "last-call-webpack-plugin": "3.0.0" } }, "original": { @@ -8081,7 +8332,7 @@ "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", "requires": { - "url-parse": "^1.4.3" + "url-parse": "1.4.7" } }, "os-browserify": { @@ -8109,7 +8360,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -8117,15 +8368,15 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.3.0" } }, "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "requires": { - "aggregate-error": "^3.0.0" + "aggregate-error": "3.1.0" } }, "p-retry": { @@ -8133,7 +8384,7 @@ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", "requires": { - "retry": "^0.12.0" + "retry": "0.12.0" } }, "p-try": { @@ -8146,10 +8397,10 @@ "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" + "got": "9.6.0", + "registry-auth-token": "4.2.0", + "registry-url": "5.1.0", + "semver": "6.3.0" } }, "pako": { @@ -8162,9 +8413,9 @@ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "cyclist": "1.0.1", + "inherits": "2.0.4", + "readable-stream": "2.3.7" }, "dependencies": { "readable-stream": { @@ -8172,13 +8423,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -8186,7 +8437,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -8196,8 +8447,8 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", "requires": { - "dot-case": "^3.0.3", - "tslib": "^1.10.0" + "dot-case": "3.0.3", + "tslib": "1.14.1" } }, "parent-module": { @@ -8205,20 +8456,19 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "requires": { - "callsites": "^3.0.0" + "callsites": "3.1.0" } }, "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "asn1.js": "5.4.1", + "browserify-aes": "1.2.0", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.1.1", + "safe-buffer": "5.1.2" } }, "parse-entities": { @@ -8226,23 +8476,23 @@ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "character-entities": "1.2.4", + "character-entities-legacy": "1.1.4", + "character-reference-invalid": "1.1.4", + "is-alphanumerical": "1.0.4", + "is-decimal": "1.0.4", + "is-hexadecimal": "1.0.4" } }, "parse-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz", - "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" + "@babel/code-frame": "7.10.4", + "error-ex": "1.3.2", + "json-parse-even-better-errors": "2.3.1", + "lines-and-columns": "1.1.6" } }, "parse-numeric-range": { @@ -8265,8 +8515,8 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0" + "no-case": "3.0.3", + "tslib": "1.14.1" } }, "pascalcase": { @@ -8324,11 +8574,11 @@ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" } }, "picomatch": { @@ -8351,7 +8601,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pkg-dir": { @@ -8359,7 +8609,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "requires": { - "find-up": "^3.0.0" + "find-up": "3.0.0" } }, "pkg-up": { @@ -8367,7 +8617,7 @@ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", "requires": { - "find-up": "^3.0.0" + "find-up": "3.0.0" } }, "pnp-webpack-plugin": { @@ -8375,7 +8625,7 @@ "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", "requires": { - "ts-pnp": "^1.1.6" + "ts-pnp": "1.2.0" } }, "portfinder": { @@ -8383,9 +8633,9 @@ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" + "async": "2.6.3", + "debug": "3.2.6", + "mkdirp": "0.5.5" }, "dependencies": { "debug": { @@ -8393,7 +8643,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } } } @@ -8404,13 +8654,13 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "chalk": "2.4.2", + "source-map": "0.6.1", + "supports-color": "6.1.0" }, "dependencies": { "chalk": { @@ -8418,9 +8668,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" }, "dependencies": { "supports-color": { @@ -8428,7 +8678,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -8443,7 +8693,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -8453,18 +8703,18 @@ "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" + "postcss": "7.0.35", + "postcss-selector-parser": "6.0.4" } }, "postcss-calc": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" + "postcss": "7.0.35", + "postcss-selector-parser": "6.0.4", + "postcss-value-parser": "4.1.0" } }, "postcss-color-functional-notation": { @@ -8472,8 +8722,8 @@ "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-color-gray": { @@ -8481,9 +8731,9 @@ "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" + "@csstools/convert-colors": "1.4.0", + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-color-hex-alpha": { @@ -8491,8 +8741,8 @@ "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "requires": { - "postcss": "^7.0.14", - "postcss-values-parser": "^2.0.1" + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-color-mod-function": { @@ -8500,9 +8750,9 @@ "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" + "@csstools/convert-colors": "1.4.0", + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-color-rebeccapurple": { @@ -8510,8 +8760,8 @@ "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-colormin": { @@ -8519,11 +8769,11 @@ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "browserslist": "4.14.5", + "color": "3.1.3", + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -8538,8 +8788,8 @@ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -8554,7 +8804,7 @@ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "requires": { - "postcss": "^7.0.14" + "postcss": "7.0.35" } }, "postcss-custom-properties": { @@ -8562,8 +8812,8 @@ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "requires": { - "postcss": "^7.0.17", - "postcss-values-parser": "^2.0.1" + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-custom-selectors": { @@ -8571,8 +8821,8 @@ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" + "postcss": "7.0.35", + "postcss-selector-parser": "5.0.0" }, "dependencies": { "cssesc": { @@ -8585,9 +8835,9 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "cssesc": "2.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } } } @@ -8597,8 +8847,8 @@ "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" + "postcss": "7.0.35", + "postcss-selector-parser": "5.0.0" }, "dependencies": { "cssesc": { @@ -8611,9 +8861,9 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "cssesc": "2.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } } } @@ -8623,7 +8873,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", "requires": { - "postcss": "^7.0.0" + "postcss": "7.0.35" } }, "postcss-discard-duplicates": { @@ -8631,7 +8881,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", "requires": { - "postcss": "^7.0.0" + "postcss": "7.0.35" } }, "postcss-discard-empty": { @@ -8639,7 +8889,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", "requires": { - "postcss": "^7.0.0" + "postcss": "7.0.35" } }, "postcss-discard-overridden": { @@ -8647,7 +8897,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", "requires": { - "postcss": "^7.0.0" + "postcss": "7.0.35" } }, "postcss-double-position-gradients": { @@ -8655,8 +8905,8 @@ "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "requires": { - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-env-function": { @@ -8664,8 +8914,8 @@ "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-focus-visible": { @@ -8673,7 +8923,7 @@ "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-focus-within": { @@ -8681,7 +8931,7 @@ "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-font-variant": { @@ -8689,7 +8939,7 @@ "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-gap-properties": { @@ -8697,7 +8947,7 @@ "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-image-set-function": { @@ -8705,8 +8955,8 @@ "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-initial": { @@ -8714,8 +8964,8 @@ "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "requires": { - "lodash.template": "^4.5.0", - "postcss": "^7.0.2" + "lodash.template": "4.5.0", + "postcss": "7.0.35" } }, "postcss-lab-function": { @@ -8723,18 +8973,18 @@ "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" + "@csstools/convert-colors": "1.4.0", + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" + "cosmiconfig": "5.2.1", + "import-cwd": "2.1.0" }, "dependencies": { "cosmiconfig": { @@ -8742,10 +8992,10 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "import-fresh": "2.0.0", + "is-directory": "0.3.1", + "js-yaml": "3.14.0", + "parse-json": "4.0.0" } }, "import-fresh": { @@ -8753,8 +9003,8 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "caller-path": "2.0.0", + "resolve-from": "3.0.0" } }, "parse-json": { @@ -8762,8 +9012,8 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" } }, "resolve-from": { @@ -8778,10 +9028,10 @@ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" + "loader-utils": "1.4.0", + "postcss": "7.0.35", + "postcss-load-config": "2.1.2", + "schema-utils": "1.0.0" }, "dependencies": { "json5": { @@ -8789,7 +9039,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -8797,9 +9047,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" } }, "schema-utils": { @@ -8807,9 +9057,9 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" } } } @@ -8819,7 +9069,7 @@ "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-media-minmax": { @@ -8827,7 +9077,7 @@ "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-merge-longhand": { @@ -8836,9 +9086,9 @@ "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", "requires": { "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1", + "stylehacks": "4.0.3" }, "dependencies": { "postcss-value-parser": { @@ -8853,12 +9103,12 @@ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" + "browserslist": "4.14.5", + "caniuse-api": "3.0.0", + "cssnano-util-same-parent": "4.0.1", + "postcss": "7.0.35", + "postcss-selector-parser": "3.1.2", + "vendors": "1.0.4" }, "dependencies": { "postcss-selector-parser": { @@ -8866,9 +9116,9 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "dot-prop": "5.3.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } } } @@ -8878,8 +9128,8 @@ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -8894,10 +9144,10 @@ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "cssnano-util-get-arguments": "4.0.0", + "is-color-stop": "1.1.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -8912,12 +9162,12 @@ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" + "alphanum-sort": "1.0.2", + "browserslist": "4.14.5", + "cssnano-util-get-arguments": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1", + "uniqs": "2.0.0" }, "dependencies": { "postcss-value-parser": { @@ -8932,10 +9182,10 @@ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" + "alphanum-sort": "1.0.2", + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-selector-parser": "3.1.2" }, "dependencies": { "postcss-selector-parser": { @@ -8943,9 +9193,9 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "dot-prop": "5.3.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } } } @@ -8955,7 +9205,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", "requires": { - "postcss": "^7.0.5" + "postcss": "7.0.35" } }, "postcss-modules-local-by-default": { @@ -8963,10 +9213,10 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "icss-utils": "4.1.1", + "postcss": "7.0.35", + "postcss-selector-parser": "6.0.4", + "postcss-value-parser": "4.1.0" } }, "postcss-modules-scope": { @@ -8974,8 +9224,8 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" + "postcss": "7.0.35", + "postcss-selector-parser": "6.0.4" } }, "postcss-modules-values": { @@ -8983,8 +9233,8 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "icss-utils": "4.1.1", + "postcss": "7.0.35" } }, "postcss-nesting": { @@ -8992,7 +9242,7 @@ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-normalize-charset": { @@ -9000,7 +9250,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", "requires": { - "postcss": "^7.0.0" + "postcss": "7.0.35" } }, "postcss-normalize-display-values": { @@ -9008,9 +9258,9 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "cssnano-util-get-match": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9025,10 +9275,10 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "cssnano-util-get-arguments": "4.0.0", + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9043,10 +9293,10 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "cssnano-util-get-arguments": "4.0.0", + "cssnano-util-get-match": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9061,9 +9311,9 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9078,9 +9328,9 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "cssnano-util-get-match": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9095,9 +9345,9 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "browserslist": "4.14.5", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9112,10 +9362,10 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "is-absolute-url": "2.1.0", + "normalize-url": "3.3.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "normalize-url": { @@ -9135,8 +9385,8 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9151,9 +9401,9 @@ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "cssnano-util-get-arguments": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9168,7 +9418,7 @@ "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-page-break": { @@ -9176,7 +9426,7 @@ "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-place": { @@ -9184,8 +9434,8 @@ "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" } }, "postcss-preset-env": { @@ -9193,43 +9443,43 @@ "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "requires": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", - "css-blank-pseudo": "^0.1.4", - "css-has-pseudo": "^0.10.0", - "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", - "postcss-color-functional-notation": "^2.0.1", - "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", - "postcss-color-mod-function": "^3.0.3", - "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", - "postcss-custom-selectors": "^5.1.2", - "postcss-dir-pseudo-class": "^5.0.0", - "postcss-double-position-gradients": "^1.0.0", - "postcss-env-function": "^2.0.2", - "postcss-focus-visible": "^4.0.0", - "postcss-focus-within": "^3.0.0", - "postcss-font-variant": "^4.0.0", - "postcss-gap-properties": "^2.0.0", - "postcss-image-set-function": "^3.0.1", - "postcss-initial": "^3.0.0", - "postcss-lab-function": "^2.0.1", - "postcss-logical": "^3.0.0", - "postcss-media-minmax": "^4.0.0", - "postcss-nesting": "^7.0.0", - "postcss-overflow-shorthand": "^2.0.0", - "postcss-page-break": "^2.0.0", - "postcss-place": "^4.0.1", - "postcss-pseudo-class-any-link": "^6.0.0", - "postcss-replace-overflow-wrap": "^3.0.0", - "postcss-selector-matches": "^4.0.0", - "postcss-selector-not": "^4.0.0" + "autoprefixer": "9.8.6", + "browserslist": "4.14.5", + "caniuse-lite": "1.0.30001148", + "css-blank-pseudo": "0.1.4", + "css-has-pseudo": "0.10.0", + "css-prefers-color-scheme": "3.1.1", + "cssdb": "4.4.0", + "postcss": "7.0.35", + "postcss-attribute-case-insensitive": "4.0.2", + "postcss-color-functional-notation": "2.0.1", + "postcss-color-gray": "5.0.0", + "postcss-color-hex-alpha": "5.0.3", + "postcss-color-mod-function": "3.0.3", + "postcss-color-rebeccapurple": "4.0.1", + "postcss-custom-media": "7.0.8", + "postcss-custom-properties": "8.0.11", + "postcss-custom-selectors": "5.1.2", + "postcss-dir-pseudo-class": "5.0.0", + "postcss-double-position-gradients": "1.0.0", + "postcss-env-function": "2.0.2", + "postcss-focus-visible": "4.0.0", + "postcss-focus-within": "3.0.0", + "postcss-font-variant": "4.0.0", + "postcss-gap-properties": "2.0.0", + "postcss-image-set-function": "3.0.1", + "postcss-initial": "3.0.2", + "postcss-lab-function": "2.0.1", + "postcss-logical": "3.0.0", + "postcss-media-minmax": "4.0.0", + "postcss-nesting": "7.0.1", + "postcss-overflow-shorthand": "2.0.0", + "postcss-page-break": "2.0.0", + "postcss-place": "4.0.1", + "postcss-pseudo-class-any-link": "6.0.0", + "postcss-replace-overflow-wrap": "3.0.0", + "postcss-selector-matches": "4.0.0", + "postcss-selector-not": "4.0.0" } }, "postcss-pseudo-class-any-link": { @@ -9237,8 +9487,8 @@ "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" + "postcss": "7.0.35", + "postcss-selector-parser": "5.0.0" }, "dependencies": { "cssesc": { @@ -9251,9 +9501,9 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "cssesc": "2.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } } } @@ -9263,10 +9513,10 @@ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" + "browserslist": "4.14.5", + "caniuse-api": "3.0.0", + "has": "1.0.3", + "postcss": "7.0.35" } }, "postcss-reduce-transforms": { @@ -9274,10 +9524,10 @@ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "cssnano-util-get-match": "4.0.0", + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" }, "dependencies": { "postcss-value-parser": { @@ -9292,7 +9542,7 @@ "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "requires": { - "postcss": "^7.0.2" + "postcss": "7.0.35" } }, "postcss-selector-matches": { @@ -9300,8 +9550,8 @@ "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" + "balanced-match": "1.0.0", + "postcss": "7.0.35" } }, "postcss-selector-not": { @@ -9309,18 +9559,19 @@ "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" + "balanced-match": "1.0.0", + "postcss": "7.0.35" } }, "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "cssesc": "3.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1", + "util-deprecate": "1.0.2" } }, "postcss-svgo": { @@ -9328,10 +9579,10 @@ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" + "is-svg": "3.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1", + "svgo": "1.3.2" }, "dependencies": { "postcss-value-parser": { @@ -9346,9 +9597,9 @@ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" + "alphanum-sort": "1.0.2", + "postcss": "7.0.35", + "uniqs": "2.0.0" } }, "postcss-value-parser": { @@ -9361,9 +9612,9 @@ "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "flatten": "1.0.3", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } }, "prepend-http": { @@ -9372,12 +9623,12 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" + "lodash": "4.17.20", + "renderkid": "2.0.4" } }, "pretty-time": { @@ -9391,11 +9642,11 @@ "integrity": "sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug==" }, "prismjs": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz", - "integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.22.0.tgz", + "integrity": "sha512-lLJ/Wt9yy0AiSYBf212kK3mM5L8ycwlyTlSxHBAneXLR0nzFMlZ5y7riFPF3E33zXOF2IH95xdY5jIyZbM9z/w==", "requires": { - "clipboard": "^2.0.0" + "clipboard": "2.0.6" } }, "process": { @@ -9408,6 +9659,14 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "2.0.6" + } + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -9418,17 +9677,17 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "react-is": "16.13.1" } }, "property-information": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.5.0.tgz", - "integrity": "sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", "requires": { - "xtend": "^4.0.0" + "xtend": "4.0.2" } }, "proxy-addr": { @@ -9436,7 +9695,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.1.2", "ipaddr.js": "1.9.1" } }, @@ -9450,12 +9709,12 @@ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + "bn.js": "4.11.9", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "parse-asn1": "5.1.6", + "randombytes": "2.1.0", + "safe-buffer": "5.1.2" }, "dependencies": { "bn.js": { @@ -9470,8 +9729,8 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.4", + "once": "1.4.0" } }, "pumpify": { @@ -9479,9 +9738,9 @@ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "duplexify": "3.7.1", + "inherits": "2.0.4", + "pump": "2.0.1" }, "dependencies": { "pump": { @@ -9489,8 +9748,8 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.4", + "once": "1.4.0" } } } @@ -9505,9 +9764,14 @@ "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", "requires": { - "escape-goat": "^2.0.0" + "escape-goat": "2.1.1" } }, + "pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=" + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -9523,8 +9787,8 @@ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" } }, "querystring": { @@ -9538,16 +9802,16 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { - "safe-buffer": "^5.1.0" + "safe-buffer": "5.1.2" } }, "randomfill": { @@ -9555,8 +9819,8 @@ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "randombytes": "2.1.0", + "safe-buffer": "5.1.2" } }, "range-parser": { @@ -9580,10 +9844,10 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.5", + "strip-json-comments": "2.0.1" } }, "react": { @@ -9591,9 +9855,20 @@ "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2" + } + }, + "react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", + "requires": { + "base16": "1.0.0", + "lodash.curry": "4.1.1", + "lodash.flow": "3.5.0", + "pure-color": "1.3.0" } }, "react-dev-utils": { @@ -9618,9 +9893,9 @@ "inquirer": "7.0.4", "is-root": "2.1.0", "loader-utils": "1.2.3", - "open": "^7.0.2", + "open": "7.3.0", "pkg-up": "3.1.0", - "react-error-overlay": "^6.0.7", + "react-error-overlay": "6.0.7", "recursive-readdir": "2.2.2", "shell-quote": "1.7.2", "strip-ansi": "6.0.0", @@ -9632,7 +9907,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "7.10.4" } }, "@nodelib/fs.stat": { @@ -9640,21 +9915,29 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -9662,7 +9945,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9672,10 +9955,10 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.378", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" + "caniuse-lite": "1.0.30001148", + "electron-to-chromium": "1.3.582", + "node-releases": "1.1.63", + "pkg-up": "3.1.0" } }, "chalk": { @@ -9683,9 +9966,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" }, "dependencies": { "escape-string-regexp": { @@ -9713,8 +9996,8 @@ "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" + "address": "1.1.2", + "debug": "2.6.9" } }, "dir-glob": { @@ -9722,8 +10005,8 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" + "arrify": "1.0.1", + "path-type": "3.0.0" } }, "emojis-list": { @@ -9741,8 +10024,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -9750,7 +10033,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -9760,12 +10043,12 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" + "@mrmlnc/readdir-enhanced": "2.2.1", + "@nodelib/fs.stat": "1.1.3", + "glob-parent": "3.1.0", + "is-glob": "4.0.1", + "merge2": "1.4.1", + "micromatch": "3.1.10" } }, "fill-range": { @@ -9773,10 +10056,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -9784,7 +10067,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9794,8 +10077,8 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "5.0.0", + "path-exists": "4.0.0" } }, "glob-parent": { @@ -9803,8 +10086,8 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { "is-glob": { @@ -9812,7 +10095,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } } } @@ -9822,33 +10105,38 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", "requires": { - "array-union": "^1.0.1", + "array-union": "1.0.2", "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "fast-glob": "2.2.7", + "glob": "7.1.6", + "ignore": "3.3.10", + "pify": "3.0.0", + "slash": "1.0.0" } }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, "inquirer": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", + "ansi-escapes": "4.3.1", + "chalk": "2.4.2", + "cli-cursor": "3.1.0", + "cli-width": "2.2.1", + "external-editor": "3.1.0", + "figures": "3.2.0", + "lodash": "4.17.20", "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" + "run-async": "2.4.1", + "rxjs": "6.6.3", + "string-width": "4.2.0", + "strip-ansi": "5.2.0", + "through": "2.3.8" }, "dependencies": { "strip-ansi": { @@ -9856,7 +10144,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } } } @@ -9866,7 +10154,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9874,7 +10162,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9884,7 +10172,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -9892,9 +10180,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "2.1.0", + "json5": "1.0.1" } }, "locate-path": { @@ -9902,7 +10190,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "p-locate": "^4.1.0" + "p-locate": "4.1.0" } }, "micromatch": { @@ -9910,19 +10198,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "ms": { @@ -9935,7 +10223,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { - "p-limit": "^2.2.0" + "p-limit": "2.3.0" } }, "path-exists": { @@ -9948,7 +10236,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" } }, "pify": { @@ -9956,12 +10244,17 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "5.0.0" }, "dependencies": { "ansi-regex": { @@ -9976,8 +10269,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } } } @@ -9987,10 +10280,10 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2", + "scheduler": "0.19.1" } }, "react-error-overlay": { @@ -10008,10 +10301,10 @@ "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", "requires": { - "object-assign": "^4.1.1", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.1.1", - "react-side-effect": "^2.1.0" + "object-assign": "4.1.1", + "prop-types": "15.7.2", + "react-fast-compare": "3.2.0", + "react-side-effect": "2.1.0" } }, "react-is": { @@ -10019,34 +10312,53 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-json-view": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.19.1.tgz", + "integrity": "sha512-u5e0XDLIs9Rj43vWkKvwL8G3JzvXSl6etuS5G42a8klMohZuYFQzSN6ri+/GiBptDqlrXPTdExJVU7x9rrlXhg==", + "requires": { + "flux": "3.1.3", + "react-base16-styling": "0.6.0", + "react-lifecycles-compat": "3.0.4", + "react-textarea-autosize": "6.1.0" + } + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, "react-loadable": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", "requires": { - "prop-types": "^15.5.0" + "prop-types": "15.7.2" } }, "react-loadable-ssr-addon": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon/-/react-loadable-ssr-addon-0.2.3.tgz", - "integrity": "sha512-vPCqsmiafAMDcS9MLgXw3m4yMI40v1UeI8FTYJJkjf85LugKNnHf6D9yoDTzYwp8wEGF5viekwOD03ZPxSwnQQ==" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon/-/react-loadable-ssr-addon-0.3.0.tgz", + "integrity": "sha512-E+lnmDakV0k6ut6R2J77vurwCOwTKEwKlHs9S62G8ez+ujecLPcqjt3YAU8M58kIGjp2QjFlZ7F9QWkq/mr6Iw==", + "requires": { + "@babel/runtime": "7.12.1" + } }, "react-router": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "@babel/runtime": "7.12.1", + "history": "4.10.1", + "hoist-non-react-statics": "3.3.2", + "loose-envify": "1.4.0", + "mini-create-react-context": "0.4.0", + "path-to-regexp": "1.8.0", + "prop-types": "15.7.2", + "react-is": "16.13.1", + "tiny-invariant": "1.1.0", + "tiny-warning": "1.0.3" }, "dependencies": { "isarray": { @@ -10069,7 +10381,7 @@ "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", "requires": { - "@babel/runtime": "^7.1.2" + "@babel/runtime": "7.12.1" } }, "react-router-dom": { @@ -10077,13 +10389,13 @@ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", + "@babel/runtime": "7.12.1", + "history": "4.10.1", + "loose-envify": "1.4.0", + "prop-types": "15.7.2", "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "tiny-invariant": "1.1.0", + "tiny-warning": "1.0.3" } }, "react-side-effect": { @@ -10091,12 +10403,20 @@ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz", "integrity": "sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==" }, + "react-textarea-autosize": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-6.1.0.tgz", + "integrity": "sha512-F6bI1dgib6fSvG8so1HuArPUv+iVEfPliuLWusLF+gAKz0FbB4jLrWUrTAeq1afnPT2c9toEZYUdz/y1uKMy4A==", + "requires": { + "prop-types": "15.7.2" + } + }, "react-toggle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/react-toggle/-/react-toggle-4.1.1.tgz", "integrity": "sha512-+wXlMcSpg8SmnIXauMaZiKpR+r2wp2gMUteroejp2UTSqGTVvZLN+m9EhMzFARBKEw7KpQOwzCyfzeHeAndQGw==", "requires": { - "classnames": "^2.2.5" + "classnames": "2.2.6" } }, "readable-stream": { @@ -10104,17 +10424,17 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "inherits": "2.0.4", + "string_decoder": "1.3.0", + "util-deprecate": "1.0.2" } }, "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "requires": { - "picomatch": "^2.2.1" + "picomatch": "2.2.2" } }, "reading-time": { @@ -10127,7 +10447,7 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "requires": { - "resolve": "^1.1.6" + "resolve": "1.17.0" } }, "recursive-readdir": { @@ -10148,7 +10468,7 @@ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "requires": { - "regenerate": "^1.4.0" + "regenerate": "1.4.1" } }, "regenerator-runtime": { @@ -10161,7 +10481,7 @@ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "requires": { - "@babel/runtime": "^7.8.4" + "@babel/runtime": "7.12.1" } }, "regex-not": { @@ -10169,8 +10489,8 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" }, "dependencies": { "extend-shallow": { @@ -10178,8 +10498,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" } }, "is-extendable": { @@ -10187,7 +10507,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -10197,21 +10517,41 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + } } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "1.4.1", + "regenerate-unicode-properties": "8.2.0", + "regjsgen": "0.5.2", + "regjsparser": "0.6.4", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.2.0" } }, "registry-auth-token": { @@ -10219,7 +10559,7 @@ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", "requires": { - "rc": "^1.2.8" + "rc": "1.2.8" } }, "registry-url": { @@ -10227,7 +10567,7 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "requires": { - "rc": "^1.2.8" + "rc": "1.2.8" } }, "regjsgen": { @@ -10240,7 +10580,7 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" }, "dependencies": { "jsesc": { @@ -10255,9 +10595,9 @@ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz", "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==", "requires": { - "hast-util-from-parse5": "^5.0.0", - "parse5": "^5.0.0", - "xtend": "^4.0.0" + "hast-util-from-parse5": "5.0.3", + "parse5": "5.1.1", + "xtend": "4.0.2" }, "dependencies": { "hast-util-from-parse5": { @@ -10265,11 +10605,11 @@ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", "requires": { - "ccount": "^1.0.3", - "hastscript": "^5.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.1.2", - "xtend": "^4.0.1" + "ccount": "1.0.5", + "hastscript": "5.1.2", + "property-information": "5.6.0", + "web-namespaces": "1.1.4", + "xtend": "4.0.2" } }, "parse5": { @@ -10289,9 +10629,9 @@ "resolved": "https://registry.npmjs.org/remark-admonitions/-/remark-admonitions-1.2.1.tgz", "integrity": "sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow==", "requires": { - "rehype-parse": "^6.0.2", - "unified": "^8.4.2", - "unist-util-visit": "^2.0.1" + "rehype-parse": "6.0.2", + "unified": "8.4.2", + "unist-util-visit": "2.0.3" }, "dependencies": { "is-plain-obj": { @@ -10304,11 +10644,11 @@ "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "bail": "1.0.5", + "extend": "3.0.2", + "is-plain-obj": "2.1.0", + "trough": "1.0.5", + "vfile": "4.2.0" } } } @@ -10318,62 +10658,70 @@ "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.1.0.tgz", "integrity": "sha512-lDddGsxXURV01WS9WAiS9rO/cedO1pvr9tahtLhr6qCGFhHG4yZSJW3Ha4Nw9Uk1hLNmUBtPC0+m45Ms+xEitg==", "requires": { - "emoticon": "^3.2.0", - "node-emoji": "^1.10.0", - "unist-util-visit": "^2.0.2" + "emoticon": "3.2.0", + "node-emoji": "1.10.0", + "unist-util-visit": "2.0.3" } }, "remark-footnotes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-1.0.0.tgz", - "integrity": "sha512-X9Ncj4cj3/CIvLI2Z9IobHtVi8FVdUrdJkCNaL9kdX8ohfsi18DXHsCVd/A7ssARBdccdDb5ODnt62WuEWaM/g==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" }, "remark-mdx": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.16.tgz", - "integrity": "sha512-xqZhBQ4TonFiSFpVt6SnTLRnxstu7M6pcaOibKZhqzk4zMRVacVenD7iECjfESK+72LkPm/NW+0r5ahJAg7zlQ==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.18.tgz", + "integrity": "sha512-xNhjv4kJZ8L6RV68yK8fQ6XWlvSIFOE5VPmM7wMKSwkvwBu6tlUJy0gRF2WiZ4fPPOj6jpqlVB9QakipvZuEqg==", "requires": { - "@babel/core": "7.10.5", + "@babel/core": "7.11.6", "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.11.0", "@babel/plugin-syntax-jsx": "7.10.4", - "@mdx-js/util": "1.6.16", + "@mdx-js/util": "1.6.18", "is-alphabetical": "1.0.4", "remark-parse": "8.0.3", - "unified": "9.1.0" + "unified": "9.2.0" }, "dependencies": { "@babel/core": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.5.tgz", - "integrity": "sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.5", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.10.5", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.5", - "@babel/types": "^7.10.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "@babel/code-frame": "7.10.4", + "@babel/generator": "7.12.1", + "@babel/helper-module-transforms": "7.12.1", + "@babel/helpers": "7.12.1", + "@babel/parser": "7.12.3", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1", + "convert-source-map": "1.7.0", + "debug": "4.2.0", + "gensync": "1.0.0-beta.1", + "json5": "2.1.3", + "lodash": "4.17.20", + "resolve": "1.17.0", + "semver": "5.7.1", + "source-map": "0.5.7" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", - "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-transform-parameters": "7.12.1" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" } }, "semver": { @@ -10388,22 +10736,22 @@ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", "requires": { - "ccount": "^1.0.0", - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", + "ccount": "1.0.5", + "collapse-white-space": "1.0.6", + "is-alphabetical": "1.0.4", + "is-decimal": "1.0.4", + "is-whitespace-character": "1.0.4", + "is-word-character": "1.0.4", + "markdown-escapes": "1.0.4", + "parse-entities": "2.0.0", + "repeat-string": "1.6.1", + "state-toggle": "1.0.3", "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" + "trim-trailing-lines": "1.1.3", + "unherit": "1.1.3", + "unist-util-remove-position": "2.0.1", + "vfile-location": "3.1.0", + "xtend": "4.0.2" } }, "remark-squeeze-paragraphs": { @@ -10411,7 +10759,7 @@ "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", "requires": { - "mdast-squeeze-paragraphs": "^4.0.0" + "mdast-squeeze-paragraphs": "4.0.0" } }, "remove-trailing-separator": { @@ -10420,15 +10768,15 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", + "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "css-select": "1.2.0", + "dom-converter": "0.2.0", + "htmlparser2": "3.10.1", + "lodash": "4.17.20", + "strip-ansi": "3.0.1" }, "dependencies": { "ansi-regex": { @@ -10441,7 +10789,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -10486,7 +10834,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { - "path-parse": "^1.0.6" + "path-parse": "1.0.6" } }, "resolve-cwd": { @@ -10494,7 +10842,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "3.0.0" }, "dependencies": { "resolve-from": { @@ -10524,7 +10872,7 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "1.0.1" } }, "restore-cursor": { @@ -10532,8 +10880,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "onetime": "5.1.2", + "signal-exit": "3.0.3" } }, "ret": { @@ -10562,11 +10910,11 @@ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { - "glob": "^7.1.3" + "glob": "7.1.6" } }, "ripemd160": { @@ -10574,8 +10922,8 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "hash-base": "3.1.0", + "inherits": "2.0.4" } }, "run-async": { @@ -10593,7 +10941,7 @@ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "requires": { - "aproba": "^1.1.1" + "aproba": "1.2.0" } }, "rx": { @@ -10602,11 +10950,11 @@ "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" }, "rxjs": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", - "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "requires": { - "tslib": "^1.9.0" + "tslib": "1.14.1" } }, "safe-buffer": { @@ -10619,7 +10967,7 @@ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "ret": "~0.1.10" + "ret": "0.1.15" } }, "safer-buffer": { @@ -10637,18 +10985,18 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "1.4.0", + "object-assign": "4.1.1" } }, "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" } }, "section-matter": { @@ -10656,8 +11004,8 @@ "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" + "extend-shallow": "2.0.1", + "kind-of": "6.0.3" } }, "select": { @@ -10672,11 +11020,11 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", "requires": { - "node-forge": "0.9.0" + "node-forge": "0.10.0" } }, "semver": { @@ -10689,7 +11037,7 @@ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", "requires": { - "semver": "^6.3.0" + "semver": "6.3.0" } }, "send": { @@ -10698,18 +11046,18 @@ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.7.2", "mime": "1.6.0", "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "on-finished": "2.3.0", + "range-parser": "1.2.1", + "statuses": "1.5.0" }, "dependencies": { "debug": { @@ -10735,9 +11083,12 @@ } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "requires": { + "randombytes": "2.1.0" + } }, "serve-handler": { "version": "6.1.3", @@ -10774,7 +11125,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.33.0" } }, "path-to-regexp": { @@ -10794,13 +11145,13 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "requires": { - "accepts": "~1.3.4", + "accepts": "1.3.7", "batch": "0.6.1", "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "escape-html": "1.0.3", + "http-errors": "1.6.3", + "mime-types": "2.1.27", + "parseurl": "1.3.3" }, "dependencies": { "debug": { @@ -10816,10 +11167,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.5.0" } }, "inherits": { @@ -10844,9 +11195,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.3", "send": "0.17.1" } }, @@ -10860,10 +11211,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" } }, "setimmediate": { @@ -10881,8 +11232,8 @@ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.4", + "safe-buffer": "5.1.2" } }, "shallow-clone": { @@ -10890,10 +11241,10 @@ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" }, "dependencies": { "kind-of": { @@ -10901,7 +11252,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", "requires": { - "is-buffer": "^1.0.2" + "is-buffer": "1.1.6" } }, "lazy-cache": { @@ -10916,7 +11267,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { - "shebang-regex": "^3.0.0" + "shebang-regex": "3.0.0" } }, "shebang-regex": { @@ -10934,9 +11285,9 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" + "glob": "7.1.6", + "interpret": "1.4.0", + "rechoir": "0.6.2" } }, "signal-exit": { @@ -10949,7 +11300,7 @@ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "requires": { - "is-arrayish": "^0.3.1" + "is-arrayish": "0.3.2" }, "dependencies": { "is-arrayish": { @@ -10964,30 +11315,30 @@ "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-3.2.2.tgz", "integrity": "sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg==", "requires": { - "lodash.chunk": "^4.2.0", - "lodash.padstart": "^4.6.1", - "whatwg-url": "^7.0.0", - "xmlbuilder": "^13.0.0" + "lodash.chunk": "4.2.0", + "lodash.padstart": "4.6.1", + "whatwg-url": "7.1.0", + "xmlbuilder": "13.0.2" } }, "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.3", + "use": "3.1.1" }, "dependencies": { "debug": { @@ -11003,7 +11354,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "ms": { @@ -11018,9 +11369,9 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" }, "dependencies": { "define-property": { @@ -11028,7 +11379,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -11036,7 +11387,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -11044,7 +11395,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -11052,9 +11403,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } } } @@ -11064,7 +11415,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { - "kind-of": "^3.2.0" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -11072,7 +11423,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -11082,8 +11433,8 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.4.0", + "faye-websocket": "0.10.0", + "uuid": "3.4.0", "websocket-driver": "0.6.5" } }, @@ -11092,12 +11443,12 @@ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "debug": "3.2.6", + "eventsource": "1.0.7", + "faye-websocket": "0.11.3", + "inherits": "2.0.4", + "json3": "3.3.3", + "url-parse": "1.4.7" }, "dependencies": { "debug": { @@ -11105,7 +11456,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "faye-websocket": { @@ -11113,7 +11464,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "requires": { - "websocket-driver": ">=0.5.1" + "websocket-driver": "0.6.5" } } } @@ -11123,7 +11474,7 @@ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", "requires": { - "is-plain-obj": "^1.0.0" + "is-plain-obj": "1.1.0" } }, "source-list-map": { @@ -11141,11 +11492,11 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, "source-map-support": { @@ -11153,8 +11504,8 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "buffer-from": "1.1.1", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -11179,11 +11530,11 @@ "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "debug": "4.2.0", + "handle-thing": "2.0.1", + "http-deceiver": "1.2.7", + "select-hose": "2.0.0", + "spdy-transport": "3.0.0" } }, "spdy-transport": { @@ -11191,12 +11542,12 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "debug": "4.2.0", + "detect-node": "2.0.4", + "hpack.js": "2.1.6", + "obuf": "1.1.2", + "readable-stream": "3.6.0", + "wbuf": "1.7.3" } }, "split-string": { @@ -11204,7 +11555,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "^3.0.0" + "extend-shallow": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -11212,8 +11563,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" } }, "is-extendable": { @@ -11221,7 +11572,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -11232,11 +11583,11 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", "requires": { - "figgy-pudding": "^3.5.1" + "minipass": "3.1.3" } }, "stable": { @@ -11254,8 +11605,8 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "define-property": "0.2.5", + "object-copy": "0.1.0" }, "dependencies": { "define-property": { @@ -11263,7 +11614,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -11278,7 +11629,7 @@ "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.2.1.tgz", "integrity": "sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ==", "requires": { - "ci-info": "^1.6.0" + "ci-info": "1.6.0" } }, "stream-browserify": { @@ -11286,8 +11637,8 @@ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "inherits": "2.0.4", + "readable-stream": "2.3.7" }, "dependencies": { "readable-stream": { @@ -11295,13 +11646,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -11309,7 +11660,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -11319,8 +11670,8 @@ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "end-of-stream": "1.4.4", + "stream-shift": "1.0.1" } }, "stream-http": { @@ -11328,11 +11679,11 @@ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "builtin-status-codes": "3.0.0", + "inherits": "2.0.4", + "readable-stream": "2.3.7", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.2" }, "dependencies": { "readable-stream": { @@ -11340,13 +11691,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -11354,7 +11705,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -11374,9 +11725,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "emoji-regex": "8.0.0", + "is-fullwidth-code-point": "3.0.0", + "strip-ansi": "6.0.0" }, "dependencies": { "ansi-regex": { @@ -11399,7 +11750,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "5.0.0" } } } @@ -11409,8 +11760,28 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + } } }, "string.prototype.trimstart": { @@ -11418,8 +11789,28 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + } } }, "string_decoder": { @@ -11427,7 +11818,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { - "safe-buffer": "~5.2.0" + "safe-buffer": "5.2.1" }, "dependencies": { "safe-buffer": { @@ -11442,9 +11833,9 @@ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" + "get-own-enumerable-property-symbols": "3.0.2", + "is-obj": "1.0.1", + "is-regexp": "1.0.0" }, "dependencies": { "is-obj": { @@ -11459,7 +11850,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } }, "strip-bom-string": { @@ -11495,9 +11886,9 @@ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" + "browserslist": "4.14.5", + "postcss": "7.0.35", + "postcss-selector-parser": "3.1.2" }, "dependencies": { "postcss-selector-parser": { @@ -11505,9 +11896,9 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "dot-prop": "5.3.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } } } @@ -11517,7 +11908,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "svg-parser": { @@ -11530,19 +11921,19 @@ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", + "chalk": "2.4.2", + "coa": "2.0.2", + "css-select": "2.1.0", + "css-select-base-adapter": "0.1.1", "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "csso": "4.0.3", + "js-yaml": "3.14.0", + "mkdirp": "0.5.5", + "object.values": "1.1.1", + "sax": "1.2.4", + "stable": "0.1.8", + "unquote": "1.1.1", + "util.promisify": "1.0.1" }, "dependencies": { "chalk": { @@ -11550,9 +11941,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "css-select": { @@ -11560,24 +11951,24 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "boolbase": "1.0.0", + "css-what": "3.4.2", + "domutils": "1.7.0", + "nth-check": "1.0.2" } }, "css-what": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", - "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==" + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" }, "domutils": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.1", + "domelementtype": "1.3.1" } } } @@ -11587,6 +11978,26 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, + "tar": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "requires": { + "chownr": "2.0.0", + "fs-minipass": "2.1.0", + "minipass": "3.1.3", + "minizlib": "2.1.2", + "mkdirp": "1.0.4", + "yallist": "4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, "term-size": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", @@ -11597,9 +12008,9 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "commander": "2.20.3", + "source-map": "0.6.1", + "source-map-support": "0.5.19" }, "dependencies": { "commander": { @@ -11615,54 +12026,34 @@ } }, "terser-webpack-plugin": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz", - "integrity": "sha512-xzYyaHUNhzgaAdBsXxk2Yvo/x1NJdslUaussK3fdpBbvttm1iIwU+c26dj9UxJcwk2c5UWt5F55MUTIA8BE7Dg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^3.1.0", - "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" + "cacache": "15.0.5", + "find-cache-dir": "3.3.1", + "jest-worker": "26.5.0", + "p-limit": "3.0.2", + "schema-utils": "3.0.0", + "serialize-javascript": "5.0.1", + "source-map": "0.6.1", + "terser": "5.3.6", + "webpack-sources": "1.4.3" }, "dependencies": { - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - } + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "find-cache-dir": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "commondir": "1.0.1", + "make-dir": "3.1.0", + "pkg-dir": "4.2.0" } }, "find-up": { @@ -11670,8 +12061,8 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "5.0.0", + "path-exists": "4.0.0" } }, "locate-path": { @@ -11679,7 +12070,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "p-locate": "^4.1.0" + "p-locate": "4.1.0" } }, "make-dir": { @@ -11687,7 +12078,15 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "requires": { - "semver": "^6.0.0" + "semver": "6.3.0" + } + }, + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "requires": { + "p-try": "2.2.0" } }, "p-locate": { @@ -11695,7 +12094,17 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { - "p-limit": "^2.2.0" + "p-limit": "2.3.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "2.2.0" + } + } } }, "path-exists": { @@ -11708,15 +12117,17 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { - "find-up": "^4.0.0" + "find-up": "4.1.0" } }, - "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "requires": { - "randombytes": "^2.1.0" + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" } }, "source-map": { @@ -11724,13 +12135,21 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, - "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "terser": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.6.tgz", + "integrity": "sha512-145ap5v1HYx69HfLuwWaxTIlXyiSr+nSTb7ZWlJCgJn2JptuJRKziNa/zwFx9B1IU99Q055jHni74nLuuEC78w==", "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" + "commander": "2.20.3", + "source-map": "0.7.3", + "source-map-support": "0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } } } } @@ -11750,8 +12169,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "readable-stream": "2.3.7", + "xtend": "4.0.2" }, "dependencies": { "readable-stream": { @@ -11759,13 +12178,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -11773,7 +12192,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -11788,7 +12207,7 @@ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "requires": { - "setimmediate": "^1.0.4" + "setimmediate": "1.0.5" } }, "timsort": { @@ -11817,7 +12236,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "~1.0.2" + "os-tmpdir": "1.0.2" } }, "to-arraybuffer": { @@ -11835,7 +12254,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -11843,7 +12262,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -11858,10 +12277,10 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" }, "dependencies": { "extend-shallow": { @@ -11869,8 +12288,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" } }, "is-extendable": { @@ -11878,7 +12297,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -11888,7 +12307,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "requires": { - "is-number": "^7.0.0" + "is-number": "7.0.0" } }, "toidentifier": { @@ -11901,7 +12320,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" }, "dependencies": { "punycode": { @@ -11916,11 +12335,6 @@ "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" }, - "trim-lines": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.3.tgz", - "integrity": "sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA==" - }, "trim-trailing-lines": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", @@ -11942,9 +12356,9 @@ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tty-browserify": { "version": "0.0.0", @@ -11962,7 +12376,7 @@ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "mime-types": "2.1.27" } }, "typedarray": { @@ -11975,16 +12389,21 @@ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "requires": { - "is-typedarray": "^1.0.0" + "is-typedarray": "1.0.0" } }, + "ua-parser-js": { + "version": "0.7.22", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", + "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==" + }, "unherit": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", "requires": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" + "inherits": "2.0.4", + "xtend": "4.0.2" } }, "unicode-canonical-property-names-ecmascript": { @@ -11997,8 +12416,8 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "1.0.4", + "unicode-property-aliases-ecmascript": "1.1.0" } }, "unicode-match-property-value-ecmascript": { @@ -12012,16 +12431,16 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, "unified": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.1.0.tgz", - "integrity": "sha512-VXOv7Ic6twsKGJDeZQ2wwPqXs2hM0KNu5Hkg9WgAZbSD1pxhZ7p8swqg583nw1Je2fhwHy6U8aEjiI79x1gvag==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "bail": "1.0.5", + "extend": "3.0.2", + "is-buffer": "2.0.4", + "is-plain-obj": "2.1.0", + "trough": "1.0.5", + "vfile": "4.2.0" }, "dependencies": { "is-buffer": { @@ -12041,10 +12460,10 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "2.0.1" } }, "uniq": { @@ -12062,7 +12481,7 @@ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "requires": { - "unique-slug": "^2.0.0" + "unique-slug": "2.0.2" } }, "unique-slug": { @@ -12070,7 +12489,7 @@ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "requires": { - "imurmurhash": "^0.1.4" + "imurmurhash": "0.1.4" } }, "unique-string": { @@ -12078,7 +12497,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "requires": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "2.0.0" } }, "unist-builder": { @@ -12106,7 +12525,7 @@ "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", "requires": { - "unist-util-is": "^4.0.0" + "unist-util-is": "4.0.2" } }, "unist-util-remove-position": { @@ -12114,7 +12533,7 @@ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", "requires": { - "unist-util-visit": "^2.0.0" + "unist-util-visit": "2.0.3" } }, "unist-util-stringify-position": { @@ -12122,7 +12541,7 @@ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "requires": { - "@types/unist": "^2.0.2" + "@types/unist": "2.0.3" } }, "unist-util-visit": { @@ -12130,18 +12549,18 @@ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "@types/unist": "2.0.3", + "unist-util-is": "4.0.2", + "unist-util-visit-parents": "3.1.1" } }, "unist-util-visit-parents": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz", - "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "@types/unist": "2.0.3", + "unist-util-is": "4.0.2" } }, "universalify": { @@ -12164,8 +12583,8 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "has-value": "0.3.1", + "isobject": "3.0.1" }, "dependencies": { "has-value": { @@ -12173,9 +12592,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" }, "dependencies": { "isobject": { @@ -12201,31 +12620,31 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, "update-notifier": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", - "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" + "boxen": "4.2.0", + "chalk": "3.0.0", + "configstore": "5.0.1", + "has-yarn": "2.1.0", + "import-lazy": "2.1.0", + "is-ci": "2.0.0", + "is-installed-globally": "0.3.2", + "is-npm": "4.0.0", + "is-yarn-global": "0.3.0", + "latest-version": "5.1.0", + "pupa": "2.0.1", + "semver-diff": "3.1.1", + "xdg-basedir": "4.0.0" } }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" }, "dependencies": { "punycode": { @@ -12250,13 +12669,25 @@ } }, "url-loader": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.0.tgz", - "integrity": "sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.26", - "schema-utils": "^2.6.5" + "loader-utils": "2.0.0", + "mime-types": "2.1.27", + "schema-utils": "3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "requires": { + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" + } + } } }, "url-parse": { @@ -12264,8 +12695,8 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "querystringify": "2.2.0", + "requires-port": "1.0.0" } }, "url-parse-lax": { @@ -12273,7 +12704,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "requires": { - "prepend-http": "^2.0.0" + "prepend-http": "2.0.0" }, "dependencies": { "prepend-http": { @@ -12288,6 +12719,28 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "use-isomorphic-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.0.0.tgz", + "integrity": "sha512-JMwJ7Vd86NwAt1jH7q+OIozZSIxA4ND0fx6AsOe2q1H8ooBUp5aN6DvVCqZiIaYU6JaMRJGyR0FO7EBCIsb/Rg==" + }, + "use-latest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.1.0.tgz", + "integrity": "sha512-gF04d0ZMV3AMB8Q7HtfkAWe+oq1tFXP6dZKwBHQF5nVXtGsh2oAYeeqma5ZzxtlpOcW8Ro/tLcfmEodjDeqtuw==", + "requires": { + "use-isomorphic-layout-effect": "1.0.0" + } + }, + "use-onclickoutside": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/use-onclickoutside/-/use-onclickoutside-0.3.1.tgz", + "integrity": "sha512-aahvbW5+G0XJfzj31FJeLsvc6qdKbzeTsQ8EtkHHq5qTg6bm/qkJeKLcgrpnYeHDDbd7uyhImLGdkbM9BRzOHQ==", + "requires": { + "are-passive-events-supported": "1.1.1", + "use-latest": "1.1.0" + } + }, "util": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", @@ -12313,10 +12766,30 @@ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "has-symbols": "1.0.1", + "object.getownpropertydescriptors": "2.1.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "requires": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + } } }, "utila": { @@ -12324,6 +12797,11 @@ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" }, + "utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -12354,11 +12832,11 @@ "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", + "@types/unist": "2.0.3", + "is-buffer": "2.0.4", "replace-ext": "1.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "unist-util-stringify-position": "2.0.3", + "vfile-message": "2.0.4" }, "dependencies": { "is-buffer": { @@ -12369,17 +12847,17 @@ } }, "vfile-location": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", - "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz", + "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g==" }, "vfile-message": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "@types/unist": "2.0.3", + "unist-util-stringify-position": "2.0.3" } }, "vm-browserify": { @@ -12392,9 +12870,9 @@ "resolved": "https://registry.npmjs.org/wait-file/-/wait-file-1.0.5.tgz", "integrity": "sha512-udLpJY/eOxlrMm3+XD1RLuF2oT9B7J7wiyR5/9xrvQymS6YR6trWvVhzOldHrVbLwyiRmLj9fcvsjzpSXeZHkw==", "requires": { - "@hapi/joi": "^15.1.0", - "fs-extra": "^8.1.0", - "rx": "^4.1.0" + "@hapi/joi": "15.1.1", + "fs-extra": "8.1.0", + "rx": "4.1.0" }, "dependencies": { "@hapi/address": { @@ -12412,10 +12890,10 @@ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" + "@hapi/address": "2.1.4", + "@hapi/bourne": "1.3.2", + "@hapi/hoek": "8.5.1", + "@hapi/topo": "3.1.6" } }, "@hapi/topo": { @@ -12423,7 +12901,7 @@ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", "requires": { - "@hapi/hoek": "^8.3.0" + "@hapi/hoek": "8.5.1" } } } @@ -12433,10 +12911,10 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "chokidar": "3.4.3", + "graceful-fs": "4.2.4", + "neo-async": "2.6.2", + "watchpack-chokidar2": "2.0.0" } }, "watchpack-chokidar2": { @@ -12445,7 +12923,7 @@ "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", "optional": true, "requires": { - "chokidar": "^2.1.8" + "chokidar": "2.1.8" }, "dependencies": { "anymatch": { @@ -12454,8 +12932,8 @@ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "optional": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "micromatch": "3.1.10", + "normalize-path": "2.1.1" }, "dependencies": { "normalize-path": { @@ -12464,7 +12942,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "optional": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } } } @@ -12480,16 +12958,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -12497,7 +12975,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -12508,18 +12986,18 @@ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "optional": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "2.0.0", + "async-each": "1.0.3", + "braces": "2.3.2", + "fsevents": "1.2.13", + "glob-parent": "3.1.0", + "inherits": "2.0.4", + "is-binary-path": "1.0.1", + "is-glob": "4.0.1", + "normalize-path": "3.0.0", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.2.0" } }, "extend-shallow": { @@ -12527,8 +13005,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -12536,7 +13014,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -12546,10 +13024,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -12557,7 +13035,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -12566,7 +13044,11 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "1.5.0", + "nan": "2.14.2" + } }, "glob-parent": { "version": "3.1.0", @@ -12574,8 +13056,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "optional": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { "is-glob": { @@ -12584,7 +13066,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "optional": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } } } @@ -12595,7 +13077,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "optional": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.13.1" } }, "is-number": { @@ -12603,7 +13085,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -12611,7 +13093,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -12621,19 +13103,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "readable-stream": { @@ -12642,13 +13124,13 @@ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -12657,9 +13139,9 @@ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "optional": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "graceful-fs": "4.2.4", + "micromatch": "3.1.10", + "readable-stream": "2.3.7" } }, "string_decoder": { @@ -12668,7 +13150,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "to-regex-range": { @@ -12676,8 +13158,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } } } @@ -12687,7 +13169,7 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "requires": { - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "1.0.1" } }, "web-namespaces": { @@ -12701,33 +13183,33 @@ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, "webpack": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", - "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", "@webassemblyjs/wasm-edit": "1.9.0", "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" + "acorn": "6.4.2", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2", + "chrome-trace-event": "1.0.2", + "enhanced-resolve": "4.3.0", + "eslint-scope": "4.0.3", + "json-parse-better-errors": "1.0.2", + "loader-runner": "2.4.0", + "loader-utils": "1.4.0", + "memory-fs": "0.4.1", + "micromatch": "3.1.10", + "mkdirp": "0.5.5", + "neo-async": "2.6.2", + "node-libs-browser": "2.2.1", + "schema-utils": "1.0.0", + "tapable": "1.1.3", + "terser-webpack-plugin": "1.4.5", + "watchpack": "1.7.4", + "webpack-sources": "1.4.3" }, "dependencies": { "braces": { @@ -12735,16 +13217,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -12752,18 +13234,45 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "3.7.2", + "chownr": "1.1.4", + "figgy-pudding": "3.5.2", + "glob": "7.1.6", + "graceful-fs": "4.2.4", + "infer-owner": "1.0.4", + "lru-cache": "5.1.1", + "mississippi": "3.0.0", + "mkdirp": "0.5.5", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.7.1", + "ssri": "6.0.1", + "unique-filename": "1.1.1", + "y18n": "4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -12771,7 +13280,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -12781,10 +13290,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -12792,7 +13301,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -12802,7 +13311,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -12810,7 +13319,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -12825,7 +13334,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.5" } }, "loader-utils": { @@ -12833,9 +13342,17 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "3.1.1" } }, "micromatch": { @@ -12843,19 +13360,27 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "7.1.6" } }, "schema-utils": { @@ -12863,17 +13388,17 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" } }, "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "requires": { - "randombytes": "^2.1.0" + "randombytes": "2.1.0" } }, "source-map": { @@ -12881,20 +13406,28 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, - "terser-webpack-plugin": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", - "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^3.1.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "figgy-pudding": "3.5.2" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "requires": { + "cacache": "12.0.4", + "find-cache-dir": "2.1.0", + "is-wsl": "1.1.0", + "schema-utils": "1.0.0", + "serialize-javascript": "4.0.0", + "source-map": "0.6.1", + "terser": "4.8.0", + "webpack-sources": "1.4.3", + "worker-farm": "1.7.0" } }, "to-regex-range": { @@ -12902,30 +13435,35 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } }, "webpack-bundle-analyzer": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz", - "integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.15", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" + "acorn": "7.4.0", + "acorn-walk": "7.2.0", + "bfj": "6.1.2", + "chalk": "2.4.2", + "commander": "2.20.3", + "ejs": "2.7.4", + "express": "4.17.1", + "filesize": "3.6.1", + "gzip-size": "5.1.1", + "lodash": "4.17.20", + "mkdirp": "0.5.5", + "opener": "1.5.1", + "ws": "6.2.1" }, "dependencies": { "acorn": { @@ -12938,9 +13476,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "commander": { @@ -12960,11 +13498,11 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "memory-fs": "0.4.1", + "mime": "2.4.6", + "mkdirp": "0.5.5", + "range-parser": "1.2.1", + "webpack-log": "2.0.0" }, "dependencies": { "mime": { @@ -12980,38 +13518,38 @@ "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", "requires": { "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", + "bonjour": "3.5.0", + "chokidar": "2.1.8", + "compression": "1.7.4", + "connect-history-api-fallback": "1.6.0", + "debug": "4.2.0", + "del": "4.1.1", + "express": "4.17.1", + "html-entities": "1.3.1", "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", + "import-local": "2.0.0", + "internal-ip": "4.3.0", + "ip": "1.1.5", + "is-absolute-url": "3.0.3", + "killable": "1.0.1", + "loglevel": "1.7.0", + "opn": "5.5.0", + "p-retry": "3.0.1", + "portfinder": "1.0.28", + "schema-utils": "1.0.0", + "selfsigned": "1.10.8", + "semver": "6.3.0", + "serve-index": "1.9.1", "sockjs": "0.3.20", "sockjs-client": "1.4.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" + "spdy": "4.0.2", + "strip-ansi": "3.0.1", + "supports-color": "6.1.0", + "url": "0.11.0", + "webpack-dev-middleware": "3.7.2", + "webpack-log": "2.0.0", + "ws": "6.2.1", + "yargs": "13.3.2" }, "dependencies": { "ansi-regex": { @@ -13024,8 +13562,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "micromatch": "3.1.10", + "normalize-path": "2.1.1" }, "dependencies": { "normalize-path": { @@ -13033,11 +13571,19 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } } } }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -13048,16 +13594,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -13065,7 +13611,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -13075,18 +13621,18 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "2.0.0", + "async-each": "1.0.3", + "braces": "2.3.2", + "fsevents": "1.2.13", + "glob-parent": "3.1.0", + "inherits": "2.0.4", + "is-binary-path": "1.0.1", + "is-glob": "4.0.1", + "normalize-path": "3.0.0", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.2.0" } }, "del": { @@ -13094,13 +13640,13 @@ "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "@types/glob": "7.1.3", + "globby": "6.1.0", + "is-path-cwd": "2.2.0", + "is-path-in-cwd": "2.1.0", + "p-map": "2.1.0", + "pify": "4.0.1", + "rimraf": "2.7.1" } }, "extend-shallow": { @@ -13108,8 +13654,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -13117,7 +13663,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -13127,10 +13673,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -13138,7 +13684,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -13147,15 +13693,19 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "1.5.0", + "nan": "2.14.2" + } }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { "is-glob": { @@ -13163,7 +13713,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } } } @@ -13173,11 +13723,11 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "array-union": "1.0.2", + "glob": "7.1.6", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" }, "dependencies": { "pify": { @@ -13197,7 +13747,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.13.1" } }, "is-number": { @@ -13205,7 +13755,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -13213,7 +13763,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -13223,19 +13773,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "p-map": { @@ -13248,13 +13798,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -13262,9 +13812,17 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "graceful-fs": "4.2.4", + "micromatch": "3.1.10", + "readable-stream": "2.3.7" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "7.1.6" } }, "schema-utils": { @@ -13272,9 +13830,9 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" } }, "string_decoder": { @@ -13282,7 +13840,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { @@ -13290,7 +13848,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -13298,7 +13856,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "to-regex-range": { @@ -13306,8 +13864,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } } } @@ -13317,8 +13875,8 @@ "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" + "ansi-colors": "3.2.4", + "uuid": "3.4.0" } }, "webpack-merge": { @@ -13326,7 +13884,7 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", "requires": { - "lodash": "^4.17.15" + "lodash": "4.17.20" } }, "webpack-sources": { @@ -13334,8 +13892,8 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "source-list-map": "2.0.1", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -13350,14 +13908,14 @@ "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-4.0.0.tgz", "integrity": "sha512-k1qRoSL/3BVuINzngj09nIwreD8wxV4grcuhHTD8VJgUbGcy8lQSPqv+bM00B7F+PffwIsQ8ISd4mIwRbr23eQ==", "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "consola": "^2.10.0", - "figures": "^3.0.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^6.0.0" + "ansi-escapes": "4.3.1", + "chalk": "2.4.2", + "consola": "2.15.0", + "figures": "3.2.0", + "pretty-time": "1.1.0", + "std-env": "2.2.1", + "text-table": "0.2.0", + "wrap-ansi": "6.2.0" }, "dependencies": { "ansi-regex": { @@ -13370,9 +13928,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "color-convert": { @@ -13380,7 +13938,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.4" } }, "color-name": { @@ -13393,7 +13951,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "5.0.0" } }, "wrap-ansi": { @@ -13401,18 +13959,17 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "4.3.0", + "string-width": "4.2.0", + "strip-ansi": "6.0.0" }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "color-convert": "2.0.1" } } } @@ -13424,7 +13981,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", "requires": { - "websocket-extensions": ">=0.1.1" + "websocket-extensions": "0.1.4" } }, "websocket-extensions": { @@ -13432,14 +13989,19 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, + "whatwg-fetch": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz", + "integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ==" + }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" } }, "which": { @@ -13447,7 +14009,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-module": { @@ -13460,7 +14022,7 @@ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "requires": { - "string-width": "^4.0.0" + "string-width": "4.2.0" } }, "worker-farm": { @@ -13468,7 +14030,7 @@ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "requires": { - "errno": "~0.1.7" + "errno": "0.1.7" } }, "worker-rpc": { @@ -13476,7 +14038,7 @@ "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", "requires": { - "microevent.ts": "~0.1.1" + "microevent.ts": "0.1.1" } }, "wrap-ansi": { @@ -13484,9 +14046,9 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "3.2.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" }, "dependencies": { "string-width": { @@ -13494,9 +14056,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } } } @@ -13511,10 +14073,10 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "imurmurhash": "0.1.4", + "is-typedarray": "1.0.0", + "signal-exit": "3.0.3", + "typedarray-to-buffer": "3.1.5" } }, "ws": { @@ -13522,7 +14084,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", "requires": { - "async-limiter": "~1.0.0" + "async-limiter": "1.0.1" } }, "xdg-basedir": { @@ -13535,7 +14097,7 @@ "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", "requires": { - "sax": "^1.2.4" + "sax": "1.2.4" } }, "xmlbuilder": { @@ -13554,9 +14116,9 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.0", @@ -13568,16 +14130,16 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "cliui": "5.0.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "13.1.2" }, "dependencies": { "string-width": { @@ -13585,9 +14147,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } } } @@ -13597,8 +14159,8 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "5.3.1", + "decamelize": "1.2.0" }, "dependencies": { "camelcase": { diff --git a/docs/package.json b/docs/package.json index 8ee33384..d2b2580b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,8 +9,8 @@ "deploy": "docusaurus deploy" }, "dependencies": { - "@docusaurus/core": "^2.0.0-alpha.61", - "@docusaurus/preset-classic": "^2.0.0-alpha.61", + "@docusaurus/core": "^2.0.0-alpha.65", + "@docusaurus/preset-classic": "^2.0.0-alpha.65", "classnames": "^2.2.6", "react": "^16.8.4", "react-dom": "^16.8.4" From cd683b8dd6200e214f3a525f435abe9a6fd9faeb Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Mon, 19 Oct 2020 21:41:57 +0100 Subject: [PATCH 255/353] chore(docs): Replace homePageId with slug: / Fix warning ... The docs plugin option homePageId=intro is deprecated. To make a doc the "home", prefer frontmatter: "slug: /" Follow-up to #286. --- docs/docs/intro.md | 1 + docs/docusaurus.config.js | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 60fe0d22..e8810a5d 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -2,6 +2,7 @@ id: intro title: Introduction to ZMK sidebar_label: Introduction +slug: / --- ZMK Firmware is an open source (MIT) keyboard diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 64f9a454..9ebb9c63 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -102,7 +102,6 @@ module.exports = { { docs: { // It is recommended to set document id as docs home page (`docs/` path). - homePageId: "intro", sidebarPath: require.resolve("./sidebars.js"), // Please change this to your repo. editUrl: "https://github.com/zmkfirmware/zmk/edit/main/docs/", From 1e008728b7d68b6635aa562fd86b022bf875d893 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Mon, 19 Oct 2020 21:43:14 +0100 Subject: [PATCH 256/353] chore(blog): Remove deprecated id: wip Fix warning ... 2020-05-24-wip.md - 'id' header option is deprecated. Please use 'slug' option instead. Follow-up to #286. --- docs/blog/2020-05-24-wip.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/blog/2020-05-24-wip.md b/docs/blog/2020-05-24-wip.md index eaf2b795..9b81bdff 100644 --- a/docs/blog/2020-05-24-wip.md +++ b/docs/blog/2020-05-24-wip.md @@ -1,5 +1,4 @@ --- -id: wip title: WIP author: Pete Johanson author_title: Project Creator From 09053020064cfe61ddcd210a252925d1eff3af57 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Wed, 21 Oct 2020 19:35:04 +0100 Subject: [PATCH 257/353] chore(docs): Docusaurus 2.0.0-alpha.66 --- docs/package-lock.json | 15281 +++++++++++++++++++++++++++++++++++++-- docs/package.json | 4 +- 2 files changed, 14742 insertions(+), 543 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index b88b26f7..b76811b3 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -1,8 +1,14223 @@ { "name": "docs", "version": "0.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "0.0.0", + "dependencies": { + "@docusaurus/core": "^2.0.0-alpha.66", + "@docusaurus/preset-classic": "^2.0.0-alpha.66", + "classnames": "^2.2.6", + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.5.1.tgz", + "integrity": "sha512-TAQHRHaCUAR0bNhUHG0CnO6FTx3EMPwZQrjPuNS6kHvCQ/H8dVD0sLsHyM8C7U4j33xPQCWi9TBnSx8cYXNmNw==", + "dependencies": { + "@algolia/cache-common": "4.5.1" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.5.1.tgz", + "integrity": "sha512-Sux+pcedQi9sfScIiQdl6pEaTVl712qM9OblvDhnaeF1v6lf4jyTlRTiBLP7YBLuvO1Yo54W3maf03kmz9PVhA==" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.5.1.tgz", + "integrity": "sha512-fzwAtBFwveuG+E5T/namChEIvdVl0DoV3djV1C078b/JpO5+DeAwuXIJGYbyl950u170n5NEYuIwYG+R6h4lJQ==", + "dependencies": { + "@algolia/cache-common": "4.5.1" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.5.1.tgz", + "integrity": "sha512-2WFEaI7Zf4ljnBsSAS4e+YylZ5glovm78xFg4E1JKA8PE6M+TeIgUY6HO2ouLh2dqQKxc9UfdAT1Loo/dha2iQ==", + "dependencies": { + "@algolia/client-common": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.5.1.tgz", + "integrity": "sha512-bTmZUU8zhZMWBeGEQ/TVqLoL3OOT0benU0HtS3iOnQURwb+AOCv3RsgZvkj2djp+M24Q6P8/L34uBJMmCurbLg==", + "dependencies": { + "@algolia/client-common": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.5.1.tgz", + "integrity": "sha512-5CpIf8IK1hke7q+N4e+A4TWdFXVJ5Qwyaa0xS84DrDO8HQ7vfYbDvG1oYa9hVEtGn6c3WVKPAvuWynK+fXQQCA==", + "dependencies": { + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "node_modules/@algolia/client-recommendation": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.5.1.tgz", + "integrity": "sha512-GiFrNSImoEBUQICjFBEoxPGzrjWji8PY9GeMg2CNvOYcRQ0Xt0Y36v9GN53NLjvB7QdQ2FlE1Cuv/PLUfS/aQQ==", + "dependencies": { + "@algolia/client-common": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.5.1.tgz", + "integrity": "sha512-wjuOTte9Auo9Cg4fL0709PjeJ9rXFh4okYUrOt/2SWqQid6DSdZOp+BtyaHKV3E94sj+SlmMxkMUacYluYg5zA==", + "dependencies": { + "@algolia/client-common": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "node_modules/@algolia/logger-common": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.5.1.tgz", + "integrity": "sha512-ZoVnGriinlLHlkvn5K7djOUn1/1IeTjU8rDzOJ3t06T+2hQytgJghaX7rSwKIeH4CjWMy61w8jLisuGJRBOEeg==" + }, + "node_modules/@algolia/logger-console": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.5.1.tgz", + "integrity": "sha512-1qa7K18+uAgxyWuguayaDS5ViiZFcOjI3J5ACBb0i/n7RsXUo149lP6mwmx6TIU7s135hT0f0TCqnvfMvN1ilA==", + "dependencies": { + "@algolia/logger-common": "4.5.1" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.5.1.tgz", + "integrity": "sha512-tsQz+9pZw9dwPm/wMvZDpsWFZgmghLjXi4c3O4rfwoP/Ikum5fhle5fiR14yb4Lw4WlOQ1AJIHJvrg1qLIG8hQ==", + "dependencies": { + "@algolia/requester-common": "4.5.1" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.5.1.tgz", + "integrity": "sha512-bPCiLvhHKXaka7f5FLtheChToz0yHVhvza64naFJRRh/3kC0nvyrvQ0ogjiydiSrGIfdNDyyTVfKGdk4gS5gyA==" + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.5.1.tgz", + "integrity": "sha512-BfFc2h9eQOKu1gGs3DtQO7GrVZW/rxUgpJVLja4UVQyGplJyTCrFgkTyfl+8rb3MkNgA/S2LNo7cKNSPfpqeAQ==", + "dependencies": { + "@algolia/requester-common": "4.5.1" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.5.1.tgz", + "integrity": "sha512-asPDNToDAPhH0tM6qKGTn1l0wTlNUbekpa1ifZ6v+qhSjo3VdqGyp+2VeciJOBW/wVHXh3HUbAcycvLERRlCLg==", + "dependencies": { + "@algolia/cache-common": "4.5.1", + "@algolia/logger-common": "4.5.1", + "@algolia/requester-common": "4.5.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.1.tgz", + "integrity": "sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==" + }, + "node_modules/@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dependencies": { + "@babel/code-frame": "7.10.4", + "@babel/generator": "7.12.1", + "@babel/helper-module-transforms": "7.12.1", + "@babel/helpers": "7.12.1", + "@babel/parser": "7.12.3", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1", + "convert-source-map": "1.7.0", + "debug": "4.2.0", + "gensync": "1.0.0-beta.1", + "json5": "2.1.3", + "lodash": "4.17.20", + "resolve": "1.17.0", + "semver": "5.7.1", + "source-map": "0.5.7" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "node_modules/@babel/generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", + "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "dependencies": { + "@babel/types": "7.12.1", + "jsesc": "2.5.2", + "source-map": "0.5.7" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dependencies": { + "@babel/helper-explode-assignable-expression": "7.12.1", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-builder-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-builder-react-jsx-experimental": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.1.tgz", + "integrity": "sha512-82to8lR7TofZWbTd3IEZT1xNHfeU/Ef4rDm/GLXddzqDh+yQ19QuGSzqww51aNxVH8rwfRIzL0EUQsvODVhtyw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-module-imports": "7.12.1", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz", + "integrity": "sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==", + "dependencies": { + "@babel/compat-data": "7.12.1", + "@babel/helper-validator-option": "7.12.1", + "browserslist": "4.14.5", + "semver": "5.7.1" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dependencies": { + "@babel/helper-function-name": "7.10.4", + "@babel/helper-member-expression-to-functions": "7.12.1", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/helper-replace-supers": "7.12.1", + "@babel/helper-split-export-declaration": "7.11.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-regex": "7.10.5", + "regexpu-core": "4.7.1" + } + }, + "node_modules/@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dependencies": { + "@babel/helper-function-name": "7.10.4", + "@babel/types": "7.12.1", + "lodash": "4.17.20" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dependencies": { + "@babel/helper-get-function-arity": "7.10.4", + "@babel/template": "7.10.4", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dependencies": { + "@babel/helper-module-imports": "7.12.1", + "@babel/helper-replace-supers": "7.12.1", + "@babel/helper-simple-access": "7.12.1", + "@babel/helper-split-export-declaration": "7.11.0", + "@babel/helper-validator-identifier": "7.10.4", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1", + "lodash": "4.17.20" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dependencies": { + "lodash": "4.17.20" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dependencies": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-wrap-function": "7.12.3", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", + "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "7.12.1", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==" + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dependencies": { + "@babel/helper-function-name": "7.10.4", + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/helpers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", + "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", + "dependencies": { + "@babel/template": "7.10.4", + "@babel/traverse": "7.12.1", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dependencies": { + "@babel/helper-validator-identifier": "7.10.4", + "chalk": "2.4.2", + "js-tokens": "4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", + "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==" + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-remap-async-to-generator": "7.12.1", + "@babel/plugin-syntax-async-generators": "7.8.4" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-dynamic-import": "7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-export-namespace-from": "7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-json-strings": "7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "7.10.4" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", + "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-numeric-separator": "7.10.4" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-transform-parameters": "7.12.1" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "7.12.1", + "@babel/plugin-syntax-optional-chaining": "7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dependencies": { + "@babel/helper-module-imports": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-remap-async-to-generator": "7.12.1" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dependencies": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-define-map": "7.10.5", + "@babel/helper-function-name": "7.10.4", + "@babel/helper-optimise-call-expression": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-replace-supers": "7.12.1", + "@babel/helper-split-export-declaration": "7.11.0", + "globals": "11.12.0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dependencies": { + "@babel/helper-function-name": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dependencies": { + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "babel-plugin-dynamic-import-node": "2.3.3" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dependencies": { + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-simple-access": "7.12.1", + "babel-plugin-dynamic-import-node": "2.3.3" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dependencies": { + "@babel/helper-hoist-variables": "7.10.4", + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-validator-identifier": "7.10.4", + "babel-plugin-dynamic-import-node": "2.3.3" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dependencies": { + "@babel/helper-module-transforms": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "7.12.1" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-replace-supers": "7.12.1" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz", + "integrity": "sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz", + "integrity": "sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw==", + "dependencies": { + "@babel/helper-builder-react-jsx": "7.10.4", + "@babel/helper-builder-react-jsx-experimental": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-jsx": "7.12.1" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.1.tgz", + "integrity": "sha512-IilcGWdN1yNgEGOrB96jbTplRh+V2Pz1EoEwsKsHfX1a/L40cUYuD71Zepa7C+ujv7kJIxnDftWeZbKNEqZjCQ==", + "dependencies": { + "@babel/helper-builder-react-jsx-experimental": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-jsx": "7.12.1" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "7.10.4", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dependencies": { + "regenerator-transform": "0.14.5" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", + "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", + "dependencies": { + "@babel/helper-module-imports": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "resolve": "1.17.0", + "semver": "5.7.1" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "7.12.1" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-regex": "7.10.5" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-syntax-typescript": "7.12.1" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dependencies": { + "@babel/compat-data": "7.12.1", + "@babel/helper-compilation-targets": "7.12.1", + "@babel/helper-module-imports": "7.12.1", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/helper-validator-option": "7.12.1", + "@babel/plugin-proposal-async-generator-functions": "7.12.1", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-dynamic-import": "7.12.1", + "@babel/plugin-proposal-export-namespace-from": "7.12.1", + "@babel/plugin-proposal-json-strings": "7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-numeric-separator": "7.12.1", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-proposal-private-methods": "7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "7.12.1", + "@babel/plugin-syntax-async-generators": "7.8.4", + "@babel/plugin-syntax-class-properties": "7.12.1", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-export-namespace-from": "7.8.3", + "@babel/plugin-syntax-json-strings": "7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-syntax-numeric-separator": "7.10.4", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3", + "@babel/plugin-syntax-optional-chaining": "7.8.3", + "@babel/plugin-syntax-top-level-await": "7.12.1", + "@babel/plugin-transform-arrow-functions": "7.12.1", + "@babel/plugin-transform-async-to-generator": "7.12.1", + "@babel/plugin-transform-block-scoped-functions": "7.12.1", + "@babel/plugin-transform-block-scoping": "7.12.1", + "@babel/plugin-transform-classes": "7.12.1", + "@babel/plugin-transform-computed-properties": "7.12.1", + "@babel/plugin-transform-destructuring": "7.12.1", + "@babel/plugin-transform-dotall-regex": "7.12.1", + "@babel/plugin-transform-duplicate-keys": "7.12.1", + "@babel/plugin-transform-exponentiation-operator": "7.12.1", + "@babel/plugin-transform-for-of": "7.12.1", + "@babel/plugin-transform-function-name": "7.12.1", + "@babel/plugin-transform-literals": "7.12.1", + "@babel/plugin-transform-member-expression-literals": "7.12.1", + "@babel/plugin-transform-modules-amd": "7.12.1", + "@babel/plugin-transform-modules-commonjs": "7.12.1", + "@babel/plugin-transform-modules-systemjs": "7.12.1", + "@babel/plugin-transform-modules-umd": "7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "7.12.1", + "@babel/plugin-transform-new-target": "7.12.1", + "@babel/plugin-transform-object-super": "7.12.1", + "@babel/plugin-transform-parameters": "7.12.1", + "@babel/plugin-transform-property-literals": "7.12.1", + "@babel/plugin-transform-regenerator": "7.12.1", + "@babel/plugin-transform-reserved-words": "7.12.1", + "@babel/plugin-transform-shorthand-properties": "7.12.1", + "@babel/plugin-transform-spread": "7.12.1", + "@babel/plugin-transform-sticky-regex": "7.12.1", + "@babel/plugin-transform-template-literals": "7.12.1", + "@babel/plugin-transform-typeof-symbol": "7.12.1", + "@babel/plugin-transform-unicode-escapes": "7.12.1", + "@babel/plugin-transform-unicode-regex": "7.12.1", + "@babel/preset-modules": "0.1.4", + "@babel/types": "7.12.1", + "core-js-compat": "3.6.5", + "semver": "5.7.1" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "7.12.1", + "@babel/plugin-transform-dotall-regex": "7.12.1", + "@babel/types": "7.12.1", + "esutils": "2.0.3" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz", + "integrity": "sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-react-jsx": "7.12.1", + "@babel/plugin-transform-react-jsx-development": "7.12.1", + "@babel/plugin-transform-react-jsx-self": "7.12.1", + "@babel/plugin-transform-react-jsx-source": "7.12.1", + "@babel/plugin-transform-react-pure-annotations": "7.12.1" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz", + "integrity": "sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-transform-typescript": "7.12.1" + } + }, + "node_modules/@babel/runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", + "dependencies": { + "regenerator-runtime": "0.13.7" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.1.tgz", + "integrity": "sha512-umhPIcMrlBZ2aTWlWjUseW9LjQKxi1dpFlQS8DzsxB//5K+u6GLTC/JliPKHsd5kJVPIU6X/Hy0YvWOYPcMxBw==", + "dependencies": { + "core-js-pure": "3.6.5", + "regenerator-runtime": "0.13.7" + } + }, + "node_modules/@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dependencies": { + "@babel/code-frame": "7.10.4", + "@babel/parser": "7.12.3", + "@babel/types": "7.12.1" + } + }, + "node_modules/@babel/traverse": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", + "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", + "dependencies": { + "@babel/code-frame": "7.10.4", + "@babel/generator": "7.12.1", + "@babel/helper-function-name": "7.10.4", + "@babel/helper-split-export-declaration": "7.11.0", + "@babel/parser": "7.12.3", + "@babel/types": "7.12.1", + "debug": "4.2.0", + "globals": "11.12.0", + "lodash": "4.17.20" + } + }, + "node_modules/@babel/types": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "dependencies": { + "@babel/helper-validator-identifier": "7.10.4", + "lodash": "4.17.20", + "to-fast-properties": "2.0.0" + } + }, + "node_modules/@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" + }, + "node_modules/@docsearch/css": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-1.0.0-alpha.28.tgz", + "integrity": "sha512-1AhRzVdAkrWwhaxTX6/R7SnFHz8yLz1W8I/AldlTrfbNvZs9INk1FZiEFTJdgHaP68nhgQNWSGlQiDiI3y2RYg==" + }, + "node_modules/@docsearch/react": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-1.0.0-alpha.28.tgz", + "integrity": "sha512-XjJOnCBXn+UZmtuDmgzlVIHnnvh6yHVwG4aFq8AXN6xJEIX3f180FvGaowFWAxgdtHplJxFGux0Xx4piHqBzIw==", + "dependencies": { + "@docsearch/css": "^1.0.0-alpha.28", + "@francoischalifour/autocomplete-core": "^1.0.0-alpha.28", + "@francoischalifour/autocomplete-preset-algolia": "^1.0.0-alpha.28", + "algoliasearch": "^4.0.0" + }, + "peerDependencies": { + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/@docusaurus/core": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-alpha.66.tgz", + "integrity": "sha512-9HKqObYoyArpzSTIDguyUXm7z54bpV3dSWSc0PbKGu0Us6zP1TiOuhRDX1diFsKyvjNy7VbCe8XH8LJIdKi5dQ==", + "dependencies": { + "@babel/core": "^7.9.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.9.0", + "@babel/preset-env": "^7.9.0", + "@babel/preset-react": "^7.9.4", + "@babel/preset-typescript": "^7.9.0", + "@babel/runtime": "^7.9.2", + "@babel/runtime-corejs3": "^7.10.4", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", + "@endiliey/static-site-generator-webpack-plugin": "^4.0.0", + "@hapi/joi": "^17.1.1", + "@svgr/webpack": "^5.4.0", + "babel-loader": "^8.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0", + "boxen": "^4.2.0", + "cache-loader": "^4.1.0", + "chalk": "^3.0.0", + "chokidar": "^3.3.0", + "commander": "^4.0.1", + "copy-webpack-plugin": "^6.0.3", + "core-js": "^2.6.5", + "css-loader": "^3.4.2", + "del": "^5.1.0", + "detect-port": "^1.3.0", + "eta": "^1.1.1", + "express": "^4.17.1", + "file-loader": "^6.0.0", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "html-minifier-terser": "^5.0.5", + "html-tags": "^3.1.0", + "html-webpack-plugin": "^4.0.4", + "import-fresh": "^3.2.1", + "inquirer": "^7.2.0", + "is-root": "^2.1.0", + "leven": "^3.1.0", + "lodash": "^4.5.2", + "lodash.flatmap": "^4.5.0", + "lodash.has": "^4.5.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "mini-css-extract-plugin": "^0.8.0", + "nprogress": "^0.2.0", + "null-loader": "^3.0.0", + "optimize-css-assets-webpack-plugin": "^5.0.3", + "pnp-webpack-plugin": "^1.6.4", + "postcss-loader": "^3.0.0", + "postcss-preset-env": "^6.7.0", + "react-dev-utils": "^10.2.1", + "react-helmet": "^6.0.0-beta", + "react-loadable": "^5.5.0", + "react-loadable-ssr-addon": "^0.3.0", + "react-router": "^5.1.2", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.1.2", + "resolve-pathname": "^3.0.0", + "semver": "^6.3.0", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.4", + "std-env": "^2.2.1", + "terser-webpack-plugin": "^4.1.0", + "update-notifier": "^4.1.0", + "url-loader": "^4.1.0", + "wait-file": "^1.0.5", + "webpack": "^4.44.1", + "webpack-bundle-analyzer": "^3.6.1", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2", + "webpackbar": "^4.0.0" + }, + "bin": { + "docusaurus": "bin/docusaurus.js" + }, + "engines": { + "node": ">=10.15.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-alpha.66.tgz", + "integrity": "sha512-IvtrTNeAaynEGgfCbC4CeBgO76Mu76cGogBGv8a84bYeyCOtlxOJoH6JHkJ7T/v5D6lM16qzwx5oqesZ0kZuzA==", + "dependencies": { + "@babel/parser": "^7.9.4", + "@babel/traverse": "^7.9.0", + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@mdx-js/mdx": "^1.5.8", + "@mdx-js/react": "^1.5.8", + "escape-html": "^1.0.3", + "file-loader": "^6.0.0", + "fs-extra": "^8.1.0", + "github-slugger": "^1.3.0", + "gray-matter": "^4.0.2", + "loader-utils": "^1.2.3", + "mdast-util-to-string": "^1.1.0", + "remark-emoji": "^2.1.0", + "stringify-object": "^3.3.0", + "unist-util-visit": "^2.0.2", + "url-loader": "^4.1.0" + }, + "engines": { + "node": ">=10.15.1" + } + }, + "node_modules/@docusaurus/mdx-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@docusaurus/mdx-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-alpha.66.tgz", + "integrity": "sha512-voK5ZUZcUn5blIDakYNKQ42wPMZLfrZnvEJuwh/8S/W1oNbPN935NBu9vL23fHEmp9L2MGykAdaCmev0Su04yQ==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/mdx-loader": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", + "@hapi/joi": "^17.1.1", + "chalk": "^3.0.0", + "feed": "^4.1.0", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.5.2", + "reading-time": "^1.2.0", + "remark-admonitions": "^1.2.1", + "webpack": "^4.44.1" + }, + "engines": { + "node": ">=10.15.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@docusaurus/plugin-content-blog/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@docusaurus/plugin-content-blog/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-alpha.66.tgz", + "integrity": "sha512-jvFKJR7BgjIq6xdmPg+7d2DS1fBeuIfmRTtB/apgfIW8NWO5N0DRYXOj0lgpw/ICwW//o8cLbrN+jkLlzTV/eg==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/mdx-loader": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", + "@hapi/joi": "17.1.1", + "chalk": "^3.0.0", + "execa": "^3.4.0", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "import-fresh": "^3.2.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.19", + "lodash.flatmap": "^4.5.0", + "lodash.groupby": "^4.6.0", + "lodash.pick": "^4.4.0", + "lodash.pickby": "^4.6.0", + "lodash.sortby": "^4.6.0", + "remark-admonitions": "^1.2.1", + "shelljs": "^0.8.4", + "utility-types": "^3.10.0", + "webpack": "^4.44.1" + }, + "engines": { + "node": ">=10.15.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-alpha.66.tgz", + "integrity": "sha512-mY26Aeb/Wf+NFLy70YvXgdLTB+2iPN0SKOVKYwgg6ZN7Nm2kPwEpSVRq2iwiqlWk2G/vOM+ADm99Gxvm3kS61A==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/mdx-loader": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", + "@hapi/joi": "17.1.1", + "globby": "^10.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "remark-admonitions": "^1.2.1", + "slash": "^3.0.0", + "webpack": "^4.44.1" + }, + "engines": { + "node": ">=10.15.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@docusaurus/plugin-content-pages/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@docusaurus/plugin-content-pages/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-alpha.66.tgz", + "integrity": "sha512-9AZaEUxaY0CDOCWXQMfY3TzG79HkquZlVeJOZaA6IvCoK/Oq3B58TMNLiQyA6TA2DYf5ZYQorLJaMd02x5qBQw==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "react-json-view": "^1.19.1" + }, + "engines": { + "node": ">=10.15.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-alpha.66.tgz", + "integrity": "sha512-HVWRLHtlQYpVqH3MHloUmktJMXt7oMDQzBlKzrwAMiWUK1oXFX35DrKjTt2SE2SADpObnwWFjo0E71YT0ApQLw==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66" + }, + "engines": { + "node": ">=10.15.1" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-alpha.66.tgz", + "integrity": "sha512-MVnzApLSQaC38nVS+A/WkXEV4kHeX6Q/KM2DqkLeovNWLBtkQ0aHL3bvn1clAEmB33Pia0v93mzG+I1+9mrquA==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66" + }, + "engines": { + "node": ">=10.15.1" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-alpha.66.tgz", + "integrity": "sha512-ztDevVIREyq8g+QhSGpDqscVqtubcPnEE3a4JwWSALQ2D6JscIxg897axwZSZNUMxrHBuXRjOEYOtVb/O/stVg==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@hapi/joi": "17.1.1", + "fs-extra": "^8.1.0", + "sitemap": "^3.2.2" + }, + "engines": { + "node": ">=10.15.1" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-alpha.66.tgz", + "integrity": "sha512-FjxjchzUS6vOUSr9Pc5kqOSQAnc+cAYsR4pTlqwD2uOJcZMr2vQ6jeKbJnhEmUYwAvzdKOVnCndnxbA+Ii8L3w==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/plugin-content-blog": "2.0.0-alpha.66", + "@docusaurus/plugin-content-docs": "2.0.0-alpha.66", + "@docusaurus/plugin-content-pages": "2.0.0-alpha.66", + "@docusaurus/plugin-debug": "2.0.0-alpha.66", + "@docusaurus/plugin-google-analytics": "2.0.0-alpha.66", + "@docusaurus/plugin-google-gtag": "2.0.0-alpha.66", + "@docusaurus/plugin-sitemap": "2.0.0-alpha.66", + "@docusaurus/theme-classic": "2.0.0-alpha.66", + "@docusaurus/theme-search-algolia": "2.0.0-alpha.66" + }, + "engines": { + "node": ">=10.15.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-alpha.66.tgz", + "integrity": "sha512-WsWqzfzA2gIF5TUMGSbiAeDeNZtKvsgymTQzalcwyhyT/QI0ywcag+03Bmjeq4H3PTC3qU+tkhddO2Rh5w/YCw==", + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/plugin-content-blog": "2.0.0-alpha.66", + "@docusaurus/plugin-content-docs": "2.0.0-alpha.66", + "@docusaurus/plugin-content-pages": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", + "@hapi/joi": "^17.1.1", + "@mdx-js/mdx": "^1.5.8", + "@mdx-js/react": "^1.5.8", + "@types/react-toggle": "^4.0.2", + "clsx": "^1.1.1", + "copy-text-to-clipboard": "^2.2.0", + "infima": "0.2.0-alpha.13", + "lodash": "^4.17.19", + "parse-numeric-range": "^0.0.2", + "prism-react-renderer": "^1.1.0", + "prismjs": "^1.20.0", + "prop-types": "^15.7.2", + "react-router-dom": "^5.1.2", + "react-toggle": "^4.1.1" + }, + "engines": { + "node": ">=10.15.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-alpha.66.tgz", + "integrity": "sha512-5k/Fwt81Gyjv9vPE+gO8mraEHx5IqEmHLwqld5yXj7yix5XrxywkaanHqC0cFJG4MFUBgF6vNjJC8CtfLnT4Tw==", + "dependencies": { + "@docsearch/react": "^1.0.0-alpha.27", + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@hapi/joi": "^17.1.1", + "algoliasearch": "^4.0.0", + "algoliasearch-helper": "^3.1.1", + "clsx": "^1.1.1", + "eta": "^1.1.1", + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=10.15.1" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "node_modules/@docusaurus/types": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-alpha.66.tgz", + "integrity": "sha512-Zd2Kguw0+3faifr83ruIV4i/+KqfqM+zK3DpqCBxdtkP+ORLKbgsIQ48fJ40OOhQrvl38Ay4E+1w7USrrkj4Qg==", + "dependencies": { + "@types/webpack": "^4.41.0", + "commander": "^4.0.1", + "querystring": "0.2.0", + "webpack-merge": "^4.2.2" + } + }, + "node_modules/@docusaurus/utils": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-alpha.66.tgz", + "integrity": "sha512-47jGB+Z3YVM6Xf1hxyNbJLMmc1qoTLmfwSf7NseKSkpjucbc5Ueivr+oVYp5yWoZw5sT5bObmdJYfJoD/RrbOg==", + "dependencies": { + "escape-string-regexp": "^2.0.0", + "fs-extra": "^8.1.0", + "gray-matter": "^4.0.2", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "resolve-pathname": "^3.0.0" + }, + "engines": { + "node": ">=10.15.1" + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-alpha.66.tgz", + "integrity": "sha512-vlenwY3THondey21x1qAUZyDz9qiG7ec2CBM9HgY1Ns8XhrKah9zz7TEGXjqM9lhqMQQRkvcCcveti9EXR0fcA==", + "dependencies": { + "@docusaurus/utils": "2.0.0-alpha.66", + "@hapi/joi": "17.1.1", + "chalk": "^3.0.0" + }, + "engines": { + "node": ">=10.15.1" + } + }, + "node_modules/@docusaurus/utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@endiliey/static-site-generator-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@endiliey/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-3MBqYCs30qk1OBRC697NqhGouYbs71D1B8hrk/AFJC6GwF2QaJOQZtA1JYAaGSe650sZ8r5ppRTtCRXepDWlng==", + "dependencies": { + "bluebird": "3.7.2", + "cheerio": "0.22.0", + "eval": "0.1.4", + "url": "0.11.0", + "webpack-sources": "1.4.3" + } + }, + "node_modules/@francoischalifour/autocomplete-core": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-core/-/autocomplete-core-1.0.0-alpha.28.tgz", + "integrity": "sha512-rL9x+72btViw+9icfBKUJjZj87FgjFrD2esuTUqtj4RAX3s4AuVZiN8XEsfjQBSc6qJk31cxlvqZHC/BIyYXgg==" + }, + "node_modules/@francoischalifour/autocomplete-preset-algolia": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.0.0-alpha.28.tgz", + "integrity": "sha512-bprfNmYt1opFUFEtD2XfY/kEsm13bzHQgU80uMjhuK0DJ914IjolT1GytpkdM6tJ4MBvyiJPP+bTtWO+BZ7c7w==" + }, + "node_modules/@hapi/address": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz", + "integrity": "sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==", + "dependencies": { + "@hapi/hoek": "9.1.0" + } + }, + "node_modules/@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "node_modules/@hapi/formula": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz", + "integrity": "sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==" + }, + "node_modules/@hapi/hoek": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.1.0.tgz", + "integrity": "sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw==" + }, + "node_modules/@hapi/joi": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz", + "integrity": "sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==", + "dependencies": { + "@hapi/address": "4.1.0", + "@hapi/formula": "2.0.0", + "@hapi/hoek": "9.1.0", + "@hapi/pinpoint": "2.0.0", + "@hapi/topo": "5.0.0" + } + }, + "node_modules/@hapi/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-vzXR5MY7n4XeIvLpfl3HtE3coZYO4raKXW766R6DZw/6aLqR26iuZ109K7a0NtF2Db0jxqh7xz2AxkUwpUFybw==" + }, + "node_modules/@hapi/topo": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", + "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", + "dependencies": { + "@hapi/hoek": "9.1.0" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.19.tgz", + "integrity": "sha512-L3eLhEFnV/2bcb9XwOegsRmLHd1oEDQPtTBVezhptQ5U1YM+/WQNzx1apjzVTAyukwOanUXnTUMjRUtqJNgFCg==", + "dependencies": { + "@babel/core": "7.11.6", + "@babel/plugin-syntax-jsx": "7.10.4", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.19", + "babel-plugin-apply-mdx-type-prop": "1.6.19", + "babel-plugin-extract-import-names": "1.6.19", + "camelcase-css": "2.0.1", + "detab": "2.0.3", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "9.1.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.19", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@mdx-js/react": { + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.19.tgz", + "integrity": "sha512-RS37Tagqyp2R0XFPoUZeSbZC5uJQRPhqOHWeT1LEwxESjMWb3VORHz7E827ldeQr3UW6VEQEyq/THegu+bLj6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": "^16.13.1" + } + }, + "node_modules/@mdx-js/util": { + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.19.tgz", + "integrity": "sha512-bkkQNSHz3xSr3KRHUQ2Qk2XhewvvXAOUqjIUKwcQuL4ijOA4tUHZfUgXExi5CpMysrX7izcsyICtXjZHlfJUjg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dependencies": { + "call-me-maybe": "1.0.1", + "glob-to-regexp": "0.3.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dependencies": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "1.1.9" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "1.8.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", + "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "dependencies": { + "mkdirp": "1.0.4" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.4.0.tgz", + "integrity": "sha512-zLl4Fl3NvKxxjWNkqEcpdSOpQ3LGVH2BNFQ6vjaK6sFo2IrSznrhURIPI0HAphKiiIwNYjAfE0TNoQDSZv0U9A==" + }, + "node_modules/@svgr/babel-preset": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.4.0.tgz", + "integrity": "sha512-Gyx7cCxua04DBtyILTYdQxeO/pwfTBev6+eXTbVbxe4HTGhOUW6yo7PSbG2p6eJMl44j6XSequ0ZDP7bl0nu9A==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "5.4.0", + "@svgr/babel-plugin-transform-svg-component": "5.4.0" + } + }, + "node_modules/@svgr/core": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.4.0.tgz", + "integrity": "sha512-hWGm1DCCvd4IEn7VgDUHYiC597lUYhFau2lwJBYpQWDirYLkX4OsXu9IslPgJ9UpP7wsw3n2Ffv9sW7SXJVfqQ==", + "dependencies": { + "@svgr/plugin-jsx": "5.4.0", + "camelcase": "6.1.0", + "cosmiconfig": "6.0.0" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.4.0.tgz", + "integrity": "sha512-+U0TZZpPsP2V1WvVhqAOSTk+N+CjYHdZx+x9UBa1eeeZDXwH8pt0CrQf2+SvRl/h2CAPRFkm+Ey96+jKP8Bsgg==", + "dependencies": { + "@babel/types": "7.12.1" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.4.0.tgz", + "integrity": "sha512-SGzO4JZQ2HvGRKDzRga9YFSqOqaNrgLlQVaGvpZ2Iht2gwRp/tq+18Pvv9kS9ZqOMYgyix2LLxZMY1LOe9NPqw==", + "dependencies": { + "@babel/core": "7.12.3", + "@svgr/babel-preset": "5.4.0", + "@svgr/hast-util-to-babel-ast": "5.4.0", + "svg-parser": "2.0.4" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.4.0.tgz", + "integrity": "sha512-3Cgv3aYi1l6SHyzArV9C36yo4kgwVdF3zPQUC6/aCDUeXAofDYwE5kk3e3oT5ZO2a0N3lB+lLGvipBG6lnG8EA==", + "dependencies": { + "cosmiconfig": "6.0.0", + "merge-deep": "3.0.2", + "svgo": "1.3.2" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.4.0.tgz", + "integrity": "sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg==", + "dependencies": { + "@babel/core": "7.12.3", + "@babel/plugin-transform-react-constant-elements": "7.12.1", + "@babel/preset-env": "7.12.1", + "@babel/preset-react": "7.12.1", + "@svgr/core": "5.4.0", + "@svgr/plugin-jsx": "5.4.0", + "@svgr/plugin-svgo": "5.4.0", + "loader-utils": "2.0.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "1.1.3" + } + }, + "node_modules/@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==" + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dependencies": { + "@types/minimatch": "3.0.3", + "@types/node": "14.11.10" + } + }, + "node_modules/@types/hast": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", + "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" + }, + "node_modules/@types/mdast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", + "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "node_modules/@types/node": { + "version": "14.11.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.10.tgz", + "integrity": "sha512-yV1nWZPlMFpoXyoknm4S56y2nlTAuFYaJuQtYRAOU7xA/FJ9RY0Xm7QOkaYMMmr8ESdHIuUb6oQgR/0+2NqlyA==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, + "node_modules/@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + }, + "node_modules/@types/react": { + "version": "16.9.53", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.53.tgz", + "integrity": "sha512-4nW60Sd4L7+WMXH1D6jCdVftuW7j4Za6zdp6tJ33Rqv0nk1ZAmQKML9ZLD4H0dehA3FZxXR/GM8gXplf82oNGw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-toggle": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/react-toggle/-/react-toggle-4.0.2.tgz", + "integrity": "sha512-sHqfoKFnL0YU2+OC4meNEC8Ptx9FE8/+nFeFvNcdBa6ANA8KpAzj3R9JN8GtrvlLgjKDoYgI7iILgXYcTPo2IA==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==" + }, + "node_modules/@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==" + }, + "node_modules/@types/uglify-js": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.0.tgz", + "integrity": "sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q==", + "dependencies": { + "source-map": "0.6.1" + } + }, + "node_modules/@types/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" + }, + "node_modules/@types/webpack": { + "version": "4.41.22", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.22.tgz", + "integrity": "sha512-JQDJK6pj8OMV9gWOnN1dcLCyU9Hzs6lux0wBO4lr1+gyEhIBR9U3FMrz12t2GPkg110XAxEAw2WHF6g7nZIbRQ==", + "dependencies": { + "@types/anymatch": "1.3.1", + "@types/node": "14.11.10", + "@types/tapable": "1.0.6", + "@types/uglify-js": "3.11.0", + "@types/webpack-sources": "2.0.0", + "source-map": "0.6.1" + } + }, + "node_modules/@types/webpack-sources": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz", + "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==", + "dependencies": { + "@types/node": "14.11.10", + "@types/source-list-map": "0.1.2", + "source-map": "0.7.3" + } + }, + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "node_modules/@types/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dependencies": { + "@xtuc/ieee754": "1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dependencies": { + "mime-types": "2.1.27", + "negotiator": "0.6.2" + } + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "node_modules/address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "2.2.0", + "indent-string": "4.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "3.1.3", + "fast-json-stable-stringify": "2.1.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.4.0" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "node_modules/algoliasearch": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.5.1.tgz", + "integrity": "sha512-b6yT1vWMlBdVObQipKxvt0M6SEvGetVj+FFFlo0Fy06gkdj6WCJaS4t10Q/hC3I2VG9QmpCqlK3Esgg1y1E+uw==", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.5.1", + "@algolia/cache-common": "4.5.1", + "@algolia/cache-in-memory": "4.5.1", + "@algolia/client-account": "4.5.1", + "@algolia/client-analytics": "4.5.1", + "@algolia/client-common": "4.5.1", + "@algolia/client-recommendation": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/logger-common": "4.5.1", + "@algolia/logger-console": "4.5.1", + "@algolia/requester-browser-xhr": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/requester-node-http": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.2.2.tgz", + "integrity": "sha512-/3XvE33R+gQKaiPdy3nmHYqhF8hqIu8xnlOicVxb1fD6uMFmxW8rGLzzrRfsPfxgAfm+c1NslLb3TzQVIB8aVA==", + "dependencies": { + "events": "^1.1.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 5" + } + }, + "node_modules/algoliasearch-helper/node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "node_modules/ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dependencies": { + "string-width": "3.1.0" + } + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" + } + }, + "node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dependencies": { + "type-fest": "0.11.0" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" + }, + "node_modules/ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "1.9.3" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dependencies": { + "normalize-path": "3.0.0", + "picomatch": "2.2.2" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "1.0.3" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "4.11.9", + "inherits": "2.0.4", + "minimalistic-assert": "1.0.1", + "safer-buffer": "2.1.2" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dependencies": { + "object-assign": "4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "4.17.20" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "node_modules/autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dependencies": { + "browserslist": "4.14.5", + "caniuse-lite": "1.0.30001148", + "colorette": "1.2.1", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "7.0.35", + "postcss-value-parser": "4.1.0" + } + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dependencies": { + "chalk": "1.1.3", + "esutils": "2.0.3", + "js-tokens": "3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dependencies": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "2.1.1" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "node_modules/babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dependencies": { + "find-cache-dir": "2.1.0", + "loader-utils": "1.4.0", + "mkdirp": "0.5.5", + "pify": "4.0.1", + "schema-utils": "2.7.1" + } + }, + "node_modules/babel-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop": { + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.19.tgz", + "integrity": "sha512-zAuL11EaBbeNpfTqsa9xP7mkvX3V4LaEV6M9UUaI4zQtTqN5JwvDyhNsALQs5Ud7WFQSXtoqU74saTgE+rgZOw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.19" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@babel/core": "^7.11.6" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "4.1.1" + } + }, + "node_modules/babel-plugin-extract-import-names": { + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.19.tgz", + "integrity": "sha512-5kbSEhQdg1ybR9OnxybbyR1PXw51z6T6ZCtX3vYSU6t1pC/+eBlSzWXyU2guStbwQgJyxS+mHWSNnL7PUdzAlw==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.3.0", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.2", + "pascalcase": "0.1.1" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "1.0.2" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "6.0.3" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "6.0.3" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" + } + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=" + }, + "node_modules/base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "node_modules/bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dependencies": { + "bluebird": "3.7.2", + "check-types": "8.0.3", + "hoopy": "0.1.4", + "tryer": "1.0.1" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "node_modules/binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dependencies": { + "bytes": "3.1.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "1.6.18" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dependencies": { + "array-flatten": "2.1.2", + "deep-equal": "1.1.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" + } + }, + "node_modules/bonjour/node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "node_modules/boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dependencies": { + "ansi-align": "3.0.0", + "camelcase": "5.3.1", + "chalk": "3.0.0", + "cli-boxes": "2.2.1", + "string-width": "4.2.0", + "term-size": "2.2.0", + "type-fest": "0.8.1", + "widest-line": "3.1.0" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "7.0.1" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.4", + "safe-buffer": "5.1.2" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "1.2.0", + "browserify-des": "1.0.2", + "evp_bytestokey": "1.0.3" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "1.0.4", + "des.js": "1.0.1", + "inherits": "2.0.4", + "safe-buffer": "5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dependencies": { + "bn.js": "4.11.9", + "randombytes": "2.1.0" + } + }, + "node_modules/browserify-rsa/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "5.1.3", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "elliptic": "6.5.3", + "inherits": "2.0.4", + "parse-asn1": "5.1.6", + "readable-stream": "3.6.0", + "safe-buffer": "5.2.1" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "1.0.11" + } + }, + "node_modules/browserslist": { + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", + "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "dependencies": { + "caniuse-lite": "1.0.30001148", + "electron-to-chromium": "1.3.582", + "escalade": "3.1.1", + "node-releases": "1.1.63" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "1.3.1", + "ieee754": "1.1.13", + "isarray": "1.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "node_modules/buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", + "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "node_modules/cacache": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "dependencies": { + "@npmcli/move-file": "1.0.1", + "chownr": "2.0.0", + "fs-minipass": "2.1.0", + "glob": "7.1.6", + "infer-owner": "1.0.4", + "lru-cache": "6.0.0", + "minipass": "3.1.3", + "minipass-collect": "1.0.2", + "minipass-flush": "1.0.5", + "minipass-pipeline": "1.2.4", + "mkdirp": "1.0.4", + "p-map": "4.0.0", + "promise-inflight": "1.0.1", + "rimraf": "3.0.2", + "ssri": "8.0.0", + "tar": "6.0.5", + "unique-filename": "1.1.1" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "1.0.0", + "component-emitter": "1.3.0", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.1", + "to-object-path": "0.3.0", + "union-value": "1.0.1", + "unset-value": "1.0.0" + } + }, + "node_modules/cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", + "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", + "dependencies": { + "buffer-json": "2.0.0", + "find-cache-dir": "3.3.1", + "loader-utils": "1.4.0", + "mkdirp": "0.5.5", + "neo-async": "2.6.2", + "schema-utils": "2.7.1" + } + }, + "node_modules/cache-loader/node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dependencies": { + "commondir": "1.0.1", + "make-dir": "3.1.0", + "pkg-dir": "4.2.0" + } + }, + "node_modules/cache-loader/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "5.0.0", + "path-exists": "4.0.0" + } + }, + "node_modules/cache-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/cache-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "node_modules/cache-loader/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "4.1.0" + } + }, + "node_modules/cache-loader/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "6.3.0" + } + }, + "node_modules/cache-loader/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "2.3.0" + } + }, + "node_modules/cache-loader/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "node_modules/cache-loader/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "4.1.0" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "1.0.2", + "get-stream": "5.2.0", + "http-cache-semantics": "4.1.0", + "keyv": "3.1.0", + "lowercase-keys": "2.0.0", + "normalize-url": "4.5.0", + "responselike": "1.0.2" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "3.0.0" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dependencies": { + "callsites": "2.0.0" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dependencies": { + "caller-callsite": "2.0.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "node_modules/camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "dependencies": { + "pascal-case": "3.1.1", + "tslib": "1.14.1" + } + }, + "node_modules/camelcase": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.1.0.tgz", + "integrity": "sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ==" + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "4.14.5", + "caniuse-lite": "1.0.30001148", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001148", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz", + "integrity": "sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw==" + }, + "node_modules/ccount": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", + "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "2.0.1" + } + }, + "node_modules/chalk/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "1.1.4" + } + }, + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "4.0.0" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==" + }, + "node_modules/cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "dependencies": { + "css-select": "1.2.0", + "dom-serializer": "0.1.1", + "entities": "1.1.2", + "htmlparser2": "3.10.1", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.2", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" + } + }, + "node_modules/chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dependencies": { + "anymatch": "3.1.1", + "braces": "3.0.2", + "fsevents": "2.1.3", + "glob-parent": "5.1.1", + "is-binary-path": "2.1.0", + "is-glob": "4.0.1", + "normalize-path": "3.0.0", + "readdirp": "3.5.0" + }, + "optionalDependencies": { + "fsevents": "2.1.3" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "2.0.4", + "safe-buffer": "5.1.2" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "0.1.6" + } + }, + "node_modules/classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "node_modules/clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dependencies": { + "source-map": "0.6.1" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "3.1.0" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "node_modules/clipboard": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", + "optional": true, + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "3.1.0", + "strip-ansi": "5.2.0", + "wrap-ansi": "5.1.0" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" + } + }, + "node_modules/clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "dependencies": { + "for-own": "0.1.5", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "lazy-cache": "1.0.4", + "shallow-clone": "0.1.2" + } + }, + "node_modules/clone-deep/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "1.0.1" + } + }, + "node_modules/clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "1.5.4", + "chalk": "2.4.2", + "q": "1.5.1" + } + }, + "node_modules/coa/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dependencies": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "node_modules/color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dependencies": { + "color-convert": "1.9.3", + "color-string": "1.5.4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dependencies": { + "color-name": "1.1.3", + "simple-swizzle": "0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": "1.44.0" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "1.3.7", + "bytes": "3.0.0", + "compressible": "2.0.18", + "debug": "2.6.9", + "on-headers": "1.0.2", + "safe-buffer": "5.1.2", + "vary": "1.1.2" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dependencies": { + "buffer-from": "1.1.1", + "inherits": "2.0.4", + "readable-stream": "2.3.7", + "typedarray": "0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "5.3.0", + "graceful-fs": "4.2.4", + "make-dir": "3.1.0", + "unique-string": "2.0.0", + "write-file-atomic": "3.0.3", + "xdg-basedir": "4.0.0" + } + }, + "node_modules/configstore/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "6.3.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "node_modules/consola": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.0.tgz", + "integrity": "sha512-vlcSGgdYS26mPf7qNi+dCisbhiyDnrN1zaRbw3CSuc2wGOMEGGPsp46PdRG5gqXwgtJfjxDkxRNAgRPr1B77vQ==" + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dependencies": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.5", + "rimraf": "2.7.1", + "run-queue": "1.0.3" + } + }, + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "7.1.6" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "node_modules/copy-text-to-clipboard": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-2.2.0.tgz", + "integrity": "sha512-WRvoIdnTs1rgPMkgA2pUOa/M4Enh2uzCwdKsOMYNAJiz/4ZvEJgmbF4OmninPmlFdAWisfeh0tH+Cpf7ni3RqQ==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz", + "integrity": "sha512-VH2ZTMIBsx4p++Lmpg77adZ0KUyM5gFR/9cuTrbneNnJlcQXUFvsNariPqq2dq2kV3F2skHiDGPQCyKWy1+U0Q==", + "dependencies": { + "cacache": "15.0.5", + "fast-glob": "3.2.4", + "find-cache-dir": "3.3.1", + "glob-parent": "5.1.1", + "globby": "11.0.1", + "loader-utils": "2.0.0", + "normalize-path": "3.0.0", + "p-limit": "3.0.2", + "schema-utils": "3.0.0", + "serialize-javascript": "5.0.1", + "webpack-sources": "1.4.3" + } + }, + "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dependencies": { + "commondir": "1.0.1", + "make-dir": "3.1.0", + "pkg-dir": "4.2.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "5.0.0", + "path-exists": "4.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dependencies": { + "array-union": "2.1.0", + "dir-glob": "3.0.1", + "fast-glob": "3.2.4", + "ignore": "5.1.8", + "merge2": "1.4.1", + "slash": "3.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "4.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "6.3.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "dependencies": { + "p-try": "2.2.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "2.3.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "2.2.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "4.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dependencies": { + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "node_modules/core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dependencies": { + "browserslist": "4.14.5", + "semver": "7.0.0" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + }, + "node_modules/core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "4.0.0", + "import-fresh": "3.2.1", + "parse-json": "5.1.0", + "path-type": "4.0.0", + "yaml": "1.10.0" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "4.11.9", + "elliptic": "6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "1.0.4", + "inherits": "2.0.4", + "md5.js": "1.3.5", + "ripemd160": "2.0.2", + "sha.js": "2.4.11" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "inherits": "2.0.4", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dependencies": { + "path-key": "3.1.1", + "shebang-command": "2.0.0", + "which": "2.0.2" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "1.0.1", + "browserify-sign": "4.2.1", + "create-ecdh": "4.0.4", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", + "inherits": "2.0.4", + "pbkdf2": "3.1.1", + "public-encrypt": "4.0.3", + "randombytes": "2.1.0", + "randomfill": "1.0.4" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "node_modules/css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dependencies": { + "postcss": "7.0.35", + "timsort": "0.3.0" + } + }, + "node_modules/css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "dependencies": { + "postcss": "7.0.35", + "postcss-selector-parser": "5.0.0" + } + }, + "node_modules/css-has-pseudo/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dependencies": { + "cssesc": "2.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "node_modules/css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "dependencies": { + "camelcase": "5.3.1", + "cssesc": "3.0.0", + "icss-utils": "4.1.1", + "loader-utils": "1.4.0", + "normalize-path": "3.0.0", + "postcss": "7.0.35", + "postcss-modules-extract-imports": "2.0.0", + "postcss-modules-local-by-default": "3.0.3", + "postcss-modules-scope": "2.2.0", + "postcss-modules-values": "3.0.0", + "postcss-value-parser": "4.1.0", + "schema-utils": "2.7.1", + "semver": "6.3.0" + } + }, + "node_modules/css-loader/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "node_modules/css-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/css-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dependencies": { + "boolbase": "1.0.0", + "css-what": "2.1.3", + "domutils": "1.5.1", + "nth-check": "1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "0.6.1" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + }, + "node_modules/cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "node_modules/cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dependencies": { + "cosmiconfig": "5.2.1", + "cssnano-preset-default": "4.0.7", + "is-resolvable": "1.1.0", + "postcss": "7.0.35" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dependencies": { + "css-declaration-sorter": "4.0.1", + "cssnano-util-raw-cache": "4.0.1", + "postcss": "7.0.35", + "postcss-calc": "7.0.5", + "postcss-colormin": "4.0.3", + "postcss-convert-values": "4.0.1", + "postcss-discard-comments": "4.0.2", + "postcss-discard-duplicates": "4.0.2", + "postcss-discard-empty": "4.0.1", + "postcss-discard-overridden": "4.0.1", + "postcss-merge-longhand": "4.0.11", + "postcss-merge-rules": "4.0.3", + "postcss-minify-font-values": "4.0.2", + "postcss-minify-gradients": "4.0.2", + "postcss-minify-params": "4.0.2", + "postcss-minify-selectors": "4.0.2", + "postcss-normalize-charset": "4.0.1", + "postcss-normalize-display-values": "4.0.2", + "postcss-normalize-positions": "4.0.2", + "postcss-normalize-repeat-style": "4.0.2", + "postcss-normalize-string": "4.0.2", + "postcss-normalize-timing-functions": "4.0.2", + "postcss-normalize-unicode": "4.0.1", + "postcss-normalize-url": "4.0.1", + "postcss-normalize-whitespace": "4.0.2", + "postcss-ordered-values": "4.1.2", + "postcss-reduce-initial": "4.0.3", + "postcss-reduce-transforms": "4.0.2", + "postcss-svgo": "4.0.2", + "postcss-unique-selectors": "4.0.1" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "node_modules/cssnano/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dependencies": { + "import-fresh": "2.0.0", + "is-directory": "0.3.1", + "js-yaml": "3.14.0", + "parse-json": "4.0.0" + } + }, + "node_modules/cssnano/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dependencies": { + "caller-path": "2.0.0", + "resolve-from": "3.0.0" + } + }, + "node_modules/cssnano/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" + } + }, + "node_modules/cssnano/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "node_modules/csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dependencies": { + "css-tree": "1.0.0-alpha.39" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dependencies": { + "mdn-data": "2.0.6", + "source-map": "0.6.1" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/csstype": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.3.tgz", + "integrity": "sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag==" + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "node_modules/debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dependencies": { + "ms": "2.1.2" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dependencies": { + "mimic-response": "1.0.1" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dependencies": { + "is-arguments": "1.0.4", + "is-date-object": "1.0.2", + "is-regex": "1.1.1", + "object-is": "1.1.3", + "object-keys": "1.1.1", + "regexp.prototype.flags": "1.3.0" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dependencies": { + "execa": "1.0.0", + "ip-regex": "2.1.0" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "1.1.1" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "6.0.3" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "6.0.3" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" + } + }, + "node_modules/del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dependencies": { + "globby": "10.0.2", + "graceful-fs": "4.2.4", + "is-glob": "4.0.1", + "is-path-cwd": "2.2.0", + "is-path-inside": "3.0.2", + "p-map": "3.0.0", + "rimraf": "3.0.2", + "slash": "3.0.0" + } + }, + "node_modules/del/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dependencies": { + "aggregate-error": "3.1.0" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "2.0.4", + "minimalistic-assert": "1.0.1" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/detab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.3.tgz", + "integrity": "sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A==", + "dependencies": { + "repeat-string": "^1.5.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, + "node_modules/detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dependencies": { + "address": "1.1.2", + "debug": "2.6.9" + } + }, + "node_modules/detect-port/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "4.11.9", + "miller-rabin": "4.0.1", + "randombytes": "2.1.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "4.0.0" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "node_modules/dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dependencies": { + "ip": "1.1.5", + "safe-buffer": "5.1.2" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dependencies": { + "buffer-indexof": "1.1.1" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "0.4.0" + } + }, + "node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dependencies": { + "domelementtype": "1.3.1", + "entities": "1.1.2" + } + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dependencies": { + "domelementtype": "1.3.1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dependencies": { + "dom-serializer": "0.1.1", + "domelementtype": "1.3.1" + } + }, + "node_modules/dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "dependencies": { + "no-case": "3.0.3", + "tslib": "1.14.1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "2.0.0" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "1.4.4", + "inherits": "2.0.4", + "readable-stream": "2.3.7", + "stream-shift": "1.0.1" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.582", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.582.tgz", + "integrity": "sha512-0nCJ7cSqnkMC+kUuPs0YgklFHraWGl/xHqtZWWtOeVtyi+YqkoAOMGuZQad43DscXCQI/yizcTa3u6B5r+BLww==" + }, + "node_modules/elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dependencies": { + "bn.js": "4.11.9", + "brorand": "1.1.0", + "hash.js": "1.1.7", + "hmac-drbg": "1.0.1", + "inherits": "2.0.4", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "node_modules/emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dependencies": { + "graceful-fs": "4.2.4", + "memory-fs": "0.5.0", + "tapable": "1.1.3" + } + }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dependencies": { + "errno": "0.1.7", + "readable-stream": "2.3.7" + } + }, + "node_modules/enhanced-resolve/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/enhanced-resolve/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dependencies": { + "prr": "1.0.1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dependencies": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-negative-zero": "2.0.0", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "1.2.2", + "is-date-object": "1.0.2", + "is-symbol": "1.0.3" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dependencies": { + "esrecurse": "4.3.0", + "estraverse": "4.3.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "5.2.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "node_modules/eta": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-1.11.0.tgz", + "integrity": "sha512-lfqIE6qD55WFYT6E0phTBUe0sapHJhfvRDB7jSpXxFGwzDaP69kQqRyF7krBe8I1QzF5nE1yAByiIOLB630x4Q==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "node_modules/eval": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.4.tgz", + "integrity": "sha512-npGsebJejyjMRnLdFu+T/97dnigqIU0Ov3IGrZ8ygd1v7RL1vGkEKtvyWZobqUH1AQgKlg0Yqqe2BtMA9/QZLw==", + "dependencies": { + "require-like": "0.1.2" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" + }, + "node_modules/eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dependencies": { + "original": "1.0.2" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "1.3.5", + "safe-buffer": "5.1.2" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.3", + "strip-eof": "1.0.0" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.7.1", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "1.0.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "2.0.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dependencies": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "0.1.6" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dependencies": { + "accepts": "1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.6", + "qs": "6.7.0", + "range-parser": "1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "1.5.0", + "type-is": "1.6.18", + "utils-merge": "1.0.1", + "vary": "1.1.2" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "0.7.0", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "1.0.2" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "6.0.3" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "6.0.3" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dependencies": { + "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.walk": "1.2.4", + "glob-parent": "5.1.1", + "merge2": "1.4.1", + "micromatch": "4.0.2", + "picomatch": "2.2.2" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "dependencies": { + "punycode": "1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dependencies": { + "reusify": "1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dependencies": { + "websocket-driver": "0.6.5" + } + }, + "node_modules/fbemitter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-2.1.1.tgz", + "integrity": "sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU=", + "dependencies": { + "fbjs": "^0.8.4" + } + }, + "node_modules/fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "dependencies": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "node_modules/fbjs/node_modules/core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3." + }, + "node_modules/feed": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.1.tgz", + "integrity": "sha512-l28KKcK1J/u3iq5dRDmmoB2p7dtBfACC2NqJh4dI2kFptxH0asfjmOfcxqh5Sv8suAlVa73gZJ4REY5RrafVvg==", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "1.0.5" + } + }, + "node_modules/file-loader": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", + "integrity": "sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==", + "dependencies": { + "loader-utils": "2.0.0", + "schema-utils": "3.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dependencies": { + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "5.0.1" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.3", + "statuses": "1.5.0", + "unpipe": "1.0.0" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dependencies": { + "commondir": "1.0.1", + "make-dir": "2.1.0", + "pkg-dir": "3.0.0" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "3.0.0" + } + }, + "node_modules/flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "2.0.4", + "readable-stream": "2.3.7" + } + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/flux": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/flux/-/flux-3.1.3.tgz", + "integrity": "sha1-0jvtUVp5oi2TOrU6tK2hnQWy8Io=", + "dependencies": { + "fbemitter": "^2.0.0", + "fbjs": "^0.8.0" + }, + "peerDependencies": { + "react": "^15.0.2 || ^16.0.0-beta || ^16.0.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "node_modules/for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dependencies": { + "for-in": "1.0.2" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "dependencies": { + "babel-code-frame": "6.26.0", + "chalk": "2.4.2", + "chokidar": "3.4.3", + "micromatch": "3.1.10", + "minimatch": "3.0.4", + "semver": "5.7.1", + "tapable": "1.1.3", + "worker-rpc": "0.1.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dependencies": { + "map-cache": "0.2.2" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dependencies": { + "inherits": "2.0.4", + "readable-stream": "2.3.7" + } + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "4.2.4", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "3.1.3" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dependencies": { + "graceful-fs": "4.2.4", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.7" + } + }, + "node_modules/fs-write-stream-atomic/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/fs-write-stream-atomic/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "3.0.0" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "node_modules/github-slugger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", + "dependencies": { + "emoji-regex": ">=6.0.0 <=6.1.1" + } + }, + "node_modules/github-slugger/node_modules/emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=" + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dependencies": { + "is-glob": "4.0.1" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "node_modules/global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dependencies": { + "ini": "1.3.5" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "3.0.0" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "1.3.5", + "kind-of": "6.0.3", + "which": "1.3.1" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "2.0.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dependencies": { + "@types/glob": "7.1.3", + "array-union": "2.1.0", + "dir-glob": "3.0.1", + "fast-glob": "3.2.4", + "glob": "7.1.6", + "ignore": "5.1.8", + "merge2": "1.4.1", + "slash": "3.0.0" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "optional": true, + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "0.14.0", + "@szmarczak/http-timer": "1.1.2", + "cacheable-request": "6.1.0", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "4.1.0", + "lowercase-keys": "1.0.1", + "mimic-response": "1.0.1", + "p-cancelable": "1.1.0", + "to-readable-stream": "1.0.0", + "url-parse-lax": "3.0.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "node_modules/gray-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", + "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", + "dependencies": { + "js-yaml": "3.14.0", + "kind-of": "6.0.3", + "section-matter": "1.0.0", + "strip-bom-string": "1.0.0" + } + }, + "node_modules/gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dependencies": { + "duplexer": "0.1.2", + "pify": "4.0.1" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "1.1.1" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dependencies": { + "ansi-regex": "2.1.1" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dependencies": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dependencies": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "2.0.4", + "readable-stream": "3.6.0", + "safe-buffer": "5.2.1" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "2.0.4", + "minimalistic-assert": "1.0.1" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.0.tgz", + "integrity": "sha512-NJvMYU3GlMLs7hN3CRbsNlMzusVNkYBogVWDGybsuuVQ336gFLiD+q9qtFZT2meSHzln3pNISZWTASWothMSMg==", + "dependencies": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.0.tgz", + "integrity": "sha512-3ZYnfKenbbkhhNdmOQqgH10vnvPivTdsOJCri+APn0Kty+nRkDHArnaX9Hiaf8H+Ig+vkNptL+SRY/6RwWJk1Q==", + "dependencies": { + "@types/parse5": "^5.0.0", + "ccount": "^1.0.0", + "hastscript": "^5.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz", + "integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "dependencies": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", + "dependencies": { + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "7.12.1", + "loose-envify": "1.4.0", + "resolve-pathname": "3.0.0", + "tiny-invariant": "1.1.0", + "tiny-warning": "1.0.3", + "value-equal": "1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "1.1.7", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "16.13.1" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dependencies": { + "inherits": "2.0.4", + "obuf": "1.1.2", + "readable-stream": "2.3.7", + "wbuf": "1.7.3" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "node_modules/html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "node_modules/html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + }, + "node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dependencies": { + "camel-case": "4.1.1", + "clean-css": "4.2.3", + "commander": "4.1.1", + "he": "1.2.0", + "param-case": "3.0.3", + "relateurl": "0.2.7", + "terser": "4.8.0" + } + }, + "node_modules/html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==" + }, + "node_modules/html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz", + "integrity": "sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==", + "dependencies": { + "@types/html-minifier-terser": "5.1.1", + "@types/tapable": "1.0.6", + "@types/webpack": "4.41.22", + "html-minifier-terser": "5.1.1", + "loader-utils": "1.4.0", + "lodash": "4.17.20", + "pretty-error": "2.1.2", + "tapable": "1.1.3", + "util.promisify": "1.0.0" + } + }, + "node_modules/html-webpack-plugin/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "node_modules/html-webpack-plugin/node_modules/util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dependencies": { + "define-properties": "1.1.3", + "object.getownpropertydescriptors": "2.1.0" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dependencies": { + "domelementtype": "1.3.1", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.2", + "inherits": "2.0.4", + "readable-stream": "3.6.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dependencies": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": "1.5.0", + "toidentifier": "1.0.0" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "4.0.7", + "follow-redirects": "1.13.0", + "requires-port": "1.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dependencies": { + "http-proxy": "1.18.1", + "is-glob": "4.0.1", + "lodash": "4.17.20", + "micromatch": "3.1.10" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/http-proxy-middleware/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/http-proxy-middleware/node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": "2.1.2" + } + }, + "node_modules/icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "node_modules/immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" + }, + "node_modules/import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dependencies": { + "import-from": "2.1.0" + } + }, + "node_modules/import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dependencies": { + "parent-module": "1.0.1", + "resolve-from": "4.0.0" + } + }, + "node_modules/import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dependencies": { + "resolve-from": "3.0.0" + } + }, + "node_modules/import-from/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dependencies": { + "pkg-dir": "3.0.0", + "resolve-cwd": "2.0.0" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "node_modules/infima": { + "version": "0.2.0-alpha.13", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.13.tgz", + "integrity": "sha512-BxCZ1pMcUF0PcL4WV07l/lvaeBBdUUw7uVqNyyeGAutzDpkDyFOl5gOv9wFAJKLo5yerPNFXxFPgDitNjctqIA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dependencies": { + "ansi-escapes": "4.3.1", + "chalk": "4.1.0", + "cli-cursor": "3.1.0", + "cli-width": "3.0.0", + "external-editor": "3.1.0", + "figures": "3.2.0", + "lodash": "4.17.20", + "mute-stream": "0.0.8", + "run-async": "2.4.1", + "rxjs": "6.6.3", + "string-width": "4.2.0", + "strip-ansi": "6.0.0", + "through": "2.3.8" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "2.0.1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dependencies": { + "ansi-styles": "4.3.0", + "supports-color": "7.2.0" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "1.1.4" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "5.0.0" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "4.0.0" + } + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dependencies": { + "default-gateway": "4.2.0", + "ipaddr.js": "1.9.1" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "2.1.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "2.0.0" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dependencies": { + "css-color-names": "0.0.4", + "hex-color-regex": "1.1.0", + "hsl-regex": "1.0.0", + "hsla-regex": "1.0.0", + "rgb-regex": "1.0.1", + "rgba-regex": "1.0.0" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "node_modules/is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dependencies": { + "is-extglob": "2.1.1" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dependencies": { + "global-dirs": "2.0.1", + "is-path-inside": "3.0.2" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" + }, + "node_modules/is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dependencies": { + "is-path-inside": "2.1.0" + } + }, + "node_modules/is-path-in-cwd/node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dependencies": { + "path-is-inside": "1.0.2" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "3.0.1" + } + }, + "node_modules/is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dependencies": { + "has-symbols": "1.0.1" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "node_modules/is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dependencies": { + "html-comment-regex": "1.1.2" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dependencies": { + "has-symbols": "1.0.1" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "2.1.1" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "node_modules/isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dependencies": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "26.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.5.0.tgz", + "integrity": "sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug==", + "dependencies": { + "@types/node": "14.11.10", + "merge-stream": "2.0.0", + "supports-color": "7.2.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "4.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dependencies": { + "argparse": "1.0.10", + "esprima": "4.0.1" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dependencies": { + "graceful-fs": "4.2.4" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "node_modules/last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dependencies": { + "lodash": "4.17.20", + "webpack-sources": "1.4.3" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "6.5.0" + } + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "2.1.3" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "3.0.0", + "path-exists": "3.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "node_modules/lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "node_modules/lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "node_modules/lodash.chunk": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", + "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=" + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "node_modules/lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "node_modules/lodash.flatmap": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", + "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "node_modules/lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=" + }, + "node_modules/lodash.has": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "node_modules/lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=" + }, + "node_modules/lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "node_modules/lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "node_modules/lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dependencies": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.2.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dependencies": { + "lodash._reinterpolate": "3.0.0" + } + }, + "node_modules/lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "node_modules/loglevel": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", + "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "4.0.0" + } + }, + "node_modules/lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "4.0.0" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "4.0.1", + "semver": "5.7.1" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dependencies": { + "object-visit": "1.0.1" + } + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "3.1.0", + "inherits": "2.0.4", + "safe-buffer": "5.1.2" + } + }, + "node_modules/mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "dependencies": { + "unist-util-remove": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz", + "integrity": "sha512-BAv2iUm/e6IK/b2/t+Fx69EL/AGcq/IG2S+HxHjDJGfLJtd6i9SZUS76aC9cig+IEucsqxKTR0ot3m933R3iuA==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-9.1.1.tgz", + "integrity": "sha512-vpMWKFKM2mnle+YbNgDXxx95vv0CoLU0v/l3F5oFAG5DV7qwkZVWA206LsAdOnEVyf5vQcLnb3cWJywu7mUxsQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.3", + "mdast-util-definitions": "^3.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dependencies": { + "errno": "0.1.7", + "readable-stream": "2.3.7" + } + }, + "node_modules/memory-fs/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/memory-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/merge-deep": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", + "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "dependencies": { + "arr-union": "3.1.0", + "clone-deep": "0.2.4", + "kind-of": "3.2.2" + } + }, + "node_modules/merge-deep/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "node_modules/microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dependencies": { + "braces": "3.0.2", + "picomatch": "2.2.2" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "4.11.9", + "brorand": "1.1.0" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dependencies": { + "mime-db": "1.44.0" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "node_modules/mini-create-react-context": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", + "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", + "dependencies": { + "@babel/runtime": "7.12.1", + "tiny-warning": "1.0.3" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", + "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", + "dependencies": { + "loader-utils": "1.4.0", + "normalize-url": "1.9.1", + "schema-utils": "1.0.0", + "webpack-sources": "1.4.3" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "1.1.11" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dependencies": { + "yallist": "4.0.0" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dependencies": { + "minipass": "3.1.3" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "3.1.3" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "3.1.3" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "3.1.3", + "yallist": "4.0.0" + } + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dependencies": { + "concat-stream": "1.6.2", + "duplexify": "3.7.1", + "end-of-stream": "1.4.4", + "flush-write-stream": "1.1.1", + "from2": "2.3.0", + "parallel-transform": "1.2.0", + "pump": "3.0.0", + "pumpify": "1.5.1", + "stream-each": "1.2.3", + "through2": "2.0.5" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dependencies": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + } + }, + "node_modules/mixin-object/node_modules/for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dependencies": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.5", + "rimraf": "2.7.1", + "run-queue": "1.0.3" + } + }, + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "7.1.6" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dependencies": { + "dns-packet": "1.3.1", + "thunky": "1.1.0" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.3", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dependencies": { + "lower-case": "2.0.1", + "tslib": "1.14.1" + } + }, + "node_modules/node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "dependencies": { + "lodash.toarray": "^4.4.0" + } + }, + "node_modules/node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dependencies": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dependencies": { + "assert": "1.5.0", + "browserify-zlib": "0.2.0", + "buffer": "4.9.2", + "console-browserify": "1.2.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "3.2.0", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.1", + "process": "0.11.10", + "punycode": "1.3.2", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.7", + "stream-browserify": "2.0.2", + "stream-http": "2.8.3", + "string_decoder": "1.3.0", + "timers-browserify": "2.0.11", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.11.1", + "vm-browserify": "1.1.2" + } + }, + "node_modules/node-libs-browser/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/node-libs-browser/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/node-releases": { + "version": "1.1.63", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.63.tgz", + "integrity": "sha512-ukW3iCfQaoxJkSPN+iK7KznTeqDGVJatAEuXsJERYHa9tn/KaT5lBdIyxQjLEVTzSkyjJEuQ17/vaEjrOauDkg==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dependencies": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "2.0.1" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "1.0.0" + } + }, + "node_modules/null-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", + "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", + "dependencies": { + "loader-utils": "1.4.0", + "schema-utils": "1.0.0" + } + }, + "node_modules/null-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/null-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "node_modules/null-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dependencies": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "0.1.6" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" + }, + "node_modules/object-is": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dependencies": { + "define-properties": "1.1.3", + "es-abstract": "1.18.0-next.1" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dependencies": { + "isobject": "3.0.1" + } + }, + "node_modules/object.assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "dependencies": { + "define-properties": "1.1.3", + "es-abstract": "1.18.0-next.1", + "has-symbols": "1.0.1", + "object-keys": "1.1.1" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dependencies": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + } + }, + "node_modules/object.getownpropertydescriptors/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dependencies": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dependencies": { + "isobject": "3.0.1" + } + }, + "node_modules/object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dependencies": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "function-bind": "1.1.1", + "has": "1.0.3" + } + }, + "node_modules/object.values/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dependencies": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1.0.2" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "2.1.0" + } + }, + "node_modules/open": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", + "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", + "dependencies": { + "is-docker": "2.1.1", + "is-wsl": "2.2.0" + } + }, + "node_modules/opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==" + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dependencies": { + "is-wsl": "1.1.0" + } + }, + "node_modules/opn/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "node_modules/optimize-css-assets-webpack-plugin": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", + "dependencies": { + "cssnano": "4.1.10", + "last-call-webpack-plugin": "3.0.0" + } + }, + "node_modules/original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dependencies": { + "url-parse": "1.4.7" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "2.2.0" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "2.3.0" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "3.1.0" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dependencies": { + "retry": "0.12.0" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "9.6.0", + "registry-auth-token": "4.2.0", + "registry-url": "5.1.0", + "semver": "6.3.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dependencies": { + "cyclist": "1.0.1", + "inherits": "2.0.4", + "readable-stream": "2.3.7" + } + }, + "node_modules/parallel-transform/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/parallel-transform/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "dependencies": { + "dot-case": "3.0.3", + "tslib": "1.14.1" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "3.1.0" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "5.4.1", + "browserify-aes": "1.2.0", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.1.1", + "safe-buffer": "5.1.2" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dependencies": { + "@babel/code-frame": "7.10.4", + "error-ex": "1.3.2", + "json-parse-even-better-errors": "2.3.1", + "lines-and-columns": "1.1.6" + } + }, + "node_modules/parse-numeric-range": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz", + "integrity": "sha1-tPCdQTx6282Yf26SM8e0shDJOOQ=" + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "node_modules/pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "dependencies": { + "no-case": "3.0.3", + "tslib": "1.14.1" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "node_modules/pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dependencies": { + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" + } + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dependencies": { + "pinkie": "2.0.4" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "3.0.0" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "3.0.0" + } + }, + "node_modules/pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dependencies": { + "ts-pnp": "1.2.0" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dependencies": { + "async": "2.6.3", + "debug": "3.2.6", + "mkdirp": "0.5.5" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dependencies": { + "ms": "2.1.2" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dependencies": { + "chalk": "2.4.2", + "source-map": "0.6.1", + "supports-color": "6.1.0" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "dependencies": { + "postcss": "7.0.35", + "postcss-selector-parser": "6.0.4" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dependencies": { + "postcss": "7.0.35", + "postcss-selector-parser": "6.0.4", + "postcss-value-parser": "4.1.0" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "dependencies": { + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "dependencies": { + "@csstools/convert-colors": "1.4.0", + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "dependencies": { + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "dependencies": { + "@csstools/convert-colors": "1.4.0", + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "dependencies": { + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dependencies": { + "browserslist": "4.14.5", + "color": "3.1.3", + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dependencies": { + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "dependencies": { + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "dependencies": { + "postcss": "7.0.35", + "postcss-selector-parser": "5.0.0" + } + }, + "node_modules/postcss-custom-selectors/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dependencies": { + "cssesc": "2.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "dependencies": { + "postcss": "7.0.35", + "postcss-selector-parser": "5.0.0" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dependencies": { + "cssesc": "2.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "dependencies": { + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "dependencies": { + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-font-variant": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", + "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "dependencies": { + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-initial": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", + "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "dependencies": { + "lodash.template": "4.5.0", + "postcss": "7.0.35" + } + }, + "node_modules/postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "dependencies": { + "@csstools/convert-colors": "1.4.0", + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dependencies": { + "cosmiconfig": "5.2.1", + "import-cwd": "2.1.0" + } + }, + "node_modules/postcss-load-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dependencies": { + "import-fresh": "2.0.0", + "is-directory": "0.3.1", + "js-yaml": "3.14.0", + "parse-json": "4.0.0" + } + }, + "node_modules/postcss-load-config/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dependencies": { + "caller-path": "2.0.0", + "resolve-from": "3.0.0" + } + }, + "node_modules/postcss-load-config/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" + } + }, + "node_modules/postcss-load-config/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "node_modules/postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dependencies": { + "loader-utils": "1.4.0", + "postcss": "7.0.35", + "postcss-load-config": "2.1.2", + "schema-utils": "1.0.0" + } + }, + "node_modules/postcss-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/postcss-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1", + "stylehacks": "4.0.3" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dependencies": { + "browserslist": "4.14.5", + "caniuse-api": "3.0.0", + "cssnano-util-same-parent": "4.0.1", + "postcss": "7.0.35", + "postcss-selector-parser": "3.1.2", + "vendors": "1.0.4" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "5.3.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dependencies": { + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dependencies": { + "cssnano-util-get-arguments": "4.0.0", + "is-color-stop": "1.1.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dependencies": { + "alphanum-sort": "1.0.2", + "browserslist": "4.14.5", + "cssnano-util-get-arguments": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1", + "uniqs": "2.0.0" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dependencies": { + "alphanum-sort": "1.0.2", + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-selector-parser": "3.1.2" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "5.3.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dependencies": { + "icss-utils": "4.1.1", + "postcss": "7.0.35", + "postcss-selector-parser": "6.0.4", + "postcss-value-parser": "4.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dependencies": { + "postcss": "7.0.35", + "postcss-selector-parser": "6.0.4" + } + }, + "node_modules/postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dependencies": { + "icss-utils": "4.1.1", + "postcss": "7.0.35" + } + }, + "node_modules/postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dependencies": { + "cssnano-util-get-match": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dependencies": { + "cssnano-util-get-arguments": "4.0.0", + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dependencies": { + "cssnano-util-get-arguments": "4.0.0", + "cssnano-util-get-match": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dependencies": { + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dependencies": { + "cssnano-util-get-match": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dependencies": { + "browserslist": "4.14.5", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dependencies": { + "is-absolute-url": "2.1.0", + "normalize-url": "3.3.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-normalize-url/node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dependencies": { + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dependencies": { + "cssnano-util-get-arguments": "4.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "dependencies": { + "postcss": "7.0.35", + "postcss-values-parser": "2.0.1" + } + }, + "node_modules/postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "dependencies": { + "autoprefixer": "9.8.6", + "browserslist": "4.14.5", + "caniuse-lite": "1.0.30001148", + "css-blank-pseudo": "0.1.4", + "css-has-pseudo": "0.10.0", + "css-prefers-color-scheme": "3.1.1", + "cssdb": "4.4.0", + "postcss": "7.0.35", + "postcss-attribute-case-insensitive": "4.0.2", + "postcss-color-functional-notation": "2.0.1", + "postcss-color-gray": "5.0.0", + "postcss-color-hex-alpha": "5.0.3", + "postcss-color-mod-function": "3.0.3", + "postcss-color-rebeccapurple": "4.0.1", + "postcss-custom-media": "7.0.8", + "postcss-custom-properties": "8.0.11", + "postcss-custom-selectors": "5.1.2", + "postcss-dir-pseudo-class": "5.0.0", + "postcss-double-position-gradients": "1.0.0", + "postcss-env-function": "2.0.2", + "postcss-focus-visible": "4.0.0", + "postcss-focus-within": "3.0.0", + "postcss-font-variant": "4.0.0", + "postcss-gap-properties": "2.0.0", + "postcss-image-set-function": "3.0.1", + "postcss-initial": "3.0.2", + "postcss-lab-function": "2.0.1", + "postcss-logical": "3.0.0", + "postcss-media-minmax": "4.0.0", + "postcss-nesting": "7.0.1", + "postcss-overflow-shorthand": "2.0.0", + "postcss-page-break": "2.0.0", + "postcss-place": "4.0.1", + "postcss-pseudo-class-any-link": "6.0.0", + "postcss-replace-overflow-wrap": "3.0.0", + "postcss-selector-matches": "4.0.0", + "postcss-selector-not": "4.0.0" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "dependencies": { + "postcss": "7.0.35", + "postcss-selector-parser": "5.0.0" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dependencies": { + "cssesc": "2.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dependencies": { + "browserslist": "4.14.5", + "caniuse-api": "3.0.0", + "has": "1.0.3", + "postcss": "7.0.35" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dependencies": { + "cssnano-util-get-match": "4.0.0", + "has": "1.0.3", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "dependencies": { + "postcss": "7.0.35" + } + }, + "node_modules/postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "dependencies": { + "balanced-match": "1.0.0", + "postcss": "7.0.35" + } + }, + "node_modules/postcss-selector-not": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", + "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", + "dependencies": { + "balanced-match": "1.0.0", + "postcss": "7.0.35" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dependencies": { + "cssesc": "3.0.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dependencies": { + "is-svg": "3.0.0", + "postcss": "7.0.35", + "postcss-value-parser": "3.3.1", + "svgo": "1.3.2" + } + }, + "node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dependencies": { + "alphanum-sort": "1.0.2", + "postcss": "7.0.35", + "uniqs": "2.0.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "node_modules/postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "dependencies": { + "flatten": "1.0.3", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "node_modules/postcss/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "node_modules/postcss/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "3.0.0" + } + }, + "node_modules/postcss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/postcss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "3.0.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dependencies": { + "lodash": "4.17.20", + "renderkid": "2.0.4" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" + }, + "node_modules/prism-react-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.1.1.tgz", + "integrity": "sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug==", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/prismjs": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.22.0.tgz", + "integrity": "sha512-lLJ/Wt9yy0AiSYBf212kK3mM5L8ycwlyTlSxHBAneXLR0nzFMlZ5y7riFPF3E33zXOF2IH95xdY5jIyZbM9z/w==", + "dependencies": { + "clipboard": "^2.0.0" + }, + "optionalDependencies": { + "clipboard": "^2.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "node_modules/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dependencies": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "react-is": "16.13.1" + } + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dependencies": { + "forwarded": "0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "4.11.9", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "parse-asn1": "5.1.6", + "randombytes": "2.1.0", + "safe-buffer": "5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "1.4.4", + "once": "1.4.0" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "3.7.1", + "inherits": "2.0.4", + "pump": "2.0.1" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "1.4.4", + "once": "1.4.0" + } + }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dependencies": { + "escape-goat": "2.1.1" + } + }, + "node_modules/pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=" + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dependencies": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "2.1.0", + "safe-buffer": "5.1.2" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.5", + "strip-json-comments": "2.0.1" + } + }, + "node_modules/react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "dependencies": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2" + } + }, + "node_modules/react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", + "dependencies": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "node_modules/react-dev-utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", + "integrity": "sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ==", + "dependencies": { + "@babel/code-frame": "7.8.3", + "address": "1.1.2", + "browserslist": "4.10.0", + "chalk": "2.4.2", + "cross-spawn": "7.0.1", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.0.1", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "3.1.1", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "7.0.4", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "7.3.0", + "pkg-up": "3.1.0", + "react-error-overlay": "6.0.7", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + } + }, + "node_modules/react-dev-utils/node_modules/@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dependencies": { + "@babel/highlight": "7.10.4" + } + }, + "node_modules/react-dev-utils/node_modules/@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "node_modules/react-dev-utils/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dependencies": { + "array-uniq": "1.0.3" + } + }, + "node_modules/react-dev-utils/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + } + }, + "node_modules/react-dev-utils/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/react-dev-utils/node_modules/browserslist": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", + "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", + "dependencies": { + "caniuse-lite": "1.0.30001148", + "electron-to-chromium": "1.3.582", + "node-releases": "1.1.63", + "pkg-up": "3.1.0" + } + }, + "node_modules/react-dev-utils/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "node_modules/react-dev-utils/node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "node_modules/react-dev-utils/node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "node_modules/react-dev-utils/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "1.1.2", + "debug": "2.6.9" + } + }, + "node_modules/react-dev-utils/node_modules/dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dependencies": { + "arrify": "1.0.1", + "path-type": "3.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "node_modules/react-dev-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "node_modules/react-dev-utils/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/react-dev-utils/node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/react-dev-utils/node_modules/fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dependencies": { + "@mrmlnc/readdir-enhanced": "2.2.1", + "@nodelib/fs.stat": "1.1.3", + "glob-parent": "3.1.0", + "is-glob": "4.0.1", + "merge2": "1.4.1", + "micromatch": "3.1.10" + } + }, + "node_modules/react-dev-utils/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "node_modules/react-dev-utils/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "5.0.0", + "path-exists": "4.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dependencies": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "node_modules/react-dev-utils/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "2.1.1" + } + }, + "node_modules/react-dev-utils/node_modules/globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "dependencies": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "fast-glob": "2.2.7", + "glob": "7.1.6", + "ignore": "3.3.10", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "node_modules/react-dev-utils/node_modules/inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "dependencies": { + "ansi-escapes": "4.3.1", + "chalk": "2.4.2", + "cli-cursor": "3.1.0", + "cli-width": "2.2.1", + "external-editor": "3.1.0", + "figures": "3.2.0", + "lodash": "4.17.20", + "mute-stream": "0.0.8", + "run-async": "2.4.1", + "rxjs": "6.6.3", + "string-width": "4.2.0", + "strip-ansi": "5.2.0", + "through": "2.3.8" + } + }, + "node_modules/react-dev-utils/node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "4.1.0" + } + }, + "node_modules/react-dev-utils/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/react-dev-utils/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/react-dev-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "2.1.0", + "json5": "1.0.1" + } + }, + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "4.1.0" + } + }, + "node_modules/react-dev-utils/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/react-dev-utils/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "2.3.0" + } + }, + "node_modules/react-dev-utils/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "node_modules/react-dev-utils/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "3.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "node_modules/react-dev-utils/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "node_modules/react-dev-utils/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "5.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "node_modules/react-dev-utils/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "node_modules/react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "dependencies": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2", + "scheduler": "0.19.1" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", + "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==" + }, + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "node_modules/react-helmet": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", + "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", + "dependencies": { + "object-assign": "4.1.1", + "prop-types": "15.7.2", + "react-fast-compare": "3.2.0", + "react-side-effect": "2.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-json-view": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.19.1.tgz", + "integrity": "sha512-u5e0XDLIs9Rj43vWkKvwL8G3JzvXSl6etuS5G42a8klMohZuYFQzSN6ri+/GiBptDqlrXPTdExJVU7x9rrlXhg==", + "dependencies": { + "flux": "^3.1.3", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^6.1.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^15.5.4", + "react-dom": "^16.0.0 || ^15.5.4" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-loadable": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", + "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", + "dependencies": { + "prop-types": "15.7.2" + } + }, + "node_modules/react-loadable-ssr-addon": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon/-/react-loadable-ssr-addon-0.3.0.tgz", + "integrity": "sha512-E+lnmDakV0k6ut6R2J77vurwCOwTKEwKlHs9S62G8ez+ujecLPcqjt3YAU8M58kIGjp2QjFlZ7F9QWkq/mr6Iw==", + "dependencies": { + "@babel/runtime": "7.12.1" + } + }, + "node_modules/react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "dependencies": { + "@babel/runtime": "7.12.1", + "history": "4.10.1", + "hoist-non-react-statics": "3.3.2", + "loose-envify": "1.4.0", + "mini-create-react-context": "0.4.0", + "path-to-regexp": "1.8.0", + "prop-types": "15.7.2", + "react-is": "16.13.1", + "tiny-invariant": "1.1.0", + "tiny-warning": "1.0.3" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "dependencies": { + "@babel/runtime": "7.12.1" + } + }, + "node_modules/react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "dependencies": { + "@babel/runtime": "7.12.1", + "history": "4.10.1", + "loose-envify": "1.4.0", + "prop-types": "15.7.2", + "react-router": "5.2.0", + "tiny-invariant": "1.1.0", + "tiny-warning": "1.0.3" + } + }, + "node_modules/react-router/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/react-router/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/react-side-effect": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz", + "integrity": "sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==" + }, + "node_modules/react-textarea-autosize": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-6.1.0.tgz", + "integrity": "sha512-F6bI1dgib6fSvG8so1HuArPUv+iVEfPliuLWusLF+gAKz0FbB4jLrWUrTAeq1afnPT2c9toEZYUdz/y1uKMy4A==", + "dependencies": { + "prop-types": "^15.6.0" + }, + "peerDependencies": { + "react": ">=0.14.0 <17.0.0" + } + }, + "node_modules/react-toggle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-toggle/-/react-toggle-4.1.1.tgz", + "integrity": "sha512-+wXlMcSpg8SmnIXauMaZiKpR+r2wp2gMUteroejp2UTSqGTVvZLN+m9EhMzFARBKEw7KpQOwzCyfzeHeAndQGw==", + "dependencies": { + "classnames": "^2.2.5" + }, + "peerDependencies": { + "prop-types": "^15.3.0 || ^16.0.0", + "react": "^15.3.0 || ^16.0.0", + "react-dom": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "2.0.4", + "string_decoder": "1.3.0", + "util-deprecate": "1.0.2" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dependencies": { + "picomatch": "2.2.2" + } + }, + "node_modules/reading-time": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.2.0.tgz", + "integrity": "sha512-5b4XmKK4MEss63y0Lw0vn0Zn6G5kiHP88mUnD8UeEsyORj3sh1ghTH0/u6m1Ax9G2F4wUZrknlp6WlIsCvoXVA==" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "1.17.0" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dependencies": { + "minimatch": "3.0.4" + } + }, + "node_modules/regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dependencies": { + "regenerate": "1.4.1" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dependencies": { + "@babel/runtime": "7.12.1" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dependencies": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + } + }, + "node_modules/regexp.prototype.flags/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dependencies": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dependencies": { + "regenerate": "1.4.1", + "regenerate-unicode-properties": "8.2.0", + "regjsgen": "0.5.2", + "regjsparser": "0.6.4", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.2.0" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "dependencies": { + "rc": "1.2.8" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "1.2.8" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "node_modules/regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dependencies": { + "jsesc": "0.5.0" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + }, + "node_modules/rehype-parse": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz", + "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==", + "dependencies": { + "hast-util-from-parse5": "^5.0.0", + "parse5": "^5.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/hast-util-from-parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", + "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", + "dependencies": { + "ccount": "^1.0.3", + "hastscript": "^5.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.1.2", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "node_modules/remark-admonitions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/remark-admonitions/-/remark-admonitions-1.2.1.tgz", + "integrity": "sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow==", + "dependencies": { + "rehype-parse": "^6.0.2", + "unified": "^8.4.2", + "unist-util-visit": "^2.0.1" + } + }, + "node_modules/remark-admonitions/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/remark-admonitions/node_modules/unified": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-emoji": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.1.0.tgz", + "integrity": "sha512-lDddGsxXURV01WS9WAiS9rO/cedO1pvr9tahtLhr6qCGFhHG4yZSJW3Ha4Nw9Uk1hLNmUBtPC0+m45Ms+xEitg==", + "dependencies": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.2" + } + }, + "node_modules/remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.19.tgz", + "integrity": "sha512-UKK1CFatVPNhgjsIlNQ3GjVl3+6O7x7Hag6oyntFTg8s7sgq+rhWaSfM/6lW5UWU6hzkj520KYBuBlsaSriGtA==", + "dependencies": { + "@babel/core": "7.11.6", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.11.0", + "@babel/plugin-syntax-jsx": "7.10.4", + "@mdx-js/util": "1.6.19", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@babel/core": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "dependencies": { + "mdast-squeeze-paragraphs": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "node_modules/renderkid": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", + "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", + "dependencies": { + "css-select": "1.2.0", + "dom-converter": "0.2.0", + "htmlparser2": "3.10.1", + "lodash": "4.17.20", + "strip-ansi": "3.0.1" + } + }, + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "2.1.1" + } + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "node_modules/replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=" + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dependencies": { + "path-parse": "1.0.6" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dependencies": { + "resolve-from": "3.0.0" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dependencies": { + "lowercase-keys": "1.0.1" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "5.1.2", + "signal-exit": "3.0.3" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "7.1.6" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "3.1.0", + "inherits": "2.0.4" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "node_modules/run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dependencies": { + "aproba": "1.2.0" + } + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" + }, + "node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dependencies": { + "ret": "0.1.15" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dependencies": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "2.0.1", + "kind-of": "6.0.3" + } + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "optional": true + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "node_modules/selfsigned": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "dependencies": { + "node-forge": "0.10.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "6.3.0" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dependencies": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "2.3.0", + "range-parser": "1.2.1", + "statuses": "1.5.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dependencies": { + "randombytes": "2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "node_modules/serve-handler/node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "node_modules/serve-handler/node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "node_modules/serve-handler/node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dependencies": { + "mime-db": "1.33.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "node_modules/serve-handler/node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dependencies": { + "accepts": "1.3.7", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.3", + "mime-types": "2.1.27", + "parseurl": "1.3.3" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dependencies": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.5.0" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dependencies": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.3", + "send": "0.17.1" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "2.0.4", + "safe-buffer": "5.1.2" + } + }, + "node_modules/shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dependencies": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + } + }, + "node_modules/shallow-clone/node_modules/kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/shallow-clone/node_modules/lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "3.0.0" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "node_modules/shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "node_modules/shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dependencies": { + "glob": "7.1.6", + "interpret": "1.4.0", + "rechoir": "0.6.2" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dependencies": { + "is-arrayish": "0.3.2" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/sitemap": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-3.2.2.tgz", + "integrity": "sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg==", + "dependencies": { + "lodash.chunk": "^4.2.0", + "lodash.padstart": "^4.6.1", + "whatwg-url": "^7.0.0", + "xmlbuilder": "^13.0.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=4.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.3", + "use": "3.1.1" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "1.0.2" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "6.0.3" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "6.0.3" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "0.1.6" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dependencies": { + "faye-websocket": "0.10.0", + "uuid": "3.4.0", + "websocket-driver": "0.6.5" + } + }, + "node_modules/sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dependencies": { + "debug": "3.2.6", + "eventsource": "1.0.7", + "faye-websocket": "0.11.3", + "inherits": "2.0.4", + "json3": "3.3.3", + "url-parse": "1.4.7" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dependencies": { + "ms": "2.1.2" + } + }, + "node_modules/sockjs-client/node_modules/faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dependencies": { + "websocket-driver": "0.6.5" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dependencies": { + "is-plain-obj": "1.1.0" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dependencies": { + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "1.1.1", + "source-map": "0.6.1" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "4.2.0", + "handle-thing": "2.0.1", + "http-deceiver": "1.2.7", + "select-hose": "2.0.0", + "spdy-transport": "3.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "4.2.0", + "detect-node": "2.0.4", + "hpack.js": "2.1.6", + "obuf": "1.1.2", + "readable-stream": "3.6.0", + "wbuf": "1.7.3" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "3.0.2" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/ssri": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "dependencies": { + "minipass": "3.1.3" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dependencies": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "0.1.6" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "node_modules/std-env": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.2.1.tgz", + "integrity": "sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ==", + "dependencies": { + "ci-info": "1.6.0" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dependencies": { + "inherits": "2.0.4", + "readable-stream": "2.3.7" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/stream-browserify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dependencies": { + "end-of-stream": "1.4.4", + "stream-shift": "1.0.1" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dependencies": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.4", + "readable-stream": "2.3.7", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "5.2.1" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dependencies": { + "emoji-regex": "8.0.0", + "is-fullwidth-code-point": "3.0.0", + "strip-ansi": "6.0.0" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "5.0.0" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dependencies": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + } + }, + "node_modules/string.prototype.trimend/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dependencies": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dependencies": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7" + } + }, + "node_modules/string.prototype.trimstart/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dependencies": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stringify-object/node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "4.1.0" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dependencies": { + "browserslist": "4.14.5", + "postcss": "7.0.35", + "postcss-selector-parser": "3.1.2" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "5.3.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "3.0.0" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dependencies": { + "chalk": "2.4.2", + "coa": "2.0.2", + "css-select": "2.1.0", + "css-select-base-adapter": "0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "4.0.3", + "js-yaml": "3.14.0", + "mkdirp": "0.5.5", + "object.values": "1.1.1", + "sax": "1.2.4", + "stable": "0.1.8", + "unquote": "1.1.1", + "util.promisify": "1.0.1" + } + }, + "node_modules/svgo/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "1.0.0", + "css-what": "3.4.2", + "domutils": "1.7.0", + "nth-check": "1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0.1.1", + "domelementtype": "1.3.1" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "node_modules/tar": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "dependencies": { + "chownr": "2.0.0", + "fs-minipass": "2.1.0", + "minipass": "3.1.3", + "minizlib": "2.1.2", + "mkdirp": "1.0.4", + "yallist": "4.0.0" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "node_modules/term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==" + }, + "node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dependencies": { + "commander": "2.20.3", + "source-map": "0.6.1", + "source-map-support": "0.5.19" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "dependencies": { + "cacache": "15.0.5", + "find-cache-dir": "3.3.1", + "jest-worker": "26.5.0", + "p-limit": "3.0.2", + "schema-utils": "3.0.0", + "serialize-javascript": "5.0.1", + "source-map": "0.6.1", + "terser": "5.3.6", + "webpack-sources": "1.4.3" + } + }, + "node_modules/terser-webpack-plugin/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dependencies": { + "commondir": "1.0.1", + "make-dir": "3.1.0", + "pkg-dir": "4.2.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "5.0.0", + "path-exists": "4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "4.1.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "6.3.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "dependencies": { + "p-try": "2.2.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "2.3.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "2.2.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "4.1.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dependencies": { + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.6.tgz", + "integrity": "sha512-145ap5v1HYx69HfLuwWaxTIlXyiSr+nSTb7ZWlJCgJn2JptuJRKziNa/zwFx9B1IU99Q055jHni74nLuuEC78w==", + "dependencies": { + "commander": "2.20.3", + "source-map": "0.7.3", + "source-map-support": "0.5.19" + } + }, + "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "2.3.7", + "xtend": "4.0.2" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dependencies": { + "setimmediate": "1.0.5" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, + "node_modules/tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "1.0.2" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "7.0.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "node_modules/ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "2.1.27" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "1.0.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.22", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", + "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", + "engines": { + "node": "*" + } + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "1.0.4", + "unicode-property-aliases-ecmascript": "1.1.0" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "2.0.1" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "2.0.2" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "2.0.0" + } + }, + "node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.5.tgz", + "integrity": "sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", + "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", + "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dependencies": { + "has-value": "0.3.1", + "isobject": "3.0.1" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dependencies": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "node_modules/update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dependencies": { + "boxen": "4.2.0", + "chalk": "3.0.0", + "configstore": "5.0.1", + "has-yarn": "2.1.0", + "import-lazy": "2.1.0", + "is-ci": "2.0.0", + "is-installed-globally": "0.3.2", + "is-npm": "4.0.0", + "is-yarn-global": "0.3.0", + "latest-version": "5.1.0", + "pupa": "2.0.1", + "semver-diff": "3.1.1", + "xdg-basedir": "4.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dependencies": { + "punycode": "2.1.1" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dependencies": { + "loader-utils": "2.0.0", + "mime-types": "2.1.27", + "schema-utils": "3.0.0" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dependencies": { + "@types/json-schema": "7.0.6", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dependencies": { + "querystringify": "2.2.0", + "requires-port": "1.0.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dependencies": { + "prepend-http": "2.0.0" + } + }, + "node_modules/url-parse-lax/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dependencies": { + "define-properties": "1.1.3", + "es-abstract": "1.17.7", + "has-symbols": "1.0.1", + "object.getownpropertydescriptors": "2.1.0" + } + }, + "node_modules/util.promisify/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dependencies": { + "es-to-primitive": "1.2.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.2.2", + "is-regex": "1.1.1", + "object-inspect": "1.8.0", + "object-keys": "1.1.1", + "object.assign": "4.1.1", + "string.prototype.trimend": "1.0.1", + "string.prototype.trimstart": "1.0.1" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "node_modules/vfile": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", + "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz", + "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "engines": { + "node": ">=4" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/wait-file": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/wait-file/-/wait-file-1.0.5.tgz", + "integrity": "sha512-udLpJY/eOxlrMm3+XD1RLuF2oT9B7J7wiyR5/9xrvQymS6YR6trWvVhzOldHrVbLwyiRmLj9fcvsjzpSXeZHkw==", + "dependencies": { + "@hapi/joi": "15.1.1", + "fs-extra": "8.1.0", + "rx": "4.1.0" + } + }, + "node_modules/wait-file/node_modules/@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "node_modules/wait-file/node_modules/@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "node_modules/wait-file/node_modules/@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dependencies": { + "@hapi/address": "2.1.4", + "@hapi/bourne": "1.3.2", + "@hapi/hoek": "8.5.1", + "@hapi/topo": "3.1.6" + } + }, + "node_modules/wait-file/node_modules/@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dependencies": { + "@hapi/hoek": "8.5.1" + } + }, + "node_modules/watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "dependencies": { + "chokidar": "3.4.3", + "graceful-fs": "4.2.4", + "neo-async": "2.6.2", + "watchpack-chokidar2": "2.0.0" + }, + "optionalDependencies": { + "watchpack-chokidar2": "2.0.0" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "optional": true, + "dependencies": { + "chokidar": "2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "dependencies": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "optional": true, + "dependencies": { + "remove-trailing-separator": "1.1.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "optional": true + }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, + "dependencies": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "optional": true, + "dependencies": { + "anymatch": "2.0.0", + "async-each": "1.0.3", + "braces": "2.3.2", + "fsevents": "1.2.13", + "glob-parent": "3.1.0", + "inherits": "2.0.4", + "is-binary-path": "1.0.1", + "is-glob": "4.0.1", + "normalize-path": "3.0.0", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.2.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "optional": true, + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "optional": true, + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, + "dependencies": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "dependencies": { + "bindings": "1.5.0", + "nan": "2.14.2" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "optional": true, + "dependencies": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "optional": true, + "dependencies": { + "is-extglob": "2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "optional": true, + "dependencies": { + "binary-extensions": "1.13.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, + "dependencies": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "dependencies": { + "graceful-fs": "4.2.4", + "micromatch": "3.1.10", + "readable-stream": "2.3.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "optional": true, + "dependencies": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "1.0.1" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "6.4.2", + "ajv": "6.12.6", + "ajv-keywords": "3.5.2", + "chrome-trace-event": "1.0.2", + "enhanced-resolve": "4.3.0", + "eslint-scope": "4.0.3", + "json-parse-better-errors": "1.0.2", + "loader-runner": "2.4.0", + "loader-utils": "1.4.0", + "memory-fs": "0.4.1", + "micromatch": "3.1.10", + "mkdirp": "0.5.5", + "neo-async": "2.6.2", + "node-libs-browser": "2.2.1", + "schema-utils": "1.0.0", + "tapable": "1.1.3", + "terser-webpack-plugin": "1.4.5", + "watchpack": "1.7.4", + "webpack-sources": "1.4.3" + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", + "dependencies": { + "acorn": "7.4.0", + "acorn-walk": "7.2.0", + "bfj": "6.1.2", + "chalk": "2.4.2", + "commander": "2.20.3", + "ejs": "2.7.4", + "express": "4.17.1", + "filesize": "3.6.1", + "gzip-size": "5.1.1", + "lodash": "4.17.20", + "mkdirp": "0.5.5", + "opener": "1.5.1", + "ws": "6.2.1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==" + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/webpack-bundle-analyzer/node_modules/filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dependencies": { + "memory-fs": "0.4.1", + "mime": "2.4.6", + "mkdirp": "0.5.5", + "range-parser": "1.2.1", + "webpack-log": "2.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + }, + "node_modules/webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dependencies": { + "ansi-html": "0.0.7", + "bonjour": "3.5.0", + "chokidar": "2.1.8", + "compression": "1.7.4", + "connect-history-api-fallback": "1.6.0", + "debug": "4.2.0", + "del": "4.1.1", + "express": "4.17.1", + "html-entities": "1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "2.0.0", + "internal-ip": "4.3.0", + "ip": "1.1.5", + "is-absolute-url": "3.0.3", + "killable": "1.0.1", + "loglevel": "1.7.0", + "opn": "5.5.0", + "p-retry": "3.0.1", + "portfinder": "1.0.28", + "schema-utils": "1.0.0", + "selfsigned": "1.10.8", + "semver": "6.3.0", + "serve-index": "1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "4.0.2", + "strip-ansi": "3.0.1", + "supports-color": "6.1.0", + "url": "0.11.0", + "webpack-dev-middleware": "3.7.2", + "webpack-log": "2.0.0", + "ws": "6.2.1", + "yargs": "13.3.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "node_modules/webpack-dev-server/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "1.1.0" + } + }, + "node_modules/webpack-dev-server/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dependencies": { + "array-uniq": "1.0.3" + } + }, + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "node_modules/webpack-dev-server/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + } + }, + "node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dependencies": { + "anymatch": "2.0.0", + "async-each": "1.0.3", + "braces": "2.3.2", + "fsevents": "1.2.13", + "glob-parent": "3.1.0", + "inherits": "2.0.4", + "is-binary-path": "1.0.1", + "is-glob": "4.0.1", + "normalize-path": "3.0.0", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.2.0" + }, + "optionalDependencies": { + "fsevents": "1.2.13" + } + }, + "node_modules/webpack-dev-server/node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dependencies": { + "@types/glob": "7.1.3", + "globby": "6.1.0", + "is-path-cwd": "2.2.0", + "is-path-in-cwd": "2.1.0", + "p-map": "2.1.0", + "pify": "4.0.1", + "rimraf": "2.7.1" + } + }, + "node_modules/webpack-dev-server/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/webpack-dev-server/node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/webpack-dev-server/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "dependencies": { + "bindings": "1.5.0", + "nan": "2.14.2" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dependencies": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dependencies": { + "array-union": "1.0.2", + "glob": "7.1.6", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "node_modules/webpack-dev-server/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "node_modules/webpack-dev-server/node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dependencies": { + "binary-extensions": "1.13.1" + } + }, + "node_modules/webpack-dev-server/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/webpack-dev-server/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/webpack-dev-server/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "node_modules/webpack-dev-server/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "4.2.4", + "micromatch": "3.1.10", + "readable-stream": "2.3.7" + } + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "7.1.6" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/webpack-dev-server/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "5.1.2" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "3.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dependencies": { + "ansi-colors": "3.2.4", + "uuid": "3.4.0" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dependencies": { + "lodash": "4.17.20" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "2.0.1", + "source-map": "0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/webpack/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + } + }, + "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/webpack/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dependencies": { + "bluebird": "3.7.2", + "chownr": "1.1.4", + "figgy-pudding": "3.5.2", + "glob": "7.1.6", + "graceful-fs": "4.2.4", + "infer-owner": "1.0.4", + "lru-cache": "5.1.1", + "mississippi": "3.0.0", + "mkdirp": "0.5.5", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.7.1", + "ssri": "6.0.1", + "unique-filename": "1.1.1", + "y18n": "4.0.0" + } + }, + "node_modules/webpack/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/webpack/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "node_modules/webpack/node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "2.0.4" + } + }, + "node_modules/webpack/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "0.1.1" + } + }, + "node_modules/webpack/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "3.2.2" + } + }, + "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "1.1.6" + } + }, + "node_modules/webpack/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "node_modules/webpack/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "1.2.5" + } + }, + "node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "5.2.2", + "emojis-list": "3.0.0", + "json5": "1.0.1" + } + }, + "node_modules/webpack/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "3.1.1" + } + }, + "node_modules/webpack/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "node_modules/webpack/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "7.1.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "6.12.6", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.5.2" + } + }, + "node_modules/webpack/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "2.1.0" + } + }, + "node_modules/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "node_modules/webpack/node_modules/ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dependencies": { + "figgy-pudding": "3.5.2" + } + }, + "node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dependencies": { + "cacache": "12.0.4", + "find-cache-dir": "2.1.0", + "is-wsl": "1.1.0", + "schema-utils": "1.0.0", + "serialize-javascript": "4.0.0", + "source-map": "0.6.1", + "terser": "4.8.0", + "webpack-sources": "1.4.3", + "worker-farm": "1.7.0" + } + }, + "node_modules/webpack/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "node_modules/webpack/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/webpackbar": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-4.0.0.tgz", + "integrity": "sha512-k1qRoSL/3BVuINzngj09nIwreD8wxV4grcuhHTD8VJgUbGcy8lQSPqv+bM00B7F+PffwIsQ8ISd4mIwRbr23eQ==", + "dependencies": { + "ansi-escapes": "4.3.1", + "chalk": "2.4.2", + "consola": "2.15.0", + "figures": "3.2.0", + "pretty-time": "1.1.0", + "std-env": "2.2.1", + "text-table": "0.2.0", + "wrap-ansi": "6.2.0" + } + }, + "node_modules/webpackbar/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "node_modules/webpackbar/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "node_modules/webpackbar/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "1.1.4" + } + }, + "node_modules/webpackbar/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/webpackbar/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "5.0.0" + } + }, + "node_modules/webpackbar/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "4.3.0", + "string-width": "4.2.0", + "strip-ansi": "6.0.0" + } + }, + "node_modules/webpackbar/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "2.0.1" + } + }, + "node_modules/websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dependencies": { + "websocket-extensions": "0.1.4" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "node_modules/whatwg-fetch": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz", + "integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ==" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "2.0.0" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "4.2.0" + } + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dependencies": { + "errno": "0.1.7" + } + }, + "node_modules/worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dependencies": { + "microevent.ts": "0.1.1" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dependencies": { + "ansi-styles": "3.2.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "0.1.4", + "is-typedarray": "1.0.0", + "signal-exit": "3.0.3", + "typedarray-to-buffer": "3.1.5" + } + }, + "node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dependencies": { + "async-limiter": "1.0.1" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xmlbuilder": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", + "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dependencies": { + "cliui": "5.0.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "5.3.1", + "decamelize": "1.2.0" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, "dependencies": { "@algolia/cache-browser-local-storage": { "version": "4.5.1", @@ -1235,114 +15450,114 @@ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-1.0.0-alpha.28.tgz", "integrity": "sha512-XjJOnCBXn+UZmtuDmgzlVIHnnvh6yHVwG4aFq8AXN6xJEIX3f180FvGaowFWAxgdtHplJxFGux0Xx4piHqBzIw==", "requires": { - "@docsearch/css": "1.0.0-alpha.28", - "@francoischalifour/autocomplete-core": "1.0.0-alpha.28", - "@francoischalifour/autocomplete-preset-algolia": "1.0.0-alpha.28", - "algoliasearch": "4.5.1" + "@docsearch/css": "^1.0.0-alpha.28", + "@francoischalifour/autocomplete-core": "^1.0.0-alpha.28", + "@francoischalifour/autocomplete-preset-algolia": "^1.0.0-alpha.28", + "algoliasearch": "^4.0.0" } }, "@docusaurus/core": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-alpha.65.tgz", - "integrity": "sha512-9kfgPugosRq5byuBC/tz3ZShPFT8xh8t08r5tsx8QujfH2ZpDXSQpLF0x/isbCY1O2NQsRZZCKGXQf5dE6NZfQ==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-alpha.66.tgz", + "integrity": "sha512-9HKqObYoyArpzSTIDguyUXm7z54bpV3dSWSc0PbKGu0Us6zP1TiOuhRDX1diFsKyvjNy7VbCe8XH8LJIdKi5dQ==", "requires": { - "@babel/core": "7.12.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", - "@babel/plugin-proposal-optional-chaining": "7.12.1", - "@babel/plugin-syntax-dynamic-import": "7.8.3", - "@babel/plugin-transform-runtime": "7.12.1", - "@babel/preset-env": "7.12.1", - "@babel/preset-react": "7.12.1", - "@babel/preset-typescript": "7.12.1", - "@babel/runtime": "7.12.1", - "@babel/runtime-corejs3": "7.12.1", - "@docusaurus/types": "2.0.0-alpha.65", - "@docusaurus/utils": "2.0.0-alpha.65", - "@docusaurus/utils-validation": "2.0.0-alpha.65", - "@endiliey/static-site-generator-webpack-plugin": "4.0.0", - "@hapi/joi": "17.1.1", - "@svgr/webpack": "5.4.0", - "babel-loader": "8.1.0", - "babel-plugin-dynamic-import-node": "2.3.3", - "boxen": "4.2.0", - "cache-loader": "4.1.0", - "chalk": "3.0.0", - "chokidar": "3.4.3", - "commander": "4.1.1", - "copy-webpack-plugin": "6.2.1", - "core-js": "2.6.11", - "css-loader": "3.6.0", - "del": "5.1.0", - "detect-port": "1.3.0", - "eta": "1.11.0", - "express": "4.17.1", - "file-loader": "6.1.1", - "fs-extra": "8.1.0", - "globby": "10.0.2", - "html-minifier-terser": "5.1.1", - "html-tags": "3.1.0", - "html-webpack-plugin": "4.5.0", - "import-fresh": "3.2.1", - "inquirer": "7.3.3", - "is-root": "2.1.0", - "leven": "3.1.0", - "lodash": "4.17.20", - "lodash.flatmap": "4.5.0", - "lodash.has": "4.5.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "mini-css-extract-plugin": "0.8.2", - "nprogress": "0.2.0", - "null-loader": "3.0.0", - "optimize-css-assets-webpack-plugin": "5.0.4", - "pnp-webpack-plugin": "1.6.4", - "postcss-loader": "3.0.0", - "postcss-preset-env": "6.7.0", - "react-dev-utils": "10.2.1", - "react-helmet": "6.1.0", - "react-loadable": "5.5.0", - "react-loadable-ssr-addon": "0.3.0", - "react-router": "5.2.0", - "react-router-config": "5.1.1", - "react-router-dom": "5.2.0", - "resolve-pathname": "3.0.0", - "semver": "6.3.0", - "serve-handler": "6.1.3", - "shelljs": "0.8.4", - "std-env": "2.2.1", - "terser-webpack-plugin": "4.2.3", - "update-notifier": "4.1.3", - "url-loader": "4.1.1", - "wait-file": "1.0.5", - "webpack": "4.44.2", - "webpack-bundle-analyzer": "3.9.0", - "webpack-dev-server": "3.11.0", - "webpack-merge": "4.2.2", - "webpackbar": "4.0.0" + "@babel/core": "^7.9.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.9.0", + "@babel/preset-env": "^7.9.0", + "@babel/preset-react": "^7.9.4", + "@babel/preset-typescript": "^7.9.0", + "@babel/runtime": "^7.9.2", + "@babel/runtime-corejs3": "^7.10.4", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", + "@endiliey/static-site-generator-webpack-plugin": "^4.0.0", + "@hapi/joi": "^17.1.1", + "@svgr/webpack": "^5.4.0", + "babel-loader": "^8.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0", + "boxen": "^4.2.0", + "cache-loader": "^4.1.0", + "chalk": "^3.0.0", + "chokidar": "^3.3.0", + "commander": "^4.0.1", + "copy-webpack-plugin": "^6.0.3", + "core-js": "^2.6.5", + "css-loader": "^3.4.2", + "del": "^5.1.0", + "detect-port": "^1.3.0", + "eta": "^1.1.1", + "express": "^4.17.1", + "file-loader": "^6.0.0", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "html-minifier-terser": "^5.0.5", + "html-tags": "^3.1.0", + "html-webpack-plugin": "^4.0.4", + "import-fresh": "^3.2.1", + "inquirer": "^7.2.0", + "is-root": "^2.1.0", + "leven": "^3.1.0", + "lodash": "^4.5.2", + "lodash.flatmap": "^4.5.0", + "lodash.has": "^4.5.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "mini-css-extract-plugin": "^0.8.0", + "nprogress": "^0.2.0", + "null-loader": "^3.0.0", + "optimize-css-assets-webpack-plugin": "^5.0.3", + "pnp-webpack-plugin": "^1.6.4", + "postcss-loader": "^3.0.0", + "postcss-preset-env": "^6.7.0", + "react-dev-utils": "^10.2.1", + "react-helmet": "^6.0.0-beta", + "react-loadable": "^5.5.0", + "react-loadable-ssr-addon": "^0.3.0", + "react-router": "^5.1.2", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.1.2", + "resolve-pathname": "^3.0.0", + "semver": "^6.3.0", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.4", + "std-env": "^2.2.1", + "terser-webpack-plugin": "^4.1.0", + "update-notifier": "^4.1.0", + "url-loader": "^4.1.0", + "wait-file": "^1.0.5", + "webpack": "^4.44.1", + "webpack-bundle-analyzer": "^3.6.1", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2", + "webpackbar": "^4.0.0" } }, "@docusaurus/mdx-loader": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-alpha.65.tgz", - "integrity": "sha512-E+8f9dNML4CMDeLVcJi7qfJisPGJY45iGGkjGTdaxPPzP6xEnqA/Y/ghnKMiBY/GYCxKqteQFg52ZDAGNm4Bkg==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-alpha.66.tgz", + "integrity": "sha512-IvtrTNeAaynEGgfCbC4CeBgO76Mu76cGogBGv8a84bYeyCOtlxOJoH6JHkJ7T/v5D6lM16qzwx5oqesZ0kZuzA==", "requires": { - "@babel/parser": "7.12.3", - "@babel/traverse": "7.12.1", - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/utils": "2.0.0-alpha.65", - "@mdx-js/mdx": "1.6.18", - "@mdx-js/react": "1.6.18", - "escape-html": "1.0.3", - "file-loader": "6.1.1", - "fs-extra": "8.1.0", - "github-slugger": "1.3.0", - "gray-matter": "4.0.2", - "loader-utils": "1.4.0", - "mdast-util-to-string": "1.1.0", - "remark-emoji": "2.1.0", - "stringify-object": "3.3.0", - "unist-util-visit": "2.0.3", - "url-loader": "4.1.1" + "@babel/parser": "^7.9.4", + "@babel/traverse": "^7.9.0", + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@mdx-js/mdx": "^1.5.8", + "@mdx-js/react": "^1.5.8", + "escape-html": "^1.0.3", + "file-loader": "^6.0.0", + "fs-extra": "^8.1.0", + "github-slugger": "^1.3.0", + "gray-matter": "^4.0.2", + "loader-utils": "^1.2.3", + "mdast-util-to-string": "^1.1.0", + "remark-emoji": "^2.1.0", + "stringify-object": "^3.3.0", + "unist-util-visit": "^2.0.2", + "url-loader": "^4.1.0" }, "dependencies": { "json5": { @@ -1350,7 +15565,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "1.2.5" + "minimist": "^1.2.0" } }, "loader-utils": { @@ -1358,33 +15573,33 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "5.2.2", - "emojis-list": "3.0.0", - "json5": "1.0.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } } } }, "@docusaurus/plugin-content-blog": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-alpha.65.tgz", - "integrity": "sha512-cVt6bmGxsSW/t8DXoS79j1Y/ZwK9KQQFBLT6PK90IK+0Zfa1fRl8T6+aAYEzdADVwoVNIt3976OJ2Z5XT4Xyag==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-alpha.66.tgz", + "integrity": "sha512-voK5ZUZcUn5blIDakYNKQ42wPMZLfrZnvEJuwh/8S/W1oNbPN935NBu9vL23fHEmp9L2MGykAdaCmev0Su04yQ==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/mdx-loader": "2.0.0-alpha.65", - "@docusaurus/types": "2.0.0-alpha.65", - "@docusaurus/utils": "2.0.0-alpha.65", - "@docusaurus/utils-validation": "2.0.0-alpha.65", - "@hapi/joi": "17.1.1", - "chalk": "3.0.0", - "feed": "4.2.1", - "fs-extra": "8.1.0", - "globby": "10.0.2", - "loader-utils": "1.4.0", - "lodash.kebabcase": "4.1.1", - "reading-time": "1.2.0", - "remark-admonitions": "1.2.1", - "webpack": "4.44.2" + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/mdx-loader": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", + "@hapi/joi": "^17.1.1", + "chalk": "^3.0.0", + "feed": "^4.1.0", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.5.2", + "reading-time": "^1.2.0", + "remark-admonitions": "^1.2.1", + "webpack": "^4.44.1" }, "dependencies": { "json5": { @@ -1392,7 +15607,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "1.2.5" + "minimist": "^1.2.0" } }, "loader-utils": { @@ -1400,40 +15615,40 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "5.2.2", - "emojis-list": "3.0.0", - "json5": "1.0.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } } } }, "@docusaurus/plugin-content-docs": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-alpha.65.tgz", - "integrity": "sha512-AMROMNE8p7CPw+szGyBbhHsmCCL5nbm0ljRIEZ/XkDlSXx8s/CDdu9LEbGIYLvoGDjUjnq9Mmi3hNLBYwU2Kow==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-alpha.66.tgz", + "integrity": "sha512-jvFKJR7BgjIq6xdmPg+7d2DS1fBeuIfmRTtB/apgfIW8NWO5N0DRYXOj0lgpw/ICwW//o8cLbrN+jkLlzTV/eg==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/mdx-loader": "2.0.0-alpha.65", - "@docusaurus/types": "2.0.0-alpha.65", - "@docusaurus/utils": "2.0.0-alpha.65", - "@docusaurus/utils-validation": "2.0.0-alpha.65", + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/mdx-loader": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", "@hapi/joi": "17.1.1", - "chalk": "3.0.0", - "execa": "3.4.0", - "fs-extra": "8.1.0", - "globby": "10.0.2", - "import-fresh": "3.2.1", - "loader-utils": "1.4.0", - "lodash": "4.17.20", - "lodash.flatmap": "4.5.0", - "lodash.groupby": "4.6.0", - "lodash.pick": "4.4.0", - "lodash.pickby": "4.6.0", - "lodash.sortby": "4.7.0", - "remark-admonitions": "1.2.1", - "shelljs": "0.8.4", - "utility-types": "3.10.0", - "webpack": "4.44.2" + "chalk": "^3.0.0", + "execa": "^3.4.0", + "fs-extra": "^8.1.0", + "globby": "^10.0.1", + "import-fresh": "^3.2.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.19", + "lodash.flatmap": "^4.5.0", + "lodash.groupby": "^4.6.0", + "lodash.pick": "^4.4.0", + "lodash.pickby": "^4.6.0", + "lodash.sortby": "^4.6.0", + "remark-admonitions": "^1.2.1", + "shelljs": "^0.8.4", + "utility-types": "^3.10.0", + "webpack": "^4.44.1" }, "dependencies": { "execa": { @@ -1441,16 +15656,16 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", "requires": { - "cross-spawn": "7.0.1", - "get-stream": "5.2.0", - "human-signals": "1.1.1", - "is-stream": "2.0.0", - "merge-stream": "2.0.0", - "npm-run-path": "4.0.1", - "onetime": "5.1.2", - "p-finally": "2.0.1", - "signal-exit": "3.0.3", - "strip-final-newline": "2.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, "get-stream": { @@ -1458,7 +15673,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, "is-stream": { @@ -1471,7 +15686,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "1.2.5" + "minimist": "^1.2.0" } }, "loader-utils": { @@ -1479,9 +15694,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "5.2.2", - "emojis-list": "3.0.0", - "json5": "1.0.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } }, "npm-run-path": { @@ -1489,7 +15704,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { - "path-key": "3.1.1" + "path-key": "^3.0.0" } }, "p-finally": { @@ -1500,22 +15715,22 @@ } }, "@docusaurus/plugin-content-pages": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-alpha.65.tgz", - "integrity": "sha512-dpdzrGuq2xSIP2SkOtEpQggP+f0WOZcVI+WNON4YpfwftBYoLIf4/S6ISBFdld+AjA/VCJ/nc46/ord4oC6rOQ==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-alpha.66.tgz", + "integrity": "sha512-mY26Aeb/Wf+NFLy70YvXgdLTB+2iPN0SKOVKYwgg6ZN7Nm2kPwEpSVRq2iwiqlWk2G/vOM+ADm99Gxvm3kS61A==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/mdx-loader": "2.0.0-alpha.65", - "@docusaurus/types": "2.0.0-alpha.65", - "@docusaurus/utils": "2.0.0-alpha.65", - "@docusaurus/utils-validation": "2.0.0-alpha.65", + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/mdx-loader": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", "@hapi/joi": "17.1.1", - "globby": "10.0.2", - "loader-utils": "1.4.0", - "minimatch": "3.0.4", - "remark-admonitions": "1.2.1", - "slash": "3.0.0", - "webpack": "4.44.2" + "globby": "^10.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "remark-admonitions": "^1.2.1", + "slash": "^3.0.0", + "webpack": "^4.44.1" }, "dependencies": { "json5": { @@ -1523,7 +15738,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "1.2.5" + "minimist": "^1.2.0" } }, "loader-utils": { @@ -1531,135 +15746,134 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { - "big.js": "5.2.2", - "emojis-list": "3.0.0", - "json5": "1.0.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } } } }, "@docusaurus/plugin-debug": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-alpha.65.tgz", - "integrity": "sha512-+xzDbr1N8pC/LwJyKZDYCZB4VbFnbQwtJ62pRuyt5MSofKDBkXhRJ2r8piud6dpUI4SpcgkL4IbxRXukRCDtkQ==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-alpha.66.tgz", + "integrity": "sha512-9AZaEUxaY0CDOCWXQMfY3TzG79HkquZlVeJOZaA6IvCoK/Oq3B58TMNLiQyA6TA2DYf5ZYQorLJaMd02x5qBQw==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/types": "2.0.0-alpha.65", - "@docusaurus/utils": "2.0.0-alpha.65", - "react-json-view": "1.19.1" + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "react-json-view": "^1.19.1" } }, "@docusaurus/plugin-google-analytics": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-alpha.65.tgz", - "integrity": "sha512-LK/21sKJlR9Al7upHcxXFT4iMAksuTMYQIC+Xhdte79R1aNZrBhXypWNO0OTbz1hRIK0AAVmpwAiFC5c3RJZgQ==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-alpha.66.tgz", + "integrity": "sha512-HVWRLHtlQYpVqH3MHloUmktJMXt7oMDQzBlKzrwAMiWUK1oXFX35DrKjTt2SE2SADpObnwWFjo0E71YT0ApQLw==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65" + "@docusaurus/core": "2.0.0-alpha.66" } }, "@docusaurus/plugin-google-gtag": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-alpha.65.tgz", - "integrity": "sha512-tAtqfvmnr1X3UoG1Wh88K1ZIrvJlH6PEVptNgE8QYRDe/Wsykp1mpAm1ppS58kfC1/ofrQ1mNwZplceI5hbukw==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-alpha.66.tgz", + "integrity": "sha512-MVnzApLSQaC38nVS+A/WkXEV4kHeX6Q/KM2DqkLeovNWLBtkQ0aHL3bvn1clAEmB33Pia0v93mzG+I1+9mrquA==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65" + "@docusaurus/core": "2.0.0-alpha.66" } }, "@docusaurus/plugin-sitemap": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-alpha.65.tgz", - "integrity": "sha512-h9adEzq3V8vHQxCM5/cM/rskN1G4blH/NHTo1Ng8HqMK6VO8CVX0WgBL9pxpmOo3dVFK9dAB3Pf+zNkJY18Rfw==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-alpha.66.tgz", + "integrity": "sha512-ztDevVIREyq8g+QhSGpDqscVqtubcPnEE3a4JwWSALQ2D6JscIxg897axwZSZNUMxrHBuXRjOEYOtVb/O/stVg==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/types": "2.0.0-alpha.65", + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", "@hapi/joi": "17.1.1", - "fs-extra": "8.1.0", - "sitemap": "3.2.2" + "fs-extra": "^8.1.0", + "sitemap": "^3.2.2" } }, "@docusaurus/preset-classic": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-alpha.65.tgz", - "integrity": "sha512-0wJEB1BvS0Wx0XuWwm+XNfVdVUcZ4Va2nXmK45ZvSYx+DbZ73wL/K4ahIp7R6A5JYv7kPRz6tlm0vusRMmKUVA==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-alpha.66.tgz", + "integrity": "sha512-FjxjchzUS6vOUSr9Pc5kqOSQAnc+cAYsR4pTlqwD2uOJcZMr2vQ6jeKbJnhEmUYwAvzdKOVnCndnxbA+Ii8L3w==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/plugin-content-blog": "2.0.0-alpha.65", - "@docusaurus/plugin-content-docs": "2.0.0-alpha.65", - "@docusaurus/plugin-content-pages": "2.0.0-alpha.65", - "@docusaurus/plugin-debug": "2.0.0-alpha.65", - "@docusaurus/plugin-google-analytics": "2.0.0-alpha.65", - "@docusaurus/plugin-google-gtag": "2.0.0-alpha.65", - "@docusaurus/plugin-sitemap": "2.0.0-alpha.65", - "@docusaurus/theme-classic": "2.0.0-alpha.65", - "@docusaurus/theme-search-algolia": "2.0.0-alpha.65" + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/plugin-content-blog": "2.0.0-alpha.66", + "@docusaurus/plugin-content-docs": "2.0.0-alpha.66", + "@docusaurus/plugin-content-pages": "2.0.0-alpha.66", + "@docusaurus/plugin-debug": "2.0.0-alpha.66", + "@docusaurus/plugin-google-analytics": "2.0.0-alpha.66", + "@docusaurus/plugin-google-gtag": "2.0.0-alpha.66", + "@docusaurus/plugin-sitemap": "2.0.0-alpha.66", + "@docusaurus/theme-classic": "2.0.0-alpha.66", + "@docusaurus/theme-search-algolia": "2.0.0-alpha.66" } }, "@docusaurus/theme-classic": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-alpha.65.tgz", - "integrity": "sha512-i8Uu1bkah7qEbJ7JhNU8TkylkFIh66Tzv3yP8sl9Zcmo3K4/9SAuT1Ux7gb0hd7xsrJy4NalhxvMP0oE1ElEDw==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-alpha.66.tgz", + "integrity": "sha512-WsWqzfzA2gIF5TUMGSbiAeDeNZtKvsgymTQzalcwyhyT/QI0ywcag+03Bmjeq4H3PTC3qU+tkhddO2Rh5w/YCw==", "requires": { - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/plugin-content-blog": "2.0.0-alpha.65", - "@docusaurus/plugin-content-docs": "2.0.0-alpha.65", - "@docusaurus/plugin-content-pages": "2.0.0-alpha.65", - "@docusaurus/types": "2.0.0-alpha.65", - "@docusaurus/utils-validation": "2.0.0-alpha.65", - "@hapi/joi": "17.1.1", - "@mdx-js/mdx": "1.6.18", - "@mdx-js/react": "1.6.18", - "@types/react-toggle": "4.0.2", - "clsx": "1.1.1", - "copy-text-to-clipboard": "2.2.0", + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/plugin-content-blog": "2.0.0-alpha.66", + "@docusaurus/plugin-content-docs": "2.0.0-alpha.66", + "@docusaurus/plugin-content-pages": "2.0.0-alpha.66", + "@docusaurus/types": "2.0.0-alpha.66", + "@docusaurus/utils-validation": "2.0.0-alpha.66", + "@hapi/joi": "^17.1.1", + "@mdx-js/mdx": "^1.5.8", + "@mdx-js/react": "^1.5.8", + "@types/react-toggle": "^4.0.2", + "clsx": "^1.1.1", + "copy-text-to-clipboard": "^2.2.0", "infima": "0.2.0-alpha.13", - "lodash": "4.17.20", - "parse-numeric-range": "0.0.2", - "prism-react-renderer": "1.1.1", - "prismjs": "1.22.0", - "prop-types": "15.7.2", - "react-router-dom": "5.2.0", - "react-toggle": "4.1.1", - "use-onclickoutside": "0.3.1" + "lodash": "^4.17.19", + "parse-numeric-range": "^0.0.2", + "prism-react-renderer": "^1.1.0", + "prismjs": "^1.20.0", + "prop-types": "^15.7.2", + "react-router-dom": "^5.1.2", + "react-toggle": "^4.1.1" } }, "@docusaurus/theme-search-algolia": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-alpha.65.tgz", - "integrity": "sha512-Ois8F9Y5S4eyk2fT7GGFMnLZdtsWDuQi9hAntiMG7ClqcXE3Z3J126RYXqsZV0/Lr3Qaedwe7mED6r0C7Uc+Lg==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-alpha.66.tgz", + "integrity": "sha512-5k/Fwt81Gyjv9vPE+gO8mraEHx5IqEmHLwqld5yXj7yix5XrxywkaanHqC0cFJG4MFUBgF6vNjJC8CtfLnT4Tw==", "requires": { - "@docsearch/react": "1.0.0-alpha.28", - "@docusaurus/core": "2.0.0-alpha.65", - "@docusaurus/utils": "2.0.0-alpha.65", - "@hapi/joi": "17.1.1", - "algoliasearch": "4.5.1", - "algoliasearch-helper": "3.2.2", - "clsx": "1.1.1", - "eta": "1.11.0", - "lodash": "4.17.20" + "@docsearch/react": "^1.0.0-alpha.27", + "@docusaurus/core": "2.0.0-alpha.66", + "@docusaurus/utils": "2.0.0-alpha.66", + "@hapi/joi": "^17.1.1", + "algoliasearch": "^4.0.0", + "algoliasearch-helper": "^3.1.1", + "clsx": "^1.1.1", + "eta": "^1.1.1", + "lodash": "^4.17.19" } }, "@docusaurus/types": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-alpha.65.tgz", - "integrity": "sha512-a4pcWUfS4I4B6O9zi2yJ7JJvjo8lHqwC6+EdwW/XiJ9B40CkD9LGKYGR2EKIUFM2qrRCgSBrDukIK1oAROrkSQ==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-alpha.66.tgz", + "integrity": "sha512-Zd2Kguw0+3faifr83ruIV4i/+KqfqM+zK3DpqCBxdtkP+ORLKbgsIQ48fJ40OOhQrvl38Ay4E+1w7USrrkj4Qg==", "requires": { - "@types/webpack": "4.41.22", - "commander": "4.1.1", + "@types/webpack": "^4.41.0", + "commander": "^4.0.1", "querystring": "0.2.0", - "webpack-merge": "4.2.2" + "webpack-merge": "^4.2.2" } }, "@docusaurus/utils": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-alpha.65.tgz", - "integrity": "sha512-Fz0rF/eMuzgMOJITF3R62H7fC2fDfTNtJ9wq5DBR050647OMEJnimKSilS1Rsckd7c72mfBdhg3Hdb9rrSrk8Q==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-alpha.66.tgz", + "integrity": "sha512-47jGB+Z3YVM6Xf1hxyNbJLMmc1qoTLmfwSf7NseKSkpjucbc5Ueivr+oVYp5yWoZw5sT5bObmdJYfJoD/RrbOg==", "requires": { - "escape-string-regexp": "2.0.0", - "fs-extra": "8.1.0", - "gray-matter": "4.0.2", - "lodash.camelcase": "4.3.0", - "lodash.kebabcase": "4.1.1", - "resolve-pathname": "3.0.0" + "escape-string-regexp": "^2.0.0", + "fs-extra": "^8.1.0", + "gray-matter": "^4.0.2", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "resolve-pathname": "^3.0.0" }, "dependencies": { "escape-string-regexp": { @@ -1670,13 +15884,13 @@ } }, "@docusaurus/utils-validation": { - "version": "2.0.0-alpha.65", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-alpha.65.tgz", - "integrity": "sha512-BcWQx8zb+bbQEDzzUerl31Lehuv4axdoty2vSDqt4rhKiAn1lh/XyWYxxPN98r+roailHsl3WRYK0L+KJjTcKA==", + "version": "2.0.0-alpha.66", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-alpha.66.tgz", + "integrity": "sha512-vlenwY3THondey21x1qAUZyDz9qiG7ec2CBM9HgY1Ns8XhrKah9zz7TEGXjqM9lhqMQQRkvcCcveti9EXR0fcA==", "requires": { - "@docusaurus/utils": "2.0.0-alpha.65", + "@docusaurus/utils": "2.0.0-alpha.66", "@hapi/joi": "17.1.1", - "chalk": "3.0.0" + "chalk": "^3.0.0" } }, "@endiliey/static-site-generator-webpack-plugin": { @@ -1750,23 +15964,23 @@ } }, "@mdx-js/mdx": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.18.tgz", - "integrity": "sha512-RXtdFBP3cnf/RILx/ipp5TsSY1k75bYYmjorv7jTaPcHPQwhQdI6K4TrVUed/GL4f8zX5TN2QwO5g+3E/8RsXA==", + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.19.tgz", + "integrity": "sha512-L3eLhEFnV/2bcb9XwOegsRmLHd1oEDQPtTBVezhptQ5U1YM+/WQNzx1apjzVTAyukwOanUXnTUMjRUtqJNgFCg==", "requires": { "@babel/core": "7.11.6", "@babel/plugin-syntax-jsx": "7.10.4", "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.18", - "babel-plugin-apply-mdx-type-prop": "1.6.18", - "babel-plugin-extract-import-names": "1.6.18", + "@mdx-js/util": "1.6.19", + "babel-plugin-apply-mdx-type-prop": "1.6.19", + "babel-plugin-extract-import-names": "1.6.19", "camelcase-css": "2.0.1", "detab": "2.0.3", "hast-util-raw": "6.0.1", "lodash.uniq": "4.5.0", "mdast-util-to-hast": "9.1.1", "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.18", + "remark-mdx": "1.6.19", "remark-parse": "8.0.3", "remark-squeeze-paragraphs": "4.0.0", "style-to-object": "0.3.0", @@ -1780,22 +15994,22 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", "requires": { - "@babel/code-frame": "7.10.4", - "@babel/generator": "7.12.1", - "@babel/helper-module-transforms": "7.12.1", - "@babel/helpers": "7.12.1", - "@babel/parser": "7.12.3", - "@babel/template": "7.10.4", - "@babel/traverse": "7.12.1", - "@babel/types": "7.12.1", - "convert-source-map": "1.7.0", - "debug": "4.2.0", - "gensync": "1.0.0-beta.1", - "json5": "2.1.3", - "lodash": "4.17.20", - "resolve": "1.17.0", - "semver": "5.7.1", - "source-map": "0.5.7" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" } }, "@babel/plugin-syntax-jsx": { @@ -1803,7 +16017,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", "requires": { - "@babel/helper-plugin-utils": "7.10.4" + "@babel/helper-plugin-utils": "^7.10.4" } }, "semver": { @@ -1814,14 +16028,15 @@ } }, "@mdx-js/react": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.18.tgz", - "integrity": "sha512-aFHsZVu7r9WamlP+WO/lyvHHZAubkQjkcRYlvS7fQElypfJvjKdHevjC3xiqlsQpasx/4KqRMoEIb++wNtd+6w==" + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.19.tgz", + "integrity": "sha512-RS37Tagqyp2R0XFPoUZeSbZC5uJQRPhqOHWeT1LEwxESjMWb3VORHz7E827ldeQr3UW6VEQEyq/THegu+bLj6A==", + "requires": {} }, "@mdx-js/util": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.18.tgz", - "integrity": "sha512-axMe+NoLF55OlXPbhRn4GNCHcL1f5W3V3c0dWzg05S9JXm3Ecpxzxaht3g3vTP0dcqBL/yh/xCvzK0ZpO54Eug==" + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.19.tgz", + "integrity": "sha512-bkkQNSHz3xSr3KRHUQ2Qk2XhewvvXAOUqjIUKwcQuL4ijOA4tUHZfUgXExi5CpMysrX7izcsyICtXjZHlfJUjg==" }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", @@ -2011,7 +16226,7 @@ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", "requires": { - "@types/unist": "2.0.3" + "@types/unist": "*" } }, "@types/html-minifier-terser": { @@ -2029,7 +16244,7 @@ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", "requires": { - "@types/unist": "2.0.3" + "@types/unist": "*" } }, "@types/minimatch": { @@ -2067,8 +16282,8 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.53.tgz", "integrity": "sha512-4nW60Sd4L7+WMXH1D6jCdVftuW7j4Za6zdp6tJ33Rqv0nk1ZAmQKML9ZLD4H0dehA3FZxXR/GM8gXplf82oNGw==", "requires": { - "@types/prop-types": "15.7.3", - "csstype": "3.0.3" + "@types/prop-types": "*", + "csstype": "^3.0.2" } }, "@types/react-toggle": { @@ -2076,7 +16291,7 @@ "resolved": "https://registry.npmjs.org/@types/react-toggle/-/react-toggle-4.0.2.tgz", "integrity": "sha512-sHqfoKFnL0YU2+OC4meNEC8Ptx9FE8/+nFeFvNcdBa6ANA8KpAzj3R9JN8GtrvlLgjKDoYgI7iILgXYcTPo2IA==", "requires": { - "@types/react": "16.9.53" + "@types/react": "*" } }, "@types/source-list-map": { @@ -2393,7 +16608,7 @@ "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.2.2.tgz", "integrity": "sha512-/3XvE33R+gQKaiPdy3nmHYqhF8hqIu8xnlOicVxb1fD6uMFmxW8rGLzzrRfsPfxgAfm+c1NslLb3TzQVIB8aVA==", "requires": { - "events": "1.1.1" + "events": "^1.1.1" }, "dependencies": { "events": { @@ -2480,11 +16695,6 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, - "are-passive-events-supported": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/are-passive-events-supported/-/are-passive-events-supported-1.1.1.tgz", - "integrity": "sha512-5wnvlvB/dTbfrCvJ027Y4L4gW/6Mwoy1uFSavney0YO++GU+0e/flnjiBBwH+1kh7xNCgCOGvmJC3s32joYbww==" - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2707,12 +16917,12 @@ } }, "babel-plugin-apply-mdx-type-prop": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.18.tgz", - "integrity": "sha512-lcpbj/GatKQp48jsJ8Os/ZXv381ZYFNKA27EPllcpFMpqiS696XkoK+xie/2GjzQSe5IIbo3srsXpd6/ik8PsQ==", + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.19.tgz", + "integrity": "sha512-zAuL11EaBbeNpfTqsa9xP7mkvX3V4LaEV6M9UUaI4zQtTqN5JwvDyhNsALQs5Ud7WFQSXtoqU74saTgE+rgZOw==", "requires": { "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.18" + "@mdx-js/util": "1.6.19" } }, "babel-plugin-dynamic-import-node": { @@ -2724,9 +16934,9 @@ } }, "babel-plugin-extract-import-names": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.18.tgz", - "integrity": "sha512-2EyZia3Ezl3UdhBcgDl6KZTNkYa2VhmAHHbJdhCroa1pZD/E56BulVsSKIhm/kza9agnabDR2VEHO+ZnqpfxbQ==", + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.19.tgz", + "integrity": "sha512-5kbSEhQdg1ybR9OnxybbyR1PXw51z6T6ZCtX3vYSU6t1pC/+eBlSzWXyU2guStbwQgJyxS+mHWSNnL7PUdzAlw==", "requires": { "@babel/helper-plugin-utils": "7.10.4" } @@ -3527,9 +17737,9 @@ "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "optional": true, "requires": { - "good-listener": "1.2.2", - "select": "1.1.2", - "tiny-emitter": "2.1.0" + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" } }, "cliui": { @@ -4556,7 +18766,7 @@ "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.3.tgz", "integrity": "sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A==", "requires": { - "repeat-string": "1.6.1" + "repeat-string": "^1.5.4" } }, "detect-node": { @@ -4802,7 +19012,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "requires": { - "iconv-lite": "0.6.2" + "iconv-lite": "^0.6.2" }, "dependencies": { "iconv-lite": { @@ -4810,7 +19020,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3.0.0" } } } @@ -5294,7 +19504,7 @@ "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-2.1.1.tgz", "integrity": "sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU=", "requires": { - "fbjs": "0.8.17" + "fbjs": "^0.8.4" } }, "fbjs": { @@ -5302,13 +19512,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.22" + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" }, "dependencies": { "core-js": { @@ -5323,7 +19533,7 @@ "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.1.tgz", "integrity": "sha512-l28KKcK1J/u3iq5dRDmmoB2p7dtBfACC2NqJh4dI2kFptxH0asfjmOfcxqh5Sv8suAlVa73gZJ4REY5RrafVvg==", "requires": { - "xml-js": "1.6.11" + "xml-js": "^1.6.11" } }, "figgy-pudding": { @@ -5469,8 +19679,8 @@ "resolved": "https://registry.npmjs.org/flux/-/flux-3.1.3.tgz", "integrity": "sha1-0jvtUVp5oi2TOrU6tK2hnQWy8Io=", "requires": { - "fbemitter": "2.1.1", - "fbjs": "0.8.17" + "fbemitter": "^2.0.0", + "fbjs": "^0.8.0" } }, "follow-redirects": { @@ -5790,7 +20000,7 @@ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", "requires": { - "emoji-regex": "6.1.1" + "emoji-regex": ">=6.0.0 <=6.1.1" }, "dependencies": { "emoji-regex": { @@ -5888,7 +20098,7 @@ "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", "optional": true, "requires": { - "delegate": "3.2.0" + "delegate": "^3.1.2" } }, "got": { @@ -6055,13 +20265,13 @@ "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.0.tgz", "integrity": "sha512-NJvMYU3GlMLs7hN3CRbsNlMzusVNkYBogVWDGybsuuVQ336gFLiD+q9qtFZT2meSHzln3pNISZWTASWothMSMg==", "requires": { - "@types/unist": "2.0.3", - "comma-separated-tokens": "1.0.8", - "property-information": "5.6.0", - "space-separated-tokens": "1.1.5", - "style-to-object": "0.3.0", - "unist-util-is": "4.0.2", - "web-namespaces": "1.1.4" + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" } }, "hast-util-from-parse5": { @@ -6069,12 +20279,12 @@ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.0.tgz", "integrity": "sha512-3ZYnfKenbbkhhNdmOQqgH10vnvPivTdsOJCri+APn0Kty+nRkDHArnaX9Hiaf8H+Ig+vkNptL+SRY/6RwWJk1Q==", "requires": { - "@types/parse5": "5.0.3", - "ccount": "1.0.5", - "hastscript": "5.1.2", - "property-information": "5.6.0", - "vfile": "4.2.0", - "web-namespaces": "1.1.4" + "@types/parse5": "^5.0.0", + "ccount": "^1.0.0", + "hastscript": "^5.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0" } }, "hast-util-parse-selector": { @@ -6087,16 +20297,16 @@ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", "requires": { - "@types/hast": "2.3.1", - "hast-util-from-parse5": "6.0.0", - "hast-util-to-parse5": "6.0.0", - "html-void-elements": "1.0.5", - "parse5": "6.0.1", - "unist-util-position": "3.1.0", - "vfile": "4.2.0", - "web-namespaces": "1.1.4", - "xtend": "4.0.2", - "zwitch": "1.0.5" + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" } }, "hast-util-to-parse5": { @@ -6104,11 +20314,11 @@ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", "requires": { - "hast-to-hyperscript": "9.0.0", - "property-information": "5.6.0", - "web-namespaces": "1.1.4", - "xtend": "4.0.2", - "zwitch": "1.0.5" + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" } }, "hastscript": { @@ -6116,10 +20326,10 @@ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", "requires": { - "comma-separated-tokens": "1.0.8", - "hast-util-parse-selector": "2.2.4", - "property-information": "5.6.0", - "space-separated-tokens": "1.1.5" + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" } }, "he": { @@ -6752,8 +20962,8 @@ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "requires": { - "is-alphabetical": "1.0.4", - "is-decimal": "1.0.4" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" } }, "is-arguments": { @@ -7062,8 +21272,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "3.4.1" + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" } }, "jest-worker": { @@ -7475,7 +21685,7 @@ "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", "requires": { - "unist-util-remove": "2.0.0" + "unist-util-remove": "^2.0.0" } }, "mdast-util-definitions": { @@ -7483,7 +21693,7 @@ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz", "integrity": "sha512-BAv2iUm/e6IK/b2/t+Fx69EL/AGcq/IG2S+HxHjDJGfLJtd6i9SZUS76aC9cig+IEucsqxKTR0ot3m933R3iuA==", "requires": { - "unist-util-visit": "2.0.3" + "unist-util-visit": "^2.0.0" } }, "mdast-util-to-hast": { @@ -7491,14 +21701,14 @@ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-9.1.1.tgz", "integrity": "sha512-vpMWKFKM2mnle+YbNgDXxx95vv0CoLU0v/l3F5oFAG5DV7qwkZVWA206LsAdOnEVyf5vQcLnb3cWJywu7mUxsQ==", "requires": { - "@types/mdast": "3.0.3", - "@types/unist": "2.0.3", - "mdast-util-definitions": "3.0.1", - "mdurl": "1.0.1", - "unist-builder": "2.0.3", - "unist-util-generated": "1.1.5", - "unist-util-position": "3.1.0", - "unist-util-visit": "2.0.3" + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.3", + "mdast-util-definitions": "^3.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" } }, "mdast-util-to-string": { @@ -7945,7 +22155,7 @@ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", "requires": { - "lodash.toarray": "4.4.0" + "lodash.toarray": "^4.4.0" } }, "node-fetch": { @@ -7953,8 +22163,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.13", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "node-forge": { @@ -8476,12 +22686,12 @@ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "requires": { - "character-entities": "1.2.4", - "character-entities-legacy": "1.1.4", - "character-reference-invalid": "1.1.4", - "is-alphanumerical": "1.0.4", - "is-decimal": "1.0.4", - "is-hexadecimal": "1.0.4" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "parse-json": { @@ -9639,14 +23849,15 @@ "prism-react-renderer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.1.1.tgz", - "integrity": "sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug==" + "integrity": "sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug==", + "requires": {} }, "prismjs": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.22.0.tgz", "integrity": "sha512-lLJ/Wt9yy0AiSYBf212kK3mM5L8ycwlyTlSxHBAneXLR0nzFMlZ5y7riFPF3E33zXOF2IH95xdY5jIyZbM9z/w==", "requires": { - "clipboard": "2.0.6" + "clipboard": "^2.0.0" } }, "process": { @@ -9664,7 +23875,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "promise-inflight": { @@ -9687,7 +23898,7 @@ "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", "requires": { - "xtend": "4.0.2" + "xtend": "^4.0.0" } }, "proxy-addr": { @@ -9865,10 +24076,10 @@ "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", "requires": { - "base16": "1.0.0", - "lodash.curry": "4.1.1", - "lodash.flow": "3.5.0", - "pure-color": "1.3.0" + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" } }, "react-dev-utils": { @@ -10317,10 +24528,10 @@ "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.19.1.tgz", "integrity": "sha512-u5e0XDLIs9Rj43vWkKvwL8G3JzvXSl6etuS5G42a8klMohZuYFQzSN6ri+/GiBptDqlrXPTdExJVU7x9rrlXhg==", "requires": { - "flux": "3.1.3", - "react-base16-styling": "0.6.0", - "react-lifecycles-compat": "3.0.4", - "react-textarea-autosize": "6.1.0" + "flux": "^3.1.3", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^6.1.0" } }, "react-lifecycles-compat": { @@ -10408,7 +24619,7 @@ "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-6.1.0.tgz", "integrity": "sha512-F6bI1dgib6fSvG8so1HuArPUv+iVEfPliuLWusLF+gAKz0FbB4jLrWUrTAeq1afnPT2c9toEZYUdz/y1uKMy4A==", "requires": { - "prop-types": "15.7.2" + "prop-types": "^15.6.0" } }, "react-toggle": { @@ -10416,7 +24627,7 @@ "resolved": "https://registry.npmjs.org/react-toggle/-/react-toggle-4.1.1.tgz", "integrity": "sha512-+wXlMcSpg8SmnIXauMaZiKpR+r2wp2gMUteroejp2UTSqGTVvZLN+m9EhMzFARBKEw7KpQOwzCyfzeHeAndQGw==", "requires": { - "classnames": "2.2.6" + "classnames": "^2.2.5" } }, "readable-stream": { @@ -10595,9 +24806,9 @@ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz", "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==", "requires": { - "hast-util-from-parse5": "5.0.3", - "parse5": "5.1.1", - "xtend": "4.0.2" + "hast-util-from-parse5": "^5.0.0", + "parse5": "^5.0.0", + "xtend": "^4.0.0" }, "dependencies": { "hast-util-from-parse5": { @@ -10605,11 +24816,11 @@ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", "requires": { - "ccount": "1.0.5", - "hastscript": "5.1.2", - "property-information": "5.6.0", - "web-namespaces": "1.1.4", - "xtend": "4.0.2" + "ccount": "^1.0.3", + "hastscript": "^5.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.1.2", + "xtend": "^4.0.1" } }, "parse5": { @@ -10629,9 +24840,9 @@ "resolved": "https://registry.npmjs.org/remark-admonitions/-/remark-admonitions-1.2.1.tgz", "integrity": "sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow==", "requires": { - "rehype-parse": "6.0.2", - "unified": "8.4.2", - "unist-util-visit": "2.0.3" + "rehype-parse": "^6.0.2", + "unified": "^8.4.2", + "unist-util-visit": "^2.0.1" }, "dependencies": { "is-plain-obj": { @@ -10644,11 +24855,11 @@ "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", "requires": { - "bail": "1.0.5", - "extend": "3.0.2", - "is-plain-obj": "2.1.0", - "trough": "1.0.5", - "vfile": "4.2.0" + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" } } } @@ -10658,9 +24869,9 @@ "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.1.0.tgz", "integrity": "sha512-lDddGsxXURV01WS9WAiS9rO/cedO1pvr9tahtLhr6qCGFhHG4yZSJW3Ha4Nw9Uk1hLNmUBtPC0+m45Ms+xEitg==", "requires": { - "emoticon": "3.2.0", - "node-emoji": "1.10.0", - "unist-util-visit": "2.0.3" + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.2" } }, "remark-footnotes": { @@ -10669,15 +24880,15 @@ "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" }, "remark-mdx": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.18.tgz", - "integrity": "sha512-xNhjv4kJZ8L6RV68yK8fQ6XWlvSIFOE5VPmM7wMKSwkvwBu6tlUJy0gRF2WiZ4fPPOj6jpqlVB9QakipvZuEqg==", + "version": "1.6.19", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.19.tgz", + "integrity": "sha512-UKK1CFatVPNhgjsIlNQ3GjVl3+6O7x7Hag6oyntFTg8s7sgq+rhWaSfM/6lW5UWU6hzkj520KYBuBlsaSriGtA==", "requires": { "@babel/core": "7.11.6", "@babel/helper-plugin-utils": "7.10.4", "@babel/plugin-proposal-object-rest-spread": "7.11.0", "@babel/plugin-syntax-jsx": "7.10.4", - "@mdx-js/util": "1.6.18", + "@mdx-js/util": "1.6.19", "is-alphabetical": "1.0.4", "remark-parse": "8.0.3", "unified": "9.2.0" @@ -10688,22 +24899,22 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", "requires": { - "@babel/code-frame": "7.10.4", - "@babel/generator": "7.12.1", - "@babel/helper-module-transforms": "7.12.1", - "@babel/helpers": "7.12.1", - "@babel/parser": "7.12.3", - "@babel/template": "7.10.4", - "@babel/traverse": "7.12.1", - "@babel/types": "7.12.1", - "convert-source-map": "1.7.0", - "debug": "4.2.0", - "gensync": "1.0.0-beta.1", - "json5": "2.1.3", - "lodash": "4.17.20", - "resolve": "1.17.0", - "semver": "5.7.1", - "source-map": "0.5.7" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" } }, "@babel/plugin-proposal-object-rest-spread": { @@ -10711,9 +24922,9 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", "requires": { - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@babel/plugin-transform-parameters": "7.12.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-syntax-jsx": { @@ -10721,7 +24932,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", "requires": { - "@babel/helper-plugin-utils": "7.10.4" + "@babel/helper-plugin-utils": "^7.10.4" } }, "semver": { @@ -10736,22 +24947,22 @@ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", "requires": { - "ccount": "1.0.5", - "collapse-white-space": "1.0.6", - "is-alphabetical": "1.0.4", - "is-decimal": "1.0.4", - "is-whitespace-character": "1.0.4", - "is-word-character": "1.0.4", - "markdown-escapes": "1.0.4", - "parse-entities": "2.0.0", - "repeat-string": "1.6.1", - "state-toggle": "1.0.3", + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", "trim": "0.0.1", - "trim-trailing-lines": "1.1.3", - "unherit": "1.1.3", - "unist-util-remove-position": "2.0.1", - "vfile-location": "3.1.0", - "xtend": "4.0.2" + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" } }, "remark-squeeze-paragraphs": { @@ -10759,7 +24970,7 @@ "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", "requires": { - "mdast-squeeze-paragraphs": "4.0.0" + "mdast-squeeze-paragraphs": "^4.0.0" } }, "remove-trailing-separator": { @@ -11315,10 +25526,10 @@ "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-3.2.2.tgz", "integrity": "sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg==", "requires": { - "lodash.chunk": "4.2.0", - "lodash.padstart": "4.6.1", - "whatwg-url": "7.1.0", - "xmlbuilder": "13.0.2" + "lodash.chunk": "^4.2.0", + "lodash.padstart": "^4.6.1", + "whatwg-url": "^7.0.0", + "xmlbuilder": "^13.0.0" } }, "slash": { @@ -11720,6 +25931,21 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -11813,29 +26039,14 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "requires": { - "get-own-enumerable-property-symbols": "3.0.2", - "is-obj": "1.0.1", - "is-regexp": "1.0.0" + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" }, "dependencies": { "is-obj": { @@ -12320,7 +26531,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" }, "dependencies": { "punycode": { @@ -12402,8 +26613,8 @@ "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", "requires": { - "inherits": "2.0.4", - "xtend": "4.0.2" + "inherits": "^2.0.0", + "xtend": "^4.0.0" } }, "unicode-canonical-property-names-ecmascript": { @@ -12435,12 +26646,12 @@ "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", "requires": { - "bail": "1.0.5", - "extend": "3.0.2", - "is-buffer": "2.0.4", - "is-plain-obj": "2.1.0", - "trough": "1.0.5", - "vfile": "4.2.0" + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" }, "dependencies": { "is-buffer": { @@ -12525,7 +26736,7 @@ "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", "requires": { - "unist-util-is": "4.0.2" + "unist-util-is": "^4.0.0" } }, "unist-util-remove-position": { @@ -12533,7 +26744,7 @@ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", "requires": { - "unist-util-visit": "2.0.3" + "unist-util-visit": "^2.0.0" } }, "unist-util-stringify-position": { @@ -12541,7 +26752,7 @@ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "requires": { - "@types/unist": "2.0.3" + "@types/unist": "^2.0.2" } }, "unist-util-visit": { @@ -12549,9 +26760,9 @@ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "requires": { - "@types/unist": "2.0.3", - "unist-util-is": "4.0.2", - "unist-util-visit-parents": "3.1.1" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" } }, "unist-util-visit-parents": { @@ -12559,8 +26770,8 @@ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "requires": { - "@types/unist": "2.0.3", - "unist-util-is": "4.0.2" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" } }, "universalify": { @@ -12719,28 +26930,6 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, - "use-isomorphic-layout-effect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.0.0.tgz", - "integrity": "sha512-JMwJ7Vd86NwAt1jH7q+OIozZSIxA4ND0fx6AsOe2q1H8ooBUp5aN6DvVCqZiIaYU6JaMRJGyR0FO7EBCIsb/Rg==" - }, - "use-latest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.1.0.tgz", - "integrity": "sha512-gF04d0ZMV3AMB8Q7HtfkAWe+oq1tFXP6dZKwBHQF5nVXtGsh2oAYeeqma5ZzxtlpOcW8Ro/tLcfmEodjDeqtuw==", - "requires": { - "use-isomorphic-layout-effect": "1.0.0" - } - }, - "use-onclickoutside": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/use-onclickoutside/-/use-onclickoutside-0.3.1.tgz", - "integrity": "sha512-aahvbW5+G0XJfzj31FJeLsvc6qdKbzeTsQ8EtkHHq5qTg6bm/qkJeKLcgrpnYeHDDbd7uyhImLGdkbM9BRzOHQ==", - "requires": { - "are-passive-events-supported": "1.1.1", - "use-latest": "1.1.0" - } - }, "util": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", @@ -12832,11 +27021,11 @@ "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", "requires": { - "@types/unist": "2.0.3", - "is-buffer": "2.0.4", + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", "replace-ext": "1.0.0", - "unist-util-stringify-position": "2.0.3", - "vfile-message": "2.0.4" + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" }, "dependencies": { "is-buffer": { @@ -12856,8 +27045,8 @@ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "requires": { - "@types/unist": "2.0.3", - "unist-util-stringify-position": "2.0.3" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" } }, "vm-browserify": { @@ -12957,6 +27146,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", @@ -12974,6 +27164,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "0.1.1" } @@ -13004,6 +27195,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "optional": true, "requires": { "assign-symbols": "1.0.0", "is-extendable": "1.0.1" @@ -13013,6 +27205,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "optional": true, "requires": { "is-plain-object": "2.0.4" } @@ -13023,6 +27216,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, "requires": { "extend-shallow": "2.0.1", "is-number": "3.0.0", @@ -13034,6 +27228,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "0.1.1" } @@ -13084,6 +27279,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, "requires": { "kind-of": "3.2.2" }, @@ -13092,6 +27288,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "1.1.6" } @@ -13102,6 +27299,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", @@ -13157,6 +27355,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "optional": true, "requires": { "is-number": "3.0.0", "repeat-string": "1.6.1" @@ -13999,9 +28198,9 @@ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "which": { @@ -14097,7 +28296,7 @@ "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", "requires": { - "sax": "1.2.4" + "sax": "^1.2.4" } }, "xmlbuilder": { diff --git a/docs/package.json b/docs/package.json index d2b2580b..a21adae2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,8 +9,8 @@ "deploy": "docusaurus deploy" }, "dependencies": { - "@docusaurus/core": "^2.0.0-alpha.65", - "@docusaurus/preset-classic": "^2.0.0-alpha.65", + "@docusaurus/core": "^2.0.0-alpha.66", + "@docusaurus/preset-classic": "^2.0.0-alpha.66", "classnames": "^2.2.6", "react": "^16.8.4", "react-dom": "^16.8.4" From d07a46a334854ab28ff5a11c7cb64b194486dc97 Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot Date: Wed, 21 Oct 2020 19:44:49 -0500 Subject: [PATCH 258/353] Changed Wording of Text --- docs/docs/troubleshooting.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index 0c46ad99..7468fa0e 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -83,10 +83,10 @@ for each of your keyboard's microcontrollers or pressing the reset buttons at th ### Connectivity Issues ### -Some users may experience poor connection from their keyboard to their host device, whether it be from a bad Bluetooth card, a metal enclosure on the keyboard or host, or distance to the host device. Increasing the transmit power of your board may solve this problem. To do this, simply enable the `CONFIG_BT_CTLR_TX_PWR_PLUS_8` configuration value in the `.conf` file of your user config directory as such: +Some users may experience a poor connection between the keyboard and the host. This might be due to poor quality BLE hardware, a metal enclosure on the keyboard or host, or the distance between them. Increasing the transmit power of the keyboard's BLE radio may reduce the severity of this problem. To do this, set the `CONFIG_BT_CTLR_TX_PWR_PLUS_8` configuration value in the `.conf` file of your user config directory as such: ``` CONFIG_BT_CTLR_TX_PWR_PLUS_8=y ``` -On the `NRF52840`, the value `PLUS_8` can be set to any multiple of four between `MINUS_20` and `PLUS_8`. The default value for this config is `0`, but if you are having connection issues it is recommended to set it to `PLUS_8` because the power consumption difference is negligible. +For the `nRF52840`, the value `PLUS_8` can be set to any multiple of four between `MINUS_20` and `PLUS_8`. The default value for this config is `0`, but if you are having connection issues it is recommended to set it to `PLUS_8` because the power consumption difference is negligible. From 1a6d373d168c8767480e7b9cef55f5d52eb7736b Mon Sep 17 00:00:00 2001 From: Caleb Lightfoot Date: Wed, 21 Oct 2020 19:57:46 -0500 Subject: [PATCH 259/353] Added Sentence For Link to Zephyr Docs --- docs/docs/troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index 7468fa0e..5d5eae02 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -89,4 +89,4 @@ Some users may experience a poor connection between the keyboard and the host. T CONFIG_BT_CTLR_TX_PWR_PLUS_8=y ``` -For the `nRF52840`, the value `PLUS_8` can be set to any multiple of four between `MINUS_20` and `PLUS_8`. The default value for this config is `0`, but if you are having connection issues it is recommended to set it to `PLUS_8` because the power consumption difference is negligible. +For the `nRF52840`, the value `PLUS_8` can be set to any multiple of four between `MINUS_20` and `PLUS_8`. The default value for this config is `0`, but if you are having connection issues it is recommended to set it to `PLUS_8` because the power consumption difference is negligible. For more information on changing the transmit power of your BLE device, please refer to [the Zephyr docs.](https://docs.zephyrproject.org/latest/reference/kconfig/CONFIG_BT_CTLR_TX_PWR_PLUS_8.html) From 3082455aecc98532807aba3226321a94d2ed4b0c Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 23 Oct 2020 00:45:59 -0500 Subject: [PATCH 260/353] Refactor driver to use Sensor API --- .../arm/bluemicro840/bluemicro840_v1.dts | 8 + app/boards/arm/nice_nano/nice_nano.dts | 1 + app/boards/arm/nrfmicro/nrfmicro_13.dts | 8 + app/drivers/zephyr/battery_voltage_divider.c | 187 +++++++++++++----- .../bindings/zmk,battery-voltage-divider.yaml | 5 + 5 files changed, 162 insertions(+), 47 deletions(-) diff --git a/app/boards/arm/bluemicro840/bluemicro840_v1.dts b/app/boards/arm/bluemicro840/bluemicro840_v1.dts index c693662a..ac8ba56e 100644 --- a/app/boards/arm/bluemicro840/bluemicro840_v1.dts +++ b/app/boards/arm/bluemicro840/bluemicro840_v1.dts @@ -29,6 +29,14 @@ }; }; + vbatt { + compatible = "zmk,battery-voltage-divider"; + label = "VOLTAGE_DIVIDER"; + io-channels = <&adc 7>; + output-ohms = <2000000>; + full-ohms = <(2000000 + 806000)>; + }; + }; &gpio0 { diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index 18312ecc..72804e3c 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -31,6 +31,7 @@ vbatt { compatible = "zmk,battery-voltage-divider"; + label = "VOLTAGE_DIVIDER"; io-channels = <&adc 2>; output-ohms = <2000000>; full-ohms = <(2000000 + 806000)>; diff --git a/app/boards/arm/nrfmicro/nrfmicro_13.dts b/app/boards/arm/nrfmicro/nrfmicro_13.dts index 95bd8adc..840014ad 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_13.dts @@ -26,6 +26,14 @@ }; }; + vbatt { + compatible = "zmk,battery-voltage-divider"; + label = "VOLTAGE_DIVIDER"; + io-channels = <&adc 2>; + output-ohms = <2000000>; + full-ohms = <(2000000 + 820000)>; + }; + }; &gpio0 { diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index 34de6cf1..abe7cb5f 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -16,97 +16,190 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) - -#define VBATT DT_PATH(vbatt) - -struct battery_config { - struct device *adc; - struct adc_channel_cfg acc; - struct adc_sequence as; - int16_t adc_raw; +struct io_channel_config { + const char *label; + uint8_t channel; }; -static struct battery_config battery_config; +struct gpio_channel_config { + const char *label; + uint8_t pin; + uint8_t flags; +}; -static int lithium_ion_mv_to_pct(int16_t bat_mv) { +struct bvd_config { + struct io_channel_config io_channel; + struct gpio_channel_config power_gpios; + uint32_t output_ohm; + uint32_t full_ohm; +}; + +struct bvd_data { + struct device *adc; + struct device *gpio; + struct adc_channel_cfg acc; + struct adc_sequence as; + uint16_t adc_raw; + uint16_t voltage; + uint8_t state_of_charge; +}; + +static uint8_t lithium_ion_mv_to_pct(int16_t bat_mv) { // Magic function that maps mV to this discharge graph from adafruit: // https://learn.adafruit.com/li-ion-and-lipoly-batteries/voltages return round(106.818 + (-0.032685 - 106.818) / pow(1 + pow(bat_mv / 3679.35, 58.979), 0.347386)); } -static void battery_read(struct k_work *workd) { - struct battery_config *cfg = &battery_config; - struct adc_sequence *as = &cfg->as; +static int bvd_sample_fetch(struct device *dev, enum sensor_channel chan) { + struct bvd_data *drv_data = dev->driver_data; + const struct bvd_config *drv_cfg = dev->config_info; + struct adc_sequence *as = &drv_data->as; - int rc = adc_read(cfg->adc, as); + int rc = 0; + + // Enable power GPIO if present + if (drv_data->gpio) { + rc = gpio_pin_set(drv_data->gpio, drv_cfg->power_gpios.pin, 1); + + if (rc != 0) { + LOG_DBG("Failed to enable ADC power GPIO: %d", rc); + return rc; + } + } + + // Read ADC + rc = adc_read(drv_data->adc, as); as->calibrate = false; + if (rc == 0) { - int32_t val = cfg->adc_raw; + int32_t val = drv_data->adc_raw; - adc_raw_to_millivolts(adc_ref_internal(cfg->adc), cfg->acc.gain, as->resolution, &val); + adc_raw_to_millivolts(adc_ref_internal(drv_data->adc), drv_data->acc.gain, as->resolution, &val); - rc = val * (uint64_t)DT_PROP(VBATT, full_ohms) / DT_PROP(VBATT, output_ohms); - LOG_DBG("ADC raw %d ~ %d mV => %d mV\n", cfg->adc_raw, val, rc); - int percent = lithium_ion_mv_to_pct(rc); + uint16_t millivolts = val * (uint64_t)drv_cfg->full_ohm / drv_cfg->output_ohm; + LOG_DBG("ADC raw %d ~ %d mV => %d mV\n", drv_data->adc_raw, val, millivolts); + uint8_t percent = lithium_ion_mv_to_pct(millivolts); LOG_DBG("Percent: %d", percent); + + drv_data->voltage = millivolts; + drv_data->state_of_charge = percent; } else { LOG_DBG("Failed to read ADC: %d", rc); } + + // Disable power GPIO if present + if (drv_data->gpio) { + rc = gpio_pin_set(drv_data->gpio, drv_cfg->power_gpios.pin, 0); + + if (rc != 0) { + LOG_DBG("Failed to disable ADC power GPIO: %d", rc); + } + } + + return rc; } -K_WORK_DEFINE(battery_work, battery_read); +static int bvd_channel_get(struct device *dev, enum sensor_channel chan, + struct sensor_value *val) { + struct bvd_data *drv_data = dev->driver_data; -static void battery_handler(struct k_timer *timer) { k_work_submit(&battery_work); } + switch(chan) { + case SENSOR_CHAN_GAUGE_VOLTAGE: + val->val1 = drv_data->voltage / 1000; + val->val2 = (drv_data->voltage % 1000) * 1000U; + break; -K_TIMER_DEFINE(battery_tick, battery_handler, NULL); + case SENSOR_CHAN_GAUGE_STATE_OF_CHARGE: + val->val1 = drv_data->state_of_charge; + val->val2 = 0; + break; -static int battery_setup(struct device *_arg) { - struct battery_config *cfg = &battery_config; - struct adc_sequence *as = &cfg->as; - struct adc_channel_cfg *acc = &cfg->acc; + default: + return -ENOTSUP; + } - cfg->adc = device_get_binding(DT_IO_CHANNELS_LABEL(VBATT)); + return 0; +} - if (cfg->adc == NULL) { - LOG_ERR("ADC %s failed to retrieve", DT_IO_CHANNELS_LABEL(VBATT)); +static const struct sensor_driver_api bvd_api = { + .sample_fetch = bvd_sample_fetch, + .channel_get = bvd_channel_get, +}; + + +static int bvd_init(struct device *dev) { + struct bvd_data *drv_data = dev->driver_data; + const struct bvd_config *drv_cfg = dev->config_info; + + drv_data->adc = device_get_binding(drv_cfg->io_channel.label); + + if (drv_data->adc == NULL) { + LOG_ERR("ADC %s failed to retrieve", drv_cfg->io_channel.label); return -ENOENT; } - *as = (struct adc_sequence){ + int rc = 0; + + if (drv_cfg->power_gpios.label) { + drv_data->gpio = device_get_binding(drv_cfg->power_gpios.label); + if (drv_data->gpio == NULL) { + LOG_ERR("Failed to get GPIO %s", drv_cfg->power_gpios.label); + return -ENOENT; + } + rc = gpio_pin_configure(drv_data->gpio, drv_cfg->power_gpios.pin, + GPIO_OUTPUT_INACTIVE | drv_cfg->power_gpios.flags); + if (rc != 0) { + LOG_ERR("Failed to control feed %s.%u: %d", + drv_cfg->power_gpios.label, drv_cfg->power_gpios.pin, rc); + return rc; + } + } + + drv_data->as = (struct adc_sequence){ .channels = BIT(0), - .buffer = &cfg->adc_raw, - .buffer_size = sizeof(cfg->adc_raw), + .buffer = &drv_data->adc_raw, + .buffer_size = sizeof(drv_data->adc_raw), .oversampling = 4, .calibrate = true, }; #ifdef CONFIG_ADC_NRFX_SAADC - *acc = (struct adc_channel_cfg){ + drv_data->acc = (struct adc_channel_cfg){ .gain = ADC_GAIN_1_5, .reference = ADC_REF_INTERNAL, .acquisition_time = ADC_ACQ_TIME(ADC_ACQ_TIME_MICROSECONDS, 40), - .input_positive = SAADC_CH_PSELP_PSELP_AnalogInput0 + DT_IO_CHANNELS_INPUT(VBATT), + .input_positive = SAADC_CH_PSELP_PSELP_AnalogInput0 + drv_cfg->io_channel.channel, }; - as->resolution = 12; + drv_data->as.resolution = 12; #else #error Unsupported ADC #endif - int adc_rc = adc_channel_setup(cfg->adc, acc); - LOG_DBG("AIN%u setup returned %d", DT_IO_CHANNELS_INPUT(VBATT), adc_rc); + rc = adc_channel_setup(drv_data->adc, &drv_data->acc); + LOG_DBG("AIN%u setup returned %d", drv_cfg->io_channel.channel, rc); - if (adc_rc != 0) { - return adc_rc; - } - - k_timer_start(&battery_tick, K_NO_WAIT, K_SECONDS(5)); - - return 0; + return rc; } -SYS_INIT(battery_setup, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); +static struct bvd_data bvd_data; +static const struct bvd_config bvd_cfg = { + .io_channel = { + DT_INST_IO_CHANNELS_LABEL(0), + DT_INST_IO_CHANNELS_INPUT(0), + }, +#if DT_INST_NODE_HAS_PROP(0, power_gpios) + .power_gpios = { + DT_INST_GPIO_LABEL(0, power_gpios), + DT_INST_PIN(0, power_gpios), + DT_INST_FLAGS(0, power_gpios), + }, +#endif + .output_ohm = DT_INST_PROP(0, output_ohms), + .full_ohm = DT_INST_PROP(0, full_ohms), +}; -#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ \ No newline at end of file +DEVICE_AND_API_INIT(bvd_dev, DT_INST_LABEL(0), &bvd_init, + &bvd_data, &bvd_cfg, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, + &bvd_api); diff --git a/app/drivers/zephyr/dts/bindings/zmk,battery-voltage-divider.yaml b/app/drivers/zephyr/dts/bindings/zmk,battery-voltage-divider.yaml index f6e06427..3f391d78 100644 --- a/app/drivers/zephyr/dts/bindings/zmk,battery-voltage-divider.yaml +++ b/app/drivers/zephyr/dts/bindings/zmk,battery-voltage-divider.yaml @@ -6,4 +6,9 @@ description: Battery SoC monitoring using voltage divider compatible: "zmk,battery-voltage-divider" include: voltage-divider.yaml + +properties: + label: + required: true + type: string \ No newline at end of file From 162c6b77db27c158b05ed65effa8d8ded68ba9b7 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 23 Oct 2020 00:50:39 -0500 Subject: [PATCH 261/353] clang-format and add missing defconfig values --- .../bluemicro840/bluemicro840_v1_defconfig | 4 + app/boards/arm/nrfmicro/nrfmicro_13_defconfig | 4 + app/drivers/zephyr/battery_voltage_divider.c | 86 +++++++++---------- 3 files changed, 51 insertions(+), 43 deletions(-) diff --git a/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig b/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig index 96f03ca4..2a799811 100644 --- a/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig +++ b/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig @@ -10,6 +10,10 @@ CONFIG_ARM_MPU=y # enable GPIO CONFIG_GPIO=y +CONFIG_ADC=y + +CONFIG_NEWLIB_LIBC=y + CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/boards/arm/nrfmicro/nrfmicro_13_defconfig b/app/boards/arm/nrfmicro/nrfmicro_13_defconfig index cac11642..0421653d 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13_defconfig +++ b/app/boards/arm/nrfmicro/nrfmicro_13_defconfig @@ -10,6 +10,10 @@ CONFIG_ARM_MPU=y # enable GPIO CONFIG_GPIO=y +CONFIG_ADC=y + +CONFIG_NEWLIB_LIBC=y + CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index abe7cb5f..7dba86a3 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -17,21 +17,21 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); struct io_channel_config { - const char *label; - uint8_t channel; + const char *label; + uint8_t channel; }; struct gpio_channel_config { - const char *label; - uint8_t pin; - uint8_t flags; + const char *label; + uint8_t pin; + uint8_t flags; }; struct bvd_config { - struct io_channel_config io_channel; - struct gpio_channel_config power_gpios; - uint32_t output_ohm; - uint32_t full_ohm; + struct io_channel_config io_channel; + struct gpio_channel_config power_gpios; + uint32_t output_ohm; + uint32_t full_ohm; }; struct bvd_data { @@ -75,7 +75,8 @@ static int bvd_sample_fetch(struct device *dev, enum sensor_channel chan) { if (rc == 0) { int32_t val = drv_data->adc_raw; - adc_raw_to_millivolts(adc_ref_internal(drv_data->adc), drv_data->acc.gain, as->resolution, &val); + adc_raw_to_millivolts(adc_ref_internal(drv_data->adc), drv_data->acc.gain, as->resolution, + &val); uint16_t millivolts = val * (uint64_t)drv_cfg->full_ohm / drv_cfg->output_ohm; LOG_DBG("ADC raw %d ~ %d mV => %d mV\n", drv_data->adc_raw, val, millivolts); @@ -94,17 +95,16 @@ static int bvd_sample_fetch(struct device *dev, enum sensor_channel chan) { if (rc != 0) { LOG_DBG("Failed to disable ADC power GPIO: %d", rc); - } + } } return rc; } -static int bvd_channel_get(struct device *dev, enum sensor_channel chan, - struct sensor_value *val) { +static int bvd_channel_get(struct device *dev, enum sensor_channel chan, struct sensor_value *val) { struct bvd_data *drv_data = dev->driver_data; - switch(chan) { + switch (chan) { case SENSOR_CHAN_GAUGE_VOLTAGE: val->val1 = drv_data->voltage / 1000; val->val2 = (drv_data->voltage % 1000) * 1000U; @@ -119,7 +119,7 @@ static int bvd_channel_get(struct device *dev, enum sensor_channel chan, return -ENOTSUP; } - return 0; + return 0; } static const struct sensor_driver_api bvd_api = { @@ -127,7 +127,6 @@ static const struct sensor_driver_api bvd_api = { .channel_get = bvd_channel_get, }; - static int bvd_init(struct device *dev) { struct bvd_data *drv_data = dev->driver_data; const struct bvd_config *drv_cfg = dev->config_info; @@ -142,19 +141,19 @@ static int bvd_init(struct device *dev) { int rc = 0; if (drv_cfg->power_gpios.label) { - drv_data->gpio = device_get_binding(drv_cfg->power_gpios.label); - if (drv_data->gpio == NULL) { - LOG_ERR("Failed to get GPIO %s", drv_cfg->power_gpios.label); - return -ENOENT; - } - rc = gpio_pin_configure(drv_data->gpio, drv_cfg->power_gpios.pin, - GPIO_OUTPUT_INACTIVE | drv_cfg->power_gpios.flags); - if (rc != 0) { - LOG_ERR("Failed to control feed %s.%u: %d", - drv_cfg->power_gpios.label, drv_cfg->power_gpios.pin, rc); - return rc; - } - } + drv_data->gpio = device_get_binding(drv_cfg->power_gpios.label); + if (drv_data->gpio == NULL) { + LOG_ERR("Failed to get GPIO %s", drv_cfg->power_gpios.label); + return -ENOENT; + } + rc = gpio_pin_configure(drv_data->gpio, drv_cfg->power_gpios.pin, + GPIO_OUTPUT_INACTIVE | drv_cfg->power_gpios.flags); + if (rc != 0) { + LOG_ERR("Failed to control feed %s.%u: %d", drv_cfg->power_gpios.label, + drv_cfg->power_gpios.pin, rc); + return rc; + } + } drv_data->as = (struct adc_sequence){ .channels = BIT(0), @@ -185,21 +184,22 @@ static int bvd_init(struct device *dev) { static struct bvd_data bvd_data; static const struct bvd_config bvd_cfg = { - .io_channel = { - DT_INST_IO_CHANNELS_LABEL(0), - DT_INST_IO_CHANNELS_INPUT(0), - }, + .io_channel = + { + DT_INST_IO_CHANNELS_LABEL(0), + DT_INST_IO_CHANNELS_INPUT(0), + }, #if DT_INST_NODE_HAS_PROP(0, power_gpios) - .power_gpios = { - DT_INST_GPIO_LABEL(0, power_gpios), - DT_INST_PIN(0, power_gpios), - DT_INST_FLAGS(0, power_gpios), - }, + .power_gpios = + { + DT_INST_GPIO_LABEL(0, power_gpios), + DT_INST_PIN(0, power_gpios), + DT_INST_FLAGS(0, power_gpios), + }, #endif - .output_ohm = DT_INST_PROP(0, output_ohms), - .full_ohm = DT_INST_PROP(0, full_ohms), + .output_ohm = DT_INST_PROP(0, output_ohms), + .full_ohm = DT_INST_PROP(0, full_ohms), }; -DEVICE_AND_API_INIT(bvd_dev, DT_INST_LABEL(0), &bvd_init, - &bvd_data, &bvd_cfg, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, - &bvd_api); +DEVICE_AND_API_INIT(bvd_dev, DT_INST_LABEL(0), &bvd_init, &bvd_data, &bvd_cfg, POST_KERNEL, + CONFIG_SENSOR_INIT_PRIORITY, &bvd_api); From 8efcd80f3ae594a489339ac23de8890399f22f59 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 23 Oct 2020 00:57:32 -0500 Subject: [PATCH 262/353] Add missing ADC and fix formatting --- app/boards/arm/bluemicro840/bluemicro840_v1.dts | 4 ++++ app/boards/arm/nice_nano/nice_nano.dts | 4 ++-- app/boards/arm/nrfmicro/nrfmicro_13.dts | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/boards/arm/bluemicro840/bluemicro840_v1.dts b/app/boards/arm/bluemicro840/bluemicro840_v1.dts index ac8ba56e..32aa2e6f 100644 --- a/app/boards/arm/bluemicro840/bluemicro840_v1.dts +++ b/app/boards/arm/bluemicro840/bluemicro840_v1.dts @@ -39,6 +39,10 @@ }; +&adc { + status = "okay"; +}; + &gpio0 { status = "okay"; }; diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index 997d195a..18195412 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -28,8 +28,8 @@ label = "Blue LED"; }; }; - - ext-power { + + ext-power { compatible = "zmk,ext-power-generic"; label = "EXT_POWER"; control-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; diff --git a/app/boards/arm/nrfmicro/nrfmicro_13.dts b/app/boards/arm/nrfmicro/nrfmicro_13.dts index ae6c1af8..5ae11ba0 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_13.dts @@ -25,8 +25,8 @@ label = "Blue LED"; }; }; - - ext-power { + + ext-power { compatible = "zmk,ext-power-generic"; label = "EXT_POWER"; control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; From 6047415b1c26ec06198edecf656d6d9edcd01446 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 23 Oct 2020 01:19:47 -0500 Subject: [PATCH 263/353] Fix build for boards without voltage divider --- app/drivers/zephyr/battery_voltage_divider.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index 7dba86a3..980f1b40 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -16,6 +16,8 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); +#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) + struct io_channel_config { const char *label; uint8_t channel; @@ -203,3 +205,5 @@ static const struct bvd_config bvd_cfg = { DEVICE_AND_API_INIT(bvd_dev, DT_INST_LABEL(0), &bvd_init, &bvd_data, &bvd_cfg, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, &bvd_api); + +#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ From a67a8cd3b87e67176fb88c1d04d95004f7ff905d Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 23 Oct 2020 22:37:44 -0500 Subject: [PATCH 264/353] Check if fetch channel is supported --- app/drivers/zephyr/battery_voltage_divider.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index 980f1b40..6139d46f 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -58,6 +58,11 @@ static int bvd_sample_fetch(struct device *dev, enum sensor_channel chan) { const struct bvd_config *drv_cfg = dev->config_info; struct adc_sequence *as = &drv_data->as; + // Make sure selected channel is supported + if (chan != SENSOR_CHAN_GAUGE_VOLTAGE && chan != SENSOR_CHAN_GAUGE_STATE_OF_CHARGE) { + return -ENOTSUP; + } + int rc = 0; // Enable power GPIO if present From 6a9a6e6d8edaae5f3e5bc37033a9391bc66e786a Mon Sep 17 00:00:00 2001 From: Nigel Rodriguez Date: Sat, 24 Oct 2020 12:21:15 +0800 Subject: [PATCH 265/353] Add Boardsource 3x4 shield --- .github/workflows/build.yml | 1 + .../shields/boardsource3x4/Kconfig.defconfig | 13 +++++ .../shields/boardsource3x4/Kconfig.shield | 9 ++++ .../boardsource3x4/boardsource3x4.conf | 0 .../boardsource3x4/boardsource3x4.keymap | 49 +++++++++++++++++++ .../boardsource3x4/boardsource3x4.overlay | 38 ++++++++++++++ 6 files changed, 110 insertions(+) create mode 100644 app/boards/shields/boardsource3x4/Kconfig.defconfig create mode 100644 app/boards/shields/boardsource3x4/Kconfig.shield create mode 100644 app/boards/shields/boardsource3x4/boardsource3x4.conf create mode 100644 app/boards/shields/boardsource3x4/boardsource3x4.keymap create mode 100644 app/boards/shields/boardsource3x4/boardsource3x4.overlay diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 60c337de..afaa8af7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,7 @@ jobs: matrix: board: [proton_c, nice_nano, bluemicro840_v1, nrfmicro_13] shield: + - boardsource3x4 - corne_left - corne_right - kyria_left diff --git a/app/boards/shields/boardsource3x4/Kconfig.defconfig b/app/boards/shields/boardsource3x4/Kconfig.defconfig new file mode 100644 index 00000000..c03703b0 --- /dev/null +++ b/app/boards/shields/boardsource3x4/Kconfig.defconfig @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + + +if SHIELD_BOARDSOURCE3X4 + +config ZMK_KEYBOARD_NAME + default "Boardsource 3x4" + +endif \ No newline at end of file diff --git a/app/boards/shields/boardsource3x4/Kconfig.shield b/app/boards/shields/boardsource3x4/Kconfig.shield new file mode 100644 index 00000000..2e9e228c --- /dev/null +++ b/app/boards/shields/boardsource3x4/Kconfig.shield @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +config SHIELD_BOARDSOURCE3X4 + def_bool $(shields_list_contains,boardsource3x4) + diff --git a/app/boards/shields/boardsource3x4/boardsource3x4.conf b/app/boards/shields/boardsource3x4/boardsource3x4.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/boardsource3x4/boardsource3x4.keymap b/app/boards/shields/boardsource3x4/boardsource3x4.keymap new file mode 100644 index 00000000..031b7c97 --- /dev/null +++ b/app/boards/shields/boardsource3x4/boardsource3x4.keymap @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { + + bindings = < + &tog 1 &cp M_PREV &cp M_PLAY &cp M_NEXT + &mo 2 &cp M_VOLD &kp UARW &cp M_VOLU + &mo 3 &kp LARW &kp DARW &kp RARW + >; + + }; + + num_layer { + bindings = < + &tog 1 &kp NUM_7 &kp NUM_8 &kp NUM_9 + &mo 2 &kp NUM_4 &kp NUM_5 &kp NUM_6 + < 3 NUM_0 &kp NUM_1 &kp NUM_2 &kp NUM_3 + >; + }; + + lower_layer { + bindings = < + &bt BT_CLR &none &reset &bootloader + &trans &bt BT_SEL 3 &bt BT_SEL 4 &none + &none &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 + >; + }; + + raise_layer { + bindings = < + &kp 0x68 &kp 0x69 &kp 0x6A &kp 0x6B + &kp 0x6C &kp 0x6D &kp 0x6E &kp 0x6F + &trans &kp 0x70 &kp 0x71 &kp 0x72 + >; + }; + }; +}; \ No newline at end of file diff --git a/app/boards/shields/boardsource3x4/boardsource3x4.overlay b/app/boards/shields/boardsource3x4/boardsource3x4.overlay new file mode 100644 index 00000000..d68ac30b --- /dev/null +++ b/app/boards/shields/boardsource3x4/boardsource3x4.overlay @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + + row-gpios + = <&pro_micro_a 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + col-gpios + = <&pro_micro_d 10 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + ; + + }; + + bt_unpair_combo: bt_unpair_combo { + compatible = "zmk,bt-unpair-combo"; + key-positions = <0 11>; + }; +}; \ No newline at end of file From 9d624740d9227d8a6bbc2918e782edd3f22145fb Mon Sep 17 00:00:00 2001 From: Nigel Rodriguez Date: Sat, 24 Oct 2020 12:40:49 +0800 Subject: [PATCH 266/353] Fix wrong comment tokens --- app/boards/shields/boardsource3x4/Kconfig.defconfig | 8 ++------ app/boards/shields/boardsource3x4/Kconfig.shield | 7 ++----- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/app/boards/shields/boardsource3x4/Kconfig.defconfig b/app/boards/shields/boardsource3x4/Kconfig.defconfig index c03703b0..4c55aab0 100644 --- a/app/boards/shields/boardsource3x4/Kconfig.defconfig +++ b/app/boards/shields/boardsource3x4/Kconfig.defconfig @@ -1,9 +1,5 @@ -/* - * Copyright (c) 2020 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT if SHIELD_BOARDSOURCE3X4 diff --git a/app/boards/shields/boardsource3x4/Kconfig.shield b/app/boards/shields/boardsource3x4/Kconfig.shield index 2e9e228c..cda55d07 100644 --- a/app/boards/shields/boardsource3x4/Kconfig.shield +++ b/app/boards/shields/boardsource3x4/Kconfig.shield @@ -1,8 +1,5 @@ -/* - * Copyright (c) 2020 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT config SHIELD_BOARDSOURCE3X4 def_bool $(shields_list_contains,boardsource3x4) From adb07926b1d6760e63e19134b338f8b1ba460483 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 24 Oct 2020 18:52:34 -0500 Subject: [PATCH 267/353] Remove newlib dep --- .../arm/bluemicro840/bluemicro840_v1_defconfig | 2 -- app/boards/arm/nice_nano/nice_nano_defconfig | 2 -- app/boards/arm/nrfmicro/nrfmicro_13_defconfig | 2 -- app/drivers/zephyr/battery_voltage_divider.c | 18 +++++++++++------- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig b/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig index 2a799811..00d56612 100644 --- a/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig +++ b/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig @@ -12,8 +12,6 @@ CONFIG_GPIO=y CONFIG_ADC=y -CONFIG_NEWLIB_LIBC=y - CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/boards/arm/nice_nano/nice_nano_defconfig b/app/boards/arm/nice_nano/nice_nano_defconfig index b727fe0b..a888cb3f 100644 --- a/app/boards/arm/nice_nano/nice_nano_defconfig +++ b/app/boards/arm/nice_nano/nice_nano_defconfig @@ -12,8 +12,6 @@ CONFIG_GPIO=y CONFIG_ADC=y -CONFIG_NEWLIB_LIBC=y - CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/boards/arm/nrfmicro/nrfmicro_13_defconfig b/app/boards/arm/nrfmicro/nrfmicro_13_defconfig index 0421653d..4e44ea36 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13_defconfig +++ b/app/boards/arm/nrfmicro/nrfmicro_13_defconfig @@ -12,8 +12,6 @@ CONFIG_GPIO=y CONFIG_ADC=y -CONFIG_NEWLIB_LIBC=y - CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index 6139d46f..5bac5447 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -7,12 +7,10 @@ #define DT_DRV_COMPAT zmk_battery_voltage_divider #include -#include #include #include #include #include -#include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -47,10 +45,16 @@ struct bvd_data { }; static uint8_t lithium_ion_mv_to_pct(int16_t bat_mv) { - // Magic function that maps mV to this discharge graph from adafruit: + // Simple linear approximation of a battery based off adafruit's discharge graph: // https://learn.adafruit.com/li-ion-and-lipoly-batteries/voltages - return round(106.818 + - (-0.032685 - 106.818) / pow(1 + pow(bat_mv / 3679.35, 58.979), 0.347386)); + + if (bat_mv >= 4200) { + return 100; + } else if (bat_mv <= 3450) { + return 0; + } + + return bat_mv * 2 / 15 - 459; } static int bvd_sample_fetch(struct device *dev, enum sensor_channel chan) { @@ -142,7 +146,7 @@ static int bvd_init(struct device *dev) { if (drv_data->adc == NULL) { LOG_ERR("ADC %s failed to retrieve", drv_cfg->io_channel.label); - return -ENOENT; + return -ENODEV; } int rc = 0; @@ -151,7 +155,7 @@ static int bvd_init(struct device *dev) { drv_data->gpio = device_get_binding(drv_cfg->power_gpios.label); if (drv_data->gpio == NULL) { LOG_ERR("Failed to get GPIO %s", drv_cfg->power_gpios.label); - return -ENOENT; + return -ENODEV; } rc = gpio_pin_configure(drv_data->gpio, drv_cfg->power_gpios.pin, GPIO_OUTPUT_INACTIVE | drv_cfg->power_gpios.flags); From 63007fb6c136b8475894a6315f12eabeea952ca4 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 24 Oct 2020 18:54:56 -0500 Subject: [PATCH 268/353] fix: clang-format --- app/drivers/zephyr/battery_voltage_divider.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index 5bac5447..09a353a7 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -47,7 +47,7 @@ struct bvd_data { static uint8_t lithium_ion_mv_to_pct(int16_t bat_mv) { // Simple linear approximation of a battery based off adafruit's discharge graph: // https://learn.adafruit.com/li-ion-and-lipoly-batteries/voltages - + if (bat_mv >= 4200) { return 100; } else if (bat_mv <= 3450) { From 7296b967978be3483a11a3a5ea2b2eaeb8b23ce8 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 24 Oct 2020 21:08:00 -0500 Subject: [PATCH 269/353] Add Reviung41 Shield Definitions --- .github/workflows/build.yml | 1 + .../shields/reviung41/Kconfig.defconfig | 9 +++ app/boards/shields/reviung41/Kconfig.shield | 5 ++ .../reviung41/boards/nice_nano.overlay | 28 ++++++++ app/boards/shields/reviung41/reviung41.conf | 3 + app/boards/shields/reviung41/reviung41.keymap | 72 +++++++++++++++++++ .../shields/reviung41/reviung41.overlay | 52 ++++++++++++++ docs/docs/hardware.md | 1 + docs/static/setup.ps1 | 6 +- docs/static/setup.sh | 15 ++-- 10 files changed, 182 insertions(+), 10 deletions(-) create mode 100644 app/boards/shields/reviung41/Kconfig.defconfig create mode 100644 app/boards/shields/reviung41/Kconfig.shield create mode 100644 app/boards/shields/reviung41/boards/nice_nano.overlay create mode 100644 app/boards/shields/reviung41/reviung41.conf create mode 100644 app/boards/shields/reviung41/reviung41.keymap create mode 100644 app/boards/shields/reviung41/reviung41.overlay diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 60c337de..b811a37a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,6 +18,7 @@ jobs: - lily58_right - iris_left - iris_right + - reviung41 - romac - romac_plus - settings_reset diff --git a/app/boards/shields/reviung41/Kconfig.defconfig b/app/boards/shields/reviung41/Kconfig.defconfig new file mode 100644 index 00000000..0625cb21 --- /dev/null +++ b/app/boards/shields/reviung41/Kconfig.defconfig @@ -0,0 +1,9 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +if SHIELD_REVIUNG41 + +config ZMK_KEYBOARD_NAME + default "Reviung41" + +endif diff --git a/app/boards/shields/reviung41/Kconfig.shield b/app/boards/shields/reviung41/Kconfig.shield new file mode 100644 index 00000000..e51f9e64 --- /dev/null +++ b/app/boards/shields/reviung41/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config SHIELD_REVIUNG41 + def_bool $(shields_list_contains,reviung41) diff --git a/app/boards/shields/reviung41/boards/nice_nano.overlay b/app/boards/shields/reviung41/boards/nice_nano.overlay new file mode 100644 index 00000000..a05d0eba --- /dev/null +++ b/app/boards/shields/reviung41/boards/nice_nano.overlay @@ -0,0 +1,28 @@ +&spi1 { + compatible = "nordic,nrf-spi"; + status = "okay"; + mosi-pin = <6>; + // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. + sck-pin = <5>; + miso-pin = <7>; + + led_strip: ws2812@0 { + compatible = "worldsemi,ws2812-spi"; + label = "WS2812"; + + /* SPI */ + reg = <0>; /* ignored, but necessary for SPI bindings */ + spi-max-frequency = <4000000>; + + /* WS2812 */ + chain-length = <11>; /* arbitrary; change at will */ + spi-one-frame = <0x70>; + spi-zero-frame = <0x40>; + }; +}; + +/ { + chosen { + zmk,underglow = &led_strip; + }; +}; diff --git a/app/boards/shields/reviung41/reviung41.conf b/app/boards/shields/reviung41/reviung41.conf new file mode 100644 index 00000000..289f070b --- /dev/null +++ b/app/boards/shields/reviung41/reviung41.conf @@ -0,0 +1,3 @@ +# Uncomment the following lines to enable RGB underglow +# CONFIG_ZMK_RGB_UNDERGLOW=y +# CONFIG_WS2812_STRIP=y diff --git a/app/boards/shields/reviung41/reviung41.keymap b/app/boards/shields/reviung41/reviung41.keymap new file mode 100644 index 00000000..26b40935 --- /dev/null +++ b/app/boards/shields/reviung41/reviung41.keymap @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { +// ------------------------------------------------------------------------------------- +// | TAB | Q | W | E | R | T | | Y | U | I | O | P | BKSP | +// | CTRL | A | S | D | F | G | | H | J | K | L | ; | ' | +// | SHFT | Z | X | C | V | B | | N | M | , | . | / | SHFT(RET) | +// | ALT | LWR | SPC | RSE | ALT | + bindings = < + &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BKSP + &kp LCTL &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT + &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH &mt RSFT RET + &kp LALT &mo 1 &kp SPC &mo 2 &kp RALT + >; + }; + + lower_layer { +// ---------------------------------------------------------------------------------- +// | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | DEL | +// | | _ | + | { | } | "|" | | LFT | DWN | UP | RGT | ` | ~ | +// | | ESC | GUI | ALT | CAPS| " | | HOME| END | PGUP| PGDN| PRSC| SHFT(RET) | +// | | | RET | ADJ | | + bindings = < + &trans &kp BANG &kp ATSN &kp HASH &kp CURU &kp PRCT &kp CRRT &kp AMPS &kp NUM_8 &kp LPRN &kp RPRN &kp DEL + &trans &kp MINUS &kp KPLS &kp LCUR &kp RCUR &kp PIPE &kp LARW &kp DARW &kp UARW &kp RARW &kp GRAV &kp GRAV + &trans &kp ESC &kp LGUI &kp LALT &kp CLCK &kp QUOT &kp HOME &kp END &kp PGUP &kp PGDN &kp PRSC &mt RSFT RET + &trans &trans &kp RET &mo 3 &trans + >; + }; + + raise_layer { +// ----------------------------------------------------------------------------------------- +// | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | DEL | +// | | - | = | [ | ] | \ | | F1 | F2 | F3 | F4 | F5 | F6 | +// | | ESC | GUI | ALT | CAPS| " | | F7 | F8 | F9 | F10 | F11 | F12 | +// | | ADJ | BKSP | | | + bindings = < + &trans &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp DEL + &trans &kp MINUS &kp EQL &kp LBKT &kp RBKT &kp BSLH &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 + &trans &kp ESC &kp LGUI &kp RALT &kp CLCK &kp QUOT &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 + &trans &mo 3 &kp BKSP &trans &trans + >; + }; + + adjust_layer { +// ----------------------------------------------------------------------------------------- +// | RGB BRI+ | RGB SAT+ | RGB HUE+ | RGB ANI+ | | RGB TOG | | BT1 | BT2 | BT3 | BT4 | BT5 | BT CLR | +// | RGB BRI- | RGB SAT- | RGB HUE- | RGB ANI+ | | | | | | | | | | +// | | | | | | | | RESET | | | | | | +// | | | | | | + bindings = < + &rgb_ug RGB_BRI &rgb_ug RGB_SAI &rgb_ug RGB_HUI &rgb_ug RGB_EFF &none &rgb_ug RGB_TOG &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &bt BT_CLR + &rgb_ug RGB_BRD &rgb_ug RGB_SAD &rgb_ug RGB_HUD &rgb_ug RGB_EFR &none &none &none &none &none &none &none &none + &none &none &none &none &none &none &reset &none &none &none &none &none + &trans &trans &tog 3 &trans &trans + >; + }; + }; +}; diff --git a/app/boards/shields/reviung41/reviung41.overlay b/app/boards/shields/reviung41/reviung41.overlay new file mode 100644 index 00000000..06270ca1 --- /dev/null +++ b/app/boards/shields/reviung41/reviung41.overlay @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <6>; + rows = <7>; + + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) RC(5,5) + RC(6,0) RC(6,1) RC(6,2) RC(6,3) RC(6,4) + >; + }; + + kscan0: kscan_0 { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + + col-gpios + = <&pro_micro_d 4 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 5 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 6 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 7 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 8 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 9 GPIO_ACTIVE_HIGH> + ; + + row-gpios + = <&pro_micro_a 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_a 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + }; +}; diff --git a/docs/docs/hardware.md b/docs/docs/hardware.md index fe229dfe..e443211a 100644 --- a/docs/docs/hardware.md +++ b/docs/docs/hardware.md @@ -28,6 +28,7 @@ That being said, there are currently only a few specific [boards](/docs/faq#what - [Lily58](https://github.com/kata0510/Lily58) (`lily58_left` and `lily58_right`) - [Sofle](https://github.com/josefadamcik/SofleKeyboard) (`sofle_left` and `sofle_right`) - [Splitreus62](https://github.com/Na-Cly/splitreus62) (`splitreus62_left` and `splitreus62_right`) +- [Reviung41](https://github.com/gtips/reviung/tree/master/reviung41) (`reviung41`) - [RoMac+ v4](https://www.littlekeyboards.com/products/romac) (`romac_plus`) - [RoMac v2](https://mechboards.co.uk/shop/kits/romac-macro-pad/) (`romac`) - [QAZ](https://www.cbkbd.com/product/qaz-keyboard-kit) (`qaz`) diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index 5ebd3768..fac1732a 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -91,9 +91,9 @@ Write-Host "Keyboard Shield Selection:" $prompt = "Pick a keyboard" # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. -$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "RoMac", "RoMac+", "makerdiary M60", "Microdox", "TG4X", "QAZ" -$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "romac", "romac_plus", "m60", "microdox", "tg4x", "qaz" -$splits = "y", "y", "y", "y", "y", "y", "n", "n", "n", "y", "n", "n" +$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "Reviung41", "RoMac", "RoMac+", "makerdiary M60", "Microdox", "TG4X", "QAZ" +$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "reviung41", "romac", "romac_plus", "m60", "microdox", "tg4x", "qaz" +$splits = "y", "y", "y", "y", "y", "y", "n", "n", "n", "n", "y", "n", "n" $choice = Get-Choice-From-Options -Options $options -Prompt $prompt $shield_title = $($options[$choice]) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index e45a7ed7..3d370247 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -58,7 +58,7 @@ echo "" echo "Keyboard Shield Selection:" prompt="Pick an keyboard:" -options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "RoMac" "RoMac+" "makerdiary M60" "Microdox" "TG4X" "QAZ") +options=("Kyria" "Lily58" "Corne" "Splitreus62" "Sofle" "Iris" "Reviung41" "RoMac" "RoMac+" "makerdiary M60" "Microdox" "TG4X" "QAZ") PS3="$prompt " # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. @@ -73,12 +73,13 @@ select opt in "${options[@]}" "Quit"; do 4 ) shield_title="Splitreus62" shield="splitreus62"; split="y"; break;; 5 ) shield_title="Sofle" shield="sofle"; split="y"; break;; 6 ) shield_title="Iris" shield="iris"; split="y"; break;; - 7 ) shield_title="RoMac" shield="romac"; split="n"; break;; - 8 ) shield_title="RoMac+" shield="romac_plus"; split="n"; break;; - 9 ) shield_title="M60" shield="m60"; split="n"; break;; - 10 ) shield_title="Microdox" shield="microdox"; split="y"; break;; - 11 ) shield_title="TG4X" shield="tg4x"; split="n"; break;; - 12 ) shield_title="QAZ" shield="qaz"; split="n"; break;; + 7 ) shield_title="Reviung41" shield="reviung41"; split="n"; break;; + 8 ) shield_title="RoMac" shield="romac"; split="n"; break;; + 9 ) shield_title="RoMac+" shield="romac_plus"; split="n"; break;; + 10 ) shield_title="M60" shield="m60"; split="n"; break;; + 11 ) shield_title="Microdox" shield="microdox"; split="y"; break;; + 12 ) shield_title="TG4X" shield="tg4x"; split="n"; break;; + 13 ) shield_title="QAZ" shield="qaz"; split="n"; break;; # Add link to docs on adding your own custom shield in your ZMK config! # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; From ca0bcc0ae457b2a54aa8e6b5d2def1c92346af3a Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sun, 25 Oct 2020 19:45:04 +0000 Subject: [PATCH 270/353] docs: Add missing docusaurus scripts Add: - docusaurus serve - docusaurus clear --- docs/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index a21adae2..744aa90b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,8 +5,10 @@ "scripts": { "start": "docusaurus start", "build": "docusaurus build", + "serve": "docusaurus serve", "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy" + "deploy": "docusaurus deploy", + "clear": "docusaurus clear" }, "dependencies": { "@docusaurus/core": "^2.0.0-alpha.66", From 9c4b766bc678b2f57bcadb63bd9e37de274f8e20 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:15:15 +0100 Subject: [PATCH 271/353] feat(kscan_mock): Increase max number of events This is necessary for testing a large number of events (e.g. every key code) within a single build/pass. The u8_t limitation became apparent during end-to-end testing of #21. --- app/src/kscan_mock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/kscan_mock.c b/app/src/kscan_mock.c index e9c15a05..f1614f1f 100644 --- a/app/src/kscan_mock.c +++ b/app/src/kscan_mock.c @@ -18,7 +18,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); struct kscan_mock_data { kscan_callback_t callback; - u8_t event_index; + u32_t event_index; struct k_delayed_work work; struct device *dev; }; From ab65bf49db46291dfc429cda4737e894d1897e6f Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sun, 25 Oct 2020 21:23:16 +0000 Subject: [PATCH 272/353] docs: Add eslint support Official guidelines: https://eslint.org/docs/user-guide/getting-started Steps taken: npm install eslint --save-dev npx eslint --init Create .eslintignore Edit .eslintrc.js (tweaks) --- docs/.eslintignore | 2 + docs/.eslintrc.js | 23 + docs/package-lock.json | 1734 ++++++++++++++++++++++++++++++++++++++++ docs/package.json | 4 + 4 files changed, 1763 insertions(+) create mode 100644 docs/.eslintignore create mode 100644 docs/.eslintrc.js diff --git a/docs/.eslintignore b/docs/.eslintignore new file mode 100644 index 00000000..b7dab5e9 --- /dev/null +++ b/docs/.eslintignore @@ -0,0 +1,2 @@ +node_modules +build \ No newline at end of file diff --git a/docs/.eslintrc.js b/docs/.eslintrc.js new file mode 100644 index 00000000..094ba2e9 --- /dev/null +++ b/docs/.eslintrc.js @@ -0,0 +1,23 @@ +module.exports = { + env: { + browser: true, + commonjs: true, + es2021: true, + node: true, + }, + extends: ["eslint:recommended", "plugin:react/recommended"], + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 2021, + sourceType: "module", + }, + plugins: ["react"], + rules: {}, + settings: { + react: { + version: "detect", + }, + }, +}; diff --git a/docs/package-lock.json b/docs/package-lock.json index b76811b3..7ec8f525 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -12,6 +12,10 @@ "classnames": "^2.2.6", "react": "^16.8.4", "react-dom": "^16.8.4" + }, + "devDependencies": { + "eslint": "^7.12.0", + "eslint-plugin-react": "^7.21.5" } }, "node_modules/@algolia/cache-browser-local-storage": { @@ -1806,6 +1810,63 @@ "webpack-sources": "1.4.3" } }, + "node_modules/@eslint/eslintrc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.0.tgz", + "integrity": "sha512-+cIGPCBdLCzqxdtwppswP+zTsH9BOIGzAeKfBIbtb4gW/giMlfMwP0HUSFfhzh20f9u8uZ8hOp62+4GPquTbwQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@francoischalifour/autocomplete-core": { "version": "1.0.0-alpha.28", "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-core/-/autocomplete-core-1.0.0-alpha.28.tgz", @@ -2460,6 +2521,15 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -2641,6 +2711,48 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "node_modules/array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -2656,6 +2768,48 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, + "node_modules/array.prototype.flatmap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", + "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -2709,6 +2863,15 @@ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", @@ -4558,6 +4721,12 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "node_modules/default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -4747,6 +4916,18 @@ "buffer-indexof": "1.1.1" } }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -4977,6 +5158,27 @@ "safe-buffer": "5.1.2" } }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/enquirer/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -5047,6 +5249,110 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "node_modules/eslint": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.12.0.tgz", + "integrity": "sha512-n5pEU27DRxCSlOhJ2rO57GDLcNsxO0LPpAbpFdh7xmcDmjmlGUfoyrsB3I7yYdQXO5N3gkSTiDrPSPNFiiirXA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz", + "integrity": "sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.1", + "array.prototype.flatmap": "^1.2.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "object.entries": "^1.1.2", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.18.1", + "string.prototype.matchall": "^4.0.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -5056,11 +5362,266 @@ "estraverse": "4.3.0" } }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "node_modules/esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -5366,6 +5927,12 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "node_modules/fast-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", @@ -5442,6 +6009,18 @@ "escape-string-regexp": "1.0.5" } }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/file-loader": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", @@ -5525,6 +6104,38 @@ "locate-path": "3.0.0" } }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "node_modules/flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", @@ -5843,6 +6454,12 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "node_modules/gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -6787,6 +7404,45 @@ "ipaddr.js": "1.9.1" } }, + "node_modules/internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "dependencies": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internal-slot/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -6904,6 +7560,18 @@ "rgba-regex": "1.0.0" } }, + "node_modules/is-core-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", + "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -7090,6 +7758,18 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "node_modules/is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -7233,6 +7913,12 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "node_modules/json3": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", @@ -7254,6 +7940,19 @@ "graceful-fs": "4.2.4" } }, + "node_modules/jsx-ast-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz", + "integrity": "sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.1" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -7299,6 +7998,19 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -8021,6 +8733,12 @@ "is-plain-object": "2.0.4" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -8282,6 +9000,88 @@ "object-keys": "1.1.1" } }, + "node_modules/object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.entries/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object.getownpropertydescriptors": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", @@ -8416,6 +9216,23 @@ "last-call-webpack-plugin": "3.0.0" } }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -9654,6 +10471,15 @@ "has-flag": "3.0.0" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -9702,6 +10528,15 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -10572,6 +11407,18 @@ "string.prototype.trimstart": "1.0.1" } }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, "node_modules/regexpu-core": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", @@ -11349,6 +12196,19 @@ "rechoir": "0.6.2" } }, + "node_modules/side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "dependencies": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -11387,6 +12247,20 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -11817,6 +12691,48 @@ "ansi-regex": "5.0.0" } }, + "node_modules/string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.matchall/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -12019,6 +12935,35 @@ "domelementtype": "1.3.1" } }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -12404,6 +13349,18 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -12869,6 +13826,12 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "node_modules/v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, "node_modules/value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", @@ -14063,6 +15026,15 @@ "string-width": "4.2.0" } }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -14104,6 +15076,18 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -15905,6 +16889,47 @@ "webpack-sources": "1.4.3" } }, + "@eslint/eslintrc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.0.tgz", + "integrity": "sha512-+cIGPCBdLCzqxdtwppswP+zTsH9BOIGzAeKfBIbtb4gW/giMlfMwP0HUSFfhzh20f9u8uZ8hOp62+4GPquTbwQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "@francoischalifour/autocomplete-core": { "version": "1.0.0-alpha.28", "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-core/-/autocomplete-core-1.0.0-alpha.28.tgz", @@ -16542,6 +17567,13 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "requires": {} + }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -16723,6 +17755,38 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -16738,6 +17802,38 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, + "array.prototype.flatmap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", + "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -16795,6 +17891,12 @@ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", @@ -18652,6 +19754,12 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -18845,6 +19953,15 @@ "buffer-indexof": "1.1.1" } }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -19076,6 +20193,23 @@ } } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + } + } + }, "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -19146,6 +20280,205 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "eslint": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.12.0.tgz", + "integrity": "sha512-n5pEU27DRxCSlOhJ2rO57GDLcNsxO0LPpAbpFdh7xmcDmjmlGUfoyrsB3I7yYdQXO5N3gkSTiDrPSPNFiiirXA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-plugin-react": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz", + "integrity": "sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flatmap": "^1.2.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "object.entries": "^1.1.2", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.18.1", + "string.prototype.matchall": "^4.0.2" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "dev": true, + "requires": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + } + } + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -19155,11 +20488,76 @@ "estraverse": "4.3.0" } }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -19475,6 +20873,12 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fast-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", @@ -19549,6 +20953,15 @@ "escape-string-regexp": "1.0.5" } }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, "file-loader": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", @@ -19636,6 +21049,34 @@ "locate-path": "3.0.0" } }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", @@ -19967,6 +21408,12 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -20909,6 +22356,38 @@ "ipaddr.js": "1.9.1" } }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -21022,6 +22501,15 @@ "rgba-regex": "1.0.0" } }, + "is-core-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", + "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -21203,6 +22691,12 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -21340,6 +22834,12 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json3": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", @@ -21361,6 +22861,16 @@ "graceful-fs": "4.2.4" } }, + "jsx-ast-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz", + "integrity": "sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.1" + } + }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -21406,6 +22916,16 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -22126,6 +23646,12 @@ } } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -22397,6 +23923,71 @@ "object-keys": "1.1.1" } }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "object.getownpropertydescriptors": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", @@ -22537,6 +24128,20 @@ "last-call-webpack-plugin": "3.0.0" } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -23827,6 +25432,12 @@ "uniq": "1.0.1" } }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -23870,6 +25481,12 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -24752,6 +26369,12 @@ } } }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, "regexpu-core": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", @@ -25501,6 +27124,16 @@ "rechoir": "0.6.2" } }, + "side-channel": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "dev": true, + "requires": { + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + } + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -25537,6 +27170,17 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -25981,6 +27625,41 @@ } } }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -26184,6 +27863,31 @@ } } }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -26576,6 +28280,15 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -27001,6 +28714,12 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, "value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", @@ -28224,6 +29943,12 @@ "string-width": "4.2.0" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -28267,6 +29992,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", diff --git a/docs/package.json b/docs/package.json index a21adae2..c97ebef6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -26,5 +26,9 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "eslint": "^7.12.0", + "eslint-plugin-react": "^7.21.5" } } From 18d4d619e489ee72aa826346024b0a796dc71fa3 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sun, 25 Oct 2020 15:24:27 +0000 Subject: [PATCH 273/353] docs: Add prettier support Official guidelines: https://prettier.io/docs/en/install.html https://prettier.io/docs/en/integrating-with-linters.html https://github.com/prettier/eslint-config-prettier Steps taken: npm install --save-dev --save-exact prettier Create .prettierignore Create .prettierrc.js npm install --save-dev eslint-config-prettier Edit .eslintrc.js --- docs/.eslintrc.js | 7 ++++- docs/.prettierignore | 3 +++ docs/.prettierrc.js | 1 + docs/package-lock.json | 61 +++++++++++++++++++++++++++++++++++++++++- docs/package.json | 4 ++- 5 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 docs/.prettierignore create mode 100644 docs/.prettierrc.js diff --git a/docs/.eslintrc.js b/docs/.eslintrc.js index 094ba2e9..94a8fc6a 100644 --- a/docs/.eslintrc.js +++ b/docs/.eslintrc.js @@ -5,7 +5,12 @@ module.exports = { es2021: true, node: true, }, - extends: ["eslint:recommended", "plugin:react/recommended"], + extends: [ + "eslint:recommended", + "plugin:react/recommended", + "prettier", + "prettier/react", + ], parserOptions: { ecmaFeatures: { jsx: true, diff --git a/docs/.prettierignore b/docs/.prettierignore new file mode 100644 index 00000000..d6fb34a7 --- /dev/null +++ b/docs/.prettierignore @@ -0,0 +1,3 @@ +node_modules +build +.docusaurus \ No newline at end of file diff --git a/docs/.prettierrc.js b/docs/.prettierrc.js new file mode 100644 index 00000000..f053ebf7 --- /dev/null +++ b/docs/.prettierrc.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/docs/package-lock.json b/docs/package-lock.json index 7ec8f525..e3f92a4c 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -15,7 +15,9 @@ }, "devDependencies": { "eslint": "^7.12.0", - "eslint-plugin-react": "^7.21.5" + "eslint-config-prettier": "^6.14.0", + "eslint-plugin-react": "^7.21.5", + "prettier": "2.1.2" } }, "node_modules/@algolia/cache-browser-local-storage": { @@ -5303,6 +5305,21 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-prettier": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz", + "integrity": "sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ==", + "dev": true, + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" + } + }, "node_modules/eslint-plugin-react": { "version": "7.21.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz", @@ -6475,6 +6492,15 @@ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -10485,6 +10511,18 @@ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, + "node_modules/prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/pretty-error": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", @@ -20439,6 +20477,15 @@ } } }, + "eslint-config-prettier": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz", + "integrity": "sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, "eslint-plugin-react": { "version": "7.21.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz", @@ -21429,6 +21476,12 @@ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -25443,6 +25496,12 @@ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, + "prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "dev": true + }, "pretty-error": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", diff --git a/docs/package.json b/docs/package.json index c97ebef6..44536f0c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -29,6 +29,8 @@ }, "devDependencies": { "eslint": "^7.12.0", - "eslint-plugin-react": "^7.21.5" + "eslint-config-prettier": "^6.14.0", + "eslint-plugin-react": "^7.21.5", + "prettier": "2.1.2" } } From aefcc592f24df4bd2ca1485e0fda7232612f697b Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sun, 25 Oct 2020 16:59:28 +0000 Subject: [PATCH 274/353] docs: Add eslint-mdx support Official guidelines: https://github.com/mdx-js/eslint-mdx Steps taken: npm i -D eslint-plugin-mdx Edit .eslintrc.js --- docs/.eslintrc.js | 1 + docs/package-lock.json | 1074 ++++++++++++++++++++++++++++++++++++++++ docs/package.json | 1 + 3 files changed, 1076 insertions(+) diff --git a/docs/.eslintrc.js b/docs/.eslintrc.js index 94a8fc6a..e1ef0302 100644 --- a/docs/.eslintrc.js +++ b/docs/.eslintrc.js @@ -8,6 +8,7 @@ module.exports = { extends: [ "eslint:recommended", "plugin:react/recommended", + "plugin:mdx/recommended", "prettier", "prettier/react", ], diff --git a/docs/package-lock.json b/docs/package-lock.json index e3f92a4c..ad46d829 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -16,6 +16,7 @@ "devDependencies": { "eslint": "^7.12.0", "eslint-config-prettier": "^6.14.0", + "eslint-plugin-mdx": "^1.8.2", "eslint-plugin-react": "^7.21.5", "prettier": "2.1.2" } @@ -1800,6 +1801,161 @@ "node": ">=8" } }, + "node_modules/@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, + "optional": true, + "dependencies": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "node_modules/@emotion/core": { + "version": "10.0.35", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.35.tgz", + "integrity": "sha512-sH++vJCdk025fBlRZSAhkRlSUoqSqgCzYf5fMOmqqi3bM6how+sQpg3hkgJonj8GxXM4WbD7dRO+4tegDB9fUw==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "dev": true, + "optional": true, + "dependencies": { + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true, + "optional": true + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true, + "optional": true + }, + "node_modules/@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "optional": true, + "dependencies": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "node_modules/@emotion/serialize/node_modules/csstype": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.13.tgz", + "integrity": "sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==", + "dev": true, + "optional": true + }, + "node_modules/@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true, + "optional": true + }, + "node_modules/@emotion/styled": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", + "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@emotion/styled-base": "^10.0.27", + "babel-plugin-emotion": "^10.0.27" + }, + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/styled-base": { + "version": "10.0.31", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.31.tgz", + "integrity": "sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true, + "optional": true + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true, + "optional": true + }, + "node_modules/@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true, + "optional": true + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true, + "optional": true + }, "node_modules/@endiliey/static-site-generator-webpack-plugin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@endiliey/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.0.tgz", @@ -2077,6 +2233,146 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" }, + "node_modules/@styled-system/background": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/background/-/background-5.1.2.tgz", + "integrity": "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/border": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@styled-system/border/-/border-5.1.5.tgz", + "integrity": "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/color": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/color/-/color-5.1.2.tgz", + "integrity": "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/core": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz", + "integrity": "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==", + "dev": true, + "optional": true, + "dependencies": { + "object-assign": "^4.1.1" + } + }, + "node_modules/@styled-system/css": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@styled-system/css/-/css-5.1.5.tgz", + "integrity": "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==", + "dev": true, + "optional": true + }, + "node_modules/@styled-system/flexbox": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/flexbox/-/flexbox-5.1.2.tgz", + "integrity": "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/grid": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/grid/-/grid-5.1.2.tgz", + "integrity": "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/layout": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/layout/-/layout-5.1.2.tgz", + "integrity": "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/position": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/position/-/position-5.1.2.tgz", + "integrity": "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/shadow": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/shadow/-/shadow-5.1.2.tgz", + "integrity": "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/should-forward-prop": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@styled-system/should-forward-prop/-/should-forward-prop-5.1.5.tgz", + "integrity": "sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q==", + "dev": true, + "optional": true, + "dependencies": { + "@emotion/is-prop-valid": "^0.8.1", + "@emotion/memoize": "^0.7.1", + "styled-system": "^5.1.5" + } + }, + "node_modules/@styled-system/space": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/space/-/space-5.1.2.tgz", + "integrity": "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/typography": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/typography/-/typography-5.1.2.tgz", + "integrity": "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "node_modules/@styled-system/variant": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@styled-system/variant/-/variant-5.1.5.tgz", + "integrity": "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/core": "^5.1.2", + "@styled-system/css": "^5.1.5" + } + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", @@ -3015,6 +3311,25 @@ "object.assign": "4.1.1" } }, + "node_modules/babel-plugin-emotion": { + "version": "10.0.33", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz", + "integrity": "sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + } + }, "node_modules/babel-plugin-extract-import-names": { "version": "1.6.19", "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.19.tgz", @@ -3027,6 +3342,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true, + "optional": true + }, "node_modules/bail": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", @@ -3661,6 +3995,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/character-entities-legacy": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", @@ -5320,6 +5664,88 @@ "eslint": ">=3.14.1" } }, + "node_modules/eslint-mdx": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-1.8.2.tgz", + "integrity": "sha512-j7mkBFr7zHLaiqGu+iWker9qwWfti29xUAuUDDad95l+H189R4++dsuSUB6u19wy6CCuspIt5I6katzbpRbbMw==", + "dev": true, + "dependencies": { + "espree": "^7.2.0", + "remark-mdx": "^1.6.16", + "remark-parse": "^8.0.3", + "tslib": "^2.0.1", + "unified": "^9.1.0" + }, + "engines": { + "node": ">=7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-mdx/node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + }, + "node_modules/eslint-plugin-mdx": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-1.8.2.tgz", + "integrity": "sha512-fKkhsR1cTCHQUVcoguUmOohMo87297/H1Z0Zye3GF4ivvxcpX8fboLILLR2Em76QV8RrjP4sxrgBuOA9rBIumw==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "eslint-mdx": "^1.8.2", + "eslint-plugin-react": "^7.20.6", + "rebass": "^4.0.7", + "remark-mdx": "^1.6.16", + "remark-parse": "^8.0.3", + "remark-stringify": "^8.1.1", + "tslib": "^2.0.1", + "unified": "^9.1.0", + "vfile": "^4.1.1" + }, + "engines": { + "node": ">=7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "optionalDependencies": { + "rebass": "^4.0.7" + }, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-mdx/node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + }, "node_modules/eslint-plugin-react": { "version": "7.21.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz", @@ -6113,6 +6539,13 @@ "pkg-dir": "3.0.0" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true, + "optional": true + }, "node_modules/find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -7519,6 +7952,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-alphanumerical": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", @@ -8238,6 +8680,16 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==" }, + "node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -8303,6 +8755,19 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -8325,6 +8790,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dev": true, + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-definitions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz", @@ -11350,6 +11828,16 @@ "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.2.0.tgz", "integrity": "sha512-5b4XmKK4MEss63y0Lw0vn0Zn6G5kiHP88mUnD8UeEsyORj3sh1ghTH0/u6m1Ax9G2F4wUZrknlp6WlIsCvoXVA==" }, + "node_modules/rebass": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/rebass/-/rebass-4.0.7.tgz", + "integrity": "sha512-GJot6j6Qcr7jk1QIgf9qBoud75CGRpN8pGcEo98TSp4KNSWV01ZLvGwFKGI35oEBuNs+lpEd3+pnwkQUTSFytg==", + "dev": true, + "optional": true, + "dependencies": { + "reflexbox": "^4.0.6" + } + }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -11366,6 +11854,23 @@ "minimatch": "3.0.4" } }, + "node_modules/reflexbox": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/reflexbox/-/reflexbox-4.0.6.tgz", + "integrity": "sha512-UNUL4YoJEXAPjRKHuty1tuOk+LV1nDJ2KYViDcH7lYm5yU3AQ+EKNXxPU3E14bQNK/pE09b1hYl+ZKdA94tWLQ==", + "dev": true, + "optional": true, + "dependencies": { + "@emotion/core": "^10.0.0", + "@emotion/styled": "^10.0.0", + "@styled-system/css": "^5.0.0", + "@styled-system/should-forward-prop": "^5.0.0", + "styled-system": "^5.0.0" + }, + "peerDependencies": { + "react": "^16.8.6" + } + }, "node_modules/regenerate": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", @@ -11717,6 +12222,32 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-stringify": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -12825,6 +13356,21 @@ "string.prototype.trimstart": "1.0.1" } }, + "node_modules/stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "dev": true, + "dependencies": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -12885,6 +13431,28 @@ "inline-style-parser": "0.1.1" } }, + "node_modules/styled-system": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz", + "integrity": "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==", + "dev": true, + "optional": true, + "dependencies": { + "@styled-system/background": "^5.1.2", + "@styled-system/border": "^5.1.5", + "@styled-system/color": "^5.1.2", + "@styled-system/core": "^5.1.2", + "@styled-system/flexbox": "^5.1.2", + "@styled-system/grid": "^5.1.2", + "@styled-system/layout": "^5.1.2", + "@styled-system/position": "^5.1.2", + "@styled-system/shadow": "^5.1.2", + "@styled-system/space": "^5.1.2", + "@styled-system/typography": "^5.1.2", + "@styled-system/variant": "^5.1.5", + "object-assign": "^4.1.1" + } + }, "node_modules/stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", @@ -16915,6 +17483,152 @@ "chalk": "^3.0.0" } }, + "@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, + "optional": true, + "requires": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "@emotion/core": { + "version": "10.0.35", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.35.tgz", + "integrity": "sha512-sH++vJCdk025fBlRZSAhkRlSUoqSqgCzYf5fMOmqqi3bM6how+sQpg3hkgJonj8GxXM4WbD7dRO+4tegDB9fUw==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "dev": true, + "optional": true, + "requires": { + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true, + "optional": true + }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true, + "optional": true + }, + "@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "optional": true, + "requires": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + }, + "dependencies": { + "csstype": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.13.tgz", + "integrity": "sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==", + "dev": true, + "optional": true + } + } + }, + "@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true, + "optional": true + }, + "@emotion/styled": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", + "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "dev": true, + "optional": true, + "requires": { + "@emotion/styled-base": "^10.0.27", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/styled-base": { + "version": "10.0.31", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.31.tgz", + "integrity": "sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true, + "optional": true + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true, + "optional": true + }, + "@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true, + "optional": true + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true, + "optional": true + }, "@endiliey/static-site-generator-webpack-plugin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@endiliey/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.0.tgz", @@ -17153,6 +17867,146 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" }, + "@styled-system/background": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/background/-/background-5.1.2.tgz", + "integrity": "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/border": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@styled-system/border/-/border-5.1.5.tgz", + "integrity": "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/color": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/color/-/color-5.1.2.tgz", + "integrity": "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/core": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz", + "integrity": "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==", + "dev": true, + "optional": true, + "requires": { + "object-assign": "^4.1.1" + } + }, + "@styled-system/css": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@styled-system/css/-/css-5.1.5.tgz", + "integrity": "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==", + "dev": true, + "optional": true + }, + "@styled-system/flexbox": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/flexbox/-/flexbox-5.1.2.tgz", + "integrity": "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/grid": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/grid/-/grid-5.1.2.tgz", + "integrity": "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/layout": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/layout/-/layout-5.1.2.tgz", + "integrity": "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/position": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/position/-/position-5.1.2.tgz", + "integrity": "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/shadow": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/shadow/-/shadow-5.1.2.tgz", + "integrity": "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/should-forward-prop": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@styled-system/should-forward-prop/-/should-forward-prop-5.1.5.tgz", + "integrity": "sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q==", + "dev": true, + "optional": true, + "requires": { + "@emotion/is-prop-valid": "^0.8.1", + "@emotion/memoize": "^0.7.1", + "styled-system": "^5.1.5" + } + }, + "@styled-system/space": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/space/-/space-5.1.2.tgz", + "integrity": "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/typography": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@styled-system/typography/-/typography-5.1.2.tgz", + "integrity": "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2" + } + }, + "@styled-system/variant": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@styled-system/variant/-/variant-5.1.5.tgz", + "integrity": "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/core": "^5.1.2", + "@styled-system/css": "^5.1.5" + } + }, "@svgr/babel-plugin-add-jsx-attribute": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", @@ -18073,6 +18927,25 @@ "object.assign": "4.1.1" } }, + "babel-plugin-emotion": { + "version": "10.0.33", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz", + "integrity": "sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ==", + "dev": true, + "optional": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + } + }, "babel-plugin-extract-import-names": { "version": "1.6.19", "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.19.tgz", @@ -18081,6 +18954,25 @@ "@babel/helper-plugin-utils": "7.10.4" } }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true, + "optional": true + }, "bail": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", @@ -18722,6 +19614,12 @@ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true + }, "character-entities-legacy": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", @@ -20486,6 +21384,66 @@ "get-stdin": "^6.0.0" } }, + "eslint-mdx": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-1.8.2.tgz", + "integrity": "sha512-j7mkBFr7zHLaiqGu+iWker9qwWfti29xUAuUDDad95l+H189R4++dsuSUB6u19wy6CCuspIt5I6katzbpRbbMw==", + "dev": true, + "requires": { + "espree": "^7.2.0", + "remark-mdx": "^1.6.16", + "remark-parse": "^8.0.3", + "tslib": "^2.0.1", + "unified": "^9.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, + "eslint-plugin-mdx": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-1.8.2.tgz", + "integrity": "sha512-fKkhsR1cTCHQUVcoguUmOohMo87297/H1Z0Zye3GF4ivvxcpX8fboLILLR2Em76QV8RrjP4sxrgBuOA9rBIumw==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "eslint-mdx": "^1.8.2", + "eslint-plugin-react": "^7.20.6", + "rebass": "^4.0.7", + "remark-mdx": "^1.6.16", + "remark-parse": "^8.0.3", + "remark-stringify": "^8.1.1", + "tslib": "^2.0.1", + "unified": "^9.1.0", + "vfile": "^4.1.1" + }, + "dependencies": { + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + } + } + }, "eslint-plugin-react": { "version": "7.21.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz", @@ -21088,6 +22046,13 @@ "pkg-dir": "3.0.0" } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true, + "optional": true + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -22489,6 +23454,12 @@ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, "is-alphanumerical": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", @@ -23180,6 +24151,12 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==" }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -23243,6 +24220,15 @@ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" }, + "markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -23261,6 +24247,15 @@ "unist-util-remove": "^2.0.0" } }, + "mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, "mdast-util-definitions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz", @@ -26329,6 +27324,16 @@ "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.2.0.tgz", "integrity": "sha512-5b4XmKK4MEss63y0Lw0vn0Zn6G5kiHP88mUnD8UeEsyORj3sh1ghTH0/u6m1Ax9G2F4wUZrknlp6WlIsCvoXVA==" }, + "rebass": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/rebass/-/rebass-4.0.7.tgz", + "integrity": "sha512-GJot6j6Qcr7jk1QIgf9qBoud75CGRpN8pGcEo98TSp4KNSWV01ZLvGwFKGI35oEBuNs+lpEd3+pnwkQUTSFytg==", + "dev": true, + "optional": true, + "requires": { + "reflexbox": "^4.0.6" + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -26345,6 +27350,20 @@ "minimatch": "3.0.4" } }, + "reflexbox": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/reflexbox/-/reflexbox-4.0.6.tgz", + "integrity": "sha512-UNUL4YoJEXAPjRKHuty1tuOk+LV1nDJ2KYViDcH7lYm5yU3AQ+EKNXxPU3E14bQNK/pE09b1hYl+ZKdA94tWLQ==", + "dev": true, + "optional": true, + "requires": { + "@emotion/core": "^10.0.0", + "@emotion/styled": "^10.0.0", + "@styled-system/css": "^5.0.0", + "@styled-system/should-forward-prop": "^5.0.0", + "styled-system": "^5.0.0" + } + }, "regenerate": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", @@ -26655,6 +27674,28 @@ "mdast-squeeze-paragraphs": "^4.0.0" } }, + "remark-stringify": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -27777,6 +28818,17 @@ } } }, + "stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + } + }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -27830,6 +28882,28 @@ "inline-style-parser": "0.1.1" } }, + "styled-system": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz", + "integrity": "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==", + "dev": true, + "optional": true, + "requires": { + "@styled-system/background": "^5.1.2", + "@styled-system/border": "^5.1.5", + "@styled-system/color": "^5.1.2", + "@styled-system/core": "^5.1.2", + "@styled-system/flexbox": "^5.1.2", + "@styled-system/grid": "^5.1.2", + "@styled-system/layout": "^5.1.2", + "@styled-system/position": "^5.1.2", + "@styled-system/shadow": "^5.1.2", + "@styled-system/space": "^5.1.2", + "@styled-system/typography": "^5.1.2", + "@styled-system/variant": "^5.1.5", + "object-assign": "^4.1.1" + } + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", diff --git a/docs/package.json b/docs/package.json index 44536f0c..f3033140 100644 --- a/docs/package.json +++ b/docs/package.json @@ -30,6 +30,7 @@ "devDependencies": { "eslint": "^7.12.0", "eslint-config-prettier": "^6.14.0", + "eslint-plugin-mdx": "^1.8.2", "eslint-plugin-react": "^7.21.5", "prettier": "2.1.2" } From 288e60ea97f13a1e350b144abeb47a117d4689dc Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sun, 25 Oct 2020 17:23:51 +0000 Subject: [PATCH 275/353] docs: Format docs with prettier npx prettier --write . --- docs/README.md | 1 - docs/docs/behavior/hold-tap.md | 15 ++++---- docs/docs/behavior/key-press.md | 2 +- docs/docs/behavior/layers.md | 2 +- docs/docs/behavior/mod-tap.md | 1 - docs/docs/behavior/power.md | 32 ++++++++--------- docs/docs/bond-reset.md | 3 +- docs/docs/customization.md | 16 ++++----- docs/docs/dev-build.md | 9 +++-- docs/docs/dev-guide-new-shield.md | 24 ++++++------- docs/docs/dev-guide-usb-logging.md | 2 ++ docs/docs/dev-setup.md | 9 +++-- docs/docs/dev-tests.md | 9 ++--- docs/docs/faq.md | 47 ++++++++++++------------ docs/docs/feature/underglow.md | 2 +- docs/docs/intro.md | 58 +++++++++++++++--------------- docs/docs/troubleshooting.md | 55 ++++++++++++++-------------- docs/docs/user-setup.md | 1 + docs/sidebars.js | 6 ++-- docs/src/pages/index.js | 13 +++---- 20 files changed, 154 insertions(+), 153 deletions(-) diff --git a/docs/README.md b/docs/README.md index 3e7c9e6a..f2d92b71 100644 --- a/docs/README.md +++ b/docs/README.md @@ -23,4 +23,3 @@ $ npm build ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. - diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index 9f8f5fab..4dd8b258 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -4,17 +4,18 @@ sidebar_label: Hold-Tap --- ## Summary -Hold-tap is the basis for other behaviors such as layer-tap and mod-tap. + +Hold-tap is the basis for other behaviors such as layer-tap and mod-tap. Simply put, the hold-tap key will output the 'hold' behavior if it's held for a while, and output the 'tap' behavior when it's tapped quickly. - ### Hold-Tap + The `tapping_term_ms` parameter decides between a 'tap' and a 'hold'. ![Simple behavior](../assets/hold-tap/case1_2.png) -By default, the hold-tap is configured to also select the 'hold' functionality if another key is tapped while it's active: +By default, the hold-tap is configured to also select the 'hold' functionality if another key is tapped while it's active: ![Hold preferred behavior](../assets/hold-tap/case1_2.png) @@ -23,10 +24,11 @@ We call this the 'hold-preferred' flavor of hold-taps. While this flavor may wor ![Hold-tap comparison](../assets/hold-tap/comparison.png) ### Basic usage + For basic usage, please see [mod-tap](./mod-tap.md) and [layer-tap](./layers.md) pages. - ### Advanced Configuration + A code example which configures a mod-tap setting that works with homerow mods: ``` @@ -44,7 +46,7 @@ A code example which configures a mod-tap setting that works with homerow mods: bindings = <&kp>, <&kp>; }; }; - + keymap { compatible = "zmk,keymap"; @@ -63,4 +65,5 @@ If this config does not work for you, try the flavor "tap-preferred" and a short If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. #### Comparison to QMK -The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting in QMK. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. \ No newline at end of file + +The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting in QMK. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. diff --git a/docs/docs/behavior/key-press.md b/docs/docs/behavior/key-press.md index d427f9d2..6b4db362 100644 --- a/docs/docs/behavior/key-press.md +++ b/docs/docs/behavior/key-press.md @@ -64,4 +64,4 @@ Example: ``` &cp M_PREV -``` \ No newline at end of file +``` diff --git a/docs/docs/behavior/layers.md b/docs/docs/behavior/layers.md index c7693887..919b2b22 100644 --- a/docs/docs/behavior/layers.md +++ b/docs/docs/behavior/layers.md @@ -46,6 +46,7 @@ Example: The "layer-tap" behavior enables a layer when a key is held, and output another key when the key is only tapped for a short time. For more information on the inner workings of layer-tap, see [hold-tap](./hold-tap.md). ### Behavior Binding + - Reference: `<` - Parameter: The layer number to enable when held, e.g. `1` - Parameter: The keycode to send when tapped, e.g. `A` @@ -56,7 +57,6 @@ Example: < LOWER SPC ``` - ## Toggle Layer The "toggle layer" behavior enables a layer until the layer is manually disabled. diff --git a/docs/docs/behavior/mod-tap.md b/docs/docs/behavior/mod-tap.md index 068928ad..f4ca50dd 100644 --- a/docs/docs/behavior/mod-tap.md +++ b/docs/docs/behavior/mod-tap.md @@ -40,4 +40,3 @@ You can configure a different tapping term in your keymap: } } ``` - diff --git a/docs/docs/behavior/power.md b/docs/docs/behavior/power.md index 6b8237be..0de50552 100644 --- a/docs/docs/behavior/power.md +++ b/docs/docs/behavior/power.md @@ -10,11 +10,12 @@ These page contains some of the power management behaviors currently supported b ## External Power Control The External power control behavior allows enabling or disabling the VCC power output -to save power. Some of the LEDs will consume power even in OFF state. To preserve +to save power. Some of the LEDs will consume power even in OFF state. To preserve battery life in this scenario, some controller boards have support to disable the external power completely. The following boards currently support this feature: + - nRFMicro - nice!nano @@ -31,11 +32,11 @@ This will allow you to reference the actions defined in this header such as `EXT Here is a table describing the command for each define: -| Define | Action | Alias | -| ------------ | -------------------------------------- | -------- | -| `EXT_POWER_OFF_CMD` | Disable the external power. | `EP_OFF` | -| `EXT_POWER_ON_CMD` | Enable the external power. | `EP_ON` | -| `EXT_POWER_TOGGLE_CMD` | Toggle the external power. | `EP_TOG` | +| Define | Action | Alias | +| ---------------------- | --------------------------- | -------- | +| `EXT_POWER_OFF_CMD` | Disable the external power. | `EP_OFF` | +| `EXT_POWER_ON_CMD` | Enable the external power. | `EP_ON` | +| `EXT_POWER_TOGGLE_CMD` | Toggle the external power. | `EP_TOG` | ### Behavior Binding @@ -46,19 +47,18 @@ Here is a table describing the command for each define: 1. Behavior binding to enable the external power - ``` - &ext_power EP_ON - ``` + ``` + &ext_power EP_ON + ``` 1. Behavior binding to disable the external power - ``` - &ext_power EP_OFF - ``` + ``` + &ext_power EP_OFF + ``` 1. Behavior binding to toggle the external power - ``` - &ext_power EP_TOG - ``` - + ``` + &ext_power EP_TOG + ``` diff --git a/docs/docs/bond-reset.md b/docs/docs/bond-reset.md index 504fd72a..a16b94d4 100644 --- a/docs/docs/bond-reset.md +++ b/docs/docs/bond-reset.md @@ -17,7 +17,6 @@ list, you will need to clear the bonds. Split keyboards will need to be cleared on both halves. For best results try to reset them at the same time. - ### Kyria ![Kyria bond-reset combo](assets/bond-clearing/kyria.jpg) @@ -28,4 +27,4 @@ Split keyboards will need to be cleared on both halves. For best results try to ### Lily58 -![Lily58 bond-reset combo](assets/bond-clearing/lily58.jpg) \ No newline at end of file +![Lily58 bond-reset combo](assets/bond-clearing/lily58.jpg) diff --git a/docs/docs/customization.md b/docs/docs/customization.md index 261c40de..b42656d8 100644 --- a/docs/docs/customization.md +++ b/docs/docs/customization.md @@ -5,14 +5,15 @@ sidebar_label: Customizing ZMK --- After verifying you can successfully flash the default firmware, you will probably want to begin customizing your keymap and other keyboard options. -[In the initial setup tutorial](user-setup), you created a Github repository called `zmk-config`. This repository is a discrete filesystem which works -with the main `zmk` firmware repository to build your desired firmware. The main advantage of a discrete configuration folder is ensuring that the -working components of ZMK are kept separate from your personal keyboard settings, reducing the amount of file manipulation in the configuration process. +[In the initial setup tutorial](user-setup), you created a Github repository called `zmk-config`. This repository is a discrete filesystem which works +with the main `zmk` firmware repository to build your desired firmware. The main advantage of a discrete configuration folder is ensuring that the +working components of ZMK are kept separate from your personal keyboard settings, reducing the amount of file manipulation in the configuration process. This makes flashing ZMK to your keyboard much easier, especially because you don't need to keep an up-to-date copy of zmk on your computer at all times. On default `zmk-config` folder should contain two files: -* `.conf` -* ``.keymap + +- `.conf` +- ``.keymap However, your config folder can also be modified to include a `boards/` directory for keymaps and configurations for multiple boards/shields outside of the default keyboard setting definitions. @@ -39,11 +40,10 @@ If you need to, a review of [Learn The Basics Of Git In Under 10 Minutes](https: ## Building from a local `zmk` fork using `zmk-config` -[As outlined here](dev-build-flash), firmware comes in the form of .uf2 files, which can be built locally using the command `west build`. Normally, +[As outlined here](dev-build-flash), firmware comes in the form of .uf2 files, which can be built locally using the command `west build`. Normally, `west build` will default to using the in-tree .keymap and .conf files found in your local copy of the `zmk` repository. However, you can append the command, `-DZMK_CONFIG="C:/the/absolute/path/config"` to `west build` in order to use the contents of your `zmk-config` folder instead of the default keyboard settings. - **Notice that this path should point to the folder labelled `config` within your `zmk-config` folder.** - +**Notice that this path should point to the folder labelled `config` within your `zmk-config` folder.** For instance, building kyria firmware from a user `myUser`'s `zmk-config` folder on Windows 10 may look something like this: diff --git a/docs/docs/dev-build.md b/docs/docs/dev-build.md index 83ed8cb9..3e6b19ad 100644 --- a/docs/docs/dev-build.md +++ b/docs/docs/dev-build.md @@ -62,11 +62,13 @@ west build -b planck_rev6 ``` ### Pristine Building + When building for a new board and/or shield after having built one previously, you may need to enable the pristine build option. This option removes all existing files in the build directory before regenerating them, and can be enabled by adding either --pristine or -p to the command: ```sh west build -p -b proton_c -- -DSHIELD=kyria_left ``` + ### Building For Split Keyboards :::note @@ -78,25 +80,26 @@ By default, the `build` command outputs a single .uf2 file named `zmk.uf2` so bu ``` west build -d build/left -b nice_nano -- -DSHIELD=kyria_left ``` + and then building right into `build/right`: + ``` west build -d build/right -b nice_nano -- -DSHIELD=kyria_right ``` + This produces `left` and `right` subfolders under the `build` directory and two separate .uf2 files. For future work on a specific half, use the `-d` parameter again to ensure you are building into the correct location. ### Building from `zmk-config` Folder -Instead of building .uf2 files using the default keymap and config files, you can build directly from your [`zmk-config` folder](user-setup#github-repo) by adding +Instead of building .uf2 files using the default keymap and config files, you can build directly from your [`zmk-config` folder](user-setup#github-repo) by adding `-DZMK_CONFIG="C:/the/absolute/path/config"` to your `west build` command. **Notice that this path should point to the folder labelled `config` within your `zmk-config` folder.** - For instance, building kyria firmware from a user `myUser`'s `zmk-config` folder on Windows 10 may look something like this: ``` west build -b nice_nano -- -DSHIELD=kyria_left -DZMK_CONFIG="C:/Users/myUser/Documents/Github/zmk-config/config" ``` - ## Flashing Once built, the previously supplied parameters will be remembered so you can run the following to flash your diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index d6911e04..94f7d1dd 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -49,8 +49,8 @@ config SHIELD_MY_BOARD This will make sure the new configuration `SHIELD_MY_BOARD` is set to true whenever `my_board` is added as a shield in your build. - **For split boards**, you will need to add configurations for the left and right sides. + ``` config SHIELD_MY_BOARD_LEFT def_bool $(shields_list_contains,my_board_left) @@ -77,7 +77,6 @@ config ZMK_KEYBOARD_NAME endif ``` - Similarly to defining the halves of a split board in `Kconfig.shield` it is important to set the `ZMK_KEYBOARD_NAME` for each half of a split keyboard. ``` @@ -100,7 +99,6 @@ endif ![Labelled Pro Micro pins](assets/pro-micro/pro-micro-pins-labelled.jpg) - ZMK uses the green color coded pin names to generate devicetree node references. For example, to refer to the node `D0` in the devicetree files, use `&pro_micro_d 0` or to refer to `A1`, use `&pro_micro_a 1`. // Row D from the schematic file , <&pro_micro_d 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // Row E from the schematic file ; - + }; ``` @@ -224,7 +222,7 @@ This is exemplified with the iris .overlay files. ``` // iris_right.overlay -#include "iris.dtsi" +#include "iris.dtsi" &default_transform { // The matrix transform for this board is 6 columns over because the left half is 6 columns wide according to the matrix. col-offset = <6>; @@ -245,13 +243,13 @@ This is exemplified with the iris .overlay files. ### .conf files (Split Shields) -While unibody boards only have one .conf file that applies configuration characteristics to the entire keyboard, -split keyboards are unique in that they contain multiple .conf files with different scopes. +While unibody boards only have one .conf file that applies configuration characteristics to the entire keyboard, +split keyboards are unique in that they contain multiple .conf files with different scopes. For example, a split board called `my_awesome_split_board` would have the following files: -* `my_awesome_split_board.conf` - Configuration elements affect both halves -* `my_awesome_split_board_left.conf` - Configuration elements only affect left half -* `my_awesome_split_board_right.conf` - Configuration elements only affect right half +- `my_awesome_split_board.conf` - Configuration elements affect both halves +- `my_awesome_split_board_left.conf` - Configuration elements only affect left half +- `my_awesome_split_board_right.conf` - Configuration elements only affect right half For proper communication between keyboard halves and that between the central half and the computer, the **the central and peripheral halves of the keyboard must be defined**. This can be seen below. @@ -421,7 +419,6 @@ If building locally for split boards, you may need to add these lines to the spe In your device tree file you will need to add the following lines to define the encoder sensor: - ``` left_encoder: encoder_left { compatible = "alps,ec11"; @@ -431,6 +428,7 @@ left_encoder: encoder_left { resolution = <4>; }; ``` + Here you will have to replace PIN_A and PIN_B with the appropriate pins that your PCB utilizes for the encoder(s). For keyboards that use the Pro Micro or any of the Pro Micro replacements, Sparkfun's [Pro Micro Hookup Guide](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro) has a pinout diagram that can be useful to determine the right pins. Reference either the blue numbers labeled "Arduino" (digital pins) or the green numbers labeled "Analog" (analog pins). For pins that are labeled as both digital and analog, refer to your specific board's .dtsi file to determine how you should refer to that pin. Add additional encoders as necessary by duplicating the above lines, replacing `left` with whatever you would like to call your encoder, and updating the pins. Note that support for peripheral (right) side sensors over BLE is still in progress. @@ -462,11 +460,12 @@ For split keyboards, make sure to add left hand encoders to the left .overlay fi -Add the following line to your keymap file to add default encoder behavior bindings: +Add the following line to your keymap file to add default encoder behavior bindings: ``` sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; ``` + Add additional bindings as necessary to match the default number of encoders on your board. See the [Encoders](/docs/feature/encoders) and [Keymap](/docs/feature/keymaps) feature documentation for more details. @@ -521,6 +520,7 @@ jobs: - board: proton_c shield: clueboard_california ``` + :::note Notice that both the left and right halves of a split board need to be added to the list of shields for proper error checking. :::note diff --git a/docs/docs/dev-guide-usb-logging.md b/docs/docs/dev-guide-usb-logging.md index c5fb4b9d..d0274d18 100644 --- a/docs/docs/dev-guide-usb-logging.md +++ b/docs/docs/dev-guide-usb-logging.md @@ -56,9 +56,11 @@ values={[ On Linux, this should be a device like `/dev/ttyACM0` and you can connect with `minicom` or `tio` as usual, e.g.: + ``` sudo tio /dev/ttyACM0 ``` + diff --git a/docs/docs/dev-setup.md b/docs/docs/dev-setup.md index 521d5d02..604f987d 100644 --- a/docs/docs/dev-setup.md +++ b/docs/docs/dev-setup.md @@ -169,9 +169,11 @@ Chocolatey is recommended and used for the following instructions. You can manua ``` It is recommended to install `dfu-util` to avoid any later confusion while flashing devices. You can do this by running this command with chocolatey: -``` shell + +```shell choco install dfu-util ``` + @@ -188,7 +190,6 @@ brew install cmake ninja python3 ccache dtc git wget dfu-util This setup leverages the same [image which is used by the GitHub action](https://github.com/zmkfirmware/zephyr-west-action) for local development. Beyond the benefits of [dev/prod parity](https://12factor.net/dev-prod-parity), this approach is also the easiest to set up. No toolchain or dependencies are necessary when using Docker; the container image you'll be using already has the toolchain installed and set up to use. - 1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop) for your operating system. 2. Install [VS Code](https://code.visualstudio.com/) 3. Install the [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) @@ -368,7 +369,6 @@ Since ZMK is built as a Zephyr™ application, the next step is to use `west` to initialize and update your workspace. The ZMK Zephyr™ application is in the `app/` source directory: - #### Step into the repository @@ -419,7 +419,7 @@ Click `Reopen in Container` in order to reopen the VS Code with the running cont The first time you do this on your machine, it will pull the docker image down from the registry and build the container. Subsequent launches are much faster! :::caution -All subsequent steps must be performed from the VS Code terminal _inside_ the container. +All subsequent steps must be performed from the VS Code terminal _inside_ the container. ::: @@ -453,7 +453,6 @@ If you're using Docker, you're done with setup! You must restart the container a Once your container is restarted, proceed to [Building and Flashing](./dev-build.md). ::: - #### Export Zephyr™ Core ```sh diff --git a/docs/docs/dev-tests.md b/docs/docs/dev-tests.md index 68d47251..d44c4a09 100644 --- a/docs/docs/dev-tests.md +++ b/docs/docs/dev-tests.md @@ -8,13 +8,14 @@ Running tests requires [native posix support](./dev-posix-board). Any folder und containing `native_posix.keymap` will be selected when running `./run-test.sh all`. ## Creating a New Test Set + 1. Copy the test set that most closely resembles the tests you will be creating. -2. Rename the newly created test set to the behavior you're testing e.g, toggle-layer +2. Rename the newly created test set to the behavior you're testing e.g, toggle-layer 3. Modify `behavior_keymap.dtsi` to create a keymap using the behavior and related behaviors 4. Modify `test_case/native_posix.keymap` for a simulated use case 5. Modify `test_case/events.patterns` to collect relevant logs to the test - - See: [sed manual](https://www.gnu.org/software/sed/manual/sed.html) and - [tutorial](https://www.digitalocean.com/community/tutorials/the-basics-of-using-the-sed-stream-editor-to-manipulate-text-in-linux) + - See: [sed manual](https://www.gnu.org/software/sed/manual/sed.html) and + [tutorial](https://www.digitalocean.com/community/tutorials/the-basics-of-using-the-sed-stream-editor-to-manipulate-text-in-linux) 6. Modify `test_case/keycode_events.snapshot` for to include the expected output 7. Rename the `test_case` folder to describe the test. -8. Repeat steps 4 to 7 for every test case \ No newline at end of file +8. Repeat steps 4 to 7 for every test case diff --git a/docs/docs/faq.md b/docs/docs/faq.md index d8bbd713..5a73110b 100644 --- a/docs/docs/faq.md +++ b/docs/docs/faq.md @@ -7,7 +7,8 @@ sidebar_label: FAQs ### Why Zephyr™? As a best-in-class RTOS, Zephyr™ brings many [benefits](https://www.zephyrproject.org/benefits) to ZMK, such as: -- A *single* platform [supporting](https://docs.zephyrproject.org/latest/boards) many architectures, processors and boards. + +- A _single_ platform [supporting](https://docs.zephyrproject.org/latest/boards) many architectures, processors and boards. - Optimization for low-powered, small memory footprint devices. - Powerful hardware abstraction and configuration using [DeviceTree](https://docs.zephyrproject.org/latest/guides/dts/index.html) and [Kconfig](https://docs.zephyrproject.org/latest/guides/kconfig/index.html). - A BLE stack that periodically obtains [qualification](https://docs.zephyrproject.org/latest/guides/bluetooth/bluetooth-qual.html) listings, making it easier for final products to obtain qualification from the Bluetooth® SIG. @@ -18,14 +19,14 @@ As a best-in-class RTOS, Zephyr™ brings many [benefits](https://www.zephyrproj ### Why yet another keyboard firmware? -That’s an excellent question! There are already great keyboard firmwares available, but ZMK has some advantages: +That’s an excellent question! There are already great keyboard firmwares available, but ZMK has some advantages: - Zephyr™ - See [Why Zephyr™?](#why-zephyr) - Licensing - - Just like other open source firmware, ZMK is all about the free and the sharing. However, some other projects use the GPL licence which prevents integration of libraries and drivers whose licenses are not GPL-compatible (such as some embedded BLE drivers). ZMK uses the permissive [MIT](https://github.com/zmkfirmware/zmk/blob/main/LICENSE) license which doesn’t have this limitation. + - Just like other open source firmware, ZMK is all about the free and the sharing. However, some other projects use the GPL licence which prevents integration of libraries and drivers whose licenses are not GPL-compatible (such as some embedded BLE drivers). ZMK uses the permissive [MIT](https://github.com/zmkfirmware/zmk/blob/main/LICENSE) license which doesn’t have this limitation. - Wireless First - - ZMK is designed for the future, and we believe the future is wireless. So power efficiency plays a critical role in every design decision, just like in Zephyr™. + - ZMK is designed for the future, and we believe the future is wireless. So power efficiency plays a critical role in every design decision, just like in Zephyr™. The ZMK contributors firmly believe that a keyboard firmware built on Zephyr™ will provide more long term benefits. @@ -35,9 +36,9 @@ ZMK uses the MIT [license](https://github.com/zmkfirmware/zmk/blob/main/LICENSE) ### What hardware/platforms does ZMK support? -ZMK has the potential to run on any platform supported by Zephyr™. However, it’s impractical for the ZMK contributors to test all possible hardware. +ZMK has the potential to run on any platform supported by Zephyr™. However, it’s impractical for the ZMK contributors to test all possible hardware. -The Zephyr™ [documentation](https://docs.zephyrproject.org/latest/boards/index.html) describes which hardware is currently natively supported by the Zephyr™ platform. *Similar documentation covering which keyboards have been integrated into ZMK is currently being planned.* +The Zephyr™ [documentation](https://docs.zephyrproject.org/latest/boards/index.html) describes which hardware is currently natively supported by the Zephyr™ platform. _Similar documentation covering which keyboards have been integrated into ZMK is currently being planned._ ### Does ZMK compile for AVR? @@ -45,54 +46,56 @@ Sorry, Zephyr™ only supports 32-bit and 64-bit platforms. ### How do I get started? -ZMK is still in its infancy, so there’s a learning curve involved. But if you’d like to try it out, please check out the development [documentation](/docs) and the other FAQs. Please keep in mind that the project team is still small, so our support capability is limited whilst we focus on development. But we’ll try our best! Interested developers are also very welcome to contribute! +ZMK is still in its infancy, so there’s a learning curve involved. But if you’d like to try it out, please check out the development [documentation](/docs) and the other FAQs. Please keep in mind that the project team is still small, so our support capability is limited whilst we focus on development. But we’ll try our best! Interested developers are also very welcome to contribute! ### What is a “board”? -In ZMK, a *board* defines the *PCB* that *includes the MCU*. +In ZMK, a _board_ defines the _PCB_ that _includes the MCU_. For keyboards, this is one of two options: + - Complete keyboard PCBs that include the MCU (e.g. the Planck or Preonic). - Small MCU boards (e.g. the Proton-C or nice!nano) that expose pins and are designed to be combined with larger keyboard PCBs, or hand wired to switches to create the final keyboard. ### What is a “shield”? -In ZMK, a *shield* is a *PCB* or *hardwired set of components* that when combined with a MCU only [board](#what-is-a-board) like the Proton-C or nice!nano, results in a complete usable keyboard. Examples would be keyboard PCBs like the Kyria or Corne. The *shield* is usually the big PCB containing all the keys. +In ZMK, a _shield_ is a _PCB_ or _hardwired set of components_ that when combined with a MCU only [board](#what-is-a-board) like the Proton-C or nice!nano, results in a complete usable keyboard. Examples would be keyboard PCBs like the Kyria or Corne. The _shield_ is usually the big PCB containing all the keys. -### Why *boards* and *shields*? Why not just “keyboard”? +### Why _boards_ and _shields_? Why not just “keyboard”? If you haven't already done so, please read these FAQs first: + - [What is a “board”?](#what-is-a-board) - [What is a "shield"?](#what-is-a-shield) -When a keyboard accepts a small “PCB MCU module” (e.g. *Arduino Pro Micro*) for its “brains”, then it's important to conceptually separate the hardware into a [board](#what-is-a-board) PCB and a [shield](#what-is-a-shield) PCB. +When a keyboard accepts a small “PCB MCU module” (e.g. _Arduino Pro Micro_) for its “brains”, then it's important to conceptually separate the hardware into a [board](#what-is-a-board) PCB and a [shield](#what-is-a-shield) PCB. -The [shield](#what-is-a-shield) is a brainless shell containing all the keys, RGB LEDs, encoders etc. It maps all of these features to a standard pin footprint, such as the Pro Micro pinout. +The [shield](#what-is-a-shield) is a brainless shell containing all the keys, RGB LEDs, encoders etc. It maps all of these features to a standard pin footprint, such as the Pro Micro pinout. -To bring this brainless [shield](#what-is-a-shield) to life, you attach any MCU [board](#what-is-a-board) matching the footprint. For instance, the *nice!nano* is *pin-compatible* with the *Arduino Pro Micro*, so you can substitute either [board](#what-is-a-board) onto the [shield](#what-is-a-shield). But each [board](#what-is-a-board) comes with its own features (MCU, flash, BLE, etc.) which must also be handled. +To bring this brainless [shield](#what-is-a-shield) to life, you attach any MCU [board](#what-is-a-board) matching the footprint. For instance, the _nice!nano_ is _pin-compatible_ with the _Arduino Pro Micro_, so you can substitute either [board](#what-is-a-board) onto the [shield](#what-is-a-shield). But each [board](#what-is-a-board) comes with its own features (MCU, flash, BLE, etc.) which must also be handled. -Therefore in ZMK, [board](#what-is-a-board) and [shield](#what-is-a-shield) are considered two different (but related) entities so that it’s easier to mix and match them. They are combined during a ZMK build. +Therefore in ZMK, [board](#what-is-a-board) and [shield](#what-is-a-shield) are considered two different (but related) entities so that it’s easier to mix and match them. They are combined during a ZMK build. -Please note, many keyboards only have a single PCB which includes the “brains” (MCU) onboard. In ZMK, these have no [shield](#what-is-a-shield), only a [board](#what-is-a-board). +Please note, many keyboards only have a single PCB which includes the “brains” (MCU) onboard. In ZMK, these have no [shield](#what-is-a-shield), only a [board](#what-is-a-board). ### What bootloader does ZMK use? -ZMK isn’t designed for any particular bootloader, and supports flashing different boards with different flash utilities (e.g. OpenOCD, nrfjprog, etc.). So if you have any difficulties, please let us know on [Discord](https://zmkfirmware.dev/community/discord/invite)! +ZMK isn’t designed for any particular bootloader, and supports flashing different boards with different flash utilities (e.g. OpenOCD, nrfjprog, etc.). So if you have any difficulties, please let us know on [Discord](https://zmkfirmware.dev/community/discord/invite)! ### Can I contribute? -Of course! Please use the developer [documentation](/docs) to get started! +Of course! Please use the developer [documentation](/docs) to get started! -### I have an idea! What should I do? +### I have an idea! What should I do? Please join us on [Discord](https://zmkfirmware.dev/community/discord/invite) and discuss it with us! -### I want to add a new keyboard! What should I do? +### I want to add a new keyboard! What should I do? The exact process for the management of all the possible hardware is still being finalized, but any developer looking to contribute new keyboard definitions should chat with us on [Discord](https://zmkfirmware.dev/community/discord/invite) to get started. ### Does ZMK have a Code of Conduct? -Yes, it does have a [Code of Conduct](https://github.com/zmkfirmware/zmk/blob/main/CODE_OF_CONDUCT.md)! Please give it a read! +Yes, it does have a [Code of Conduct](https://github.com/zmkfirmware/zmk/blob/main/CODE_OF_CONDUCT.md)! Please give it a read! ### What does “ZMK” mean? @@ -100,8 +103,8 @@ ZMK was originally coined as a quasi-acronym of “Zephyr Mechanical Keyboard” ### Is ZMK related to TMK or QMK? -No. But inspired by, of course! +No. But inspired by, of course! ### Who created ZMK? -ZMK was created by Pete Johanson. It is developed and maintained by the open source community. +ZMK was created by Pete Johanson. It is developed and maintained by the open source community. diff --git a/docs/docs/feature/underglow.md b/docs/docs/feature/underglow.md index ab44ebd1..5e7db0b9 100644 --- a/docs/docs/feature/underglow.md +++ b/docs/docs/feature/underglow.md @@ -36,7 +36,7 @@ If your board or shield does not have RGB underglow configured, refer to [Adding There are various Kconfig options used to configure the RGB underglow feature. These can all be set in the `.conf` file. | Option | Description | Default | -|-------------------------------|------------------------------------------------|---------| +| ----------------------------- | ---------------------------------------------- | ------- | | `ZMK_RGB_UNDERGLOW_HUE_STEP` | Hue step in degrees of 360 used by RGB actions | 10 | | `ZMK_RGB_UNDERGLOW_SAT_STEP` | Saturation step in percent used by RGB actions | 10 | | `ZMK_RGB_UNDERGLOW_BRT_STEP` | Brightness step in percent used by RGB actions | 10 | diff --git a/docs/docs/intro.md b/docs/docs/intro.md index e8810a5d..547265a4 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -12,35 +12,35 @@ firmware built on the [Zephyr™ Project](https://zephyrproject.org/) Real Time ZMK is currently missing some features found in other popular firmware. This table compares the features supported by ZMK, BlueMicro and QMK: - -| **Feature** | ZMK | BlueMicro | QMK | -|--------------------------------------------------------------------------------------------------------|:-----------:|:------------:|:-----------:| -| Low Latency BLE Support | ✅ | ✅ | | -| Multi-Device BLE Support | ✅ | | | -| USB Connectivity | ✅ | | ✅ | -| User Configuration Repositories | ✅ | | | -| Split Keyboard Support | ✅ | ✅ | ✅ | -| [Keymaps and Layers](behavior/layers) | ✅ | ✅ | ✅ | -| [Hold-Tap](behavior/hold-tap) (which includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | ✅ | -| [Basic Keycodes](behavior/key-press) | ✅ | ✅ | ✅ | -| [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | ✅ | -| [Encoders](feature/encoders)[^1] | ✅ | | ✅ | -| [OLED Display Support](feature/displays)[^2] | 🚧 | 🚧 | ✅ | -| [RGB Underglow](feature/underglow) | ✅ | ✅ | ✅ | -| One Shot Keys | 🚧 | ✅ | ✅ | -| Combo Keys | 🚧 | | ✅ | -| Macros | 🚧 | ✅ | ✅ | -| Mouse Keys | | ✅ | ✅ | -| Low Active Power Usage | ✅ | | | -| [Low Power Sleep States](https://github.com/zmkfirmware/zmk/pull/211) | 🚧 | ✅ | | -| [Low Power Mode (VCC Shutoff)](https://github.com/zmkfirmware/zmk/pull/242) | 🚧 | | | -| [Battery Reporting](https://github.com/zmkfirmware/zmk/issues/47) | 🚧 | ✅ | | -| Shell over BLE | | | | -| Realtime Keymap Updating | 💡 | | ✅ | -| AVR/8 Bit | | | ✅ | -| [Wide Range of ARM Chips Supported](https://docs.zephyrproject.org/latest/boards/index.html) | ✅ | | | -[^2]: Encoders are not currently supported on peripheral side splits. -[^1]: OLEDs are currently proof of concept in ZMK. +| **Feature** | ZMK | BlueMicro | QMK | +| ---------------------------------------------------------------------------------------------------------------------- | :-: | :-------: | :-: | +| Low Latency BLE Support | ✅ | ✅ | | +| Multi-Device BLE Support | ✅ | | | +| USB Connectivity | ✅ | | ✅ | +| User Configuration Repositories | ✅ | | | +| Split Keyboard Support | ✅ | ✅ | ✅ | +| [Keymaps and Layers](behavior/layers) | ✅ | ✅ | ✅ | +| [Hold-Tap](behavior/hold-tap) (which includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | ✅ | +| [Basic Keycodes](behavior/key-press) | ✅ | ✅ | ✅ | +| [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | ✅ | +| [Encoders](feature/encoders)[^1] | ✅ | | ✅ | +| [OLED Display Support](feature/displays)[^2] | 🚧 | 🚧 | ✅ | +| [RGB Underglow](feature/underglow) | ✅ | ✅ | ✅ | +| One Shot Keys | 🚧 | ✅ | ✅ | +| Combo Keys | 🚧 | | ✅ | +| Macros | 🚧 | ✅ | ✅ | +| Mouse Keys | | ✅ | ✅ | +| Low Active Power Usage | ✅ | | | +| [Low Power Sleep States](https://github.com/zmkfirmware/zmk/pull/211) | 🚧 | ✅ | | +| [Low Power Mode (VCC Shutoff)](https://github.com/zmkfirmware/zmk/pull/242) | 🚧 | | | +| [Battery Reporting](https://github.com/zmkfirmware/zmk/issues/47) | 🚧 | ✅ | | +| Shell over BLE | | | | +| Realtime Keymap Updating | 💡 | | ✅ | +| AVR/8 Bit | | | ✅ | +| [Wide Range of ARM Chips Supported](https://docs.zephyrproject.org/latest/boards/index.html) | ✅ | | | + +[^2]: Encoders are not currently supported on peripheral side splits. +[^1]: OLEDs are currently proof of concept in ZMK. ## Code Of Conduct diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index 5d5eae02..9b340c38 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -3,6 +3,7 @@ id: troubleshooting title: Troubleshooting sidebar_title: Troubleshooting --- + ### Summary The following page provides suggestions for common errors that may occur during firmware compilation. If the information provided is insufficient to resolve the issue, feel free to seek out help from the [ZMK Discord](https://zmkfirmware.dev/community/discord/invite). @@ -11,31 +12,30 @@ The following page provides suggestions for common errors that may occur during Variations of the warnings shown below occur when flashing the `.uf2` onto the microcontroller. This is because the microcontroller resets itself before the OS receives confirmation that the file transfer is complete. Errors like this are normal and can generally be ignored. Verification of a functional board can be done by attempting to pair your newly flashed keyboard to your computer via Bluetooth or plugging in a USB cable if `ZMK_USB` is enabled in your Kconfig.defconfig. -| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/windows.png) | -| :-------------------------------------------------------------------------------: | -| An example of the file transfer error on Windows 10 | +| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/windows.png) | +| :------------------------------------------------------------------------------: | +| An example of the file transfer error on Windows 10 | -| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/linux.png) | -| :-------------------------------------------------------------------------------: | -| An example of the file transfer error on Linux | - -| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/mac.png) | -| :-------------------------------------------------------------------------------: | -| An example of the file transfer error on MacOS | +| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/linux.png) | +| :----------------------------------------------------------------------------: | +| An example of the file transfer error on Linux | +| ![Example Error Screen](../docs/assets/troubleshooting/filetransfer/mac.png) | +| :--------------------------------------------------------------------------: | +| An example of the file transfer error on MacOS | ### CMake Error ``` CMake Warning at C:/zmk/zephyr/subsys/usb/CMakeLists.txt:28 (message): CONFIG_USB_DEVICE_VID has default value 0x2FE3. - + This value is only for testing and MUST be configured for USB products. - - + + CMake Warning at C:/zmk/zephyr/subsys/usb/CMakeLists.txt:34 (message): CONFIG_USB_DEVICE_PID has default value 0x100. - + This value is only for testing and MUST be configured for USB products. ``` @@ -44,25 +44,24 @@ CMake Warnings shown above during `west build` are normal occurrences. They shou On the other hand, an error along the lines of `CMake Error at (zmk directory)/zephyr/cmake/generic_toolchain.cmake:64 (include): include could not find load file:` during firmware compilation indicates that the Zephyr Environment Variables are not properly defined. For more information, click [here](../docs/dev-setup#environment-variables). - ### dtlib.DTError An error along the lines of `dtlib.DTError: .dts.pre.tmp:` during firmware compilation indicates an issue within the `.keymap` file. This can be verified by checking the file in question, found in `mkdir/app/build`. -| ![Example Error Screen](../docs/assets/troubleshooting/keymaps/errorscreen.png) | -| :-------------------------------------------------------------------------------: | -| An example of the dtlib.DTError when compiling an iris with the nice!nano while the keymap is not properly defined | +| ![Example Error Screen](../docs/assets/troubleshooting/keymaps/errorscreen.png) | +| :----------------------------------------------------------------------------------------------------------------: | +| An example of the dtlib.DTError when compiling an iris with the nice!nano while the keymap is not properly defined | After opening the `.dts.pre.tmp:` and scrolling down to the referenced line, one can locate errors within their shield's keymap by checking if the referenced keycodes were properly converted into the correct [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12). -| ![Unhealthy Keymap Temp](../docs/assets/troubleshooting/keymaps/unhealthyEDIT.png) | -| :-------------------------------------------------------------------------------: | -| An incorrectly defined keymap unable to compile. As shown in red, `&kp SPAC` is not a valid reference to the [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12) used for "Keyboard Spacebar" | +| ![Unhealthy Keymap Temp](../docs/assets/troubleshooting/keymaps/unhealthyEDIT.png) | +| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| An incorrectly defined keymap unable to compile. As shown in red, `&kp SPAC` is not a valid reference to the [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12) used for "Keyboard Spacebar" | -| ![Healthy Keymap Temp](../docs/assets/troubleshooting/keymaps/healthyEDIT.png) | -| :-------------------------------------------------------------------------------: | -| A properly defined keymap with successful compilation. As shown in red, the corrected keycode (`&kp SPC`) references the proper Usage ID defined in the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12)| +| ![Healthy Keymap Temp](../docs/assets/troubleshooting/keymaps/healthyEDIT.png) | +| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| A properly defined keymap with successful compilation. As shown in red, the corrected keycode (`&kp SPC`) references the proper Usage ID defined in the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12) | ### Split Keyboard Halves Unable to Pair @@ -74,19 +73,19 @@ Since then, a much simpler procedure of performing a bluetooth reset for split k 1. Log into Github and download the "settings clear" UF2 image from the [latest build in Github Actions](https://github.com/zmkfirmware/zmk/actions?query=workflow%3ABuild+branch%3Amain) 1. Put each half of the split keyboard into bootloader mode 1. Flash one of the halves of the split with the "settings clear" UF2 image from step 1. Immediately after flashing "settings clear" to the chosen half, immediately put it into bootloader mode -to avoid accidental bonding between the halves. + to avoid accidental bonding between the halves. 1. Repeat step 3 with the other half of the split keyboard 1. Flash the actual image for each half of the split keyboard (e.g `my_board_left.uf2` to the left half, `my_board_right.uf2` to the right half) After completing these steps, pair the halves of the split keyboard together by resetting them at the same time. Most commonly, this is done by grounding the reset pins for each of your keyboard's microcontrollers or pressing the reset buttons at the same time. -### Connectivity Issues ### +### Connectivity Issues -Some users may experience a poor connection between the keyboard and the host. This might be due to poor quality BLE hardware, a metal enclosure on the keyboard or host, or the distance between them. Increasing the transmit power of the keyboard's BLE radio may reduce the severity of this problem. To do this, set the `CONFIG_BT_CTLR_TX_PWR_PLUS_8` configuration value in the `.conf` file of your user config directory as such: +Some users may experience a poor connection between the keyboard and the host. This might be due to poor quality BLE hardware, a metal enclosure on the keyboard or host, or the distance between them. Increasing the transmit power of the keyboard's BLE radio may reduce the severity of this problem. To do this, set the `CONFIG_BT_CTLR_TX_PWR_PLUS_8` configuration value in the `.conf` file of your user config directory as such: ``` CONFIG_BT_CTLR_TX_PWR_PLUS_8=y -``` +``` For the `nRF52840`, the value `PLUS_8` can be set to any multiple of four between `MINUS_20` and `PLUS_8`. The default value for this config is `0`, but if you are having connection issues it is recommended to set it to `PLUS_8` because the power consumption difference is negligible. For more information on changing the transmit power of your BLE device, please refer to [the Zephyr docs.](https://docs.zephyrproject.org/latest/reference/kconfig/CONFIG_BT_CTLR_TX_PWR_PLUS_8.html) diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index adf43488..5a4921e8 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -84,6 +84,7 @@ bash -c "$(wget https://zmkfirmware.dev/setup.sh -O -)" '' --wget ``` iex ((New-Object System.Net.WebClient).DownloadString('https://zmkfirmware.dev/setup.ps1'))" ``` + diff --git a/docs/sidebars.js b/docs/sidebars.js index 12b4a6e3..54f6576b 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -6,7 +6,7 @@ module.exports = { "faq", "user-setup", "customization", - "troubleshooting" + "troubleshooting", ], Features: [ "feature/keymaps", @@ -33,8 +33,6 @@ module.exports = { "dev-posix-board", "dev-tests", ], - "Dev Guides": [ - "dev-guide-new-shield", - "dev-guide-usb-logging"], + "Dev Guides": ["dev-guide-new-shield", "dev-guide-usb-logging"], }, }; diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js index 1b1fc658..682082d8 100644 --- a/docs/src/pages/index.js +++ b/docs/src/pages/index.js @@ -12,7 +12,8 @@ const features = [ imageUrl: "img/undraw_zephyr.svg", description: ( <> - With a wide range of architecture support, ZMK is ready for many existing keyboards. + With a wide range of architecture support, ZMK is ready for many + existing keyboards. ), }, @@ -20,19 +21,13 @@ const features = [ title: <>Permissive Licensing, imageUrl: "img/undraw_open_source.svg", description: ( - <> - MIT licensed to remove any future limitations in innovation. - + <>MIT licensed to remove any future limitations in innovation. ), }, { title: <>Wireless First, imageUrl: "img/undraw_wireless.svg", - description: ( - <> - Designed for the future, including wireless support. - - ), + description: <>Designed for the future, including wireless support., }, ]; From fd892d53cd0c2b47041e3b43d86e97b5c6ff6abe Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 26 Oct 2020 17:10:17 -0500 Subject: [PATCH 276/353] fix: eslint proptype errors --- docs/src/pages/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js index 682082d8..7019e579 100644 --- a/docs/src/pages/index.js +++ b/docs/src/pages/index.js @@ -5,6 +5,7 @@ import Link from "@docusaurus/Link"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import useBaseUrl from "@docusaurus/useBaseUrl"; import styles from "./styles.module.css"; +import PropTypes from "prop-types"; const features = [ { @@ -46,6 +47,12 @@ function Feature({ imageUrl, title, description }) { ); } +Feature.propTypes = { + imageUrl: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + description: PropTypes.string.isRequired, +}; + function Home() { const context = useDocusaurusContext(); const { siteConfig = {} } = context; From 1ac78498ebf440dd779acf20446e6611812dcf19 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 27 Oct 2020 11:25:36 -0500 Subject: [PATCH 277/353] docs: Set prettier endOfLine to auto As discussed in PR #301. --- docs/.prettierrc.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/.prettierrc.js b/docs/.prettierrc.js index f053ebf7..2a1f0b48 100644 --- a/docs/.prettierrc.js +++ b/docs/.prettierrc.js @@ -1 +1,3 @@ -module.exports = {}; +module.exports = { + endOfLine: "auto", +}; From a0087311038e9b21c2a45499e669d1300af16f83 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 26 Oct 2020 16:01:57 -0500 Subject: [PATCH 278/353] Implement Kconfig and enhance error checks --- app/boards/arm/bluemicro840/Kconfig.defconfig | 3 +++ app/boards/arm/bluemicro840/bluemicro840_v1_defconfig | 2 -- app/boards/arm/nice_nano/Kconfig.defconfig | 3 +++ app/boards/arm/nice_nano/nice_nano_defconfig | 2 -- app/boards/arm/nrfmicro/Kconfig.defconfig | 3 +++ app/boards/arm/nrfmicro/nrfmicro_13_defconfig | 2 -- app/drivers/zephyr/CMakeLists.txt | 2 +- app/drivers/zephyr/Kconfig | 6 ++++++ app/drivers/zephyr/battery_voltage_divider.c | 11 ++++------- 9 files changed, 20 insertions(+), 14 deletions(-) diff --git a/app/boards/arm/bluemicro840/Kconfig.defconfig b/app/boards/arm/bluemicro840/Kconfig.defconfig index 566b5a42..2b55e17c 100644 --- a/app/boards/arm/bluemicro840/Kconfig.defconfig +++ b/app/boards/arm/bluemicro840/Kconfig.defconfig @@ -27,4 +27,7 @@ config ZMK_BLE config ZMK_USB default y +config ZMK_BATTERY_VOLTAGE_DIVIDER + default y + endif # BOARD_BLUEMICRO840_V1 diff --git a/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig b/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig index 00d56612..96f03ca4 100644 --- a/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig +++ b/app/boards/arm/bluemicro840/bluemicro840_v1_defconfig @@ -10,8 +10,6 @@ CONFIG_ARM_MPU=y # enable GPIO CONFIG_GPIO=y -CONFIG_ADC=y - CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/boards/arm/nice_nano/Kconfig.defconfig b/app/boards/arm/nice_nano/Kconfig.defconfig index 0961ddd1..205050af 100644 --- a/app/boards/arm/nice_nano/Kconfig.defconfig +++ b/app/boards/arm/nice_nano/Kconfig.defconfig @@ -25,4 +25,7 @@ config ZMK_BLE config ZMK_USB default y +config ZMK_BATTERY_VOLTAGE_DIVIDER + default y + endif # BOARD_NICE_NANO diff --git a/app/boards/arm/nice_nano/nice_nano_defconfig b/app/boards/arm/nice_nano/nice_nano_defconfig index a888cb3f..393d61fe 100644 --- a/app/boards/arm/nice_nano/nice_nano_defconfig +++ b/app/boards/arm/nice_nano/nice_nano_defconfig @@ -10,8 +10,6 @@ CONFIG_ARM_MPU=y # enable GPIO CONFIG_GPIO=y -CONFIG_ADC=y - CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/boards/arm/nrfmicro/Kconfig.defconfig b/app/boards/arm/nrfmicro/Kconfig.defconfig index 7957b4a5..a3c02c22 100644 --- a/app/boards/arm/nrfmicro/Kconfig.defconfig +++ b/app/boards/arm/nrfmicro/Kconfig.defconfig @@ -35,6 +35,9 @@ if BOARD_NRFMICRO_13 config BOARD_NRFMICRO_CHARGER default y +config ZMK_BATTERY_VOLTAGE_DIVIDER + default y + endif # BOARD_NRFMICRO_13 endif # BOARD_NRFMICRO_11 || BOARD_NRFMICRO_11_FLIPPED || BOARD_NRFMICRO_13 diff --git a/app/boards/arm/nrfmicro/nrfmicro_13_defconfig b/app/boards/arm/nrfmicro/nrfmicro_13_defconfig index 4e44ea36..cac11642 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13_defconfig +++ b/app/boards/arm/nrfmicro/nrfmicro_13_defconfig @@ -10,8 +10,6 @@ CONFIG_ARM_MPU=y # enable GPIO CONFIG_GPIO=y -CONFIG_ADC=y - CONFIG_USE_DT_CODE_PARTITION=y CONFIG_MPU_ALLOW_FLASH_WRITE=y diff --git a/app/drivers/zephyr/CMakeLists.txt b/app/drivers/zephyr/CMakeLists.txt index 0b1d18fb..fc43fb8c 100644 --- a/app/drivers/zephyr/CMakeLists.txt +++ b/app/drivers/zephyr/CMakeLists.txt @@ -5,9 +5,9 @@ if(CONFIG_ZMK_KSCAN_GPIO_DRIVER) zephyr_library_sources( kscan_gpio_matrix.c kscan_gpio_direct.c - battery_voltage_divider.c ) zephyr_library_sources_ifdef(CONFIG_EC11 ec11.c) zephyr_library_sources_ifdef(CONFIG_EC11_TRIGGER ec11_trigger.c) + zephyr_library_sources_ifdef(CONFIG_ZMK_BATTERY_VOLTAGE_DIVIDER battery_voltage_divider.c) endif() diff --git a/app/drivers/zephyr/Kconfig b/app/drivers/zephyr/Kconfig index 0534cab2..6b177fb1 100644 --- a/app/drivers/zephyr/Kconfig +++ b/app/drivers/zephyr/Kconfig @@ -21,6 +21,12 @@ config ZMK_KSCAN_INIT_PRIORITY help Keyboard scan device driver initialization priority. +config ZMK_BATTERY_VOLTAGE_DIVIDER + bool "ZMK battery voltage divider" + select ADC + help + Enable ZMK battery voltage divider driver for battery monitoring. + menuconfig EC11 bool "EC11 Incremental Encoder Sensor" depends on GPIO diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index 09a353a7..37ac024b 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -14,8 +14,6 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) - struct io_channel_config { const char *label; uint8_t channel; @@ -102,10 +100,11 @@ static int bvd_sample_fetch(struct device *dev, enum sensor_channel chan) { // Disable power GPIO if present if (drv_data->gpio) { - rc = gpio_pin_set(drv_data->gpio, drv_cfg->power_gpios.pin, 0); + int rc2 = gpio_pin_set(drv_data->gpio, drv_cfg->power_gpios.pin, 0); - if (rc != 0) { - LOG_DBG("Failed to disable ADC power GPIO: %d", rc); + if (rc2 != 0) { + LOG_DBG("Failed to disable ADC power GPIO: %d", rc2); + return rc2; } } @@ -214,5 +213,3 @@ static const struct bvd_config bvd_cfg = { DEVICE_AND_API_INIT(bvd_dev, DT_INST_LABEL(0), &bvd_init, &bvd_data, &bvd_cfg, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, &bvd_api); - -#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ From 806ea545f81612b43c3ea209e9086213721adaae Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Mon, 26 Oct 2020 22:54:37 +0000 Subject: [PATCH 279/353] docs: Set netlify node version to lts/* Prerequisite of #218 and PR #308. --- docs/.nvmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/.nvmrc diff --git a/docs/.nvmrc b/docs/.nvmrc new file mode 100644 index 00000000..1a2f5bd2 --- /dev/null +++ b/docs/.nvmrc @@ -0,0 +1 @@ +lts/* \ No newline at end of file From 2c9737ad1464753b167738b321a27467aee2e430 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 26 Oct 2020 23:14:34 -0400 Subject: [PATCH 280/353] fix: Typo in the toplevel README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 93f4e831..cde1ffae 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md) This project is a complete work in progress, with only basic things functioning. The goal is to explore a new MK firmware -with a less restritive license and better BLE support, built on top of the [Zephyr™ Project](https://www.zephyrproject.org/) +with a less restrictive license and better BLE support, built on top of the [Zephyr™ Project](https://www.zephyrproject.org/) Check out the website to learn more: https://zmkfirmware.dev/ From 571d045c75592b65ddf44c6f2fb0cbf17facb72f Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 26 Oct 2020 23:15:48 -0400 Subject: [PATCH 281/353] fix(docs): Explicit CC-BY-NC-SA license for docs. --- docs/README.md | 5 ++++- docs/docusaurus.config.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 3e7c9e6a..fab8b874 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,6 +2,10 @@ This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator. +## License + +The ZMK Documentation is licensed [CC-BY-NC-SA](http://creativecommons.org/licenses/by-nc-sa/4.0/). + ### Installation ``` @@ -23,4 +27,3 @@ $ npm build ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. - diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 9ebb9c63..b0906631 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -89,7 +89,7 @@ module.exports = { ], }, ], - copyright: `Copyright © ${new Date().getFullYear()} ZMK Project Contributors, Built with Docusaurus.`, + copyright: `Copyright © ${new Date().getFullYear()} ZMK Project Contributors. Creative Commons License`, }, algolia: { apiKey: "75325855fc90356828fe212d38e5ca34", From 1522c91d73d7f35643986daa508dd7704a5f2798 Mon Sep 17 00:00:00 2001 From: Jay Greco Date: Wed, 21 Oct 2020 20:15:55 -0700 Subject: [PATCH 282/353] Add new kscan_gpio_demux driver + zmk,kscan_gpio_demux is now a compatible kscan option + kscan_gpio_demux is based heavily off of the implementation of kscan_gpio_matrix, modified to address cols using an n-to-1 demultiplexer chip instead of discrete IO + Added zmk,kscan_gpio_demux.yaml file * modified CMakeLists to include new source files --- .vscode/settings.json | 4 +- app/drivers/zephyr/CMakeLists.txt | 1 + .../dts/bindings/zmk,kscan-gpio-demux.yaml | 22 ++ app/drivers/zephyr/kscan_gpio_demux.c | 270 ++++++++++++++++++ 4 files changed, 296 insertions(+), 1 deletion(-) create mode 100644 app/drivers/zephyr/dts/bindings/zmk,kscan-gpio-demux.yaml create mode 100644 app/drivers/zephyr/kscan_gpio_demux.c diff --git a/.vscode/settings.json b/.vscode/settings.json index 3642d280..2ec45535 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,7 @@ "files.associations": { "*.overlay": "dts", "*.keymap": "dts" - } + }, + "C_Cpp.dimInactiveRegions": false, + "C_Cpp.errorSquiggles": "Disabled" } diff --git a/app/drivers/zephyr/CMakeLists.txt b/app/drivers/zephyr/CMakeLists.txt index fc43fb8c..e3a192d2 100644 --- a/app/drivers/zephyr/CMakeLists.txt +++ b/app/drivers/zephyr/CMakeLists.txt @@ -5,6 +5,7 @@ if(CONFIG_ZMK_KSCAN_GPIO_DRIVER) zephyr_library_sources( kscan_gpio_matrix.c kscan_gpio_direct.c + kscan_gpio_demux.c ) zephyr_library_sources_ifdef(CONFIG_EC11 ec11.c) diff --git a/app/drivers/zephyr/dts/bindings/zmk,kscan-gpio-demux.yaml b/app/drivers/zephyr/dts/bindings/zmk,kscan-gpio-demux.yaml new file mode 100644 index 00000000..a2d8d244 --- /dev/null +++ b/app/drivers/zephyr/dts/bindings/zmk,kscan-gpio-demux.yaml @@ -0,0 +1,22 @@ +# Copyright (c) 2020, The ZMK Contributors +# SPDX-License-Identifier: MIT + +description: GPIO keyboard demux controller + +compatible: "zmk,kscan-gpio-demux" + +include: kscan.yaml + +properties: + input-gpios: + type: phandle-array + required: true + output-gpios: + type: phandle-array + required: true + debounce-period: + type: int + default: 5 + polling-interval-msec: + type: int + default: 25 diff --git a/app/drivers/zephyr/kscan_gpio_demux.c b/app/drivers/zephyr/kscan_gpio_demux.c new file mode 100644 index 00000000..98c04e6b --- /dev/null +++ b/app/drivers/zephyr/kscan_gpio_demux.c @@ -0,0 +1,270 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#define DT_DRV_COMPAT zmk_kscan_gpio_demux + +#include +#include +#include +#include + +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) + +struct kscan_gpio_item_config { + char *label; + gpio_pin_t pin; + gpio_flags_t flags; +}; + +// Helper macro +#define PWR_TWO(x) (1 << (x)) + +// Define GPIO cfg +#define _KSCAN_GPIO_ITEM_CFG_INIT(n, prop, idx) \ + { \ + .label = DT_INST_GPIO_LABEL_BY_IDX(n, prop, idx), \ + .pin = DT_INST_GPIO_PIN_BY_IDX(n, prop, idx), \ + .flags = DT_INST_GPIO_FLAGS_BY_IDX(n, prop, idx), \ + }, + +// Define row and col cfg +#define _KSCAN_GPIO_INPUT_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, input_gpios, idx) +#define _KSCAN_GPIO_OUTPUT_CFG_INIT(idx, n) _KSCAN_GPIO_ITEM_CFG_INIT(n, output_gpios, idx) + +// Check debounce config +#define CHECK_DEBOUNCE_CFG(n, a, b) COND_CODE_0(DT_INST_PROP(n, debounce_period), a, b) + +// Define the row and column lengths +#define INST_MATRIX_INPUTS(n) DT_INST_PROP_LEN(n, input_gpios) +#define INST_DEMUX_GPIOS(n) DT_INST_PROP_LEN(n, output_gpios) +#define INST_MATRIX_OUTPUTS(n) PWR_TWO(INST_DEMUX_GPIOS(n)) +#define POLL_INTERVAL(n) DT_INST_PROP(n, polling_interval_msec) + +#define GPIO_INST_INIT(n) \ + struct kscan_gpio_irq_callback_##n { \ + struct CHECK_DEBOUNCE_CFG(n, (k_work), (k_delayed_work)) * work; \ + struct gpio_callback callback; \ + struct device *dev; \ + }; \ + \ + static struct kscan_gpio_irq_callback_##n irq_callbacks_##n[INST_MATRIX_INPUTS(n)]; \ + \ + struct kscan_gpio_config_##n { \ + struct kscan_gpio_item_config rows[INST_MATRIX_INPUTS(n)]; \ + struct kscan_gpio_item_config cols[INST_DEMUX_GPIOS(n)]; \ + }; \ + \ + struct kscan_gpio_data_##n { \ + kscan_callback_t callback; \ + struct k_timer poll_timer; \ + struct CHECK_DEBOUNCE_CFG(n, (k_work), (k_delayed_work)) work; \ + bool matrix_state[INST_MATRIX_INPUTS(n)][INST_MATRIX_OUTPUTS(n)]; \ + struct device *rows[INST_MATRIX_INPUTS(n)]; \ + struct device *cols[INST_MATRIX_OUTPUTS(n)]; \ + struct device *dev; \ + }; \ + /* IO/GPIO SETUP */ \ + /* gpio_input_devices are PHYSICAL IO devices */ \ + static struct device **kscan_gpio_input_devices_##n(struct device *dev) { \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + return data->rows; \ + } \ + \ + static const struct kscan_gpio_item_config *kscan_gpio_input_configs_##n(struct device *dev) { \ + const struct kscan_gpio_config_##n *cfg = dev->config_info; \ + return cfg->rows; \ + } \ + \ + /* gpio_output_devices are PHYSICAL IO devices */ \ + static struct device **kscan_gpio_output_devices_##n(struct device *dev) { \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + return data->cols; \ + } \ + \ + static const struct kscan_gpio_item_config *kscan_gpio_output_configs_##n( \ + struct device *dev) { \ + const struct kscan_gpio_config_##n *cfg = dev->config_info; \ + /* If row2col, rows = outputs & cols = inputs */ \ + return cfg->cols; \ + } \ + /* POLLING SETUP */ \ + static void kscan_gpio_timer_handler(struct k_timer *timer) { \ + struct kscan_gpio_data_##n *data = \ + CONTAINER_OF(timer, struct kscan_gpio_data_##n, poll_timer); \ + k_work_submit(&data->work.work); \ + } \ + \ + /* Read the state of the input GPIOs */ \ + /* This is the core matrix_scan func */ \ + static int kscan_gpio_read_##n(struct device *dev) { \ + bool submit_follow_up_read = false; \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + static bool read_state[INST_MATRIX_INPUTS(n)][INST_MATRIX_OUTPUTS(n)]; \ + for (int o = 0; o < INST_MATRIX_OUTPUTS(n); o++) { \ + /* Iterate over bits and set GPIOs accordingly */ \ + for (u8_t bit = 0; bit < INST_DEMUX_GPIOS(n); bit++) { \ + u8_t state = (o & (0b1 << bit)) >> bit; \ + struct device *out_dev = kscan_gpio_output_devices_##n(dev)[bit]; \ + const struct kscan_gpio_item_config *out_cfg = \ + &kscan_gpio_output_configs_##n(dev)[bit]; \ + gpio_pin_set(out_dev, out_cfg->pin, state); \ + } \ + \ + for (int i = 0; i < INST_MATRIX_INPUTS(n); i++) { \ + /* Get the input device (port) */ \ + struct device *in_dev = kscan_gpio_input_devices_##n(dev)[i]; \ + /* Get the input device config (pin) */ \ + const struct kscan_gpio_item_config *in_cfg = \ + &kscan_gpio_input_configs_##n(dev)[i]; \ + read_state[i][o] = gpio_pin_get(in_dev, in_cfg->pin) > 0; \ + } \ + } \ + for (int r = 0; r < INST_MATRIX_INPUTS(n); r++) { \ + for (int c = 0; c < INST_MATRIX_OUTPUTS(n); c++) { \ + bool pressed = read_state[r][c]; \ + submit_follow_up_read = (submit_follow_up_read || pressed); \ + if (pressed != data->matrix_state[r][c]) { \ + LOG_DBG("Sending event at %d,%d state %s", r, c, (pressed ? "on" : "off")); \ + data->matrix_state[r][c] = pressed; \ + data->callback(dev, r, c, pressed); \ + } \ + } \ + } \ + if (submit_follow_up_read) { \ + CHECK_DEBOUNCE_CFG(n, ({ k_work_submit(&data->work); }), ({ \ + k_delayed_work_cancel(&data->work); \ + k_delayed_work_submit(&data->work, K_MSEC(5)); \ + })) \ + } \ + return 0; \ + } \ + \ + static void kscan_gpio_work_handler_##n(struct k_work *work) { \ + struct kscan_gpio_data_##n *data = CONTAINER_OF(work, struct kscan_gpio_data_##n, work); \ + kscan_gpio_read_##n(data->dev); \ + } \ + \ + static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ + gpio_port_pins_t pin) { \ + struct kscan_gpio_irq_callback_##n *data = \ + CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ + CHECK_DEBOUNCE_CFG(n, ({ k_work_submit(data->work); }), ({ \ + k_delayed_work_cancel(data->work); \ + k_delayed_work_submit(data->work, \ + K_MSEC(DT_INST_PROP(n, debounce_period))); \ + })) \ + } \ + \ + static struct kscan_gpio_data_##n kscan_gpio_data_##n = { \ + .rows = {[INST_MATRIX_INPUTS(n) - 1] = NULL}, .cols = {[INST_DEMUX_GPIOS(n) - 1] = NULL}}; \ + \ + /* KSCAN API configure function */ \ + static int kscan_gpio_configure_##n(struct device *dev, kscan_callback_t callback) { \ + LOG_DBG("KSCAN API configure"); \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + if (!callback) { \ + return -EINVAL; \ + } \ + data->callback = callback; \ + LOG_DBG("Configured GPIO %d", n); \ + return 0; \ + }; \ + \ + /* KSCAN API enable function */ \ + static int kscan_gpio_enable_##n(struct device *dev) { \ + LOG_DBG("KSCAN API enable"); \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + k_timer_start(&data->poll_timer, K_MSEC(POLL_INTERVAL(n)), K_MSEC(POLL_INTERVAL(n))); \ + return 0; \ + }; \ + \ + /* KSCAN API disable function */ \ + static int kscan_gpio_disable_##n(struct device *dev) { \ + LOG_DBG("KSCAN API disable"); \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + k_timer_stop(&data->poll_timer); \ + return 0; \ + }; \ + \ + /* GPIO init function*/ \ + static int kscan_gpio_init_##n(struct device *dev) { \ + LOG_DBG("KSCAN GPIO init"); \ + struct kscan_gpio_data_##n *data = dev->driver_data; \ + int err; \ + /* configure input devices*/ \ + struct device **input_devices = kscan_gpio_input_devices_##n(dev); \ + for (int i = 0; i < INST_MATRIX_INPUTS(n); i++) { \ + const struct kscan_gpio_item_config *in_cfg = &kscan_gpio_input_configs_##n(dev)[i]; \ + input_devices[i] = device_get_binding(in_cfg->label); \ + if (!input_devices[i]) { \ + LOG_ERR("Unable to find input GPIO device"); \ + return -EINVAL; \ + } \ + err = gpio_pin_configure(input_devices[i], in_cfg->pin, GPIO_INPUT | in_cfg->flags); \ + if (err) { \ + LOG_ERR("Unable to configure pin %d on %s for input", in_cfg->pin, in_cfg->label); \ + return err; \ + } else { \ + LOG_DBG("Configured pin %d on %s for input", in_cfg->pin, in_cfg->label); \ + } \ + irq_callbacks_##n[i].work = &data->work; \ + irq_callbacks_##n[i].dev = dev; \ + gpio_init_callback(&irq_callbacks_##n[i].callback, \ + kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ + err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ + if (err) { \ + LOG_ERR("Error adding the callback to the column device"); \ + return err; \ + } \ + } \ + /* configure output devices*/ \ + struct device **output_devices = kscan_gpio_output_devices_##n(dev); \ + for (int o = 0; o < INST_DEMUX_GPIOS(n); o++) { \ + const struct kscan_gpio_item_config *out_cfg = &kscan_gpio_output_configs_##n(dev)[o]; \ + output_devices[o] = device_get_binding(out_cfg->label); \ + if (!output_devices[o]) { \ + LOG_ERR("Unable to find output GPIO device"); \ + return -EINVAL; \ + } \ + err = gpio_pin_configure(output_devices[o], out_cfg->pin, \ + GPIO_OUTPUT_ACTIVE | out_cfg->flags); \ + if (err) { \ + LOG_ERR("Unable to configure pin %d on %s for output", out_cfg->pin, \ + out_cfg->label); \ + return err; \ + } else { \ + LOG_DBG("Configured pin %d on %s for output", out_cfg->pin, out_cfg->label); \ + } \ + } \ + data->dev = dev; \ + \ + k_timer_init(&data->poll_timer, kscan_gpio_timer_handler, NULL); \ + \ + (CHECK_DEBOUNCE_CFG(n, (k_work_init), (k_delayed_work_init)))( \ + &data->work, kscan_gpio_work_handler_##n); \ + return 0; \ + } \ + \ + static const struct kscan_driver_api gpio_driver_api_##n = { \ + .config = kscan_gpio_configure_##n, \ + .enable_callback = kscan_gpio_enable_##n, \ + .disable_callback = kscan_gpio_disable_##n, \ + }; \ + \ + static const struct kscan_gpio_config_##n kscan_gpio_config_##n = { \ + .rows = {UTIL_LISTIFY(INST_MATRIX_INPUTS(n), _KSCAN_GPIO_INPUT_CFG_INIT, n)}, \ + .cols = {UTIL_LISTIFY(INST_DEMUX_GPIOS(n), _KSCAN_GPIO_OUTPUT_CFG_INIT, n)}, \ + }; \ + \ + DEVICE_AND_API_INIT(kscan_gpio_##n, DT_INST_LABEL(n), kscan_gpio_init_##n, \ + &kscan_gpio_data_##n, &kscan_gpio_config_##n, APPLICATION, \ + CONFIG_APPLICATION_INIT_PRIORITY, &gpio_driver_api_##n); + +DT_INST_FOREACH_STATUS_OKAY(GPIO_INST_INIT) + +#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ From d90592aac5cec02da1959d7ede7ceccb5265f126 Mon Sep 17 00:00:00 2001 From: Jay Greco Date: Wed, 21 Oct 2020 20:17:31 -0700 Subject: [PATCH 283/353] Add NIBBLE shield + Added required files for nullbits NIBBLE --- .github/workflows/build.yml | 1 + app/boards/shields/nibble/Kconfig.defconfig | 13 ++++++ app/boards/shields/nibble/Kconfig.shield | 5 +++ app/boards/shields/nibble/nibble.conf | 0 app/boards/shields/nibble/nibble.keymap | 37 ++++++++++++++++ app/boards/shields/nibble/nibble.overlay | 49 +++++++++++++++++++++ docs/static/setup.ps1 | 6 +-- docs/static/setup.sh | 1 + 8 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 app/boards/shields/nibble/Kconfig.defconfig create mode 100644 app/boards/shields/nibble/Kconfig.shield create mode 100644 app/boards/shields/nibble/nibble.conf create mode 100644 app/boards/shields/nibble/nibble.keymap create mode 100644 app/boards/shields/nibble/nibble.overlay diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b811a37a..cd3d0e7f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,6 +24,7 @@ jobs: - settings_reset - quefrency_left - quefrency_right + - nibble include: - board: proton_c shield: clueboard_california diff --git a/app/boards/shields/nibble/Kconfig.defconfig b/app/boards/shields/nibble/Kconfig.defconfig new file mode 100644 index 00000000..30cb21b9 --- /dev/null +++ b/app/boards/shields/nibble/Kconfig.defconfig @@ -0,0 +1,13 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +if SHIELD_NIBBLE + +config ZMK_KEYBOARD_NAME + default "NIBBLE_BLE" + +config ZMK_USB + default y + +endif + diff --git a/app/boards/shields/nibble/Kconfig.shield b/app/boards/shields/nibble/Kconfig.shield new file mode 100644 index 00000000..44364f4e --- /dev/null +++ b/app/boards/shields/nibble/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config SHIELD_NIBBLE + def_bool $(shields_list_contains,nibble) diff --git a/app/boards/shields/nibble/nibble.conf b/app/boards/shields/nibble/nibble.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/nibble/nibble.keymap b/app/boards/shields/nibble/nibble.keymap new file mode 100644 index 00000000..dd37ad90 --- /dev/null +++ b/app/boards/shields/nibble/nibble.keymap @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +#define DEFAULT 0 +#define FUNC 1 + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp MINUS &kp EQL &kp BKSP &kp HOME +&cp M_VOLU &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH &kp DEL +&cp M_VOLD &kp CLCK &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT &kp RET &kp PGUP +&trans &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RSFT &kp UARW &kp PGDN +&trans &kp LCTL &kp LGUI &kp LALT &kp SPC &mo FUNC &kp RALT &kp RCTL &kp LARW &kp DARW &kp RARW + >; + }; + func { + bindings = < + &kp TILD &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &trans &kp END +&bt BT_CLR &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &bootloader +&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans +&bt BT_PRV &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans +&bt BT_NXT &trans &trans &trans &trans &trans &trans &trans &cp M_PREV &cp M_PLAY &cp M_NEXT + >; + }; + }; +}; diff --git a/app/boards/shields/nibble/nibble.overlay b/app/boards/shields/nibble/nibble.overlay new file mode 100644 index 00000000..7975c3cd --- /dev/null +++ b/app/boards/shields/nibble/nibble.overlay @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-demux"; + label = "KSCAN"; + polling-interval-msec = <25>; + input-gpios + = <&pro_micro_d 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&pro_micro_d 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + ; + output-gpios + = <&pro_micro_a 3 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 2 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + ; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <16>; + rows = <5>; + + //TODO: Add a keymap graphic here + + map = < + RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,15) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) RC(1,12) RC(1,13) RC(1,14) RC(1,15) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,12) RC(2,14) RC(2,15) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11) RC(3,12) RC(3,14) RC(3,15) +RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,6) RC(4,9) RC(4,10) RC(4,11) RC(4,12) RC(4,14) RC(4,15) + >; + }; +}; diff --git a/docs/static/setup.ps1 b/docs/static/setup.ps1 index fac1732a..89ead01e 100644 --- a/docs/static/setup.ps1 +++ b/docs/static/setup.ps1 @@ -91,9 +91,9 @@ Write-Host "Keyboard Shield Selection:" $prompt = "Pick a keyboard" # TODO: Add support for "Other" and linking to docs on adding custom shields in user config repos. -$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "Reviung41", "RoMac", "RoMac+", "makerdiary M60", "Microdox", "TG4X", "QAZ" -$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "reviung41", "romac", "romac_plus", "m60", "microdox", "tg4x", "qaz" -$splits = "y", "y", "y", "y", "y", "y", "n", "n", "n", "n", "y", "n", "n" +$options = "Kyria", "Lily58", "Corne", "Splitreus62", "Sofle", "Iris", "Reviung41", "RoMac", "RoMac+", "makerdiary M60", "Microdox", "TG4X", "QAZ", "NIBBLE" +$names = "kyria", "lily58", "corne", "splitreus62", "sofle", "iris", "reviung41", "romac", "romac_plus", "m60", "microdox", "tg4x", "qaz", "nibble" +$splits = "y", "y", "y", "y", "y", "y", "n", "n", "n", "n", "y", "n", "n", "n" $choice = Get-Choice-From-Options -Options $options -Prompt $prompt $shield_title = $($options[$choice]) diff --git a/docs/static/setup.sh b/docs/static/setup.sh index 294e46ef..cdd6bc47 100644 --- a/docs/static/setup.sh +++ b/docs/static/setup.sh @@ -114,6 +114,7 @@ select opt in "${options[@]}" "Quit"; do 11 ) shield_title="Microdox" shield="microdox"; split="y"; break;; 12 ) shield_title="TG4X" shield="tg4x"; split="n"; break;; 13 ) shield_title="QAZ" shield="qaz"; split="n"; break;; + 14 ) shield_title="NIBBLE" shield="nibble"; split="n"; break;; # Add link to docs on adding your own custom shield in your ZMK config! # $(( ${#options[@]}+1 )) ) echo "Other!"; break;; From 1a6fe846e4c1eb211c838f1e9635ca29d85d8341 Mon Sep 17 00:00:00 2001 From: Jay Greco Date: Tue, 27 Oct 2020 09:29:04 -0700 Subject: [PATCH 284/353] Update NIBBLE keyboard name as per PR feedback - Revert accidental VS code settings change --- .vscode/settings.json | 6 ++---- app/boards/shields/nibble/Kconfig.defconfig | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 2ec45535..eba95704 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,5 @@ "files.associations": { "*.overlay": "dts", "*.keymap": "dts" - }, - "C_Cpp.dimInactiveRegions": false, - "C_Cpp.errorSquiggles": "Disabled" -} + } +} \ No newline at end of file diff --git a/app/boards/shields/nibble/Kconfig.defconfig b/app/boards/shields/nibble/Kconfig.defconfig index 30cb21b9..01d0bba5 100644 --- a/app/boards/shields/nibble/Kconfig.defconfig +++ b/app/boards/shields/nibble/Kconfig.defconfig @@ -4,7 +4,7 @@ if SHIELD_NIBBLE config ZMK_KEYBOARD_NAME - default "NIBBLE_BLE" + default "NIBBLE" config ZMK_USB default y From 8a98212a02a3a6304a1f275450264f46a60d011b Mon Sep 17 00:00:00 2001 From: Jay Greco Date: Tue, 27 Oct 2020 09:39:30 -0700 Subject: [PATCH 285/353] Update demux kscan driver as per PR feedback - Remove kscan_gpio_irq_callback - Remove kscan_gpio_irq_callback_handler - Remove irq_callbacks + Add TODO noting timer and sleep state interactions --- app/drivers/zephyr/kscan_gpio_demux.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/app/drivers/zephyr/kscan_gpio_demux.c b/app/drivers/zephyr/kscan_gpio_demux.c index 98c04e6b..6113d7c4 100644 --- a/app/drivers/zephyr/kscan_gpio_demux.c +++ b/app/drivers/zephyr/kscan_gpio_demux.c @@ -52,8 +52,6 @@ struct kscan_gpio_item_config { struct device *dev; \ }; \ \ - static struct kscan_gpio_irq_callback_##n irq_callbacks_##n[INST_MATRIX_INPUTS(n)]; \ - \ struct kscan_gpio_config_##n { \ struct kscan_gpio_item_config rows[INST_MATRIX_INPUTS(n)]; \ struct kscan_gpio_item_config cols[INST_DEMUX_GPIOS(n)]; \ @@ -149,17 +147,6 @@ struct kscan_gpio_item_config { kscan_gpio_read_##n(data->dev); \ } \ \ - static void kscan_gpio_irq_callback_handler_##n(struct device *dev, struct gpio_callback *cb, \ - gpio_port_pins_t pin) { \ - struct kscan_gpio_irq_callback_##n *data = \ - CONTAINER_OF(cb, struct kscan_gpio_irq_callback_##n, callback); \ - CHECK_DEBOUNCE_CFG(n, ({ k_work_submit(data->work); }), ({ \ - k_delayed_work_cancel(data->work); \ - k_delayed_work_submit(data->work, \ - K_MSEC(DT_INST_PROP(n, debounce_period))); \ - })) \ - } \ - \ static struct kscan_gpio_data_##n kscan_gpio_data_##n = { \ .rows = {[INST_MATRIX_INPUTS(n) - 1] = NULL}, .cols = {[INST_DEMUX_GPIOS(n) - 1] = NULL}}; \ \ @@ -179,6 +166,8 @@ struct kscan_gpio_item_config { static int kscan_gpio_enable_##n(struct device *dev) { \ LOG_DBG("KSCAN API enable"); \ struct kscan_gpio_data_##n *data = dev->driver_data; \ + /* TODO: we might want a follow up to hook into the sleep state hooks in Zephyr, */ \ + /* and disable this timer when we enter a sleep state */ \ k_timer_start(&data->poll_timer, K_MSEC(POLL_INTERVAL(n)), K_MSEC(POLL_INTERVAL(n))); \ return 0; \ }; \ @@ -212,11 +201,6 @@ struct kscan_gpio_item_config { } else { \ LOG_DBG("Configured pin %d on %s for input", in_cfg->pin, in_cfg->label); \ } \ - irq_callbacks_##n[i].work = &data->work; \ - irq_callbacks_##n[i].dev = dev; \ - gpio_init_callback(&irq_callbacks_##n[i].callback, \ - kscan_gpio_irq_callback_handler_##n, BIT(in_cfg->pin)); \ - err = gpio_add_callback(input_devices[i], &irq_callbacks_##n[i].callback); \ if (err) { \ LOG_ERR("Error adding the callback to the column device"); \ return err; \ From f4596fc784d11aa2d03ff0b7fa0a921600fc2db2 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 27 Oct 2020 22:35:44 +0000 Subject: [PATCH 286/353] refactor(hid): Refactor keypad report to use a configurable integer array Replace NKRO bit array with configurable integer (DV) array. --- app/include/zmk/hid.h | 35 +++++++++++---------------------- app/src/hid.c | 45 +++++++++++-------------------------------- 2 files changed, 22 insertions(+), 58 deletions(-) diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index 744de98e..aa024dce 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -9,13 +9,11 @@ #include #include -#include - #include #define COLLECTION_REPORT 0x03 -#define ZMK_HID_MAX_KEYCODE GUI +#define ZMK_HID_KEYPAD_NKRO_SIZE 6 static const u8_t zmk_hid_report_desc[] = { /* USAGE_PAGE (Generic Desktop) */ @@ -62,36 +60,25 @@ static const u8_t zmk_hid_report_desc[] = { /* LOGICAL_MINIMUM (0) */ HID_GI_LOGICAL_MIN(1), 0x00, - /* LOGICAL_MAXIMUM (1) */ + /* LOGICAL_MAXIMUM (0xFF) */ HID_GI_LOGICAL_MAX(1), - 0x01, + 0xFF, /* USAGE_MINIMUM (Reserved) */ HID_LI_USAGE_MIN(1), 0x00, /* USAGE_MAXIMUM (Keyboard Application) */ HID_LI_USAGE_MAX(1), - ZMK_HID_MAX_KEYCODE, - /* REPORT_SIZE (8) */ + 0xFF, + /* REPORT_SIZE (1) */ HID_GI_REPORT_SIZE, - 0x01, - /* REPORT_COUNT (6) */ + 0x08, + /* REPORT_COUNT (ZMK_HID_KEYPAD_NKRO_SIZE) */ HID_GI_REPORT_COUNT, - ZMK_HID_MAX_KEYCODE + 1, + ZMK_HID_KEYPAD_NKRO_SIZE, /* INPUT (Data,Ary,Abs) */ HID_MI_INPUT, - 0x02, - /* USAGE_PAGE (Keypad) */ - HID_GI_USAGE_PAGE, - USAGE_GEN_DESKTOP_KEYPAD, - /* REPORT_SIZE (8) */ - HID_GI_REPORT_SIZE, - 0x02, - /* REPORT_COUNT (6) */ - HID_GI_REPORT_COUNT, - 0x01, - /* INPUT (Cnst,Var,Abs) */ - HID_MI_INPUT, - 0x03, + 0x00, + /* END_COLLECTION */ HID_MI_COLLECTION_END, /* USAGE_PAGE (Consumer) */ @@ -142,7 +129,7 @@ static const u8_t zmk_hid_report_desc[] = { struct zmk_hid_keypad_report_body { zmk_mod_flags modifiers; - u8_t keys[13]; + u8_t keys[ZMK_HID_KEYPAD_NKRO_SIZE]; } __packed; struct zmk_hid_keypad_report { diff --git a/app/src/hid.c b/app/src/hid.c index f80906cc..5e468329 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -9,8 +9,8 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include -static struct zmk_hid_keypad_report kp_report = { - .report_id = 1, .body = {.modifiers = 0, .keys = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}}; +static struct zmk_hid_keypad_report kp_report = {.report_id = 1, + .body = {.modifiers = 0, .keys = {0}}}; static struct zmk_hid_consumer_report consumer_report = {.report_id = 2, .body = {.keys = {0, 0, 0, 0, 0, 0}}}; @@ -35,23 +35,16 @@ int zmk_hid_unregister_mods(zmk_mod_flags modifiers) { return 0; } -#define KEY_OFFSET 0x02 #define MAX_KEYS 6 -/* -#define TOGGLE_BOOT_KEY(match, val) \ - for (int idx = 0; idx < MAX_KEYS; idx++) \ - { \ - if (kp_report.boot.keys[idx + KEY_OFFSET] != match) \ - { \ - continue; \ - } \ - kp_report.boot.keys[idx + KEY_OFFSET] = val; \ - break; \ +#define TOGGLE_KEYPAD(match, val) \ + for (int idx = 0; idx < ZMK_HID_KEYPAD_NKRO_SIZE; idx++) { \ + if (kp_report.body.keys[idx] != match) { \ + continue; \ + } \ + kp_report.body.keys[idx] = val; \ + break; \ } -*/ - -#define TOGGLE_KEY(code, val) WRITE_BIT(kp_report.body.keys[code / 8], code % 8, val) #define TOGGLE_CONSUMER(match, val) \ for (int idx = 0; idx < MAX_KEYS; idx++) { \ @@ -66,15 +59,7 @@ int zmk_hid_keypad_press(zmk_key code) { if (code >= LCTL && code <= RGUI) { return zmk_hid_register_mod(code - LCTL); } - - if (code > ZMK_HID_MAX_KEYCODE) { - return -EINVAL; - } - - // TOGGLE_BOOT_KEY(0U, code); - - TOGGLE_KEY(code, true); - + TOGGLE_KEYPAD(0U, code); return 0; }; @@ -82,15 +67,7 @@ int zmk_hid_keypad_release(zmk_key code) { if (code >= LCTL && code <= RGUI) { return zmk_hid_unregister_mod(code - LCTL); } - - if (code > ZMK_HID_MAX_KEYCODE) { - return -EINVAL; - } - - // TOGGLE_BOOT_KEY(0U, code); - - TOGGLE_KEY(code, false); - + TOGGLE_KEYPAD(code, 0U); return 0; }; From 8ce7d8de0133242d5896333add10be9ba2ae9363 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 27 Oct 2020 18:42:41 +0000 Subject: [PATCH 287/353] refactor(hid): Refactor consumer report to a configurable size --- app/include/zmk/hid.h | 8 +++++--- app/src/hid.c | 7 ++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index aa024dce..d09ffde4 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -15,6 +15,8 @@ #define ZMK_HID_KEYPAD_NKRO_SIZE 6 +#define ZMK_HID_CONSUMER_NKRO_SIZE 6 + static const u8_t zmk_hid_report_desc[] = { /* USAGE_PAGE (Generic Desktop) */ HID_GI_USAGE_PAGE, @@ -111,9 +113,9 @@ static const u8_t zmk_hid_report_desc[] = { /* REPORT_SIZE (8) */ HID_GI_REPORT_SIZE, 0x08, - /* REPORT_COUNT (8) */ + /* REPORT_COUNT (ZMK_HID_CONSUMER_NKRO_SIZE) */ HID_GI_REPORT_COUNT, - 0x06, + ZMK_HID_CONSUMER_NKRO_SIZE, HID_MI_INPUT, 0x00, /* END COLLECTION */ @@ -138,7 +140,7 @@ struct zmk_hid_keypad_report { } __packed; struct zmk_hid_consumer_report_body { - u8_t keys[6]; + u8_t keys[ZMK_HID_CONSUMER_NKRO_SIZE]; } __packed; struct zmk_hid_consumer_report { diff --git a/app/src/hid.c b/app/src/hid.c index 5e468329..28efee15 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -12,8 +12,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); static struct zmk_hid_keypad_report kp_report = {.report_id = 1, .body = {.modifiers = 0, .keys = {0}}}; -static struct zmk_hid_consumer_report consumer_report = {.report_id = 2, - .body = {.keys = {0, 0, 0, 0, 0, 0}}}; +static struct zmk_hid_consumer_report consumer_report = {.report_id = 2, .body = {.keys = {0}}}; #define _TOGGLE_MOD(mod, state) \ if (modifier > MOD_RGUI) { \ @@ -35,8 +34,6 @@ int zmk_hid_unregister_mods(zmk_mod_flags modifiers) { return 0; } -#define MAX_KEYS 6 - #define TOGGLE_KEYPAD(match, val) \ for (int idx = 0; idx < ZMK_HID_KEYPAD_NKRO_SIZE; idx++) { \ if (kp_report.body.keys[idx] != match) { \ @@ -47,7 +44,7 @@ int zmk_hid_unregister_mods(zmk_mod_flags modifiers) { } #define TOGGLE_CONSUMER(match, val) \ - for (int idx = 0; idx < MAX_KEYS; idx++) { \ + for (int idx = 0; idx < ZMK_HID_CONSUMER_NKRO_SIZE; idx++) { \ if (consumer_report.body.keys[idx] != match) { \ continue; \ } \ From 75b7f2a7c52614f21a417a1b6cef255e6aea00ee Mon Sep 17 00:00:00 2001 From: Nigel Rodriguez Date: Wed, 28 Oct 2020 06:55:00 +0800 Subject: [PATCH 288/353] Remove bt unpair combo + fix keymap --- app/boards/shields/boardsource3x4/boardsource3x4.keymap | 6 +++--- app/boards/shields/boardsource3x4/boardsource3x4.overlay | 6 ------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/app/boards/shields/boardsource3x4/boardsource3x4.keymap b/app/boards/shields/boardsource3x4/boardsource3x4.keymap index 031b7c97..dfeeadef 100644 --- a/app/boards/shields/boardsource3x4/boardsource3x4.keymap +++ b/app/boards/shields/boardsource3x4/boardsource3x4.keymap @@ -24,9 +24,9 @@ num_layer { bindings = < - &tog 1 &kp NUM_7 &kp NUM_8 &kp NUM_9 - &mo 2 &kp NUM_4 &kp NUM_5 &kp NUM_6 - < 3 NUM_0 &kp NUM_1 &kp NUM_2 &kp NUM_3 + &trans &kp NUM_7 &kp NUM_8 &kp NUM_9 + &trans &kp NUM_4 &kp NUM_5 &kp NUM_6 + < 3 NUM_0 &kp NUM_1 &kp NUM_2 &kp NUM_3 >; }; diff --git a/app/boards/shields/boardsource3x4/boardsource3x4.overlay b/app/boards/shields/boardsource3x4/boardsource3x4.overlay index d68ac30b..ad517940 100644 --- a/app/boards/shields/boardsource3x4/boardsource3x4.overlay +++ b/app/boards/shields/boardsource3x4/boardsource3x4.overlay @@ -28,11 +28,5 @@ , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> ; - }; - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - key-positions = <0 11>; - }; }; \ No newline at end of file From c402e953f6e9655898cd45af9b120d2a45dd45e0 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 27 Oct 2020 17:42:00 +0000 Subject: [PATCH 289/353] feat(hid): Make keypad report boot friendly Add missing byte to make keypad report boot friendly. --- app/include/zmk/hid.h | 14 ++++++++++++++ app/src/hid.c | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index d09ffde4..1ce5cc9b 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -56,6 +56,19 @@ static const u8_t zmk_hid_report_desc[] = { HID_MI_INPUT, 0x02, + /* USAGE_PAGE (Keypad) */ + HID_GI_USAGE_PAGE, + USAGE_GEN_DESKTOP_KEYPAD, + /* REPORT_SIZE (8) */ + HID_GI_REPORT_SIZE, + 0x08, + /* REPORT_COUNT (1) */ + HID_GI_REPORT_COUNT, + 0x01, + /* INPUT (Cnst,Var,Abs) */ + HID_MI_INPUT, + 0x03, + /* USAGE_PAGE (Keypad) */ HID_GI_USAGE_PAGE, USAGE_GEN_DESKTOP_KEYPAD, @@ -131,6 +144,7 @@ static const u8_t zmk_hid_report_desc[] = { struct zmk_hid_keypad_report_body { zmk_mod_flags modifiers; + u8_t _reserved; u8_t keys[ZMK_HID_KEYPAD_NKRO_SIZE]; } __packed; diff --git a/app/src/hid.c b/app/src/hid.c index 28efee15..207b1adf 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -9,8 +9,8 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include -static struct zmk_hid_keypad_report kp_report = {.report_id = 1, - .body = {.modifiers = 0, .keys = {0}}}; +static struct zmk_hid_keypad_report kp_report = { + .report_id = 1, .body = {.modifiers = 0, ._reserved = 0, .keys = {0}}}; static struct zmk_hid_consumer_report consumer_report = {.report_id = 2, .body = {.keys = {0}}}; From cb922fd8a2a3eddcbece040ca3727d43b171ffe3 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 27 Oct 2020 23:32:44 -0400 Subject: [PATCH 290/353] feat(docs): Add Boardsource 3x4 to hardware list. --- docs/docs/hardware.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/hardware.md b/docs/docs/hardware.md index e443211a..6df60195 100644 --- a/docs/docs/hardware.md +++ b/docs/docs/hardware.md @@ -31,6 +31,7 @@ That being said, there are currently only a few specific [boards](/docs/faq#what - [Reviung41](https://github.com/gtips/reviung/tree/master/reviung41) (`reviung41`) - [RoMac+ v4](https://www.littlekeyboards.com/products/romac) (`romac_plus`) - [RoMac v2](https://mechboards.co.uk/shop/kits/romac-macro-pad/) (`romac`) +- [Boardsource 3x4 Macro](https://boardsource.xyz/store/5ecc2008eee64242946c98c1) (`boardsource3x4`) - [QAZ](https://www.cbkbd.com/product/qaz-keyboard-kit) (`qaz`) ## Other Hardware From c5172e433752942026822d498a2c7d956f5237a5 Mon Sep 17 00:00:00 2001 From: Carey Date: Wed, 28 Oct 2020 07:47:22 -0500 Subject: [PATCH 291/353] move initialization priorities to advanced menu --- app/Kconfig | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/app/Kconfig b/app/Kconfig index e8bfa3c2..ed6244a2 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -30,16 +30,12 @@ config ZMK_USB select USB_DEVICE_STACK select USB_DEVICE_HID -if ZMK_USB - -config ZMK_USB_INIT_PRIORITY - int "USB Init Priority" - default 50 +if USB config USB_NUMOF_EP_WRITE_RETRIES default 10 -#ZMK_USB +#USB endif config ZMK_BLE @@ -56,10 +52,6 @@ config ZMK_BLE if ZMK_BLE -config ZMK_BLE_INIT_PRIORITY - int "BLE Init Priority" - default 50 - config SYSTEM_WORKQUEUE_STACK_SIZE default 2048 @@ -271,7 +263,32 @@ config ZMK_EXT_POWER #Power Management endmenu -menu "KSCAN Settings (Advanced)" +menu "Advanced" + +menu "Initialization Priorities" + +if USB + +config ZMK_USB_INIT_PRIORITY + int "USB Init Priority" + default 50 + +#USB +endif + +if ZMK_BLE || ZMK_SPLIT_BLE + +config ZMK_BLE_INIT_PRIORITY + int "BLE Init Priority" + default 50 + +#ZMK_BLE || ZMK_SPLIT_BLE +endif + +#Initialization Priorities +endmenu + +menu "KSCAN Settings" config ZMK_KSCAN_EVENT_QUEUE_SIZE int "Size of the event queue for KSCAN events to buffer events" @@ -285,7 +302,10 @@ config ZMK_KSCAN_COMPOSITE_DRIVER bool "Enable composite kscan driver to combine kscan devices" default n -#KSCAN Settings (Advanced) +#KSCAN Settings +endmenu + +#Advanced endmenu #ZMK From 1d369ffa73ae63af821d012b1c2ab4a07a5dc9c7 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sun, 11 Oct 2020 17:03:21 -0500 Subject: [PATCH 292/353] feat: only send HID reports to one endpoint Added some utility functions and an event for tracking the state of the USB connection. Updated endpoints.c to select a single endpoint to send HID reports to based on the status of the USB and BLE connections. Partially fixes #206. Future commits will add a user setting to control which endpoint is used if both USB and BLE are ready. --- app/CMakeLists.txt | 1 + .../zmk/events/usb-conn-state-changed.h | 20 +++ app/include/zmk/usb.h | 12 +- app/src/endpoints.c | 154 ++++++++++++++---- app/src/events/usb_conn_state_changed.c | 10 ++ app/src/power.c | 9 +- app/src/usb.c | 29 +++- 7 files changed, 190 insertions(+), 45 deletions(-) create mode 100644 app/include/zmk/events/usb-conn-state-changed.h create mode 100644 app/src/events/usb_conn_state_changed.c diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 8a3971e8..bce21700 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -37,6 +37,7 @@ target_sources(app PRIVATE src/events/keycode_state_changed.c) target_sources(app PRIVATE src/events/modifiers_state_changed.c) target_sources(app PRIVATE src/events/sensor_event.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/events/ble_active_profile_changed.c) +target_sources_ifdef(CONFIG_USB app PRIVATE src/events/usb_conn_state_changed.c) if (NOT CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) target_sources(app PRIVATE src/behaviors/behavior_key_press.c) target_sources(app PRIVATE src/behaviors/behavior_reset.c) diff --git a/app/include/zmk/events/usb-conn-state-changed.h b/app/include/zmk/events/usb-conn-state-changed.h new file mode 100644 index 00000000..d6cc6985 --- /dev/null +++ b/app/include/zmk/events/usb-conn-state-changed.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#include +#include + +#include +#include + +struct usb_conn_state_changed { + struct zmk_event_header header; + enum zmk_usb_conn_state conn_state; +}; + +ZMK_EVENT_DECLARE(usb_conn_state_changed); \ No newline at end of file diff --git a/app/include/zmk/usb.h b/app/include/zmk/usb.h index 452fd54d..30461de2 100644 --- a/app/include/zmk/usb.h +++ b/app/include/zmk/usb.h @@ -12,8 +12,18 @@ #include #include +enum zmk_usb_conn_state { + ZMK_USB_CONN_NONE, + ZMK_USB_CONN_POWERED, + ZMK_USB_CONN_HID, +}; + enum usb_dc_status_code zmk_usb_get_status(); +enum zmk_usb_conn_state zmk_usb_get_conn_state(); + +static inline bool zmk_usb_is_powered() { return zmk_usb_get_conn_state() != ZMK_USB_CONN_NONE; } +static inline bool zmk_usb_is_hid_ready() { return zmk_usb_get_conn_state() == ZMK_USB_CONN_HID; } #ifdef CONFIG_ZMK_USB -int zmk_usb_hid_send_report(u8_t *report, size_t len); +int zmk_usb_hid_send_report(const u8_t *report, size_t len); #endif /* CONFIG_ZMK_USB */ \ No newline at end of file diff --git a/app/src/endpoints.c b/app/src/endpoints.c index 79d294ef..4f56aa5c 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -8,54 +8,138 @@ #include #include #include +#include +#include #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); +enum endpoint { + ENDPOINT_USB, + ENDPOINT_BLE, +}; + +static enum endpoint current_endpoint = + COND_CODE_1(IS_ENABLED(CONFIG_ZMK_BLE), (ENDPOINT_BLE), (ENDPOINT_USB)); + +static int send_keypad_report() { + struct zmk_hid_keypad_report *keypad_report = zmk_hid_get_keypad_report(); + + switch (current_endpoint) { +#if IS_ENABLED(CONFIG_ZMK_USB) + case ENDPOINT_USB: { + int err = zmk_usb_hid_send_report((u8_t *)keypad_report, sizeof(*keypad_report)); + if (err) { + LOG_ERR("FAILED TO SEND OVER USB: %d", err); + } + return err; + } +#endif /* IS_ENABLED(CONFIG_ZMK_USB) */ + +#if IS_ENABLED(CONFIG_ZMK_BLE) + case ENDPOINT_BLE: { + int err = zmk_hog_send_keypad_report(&keypad_report->body); + if (err) { + LOG_ERR("FAILED TO SEND OVER HOG: %d", err); + } + return err; + } +#endif /* IS_ENABLED(CONFIG_ZMK_BLE) */ + + default: + LOG_ERR("Unsupported endpoint %d", current_endpoint); + return -ENOTSUP; + } +} + +static int send_consumer_report() { + struct zmk_hid_consumer_report *consumer_report = zmk_hid_get_consumer_report(); + + switch (current_endpoint) { +#if IS_ENABLED(CONFIG_ZMK_USB) + case ENDPOINT_USB: { + int err = zmk_usb_hid_send_report((u8_t *)consumer_report, sizeof(*consumer_report)); + if (err) { + LOG_ERR("FAILED TO SEND OVER USB: %d", err); + } + return err; + } +#endif /* IS_ENABLED(CONFIG_ZMK_USB) */ + +#if IS_ENABLED(CONFIG_ZMK_BLE) + case ENDPOINT_BLE: { + int err = zmk_hog_send_consumer_report(&consumer_report->body); + if (err) { + LOG_ERR("FAILED TO SEND OVER HOG: %d", err); + } + return err; + } +#endif /* IS_ENABLED(CONFIG_ZMK_BLE) */ + + default: + LOG_ERR("Unsupported endpoint %d", current_endpoint); + return -ENOTSUP; + } +} + int zmk_endpoints_send_report(u8_t usage_page) { - int err; - struct zmk_hid_keypad_report *keypad_report; - struct zmk_hid_consumer_report *consumer_report; + LOG_DBG("usage page 0x%02X", usage_page); switch (usage_page) { case USAGE_KEYPAD: - keypad_report = zmk_hid_get_keypad_report(); -#ifdef CONFIG_ZMK_USB - if (zmk_usb_hid_send_report((u8_t *)keypad_report, sizeof(struct zmk_hid_keypad_report)) != - 0) { - LOG_DBG("USB Send Failed"); - } -#endif /* CONFIG_ZMK_USB */ - -#ifdef CONFIG_ZMK_BLE - err = zmk_hog_send_keypad_report(&keypad_report->body); - if (err) { - LOG_ERR("FAILED TO SEND OVER HOG: %d", err); - } -#endif /* CONFIG_ZMK_BLE */ - - break; + return send_keypad_report(); case USAGE_CONSUMER: - consumer_report = zmk_hid_get_consumer_report(); -#ifdef CONFIG_ZMK_USB - if (zmk_usb_hid_send_report((u8_t *)consumer_report, - sizeof(struct zmk_hid_consumer_report)) != 0) { - LOG_DBG("USB Send Failed"); - } -#endif /* CONFIG_ZMK_USB */ - -#ifdef CONFIG_ZMK_BLE - err = zmk_hog_send_consumer_report(&consumer_report->body); - if (err) { - LOG_ERR("FAILED TO SEND OVER HOG: %d", err); - } -#endif /* CONFIG_ZMK_BLE */ - - break; + return send_consumer_report(); default: LOG_ERR("Unsupported usage page %d", usage_page); return -ENOTSUP; } +} + +static bool is_usb_ready() { +#if IS_ENABLED(CONFIG_ZMK_USB) + return zmk_usb_is_hid_ready(); +#else + return false; +#endif +} + +static bool is_ble_ready() { +#if IS_ENABLED(CONFIG_ZMK_BLE) + return zmk_ble_active_profile_is_connected(); +#else + return false; +#endif +} + +static enum endpoint get_selected_endpoint() { + if (is_ble_ready()) { + if (is_usb_ready()) { + LOG_DBG("Both endpoints ready. Selecting USB"); + // TODO: add user setting to control this + return ENDPOINT_USB; + } + + return ENDPOINT_BLE; + } + + return ENDPOINT_USB; +} + +static int endpoint_listener(const struct zmk_event_header *eh) { + enum endpoint new_endpoint = get_selected_endpoint(); + + if (new_endpoint != current_endpoint) { + // TODO: send null report on previous endpoint + current_endpoint = new_endpoint; + LOG_INF("Endpoint changed: %d", current_endpoint); + } return 0; } + +ZMK_LISTENER(endpoint_listener, endpoint_listener); +#if IS_ENABLED(CONFIG_USB) +ZMK_SUBSCRIPTION(endpoint_listener, usb_conn_state_changed); +#endif +// TODO: add BLE state subscription \ No newline at end of file diff --git a/app/src/events/usb_conn_state_changed.c b/app/src/events/usb_conn_state_changed.c new file mode 100644 index 00000000..d845f6d7 --- /dev/null +++ b/app/src/events/usb_conn_state_changed.c @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include + +ZMK_EVENT_IMPL(usb_conn_state_changed); \ No newline at end of file diff --git a/app/src/power.c b/app/src/power.c index 73b3f123..bad54d28 100644 --- a/app/src/power.c +++ b/app/src/power.c @@ -23,14 +23,7 @@ static u32_t power_last_uptime; bool is_usb_power_present() { #ifdef CONFIG_USB - enum usb_dc_status_code usb_status = zmk_usb_get_status(); - switch (usb_status) { - case USB_DC_DISCONNECTED: - case USB_DC_UNKNOWN: - return false; - default: - return true; - } + return zmk_usb_is_powered(); #else return false; #endif /* CONFIG_USB */ diff --git a/app/src/usb.c b/app/src/usb.c index 434b3d4d..d4bc2e41 100644 --- a/app/src/usb.c +++ b/app/src/usb.c @@ -13,6 +13,8 @@ #include #include +#include +#include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -53,9 +55,34 @@ int zmk_usb_hid_send_report(const u8_t *report, size_t len) { #endif /* CONFIG_ZMK_USB */ +static void raise_usb_status_changed_event() { + struct usb_conn_state_changed *ev = new_usb_conn_state_changed(); + ev->conn_state = zmk_usb_get_conn_state(); + + ZMK_EVENT_RAISE(ev); +} + enum usb_dc_status_code zmk_usb_get_status() { return usb_status; } -void usb_status_cb(enum usb_dc_status_code status, const u8_t *params) { usb_status = status; }; +enum zmk_usb_conn_state zmk_usb_get_conn_state() { + switch (usb_status) { + case USB_DC_DISCONNECTED: + case USB_DC_UNKNOWN: + return ZMK_USB_CONN_NONE; + + case USB_DC_ERROR: + case USB_DC_RESET: + return ZMK_USB_CONN_POWERED; + + default: + return ZMK_USB_CONN_HID; + } +} + +void usb_status_cb(enum usb_dc_status_code status, const u8_t *params) { + usb_status = status; + raise_usb_status_changed_event(); +}; static int zmk_usb_init(struct device *_arg) { int usb_enable_ret; From 8f666cecc9717b3fbbe2f5f34375b6a45b8965fd Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sun, 11 Oct 2020 18:38:39 -0500 Subject: [PATCH 293/353] feat(endpoints): clear HID report on endpoint change This prevents stuck keys when switching endpoints by clearing everything in the HID report and sending one last report before switching to the new endpoint. --- app/include/zmk/hid.h | 2 ++ app/src/endpoints.c | 12 +++++++++++- app/src/hid.c | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index 744de98e..04b12e15 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -165,9 +165,11 @@ int zmk_hid_register_mods(zmk_mod_flags modifiers); int zmk_hid_unregister_mods(zmk_mod_flags modifiers); int zmk_hid_keypad_press(zmk_key key); int zmk_hid_keypad_release(zmk_key key); +void zmk_hid_keypad_clear(); int zmk_hid_consumer_press(zmk_key key); int zmk_hid_consumer_release(zmk_key key); +void zmk_hid_consumer_clear(); struct zmk_hid_keypad_report *zmk_hid_get_keypad_report(); struct zmk_hid_consumer_report *zmk_hid_get_consumer_report(); diff --git a/app/src/endpoints.c b/app/src/endpoints.c index 4f56aa5c..3acaba64 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -126,11 +126,21 @@ static enum endpoint get_selected_endpoint() { return ENDPOINT_USB; } +static void disconnect_current_endpoint() { + zmk_hid_keypad_clear(); + zmk_hid_consumer_clear(); + + zmk_endpoints_send_report(USAGE_KEYPAD); + zmk_endpoints_send_report(USAGE_CONSUMER); +} + static int endpoint_listener(const struct zmk_event_header *eh) { enum endpoint new_endpoint = get_selected_endpoint(); if (new_endpoint != current_endpoint) { - // TODO: send null report on previous endpoint + /* Cancel all current keypresses so keys don't stay held on the old endpoint. */ + disconnect_current_endpoint(); + current_endpoint = new_endpoint; LOG_INF("Endpoint changed: %d", current_endpoint); } diff --git a/app/src/hid.c b/app/src/hid.c index f80906cc..8f6c388d 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -94,6 +94,8 @@ int zmk_hid_keypad_release(zmk_key code) { return 0; }; +void zmk_hid_keypad_clear() { memset(&kp_report.body, 0, sizeof(kp_report.body)); } + int zmk_hid_consumer_press(zmk_key code) { TOGGLE_CONSUMER(0U, code); return 0; @@ -104,6 +106,8 @@ int zmk_hid_consumer_release(zmk_key code) { return 0; }; +void zmk_hid_consumer_clear() { memset(&consumer_report.body, 0, sizeof(consumer_report.body)); } + struct zmk_hid_keypad_report *zmk_hid_get_keypad_report() { return &kp_report; } From b538e605321791568aa25f0bd534ebcb30da92c2 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sat, 24 Oct 2020 13:39:02 -0500 Subject: [PATCH 294/353] feat(endpoints): update on BLE profile change Added zmk_ble_active_profile_is_connected() to allow code outside ble.c to check the status of the active profile, and changed the ble_active_profile_changed event to also notify when the active profile connects or disconnects. Changed endpoint selection to to also update when the active profile changes, connects, or disconnects. --- app/include/zmk/ble.h | 1 + app/src/ble.c | 26 +++++++++++++++++++++++--- app/src/endpoints.c | 24 ++++++++++++++++++------ 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/app/include/zmk/ble.h b/app/include/zmk/ble.h index 1cf71a77..56980c69 100644 --- a/app/include/zmk/ble.h +++ b/app/include/zmk/ble.h @@ -15,6 +15,7 @@ int zmk_ble_prof_prev(); int zmk_ble_prof_select(u8_t index); bt_addr_le_t *zmk_ble_active_profile_addr(); +bool zmk_ble_active_profile_is_connected(); char *zmk_ble_active_profile_name(); int zmk_ble_unpair_all(); diff --git a/app/src/ble.c b/app/src/ble.c index 9090582c..a79f7237 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -94,6 +94,12 @@ static void raise_profile_changed_event() { ZMK_EVENT_RAISE(ev); } +static void raise_profile_changed_event_callback(struct k_work *work) { + raise_profile_changed_event(); +} + +K_WORK_DEFINE(raise_profile_changed_event_work, raise_profile_changed_event_callback); + static bool active_profile_is_open() { return !bt_addr_le_cmp(&profiles[active_profile].peer, BT_ADDR_LE_ANY); } @@ -111,7 +117,7 @@ void set_profile_address(u8_t index, const bt_addr_le_t *addr) { raise_profile_changed_event(); } -bool active_profile_is_connected() { +bool zmk_ble_active_profile_is_connected() { struct bt_conn *conn; bt_addr_le_t *addr = zmk_ble_active_profile_addr(); if (!bt_addr_le_cmp(addr, BT_ADDR_LE_ANY)) { @@ -163,9 +169,9 @@ int update_advertising() { struct bt_conn *conn; enum advertising_type desired_adv = ZMK_ADV_NONE; - if (active_profile_is_open() || !active_profile_is_connected()) { + if (active_profile_is_open() || !zmk_ble_active_profile_is_connected()) { desired_adv = ZMK_ADV_CONN; - } else if (!active_profile_is_connected()) { + } else if (!zmk_ble_active_profile_is_connected()) { desired_adv = ZMK_ADV_CONN; // Need to fix directed advertising for privacy centrals. See // https://github.com/zephyrproject-rtos/zephyr/pull/14984 char @@ -327,6 +333,10 @@ static int ble_profiles_handle_set(const char *name, size_t len, settings_read_c struct settings_handler profiles_handler = {.name = "ble", .h_set = ble_profiles_handle_set}; #endif /* IS_ENABLED(CONFIG_SETTINGS) */ +static bool is_conn_active_profile(const struct bt_conn *conn) { + return bt_addr_le_cmp(bt_conn_get_dst(conn), &profiles[active_profile].peer) == 0; +} + static void connected(struct bt_conn *conn, u8_t err) { char addr[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); @@ -352,6 +362,11 @@ static void connected(struct bt_conn *conn, u8_t err) { } update_advertising(); + + if (is_conn_active_profile(conn)) { + LOG_DBG("Active profile connected"); + raise_profile_changed_event(); + } } static void disconnected(struct bt_conn *conn, u8_t reason) { @@ -364,6 +379,11 @@ static void disconnected(struct bt_conn *conn, u8_t reason) { // We need to do this in a work callback, otherwise the advertising update will still see the // connection for a profile as active, and not start advertising yet. k_work_submit(&update_advertising_work); + + if (is_conn_active_profile(conn)) { + LOG_DBG("Active profile disconnected"); + k_work_submit(&raise_profile_changed_event_work); + } } static void security_changed(struct bt_conn *conn, bt_security_t level, enum bt_security_err err) { diff --git a/app/src/endpoints.c b/app/src/endpoints.c index 3acaba64..56204a47 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -4,11 +4,13 @@ * SPDX-License-Identifier: MIT */ +#include #include #include #include #include #include +#include #include #include @@ -19,8 +21,9 @@ enum endpoint { ENDPOINT_BLE, }; -static enum endpoint current_endpoint = - COND_CODE_1(IS_ENABLED(CONFIG_ZMK_BLE), (ENDPOINT_BLE), (ENDPOINT_USB)); +#define DEFAULT_ENDPOINT COND_CODE_1(IS_ENABLED(CONFIG_ZMK_BLE), (ENDPOINT_BLE), (ENDPOINT_USB)) + +static enum endpoint current_endpoint = DEFAULT_ENDPOINT; static int send_keypad_report() { struct zmk_hid_keypad_report *keypad_report = zmk_hid_get_keypad_report(); @@ -115,15 +118,22 @@ static bool is_ble_ready() { static enum endpoint get_selected_endpoint() { if (is_ble_ready()) { if (is_usb_ready()) { - LOG_DBG("Both endpoints ready. Selecting USB"); + LOG_DBG("Both endpoints are ready."); // TODO: add user setting to control this return ENDPOINT_USB; } + LOG_DBG("Only BLE is ready."); return ENDPOINT_BLE; } - return ENDPOINT_USB; + if (is_usb_ready()) { + LOG_DBG("Only USB is ready."); + return ENDPOINT_USB; + } + + LOG_DBG("No endpoints are ready."); + return DEFAULT_ENDPOINT; } static void disconnect_current_endpoint() { @@ -149,7 +159,9 @@ static int endpoint_listener(const struct zmk_event_header *eh) { } ZMK_LISTENER(endpoint_listener, endpoint_listener); -#if IS_ENABLED(CONFIG_USB) +#if IS_ENABLED(CONFIG_ZMK_USB) ZMK_SUBSCRIPTION(endpoint_listener, usb_conn_state_changed); #endif -// TODO: add BLE state subscription \ No newline at end of file +#if IS_ENABLED(CONFIG_ZMK_BLE) +ZMK_SUBSCRIPTION(endpoint_listener, ble_active_profile_changed); +#endif \ No newline at end of file From 600bba25f049b1fa161b2372b2a47762164c7fcd Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Sat, 24 Oct 2020 16:28:58 -0500 Subject: [PATCH 295/353] feat(endpoints): add preferred endpoint setting Added a new setting to remember the user's preferred endpoint. When both USB and BLE are connected, the preferred endpoint will be used. Added a new behavior to control this setting. It supports commands: &end END_USB - Prefer USB output &end END_BLE - Prefer BLE output &end END_TOG - Toggle between USB and BLE --- app/CMakeLists.txt | 1 + app/dts/behaviors.dtsi | 1 + app/dts/behaviors/endpoints.dtsi | 9 ++ .../behaviors/zmk,behavior-endpoints.yaml | 10 ++ app/include/dt-bindings/zmk/endpoints.h | 13 ++ app/include/zmk/endpoints.h | 8 ++ app/src/behaviors/behavior_endpoints.c | 44 +++++++ app/src/endpoints.c | 112 +++++++++++++++--- docs/docs/behavior/endpoints.md | 59 +++++++++ docs/sidebars.js | 1 + 10 files changed, 239 insertions(+), 19 deletions(-) create mode 100644 app/dts/behaviors/endpoints.dtsi create mode 100644 app/dts/bindings/behaviors/zmk,behavior-endpoints.yaml create mode 100644 app/include/dt-bindings/zmk/endpoints.h create mode 100644 app/src/behaviors/behavior_endpoints.c create mode 100644 docs/docs/behavior/endpoints.md diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index bce21700..0c43b913 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -39,6 +39,7 @@ target_sources(app PRIVATE src/events/sensor_event.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/events/ble_active_profile_changed.c) target_sources_ifdef(CONFIG_USB app PRIVATE src/events/usb_conn_state_changed.c) if (NOT CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) + target_sources(app PRIVATE src/behaviors/behavior_endpoints.c) target_sources(app PRIVATE src/behaviors/behavior_key_press.c) target_sources(app PRIVATE src/behaviors/behavior_reset.c) target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c) diff --git a/app/dts/behaviors.dtsi b/app/dts/behaviors.dtsi index 36c918cf..4a507619 100644 --- a/app/dts/behaviors.dtsi +++ b/app/dts/behaviors.dtsi @@ -10,3 +10,4 @@ #include #include #include +#include diff --git a/app/dts/behaviors/endpoints.dtsi b/app/dts/behaviors/endpoints.dtsi new file mode 100644 index 00000000..f6cb64c1 --- /dev/null +++ b/app/dts/behaviors/endpoints.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + end: behavior_endpoints { + compatible = "zmk,behavior-endpoints"; + label = "ENDPOINTS"; + #binding-cells = <1>; + }; + }; +}; diff --git a/app/dts/bindings/behaviors/zmk,behavior-endpoints.yaml b/app/dts/bindings/behaviors/zmk,behavior-endpoints.yaml new file mode 100644 index 00000000..fdd76bbd --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-endpoints.yaml @@ -0,0 +1,10 @@ +# +# Copyright (c) 2020, The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +description: Endpoints Behavior + +compatible: "zmk,behavior-endpoints" + +include: one_param.yaml diff --git a/app/include/dt-bindings/zmk/endpoints.h b/app/include/dt-bindings/zmk/endpoints.h new file mode 100644 index 00000000..3bba972a --- /dev/null +++ b/app/include/dt-bindings/zmk/endpoints.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#define ENDPOINT_TOGGLE_CMD 0 +#define ENDPOINT_USB_CMD 1 +#define ENDPOINT_BLE_CMD 2 + +#define END_TOG ENDPOINT_TOGGLE_CMD +#define END_USB ENDPOINT_USB_CMD +#define END_BLE ENDPOINT_BLE_CMD \ No newline at end of file diff --git a/app/include/zmk/endpoints.h b/app/include/zmk/endpoints.h index aad6265b..aad688e7 100644 --- a/app/include/zmk/endpoints.h +++ b/app/include/zmk/endpoints.h @@ -9,4 +9,12 @@ #include #include +enum zmk_endpoint { + ZMK_ENDPOINT_USB, + ZMK_ENDPOINT_BLE, +}; + +int zmk_endpoints_select(enum zmk_endpoint endpoint); +int zmk_endpoints_toggle(); + int zmk_endpoints_send_report(u8_t usage_report); diff --git a/app/src/behaviors/behavior_endpoints.c b/app/src/behaviors/behavior_endpoints.c new file mode 100644 index 00000000..dd56fc11 --- /dev/null +++ b/app/src/behaviors/behavior_endpoints.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#define DT_DRV_COMPAT zmk_behavior_endpoints + +#include +#include +#include + +#include + +#include +#include + +#include +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, + struct zmk_behavior_binding_event event) { + switch (binding->param1) { + case ENDPOINT_TOGGLE_CMD: + return zmk_endpoints_toggle(); + case ENDPOINT_USB_CMD: + return zmk_endpoints_select(ZMK_ENDPOINT_USB); + case ENDPOINT_BLE_CMD: + return zmk_endpoints_select(ZMK_ENDPOINT_BLE); + default: + LOG_ERR("Unknown endpoints command: %d", binding->param1); + } + + return -ENOTSUP; +} + +static int behavior_ep_init(struct device *dev) { return 0; } + +static const struct behavior_driver_api behavior_endpoints_driver_api = { + .binding_pressed = on_keymap_binding_pressed, +}; + +DEVICE_AND_API_INIT(behavior_end, DT_INST_LABEL(0), behavior_ep_init, NULL, NULL, APPLICATION, + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_endpoints_driver_api); diff --git a/app/src/endpoints.c b/app/src/endpoints.c index 56204a47..0c795890 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -4,6 +4,9 @@ * SPDX-License-Identifier: MIT */ +#include +#include + #include #include #include @@ -16,21 +19,45 @@ #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -enum endpoint { - ENDPOINT_USB, - ENDPOINT_BLE, -}; +#define DEFAULT_ENDPOINT \ + COND_CODE_1(IS_ENABLED(CONFIG_ZMK_BLE), (ZMK_ENDPOINT_BLE), (ZMK_ENDPOINT_USB)) -#define DEFAULT_ENDPOINT COND_CODE_1(IS_ENABLED(CONFIG_ZMK_BLE), (ENDPOINT_BLE), (ENDPOINT_USB)) +static enum zmk_endpoint current_endpoint = DEFAULT_ENDPOINT; +static enum zmk_endpoint preferred_endpoint = + ZMK_ENDPOINT_USB; /* Used if multiple endpoints are ready */ -static enum endpoint current_endpoint = DEFAULT_ENDPOINT; +static void update_current_endpoint(); + +int zmk_endpoints_select(enum zmk_endpoint endpoint) { + LOG_DBG("Selected endpoint %d", endpoint); + + if (preferred_endpoint == endpoint) { + return 0; + } + + preferred_endpoint = endpoint; + +#if IS_ENABLED(CONFIG_SETTINGS) + settings_save_one("endpoints/preferred", &preferred_endpoint, sizeof(preferred_endpoint)); +#endif + + update_current_endpoint(); + + return 0; +} + +int zmk_endpoints_toggle() { + enum zmk_endpoint new_endpoint = + (preferred_endpoint == ZMK_ENDPOINT_USB) ? ZMK_ENDPOINT_BLE : ZMK_ENDPOINT_USB; + return zmk_endpoints_select(new_endpoint); +} static int send_keypad_report() { struct zmk_hid_keypad_report *keypad_report = zmk_hid_get_keypad_report(); switch (current_endpoint) { #if IS_ENABLED(CONFIG_ZMK_USB) - case ENDPOINT_USB: { + case ZMK_ENDPOINT_USB: { int err = zmk_usb_hid_send_report((u8_t *)keypad_report, sizeof(*keypad_report)); if (err) { LOG_ERR("FAILED TO SEND OVER USB: %d", err); @@ -40,7 +67,7 @@ static int send_keypad_report() { #endif /* IS_ENABLED(CONFIG_ZMK_USB) */ #if IS_ENABLED(CONFIG_ZMK_BLE) - case ENDPOINT_BLE: { + case ZMK_ENDPOINT_BLE: { int err = zmk_hog_send_keypad_report(&keypad_report->body); if (err) { LOG_ERR("FAILED TO SEND OVER HOG: %d", err); @@ -60,7 +87,7 @@ static int send_consumer_report() { switch (current_endpoint) { #if IS_ENABLED(CONFIG_ZMK_USB) - case ENDPOINT_USB: { + case ZMK_ENDPOINT_USB: { int err = zmk_usb_hid_send_report((u8_t *)consumer_report, sizeof(*consumer_report)); if (err) { LOG_ERR("FAILED TO SEND OVER USB: %d", err); @@ -70,7 +97,7 @@ static int send_consumer_report() { #endif /* IS_ENABLED(CONFIG_ZMK_USB) */ #if IS_ENABLED(CONFIG_ZMK_BLE) - case ENDPOINT_BLE: { + case ZMK_ENDPOINT_BLE: { int err = zmk_hog_send_consumer_report(&consumer_report->body); if (err) { LOG_ERR("FAILED TO SEND OVER HOG: %d", err); @@ -99,6 +126,49 @@ int zmk_endpoints_send_report(u8_t usage_page) { } } +#if IS_ENABLED(CONFIG_SETTINGS) + +static int endpoints_handle_set(const char *name, size_t len, settings_read_cb read_cb, + void *cb_arg) { + LOG_DBG("Setting endpoint value %s", log_strdup(name)); + + if (settings_name_steq(name, "preferred", NULL)) { + if (len != sizeof(enum zmk_endpoint)) { + LOG_ERR("Invalid endpoint size (got %d expected %d)", len, sizeof(enum zmk_endpoint)); + return -EINVAL; + } + + int err = read_cb(cb_arg, &preferred_endpoint, sizeof(enum zmk_endpoint)); + if (err <= 0) { + LOG_ERR("Failed to read preferred endpoint from settings (err %d)", err); + return err; + } + + update_current_endpoint(); + } + + return 0; +} + +struct settings_handler endpoints_handler = {.name = "endpoints", .h_set = endpoints_handle_set}; +#endif /* IS_ENABLED(CONFIG_SETTINGS) */ + +static int zmk_endpoints_init(struct device *_arg) { +#if IS_ENABLED(CONFIG_SETTINGS) + settings_subsys_init(); + + int err = settings_register(&endpoints_handler); + if (err) { + LOG_ERR("Failed to register the endpoints settings handler (err %d)", err); + return err; + } + + settings_load(); +#endif + + return 0; +} + static bool is_usb_ready() { #if IS_ENABLED(CONFIG_ZMK_USB) return zmk_usb_is_hid_ready(); @@ -115,21 +185,20 @@ static bool is_ble_ready() { #endif } -static enum endpoint get_selected_endpoint() { +static enum zmk_endpoint get_selected_endpoint() { if (is_ble_ready()) { if (is_usb_ready()) { - LOG_DBG("Both endpoints are ready."); - // TODO: add user setting to control this - return ENDPOINT_USB; + LOG_DBG("Both endpoints are ready. Using %d", preferred_endpoint); + return preferred_endpoint; } LOG_DBG("Only BLE is ready."); - return ENDPOINT_BLE; + return ZMK_ENDPOINT_BLE; } if (is_usb_ready()) { LOG_DBG("Only USB is ready."); - return ENDPOINT_USB; + return ZMK_ENDPOINT_USB; } LOG_DBG("No endpoints are ready."); @@ -144,8 +213,8 @@ static void disconnect_current_endpoint() { zmk_endpoints_send_report(USAGE_CONSUMER); } -static int endpoint_listener(const struct zmk_event_header *eh) { - enum endpoint new_endpoint = get_selected_endpoint(); +static void update_current_endpoint() { + enum zmk_endpoint new_endpoint = get_selected_endpoint(); if (new_endpoint != current_endpoint) { /* Cancel all current keypresses so keys don't stay held on the old endpoint. */ @@ -154,7 +223,10 @@ static int endpoint_listener(const struct zmk_event_header *eh) { current_endpoint = new_endpoint; LOG_INF("Endpoint changed: %d", current_endpoint); } +} +static int endpoint_listener(const struct zmk_event_header *eh) { + update_current_endpoint(); return 0; } @@ -164,4 +236,6 @@ ZMK_SUBSCRIPTION(endpoint_listener, usb_conn_state_changed); #endif #if IS_ENABLED(CONFIG_ZMK_BLE) ZMK_SUBSCRIPTION(endpoint_listener, ble_active_profile_changed); -#endif \ No newline at end of file +#endif + +SYS_INIT(zmk_endpoints_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); diff --git a/docs/docs/behavior/endpoints.md b/docs/docs/behavior/endpoints.md new file mode 100644 index 00000000..caedf3a6 --- /dev/null +++ b/docs/docs/behavior/endpoints.md @@ -0,0 +1,59 @@ +--- +title: Endpoint Behavior +sidebar_label: Endpoints +--- + +## Summary + +The endpoint behavior allows selecting whether keyboard input is sent to the +USB or bluetooth connection when both are connected. This allows connecting a +keyboard to USB for power but sending input to a different device over bluetooth. + +By default, keyboard input is sent to USB when both endpoints are connected. +Once you select a different endpoint, it will be remembered until you change it again. + +## Endpoints Command Defines + +Endpoints command defines are provided through the [`dt-bindings/zmk/endpoints.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/endpoints.h) +header, which is added at the top of the keymap file: + +``` +#include +``` + +This allows you to reference the actions defined in this header: + +| Define | Action | Alias | +| --------------------- | ---------------------------------------------------- | --------- | +| `ENDPOINT_USB_CMD` | Send keyboard input to USB | `END_USB` | +| `ENDPOINT_BLE_CMD` | Send keyboard input to the current bluetooth profile | `END_BLE` | +| `ENDPOINT_TOGGLE_CMD` | Toggle between USB and BLE | `END_TOG` | + +## Endpoints Behavior + +The endpoints behavior changes the preferred endpoint on press. + +### Behavior Binding + +- Reference: `&end` +- Parameter #1: Command, e.g. `END_BLE` + +### Example: + +1. Behavior binding to prefer sending keyboard input to USB + + ``` + &end END_USB + ``` + +1. Behavior binding to prefer sending keyboard input to the current bluetooth profile + + ``` + &end END_BLE + ``` + +1. Behavior binding to toggle between preferring USB and BLE + + ``` + &end END_TOG + ``` diff --git a/docs/sidebars.js b/docs/sidebars.js index 54f6576b..334a35df 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -22,6 +22,7 @@ module.exports = { "behavior/mod-tap", "behavior/reset", "behavior/bluetooth", + "behavior/endpoints", "behavior/lighting", "behavior/power", ], From 2fe1fbb526d9190e478999f36adbcfcf4a8847b2 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Tue, 27 Oct 2020 13:49:28 -0500 Subject: [PATCH 296/353] feat(endpoints): rename behavior to outputs "Outputs" is probably easier for most people to understand than "endpoints". --- app/CMakeLists.txt | 2 +- app/dts/behaviors.dtsi | 2 +- app/dts/behaviors/endpoints.dtsi | 9 --- app/dts/behaviors/outputs.dtsi | 9 +++ ...dpoints.yaml => zmk,behavior-outputs.yaml} | 4 +- app/include/dt-bindings/zmk/endpoints.h | 13 ---- app/include/dt-bindings/zmk/outputs.h | 13 ++++ ...ehavior_endpoints.c => behavior_outputs.c} | 20 +++---- docs/docs/behavior/endpoints.md | 59 ------------------- docs/docs/behavior/outputs.md | 59 +++++++++++++++++++ docs/sidebars.js | 2 +- 11 files changed, 96 insertions(+), 96 deletions(-) delete mode 100644 app/dts/behaviors/endpoints.dtsi create mode 100644 app/dts/behaviors/outputs.dtsi rename app/dts/bindings/behaviors/{zmk,behavior-endpoints.yaml => zmk,behavior-outputs.yaml} (58%) delete mode 100644 app/include/dt-bindings/zmk/endpoints.h create mode 100644 app/include/dt-bindings/zmk/outputs.h rename app/src/behaviors/{behavior_endpoints.c => behavior_outputs.c} (61%) delete mode 100644 docs/docs/behavior/endpoints.md create mode 100644 docs/docs/behavior/outputs.md diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 0c43b913..f76effc0 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -39,11 +39,11 @@ target_sources(app PRIVATE src/events/sensor_event.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/events/ble_active_profile_changed.c) target_sources_ifdef(CONFIG_USB app PRIVATE src/events/usb_conn_state_changed.c) if (NOT CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL) - target_sources(app PRIVATE src/behaviors/behavior_endpoints.c) target_sources(app PRIVATE src/behaviors/behavior_key_press.c) target_sources(app PRIVATE src/behaviors/behavior_reset.c) target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c) target_sources(app PRIVATE src/behaviors/behavior_momentary_layer.c) + target_sources(app PRIVATE src/behaviors/behavior_outputs.c) target_sources(app PRIVATE src/behaviors/behavior_toggle_layer.c) target_sources(app PRIVATE src/behaviors/behavior_transparent.c) target_sources(app PRIVATE src/behaviors/behavior_none.c) diff --git a/app/dts/behaviors.dtsi b/app/dts/behaviors.dtsi index 4a507619..a120b84b 100644 --- a/app/dts/behaviors.dtsi +++ b/app/dts/behaviors.dtsi @@ -10,4 +10,4 @@ #include #include #include -#include +#include diff --git a/app/dts/behaviors/endpoints.dtsi b/app/dts/behaviors/endpoints.dtsi deleted file mode 100644 index f6cb64c1..00000000 --- a/app/dts/behaviors/endpoints.dtsi +++ /dev/null @@ -1,9 +0,0 @@ -/ { - behaviors { - end: behavior_endpoints { - compatible = "zmk,behavior-endpoints"; - label = "ENDPOINTS"; - #binding-cells = <1>; - }; - }; -}; diff --git a/app/dts/behaviors/outputs.dtsi b/app/dts/behaviors/outputs.dtsi new file mode 100644 index 00000000..a534cbf9 --- /dev/null +++ b/app/dts/behaviors/outputs.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + out: behavior_outputs { + compatible = "zmk,behavior-outputs"; + label = "OUTPUTS"; + #binding-cells = <1>; + }; + }; +}; diff --git a/app/dts/bindings/behaviors/zmk,behavior-endpoints.yaml b/app/dts/bindings/behaviors/zmk,behavior-outputs.yaml similarity index 58% rename from app/dts/bindings/behaviors/zmk,behavior-endpoints.yaml rename to app/dts/bindings/behaviors/zmk,behavior-outputs.yaml index fdd76bbd..8bcefd94 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-endpoints.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-outputs.yaml @@ -3,8 +3,8 @@ # SPDX-License-Identifier: MIT # -description: Endpoints Behavior +description: Output Selection Behavior -compatible: "zmk,behavior-endpoints" +compatible: "zmk,behavior-outputs" include: one_param.yaml diff --git a/app/include/dt-bindings/zmk/endpoints.h b/app/include/dt-bindings/zmk/endpoints.h deleted file mode 100644 index 3bba972a..00000000 --- a/app/include/dt-bindings/zmk/endpoints.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2020 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - -#define ENDPOINT_TOGGLE_CMD 0 -#define ENDPOINT_USB_CMD 1 -#define ENDPOINT_BLE_CMD 2 - -#define END_TOG ENDPOINT_TOGGLE_CMD -#define END_USB ENDPOINT_USB_CMD -#define END_BLE ENDPOINT_BLE_CMD \ No newline at end of file diff --git a/app/include/dt-bindings/zmk/outputs.h b/app/include/dt-bindings/zmk/outputs.h new file mode 100644 index 00000000..c9a34ae0 --- /dev/null +++ b/app/include/dt-bindings/zmk/outputs.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#define OUTPUT_TOGGLE_CMD 0 +#define OUTPUT_USB_CMD 1 +#define OUTPUT_BLE_CMD 2 + +#define OUT_TOG OUTPUT_TOGGLE_CMD +#define OUT_USB OUTPUT_USB_CMD +#define OUT_BLE OUTPUT_BLE_CMD \ No newline at end of file diff --git a/app/src/behaviors/behavior_endpoints.c b/app/src/behaviors/behavior_outputs.c similarity index 61% rename from app/src/behaviors/behavior_endpoints.c rename to app/src/behaviors/behavior_outputs.c index dd56fc11..0e7ac490 100644 --- a/app/src/behaviors/behavior_endpoints.c +++ b/app/src/behaviors/behavior_outputs.c @@ -4,13 +4,13 @@ * SPDX-License-Identifier: MIT */ -#define DT_DRV_COMPAT zmk_behavior_endpoints +#define DT_DRV_COMPAT zmk_behavior_outputs #include #include #include -#include +#include #include #include @@ -21,24 +21,24 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, struct zmk_behavior_binding_event event) { switch (binding->param1) { - case ENDPOINT_TOGGLE_CMD: + case OUTPUT_TOGGLE_CMD: return zmk_endpoints_toggle(); - case ENDPOINT_USB_CMD: + case OUTPUT_USB_CMD: return zmk_endpoints_select(ZMK_ENDPOINT_USB); - case ENDPOINT_BLE_CMD: + case OUTPUT_BLE_CMD: return zmk_endpoints_select(ZMK_ENDPOINT_BLE); default: - LOG_ERR("Unknown endpoints command: %d", binding->param1); + LOG_ERR("Unknown output command: %d", binding->param1); } return -ENOTSUP; } -static int behavior_ep_init(struct device *dev) { return 0; } +static int behavior_out_init(struct device *dev) { return 0; } -static const struct behavior_driver_api behavior_endpoints_driver_api = { +static const struct behavior_driver_api behavior_outputs_driver_api = { .binding_pressed = on_keymap_binding_pressed, }; -DEVICE_AND_API_INIT(behavior_end, DT_INST_LABEL(0), behavior_ep_init, NULL, NULL, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_endpoints_driver_api); +DEVICE_AND_API_INIT(behavior_out, DT_INST_LABEL(0), behavior_out_init, NULL, NULL, APPLICATION, + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_outputs_driver_api); diff --git a/docs/docs/behavior/endpoints.md b/docs/docs/behavior/endpoints.md deleted file mode 100644 index caedf3a6..00000000 --- a/docs/docs/behavior/endpoints.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Endpoint Behavior -sidebar_label: Endpoints ---- - -## Summary - -The endpoint behavior allows selecting whether keyboard input is sent to the -USB or bluetooth connection when both are connected. This allows connecting a -keyboard to USB for power but sending input to a different device over bluetooth. - -By default, keyboard input is sent to USB when both endpoints are connected. -Once you select a different endpoint, it will be remembered until you change it again. - -## Endpoints Command Defines - -Endpoints command defines are provided through the [`dt-bindings/zmk/endpoints.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/endpoints.h) -header, which is added at the top of the keymap file: - -``` -#include -``` - -This allows you to reference the actions defined in this header: - -| Define | Action | Alias | -| --------------------- | ---------------------------------------------------- | --------- | -| `ENDPOINT_USB_CMD` | Send keyboard input to USB | `END_USB` | -| `ENDPOINT_BLE_CMD` | Send keyboard input to the current bluetooth profile | `END_BLE` | -| `ENDPOINT_TOGGLE_CMD` | Toggle between USB and BLE | `END_TOG` | - -## Endpoints Behavior - -The endpoints behavior changes the preferred endpoint on press. - -### Behavior Binding - -- Reference: `&end` -- Parameter #1: Command, e.g. `END_BLE` - -### Example: - -1. Behavior binding to prefer sending keyboard input to USB - - ``` - &end END_USB - ``` - -1. Behavior binding to prefer sending keyboard input to the current bluetooth profile - - ``` - &end END_BLE - ``` - -1. Behavior binding to toggle between preferring USB and BLE - - ``` - &end END_TOG - ``` diff --git a/docs/docs/behavior/outputs.md b/docs/docs/behavior/outputs.md new file mode 100644 index 00000000..50afac9c --- /dev/null +++ b/docs/docs/behavior/outputs.md @@ -0,0 +1,59 @@ +--- +title: Output Selection Behavior +sidebar_label: Output Selection +--- + +## Summary + +The output behavior allows selecting whether keyboard output is sent to the +USB or bluetooth connection when both are connected. This allows connecting a +keyboard to USB for power but outputting to a different device over bluetooth. + +By default, output is sent to USB when both USB and BLE are connected. +Once you select a different output, it will be remembered until you change it again. + +## Output Command Defines + +Output command defines are provided through the [`dt-bindings/zmk/outputs.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/outputs.h) +header, which is added at the top of the keymap file: + +``` +#include +``` + +This allows you to reference the actions defined in this header: + +| Define | Action | Alias | +| ------------------- | ----------------------------------------------- | --------- | +| `OUTPUT_USB_CMD` | Prefer sending to USB | `OUT_USB` | +| `OUTPUT_BLE_CMD` | Prefer sending to the current bluetooth profile | `OUT_BLE` | +| `OUTPUT_TOGGLE_CMD` | Toggle between USB and BLE | `OUT_TOG` | + +## Output Selection Behavior + +The output selection behavior changes the preferred output on press. + +### Behavior Binding + +- Reference: `&out` +- Parameter #1: Command, e.g. `OUT_BLE` + +### Example: + +1. Behavior binding to prefer sending keyboard output to USB + + ``` + &out OUT_USB + ``` + +1. Behavior binding to prefer sending keyboard output to the current bluetooth profile + + ``` + &out OUT_BLE + ``` + +1. Behavior binding to toggle between preferring USB and BLE + + ``` + &out OUT_TOG + ``` diff --git a/docs/sidebars.js b/docs/sidebars.js index 334a35df..c8dc79fc 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -22,7 +22,7 @@ module.exports = { "behavior/mod-tap", "behavior/reset", "behavior/bluetooth", - "behavior/endpoints", + "behavior/outputs", "behavior/lighting", "behavior/power", ], From 440d09fd45fa59de481837825d27635819ad1c37 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Wed, 28 Oct 2020 18:10:47 -0500 Subject: [PATCH 297/353] feat(endpoints): simplify behavior constants --- app/include/dt-bindings/zmk/outputs.h | 10 +++------- app/src/behaviors/behavior_outputs.c | 6 +++--- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app/include/dt-bindings/zmk/outputs.h b/app/include/dt-bindings/zmk/outputs.h index c9a34ae0..f24380f7 100644 --- a/app/include/dt-bindings/zmk/outputs.h +++ b/app/include/dt-bindings/zmk/outputs.h @@ -4,10 +4,6 @@ * SPDX-License-Identifier: MIT */ -#define OUTPUT_TOGGLE_CMD 0 -#define OUTPUT_USB_CMD 1 -#define OUTPUT_BLE_CMD 2 - -#define OUT_TOG OUTPUT_TOGGLE_CMD -#define OUT_USB OUTPUT_USB_CMD -#define OUT_BLE OUTPUT_BLE_CMD \ No newline at end of file +#define OUT_TOG 0 +#define OUT_USB 1 +#define OUT_BLE 2 \ No newline at end of file diff --git a/app/src/behaviors/behavior_outputs.c b/app/src/behaviors/behavior_outputs.c index 0e7ac490..e5182bd4 100644 --- a/app/src/behaviors/behavior_outputs.c +++ b/app/src/behaviors/behavior_outputs.c @@ -21,11 +21,11 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, struct zmk_behavior_binding_event event) { switch (binding->param1) { - case OUTPUT_TOGGLE_CMD: + case OUT_TOG: return zmk_endpoints_toggle(); - case OUTPUT_USB_CMD: + case OUT_USB: return zmk_endpoints_select(ZMK_ENDPOINT_USB); - case OUTPUT_BLE_CMD: + case OUT_BLE: return zmk_endpoints_select(ZMK_ENDPOINT_BLE); default: LOG_ERR("Unknown output command: %d", binding->param1); From 821f0540711158985eb38b360b1f1b422408ca31 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Wed, 28 Oct 2020 18:11:34 -0500 Subject: [PATCH 298/353] feat(endpoints): remove redundant connection check --- app/src/ble.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/ble.c b/app/src/ble.c index a79f7237..f3962ae0 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -169,7 +169,7 @@ int update_advertising() { struct bt_conn *conn; enum advertising_type desired_adv = ZMK_ADV_NONE; - if (active_profile_is_open() || !zmk_ble_active_profile_is_connected()) { + if (active_profile_is_open()) { desired_adv = ZMK_ADV_CONN; } else if (!zmk_ble_active_profile_is_connected()) { desired_adv = ZMK_ADV_CONN; From 7e0924107cf64e90812ca6f99dffa526a5052c6f Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sat, 31 Oct 2020 00:23:16 -0400 Subject: [PATCH 299/353] feat(docs): Link to outputs behavior docs. --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 547265a4..cb227a21 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -16,7 +16,7 @@ ZMK is currently missing some features found in other popular firmware. This tab | ---------------------------------------------------------------------------------------------------------------------- | :-: | :-------: | :-: | | Low Latency BLE Support | ✅ | ✅ | | | Multi-Device BLE Support | ✅ | | | -| USB Connectivity | ✅ | | ✅ | +| [USB Connectivity](behavior/outputs) | ✅ | | ✅ | | User Configuration Repositories | ✅ | | | | Split Keyboard Support | ✅ | ✅ | ✅ | | [Keymaps and Layers](behavior/layers) | ✅ | ✅ | ✅ | From 1766b090ee12dab95b4c4c5587a4d43468a48270 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sat, 31 Oct 2020 00:30:19 -0400 Subject: [PATCH 300/353] feat(docs): Warn of battery life impact of logging --- docs/docs/dev-guide-usb-logging.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/docs/dev-guide-usb-logging.md b/docs/docs/dev-guide-usb-logging.md index d0274d18..7f1fad72 100644 --- a/docs/docs/dev-guide-usb-logging.md +++ b/docs/docs/dev-guide-usb-logging.md @@ -12,6 +12,13 @@ If you are developing ZMK on a device that does not have a built in UART for deb Zephyr can be configured to create a USB CDC ACM device and the direct all `printk`, console output, and log messages to that device instead. +:::warning Battery Life Impact + +Enabling logging increases the power usage of your keyboard, and can have a non-trivial impact to your time on battery. +It is recommended to only enable logging when needed, and not leaving it on by default. + +::: + ## Kconfig The following KConfig values need to be set, either by copy and pasting into the `app/prj.conf` file, or by running From 3f4d47a06e5a2280a11a1735995e13b914ed9a6e Mon Sep 17 00:00:00 2001 From: Carey Date: Sat, 31 Oct 2020 07:24:38 -0500 Subject: [PATCH 301/353] focus on refactor --- .github/workflows/build.yml | 8 +------- app/Kconfig | 18 +++++------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5e7e23fd..e22dc653 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ jobs: name: Build Test strategy: matrix: - board: [nice_nano, bluemicro840_v1, nrfmicro_13] + board: [proton_c, nice_nano, bluemicro840_v1, nrfmicro_13] shield: - boardsource3x4 - corne_left @@ -29,12 +29,6 @@ jobs: include: - board: proton_c shield: clueboard_california - - board: proton_c - shield: romac - - board: proton_c - shield: romac_plus - - board: proton_c - shield: settings_reset steps: # To use this repository's private action, # you must check out the repository diff --git a/app/Kconfig b/app/Kconfig index ed6244a2..28d2aa2e 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -30,12 +30,12 @@ config ZMK_USB select USB_DEVICE_STACK select USB_DEVICE_HID -if USB +if ZMK_USB config USB_NUMOF_EP_WRITE_RETRIES default 10 -#USB +#ZMK_USB endif config ZMK_BLE @@ -86,17 +86,9 @@ if ZMK_SPLIT config ZMK_SPLIT_BLE bool "Split keyboard support via BLE transport" + depends on ZMK_BLE default y select BT_USER_PHY_UPDATE - select BT - select BT_SMP - select BT_SMP_SC_PAIR_ONLY - select BT_SMP_APP_PAIRING_ACCEPT - select BT_PERIPHERAL - select BT_GATT_DIS - select BT_GATT_BAS - select BT_SETTINGS - select SETTINGS if ZMK_SPLIT_BLE @@ -138,7 +130,7 @@ endif #ZMK_SPLIT endif -if ZMK_BLE || ZMK_SPLIT_BLE +if ZMK_BLE if ZMK_SPLIT_BLE && ZMK_SPLIT_BLE_ROLE_CENTRAL @@ -162,7 +154,7 @@ config BT_MAX_PAIRED #!ZMK_SPLIT_BLE endif -#ZMK_BLE || ZMK_SPLIT_BLE +#ZMK_BLE endif #Split Support From 4672a0cbb55d5fd5713bf019e91169d5636c8632 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sat, 31 Oct 2020 16:00:02 +0000 Subject: [PATCH 302/353] docs(outputs): run prettier on outputs.md (#317) Fixes #269 --- docs/docs/behavior/outputs.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/docs/behavior/outputs.md b/docs/docs/behavior/outputs.md index 50afac9c..324f6f40 100644 --- a/docs/docs/behavior/outputs.md +++ b/docs/docs/behavior/outputs.md @@ -42,18 +42,18 @@ The output selection behavior changes the preferred output on press. 1. Behavior binding to prefer sending keyboard output to USB - ``` - &out OUT_USB - ``` + ``` + &out OUT_USB + ``` 1. Behavior binding to prefer sending keyboard output to the current bluetooth profile - ``` - &out OUT_BLE - ``` + ``` + &out OUT_BLE + ``` 1. Behavior binding to toggle between preferring USB and BLE - ``` - &out OUT_TOG - ``` + ``` + &out OUT_TOG + ``` From 877956389642283ee6f72fcc64bbe1d0f74e3f98 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 27 Oct 2020 15:06:42 -0500 Subject: [PATCH 303/353] fix(bvd): Add SENSOR_CHAN_ALL support --- app/drivers/zephyr/battery_voltage_divider.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/drivers/zephyr/battery_voltage_divider.c b/app/drivers/zephyr/battery_voltage_divider.c index 37ac024b..b94e2a27 100644 --- a/app/drivers/zephyr/battery_voltage_divider.c +++ b/app/drivers/zephyr/battery_voltage_divider.c @@ -61,7 +61,9 @@ static int bvd_sample_fetch(struct device *dev, enum sensor_channel chan) { struct adc_sequence *as = &drv_data->as; // Make sure selected channel is supported - if (chan != SENSOR_CHAN_GAUGE_VOLTAGE && chan != SENSOR_CHAN_GAUGE_STATE_OF_CHARGE) { + if (chan != SENSOR_CHAN_GAUGE_VOLTAGE && chan != SENSOR_CHAN_GAUGE_STATE_OF_CHARGE && + chan != SENSOR_CHAN_ALL) { + LOG_DBG("Selected channel is not supported: %d.", chan); return -ENOTSUP; } From 74fa113d888c7ad8a7eecd6fa13e617052d0eb17 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 27 Oct 2020 15:08:18 -0500 Subject: [PATCH 304/353] fix(boards): Rename BVD labels --- app/boards/arm/bluemicro840/bluemicro840_v1.dts | 2 +- app/boards/arm/nice_nano/nice_nano.dts | 2 +- app/boards/arm/nrfmicro/nrfmicro_13.dts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/boards/arm/bluemicro840/bluemicro840_v1.dts b/app/boards/arm/bluemicro840/bluemicro840_v1.dts index 32aa2e6f..e77ba2fc 100644 --- a/app/boards/arm/bluemicro840/bluemicro840_v1.dts +++ b/app/boards/arm/bluemicro840/bluemicro840_v1.dts @@ -31,7 +31,7 @@ vbatt { compatible = "zmk,battery-voltage-divider"; - label = "VOLTAGE_DIVIDER"; + label = "BATTERY"; io-channels = <&adc 7>; output-ohms = <2000000>; full-ohms = <(2000000 + 806000)>; diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index 18195412..ba955ecf 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -37,7 +37,7 @@ vbatt { compatible = "zmk,battery-voltage-divider"; - label = "VOLTAGE_DIVIDER"; + label = "BATTERY"; io-channels = <&adc 2>; output-ohms = <2000000>; full-ohms = <(2000000 + 806000)>; diff --git a/app/boards/arm/nrfmicro/nrfmicro_13.dts b/app/boards/arm/nrfmicro/nrfmicro_13.dts index 5ae11ba0..01b8b95e 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_13.dts @@ -34,7 +34,7 @@ vbatt { compatible = "zmk,battery-voltage-divider"; - label = "VOLTAGE_DIVIDER"; + label = "BATTERY"; io-channels = <&adc 2>; output-ohms = <2000000>; full-ohms = <(2000000 + 820000)>; From 953de7164620581aeb360efa6f525da86d0fc799 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 27 Oct 2020 15:10:59 -0500 Subject: [PATCH 305/353] feat(battery): Add BAS GATT reporting --- app/CMakeLists.txt | 1 + app/src/battery.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 app/src/battery.c diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index f76effc0..7a12a812 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -54,6 +54,7 @@ endif() target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/behaviors/behavior_bt.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/battery.c) target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL app PRIVATE src/split_listener.c) target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL app PRIVATE src/split/bluetooth/service.c) target_sources_ifdef(CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL app PRIVATE src/split/bluetooth/central.c) diff --git a/app/src/battery.c b/app/src/battery.c new file mode 100644 index 00000000..0d66f223 --- /dev/null +++ b/app/src/battery.c @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include +#include + +#include + +LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +struct device *battery; + +static int zmk_battery_update(struct device *battery) { + struct sensor_value state_of_charge; + + int rc = sensor_sample_fetch_chan(battery, SENSOR_CHAN_GAUGE_STATE_OF_CHARGE); + + if (rc != 0) { + LOG_DBG("Failed to fetch battery values: %d", rc); + return rc; + } + + rc = sensor_channel_get(battery, SENSOR_CHAN_GAUGE_STATE_OF_CHARGE, &state_of_charge); + + if (rc != 0) { + LOG_DBG("Failed to get battery state of charge: %d", rc); + return rc; + } + + LOG_DBG("Setting BAS GATT battery level to %d.", state_of_charge.val1); + + return bt_gatt_bas_set_battery_level(state_of_charge.val1); +} + +static void zmk_battery_work(struct k_work *work) { + int rc = zmk_battery_update(battery); + + if (rc != 0) { + LOG_DBG("Failed to update battery value: %d.", rc); + } +} + +K_WORK_DEFINE(battery_work, zmk_battery_work); + +static void zmk_battery_timer(struct k_timer *timer) { k_work_submit(&battery_work); } + +K_TIMER_DEFINE(battery_timer, zmk_battery_timer, NULL); + +static int zmk_battery_init(struct device *_arg) { + battery = device_get_binding("BATTERY"); + + if (battery) { + LOG_DBG("Found battery reporting device."); + } else { + LOG_DBG("No battery device labelled BATTERY found."); + return -ENODEV; + } + + int rc = zmk_battery_update(battery); + + if (rc != 0) { + LOG_DBG("Failed to update battery value: %d.", rc); + return rc; + } + + k_timer_start(&battery_timer, K_MINUTES(1), K_MINUTES(1)); + + return 0; +} + +SYS_INIT(zmk_battery_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); From 89b8bfc95deac50f062f41d0a0bf47b5aa229126 Mon Sep 17 00:00:00 2001 From: Nick Winans Date: Wed, 28 Oct 2020 09:17:08 -0500 Subject: [PATCH 306/353] fix(battery): Only log if finding battery device failed Co-authored-by: Pete Johanson --- app/src/battery.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/battery.c b/app/src/battery.c index 0d66f223..9496570c 100644 --- a/app/src/battery.c +++ b/app/src/battery.c @@ -55,9 +55,7 @@ K_TIMER_DEFINE(battery_timer, zmk_battery_timer, NULL); static int zmk_battery_init(struct device *_arg) { battery = device_get_binding("BATTERY"); - if (battery) { - LOG_DBG("Found battery reporting device."); - } else { + if (battery == NULL) { LOG_DBG("No battery device labelled BATTERY found."); return -ENODEV; } From a32d14cc192f080b97ea06281278a122b435f9cd Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 1 Nov 2020 23:14:40 -0600 Subject: [PATCH 307/353] Add Github.com personal token to prerequisites. --- docs/docs/user-setup.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index 5a4921e8..1e1e1e8e 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -39,6 +39,7 @@ The remainder of this guide assumes the following prerequisites: 1. You have an active, working [GitHub](https://github.com/) account. 1. You have installed and configured the [`git`](https://git-scm.com/) version control tool. +1. You have locally configured git to access your github account. If using [personal access tokens](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token), please be sure it was created with the "workflow" scope option selected. :::note If you need to, a quick read of [Learn The Basics Of Git In Under 10 Minutes](https://www.freecodecamp.org/news/learn-the-basics-of-git-in-under-10-minutes-da548267cc91/) will help you get started. From 82a5736d0887c10e2be6e1a968ce9b3a4944a61a Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 2 Nov 2020 12:26:40 -0600 Subject: [PATCH 308/353] fix(boards): Remap flash to account for bootloader --- .../arm/bluemicro840/bluemicro840_v1.dts | 21 ++++++++++------- app/boards/arm/nice_nano/nice_nano.dts | 21 ++++++++++------- app/boards/arm/nrf52840_m2/nrf52840_m2.dts | 21 ++++++++++------- app/boards/arm/nrfmicro/nrfmicro_11.dts | 21 ++++++++++------- .../arm/nrfmicro/nrfmicro_11_flipped.dts | 23 +++++++++++-------- app/boards/arm/nrfmicro/nrfmicro_13.dts | 21 ++++++++++------- 6 files changed, 79 insertions(+), 49 deletions(-) diff --git a/app/boards/arm/bluemicro840/bluemicro840_v1.dts b/app/boards/arm/bluemicro840/bluemicro840_v1.dts index e77ba2fc..141dbe10 100644 --- a/app/boards/arm/bluemicro840/bluemicro840_v1.dts +++ b/app/boards/arm/bluemicro840/bluemicro840_v1.dts @@ -82,27 +82,32 @@ #address-cells = <1>; #size-cells = <1>; - boot_partition: partition@0 { - label = "adafruit_boot"; - reg = <0x000000000 0x0000C000>; + sd_partition: partition@0 { + label = "softdevice"; + reg = <0x00000000 0x00026000>; }; code_partition: partition@26000 { label = "code_partition"; - reg = <0x00026000 0x000d2000>; + reg = <0x00026000 0x000c6000>; }; /* - * The flash starting at 0x000f8000 and ending at - * 0x000fffff is reserved for use by the application. + * The flash starting at 0x000ec000 and ending at + * 0x000f3fff is reserved for use by the application. */ /* * Storage partition will be used by FCB/LittleFS/NVS * if enabled. */ - storage_partition: partition@f8000 { + storage_partition: partition@ec000 { label = "storage"; - reg = <0x000f8000 0x00008000>; + reg = <0x000ec000 0x00008000>; + }; + + boot_partition: partition@f4000 { + label = "adafruit_boot"; + reg = <0x000f4000 0x0000c000>; }; }; }; diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index ba955ecf..a9bdeb30 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -91,27 +91,32 @@ #address-cells = <1>; #size-cells = <1>; - boot_partition: partition@0 { - label = "adafruit_boot"; - reg = <0x000000000 0x0000C000>; + sd_partition: partition@0 { + label = "softdevice"; + reg = <0x00000000 0x00026000>; }; code_partition: partition@26000 { label = "code_partition"; - reg = <0x00026000 0x000d2000>; + reg = <0x00026000 0x000c6000>; }; /* - * The flash starting at 0x000f8000 and ending at - * 0x000fffff is reserved for use by the application. + * The flash starting at 0x000ec000 and ending at + * 0x000f3fff is reserved for use by the application. */ /* * Storage partition will be used by FCB/LittleFS/NVS * if enabled. */ - storage_partition: partition@f8000 { + storage_partition: partition@ec000 { label = "storage"; - reg = <0x000f8000 0x00008000>; + reg = <0x000ec000 0x00008000>; + }; + + boot_partition: partition@f4000 { + label = "adafruit_boot"; + reg = <0x000f4000 0x0000c000>; }; }; }; diff --git a/app/boards/arm/nrf52840_m2/nrf52840_m2.dts b/app/boards/arm/nrf52840_m2/nrf52840_m2.dts index fb5b0ff6..e998b391 100644 --- a/app/boards/arm/nrf52840_m2/nrf52840_m2.dts +++ b/app/boards/arm/nrf52840_m2/nrf52840_m2.dts @@ -71,27 +71,32 @@ #address-cells = <1>; #size-cells = <1>; - boot_partition: partition@0 { - label = "adafruit_boot"; - reg = <0x000000000 0x0000C000>; + sd_partition: partition@0 { + label = "softdevice"; + reg = <0x00000000 0x00026000>; }; code_partition: partition@26000 { label = "code_partition"; - reg = <0x00026000 0x000d2000>; + reg = <0x00026000 0x000c6000>; }; /* - * The flash starting at 0x000f8000 and ending at - * 0x000fffff is reserved for use by the application. + * The flash starting at 0x000ec000 and ending at + * 0x000f3fff is reserved for use by the application. */ /* * Storage partition will be used by FCB/LittleFS/NVS * if enabled. */ - storage_partition: partition@f8000 { + storage_partition: partition@ec000 { label = "storage"; - reg = <0x000f8000 0x00008000>; + reg = <0x000ec000 0x00008000>; + }; + + boot_partition: partition@f4000 { + label = "adafruit_boot"; + reg = <0x000f4000 0x0000c000>; }; }; }; diff --git a/app/boards/arm/nrfmicro/nrfmicro_11.dts b/app/boards/arm/nrfmicro/nrfmicro_11.dts index 87c650e1..0cec6628 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_11.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_11.dts @@ -72,27 +72,32 @@ #address-cells = <1>; #size-cells = <1>; - boot_partition: partition@0 { - label = "adafruit_boot"; - reg = <0x000000000 0x0000C000>; + sd_partition: partition@0 { + label = "softdevice"; + reg = <0x00000000 0x00026000>; }; code_partition: partition@26000 { label = "code_partition"; - reg = <0x00026000 0x000d2000>; + reg = <0x00026000 0x000c6000>; }; /* - * The flash starting at 0x000f8000 and ending at - * 0x000fffff is reserved for use by the application. + * The flash starting at 0x000ec000 and ending at + * 0x000f3fff is reserved for use by the application. */ /* * Storage partition will be used by FCB/LittleFS/NVS * if enabled. */ - storage_partition: partition@f8000 { + storage_partition: partition@ec000 { label = "storage"; - reg = <0x000f8000 0x00008000>; + reg = <0x000ec000 0x00008000>; + }; + + boot_partition: partition@f4000 { + label = "adafruit_boot"; + reg = <0x000f4000 0x0000c000>; }; }; }; diff --git a/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts b/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts index ea15b819..6c1bb6ae 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts @@ -72,27 +72,32 @@ #address-cells = <1>; #size-cells = <1>; - boot_partition: partition@0 { - label = "adafruit_boot"; - reg = <0x000000000 0x0000C000>; + sd_partition: partition@0 { + label = "softdevice"; + reg = <0x00000000 0x00026000>; }; code_partition: partition@26000 { label = "code_partition"; - reg = <0x00026000 0x000d2000>; + reg = <0x00026000 0x000c6000>; }; /* - * The flash starting at 0x000f8000 and ending at - * 0x000fffff is reserved for use by the application. + * The flash starting at 0x000ec000 and ending at + * 0x000f3fff is reserved for use by the application. */ /* * Storage partition will be used by FCB/LittleFS/NVS * if enabled. */ - storage_partition: partition@f8000 { + storage_partition: partition@ec000 { label = "storage"; - reg = <0x000f8000 0x00008000>; + reg = <0x000ec000 0x00008000>; + }; + + boot_partition: partition@f4000 { + label = "adafruit_boot"; + reg = <0x000f4000 0x0000c000>; }; }; -}; +}; \ No newline at end of file diff --git a/app/boards/arm/nrfmicro/nrfmicro_13.dts b/app/boards/arm/nrfmicro/nrfmicro_13.dts index 01b8b95e..2910980b 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_13.dts @@ -84,27 +84,32 @@ #address-cells = <1>; #size-cells = <1>; - boot_partition: partition@0 { - label = "adafruit_boot"; - reg = <0x000000000 0x0000C000>; + sd_partition: partition@0 { + label = "softdevice"; + reg = <0x00000000 0x00026000>; }; code_partition: partition@26000 { label = "code_partition"; - reg = <0x00026000 0x000d2000>; + reg = <0x00026000 0x000c6000>; }; /* - * The flash starting at 0x000f8000 and ending at - * 0x000fffff is reserved for use by the application. + * The flash starting at 0x000ec000 and ending at + * 0x000f3fff is reserved for use by the application. */ /* * Storage partition will be used by FCB/LittleFS/NVS * if enabled. */ - storage_partition: partition@f8000 { + storage_partition: partition@ec000 { label = "storage"; - reg = <0x000f8000 0x00008000>; + reg = <0x000ec000 0x00008000>; + }; + + boot_partition: partition@f4000 { + label = "adafruit_boot"; + reg = <0x000f4000 0x0000c000>; }; }; }; From e7cb863a4162b8d871cf0ba2fb2f298947682305 Mon Sep 17 00:00:00 2001 From: Chiyuan Zhang Date: Sun, 1 Nov 2020 13:22:34 -0800 Subject: [PATCH 309/353] update doc for new shield in user repo --- docs/docs/dev-guide-new-shield.md | 11 ++++++++++- docs/docs/dev-guide-usb-logging.md | 19 +++++++++++++++++++ docs/docs/user-setup.md | 6 ++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 94f7d1dd..b61ece92 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -27,6 +27,15 @@ ZMK support for split keyboards requires a few more files than single boards to ## New Shield Directory +:::note +This guide describes how to add shield to the ZMK main repository. If you are building firmware for your +own prototype or handwired keyboard, it is recommended to use your own user config repository. Follow the +[user setup guide](./user-setup.md) to create your user config repository first. When following the rest +of this guide, replace the `app/` directory in the ZMK main repository with the `config/` directory in your +user config repository. Form example, `app/boards/shields/` should now be +`config/boards/shields/`. +::: + Shields for Zephyr applications go into the `boards/shields/` directory; since ZMK's Zephyr application lives in the `app/` subdirectory of the repository, that means the new shield directory should be: ```bash @@ -66,7 +75,7 @@ that make sense to have different defaults when this shield is used. One main it that usually has a new default value set here is the `ZMK_KEYBOARD_NAME` value, which controls the display name of the device over USB and BLE. -The updated new default values should always be wrapped inside a conditional on the shield config name defined in the `Kconfig.shield` file. Here's the simplest example file: +The updated new default values should always be wrapped inside a conditional on the shield config name defined in the `Kconfig.shield` file. Here's the simplest example file. Note: do not make the keyboard name too long, otherwise the bluetooth advertising might fail and you will not be able to find your keyboard from your laptop / tablet. ``` if SHIELD_MY_BOARD diff --git a/docs/docs/dev-guide-usb-logging.md b/docs/docs/dev-guide-usb-logging.md index 7f1fad72..26706c2b 100644 --- a/docs/docs/dev-guide-usb-logging.md +++ b/docs/docs/dev-guide-usb-logging.md @@ -50,6 +50,13 @@ CONFIG_UART_CONSOLE_ON_DEV_NAME="CDC_ACM_0" CONFIG_USB_UART_DTR_WAIT=n ``` +:::note +If you are debugging your own keyboard in your [user config repository](./user-setup.md), use +`config/boards/shields//.conf` instead of `app/prj.conf`. In Github +Actions, you can search the `Kconfig file` build log to verify the options above have been enabled +for you successfully. +::: + ## Viewing Logs After flashing the updated ZMK image, the board should expose a USB CDC ACM device that you can connect to and view the logs. @@ -59,6 +66,7 @@ defaultValue="linux" values={[ {label: 'Linux', value: 'linux'}, {label: 'Windows', value: 'win'}, +{label: 'MacOS', value: 'macos'} ]}> @@ -79,6 +87,17 @@ On Windows, you can use [PuTTY](https://www.putty.org/). Once installed, use Dev If you already have the Ardunio IDE installed you can also use its built-in Serial Monitor. + + + +On MacOS, the device name is something like `/dev/tty.usbmodemXXXXX` where `XXXXX` is some numerical ID. +You can connect to the device with [tio](https://tio.github.io/) (can be installed via [Homebrew](https://formulae.brew.sh/formula/tio)): + +``` +sudo tio /dev/tty.usbmodem14401 +``` + +You should see tio printing `Disconnected` or `Connected` when you disconnect or reconnect the USB cable. diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index 1e1e1e8e..7f5348f0 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -33,6 +33,12 @@ Following the steps in this guide, you will: 1. Update the configuration flags for your user config, to enable/disable any ZMK features you would like to include. 1. Commit and push the updates to trigger a new GitHub Action run. +:::note +If you are building firmware for a new keyboard shield that is not included in the built-in +list of shields, you can choose any shield from the list that is similar to yours to generate the repository, +and edit / add necessary files according to the [guide for adding new keyboard shield](./dev-guide-new-shield.md). +::: + ## Prerequisites The remainder of this guide assumes the following prerequisites: From 9b941b7509b99539a133da14fc33a7cdb7853533 Mon Sep 17 00:00:00 2001 From: Chiyuan Zhang Date: Sun, 1 Nov 2020 14:21:40 -0800 Subject: [PATCH 310/353] tweak doc according to PR feedback --- docs/docs/dev-guide-new-shield.md | 2 +- docs/docs/dev-guide-usb-logging.md | 14 +++++++------- docs/docs/user-setup.md | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index b61ece92..fd407b7a 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -32,7 +32,7 @@ This guide describes how to add shield to the ZMK main repository. If you are bu own prototype or handwired keyboard, it is recommended to use your own user config repository. Follow the [user setup guide](./user-setup.md) to create your user config repository first. When following the rest of this guide, replace the `app/` directory in the ZMK main repository with the `config/` directory in your -user config repository. Form example, `app/boards/shields/` should now be +user config repository. For example, `app/boards/shields/` should now be `config/boards/shields/`. ::: diff --git a/docs/docs/dev-guide-usb-logging.md b/docs/docs/dev-guide-usb-logging.md index 26706c2b..adb2d661 100644 --- a/docs/docs/dev-guide-usb-logging.md +++ b/docs/docs/dev-guide-usb-logging.md @@ -24,6 +24,13 @@ It is recommended to only enable logging when needed, and not leaving it on by d The following KConfig values need to be set, either by copy and pasting into the `app/prj.conf` file, or by running `west build -t menuconfig` and manually enabling the various settings in that UI. +:::note +If you are debugging your own keyboard in your [user config repository](./user-setup.md), use +`config/boards/shields//.conf` instead of `app/prj.conf`. In Github +Actions, you can search the `Kconfig file` build log to verify the options above have been enabled +for you successfully. +::: + ``` # Turn on logging, and set ZMK logging to debug output CONFIG_LOG=y @@ -50,13 +57,6 @@ CONFIG_UART_CONSOLE_ON_DEV_NAME="CDC_ACM_0" CONFIG_USB_UART_DTR_WAIT=n ``` -:::note -If you are debugging your own keyboard in your [user config repository](./user-setup.md), use -`config/boards/shields//.conf` instead of `app/prj.conf`. In Github -Actions, you can search the `Kconfig file` build log to verify the options above have been enabled -for you successfully. -::: - ## Viewing Logs After flashing the updated ZMK image, the board should expose a USB CDC ACM device that you can connect to and view the logs. diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index 7f5348f0..566b62c4 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -33,12 +33,6 @@ Following the steps in this guide, you will: 1. Update the configuration flags for your user config, to enable/disable any ZMK features you would like to include. 1. Commit and push the updates to trigger a new GitHub Action run. -:::note -If you are building firmware for a new keyboard shield that is not included in the built-in -list of shields, you can choose any shield from the list that is similar to yours to generate the repository, -and edit / add necessary files according to the [guide for adding new keyboard shield](./dev-guide-new-shield.md). -::: - ## Prerequisites The remainder of this guide assumes the following prerequisites: @@ -109,6 +103,12 @@ Pick an MCU board: ### Keyboard Shield Selection +:::note +If you are building firmware for a new keyboard shield that is not included in the built-in +list of shields, you can choose any shield from the list that is similar to yours to generate the repository, +and edit / add necessary files according to the [guide for adding new keyboard shield](./dev-guide-new-shield.md). +::: + When prompted, enter the number for the corresponding keyboard shield you would like to target: ``` From a9e729b427800fab230fc1fcdacd3cbdb6bedc19 Mon Sep 17 00:00:00 2001 From: Chiyuan Zhang Date: Mon, 2 Nov 2020 20:17:56 -0800 Subject: [PATCH 311/353] make note about keyboard name more explicit --- docs/docs/dev-guide-new-shield.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index fd407b7a..7a0a248d 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -75,7 +75,11 @@ that make sense to have different defaults when this shield is used. One main it that usually has a new default value set here is the `ZMK_KEYBOARD_NAME` value, which controls the display name of the device over USB and BLE. -The updated new default values should always be wrapped inside a conditional on the shield config name defined in the `Kconfig.shield` file. Here's the simplest example file. Note: do not make the keyboard name too long, otherwise the bluetooth advertising might fail and you will not be able to find your keyboard from your laptop / tablet. +The updated new default values should always be wrapped inside a conditional on the shield config name defined in the `Kconfig.shield` file. Here's the simplest example file. + +:::warning +Do not make the keyboard name too long, otherwise the bluetooth advertising might fail and you will not be able to find your keyboard from your laptop / tablet. +::: ``` if SHIELD_MY_BOARD From 4f258efbf1602e212a808cc10915050a1b46e140 Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Wed, 2 Sep 2020 22:30:09 +0200 Subject: [PATCH 312/353] initial implementation for modifiers https://github.com/zmkfirmware/zmk/issues/86 --- app/include/dt-bindings/zmk/keys.h | 30 +++++++---- .../zmk/events/keycode-state-changed.h | 10 ++-- app/include/zmk/hid.h | 4 +- app/src/behaviors/behavior_hold_tap.c | 6 +-- app/src/hid.c | 49 +++++++++++++----- app/src/hid_listener.c | 51 +++++++------------ app/src/keymap.c | 1 - .../balanced/1-dn-up/keycode_events.snapshot | 4 +- .../2-dn-timer-up/keycode_events.snapshot | 4 +- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../many-nested/keycode_events.snapshot | 16 +++--- .../1-dn-up/keycode_events.snapshot | 4 +- .../2-dn-timer-up/keycode_events.snapshot | 4 +- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../1-dn-up/keycode_events.snapshot | 4 +- .../2-dn-timer-up/keycode_events.snapshot | 4 +- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- .../keycode_events.snapshot | 8 +-- app/tests/keypress/behavior_keymap.dtsi | 16 +----- .../cp-press-release/keycode_events.snapshot | 4 +- .../cp-press-release/native_posix.keymap | 2 +- .../kp-press-release/keycode_events.snapshot | 4 +- .../kp-press-release/native_posix.keymap | 5 +- .../events.patterns | 4 ++ .../keycode_events.snapshot | 17 +++++++ .../native_posix.keymap | 27 ++++++++++ .../kp-lctl-dn-lctl-up/events.patterns | 4 ++ .../keycode_events.snapshot | 9 ++++ .../kp-lctl-dn-lctl-up/native_posix.keymap | 25 +++++++++ .../events.patterns | 4 ++ .../keycode_events.snapshot | 18 +++++++ .../native_posix.keymap | 27 ++++++++++ .../events.patterns | 4 ++ .../keycode_events.snapshot | 18 +++++++ .../native_posix.keymap | 28 ++++++++++ .../events.patterns | 4 ++ .../keycode_events.snapshot | 8 +++ .../native_posix.keymap | 27 ++++++++++ .../pending | 9 ++++ .../events.patterns | 4 ++ .../keycode_events.snapshot | 8 +++ .../native_posix.keymap | 27 ++++++++++ .../events.patterns | 4 ++ .../keycode_events.snapshot | 13 +++++ .../native_posix.keymap | 27 ++++++++++ .../events.patterns | 4 ++ .../keycode_events.snapshot | 13 +++++ .../native_posix.keymap | 27 ++++++++++ .../early-key-release/keycode_events.snapshot | 4 +- .../normal/keycode_events.snapshot | 4 +- .../early-key-release/keycode_events.snapshot | 8 +-- .../normal/keycode_events.snapshot | 4 +- .../layered/keycode_events.snapshot | 4 +- docs/docs/feature/keymaps.md | 4 +- 77 files changed, 597 insertions(+), 229 deletions(-) create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/keycode_events.snapshot create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/keycode_events.snapshot create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/keycode_events.snapshot create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/keycode_events.snapshot create mode 100644 app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap create mode 100644 app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns create mode 100644 app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/keycode_events.snapshot create mode 100644 app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap create mode 100644 app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/pending create mode 100644 app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns create mode 100644 app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/keycode_events.snapshot create mode 100644 app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/native_posix.keymap create mode 100644 app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns create mode 100644 app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/keycode_events.snapshot create mode 100644 app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap create mode 100644 app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns create mode 100644 app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/keycode_events.snapshot create mode 100644 app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index a3b22297..5f59055e 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -3,7 +3,6 @@ * * SPDX-License-Identifier: MIT */ - #pragma once #define USAGE_KEYPAD 0x07 @@ -144,11 +143,24 @@ #define M_VOLU 0xE9 #define M_VOLD 0xEA -#define MOD_LCTL (1 << 0x00) -#define MOD_LSFT (1 << 0x01) -#define MOD_LALT (1 << 0x02) -#define MOD_LGUI (1 << 0x03) -#define MOD_RCTL (1 << 0x04) -#define MOD_RSFT (1 << 0x05) -#define MOD_RALT (1 << 0x06) -#define MOD_RGUI (1 << 0x07) \ No newline at end of file +#define MOD_LCTL 0x01 +#define MOD_LSFT 0x02 +#define MOD_LALT 0x04 +#define MOD_LGUI 0x08 +#define MOD_RCTL 0x10 +#define MOD_RSFT 0x20 +#define MOD_RALT 0x40 +#define MOD_RGUI 0x80 + +#define SELECT_MODS(keycode) (keycode >> 24) +#define STRIP_MODS(keycode) (keycode & ~(0xFF << 24)) +#define APPLY_MODS(mods, keycode) (mods << 24 | keycode) + +#define LC(keycode) APPLY_MODS(MOD_LCTL, keycode) +#define LS(keycode) APPLY_MODS(MOD_LSFT, keycode) +#define LA(keycode) APPLY_MODS(MOD_LALT, keycode) +#define LG(keycode) APPLY_MODS(MOD_LGUI, keycode) +#define RC(keycode) APPLY_MODS(MOD_RCTL, keycode) +#define RS(keycode) APPLY_MODS(MOD_RSFT, keycode) +#define RA(keycode) APPLY_MODS(MOD_RALT, keycode) +#define RG(keycode) APPLY_MODS(MOD_RGUI, keycode) diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h index 1e2c24e8..493f075b 100644 --- a/app/include/zmk/events/keycode-state-changed.h +++ b/app/include/zmk/events/keycode-state-changed.h @@ -7,22 +7,24 @@ #pragma once #include +#include #include struct keycode_state_changed { struct zmk_event_header header; u8_t usage_page; u32_t keycode; + u8_t implicit_modifiers; bool state; }; ZMK_EVENT_DECLARE(keycode_state_changed); -inline struct keycode_state_changed *create_keycode_state_changed(u8_t usage_page, u32_t keycode, - bool state) { +static inline struct keycode_state_changed *create_keycode_state_changed(u8_t usage_page, u32_t keycode, bool state) { struct keycode_state_changed *ev = new_keycode_state_changed(); ev->usage_page = usage_page; - ev->keycode = keycode; + ev->keycode = STRIP_MODS(keycode); + ev->implicit_modifiers = SELECT_MODS(keycode); ev->state = state; return ev; -} \ No newline at end of file +} diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index fd09a6f4..2426c2db 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -164,8 +164,8 @@ struct zmk_hid_consumer_report { int zmk_hid_register_mod(zmk_mod modifier); int zmk_hid_unregister_mod(zmk_mod modifier); -int zmk_hid_register_mods(zmk_mod_flags modifiers); -int zmk_hid_unregister_mods(zmk_mod_flags modifiers); +int zmk_hid_implicit_modifiers_press(zmk_mod_flags implicit_modifiers); +int zmk_hid_implicit_modifiers_release(); int zmk_hid_keypad_press(zmk_key key); int zmk_hid_keypad_release(zmk_key key); void zmk_hid_keypad_clear(); diff --git a/app/src/behaviors/behavior_hold_tap.c b/app/src/behaviors/behavior_hold_tap.c index 8b3620ef..ac91e7de 100644 --- a/app/src/behaviors/behavior_hold_tap.c +++ b/app/src/behaviors/behavior_hold_tap.c @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -16,7 +17,6 @@ #include #include #include -#include #include LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -427,7 +427,7 @@ static int position_state_changed_listener(const struct zmk_event_header *eh) { return ZMK_EV_EVENT_CAPTURED; } -static bool is_mod(struct keycode_state_changed *ev) { +static inline bool only_mods(struct keycode_state_changed *ev) { return ev->usage_page == USAGE_KEYPAD && ev->keycode >= LCTL && ev->keycode <= RGUI; } @@ -440,7 +440,7 @@ static int keycode_state_changed_listener(const struct zmk_event_header *eh) { return 0; } - if (!is_mod(ev)) { + if (!only_mods(ev)) { // LOG_DBG("0x%02X bubble (not a mod)", ev->keycode); return 0; } diff --git a/app/src/hid.c b/app/src/hid.c index 216cec7a..001d7d31 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -8,29 +8,44 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include +#include static struct zmk_hid_keypad_report kp_report = { .report_id = 1, .body = {.modifiers = 0, ._reserved = 0, .keys = {0}}}; static struct zmk_hid_consumer_report consumer_report = {.report_id = 2, .body = {.keys = {0}}}; -#define _TOGGLE_MOD(mod, state) \ - if (modifier > MOD_RGUI) { \ - return -EINVAL; \ - } \ - WRITE_BIT(kp_report.body.modifiers, mod, state); \ - return 0; +// Keep track of how often a modifier was pressed. +// Only release the modifier if the count is 0. +static int explicit_modifier_counts[8] = {0, 0, 0, 0, 0, 0, 0, 0}; +static zmk_mod_flags explicit_modifiers = 0; -int zmk_hid_register_mod(zmk_mod modifier) { _TOGGLE_MOD(modifier, true); } -int zmk_hid_unregister_mod(zmk_mod modifier) { _TOGGLE_MOD(modifier, false); } +#define SET_MODIFIERS(mods) \ + { \ + kp_report.body.modifiers = mods; \ + LOG_DBG("Modifiers set to 0x%02X", kp_report.body.modifiers); \ + } -int zmk_hid_register_mods(zmk_mod_flags modifiers) { - kp_report.body.modifiers |= modifiers; +int zmk_hid_register_mod(zmk_mod modifier) { + explicit_modifier_counts[modifier]++; + LOG_DBG("Modifier %d count %d", modifier, explicit_modifier_counts[modifier]); + WRITE_BIT(explicit_modifiers, modifier, true); + SET_MODIFIERS(explicit_modifiers); return 0; } -int zmk_hid_unregister_mods(zmk_mod_flags modifiers) { - kp_report.body.modifiers &= ~modifiers; +int zmk_hid_unregister_mod(zmk_mod modifier) { + if (explicit_modifier_counts[modifier] <= 0) { + LOG_ERR("Tried to unregister modifier %d too often", modifier); + return -EINVAL; + } + explicit_modifier_counts[modifier]--; + LOG_DBG("Modifier %d count: %d", modifier, explicit_modifier_counts[modifier]); + if (explicit_modifier_counts[modifier] == 0) { + LOG_DBG("Modifier %d released", modifier); + WRITE_BIT(explicit_modifiers, modifier, false); + } + SET_MODIFIERS(explicit_modifiers); return 0; } @@ -52,6 +67,16 @@ int zmk_hid_unregister_mods(zmk_mod_flags modifiers) { break; \ } +int zmk_hid_implicit_modifiers_press(zmk_mod_flags implicit_modifiers) { + SET_MODIFIERS(explicit_modifiers | implicit_modifiers); + return 0; +} + +int zmk_hid_implicit_modifiers_release() { + SET_MODIFIERS(explicit_modifiers); + return 0; +} + int zmk_hid_keypad_press(zmk_key code) { if (code >= LCTL && code <= RGUI) { return zmk_hid_register_mod(code - LCTL); diff --git a/app/src/hid_listener.c b/app/src/hid_listener.c index 4467e6d4..32e9d97b 100644 --- a/app/src/hid_listener.c +++ b/app/src/hid_listener.c @@ -15,10 +15,11 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include -static int hid_listener_keycode_pressed(u8_t usage_page, u32_t keycode) { +static int hid_listener_keycode_pressed(u8_t usage_page, u32_t keycode, + zmk_mod_flags implicit_modifiers) { int err; - LOG_DBG("usage_page 0x%02X keycode 0x%02X", usage_page, keycode); - + LOG_DBG("usage_page 0x%02X keycode 0x%02X mods 0x%02X", usage_page, keycode, + implicit_modifiers); switch (usage_page) { case USAGE_KEYPAD: err = zmk_hid_keypad_press(keycode); @@ -35,14 +36,15 @@ static int hid_listener_keycode_pressed(u8_t usage_page, u32_t keycode) { } break; } - + zmk_hid_implicit_modifiers_press(implicit_modifiers); return zmk_endpoints_send_report(usage_page); } -static int hid_listener_keycode_released(u8_t usage_page, u32_t keycode) { +static int hid_listener_keycode_released(u8_t usage_page, u32_t keycode, + zmk_mod_flags implicit_modifiers) { int err; - LOG_DBG("usage_page 0x%02X keycode 0x%02X", usage_page, keycode); - + LOG_DBG("usage_page 0x%02X keycode 0x%02X mods 0x%02X", usage_page, keycode, + implicit_modifiers); switch (usage_page) { case USAGE_KEYPAD: err = zmk_hid_keypad_release(keycode); @@ -57,44 +59,27 @@ static int hid_listener_keycode_released(u8_t usage_page, u32_t keycode) { LOG_ERR("Unable to release keycode"); return err; } - break; } + // There is a minor issue with this code. + // If LC(A) is pressed, then LS(B), then LC(A) is released, the shift for B will be released + // prematurely. This causes if LS(B) to repeat like Bbbbbbbb when pressed for a long time. + // Solving this would require keeping track of which key's implicit modifiers are currently + // active and only releasing modifiers at that time. + zmk_hid_implicit_modifiers_release(); return zmk_endpoints_send_report(usage_page); } -static int hid_listener_modifiers_pressed(zmk_mod_flags modifiers) { - LOG_DBG("modifiers %d", modifiers); - - zmk_hid_register_mods(modifiers); - return zmk_endpoints_send_report(USAGE_KEYPAD); -} - -static int hid_listener_modifiers_released(zmk_mod_flags modifiers) { - LOG_DBG("modifiers %d", modifiers); - - zmk_hid_unregister_mods(modifiers); - return zmk_endpoints_send_report(USAGE_KEYPAD); -} - int hid_listener(const struct zmk_event_header *eh) { if (is_keycode_state_changed(eh)) { const struct keycode_state_changed *ev = cast_keycode_state_changed(eh); if (ev->state) { - hid_listener_keycode_pressed(ev->usage_page, ev->keycode); + hid_listener_keycode_pressed(ev->usage_page, ev->keycode, ev->implicit_modifiers); } else { - hid_listener_keycode_released(ev->usage_page, ev->keycode); - } - } else if (is_modifiers_state_changed(eh)) { - const struct modifiers_state_changed *ev = cast_modifiers_state_changed(eh); - if (ev->state) { - hid_listener_modifiers_pressed(ev->modifiers); - } else { - hid_listener_modifiers_released(ev->modifiers); + hid_listener_keycode_released(ev->usage_page, ev->keycode, ev->implicit_modifiers); } } return 0; } ZMK_LISTENER(hid_listener, hid_listener); -ZMK_SUBSCRIPTION(hid_listener, keycode_state_changed); -ZMK_SUBSCRIPTION(hid_listener, modifiers_state_changed); \ No newline at end of file +ZMK_SUBSCRIPTION(hid_listener, keycode_state_changed); \ No newline at end of file diff --git a/app/src/keymap.c b/app/src/keymap.c index 74fe60db..1d289e51 100644 --- a/app/src/keymap.c +++ b/app/src/keymap.c @@ -11,7 +11,6 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include #include -#include #include #include diff --git a/app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot index 5f6a2668..c088e5e6 100644 --- a/app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot @@ -1,5 +1,5 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (balanced event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot index ddda1ae4..a8b5d1fe 100644 --- a/app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot @@ -1,5 +1,5 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot index a4351030..ca458c7b 100644 --- a/app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0xe4 +kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (balanced event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0xe4 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe4 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot index c0da94fd..ef4dfa5f 100644 --- a/app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0xe4 +kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe4 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe4 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot index ce6e7b7c..70a3353d 100644 --- a/app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0x07 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 ht_decide: 0 decided tap (balanced event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot index 1ec384a6..121f0071 100644 --- a/app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0x07 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 ht_decide: 0 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot index 8a1980b8..ae9dcc96 100644 --- a/app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot @@ -1,10 +1,10 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_pressed: 1 new undecided hold_tap ht_decide: 1 decided tap (balanced event 0) -kp_pressed: usage_page 0x07 keycode 0x0d -kp_released: usage_page 0x07 keycode 0x0d +kp_pressed: usage_page 0x07 keycode 0x0d mods 0x00 +kp_released: usage_page 0x07 keycode 0x0d mods 0x00 ht_binding_released: 1 cleaning up hold-tap -kp_released: usage_page 0x07 keycode 0xe1 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot index b89b21dc..c1e03ad2 100644 --- a/app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot index 798e2eed..95330e69 100644 --- a/app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (balanced event 2) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot index 798e2eed..95330e69 100644 --- a/app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (balanced event 2) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot b/app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot index 5c9f4e33..63219ee0 100644 --- a/app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (balanced event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 diff --git a/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot b/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot index 806896fb..dda02ddf 100644 --- a/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot +++ b/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot @@ -1,20 +1,20 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_pressed: 1 new undecided hold_tap ht_decide: 1 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe0 +kp_pressed: usage_page 0x07 keycode 0xe0 mods 0x00 ht_binding_pressed: 2 new undecided hold_tap ht_binding_released: 0 cleaning up hold-tap ht_decide: 2 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe3 +kp_pressed: usage_page 0x07 keycode 0xe3 mods 0x00 ht_binding_pressed: 3 new undecided hold_tap ht_binding_released: 1 cleaning up hold-tap ht_decide: 3 decided hold (balanced event 3) -kp_pressed: usage_page 0x07 keycode 0xe2 -kp_released: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe0 -kp_released: usage_page 0x07 keycode 0xe3 +kp_pressed: usage_page 0x07 keycode 0xe2 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe0 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe3 mods 0x00 ht_binding_released: 2 cleaning up hold-tap -kp_released: usage_page 0x07 keycode 0xe2 +kp_released: usage_page 0x07 keycode 0xe2 mods 0x00 ht_binding_released: 3 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot index cf787d8d..2eb64758 100644 --- a/app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot @@ -1,5 +1,5 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (hold-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot index 03329d53..86517aa3 100644 --- a/app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot @@ -1,5 +1,5 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (hold-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot index adf4fe23..b7434c65 100644 --- a/app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0xe4 +kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (hold-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0xe4 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe4 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot index 69b64a96..ffb6aadd 100644 --- a/app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0xe4 +kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (hold-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe4 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe4 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot index b06a1d76..1254fedd 100644 --- a/app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0x07 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 ht_decide: 0 decided tap (hold-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot index bf31955b..ba7b48b3 100644 --- a/app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0x07 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 ht_decide: 0 decided hold (hold-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot index 3ed7de0d..c8acfc17 100644 --- a/app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot @@ -1,10 +1,10 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (hold-preferred event 1) -kp_pressed: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_pressed: 1 new undecided hold_tap ht_decide: 1 decided tap (hold-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x0d -kp_released: usage_page 0x07 keycode 0x0d +kp_pressed: usage_page 0x07 keycode 0x0d mods 0x00 +kp_released: usage_page 0x07 keycode 0x0d mods 0x00 ht_binding_released: 1 cleaning up hold-tap -kp_released: usage_page 0x07 keycode 0xe1 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot index e0b57fd4..97cd07bf 100644 --- a/app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (hold-preferred event 1) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot index e0b57fd4..97cd07bf 100644 --- a/app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (hold-preferred event 1) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot index e0b57fd4..97cd07bf 100644 --- a/app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (hold-preferred event 1) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot index cac579d2..2a21d929 100644 --- a/app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot +++ b/app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (hold-preferred event 1) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 diff --git a/app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot index 2a250fb8..57e4fcd7 100644 --- a/app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot @@ -1,5 +1,5 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (tap-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot index 4f1ee635..71ba8da4 100644 --- a/app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot @@ -1,5 +1,5 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (tap-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot index 87d1406a..0bc731f0 100644 --- a/app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0xe4 +kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (tap-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0xe4 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe4 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot index 7455d2a3..6a3398f4 100644 --- a/app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0xe4 +kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (tap-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe4 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe4 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot index 3d7eaf1a..e518582c 100644 --- a/app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0x07 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 ht_decide: 0 decided tap (tap-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot index 059d99c5..b3b06730 100644 --- a/app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ -kp_pressed: usage_page 0x07 keycode 0x07 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 ht_binding_pressed: 0 new undecided hold_tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 ht_decide: 0 decided hold (tap-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot index a8cf4907..7f454210 100644 --- a/app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot @@ -1,10 +1,10 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (tap-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_pressed: 1 new undecided hold_tap ht_decide: 1 decided tap (tap-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x0d -kp_released: usage_page 0x07 keycode 0x0d +kp_pressed: usage_page 0x07 keycode 0x0d mods 0x00 +kp_released: usage_page 0x07 keycode 0x0d mods 0x00 ht_binding_released: 1 cleaning up hold-tap -kp_released: usage_page 0x07 keycode 0xe1 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot index 92a3569a..ade0d3ea 100644 --- a/app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (tap-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot index 92a3569a..ade0d3ea 100644 --- a/app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided hold (tap-preferred event 3) -kp_pressed: usage_page 0x07 keycode 0xe1 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0xe1 +kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0xe1 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot index bc8aa8e3..418312c3 100644 --- a/app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (tap-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap diff --git a/app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot index b106f136..c0b4c0b7 100644 --- a/app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot +++ b/app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot @@ -1,7 +1,7 @@ ht_binding_pressed: 0 new undecided hold_tap ht_decide: 0 decided tap (tap-preferred event 0) -kp_pressed: usage_page 0x07 keycode 0x09 -kp_pressed: usage_page 0x07 keycode 0x07 -kp_released: usage_page 0x07 keycode 0x09 +kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00 +kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 mods 0x00 ht_binding_released: 0 cleaning up hold-tap -kp_released: usage_page 0x07 keycode 0x07 +kp_released: usage_page 0x07 keycode 0x07 mods 0x00 diff --git a/app/tests/keypress/behavior_keymap.dtsi b/app/tests/keypress/behavior_keymap.dtsi index 34c445cf..3a458092 100644 --- a/app/tests/keypress/behavior_keymap.dtsi +++ b/app/tests/keypress/behavior_keymap.dtsi @@ -9,20 +9,8 @@ default_layer { bindings = < - &kp B &mo 1 - &kp D &kp G>; - }; - - lower_layer { - bindings = < - &cp M_NEXT &trans - &kp L &kp J>; - }; - - raise_layer { - bindings = < - &kp W &kp U - &kp X &kp M>; + &kp B &none + &cp M_NEXT &none>; }; }; }; diff --git a/app/tests/keypress/cp-press-release/keycode_events.snapshot b/app/tests/keypress/cp-press-release/keycode_events.snapshot index f1ef0eda..95d24a49 100644 --- a/app/tests/keypress/cp-press-release/keycode_events.snapshot +++ b/app/tests/keypress/cp-press-release/keycode_events.snapshot @@ -1,2 +1,2 @@ -pressed: usage_page 0x0c keycode 0xb5 -released: usage_page 0x0c keycode 0xb5 +pressed: usage_page 0x0c keycode 0xb5 mods 0x00 +pressed: usage_page 0x0c keycode 0xb5 mods 0x00 diff --git a/app/tests/keypress/cp-press-release/native_posix.keymap b/app/tests/keypress/cp-press-release/native_posix.keymap index 0e86f935..bf93af7d 100644 --- a/app/tests/keypress/cp-press-release/native_posix.keymap +++ b/app/tests/keypress/cp-press-release/native_posix.keymap @@ -1,5 +1,5 @@ #include "../behavior_keymap.dtsi" &kscan { - events = ; + events = ; }; \ No newline at end of file diff --git a/app/tests/keypress/kp-press-release/keycode_events.snapshot b/app/tests/keypress/kp-press-release/keycode_events.snapshot index f1ef0eda..80cac202 100644 --- a/app/tests/keypress/kp-press-release/keycode_events.snapshot +++ b/app/tests/keypress/kp-press-release/keycode_events.snapshot @@ -1,2 +1,2 @@ -pressed: usage_page 0x0c keycode 0xb5 -released: usage_page 0x0c keycode 0xb5 +pressed: usage_page 0x07 keycode 0x05 mods 0x00 +released: usage_page 0x07 keycode 0x05 mods 0x00 diff --git a/app/tests/keypress/kp-press-release/native_posix.keymap b/app/tests/keypress/kp-press-release/native_posix.keymap index 7f736904..279b084d 100644 --- a/app/tests/keypress/kp-press-release/native_posix.keymap +++ b/app/tests/keypress/kp-press-release/native_posix.keymap @@ -1,8 +1,5 @@ -#include -#include -#include #include "../behavior_keymap.dtsi" &kscan { - events = ; + events = ; }; \ No newline at end of file diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns new file mode 100644 index 00000000..cbf21aff --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode_//p +s/.*hid_register_mod/reg/p +s/.*hid_unregister_mod/unreg/p +s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/keycode_events.snapshot b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/keycode_events.snapshot new file mode 100644 index 00000000..6218e650 --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/keycode_events.snapshot @@ -0,0 +1,17 @@ +pressed: usage_page 0x07 keycode 0xe0 mods 0x00 +reg: Modifier 0 count 1 +reg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +pressed: usage_page 0x07 keycode 0xe0 mods 0x00 +reg: Modifier 0 count 2 +reg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +released: usage_page 0x07 keycode 0xe0 mods 0x00 +unreg: Modifier 0 count: 1 +unreg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +released: usage_page 0x07 keycode 0xe0 mods 0x00 +unreg: Modifier 0 count: 0 +unreg: Modifier 0 released +unreg: Modifiers set to 0x00 +mods: Modifiers set to 0x00 diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap new file mode 100644 index 00000000..61500946 --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap @@ -0,0 +1,27 @@ +#include +#include +#include + + +&kscan { + events = < + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_RELEASE(0,0,10) + ZMK_MOCK_RELEASE(0,1,10) + >; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp LCTL &kp LCTL + &kp LSFT &none + >; + }; + }; +}; diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns new file mode 100644 index 00000000..cbf21aff --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode_//p +s/.*hid_register_mod/reg/p +s/.*hid_unregister_mod/unreg/p +s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/keycode_events.snapshot b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/keycode_events.snapshot new file mode 100644 index 00000000..42324284 --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/keycode_events.snapshot @@ -0,0 +1,9 @@ +pressed: usage_page 0x07 keycode 0xe0 mods 0x00 +reg: Modifier 0 count 1 +reg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +released: usage_page 0x07 keycode 0xe0 mods 0x00 +unreg: Modifier 0 count: 0 +unreg: Modifier 0 released +unreg: Modifiers set to 0x00 +mods: Modifiers set to 0x00 diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap new file mode 100644 index 00000000..3324584d --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap @@ -0,0 +1,25 @@ +#include +#include +#include + + +&kscan { + events = < + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp LCTL &kp LCTL + &kp LSFT &none + >; + }; + }; +}; diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns new file mode 100644 index 00000000..cbf21aff --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode_//p +s/.*hid_register_mod/reg/p +s/.*hid_unregister_mod/unreg/p +s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/keycode_events.snapshot b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/keycode_events.snapshot new file mode 100644 index 00000000..60d829a6 --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/keycode_events.snapshot @@ -0,0 +1,18 @@ +pressed: usage_page 0x07 keycode 0xe0 mods 0x00 +reg: Modifier 0 count 1 +reg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +reg: Modifier 1 count 1 +reg: Modifiers set to 0x03 +mods: Modifiers set to 0x03 +released: usage_page 0x07 keycode 0xe0 mods 0x00 +unreg: Modifier 0 count: 0 +unreg: Modifier 0 released +unreg: Modifiers set to 0x02 +mods: Modifiers set to 0x02 +released: usage_page 0x07 keycode 0xe1 mods 0x00 +unreg: Modifier 1 count: 0 +unreg: Modifier 1 released +unreg: Modifiers set to 0x00 +mods: Modifiers set to 0x00 diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap new file mode 100644 index 00000000..b6f96311 --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap @@ -0,0 +1,27 @@ +#include +#include +#include + + +&kscan { + events = < + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_RELEASE(0,0,10) + ZMK_MOCK_RELEASE(1,0,10) + >; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp LCTL &kp LCTL + &kp LSFT &none + >; + }; + }; +}; diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns new file mode 100644 index 00000000..cbf21aff --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode_//p +s/.*hid_register_mod/reg/p +s/.*hid_unregister_mod/unreg/p +s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/keycode_events.snapshot b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/keycode_events.snapshot new file mode 100644 index 00000000..b4755e5b --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/keycode_events.snapshot @@ -0,0 +1,18 @@ +pressed: usage_page 0x07 keycode 0xe0 mods 0x00 +reg: Modifier 0 count 1 +reg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +pressed: usage_page 0x07 keycode 0xe1 mods 0x00 +reg: Modifier 1 count 1 +reg: Modifiers set to 0x03 +mods: Modifiers set to 0x03 +released: usage_page 0x07 keycode 0xe1 mods 0x00 +unreg: Modifier 1 count: 0 +unreg: Modifier 1 released +unreg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +released: usage_page 0x07 keycode 0xe0 mods 0x00 +unreg: Modifier 0 count: 0 +unreg: Modifier 0 released +unreg: Modifiers set to 0x00 +mods: Modifiers set to 0x00 diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap new file mode 100644 index 00000000..3fedad25 --- /dev/null +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap @@ -0,0 +1,28 @@ +#include +#include +#include + + +&kscan { + events = < + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_RELEASE(1,0,10) + ZMK_MOCK_RELEASE(0,0,10) + + >; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp LCTL &kp LCTL + &kp LSFT &none + >; + }; + }; +}; diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns new file mode 100644 index 00000000..cbf21aff --- /dev/null +++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode_//p +s/.*hid_register_mod/reg/p +s/.*hid_unregister_mod/unreg/p +s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/keycode_events.snapshot b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/keycode_events.snapshot new file mode 100644 index 00000000..61dd271b --- /dev/null +++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/keycode_events.snapshot @@ -0,0 +1,8 @@ +pressed: usage_page 0x07 keycode 0x05 mods 0x02 +mods: Modifiers set to 0x02 +pressed: usage_page 0x07 keycode 0x04 mods 0x01 +mods: Modifiers set to 0x01 +released: usage_page 0x07 keycode 0x05 mods 0x02 +mods: Modifiers set to 0x01 +released: usage_page 0x07 keycode 0x04 mods 0x01 +mods: Modifiers set to 0x00 diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap new file mode 100644 index 00000000..c603c009 --- /dev/null +++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap @@ -0,0 +1,27 @@ +#include +#include +#include + + +&kscan { + events = < + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,1,10) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp LC(A) &kp LS(B) + &kp LCTL &none + >; + }; + }; +}; diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/pending b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/pending new file mode 100644 index 00000000..3f49005a --- /dev/null +++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/pending @@ -0,0 +1,9 @@ +This test fails because the hid_listener_keycode_released function +releases implicit modifiers always, even if they were not set by the +key that's going up. Also see the comment in that function: + + If LC(A) is pressed, then LS(B), then LC(A) is released, the shift for B will be released + prematurely. This causes if LS(B) to repeat like Bbbbbbbb when pressed for a long time. + Solving this would require keeping track of which key's implicit modifiers are currently + active and only releasing modifiers at that time. + diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns new file mode 100644 index 00000000..cbf21aff --- /dev/null +++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode_//p +s/.*hid_register_mod/reg/p +s/.*hid_unregister_mod/unreg/p +s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/keycode_events.snapshot b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/keycode_events.snapshot new file mode 100644 index 00000000..e8a231fe --- /dev/null +++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/keycode_events.snapshot @@ -0,0 +1,8 @@ +pressed: usage_page 0x07 keycode 0x04 mods 0x01 +mods: Modifiers set to 0x01 +pressed: usage_page 0x07 keycode 0x05 mods 0x02 +mods: Modifiers set to 0x02 +released: usage_page 0x07 keycode 0x05 mods 0x02 +mods: Modifiers set to 0x00 +released: usage_page 0x07 keycode 0x04 mods 0x01 +mods: Modifiers set to 0x00 diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/native_posix.keymap b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/native_posix.keymap new file mode 100644 index 00000000..109d60e5 --- /dev/null +++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/native_posix.keymap @@ -0,0 +1,27 @@ +#include +#include +#include + + +&kscan { + events = < + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_RELEASE(0,1,10) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp LC(A) &kp LS(B) + &none &none + >; + }; + }; +}; diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns new file mode 100644 index 00000000..cbf21aff --- /dev/null +++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode_//p +s/.*hid_register_mod/reg/p +s/.*hid_unregister_mod/unreg/p +s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/keycode_events.snapshot b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/keycode_events.snapshot new file mode 100644 index 00000000..40c5841e --- /dev/null +++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/keycode_events.snapshot @@ -0,0 +1,13 @@ +pressed: usage_page 0x07 keycode 0xe0 mods 0x00 +reg: Modifier 0 count 1 +reg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +pressed: usage_page 0x07 keycode 0x05 mods 0x02 +mods: Modifiers set to 0x03 +released: usage_page 0x07 keycode 0xe0 mods 0x00 +unreg: Modifier 0 count: 0 +unreg: Modifier 0 released +unreg: Modifiers set to 0x00 +mods: Modifiers set to 0x00 +released: usage_page 0x07 keycode 0x05 mods 0x02 +mods: Modifiers set to 0x00 diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap new file mode 100644 index 00000000..d381e4bf --- /dev/null +++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap @@ -0,0 +1,27 @@ +#include +#include +#include + + +&kscan { + events = < + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_RELEASE(1,0,10) + ZMK_MOCK_RELEASE(0,1,10) + >; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp LC(A) &kp LS(B) + &kp LCTL &none + >; + }; + }; +}; diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns new file mode 100644 index 00000000..cbf21aff --- /dev/null +++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns @@ -0,0 +1,4 @@ +s/.*hid_listener_keycode_//p +s/.*hid_register_mod/reg/p +s/.*hid_unregister_mod/unreg/p +s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/keycode_events.snapshot b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/keycode_events.snapshot new file mode 100644 index 00000000..5df571be --- /dev/null +++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/keycode_events.snapshot @@ -0,0 +1,13 @@ +pressed: usage_page 0x07 keycode 0xe0 mods 0x00 +reg: Modifier 0 count 1 +reg: Modifiers set to 0x01 +mods: Modifiers set to 0x01 +pressed: usage_page 0x07 keycode 0x05 mods 0x02 +mods: Modifiers set to 0x03 +released: usage_page 0x07 keycode 0x05 mods 0x02 +mods: Modifiers set to 0x01 +released: usage_page 0x07 keycode 0xe0 mods 0x00 +unreg: Modifier 0 count: 0 +unreg: Modifier 0 released +unreg: Modifiers set to 0x00 +mods: Modifiers set to 0x00 diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap new file mode 100644 index 00000000..b47b5f7e --- /dev/null +++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap @@ -0,0 +1,27 @@ +#include +#include +#include + + +&kscan { + events = < + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_RELEASE(0,1,10) + ZMK_MOCK_RELEASE(1,0,10) + >; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp LC(A) &kp LS(B) + &kp LCTL &none + >; + }; + }; +}; diff --git a/app/tests/momentary-layer/early-key-release/keycode_events.snapshot b/app/tests/momentary-layer/early-key-release/keycode_events.snapshot index 474eef7a..82ebc67c 100644 --- a/app/tests/momentary-layer/early-key-release/keycode_events.snapshot +++ b/app/tests/momentary-layer/early-key-release/keycode_events.snapshot @@ -1,4 +1,4 @@ -kp_pressed: usage_page 0x07 keycode 0x05 +kp_pressed: usage_page 0x07 keycode 0x05 mods 0x00 mo_pressed: position 1 layer 1 -kp_released: usage_page 0x07 keycode 0x05 +kp_released: usage_page 0x07 keycode 0x05 mods 0x00 mo_released: position 1 layer 1 diff --git a/app/tests/momentary-layer/normal/keycode_events.snapshot b/app/tests/momentary-layer/normal/keycode_events.snapshot index 9dc6101c..247128fe 100644 --- a/app/tests/momentary-layer/normal/keycode_events.snapshot +++ b/app/tests/momentary-layer/normal/keycode_events.snapshot @@ -1,4 +1,4 @@ mo_pressed: position 1 layer 1 -kp_pressed: usage_page 0x0c keycode 0xb5 -kp_released: usage_page 0x0c keycode 0xb5 +kp_pressed: usage_page 0x0c keycode 0xb5 mods 0x00 +kp_released: usage_page 0x0c keycode 0xb5 mods 0x00 mo_released: position 1 layer 1 diff --git a/app/tests/toggle-layer/early-key-release/keycode_events.snapshot b/app/tests/toggle-layer/early-key-release/keycode_events.snapshot index 3ac017c8..6b4d50bd 100644 --- a/app/tests/toggle-layer/early-key-release/keycode_events.snapshot +++ b/app/tests/toggle-layer/early-key-release/keycode_events.snapshot @@ -1,6 +1,6 @@ -kp_pressed: usage_page 0x07 keycode 0x05 +kp_pressed: usage_page 0x07 keycode 0x05 mods 0x00 tog_pressed: position 1 layer 1 -kp_released: usage_page 0x07 keycode 0x05 +kp_released: usage_page 0x07 keycode 0x05 mods 0x00 tog_released: position 1 layer 1 -kp_pressed: usage_page 0x0c keycode 0xb5 -kp_released: usage_page 0x0c keycode 0xb5 +kp_pressed: usage_page 0x0c keycode 0xb5 mods 0x00 +kp_released: usage_page 0x0c keycode 0xb5 mods 0x00 diff --git a/app/tests/toggle-layer/normal/keycode_events.snapshot b/app/tests/toggle-layer/normal/keycode_events.snapshot index 42174cc5..d03295ef 100644 --- a/app/tests/toggle-layer/normal/keycode_events.snapshot +++ b/app/tests/toggle-layer/normal/keycode_events.snapshot @@ -1,4 +1,4 @@ tog_pressed: position 1 layer 1 tog_released: position 1 layer 1 -kp_pressed: usage_page 0x0c keycode 0xb5 -kp_released: usage_page 0x0c keycode 0xb5 +kp_pressed: usage_page 0x0c keycode 0xb5 mods 0x00 +kp_released: usage_page 0x0c keycode 0xb5 mods 0x00 diff --git a/app/tests/transparent/layered/keycode_events.snapshot b/app/tests/transparent/layered/keycode_events.snapshot index d0bd2455..5e707b85 100644 --- a/app/tests/transparent/layered/keycode_events.snapshot +++ b/app/tests/transparent/layered/keycode_events.snapshot @@ -1,2 +1,2 @@ -kp_pressed: usage_page 0x07 keycode 0x04 -kp_released: usage_page 0x07 keycode 0x04 +kp_pressed: usage_page 0x07 keycode 0x04 mods 0x00 +kp_released: usage_page 0x07 keycode 0x04 mods 0x00 diff --git a/docs/docs/feature/keymaps.md b/docs/docs/feature/keymaps.md index 56fc2cc9..a322336c 100644 --- a/docs/docs/feature/keymaps.md +++ b/docs/docs/feature/keymaps.md @@ -68,7 +68,7 @@ In this case, the `A` is actually a define for the raw HID keycode, to make keym For example of a binding that uses two parameters, you can see how "mod-tap" (`mt`) is bound: ``` -&mt MOD_LSFT D +&mt LSFT D ``` Here, the first parameter is the set of modifiers that should be used for the "hold" behavior, and the second @@ -92,7 +92,7 @@ The top two lines of most keymaps should include: The first defines the nodes for all the available behaviors in ZMK, which will be referenced in the behavior bindings. This is how bindings like `&kp` can reference the key press behavior defined with an anchor name of `kp`. -The second include brings in the defines for all the keycodes (e.g. `A`, `NUM_1`, `M_PLAY`) and the modifiers (e.g. `MOD_LSFT`) used for various behavior bindings. +The second include brings in the defines for all the keycodes (e.g. `A`, `NUM_1`, `M_PLAY`) and the modifiers (e.g. `LSFT`) used for various behavior bindings. ### Root devicetree Node From 55b5936d00cd92e734e4fa8136ee30cf156ecec3 Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Sat, 31 Oct 2020 21:16:47 +0100 Subject: [PATCH 313/353] clang-format --- app/include/zmk/events/keycode-state-changed.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h index 493f075b..4ded4e61 100644 --- a/app/include/zmk/events/keycode-state-changed.h +++ b/app/include/zmk/events/keycode-state-changed.h @@ -20,11 +20,12 @@ struct keycode_state_changed { ZMK_EVENT_DECLARE(keycode_state_changed); -static inline struct keycode_state_changed *create_keycode_state_changed(u8_t usage_page, u32_t keycode, bool state) { +static inline struct keycode_state_changed * +create_keycode_state_changed(u8_t usage_page, u32_t keycode, bool state) { struct keycode_state_changed *ev = new_keycode_state_changed(); ev->usage_page = usage_page; ev->keycode = STRIP_MODS(keycode); - ev->implicit_modifiers = SELECT_MODS(keycode); + ev->implicit_modifiers = SELECT_MODS(keycode); ev->state = state; return ev; } From 32e715937379eea431b54cf73f15a785527f3aa1 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 3 Nov 2020 00:21:20 -0500 Subject: [PATCH 314/353] refactor(hid): Mod defines in dedicated header. --- app/include/dt-bindings/zmk/keys.h | 23 ++------------- app/include/dt-bindings/zmk/modifiers.h | 28 +++++++++++++++++++ .../zmk/events/keycode-state-changed.h | 2 +- app/include/zmk/handlers.h | 2 -- app/src/hid.c | 2 +- app/src/usb.c | 1 - 6 files changed, 32 insertions(+), 26 deletions(-) create mode 100644 app/include/dt-bindings/zmk/modifiers.h diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index 5f59055e..bd3d217a 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -5,6 +5,8 @@ */ #pragma once +#include + #define USAGE_KEYPAD 0x07 #define USAGE_CONSUMER 0x0C @@ -143,24 +145,3 @@ #define M_VOLU 0xE9 #define M_VOLD 0xEA -#define MOD_LCTL 0x01 -#define MOD_LSFT 0x02 -#define MOD_LALT 0x04 -#define MOD_LGUI 0x08 -#define MOD_RCTL 0x10 -#define MOD_RSFT 0x20 -#define MOD_RALT 0x40 -#define MOD_RGUI 0x80 - -#define SELECT_MODS(keycode) (keycode >> 24) -#define STRIP_MODS(keycode) (keycode & ~(0xFF << 24)) -#define APPLY_MODS(mods, keycode) (mods << 24 | keycode) - -#define LC(keycode) APPLY_MODS(MOD_LCTL, keycode) -#define LS(keycode) APPLY_MODS(MOD_LSFT, keycode) -#define LA(keycode) APPLY_MODS(MOD_LALT, keycode) -#define LG(keycode) APPLY_MODS(MOD_LGUI, keycode) -#define RC(keycode) APPLY_MODS(MOD_RCTL, keycode) -#define RS(keycode) APPLY_MODS(MOD_RSFT, keycode) -#define RA(keycode) APPLY_MODS(MOD_RALT, keycode) -#define RG(keycode) APPLY_MODS(MOD_RGUI, keycode) diff --git a/app/include/dt-bindings/zmk/modifiers.h b/app/include/dt-bindings/zmk/modifiers.h new file mode 100644 index 00000000..b49849d0 --- /dev/null +++ b/app/include/dt-bindings/zmk/modifiers.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ +#pragma once + +#define MOD_LCTL 0x01 +#define MOD_LSFT 0x02 +#define MOD_LALT 0x04 +#define MOD_LGUI 0x08 +#define MOD_RCTL 0x10 +#define MOD_RSFT 0x20 +#define MOD_RALT 0x40 +#define MOD_RGUI 0x80 + +#define SELECT_MODS(keycode) (keycode >> 24) +#define STRIP_MODS(keycode) (keycode & ~(0xFF << 24)) +#define APPLY_MODS(mods, keycode) (mods << 24 | keycode) + +#define LC(keycode) APPLY_MODS(MOD_LCTL, keycode) +#define LS(keycode) APPLY_MODS(MOD_LSFT, keycode) +#define LA(keycode) APPLY_MODS(MOD_LALT, keycode) +#define LG(keycode) APPLY_MODS(MOD_LGUI, keycode) +#define RC(keycode) APPLY_MODS(MOD_RCTL, keycode) +#define RS(keycode) APPLY_MODS(MOD_RSFT, keycode) +#define RA(keycode) APPLY_MODS(MOD_RALT, keycode) +#define RG(keycode) APPLY_MODS(MOD_RGUI, keycode) \ No newline at end of file diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h index 4ded4e61..26d07ec4 100644 --- a/app/include/zmk/events/keycode-state-changed.h +++ b/app/include/zmk/events/keycode-state-changed.h @@ -7,7 +7,7 @@ #pragma once #include -#include +#include #include struct keycode_state_changed { diff --git a/app/include/zmk/handlers.h b/app/include/zmk/handlers.h index 7ce1d27e..92bd7e05 100644 --- a/app/include/zmk/handlers.h +++ b/app/include/zmk/handlers.h @@ -6,8 +6,6 @@ #pragma once -#include - #include #include diff --git a/app/src/hid.c b/app/src/hid.c index 001d7d31..1925765c 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -8,7 +8,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include -#include +#include static struct zmk_hid_keypad_report kp_report = { .report_id = 1, .body = {.modifiers = 0, ._reserved = 0, .keys = {0}}}; diff --git a/app/src/usb.c b/app/src/usb.c index d4bc2e41..79d03c7b 100644 --- a/app/src/usb.c +++ b/app/src/usb.c @@ -9,7 +9,6 @@ #include #include -#include #include #include From a29e041b1f9edfa1937354daf003172480828b6c Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 3 Nov 2020 00:30:42 -0500 Subject: [PATCH 315/353] fix: Formatting fix. --- app/include/dt-bindings/zmk/keys.h | 1 - 1 file changed, 1 deletion(-) diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index bd3d217a..5a52753e 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -144,4 +144,3 @@ #define M_MUTE 0xE2 #define M_VOLU 0xE9 #define M_VOLD 0xEA - From a1dd21651911df5dcd42e9980d91e51bef45dfe8 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 3 Nov 2020 13:11:56 +0000 Subject: [PATCH 316/353] docs: formatted with prettier --- docs/docs/dev-guide-new-shield.md | 6 +++--- docs/docs/dev-guide-usb-logging.md | 6 +++--- docs/docs/user-setup.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 7a0a248d..e1d6f250 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -28,11 +28,11 @@ ZMK support for split keyboards requires a few more files than single boards to ## New Shield Directory :::note -This guide describes how to add shield to the ZMK main repository. If you are building firmware for your +This guide describes how to add shield to the ZMK main repository. If you are building firmware for your own prototype or handwired keyboard, it is recommended to use your own user config repository. Follow the [user setup guide](./user-setup.md) to create your user config repository first. When following the rest of this guide, replace the `app/` directory in the ZMK main repository with the `config/` directory in your -user config repository. For example, `app/boards/shields/` should now be +user config repository. For example, `app/boards/shields/` should now be `config/boards/shields/`. ::: @@ -75,7 +75,7 @@ that make sense to have different defaults when this shield is used. One main it that usually has a new default value set here is the `ZMK_KEYBOARD_NAME` value, which controls the display name of the device over USB and BLE. -The updated new default values should always be wrapped inside a conditional on the shield config name defined in the `Kconfig.shield` file. Here's the simplest example file. +The updated new default values should always be wrapped inside a conditional on the shield config name defined in the `Kconfig.shield` file. Here's the simplest example file. :::warning Do not make the keyboard name too long, otherwise the bluetooth advertising might fail and you will not be able to find your keyboard from your laptop / tablet. diff --git a/docs/docs/dev-guide-usb-logging.md b/docs/docs/dev-guide-usb-logging.md index adb2d661..50884be5 100644 --- a/docs/docs/dev-guide-usb-logging.md +++ b/docs/docs/dev-guide-usb-logging.md @@ -27,7 +27,7 @@ The following KConfig values need to be set, either by copy and pasting into the :::note If you are debugging your own keyboard in your [user config repository](./user-setup.md), use `config/boards/shields//.conf` instead of `app/prj.conf`. In Github -Actions, you can search the `Kconfig file` build log to verify the options above have been enabled +Actions, you can search the `Kconfig file` build log to verify the options above have been enabled for you successfully. ::: @@ -90,14 +90,14 @@ If you already have the Ardunio IDE installed you can also use its built-in Seri -On MacOS, the device name is something like `/dev/tty.usbmodemXXXXX` where `XXXXX` is some numerical ID. +On MacOS, the device name is something like `/dev/tty.usbmodemXXXXX` where `XXXXX` is some numerical ID. You can connect to the device with [tio](https://tio.github.io/) (can be installed via [Homebrew](https://formulae.brew.sh/formula/tio)): ``` sudo tio /dev/tty.usbmodem14401 ``` -You should see tio printing `Disconnected` or `Connected` when you disconnect or reconnect the USB cable. +You should see tio printing `Disconnected` or `Connected` when you disconnect or reconnect the USB cable. diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index 566b62c4..990a8f6d 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -105,7 +105,7 @@ Pick an MCU board: :::note If you are building firmware for a new keyboard shield that is not included in the built-in -list of shields, you can choose any shield from the list that is similar to yours to generate the repository, +list of shields, you can choose any shield from the list that is similar to yours to generate the repository, and edit / add necessary files according to the [guide for adding new keyboard shield](./dev-guide-new-shield.md). ::: From fe62929af855c71f363da8011d57653d5ea83a44 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 3 Nov 2020 13:46:07 -0500 Subject: [PATCH 317/353] feat(docs): Add eslint and prettier GH Actions. --- .github/workflows/doc-checks.yml | 35 ++++++++++++++++++++++++++++++++ docs/package.json | 5 ++++- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/doc-checks.yml diff --git a/.github/workflows/doc-checks.yml b/.github/workflows/doc-checks.yml new file mode 100644 index 00000000..a31a88e6 --- /dev/null +++ b/.github/workflows/doc-checks.yml @@ -0,0 +1,35 @@ +name: doc-checks + +on: + push: + paths: + - "docs/**" + pull_request: + paths: + - "docs/**" + +jobs: + lint: + runs-on: ubuntu-latest + name: ESLint + + steps: + - uses: actions/checkout@v2 + - uses: bahmutov/npm-install@v1 + with: + working-directory: docs + - name: ESLint + run: npm run lint + working-directory: docs + prettier: + runs-on: ubuntu-latest + name: Prettier + + steps: + - uses: actions/checkout@v2 + - uses: bahmutov/npm-install@v1 + with: + working-directory: docs + - name: Prettier Check + run: npm run prettier:check + working-directory: docs diff --git a/docs/package.json b/docs/package.json index f1e911eb..cb425066 100644 --- a/docs/package.json +++ b/docs/package.json @@ -8,7 +8,10 @@ "serve": "docusaurus serve", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", - "clear": "docusaurus clear" + "clear": "docusaurus clear", + "lint": "eslint . --ext js,jsx,md,mdx", + "prettier:check": "prettier --check .", + "prettier:format": "prettier --write ." }, "dependencies": { "@docusaurus/core": "^2.0.0-alpha.66", From 698c27ba3bea209366a9a40a497eb3c0577dbbbe Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 3 Nov 2020 15:02:15 -0500 Subject: [PATCH 318/353] feat(ci): Only build firmware when app/ changes. --- .github/workflows/build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e22dc653..e6be31ac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,10 @@ -on: [push, pull_request] +on: + push: + paths: + - "app/**" + pull_request: + paths: + - "app/**" name: Build From 274fdec783f0815b5f94f75bf00187692b3f0cc2 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 3 Nov 2020 14:26:08 -0600 Subject: [PATCH 319/353] Add blog post about #322 --- docs/blog/2020-10-03-bootloader-fix.md | 195 +++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 docs/blog/2020-10-03-bootloader-fix.md diff --git a/docs/blog/2020-10-03-bootloader-fix.md b/docs/blog/2020-10-03-bootloader-fix.md new file mode 100644 index 00000000..8a9fd7f8 --- /dev/null +++ b/docs/blog/2020-10-03-bootloader-fix.md @@ -0,0 +1,195 @@ +--- +title: Fixing the Mysterious Broken Bootloader +author: Nick Winans +author_title: Contributor +author_url: https://github.com/Nicell +author_image_url: https://avatars1.githubusercontent.com/u/9439650 +tags: [bootloader, keyboards, firmware, oss, ble] +--- + +Recently I was able to fix the "stuck in the bootloader" issue in +[#322](https://github.com/zmkfirmware/zmk/pull/322) that had been plaguing us +for quite some time. I want to go over what the issue was, how the issue was +diagnosed, and how it was fixed. + +## Background + +What exactly is the "stuck in the bootloader" issue? Seemingly randomly, users' +keyboards would suddenly stop working and when they would reset their keyboard +they would get put into the bootloader instead of back into the firmware. This +would require the user to re-flash the firmware again to get into the firmware. +That wouldn't be so bad except for the fact that once this occurs, every reset +would require the user to re-flash the firmware again. The only way to really +fix this issue was to re-flash the bootloader itself, which is a huge pain. + +Going into this, all we knew was that this issue was most likely introduced +somewhere in the [#133](https://github.com/zmkfirmware/zmk/pull/133), which +added Bluetooth profile management. We've had quite a few attempts at trying to +recreate the issue, but we never were able to get it to happen consistently. + +## Diagnosing the issue + +This issue had been happening sporadically for the past month, and I finally +decided to dig in to see what was going on. We started in the Discord and +discussed what was common between all of the people who have experienced this +issue. Everyone who had this issue reported that they did quite a bit of profile +switching. This lined up with the possible connection to the Bluetooth profile +management pull request. + +### Pinpointing the cause + +I had a hunch that this was related to the settings system. The settings system +is used by profile Bluetooth switching, and the settings system works directly +with the system flash. Based on this hunch, I tried spamming the RGB underglow +cycle behavior on my main keyboard. Sure enough after a couple minutes, I got +stuck in the bootloader. I was even able to reproduce it again. + +This was an important discovery for two reasons. First, I was able to recreate +the issue consistently, which meant I could set up logging and more closely +monitor what the board was doing. Second, this more or less proved that it was +specifically the settings system at fault. Both Bluetooth profile switching and +RGB underglow cycling trigger it, and the one common piece is they save their +state to settings. + +### Settings system overview + +To understand what's going wrong, we first need to understand how the settings +system works. Here's a diagram to explain the flash space that the settings +system holds for our nRF52840 based boards (nice!nano, nRFMicro, BlueMicro). + +![Settings Diagram](https://i.imgur.com/DF2t3Oq.png) + +The settings flash space lives at the end of the flash of the chip. In this case +it starts at `0xF8000` and is `0x8000` bytes long, which is 32KB in more +comprehensible units. Then due to the chip's architecture, this flash space is +broken into pages, which are `0x1000` bytes in size (4KB). + +The backend that carries out the settings save and read operation in ZMK is +called NVS. NVS calls these pages sectors. Due to how flash works, you can't +write to the same bytes multiple times without erasing them first, and to erase +bytes, you need to erase the entire sector of flash. This means when NVS writes +to the settings flash if there's no erased space available for the new value, it +will need to erase a sector. + +### Logging discoveries + +So first I enabled logging of the NVS module by adding +`CONFIG_NVS_LOG_LEVEL_DBG=y` to my `.conf` file. I repeated the same test of +spamming RGB underglow effect cycle and the resulting logs I got were this: + +``` +[00:00:00.000,671] fs_nvs: 8 Sectors of 4096 bytes +[00:00:00.000,671] fs_nvs: alloc wra: 3, f70 +[00:00:00.000,671] fs_nvs: data wra: 3, f40 +// A bunch of effect cycle spam +[00:02:34.781,188] fs_nvs: Erasing flash at fd000, len 4096 +// A bunch more effect cycle spam +[00:06:42.219,970] fs_nvs: Erasing flash at ff000, len 4096 +// A bunch more effect cycle spam +// KABOOM - bootloader issue +``` + +So at start up, we can see that the 8 sectors of 4KB are found by NVS properly, +however, I wasn't sure what the second and third lines meant, but we'll get back +to that. Nonetheless the next two logs from NVS showed erasing the sector at +`0xFD000` and then erasing the `0xFF000` sector. + +![Erased Sectors](https://i.imgur.com/DmLycMJ.png) + +It's really odd that the third to last sector and the last sector are erased, +and then shortly after the bootloader issue is hit. I really had no explanation +for this behavior. + +### Reaching out to Zephyr + +At this point, I nor anyone else working on the ZMK project knew enough about +NVS to explain what was going on here. [Pete +Johanson](https://github.com/petejohanson), project founder, reached out on the +Zephyr Project's Slack (ZMK is built on top of Zephyr if you weren't aware). +Justin B and Laczen assisted by first explaining that those `alloc wra` and +`data wra` logs from earlier are showing what data NVS found at startup. + +More specifically, `data wra` should be `0` when it first starts up on a clean +flash. As we can see from my earlier logging on a clean flash I was instead +getting `f40`. NVS is finding data in our settings sectors when they should be +blank! We were then given the advice to double check our bootloader. + +### The Adafruit nRF52 Bootloader + +Most of the boards the contributors of ZMK use have the [Adafruit nRF52 +Bootloader](https://github.com/adafruit/Adafruit_nRF52_Bootloader), which allows +for extremely easy flashing by dragging and dropping `.uf2` files onto the board +as a USB drive. Every bootloader takes up a portion of the flash, and in the +README explains that the first `0x26000` is reserved for the bootloader with the +nRF52840, and we've properly allocated that. + +However, there isn't a full explanation of the flash allocation of the +bootloader in the README. There's a possibility that the bootloader is using +part of the same flash area we're using. I reached out on the Adafruit Discord, +and [Dan Halbert](https://github.com/dhalbert) pointed me towards the [linker +map](https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/master/linker/nrf52840.ld) +of the nRF52840. Let's take a look. + +``` +FLASH (rx) : ORIGIN = 0xF4000, LENGTH = 0xFE000-0xF4000-2048 /* 38 KB */ + +BOOTLOADER_CONFIG (r): ORIGIN = 0xFE000 - 2048, LENGTH = 2048 + +/** Location of mbr params page in flash. */ +MBR_PARAMS_PAGE (rw) : ORIGIN = 0xFE000, LENGTH = 0x1000 + +/** Location of bootloader setting in flash. */ +BOOTLOADER_SETTINGS (rw) : ORIGIN = 0xFF000, LENGTH = 0x1000 +``` + +Here's a diagram to show this a bit better. + +![Adafruit Bootloader Diagram](https://i.imgur.com/TEOA31m.png) + +We've found the issue! As you can see from the red bar (representing our +settings flash area), we've put the settings flash area _right on top_ of the +Adafruit bootloader's flash space. Oops! + +This also shines some light on why NVS erased `0xFD000` and `0xFF000` sectors. +It's possible there was no flash written to `0xFD000` because the bootloader +didn't use up all of that space it has, and then there possibly weren't any +bootloader settings set yet, so `0xFF000` could be used and erased by NVS too. + +After erasing `0xFF000`, NVS probably next erased a rather important part of the +bootloader that resulted in this issue at hand. In my opinion, we're pretty +lucky that it didn't delete an even more vital part of the bootloader. At least +we could still get to it, so that we could re-flash the bootloader easily! + +## The solution + +Now that we've found the issue, we can pretty easily fix this. We'll need to +move the settings flash area back so that it doesn't overlap with the +bootloader. First we calculate the size of the of flash area the bootloader is using. + +``` +0x100000 (end of flash) - 0x0F4000 (start of bootloader) = 0xC000 (48KB) +``` + +So the bootloader is using the last 48KB of the flash, this means all we need to +do is shift back the settings area and code space `0xC000` bytes. We'll apply +this to all of the `.dts` files for the boards that were affected by this issue. + +```diff + code_partition: partition@26000 { + label = "code_partition"; +- reg = <0x00026000 0x000d2000>; ++ reg = <0x00026000 0x000c6000>; + }; + + +- storage_partition: partition@f8000 { ++ storage_partition: partition@ec000 { + label = "storage"; +- reg = <0x000f8000 0x00008000>; ++ reg = <0x000ec000 0x00008000>; + }; +``` + +And with those changes, we should no longer run into this issue! In the process +of these changes, we lost 48KB of space for application code, but we're only +using around 20% of it anyways. 🎉 From c3e7742f9c990bcc55a7f7358a51530bf4897265 Mon Sep 17 00:00:00 2001 From: Joel Spadin Date: Tue, 3 Nov 2020 18:00:37 -0600 Subject: [PATCH 320/353] fix(docs): remove incorrect defines for outputs The output selection behaviors page still referenced defines that were removed while reviewing the PR. Updated the docs to match the code. --- docs/docs/behavior/outputs.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/docs/behavior/outputs.md b/docs/docs/behavior/outputs.md index 324f6f40..ae812497 100644 --- a/docs/docs/behavior/outputs.md +++ b/docs/docs/behavior/outputs.md @@ -23,11 +23,11 @@ header, which is added at the top of the keymap file: This allows you to reference the actions defined in this header: -| Define | Action | Alias | -| ------------------- | ----------------------------------------------- | --------- | -| `OUTPUT_USB_CMD` | Prefer sending to USB | `OUT_USB` | -| `OUTPUT_BLE_CMD` | Prefer sending to the current bluetooth profile | `OUT_BLE` | -| `OUTPUT_TOGGLE_CMD` | Toggle between USB and BLE | `OUT_TOG` | +| Define | Action | +| --------- | ----------------------------------------------- | +| `OUT_USB` | Prefer sending to USB | +| `OUT_BLE` | Prefer sending to the current bluetooth profile | +| `OUT_TOG` | Toggle between USB and BLE | ## Output Selection Behavior @@ -38,7 +38,7 @@ The output selection behavior changes the preferred output on press. - Reference: `&out` - Parameter #1: Command, e.g. `OUT_BLE` -### Example: +### Examples 1. Behavior binding to prefer sending keyboard output to USB From 1af4221908b52f6fc46e30445af8c87056b5f60b Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 2 Nov 2020 15:47:22 -0600 Subject: [PATCH 321/353] feat(underglow): Debounce state settings save --- app/src/rgb_underglow.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index b371c943..084482ea 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -227,6 +227,14 @@ static void zmk_rgb_underglow_tick_handler(struct k_timer *timer) { K_TIMER_DEFINE(underglow_tick, zmk_rgb_underglow_tick_handler, NULL); +#if IS_ENABLED(CONFIG_SETTINGS) +static void zmk_rgb_underglow_save_state_work() { + settings_save_one("rgb/underglow/state", &state, sizeof(state)); +} + +static struct k_delayed_work underglow_save_work; +#endif + static int zmk_rgb_underglow_init(struct device *_arg) { led_strip = device_get_binding(STRIP_LABEL); if (led_strip) { @@ -248,6 +256,7 @@ static int zmk_rgb_underglow_init(struct device *_arg) { #if IS_ENABLED(CONFIG_SETTINGS) settings_register(&rgb_conf); + k_delayed_work_init(&underglow_save_work, zmk_rgb_underglow_save_state_work); #endif k_timer_start(&underglow_tick, K_NO_WAIT, K_MSEC(50)); @@ -257,7 +266,8 @@ static int zmk_rgb_underglow_init(struct device *_arg) { int zmk_rgb_underglow_save_state() { #if IS_ENABLED(CONFIG_SETTINGS) - return settings_save_one("rgb/underglow/state", &state, sizeof(state)); + k_delayed_work_cancel(&underglow_save_work); + return k_delayed_work_submit(&underglow_save_work, K_MINUTES(1)); #else return 0; #endif From 3c0a0ff3087d7c3d522d610227c6fedcec8f27a7 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 3 Nov 2020 16:45:56 +0000 Subject: [PATCH 322/353] feat(hid): Add preprocessor definitions for HID usages v1.21 Developed from specification: https://usb.org/sites/default/files/hut1_21.pdf Closes #217. Prerequisite of #21. --- app/include/dt-bindings/zmk/hid_usage.h | 2566 +++++++++++++++++ app/include/dt-bindings/zmk/hid_usage_pages.h | 43 + 2 files changed, 2609 insertions(+) create mode 100644 app/include/dt-bindings/zmk/hid_usage.h create mode 100644 app/include/dt-bindings/zmk/hid_usage_pages.h diff --git a/app/include/dt-bindings/zmk/hid_usage.h b/app/include/dt-bindings/zmk/hid_usage.h new file mode 100644 index 00000000..0555f004 --- /dev/null +++ b/app/include/dt-bindings/zmk/hid_usage.h @@ -0,0 +1,2566 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + * + * Based on HID Usage Tables 1.21, + * Copyright © 1996-2020, USB Implementers Forum, + * https://www.usb.org/sites/default/files/hut1_21.pdf + */ + +#pragma once + +/* Page 0x01: Generic Desktop */ +#define HID_USAGE_GD_UNDEFINED (0x00) +#define HID_USAGE_GD_POINTER (0x01) // CP +#define HID_USAGE_GD_MOUSE (0x02) // CA +#define HID_USAGE_GD_JOYSTICK (0x04) // CA +#define HID_USAGE_GD_GAMEPAD (0x05) // CA +#define HID_USAGE_GD_KEYBOARD (0x06) // CA +#define HID_USAGE_GD_KEYPAD (0x07) // CA +#define HID_USAGE_GD_MULTI_AXIS_CONTROLLER (0x08) // CA +#define HID_USAGE_GD_TABLET_PC_SYSTEM_CONTROLS (0x09) // CA +#define HID_USAGE_GD_WATER_COOLING_DEVICE (0x0A) // CA +#define HID_USAGE_GD_COMPUTER_CHASSIS_DEVICE (0x0B) // CA +#define HID_USAGE_GD_WIRELESS_RADIO_CONTROLS (0x0C) // CA +#define HID_USAGE_GD_PORTABLE_DEVICE_CONTROL (0x0D) // CA +#define HID_USAGE_GD_SYSTEM_MULTI_AXIS_CONTROLLER (0x0E) // CA +#define HID_USAGE_GD_SPATIAL_CONTROLLER (0x0F) // CA +#define HID_USAGE_GD_ASSISTIVE_CONTROL (0x10) // CA +#define HID_USAGE_GD_DEVICE_DOCK (0x11) // CA +#define HID_USAGE_GD_DOCKABLE_DEVICE (0x12) // CA +#define HID_USAGE_GD_X (0x30) // DV +#define HID_USAGE_GD_Y (0x31) // DV +#define HID_USAGE_GD_Z (0x32) // DV +#define HID_USAGE_GD_RX (0x33) // DV +#define HID_USAGE_GD_RY (0x34) // DV +#define HID_USAGE_GD_RZ (0x35) // DV +#define HID_USAGE_GD_SLIDER (0x36) // DV +#define HID_USAGE_GD_DIAL (0x37) // DV +#define HID_USAGE_GD_WHEEL (0x38) // DV +#define HID_USAGE_GD_HAT_SWITCH (0x39) // DV +#define HID_USAGE_GD_COUNTED_BUFFER (0x3A) // CL +#define HID_USAGE_GD_BYTE_COUNT (0x3B) // DV +#define HID_USAGE_GD_MOTION_WAKEUP (0x3C) // OSC, DF +#define HID_USAGE_GD_START (0x3D) // OOC +#define HID_USAGE_GD_SELECT (0x3E) // OOC +#define HID_USAGE_GD_VX (0x40) // DV +#define HID_USAGE_GD_VY (0x41) // DV +#define HID_USAGE_GD_VZ (0x42) // DV +#define HID_USAGE_GD_VBRX (0x43) // DV +#define HID_USAGE_GD_VBRY (0x44) // DV +#define HID_USAGE_GD_VBRZ (0x45) // DV +#define HID_USAGE_GD_VNO (0x46) // DV +#define HID_USAGE_GD_FEATURE_NOTIFICATION (0x47) // DV, DF +#define HID_USAGE_GD_RESOLUTION_MULTIPLIER (0x48) // DV +#define HID_USAGE_GD_QX (0x49) // DV +#define HID_USAGE_GD_QY (0x4A) // DV +#define HID_USAGE_GD_QZ (0x4B) // DV +#define HID_USAGE_GD_QW (0x4C) // DV +#define HID_USAGE_GD_SYSTEM_CONTROL (0x80) // CA +#define HID_USAGE_GD_SYSTEM_POWER_DOWN (0x81) // OSC +#define HID_USAGE_GD_SYSTEM_SLEEP (0x82) // OSC +#define HID_USAGE_GD_SYSTEM_WAKE_UP (0x83) // OSC +#define HID_USAGE_GD_SYSTEM_CONTEXT_MENU (0x84) // OSC +#define HID_USAGE_GD_SYSTEM_MAIN_MENU (0x85) // OSC +#define HID_USAGE_GD_SYSTEM_APP_MENU (0x86) // OSC +#define HID_USAGE_GD_SYSTEM_MENU_HELP (0x87) // OSC +#define HID_USAGE_GD_SYSTEM_MENU_EXIT (0x88) // OSC +#define HID_USAGE_GD_SYSTEM_MENU_SELECT (0x89) // OSC +#define HID_USAGE_GD_SYSTEM_MENU_RIGHT (0x8A) // RTC +#define HID_USAGE_GD_SYSTEM_MENU_LEFT (0x8B) // RTC +#define HID_USAGE_GD_SYSTEM_MENU_UP (0x8C) // RTC +#define HID_USAGE_GD_SYSTEM_MENU_DOWN (0x8D) // RTC +#define HID_USAGE_GD_SYSTEM_COLD_RESTART (0x8E) // OSC +#define HID_USAGE_GD_SYSTEM_WARM_RESTART (0x8F) // OSC +#define HID_USAGE_GD_D_PAD_UP (0x90) // OOC +#define HID_USAGE_GD_D_PAD_DOWN (0x91) // OOC +#define HID_USAGE_GD_D_PAD_RIGHT (0x92) // OOC +#define HID_USAGE_GD_D_PAD_LEFT (0x93) // OOC +#define HID_USAGE_GD_INDEX_TRIGGER (0x94) // MC, DV +#define HID_USAGE_GD_PALM_TRIGGER (0x95) // MC, DV +#define HID_USAGE_GD_THUMBSTICK (0x96) // CP +#define HID_USAGE_GD_SYSTEM_FUNCTION_SHIFT (0x97) // MC +#define HID_USAGE_GD_SYSTEM_FUNCTION_SHIFT_LOCK (0x98) // OOC +#define HID_USAGE_GD_SYSTEM_FUNCTION_SHIFT_LOCK_INDICATOR (0x99) // DV +#define HID_USAGE_GD_SYSTEM_DISMISS_NOTIFICATION (0x9A) // OSC +#define HID_USAGE_GD_SYSTEM_DO_NOT_DISTURB (0x9B) // OOC +#define HID_USAGE_GD_SYSTEM_DOCK (0xA0) // OSC +#define HID_USAGE_GD_SYSTEM_UNDOCK (0xA1) // OSC +#define HID_USAGE_GD_SYSTEM_SETUP (0xA2) // OSC +#define HID_USAGE_GD_SYSTEM_BREAK (0xA3) // OSC +#define HID_USAGE_GD_SYSTEM_DEBUGGER_BREAK (0xA4) // OSC +#define HID_USAGE_GD_APPLICATION_BREAK (0xA5) // OSC +#define HID_USAGE_GD_APPLICATION_DEBUGGER_BREAK (0xA6) // OSC +#define HID_USAGE_GD_SYSTEM_SPEAKER_MUTE (0xA7) // OSC +#define HID_USAGE_GD_SYSTEM_HIBERNATE (0xA8) // OSC +#define HID_USAGE_GD_SYSTEM_DISPLAY_INVERT (0xB0) // OSC +#define HID_USAGE_GD_SYSTEM_DISPLAY_INTERNAL (0xB1) // OSC +#define HID_USAGE_GD_SYSTEM_DISPLAY_EXTERNAL (0xB2) // OSC +#define HID_USAGE_GD_SYSTEM_DISPLAY_BOTH (0xB3) // OSC +#define HID_USAGE_GD_SYSTEM_DISPLAY_DUAL (0xB4) // OSC +#define HID_USAGE_GD_SYSTEM_DISPLAY_TOGGLE_INT_EXT_MODE (0xB5) // OSC +#define HID_USAGE_GD_SYSTEM_DISPLAY_SWAP_PRIMARY_SECONDARY (0xB6) // OSC +#define HID_USAGE_GD_SYSTEM_DISPLAY_TOGGLE_LCD_AUTOSCALE (0xB7) // OSC +#define HID_USAGE_GD_SENSOR_ZONE (0xC0) // CL +#define HID_USAGE_GD_RPM (0xC1) // DV +#define HID_USAGE_GD_COOLANT_LEVEL (0xC2) // DV +#define HID_USAGE_GD_COOLANT_CRITICAL_LEVEL (0xC3) // SV +#define HID_USAGE_GD_COOLANT_PUMP (0xC4) // US +#define HID_USAGE_GD_CHASSIS_ENCLOSURE (0xC5) // CL +#define HID_USAGE_GD_WIRELESS_RADIO_BUTTON (0xC6) // OOC +#define HID_USAGE_GD_WIRELESS_RADIO_LED (0xC7) // OOC +#define HID_USAGE_GD_WIRELESS_RADIO_SLIDER_SWITCH (0xC8) // OOC +#define HID_USAGE_GD_SYSTEM_DISPLAY_ROTATION_LOCK_BUTTON (0xC9) // OOC +#define HID_USAGE_GD_SYSTEM_DISPLAY_ROTATION_LOCK_SLIDER_SWITCH (0xCA) // OOC +#define HID_USAGE_GD_CONTROL_ENABLE (0xCB) // DF +#define HID_USAGE_GD_DOCKABLE_DEVICE_UNIQUE_ID (0xD0) // DV +#define HID_USAGE_GD_DOCKABLE_DEVICE_VENDOR_ID (0xD1) // DV +#define HID_USAGE_GD_DOCKABLE_DEVICE_PRIMARY_USAGE_PAGE (0xD2) // DV +#define HID_USAGE_GD_DOCKABLE_DEVICE_PRIMARY_USAGE_ID (0xD3) // DV +#define HID_USAGE_GD_DOCKABLE_DEVICE_DOCKING_STATE (0xD4) // DF +#define HID_USAGE_GD_DOCKABLE_DEVICE_DISPLAY_OCCLUSION (0xD5) // CL +#define HID_USAGE_GD_DOCKABLE_DEVICE_OBJECT_TYPE (0xD6) // DV + +/* Page 0x02: Simulation Controls */ +#define HID_USAGE_SIM_UNDEFINED (0x00) +#define HID_USAGE_SIM_FLIGHT_SIMULATION_DEVICE (0x01) // CA +#define HID_USAGE_SIM_AUTOMOBILE_SIMULATION_DEVICE (0x02) // CA +#define HID_USAGE_SIM_TANK_SIMULATION_DEVICE (0x03) // CA +#define HID_USAGE_SIM_SPACESHIP_SIMULATION_DEVICE (0x04) // CA +#define HID_USAGE_SIM_SUBMARINE_SIMULATION_DEVICE (0x05) // CA +#define HID_USAGE_SIM_SAILING_SIMULATION_DEVICE (0x06) // CA +#define HID_USAGE_SIM_MOTORCYCLE_SIMULATION_DEVICE (0x07) // CA +#define HID_USAGE_SIM_SPORTS_SIMULATION_DEVICE (0x08) // CA +#define HID_USAGE_SIM_AIRPLANE_SIMULATION_DEVICE (0x09) // CA +#define HID_USAGE_SIM_HELICOPTER_SIMULATION_DEVICE (0x0A) // CA +#define HID_USAGE_SIM_MAGIC_CARPET_SIMULATION_DEVICE (0x0B) // CA +#define HID_USAGE_SIM_BICYCLE_SIMULATION_DEVICE (0x0C) // CA +#define HID_USAGE_SIM_FLIGHT_CONTROL_STICK (0x20) // CA +#define HID_USAGE_SIM_FLIGHT_STICK (0x21) // CA +#define HID_USAGE_SIM_CYCLIC_CONTROL (0x22) // CP +#define HID_USAGE_SIM_CYCLIC_TRIM (0x23) // CP +#define HID_USAGE_SIM_FLIGHT_YOKE (0x24) // CA +#define HID_USAGE_SIM_TRACK_CONTROL (0x25) // CP +#define HID_USAGE_SIM_AILERON (0xB0) // DV +#define HID_USAGE_SIM_AILERON_TRIM (0xB1) // DV +#define HID_USAGE_SIM_ANTI_TORQUE_CONTROL (0xB2) // DV +#define HID_USAGE_SIM_AUTOPILOT_ENABLE (0xB3) // OOC +#define HID_USAGE_SIM_CHAFF_RELEASE (0xB4) // OSC +#define HID_USAGE_SIM_COLLECTIVE_CONTROL (0xB5) // DV +#define HID_USAGE_SIM_DIVE_BRAKE (0xB6) // DV +#define HID_USAGE_SIM_ELECTRONIC_COUNTERMEASURES (0xB7) // OOC +#define HID_USAGE_SIM_ELEVATOR (0xB8) // DV +#define HID_USAGE_SIM_ELEVATOR_TRIM (0xB9) // DV +#define HID_USAGE_SIM_RUDDER (0xBA) // DV +#define HID_USAGE_SIM_THROTTLE (0xBB) // DV +#define HID_USAGE_SIM_FLIGHT_COMMUNICATIONS (0xBC) // OOC +#define HID_USAGE_SIM_FLARE_RELEASE (0xBD) // OSC +#define HID_USAGE_SIM_LANDING_GEAR (0xBE) // OOC +#define HID_USAGE_SIM_TOE_BRAKE (0xBF) // DV +#define HID_USAGE_SIM_TRIGGER (0xC0) // MC +#define HID_USAGE_SIM_WEAPONS_ARM (0xC1) // OOC +#define HID_USAGE_SIM_WEAPONS_SELECT (0xC2) // OSC +#define HID_USAGE_SIM_WING_FLAPS (0xC3) // DV +#define HID_USAGE_SIM_ACCELERATOR (0xC4) // DV +#define HID_USAGE_SIM_BRAKE (0xC5) // DV +#define HID_USAGE_SIM_CLUTCH (0xC6) // DV +#define HID_USAGE_SIM_SHIFTER (0xC7) // DV +#define HID_USAGE_SIM_STEERING (0xC8) // DV +#define HID_USAGE_SIM_TURRET_DIRECTION (0xC9) // DV +#define HID_USAGE_SIM_BARREL_ELEVATION (0xCA) // DV +#define HID_USAGE_SIM_DIVE_PLANE (0xCB) // DV +#define HID_USAGE_SIM_BALLAST (0xCC) // DV +#define HID_USAGE_SIM_BICYCLE_CRANK (0xCD) // DV +#define HID_USAGE_SIM_HANDLE_BARS (0xCE) // DV +#define HID_USAGE_SIM_FRONT_BRAKE (0xCF) // DV +#define HID_USAGE_SIM_REAR_BRAKE (0xD0) // DV + +/* Page 0x03: VR Controls */ +#define HID_USAGE_VR_UNDEFINED (0x00) +#define HID_USAGE_VR_BELT (0x01) // CA +#define HID_USAGE_VR_BODY_SUIT (0x02) // CA +#define HID_USAGE_VR_FLEXOR (0x03) // CP +#define HID_USAGE_VR_GLOVE (0x04) // CA +#define HID_USAGE_VR_HEAD_TRACKER (0x05) // CP +#define HID_USAGE_VR_HEAD_MOUNTED_DISPLAY (0x06) // CA +#define HID_USAGE_VR_HAND_TRACKER (0x07) // CA +#define HID_USAGE_VR_OCULOMETER (0x08) // CA +#define HID_USAGE_VR_VEST (0x09) // CA +#define HID_USAGE_VR_ANIMATRONIC_DEVICE (0x0A) // CA +#define HID_USAGE_VR_STEREO_ENABLE (0x20) // OOC +#define HID_USAGE_VR_DISPLAY_ENABLE (0x21) // OOC + +/* Page 0x04: Sport Controls */ +#define HID_USAGE_SPORT_UNDEFINED (0x00) +#define HID_USAGE_SPORT_BASEBALL_BAT (0x01) // CA +#define HID_USAGE_SPORT_GOLF_CLUB (0x02) // CA +#define HID_USAGE_SPORT_ROWING_MACHINE (0x03) // CA +#define HID_USAGE_SPORT_TREADMILL (0x04) // CA +#define HID_USAGE_SPORT_OAR (0x30) // DV +#define HID_USAGE_SPORT_SLOPE (0x31) // DV +#define HID_USAGE_SPORT_RATE (0x32) // DV +#define HID_USAGE_SPORT_STICK_SPEED (0x33) // DV +#define HID_USAGE_SPORT_STICK_FACE_ANGLE (0x34) // DV +#define HID_USAGE_SPORT_STICK_HEEL_TOE (0x35) // DV +#define HID_USAGE_SPORT_STICK_FOLLOW_THROUGH (0x36) // DV +#define HID_USAGE_SPORT_STICK_TEMPO (0x37) // DV +#define HID_USAGE_SPORT_STICK_TYPE (0x38) // NAry +#define HID_USAGE_SPORT_STICK_HEIGHT (0x39) // DV +#define HID_USAGE_SPORT_PUTTER (0x50) // Sel +#define HID_USAGE_SPORT_1_IRON (0x51) // Sel +#define HID_USAGE_SPORT_2_IRON (0x52) // Sel +#define HID_USAGE_SPORT_3_IRON (0x53) // Sel +#define HID_USAGE_SPORT_4_IRON (0x54) // Sel +#define HID_USAGE_SPORT_5_IRON (0x55) // Sel +#define HID_USAGE_SPORT_6_IRON (0x56) // Sel +#define HID_USAGE_SPORT_7_IRON (0x57) // Sel +#define HID_USAGE_SPORT_8_IRON (0x58) // Sel +#define HID_USAGE_SPORT_9_IRON (0x59) // Sel +#define HID_USAGE_SPORT_10_IRON (0x5A) // Sel +#define HID_USAGE_SPORT_11_IRON (0x5B) // Sel +#define HID_USAGE_SPORT_SAND_WEDGE (0x5C) // Sel +#define HID_USAGE_SPORT_LOFT_WEDGE (0x5D) // Sel +#define HID_USAGE_SPORT_POWER_WEDGE (0x5E) // Sel +#define HID_USAGE_SPORT_1_WOOD (0x5F) // Sel +#define HID_USAGE_SPORT_3_WOOD (0x60) // Sel +#define HID_USAGE_SPORT_5_WOOD (0x61) // Sel +#define HID_USAGE_SPORT_7_WOOD (0x62) // Sel +#define HID_USAGE_SPORT_9_WOOD (0x63) // Sel + +/* Page 0x05: Game Controls */ +#define HID_USAGE_GAME_UNDEFINED (0x00) +#define HID_USAGE_GAME_3D_GAME_CONTROLLER (0x01) // CA +#define HID_USAGE_GAME_PINBALL_DEVICE (0x02) // CA +#define HID_USAGE_GAME_GUN_DEVICE (0x03) // CA +#define HID_USAGE_GAME_POINT_OF_VIEW (0x20) // CP +#define HID_USAGE_GAME_TURN_RIGHT_LEFT (0x21) // DV +#define HID_USAGE_GAME_PITCH_FORWARD_BACKWARD (0x22) // DV +#define HID_USAGE_GAME_ROLL_RIGHT_LEFT (0x23) // DV +#define HID_USAGE_GAME_MOVE_RIGHT_LEFT (0x24) // DV +#define HID_USAGE_GAME_MOVE_FORWARD_BACKWARD (0x25) // DV +#define HID_USAGE_GAME_MOVE_UP_DOWN (0x26) // DV +#define HID_USAGE_GAME_LEAN_RIGHT_LEFT (0x27) // DV +#define HID_USAGE_GAME_LEAN_FORWARD_BACKWARD (0x28) // DV +#define HID_USAGE_GAME_HEIGHT_OF_POV (0x29) // DV +#define HID_USAGE_GAME_FLIPPER (0x2A) // MC +#define HID_USAGE_GAME_SECONDARY_FLIPPER (0x2B) // MC +#define HID_USAGE_GAME_BUMP (0x2C) // MC +#define HID_USAGE_GAME_NEW_GAME (0x2D) // OSC +#define HID_USAGE_GAME_SHOOT_BALL (0x2E) // OSC +#define HID_USAGE_GAME_PLAYER (0x2F) // OSC +#define HID_USAGE_GAME_GUN_BOLT (0x30) // OOC +#define HID_USAGE_GAME_GUN_CLIP (0x31) // OOC +#define HID_USAGE_GAME_GUN_SELECTOR (0x32) // NAry +#define HID_USAGE_GAME_GUN_SINGLE_SHOT (0x33) // Sel +#define HID_USAGE_GAME_GUN_BURST (0x34) // Sel +#define HID_USAGE_GAME_GUN_AUTOMATIC (0x35) // Sel +#define HID_USAGE_GAME_GUN_SAFETY (0x36) // OOC +#define HID_USAGE_GAME_GAMEPAD_FIRE_JUMP (0x37) // CL +#define HID_USAGE_GAME_GAMEPAD_TRIGGER (0x39) // CL +#define HID_USAGE_GAME_FORM_FITTING_GAMEPAD (0x3A) // SF + +/* Page 0x06: Generic Device Controls */ +#define HID_USAGE_GDV_UNDEFINED (0x00) +#define HID_USAGE_GDV_BACKGROUND_NONUSER_CONTROLS (0x01) // CA +#define HID_USAGE_GDV_BATTERY_STRENGTH (0x20) // DV +#define HID_USAGE_GDV_WIRELESS_CHANNEL (0x21) // DV +#define HID_USAGE_GDV_WIRELESS_ID (0x22) // DV +#define HID_USAGE_GDV_DISCOVER_WIRELESS_CONTROL (0x23) // OSC +#define HID_USAGE_GDV_SECURITY_CODE_CHARACTER_ENTERED (0x24) // OSC +#define HID_USAGE_GDV_SECURITY_CODE_CHARACTER_ERASED (0x25) // OSC +#define HID_USAGE_GDV_SECURITY_CODE_CLEARED (0x26) // OSC +#define HID_USAGE_GDV_SEQUENCE_ID (0x27) // DV +#define HID_USAGE_GDV_SEQUENCE_ID_RESET (0x28) // DF +#define HID_USAGE_GDV_RF_SIGNAL_STRENGTH (0x29) // DV +#define HID_USAGE_GDV_SOFTWARE_VERSION (0x2A) // CL +#define HID_USAGE_GDV_PROTOCOL_VERSION (0x2B) // CL +#define HID_USAGE_GDV_HARDWARE_VERSION (0x2C) // CL +#define HID_USAGE_GDV_MAJOR (0x2D) // SV +#define HID_USAGE_GDV_MINOR (0x2E) // SV +#define HID_USAGE_GDV_REVISION (0x2F) // SV +#define HID_USAGE_GDV_HANDEDNESS (0x30) // NAry +#define HID_USAGE_GDV_EITHER_HAND (0x31) // Sel +#define HID_USAGE_GDV_LEFT_HAND (0x32) // Sel +#define HID_USAGE_GDV_RIGHT_HAND (0x33) // Sel +#define HID_USAGE_GDV_BOTH_HANDS (0x34) // Sel +#define HID_USAGE_GDV_GRIP_POSE_OFFSET (0x40) // CP +#define HID_USAGE_GDV_POINTER_POSE_OFFSET (0x41) // CP + +/* Page 0x07: Keyboard/Keypad */ +#define HID_USAGE_KEY_KEYBOARD_ERRORROLLOVER (0x01) // Sel +#define HID_USAGE_KEY_KEYBOARD_POSTFAIL (0x02) // Sel +#define HID_USAGE_KEY_KEYBOARD_ERRORUNDEFINED (0x03) // Sel +#define HID_USAGE_KEY_KEYBOARD_A (0x04) // Sel +#define HID_USAGE_KEY_KEYBOARD_B (0x05) // Sel +#define HID_USAGE_KEY_KEYBOARD_C (0x06) // Sel +#define HID_USAGE_KEY_KEYBOARD_D (0x07) // Sel +#define HID_USAGE_KEY_KEYBOARD_E (0x08) // Sel +#define HID_USAGE_KEY_KEYBOARD_F (0x09) // Sel +#define HID_USAGE_KEY_KEYBOARD_G (0x0A) // Sel +#define HID_USAGE_KEY_KEYBOARD_H (0x0B) // Sel +#define HID_USAGE_KEY_KEYBOARD_I (0x0C) // Sel +#define HID_USAGE_KEY_KEYBOARD_J (0x0D) // Sel +#define HID_USAGE_KEY_KEYBOARD_K (0x0E) // Sel +#define HID_USAGE_KEY_KEYBOARD_L (0x0F) // Sel +#define HID_USAGE_KEY_KEYBOARD_M (0x10) // Sel +#define HID_USAGE_KEY_KEYBOARD_N (0x11) // Sel +#define HID_USAGE_KEY_KEYBOARD_O (0x12) // Sel +#define HID_USAGE_KEY_KEYBOARD_P (0x13) // Sel +#define HID_USAGE_KEY_KEYBOARD_Q (0x14) // Sel +#define HID_USAGE_KEY_KEYBOARD_R (0x15) // Sel +#define HID_USAGE_KEY_KEYBOARD_S (0x16) // Sel +#define HID_USAGE_KEY_KEYBOARD_T (0x17) // Sel +#define HID_USAGE_KEY_KEYBOARD_U (0x18) // Sel +#define HID_USAGE_KEY_KEYBOARD_V (0x19) // Sel +#define HID_USAGE_KEY_KEYBOARD_W (0x1A) // Sel +#define HID_USAGE_KEY_KEYBOARD_X (0x1B) // Sel +#define HID_USAGE_KEY_KEYBOARD_Y (0x1C) // Sel +#define HID_USAGE_KEY_KEYBOARD_Z (0x1D) // Sel +#define HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION (0x1E) // Sel +#define HID_USAGE_KEY_KEYBOARD_2_AND_AT (0x1F) // Sel +#define HID_USAGE_KEY_KEYBOARD_3_AND_HASH (0x20) // Sel +#define HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR (0x21) // Sel +#define HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT (0x22) // Sel +#define HID_USAGE_KEY_KEYBOARD_6_AND_CARET (0x23) // Sel +#define HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND (0x24) // Sel +#define HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK (0x25) // Sel +#define HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS (0x26) // Sel +#define HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS (0x27) // Sel +#define HID_USAGE_KEY_KEYBOARD_RETURN_ENTER (0x28) // Sel +#define HID_USAGE_KEY_KEYBOARD_ESCAPE (0x29) // Sel +#define HID_USAGE_KEY_KEYBOARD_DELETE_BACKSPACE (0x2A) // Sel +#define HID_USAGE_KEY_KEYBOARD_TAB (0x2B) // Sel +#define HID_USAGE_KEY_KEYBOARD_SPACEBAR (0x2C) // Sel +#define HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE (0x2D) // Sel +#define HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS (0x2E) // Sel +#define HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE (0x2F) // Sel +#define HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE (0x30) // Sel +#define HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE (0x31) // Sel +#define HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE (0x32) // Sel +#define HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON (0x33) // Sel +#define HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE (0x34) // Sel +#define HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE (0x35) // Sel +#define HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN (0x36) // Sel +#define HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN (0x37) // Sel +#define HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK (0x38) // Sel +#define HID_USAGE_KEY_KEYBOARD_CAPS_LOCK (0x39) // Sel +#define HID_USAGE_KEY_KEYBOARD_F1 (0x3A) // Sel +#define HID_USAGE_KEY_KEYBOARD_F2 (0x3B) // Sel +#define HID_USAGE_KEY_KEYBOARD_F3 (0x3C) // Sel +#define HID_USAGE_KEY_KEYBOARD_F4 (0x3D) // Sel +#define HID_USAGE_KEY_KEYBOARD_F5 (0x3E) // Sel +#define HID_USAGE_KEY_KEYBOARD_F6 (0x3F) // Sel +#define HID_USAGE_KEY_KEYBOARD_F7 (0x40) // Sel +#define HID_USAGE_KEY_KEYBOARD_F8 (0x41) // Sel +#define HID_USAGE_KEY_KEYBOARD_F9 (0x42) // Sel +#define HID_USAGE_KEY_KEYBOARD_F10 (0x43) // Sel +#define HID_USAGE_KEY_KEYBOARD_F11 (0x44) // Sel +#define HID_USAGE_KEY_KEYBOARD_F12 (0x45) // Sel +#define HID_USAGE_KEY_KEYBOARD_PRINTSCREEN (0x46) // Sel +#define HID_USAGE_KEY_KEYBOARD_SCROLL_LOCK (0x47) // Sel +#define HID_USAGE_KEY_KEYBOARD_PAUSE (0x48) // Sel +#define HID_USAGE_KEY_KEYBOARD_INSERT (0x49) // Sel +#define HID_USAGE_KEY_KEYBOARD_HOME (0x4A) // Sel +#define HID_USAGE_KEY_KEYBOARD_PAGEUP (0x4B) // Sel +#define HID_USAGE_KEY_KEYBOARD_DELETE_FORWARD (0x4C) // Sel +#define HID_USAGE_KEY_KEYBOARD_END (0x4D) // Sel +#define HID_USAGE_KEY_KEYBOARD_PAGEDOWN (0x4E) // Sel +#define HID_USAGE_KEY_KEYBOARD_RIGHTARROW (0x4F) // Sel +#define HID_USAGE_KEY_KEYBOARD_LEFTARROW (0x50) // Sel +#define HID_USAGE_KEY_KEYBOARD_DOWNARROW (0x51) // Sel +#define HID_USAGE_KEY_KEYBOARD_UPARROW (0x52) // Sel +#define HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR (0x53) // Sel +#define HID_USAGE_KEY_KEYPAD_SLASH (0x54) // Sel +#define HID_USAGE_KEY_KEYPAD_ASTERISK (0x55) // Sel +#define HID_USAGE_KEY_KEYPAD_MINUS (0x56) // Sel +#define HID_USAGE_KEY_KEYPAD_PLUS (0x57) // Sel +#define HID_USAGE_KEY_KEYPAD_ENTER (0x58) // Sel +#define HID_USAGE_KEY_KEYPAD_1_AND_END (0x59) // Sel +#define HID_USAGE_KEY_KEYPAD_2_AND_DOWN_ARROW (0x5A) // Sel +#define HID_USAGE_KEY_KEYPAD_3_AND_PAGEDN (0x5B) // Sel +#define HID_USAGE_KEY_KEYPAD_4_AND_LEFT_ARROW (0x5C) // Sel +#define HID_USAGE_KEY_KEYPAD_5 (0x5D) // Sel +#define HID_USAGE_KEY_KEYPAD_6_AND_RIGHT_ARROW (0x5E) // Sel +#define HID_USAGE_KEY_KEYPAD_7_AND_HOME (0x5F) // Sel +#define HID_USAGE_KEY_KEYPAD_8_AND_UP_ARROW (0x60) // Sel +#define HID_USAGE_KEY_KEYPAD_9_AND_PAGEUP (0x61) // Sel +#define HID_USAGE_KEY_KEYPAD_0_AND_INSERT (0x62) // Sel +#define HID_USAGE_KEY_KEYPAD_PERIOD_AND_DELETE (0x63) // Sel +#define HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE (0x64) // Sel +#define HID_USAGE_KEY_KEYBOARD_APPLICATION (0x65) // Sel +#define HID_USAGE_KEY_KEYBOARD_POWER (0x66) // Sel +#define HID_USAGE_KEY_KEYPAD_EQUAL (0x67) // Sel +#define HID_USAGE_KEY_KEYBOARD_F13 (0x68) // Sel +#define HID_USAGE_KEY_KEYBOARD_F14 (0x69) // Sel +#define HID_USAGE_KEY_KEYBOARD_F15 (0x6A) // Sel +#define HID_USAGE_KEY_KEYBOARD_F16 (0x6B) // Sel +#define HID_USAGE_KEY_KEYBOARD_F17 (0x6C) // Sel +#define HID_USAGE_KEY_KEYBOARD_F18 (0x6D) // Sel +#define HID_USAGE_KEY_KEYBOARD_F19 (0x6E) // Sel +#define HID_USAGE_KEY_KEYBOARD_F20 (0x6F) // Sel +#define HID_USAGE_KEY_KEYBOARD_F21 (0x70) // Sel +#define HID_USAGE_KEY_KEYBOARD_F22 (0x71) // Sel +#define HID_USAGE_KEY_KEYBOARD_F23 (0x72) // Sel +#define HID_USAGE_KEY_KEYBOARD_F24 (0x73) // Sel +#define HID_USAGE_KEY_KEYBOARD_EXECUTE (0x74) // Sel +#define HID_USAGE_KEY_KEYBOARD_HELP (0x75) // Sel +#define HID_USAGE_KEY_KEYBOARD_MENU (0x76) // Sel +#define HID_USAGE_KEY_KEYBOARD_SELECT (0x77) // Sel +#define HID_USAGE_KEY_KEYBOARD_STOP (0x78) // Sel +#define HID_USAGE_KEY_KEYBOARD_AGAIN (0x79) // Sel +#define HID_USAGE_KEY_KEYBOARD_UNDO (0x7A) // Sel +#define HID_USAGE_KEY_KEYBOARD_CUT (0x7B) // Sel +#define HID_USAGE_KEY_KEYBOARD_COPY (0x7C) // Sel +#define HID_USAGE_KEY_KEYBOARD_PASTE (0x7D) // Sel +#define HID_USAGE_KEY_KEYBOARD_FIND (0x7E) // Sel +#define HID_USAGE_KEY_KEYBOARD_MUTE (0x7F) // Sel +#define HID_USAGE_KEY_KEYBOARD_VOLUME_UP (0x80) // Sel +#define HID_USAGE_KEY_KEYBOARD_VOLUME_DOWN (0x81) // Sel +#define HID_USAGE_KEY_KEYBOARD_LOCKING_CAPS_LOCK (0x82) // Sel +#define HID_USAGE_KEY_KEYBOARD_LOCKING_NUM_LOCK (0x83) // Sel +#define HID_USAGE_KEY_KEYBOARD_LOCKING_SCROLL_LOCK (0x84) // Sel +#define HID_USAGE_KEY_KEYPAD_COMMA (0x85) // Sel +#define HID_USAGE_KEY_KEYPAD_EQUAL_SIGN (0x86) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL1 (0x87) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL2 (0x88) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL3 (0x89) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL4 (0x8A) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL5 (0x8B) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL6 (0x8C) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL7 (0x8D) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL8 (0x8E) // Sel +#define HID_USAGE_KEY_KEYBOARD_INTERNATIONAL9 (0x8F) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG1 (0x90) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG2 (0x91) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG3 (0x92) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG4 (0x93) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG5 (0x94) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG6 (0x95) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG7 (0x96) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG8 (0x97) // Sel +#define HID_USAGE_KEY_KEYBOARD_LANG9 (0x98) // Sel +#define HID_USAGE_KEY_KEYBOARD_ALTERNATE_ERASE (0x99) // Sel +#define HID_USAGE_KEY_KEYBOARD_SYSREQ_ATTENTION (0x9A) // Sel +#define HID_USAGE_KEY_KEYBOARD_CANCEL (0x9B) // Sel +#define HID_USAGE_KEY_KEYBOARD_CLEAR (0x9C) // Sel +#define HID_USAGE_KEY_KEYBOARD_PRIOR (0x9D) // Sel +#define HID_USAGE_KEY_KEYBOARD_RETURN (0x9E) // Sel +#define HID_USAGE_KEY_KEYBOARD_SEPARATOR (0x9F) // Sel +#define HID_USAGE_KEY_KEYBOARD_OUT (0xA0) // Sel +#define HID_USAGE_KEY_KEYBOARD_OPER (0xA1) // Sel +#define HID_USAGE_KEY_KEYBOARD_CLEAR_AGAIN (0xA2) // Sel +#define HID_USAGE_KEY_KEYBOARD_CRSEL_PROPS (0xA3) // Sel +#define HID_USAGE_KEY_KEYBOARD_EXSEL (0xA4) // Sel +#define HID_USAGE_KEY_KEYPAD_00 (0xB0) // Sel +#define HID_USAGE_KEY_KEYPAD_000 (0xB1) // Sel +#define HID_USAGE_KEY_THOUSANDS_SEPARATOR (0xB2) // Sel +#define HID_USAGE_KEY_DECIMAL_SEPARATOR (0xB3) // Sel +#define HID_USAGE_KEY_CURRENCY_UNIT (0xB4) // Sel +#define HID_USAGE_KEY_CURRENCY_SUB_UNIT (0xB5) // Sel +#define HID_USAGE_KEY_KEYPAD_LEFT_PARENTHESIS (0xB6) // Sel +#define HID_USAGE_KEY_KEYPAD_RIGHT_PARENTHESIS (0xB7) // Sel +#define HID_USAGE_KEY_KEYPAD_LEFT_BRACE (0xB8) // Sel +#define HID_USAGE_KEY_KEYPAD_RIGHT_BRACE (0xB9) // Sel +#define HID_USAGE_KEY_KEYPAD_TAB (0xBA) // Sel +#define HID_USAGE_KEY_KEYPAD_BACKSPACE (0xBB) // Sel +#define HID_USAGE_KEY_KEYPAD_A (0xBC) // Sel +#define HID_USAGE_KEY_KEYPAD_B (0xBD) // Sel +#define HID_USAGE_KEY_KEYPAD_C (0xBE) // Sel +#define HID_USAGE_KEY_KEYPAD_D (0xBF) // Sel +#define HID_USAGE_KEY_KEYPAD_E (0xC0) // Sel +#define HID_USAGE_KEY_KEYPAD_F (0xC1) // Sel +#define HID_USAGE_KEY_KEYPAD_XOR (0xC2) // Sel +#define HID_USAGE_KEY_KEYPAD_CARET (0xC3) // Sel +#define HID_USAGE_KEY_KEYPAD_PERCENT (0xC4) // Sel +#define HID_USAGE_KEY_KEYPAD_LESS_THAN (0xC5) // Sel +#define HID_USAGE_KEY_KEYPAD_GREATER_THAN (0xC6) // Sel +#define HID_USAGE_KEY_KEYPAD_AMPERSAND (0xC7) // Sel +#define HID_USAGE_KEY_KEYPAD_AMPERSAND_AMPERSAND (0xC8) // Sel +#define HID_USAGE_KEY_KEYPAD_PIPE (0xC9) // Sel +#define HID_USAGE_KEY_KEYPAD_PIPE_PIPE (0xCA) // Sel +#define HID_USAGE_KEY_KEYPAD_COLON (0xCB) // Sel +#define HID_USAGE_KEY_KEYPAD_HASH (0xCC) // Sel +#define HID_USAGE_KEY_KEYPAD_SPACE (0xCD) // Sel +#define HID_USAGE_KEY_KEYPAD_AT (0xCE) // Sel +#define HID_USAGE_KEY_KEYPAD_EXCLAMATION (0xCF) // Sel +#define HID_USAGE_KEY_KEYPAD_MEMORY_STORE (0xD0) // Sel +#define HID_USAGE_KEY_KEYPAD_MEMORY_RECALL (0xD1) // Sel +#define HID_USAGE_KEY_KEYPAD_MEMORY_CLEAR (0xD2) // Sel +#define HID_USAGE_KEY_KEYPAD_MEMORY_ADD (0xD3) // Sel +#define HID_USAGE_KEY_KEYPAD_MEMORY_SUBTRACT (0xD4) // Sel +#define HID_USAGE_KEY_KEYPAD_MEMORY_MULTIPLY (0xD5) // Sel +#define HID_USAGE_KEY_KEYPAD_MEMORY_DIVIDE (0xD6) // Sel +#define HID_USAGE_KEY_KEYPAD_PLUS_MINUS (0xD7) // Sel +#define HID_USAGE_KEY_KEYPAD_CLEAR (0xD8) // Sel +#define HID_USAGE_KEY_KEYPAD_CLEAR_ENTRY (0xD9) // Sel +#define HID_USAGE_KEY_KEYPAD_BINARY (0xDA) // Sel +#define HID_USAGE_KEY_KEYPAD_OCTAL (0xDB) // Sel +#define HID_USAGE_KEY_KEYPAD_DECIMAL (0xDC) // Sel +#define HID_USAGE_KEY_KEYPAD_HEXADECIMAL (0xDD) // Sel +#define HID_USAGE_KEY_KEYBOARD_LEFTCONTROL (0xE0) // DV +#define HID_USAGE_KEY_KEYBOARD_LEFTSHIFT (0xE1) // DV +#define HID_USAGE_KEY_KEYBOARD_LEFTALT (0xE2) // DV +#define HID_USAGE_KEY_KEYBOARD_LEFT_GUI (0xE3) // DV +#define HID_USAGE_KEY_KEYBOARD_RIGHTCONTROL (0xE4) // DV +#define HID_USAGE_KEY_KEYBOARD_RIGHTSHIFT (0xE5) // DV +#define HID_USAGE_KEY_KEYBOARD_RIGHTALT (0xE6) // DV +#define HID_USAGE_KEY_KEYBOARD_RIGHT_GUI (0xE7) // DV + +/* Page 0x08: LED */ +#define HID_USAGE_LED_UNDEFINED (0x00) +#define HID_USAGE_LED_NUM_LOCK (0x01) // OOC +#define HID_USAGE_LED_CAPS_LOCK (0x02) // OOC +#define HID_USAGE_LED_SCROLL_LOCK (0x03) // OOC +#define HID_USAGE_LED_COMPOSE (0x04) // OOC +#define HID_USAGE_LED_KANA (0x05) // OOC +#define HID_USAGE_LED_POWER (0x06) // OOC +#define HID_USAGE_LED_SHIFT (0x07) // OOC +#define HID_USAGE_LED_DO_NOT_DISTURB (0x08) // OOC +#define HID_USAGE_LED_MUTE (0x09) // OOC +#define HID_USAGE_LED_TONE_ENABLE (0x0A) // OOC +#define HID_USAGE_LED_HIGH_CUT_FILTER (0x0B) // OOC +#define HID_USAGE_LED_LOW_CUT_FILTER (0x0C) // OOC +#define HID_USAGE_LED_EQUALIZER_ENABLE (0x0D) // OOC +#define HID_USAGE_LED_SOUND_FIELD_ON (0x0E) // OOC +#define HID_USAGE_LED_SURROUND_ON (0x0F) // OOC +#define HID_USAGE_LED_REPEAT (0x10) // OOC +#define HID_USAGE_LED_STEREO (0x11) // OOC +#define HID_USAGE_LED_SAMPLING_RATE_DETECT (0x12) // OOC +#define HID_USAGE_LED_SPINNING (0x13) // OOC +#define HID_USAGE_LED_CAV (0x14) // OOC +#define HID_USAGE_LED_CLV (0x15) // OOC +#define HID_USAGE_LED_RECORDING_FORMAT_DETECT (0x16) // OOC +#define HID_USAGE_LED_OFF_HOOK (0x17) // OOC +#define HID_USAGE_LED_RING (0x18) // OOC +#define HID_USAGE_LED_MESSAGE_WAITING (0x19) // OOC +#define HID_USAGE_LED_DATA_MODE (0x1A) // OOC +#define HID_USAGE_LED_BATTERY_OPERATION (0x1B) // OOC +#define HID_USAGE_LED_BATTERY_OK (0x1C) // OOC +#define HID_USAGE_LED_BATTERY_LOW (0x1D) // OOC +#define HID_USAGE_LED_SPEAKER (0x1E) // OOC +#define HID_USAGE_LED_HEAD_SET (0x1F) // OOC +#define HID_USAGE_LED_HOLD (0x20) // OOC +#define HID_USAGE_LED_MICROPHONE (0x21) // OOC +#define HID_USAGE_LED_COVERAGE (0x22) // OOC +#define HID_USAGE_LED_NIGHT_MODE (0x23) // OOC +#define HID_USAGE_LED_SEND_CALLS (0x24) // OOC +#define HID_USAGE_LED_CALL_PICKUP (0x25) // OOC +#define HID_USAGE_LED_CONFERENCE (0x26) // OOC +#define HID_USAGE_LED_STAND_BY (0x27) // OOC +#define HID_USAGE_LED_CAMERA_ON (0x28) // OOC +#define HID_USAGE_LED_CAMERA_OFF (0x29) // OOC +#define HID_USAGE_LED_ON_LINE (0x2A) // OOC +#define HID_USAGE_LED_OFF_LINE (0x2B) // OOC +#define HID_USAGE_LED_BUSY (0x2C) // OOC +#define HID_USAGE_LED_READY (0x2D) // OOC +#define HID_USAGE_LED_PAPER_OUT (0x2E) // OOC +#define HID_USAGE_LED_PAPER_JAM (0x2F) // OOC +#define HID_USAGE_LED_REMOTE (0x30) // OOC +#define HID_USAGE_LED_FORWARD (0x31) // OOC +#define HID_USAGE_LED_REVERSE (0x32) // OOC +#define HID_USAGE_LED_STOP (0x33) // OOC +#define HID_USAGE_LED_REWIND (0x34) // OOC +#define HID_USAGE_LED_FAST_FORWARD (0x35) // OOC +#define HID_USAGE_LED_PLAY (0x36) // OOC +#define HID_USAGE_LED_PAUSE (0x37) // OOC +#define HID_USAGE_LED_RECORD (0x38) // OOC +#define HID_USAGE_LED_ERROR (0x39) // OOC +#define HID_USAGE_LED_USAGE_SELECTED_INDICATOR (0x3A) // US +#define HID_USAGE_LED_USAGE_IN_USE_INDICATOR (0x3B) // US +#define HID_USAGE_LED_USAGE_MULTI_MODE_INDICATOR (0x3C) // UM +#define HID_USAGE_LED_INDICATOR_ON (0x3D) // Sel +#define HID_USAGE_LED_INDICATOR_FLASH (0x3E) // Sel +#define HID_USAGE_LED_INDICATOR_SLOW_BLINK (0x3F) // Sel +#define HID_USAGE_LED_INDICATOR_FAST_BLINK (0x40) // Sel +#define HID_USAGE_LED_INDICATOR_OFF (0x41) // Sel +#define HID_USAGE_LED_FLASH_ON_TIME (0x42) // DV +#define HID_USAGE_LED_SLOW_BLINK_ON_TIME (0x43) // DV +#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME (0x44) // DV +#define HID_USAGE_LED_FAST_BLINK_ON_TIME (0x45) // DV +#define HID_USAGE_LED_FAST_BLINK_OFF_TIME (0x46) // DV +#define HID_USAGE_LED_USAGE_INDICATOR_COLOR (0x47) // UM +#define HID_USAGE_LED_INDICATOR_RED (0x48) // Sel +#define HID_USAGE_LED_INDICATOR_GREEN (0x49) // Sel +#define HID_USAGE_LED_INDICATOR_AMBER (0x4A) // Sel +#define HID_USAGE_LED_GENERIC_INDICATOR (0x4B) // OOC +#define HID_USAGE_LED_SYSTEM_SUSPEND (0x4C) // OOC +#define HID_USAGE_LED_EXTERNAL_POWER_CONNECTED (0x4D) // OOC +#define HID_USAGE_LED_INDICATOR_BLUE (0x4E) // Sel +#define HID_USAGE_LED_INDICATOR_ORANGE (0x4F) // Sel +#define HID_USAGE_LED_GOOD_STATUS (0x50) // OOC +#define HID_USAGE_LED_WARNING_STATUS (0x51) // OOC +#define HID_USAGE_LED_RGB_LED (0x52) // CL +#define HID_USAGE_LED_RED_LED_CHANNEL (0x53) // DV +#define HID_USAGE_LED_BLUE_LED_CHANNEL (0x54) // DV +#define HID_USAGE_LED_GREEN_LED_CHANNEL (0x55) // DV +#define HID_USAGE_LED_LED_INTENSITY (0x56) // DV +#define HID_USAGE_LED_PLAYER_INDICATOR (0x60) // NAry +#define HID_USAGE_LED_PLAYER_1 (0x61) // Sel +#define HID_USAGE_LED_PLAYER_2 (0x62) // Sel +#define HID_USAGE_LED_PLAYER_3 (0x63) // Sel +#define HID_USAGE_LED_PLAYER_4 (0x64) // Sel +#define HID_USAGE_LED_PLAYER_5 (0x65) // Sel +#define HID_USAGE_LED_PLAYER_6 (0x66) // Sel +#define HID_USAGE_LED_PLAYER_7 (0x67) // Sel +#define HID_USAGE_LED_PLAYER_8 (0x68) // Sel + +/* Page 0x0B: Telephony Device */ +#define HID_USAGE_TELEPHONY_UNDEFINED (0x00) +#define HID_USAGE_TELEPHONY_PHONE (0x01) // CA +#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE (0x02) // CA +#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS (0x03) // CL +#define HID_USAGE_TELEPHONY_HANDSET (0x04) // CL +#define HID_USAGE_TELEPHONY_HEADSET (0x05) // CL +#define HID_USAGE_TELEPHONY_TELEPHONY_KEY_PAD (0x06) // NAry +#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON (0x07) // NAry +#define HID_USAGE_TELEPHONY_HOOK_SWITCH (0x20) // OOC +#define HID_USAGE_TELEPHONY_FLASH (0x21) // MC +#define HID_USAGE_TELEPHONY_FEATURE (0x22) // OSC +#define HID_USAGE_TELEPHONY_HOLD (0x23) // OOC +#define HID_USAGE_TELEPHONY_REDIAL (0x24) // OSC +#define HID_USAGE_TELEPHONY_TRANSFER (0x25) // OSC +#define HID_USAGE_TELEPHONY_DROP (0x26) // OSC +#define HID_USAGE_TELEPHONY_PARK (0x27) // OOC +#define HID_USAGE_TELEPHONY_FORWARD_CALLS (0x28) // OOC +#define HID_USAGE_TELEPHONY_ALTERNATE_FUNCTION (0x29) // MC +#define HID_USAGE_TELEPHONY_LINE (0x2A) // OSC, NAry +#define HID_USAGE_TELEPHONY_SPEAKER_PHONE (0x2B) // OOC +#define HID_USAGE_TELEPHONY_CONFERENCE (0x2C) // OOC +#define HID_USAGE_TELEPHONY_RING_ENABLE (0x2D) // OOC +#define HID_USAGE_TELEPHONY_RING_SELECT (0x2E) // OSC +#define HID_USAGE_TELEPHONY_PHONE_MUTE (0x2F) // OOC +#define HID_USAGE_TELEPHONY_CALLER_ID (0x30) // MC +#define HID_USAGE_TELEPHONY_SEND (0x31) // OOC +#define HID_USAGE_TELEPHONY_SPEED_DIAL (0x50) // OSC +#define HID_USAGE_TELEPHONY_STORE_NUMBER (0x51) // OSC +#define HID_USAGE_TELEPHONY_RECALL_NUMBER (0x52) // OSC +#define HID_USAGE_TELEPHONY_PHONE_DIRECTORY (0x53) // OOC +#define HID_USAGE_TELEPHONY_VOICE_MAIL (0x70) // OOC +#define HID_USAGE_TELEPHONY_SCREEN_CALLS (0x71) // OOC +#define HID_USAGE_TELEPHONY_DO_NOT_DISTURB (0x72) // OOC +#define HID_USAGE_TELEPHONY_MESSAGE (0x73) // OSC +#define HID_USAGE_TELEPHONY_ANSWER_ON_OFF (0x74) // OOC +#define HID_USAGE_TELEPHONY_INSIDE_DIAL_TONE (0x90) // MC +#define HID_USAGE_TELEPHONY_OUTSIDE_DIAL_TONE (0x91) // MC +#define HID_USAGE_TELEPHONY_INSIDE_RING_TONE (0x92) // MC +#define HID_USAGE_TELEPHONY_OUTSIDE_RING_TONE (0x93) // MC +#define HID_USAGE_TELEPHONY_PRIORITY_RING_TONE (0x94) // MC +#define HID_USAGE_TELEPHONY_INSIDE_RINGBACK (0x95) // MC +#define HID_USAGE_TELEPHONY_PRIORITY_RINGBACK (0x96) // MC +#define HID_USAGE_TELEPHONY_LINE_BUSY_TONE (0x97) // MC +#define HID_USAGE_TELEPHONY_REORDER_TONE (0x98) // MC +#define HID_USAGE_TELEPHONY_CALL_WAITING_TONE (0x99) // MC +#define HID_USAGE_TELEPHONY_CONFIRMATION_TONE_1 (0x9A) // MC +#define HID_USAGE_TELEPHONY_CONFIRMATION_TONE_2 (0x9B) // MC +#define HID_USAGE_TELEPHONY_TONES_OFF (0x9C) // OOC +#define HID_USAGE_TELEPHONY_OUTSIDE_RINGBACK (0x9D) // MC +#define HID_USAGE_TELEPHONY_RINGER (0x9E) // OOC +#define HID_USAGE_TELEPHONY_PHONE_KEY_0 (0xB0) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_1 (0xB1) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_2 (0xB2) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_3 (0xB3) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_4 (0xB4) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_5 (0xB5) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_6 (0xB6) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_7 (0xB7) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_8 (0xB8) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_9 (0xB9) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_STAR (0xBA) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_POUND (0xBB) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_A (0xBC) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_B (0xBD) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_C (0xBE) // Sel +#define HID_USAGE_TELEPHONY_PHONE_KEY_D (0xBF) // Sel +#define HID_USAGE_TELEPHONY_PHONE_CALL_HISTORY_KEY (0xC0) // Sel +#define HID_USAGE_TELEPHONY_PHONE_CALLER_ID_KEY (0xC1) // Sel +#define HID_USAGE_TELEPHONY_PHONE_SETTINGS_KEY (0xC2) // Sel +#define HID_USAGE_TELEPHONY_HOST_CONTROL (0xF0) // OOC +#define HID_USAGE_TELEPHONY_HOST_AVAILABLE (0xF1) // OOC +#define HID_USAGE_TELEPHONY_HOST_CALL_ACTIVE (0xF2) // OOC +#define HID_USAGE_TELEPHONY_ACTIVATE_HANDSET_AUDIO (0xF3) // OOC +#define HID_USAGE_TELEPHONY_RING_TYPE (0xF4) // NAry +#define HID_USAGE_TELEPHONY_RE_DIALABLE_PHONE_NUMBER (0xF5) // OOC +#define HID_USAGE_TELEPHONY_STOP_RING_TONE (0xF8) // Sel +#define HID_USAGE_TELEPHONY_PSTN_RING_TONE (0xF9) // Sel +#define HID_USAGE_TELEPHONY_HOST_RING_TONE (0xFA) // Sel +#define HID_USAGE_TELEPHONY_ALERT_SOUND_ERROR (0xFB) // Sel +#define HID_USAGE_TELEPHONY_ALERT_SOUND_CONFIRM (0xFC) // Sel +#define HID_USAGE_TELEPHONY_ALERT_SOUND_NOTIFICATION (0xFD) // Sel +#define HID_USAGE_TELEPHONY_SILENT_RING (0xFE) // Sel +#define HID_USAGE_TELEPHONY_EMAIL_MESSAGE_WAITING (0x108) // OOC +#define HID_USAGE_TELEPHONY_VOICEMAIL_MESSAGE_WAITING (0x109) // OOC +#define HID_USAGE_TELEPHONY_HOST_HOLD (0x10A) // OOC +#define HID_USAGE_TELEPHONY_INCOMING_CALL_HISTORY_COUNT (0x110) // DV +#define HID_USAGE_TELEPHONY_OUTGOING_CALL_HISTORY_COUNT (0x111) // DV +#define HID_USAGE_TELEPHONY_INCOMING_CALL_HISTORY (0x112) // CL +#define HID_USAGE_TELEPHONY_OUTGOING_CALL_HISTORY (0x113) // CL +#define HID_USAGE_TELEPHONY_PHONE_LOCALE (0x114) // DV +#define HID_USAGE_TELEPHONY_PHONE_TIME_SECOND (0x140) // DV +#define HID_USAGE_TELEPHONY_PHONE_TIME_MINUTE (0x141) // DV +#define HID_USAGE_TELEPHONY_PHONE_TIME_HOUR (0x142) // DV +#define HID_USAGE_TELEPHONY_PHONE_DATE_DAY (0x143) // DV +#define HID_USAGE_TELEPHONY_PHONE_DATE_MONTH (0x144) // DV +#define HID_USAGE_TELEPHONY_PHONE_DATE_YEAR (0x145) // DV +#define HID_USAGE_TELEPHONY_HANDSET_NICKNAME (0x146) // DV +#define HID_USAGE_TELEPHONY_ADDRESS_BOOK_ID (0x147) // DV +#define HID_USAGE_TELEPHONY_CALL_DURATION (0x14A) // DV +#define HID_USAGE_TELEPHONY_DUAL_MODE_PHONE (0x14B) // CA + +/* Page 0x0C: Consumer */ +#define HID_USAGE_CONSUMER_UNDEFINED (0x00) +#define HID_USAGE_CONSUMER_CONSUMER_CONTROL (0x01) // CA +#define HID_USAGE_CONSUMER_NUMERIC_KEY_PAD (0x02) // NAry +#define HID_USAGE_CONSUMER_PROGRAMMABLE_BUTTONS (0x03) // NAry +#define HID_USAGE_CONSUMER_MICROPHONE (0x04) // CA +#define HID_USAGE_CONSUMER_HEADPHONE (0x05) // CA +#define HID_USAGE_CONSUMER_GRAPHIC_EQUALIZER (0x06) // CA +#define HID_USAGE_CONSUMER_INCREMENT10 (0x20) // OSC +#define HID_USAGE_CONSUMER_INCREMENT100 (0x21) // OSC +#define HID_USAGE_CONSUMER_AM_PM (0x22) // OSC +#define HID_USAGE_CONSUMER_POWER (0x30) // OOC +#define HID_USAGE_CONSUMER_RESET (0x31) // OSC +#define HID_USAGE_CONSUMER_SLEEP (0x32) // OSC +#define HID_USAGE_CONSUMER_SLEEP_AFTER (0x33) // OSC +#define HID_USAGE_CONSUMER_SLEEP_MODE (0x34) // RTC +#define HID_USAGE_CONSUMER_ILLUMINATION (0x35) // OOC +#define HID_USAGE_CONSUMER_FUNCTION_BUTTONS (0x36) // NAry +#define HID_USAGE_CONSUMER_MENU (0x40) // OOC +#define HID_USAGE_CONSUMER_MENU_PICK (0x41) // OSC +#define HID_USAGE_CONSUMER_MENU_UP (0x42) // OSC +#define HID_USAGE_CONSUMER_MENU_DOWN (0x43) // OSC +#define HID_USAGE_CONSUMER_MENU_LEFT (0x44) // OSC +#define HID_USAGE_CONSUMER_MENU_RIGHT (0x45) // OSC +#define HID_USAGE_CONSUMER_MENU_ESCAPE (0x46) // OSC +#define HID_USAGE_CONSUMER_MENU_VALUE_INCREASE (0x47) // OSC +#define HID_USAGE_CONSUMER_MENU_VALUE_DECREASE (0x48) // OSC +#define HID_USAGE_CONSUMER_DATA_ON_SCREEN (0x60) // OOC +#define HID_USAGE_CONSUMER_CLOSED_CAPTION (0x61) // OOC +#define HID_USAGE_CONSUMER_CLOSED_CAPTION_SELECT (0x62) // OSC +#define HID_USAGE_CONSUMER_VCR_TV (0x63) // OOC +#define HID_USAGE_CONSUMER_BROADCAST_MODE (0x64) // OSC +#define HID_USAGE_CONSUMER_SNAPSHOT (0x65) // OSC +#define HID_USAGE_CONSUMER_STILL (0x66) // OSC +#define HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_TOGGLE (0x67) // OSC +#define HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_SWAP (0x68) // OSC +#define HID_USAGE_CONSUMER_RED_MENU_BUTTON (0x69) // MC +#define HID_USAGE_CONSUMER_GREEN_MENU_BUTTON (0x6A) // MC +#define HID_USAGE_CONSUMER_BLUE_MENU_BUTTON (0x6B) // MC +#define HID_USAGE_CONSUMER_YELLOW_MENU_BUTTON (0x6C) // MC +#define HID_USAGE_CONSUMER_ASPECT (0x6D) // OSC +#define HID_USAGE_CONSUMER_3D_MODE_SELECT (0x6E) // OSC +#define HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_INCREMENT (0x6F) // RTC +#define HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_DECREMENT (0x70) // RTC +#define HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS (0x71) // LC +#define HID_USAGE_CONSUMER_DISPLAY_BACKLIGHT_TOGGLE (0x72) // OOC +#define HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MINIMUM (0x73) // OSC +#define HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MAXIMUM (0x74) // OSC +#define HID_USAGE_CONSUMER_DISPLAY_SET_AUTO_BRIGHTNESS (0x75) // OOC +#define HID_USAGE_CONSUMER_CAMERA_ACCESS_ENABLED (0x76) // OOC +#define HID_USAGE_CONSUMER_CAMERA_ACCESS_DISABLED (0x77) // OOC +#define HID_USAGE_CONSUMER_CAMERA_ACCESS_TOGGLE (0x78) // OOC +#define HID_USAGE_CONSUMER_KEYBOARD_BRIGHTNESS_INCREMENT (0x79) // OSC +#define HID_USAGE_CONSUMER_KEYBOARD_BRIGHTNESS_DECREMENT (0x7A) // OSC +#define HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_SET_LEVEL (0x7B) // LC +#define HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_OOC (0x7C) // OOC +#define HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_SET_MINIMUM (0x7D) // OSC +#define HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_SET_MAXIMUM (0x7E) // OSC +#define HID_USAGE_CONSUMER_KEYBOARD_BACKLIGHT_AUTO (0x7F) // OOC +#define HID_USAGE_CONSUMER_SELECTION (0x80) // NAry +#define HID_USAGE_CONSUMER_ASSIGN_SELECTION (0x81) // OSC +#define HID_USAGE_CONSUMER_MODE_STEP (0x82) // OSC +#define HID_USAGE_CONSUMER_RECALL_LAST (0x83) // OSC +#define HID_USAGE_CONSUMER_ENTER_CHANNEL (0x84) // OSC +#define HID_USAGE_CONSUMER_ORDER_MOVIE (0x85) // OSC +#define HID_USAGE_CONSUMER_CHANNEL (0x86) // LC +#define HID_USAGE_CONSUMER_MEDIA_SELECTION (0x87) // NAry +#define HID_USAGE_CONSUMER_MEDIA_SELECT_COMPUTER (0x88) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_TV (0x89) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_WWW (0x8A) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_DVD (0x8B) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_TELEPHONE (0x8C) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE (0x8D) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_VIDEO_PHONE (0x8E) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_GAMES (0x8F) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_MESSAGES (0x90) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_CD (0x91) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_VCR (0x92) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_TUNER (0x93) // Sel +#define HID_USAGE_CONSUMER_QUIT (0x94) // OSC +#define HID_USAGE_CONSUMER_HELP (0x95) // OOC +#define HID_USAGE_CONSUMER_MEDIA_SELECT_TAPE (0x96) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_CABLE (0x97) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_SATELLITE (0x98) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_SECURITY (0x99) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_HOME (0x9A) // Sel +#define HID_USAGE_CONSUMER_MEDIA_SELECT_CALL (0x9B) // Sel +#define HID_USAGE_CONSUMER_CHANNEL_INCREMENT (0x9C) // OSC +#define HID_USAGE_CONSUMER_CHANNEL_DECREMENT (0x9D) // OSC +#define HID_USAGE_CONSUMER_MEDIA_SELECT_SAP (0x9E) // Sel +#define HID_USAGE_CONSUMER_VCR_PLUS (0xA0) // OSC +#define HID_USAGE_CONSUMER_ONCE (0xA1) // OSC +#define HID_USAGE_CONSUMER_DAILY (0xA2) // OSC +#define HID_USAGE_CONSUMER_WEEKLY (0xA3) // OSC +#define HID_USAGE_CONSUMER_MONTHLY (0xA4) // OSC +#define HID_USAGE_CONSUMER_PLAY (0xB0) // OOC +#define HID_USAGE_CONSUMER_PAUSE (0xB1) // OOC +#define HID_USAGE_CONSUMER_RECORD (0xB2) // OOC +#define HID_USAGE_CONSUMER_FAST_FORWARD (0xB3) // OOC +#define HID_USAGE_CONSUMER_REWIND (0xB4) // OOC +#define HID_USAGE_CONSUMER_SCAN_NEXT_TRACK (0xB5) // OSC +#define HID_USAGE_CONSUMER_SCAN_PREVIOUS_TRACK (0xB6) // OSC +#define HID_USAGE_CONSUMER_STOP (0xB7) // OSC +#define HID_USAGE_CONSUMER_EJECT (0xB8) // OSC +#define HID_USAGE_CONSUMER_RANDOM_PLAY (0xB9) // OOC +#define HID_USAGE_CONSUMER_SELECT_DISC (0xBA) // NAry +#define HID_USAGE_CONSUMER_ENTER_DISC (0xBB) // MC +#define HID_USAGE_CONSUMER_REPEAT (0xBC) // OSC +#define HID_USAGE_CONSUMER_TRACKING (0xBD) // LC +#define HID_USAGE_CONSUMER_TRACK_NORMAL (0xBE) // OSC +#define HID_USAGE_CONSUMER_SLOW_TRACKING (0xBF) // LC +#define HID_USAGE_CONSUMER_FRAME_FORWARD (0xC0) // RTC +#define HID_USAGE_CONSUMER_FRAME_BACK (0xC1) // RTC +#define HID_USAGE_CONSUMER_MARK (0xC2) // OSC +#define HID_USAGE_CONSUMER_CLEAR_MARK (0xC3) // OSC +#define HID_USAGE_CONSUMER_REPEAT_FROM_MARK (0xC4) // OOC +#define HID_USAGE_CONSUMER_RETURN_TO_MARK (0xC5) // OSC +#define HID_USAGE_CONSUMER_SEARCH_MARK_FORWARD (0xC6) // OSC +#define HID_USAGE_CONSUMER_SEARCH_MARK_BACKWARDS (0xC7) // OSC +#define HID_USAGE_CONSUMER_COUNTER_RESET (0xC8) // OSC +#define HID_USAGE_CONSUMER_SHOW_COUNTER (0xC9) // OSC +#define HID_USAGE_CONSUMER_TRACKING_INCREMENT (0xCA) // RTC +#define HID_USAGE_CONSUMER_TRACKING_DECREMENT (0xCB) // RTC +#define HID_USAGE_CONSUMER_STOP_EJECT (0xCC) // OSC +#define HID_USAGE_CONSUMER_PLAY_PAUSE (0xCD) // OSC +#define HID_USAGE_CONSUMER_PLAY_SKIP (0xCE) // OSC +#define HID_USAGE_CONSUMER_VOICE_COMMAND (0xCF) // OSC +#define HID_USAGE_CONSUMER_INVOKE_CAPTURE_INTERFACE (0xD0) // Sel +#define HID_USAGE_CONSUMER_START_OR_STOP_GAME_RECORDING (0xD1) // Sel +#define HID_USAGE_CONSUMER_HISTORICAL_GAME_CAPTURE (0xD2) // Sel +#define HID_USAGE_CONSUMER_CAPTURE_GAME_SCREENSHOT (0xD3) // Sel +#define HID_USAGE_CONSUMER_SHOW_OR_HIDE_RECORDING_INDICATOR (0xD4) // Sel +#define HID_USAGE_CONSUMER_START_OR_STOP_MICROPHONE_CAPTURE (0xD5) // Sel +#define HID_USAGE_CONSUMER_START_OR_STOP_CAMERA_CAPTURE (0xD6) // Sel +#define HID_USAGE_CONSUMER_START_OR_STOP_GAME_BROADCAST (0xD7) // Sel +#define HID_USAGE_CONSUMER_VOLUME (0xE0) // LC +#define HID_USAGE_CONSUMER_BALANCE (0xE1) // LC +#define HID_USAGE_CONSUMER_MUTE (0xE2) // OOC +#define HID_USAGE_CONSUMER_BASS (0xE3) // LC +#define HID_USAGE_CONSUMER_TREBLE (0xE4) // LC +#define HID_USAGE_CONSUMER_BASS_BOOST (0xE5) // OOC +#define HID_USAGE_CONSUMER_SURROUND_MODE (0xE6) // OSC +#define HID_USAGE_CONSUMER_LOUDNESS (0xE7) // OOC +#define HID_USAGE_CONSUMER_MPX (0xE8) // OOC +#define HID_USAGE_CONSUMER_VOLUME_INCREMENT (0xE9) // RTC +#define HID_USAGE_CONSUMER_VOLUME_DECREMENT (0xEA) // RTC +#define HID_USAGE_CONSUMER_SPEED_SELECT (0xF0) // OSC +#define HID_USAGE_CONSUMER_PLAYBACK_SPEED (0xF1) // NAry +#define HID_USAGE_CONSUMER_STANDARD_PLAY (0xF2) // Sel +#define HID_USAGE_CONSUMER_LONG_PLAY (0xF3) // Sel +#define HID_USAGE_CONSUMER_EXTENDED_PLAY (0xF4) // Sel +#define HID_USAGE_CONSUMER_SLOW (0xF5) // OSC +#define HID_USAGE_CONSUMER_FAN_ENABLE (0x100) // OOC +#define HID_USAGE_CONSUMER_FAN_SPEED (0x101) // LC +#define HID_USAGE_CONSUMER_LIGHT_ENABLE (0x102) // OOC +#define HID_USAGE_CONSUMER_LIGHT_ILLUMINATION_LEVEL (0x103) // LC +#define HID_USAGE_CONSUMER_CLIMATE_CONTROL_ENABLE (0x104) // OOC +#define HID_USAGE_CONSUMER_ROOM_TEMPERATURE (0x105) // LC +#define HID_USAGE_CONSUMER_SECURITY_ENABLE (0x106) // OOC +#define HID_USAGE_CONSUMER_FIRE_ALARM (0x107) // OSC +#define HID_USAGE_CONSUMER_POLICE_ALARM (0x108) // OSC +#define HID_USAGE_CONSUMER_PROXIMITY (0x109) // LC +#define HID_USAGE_CONSUMER_MOTION (0x10A) // OSC +#define HID_USAGE_CONSUMER_DURESS_ALARM (0x10B) // OSC +#define HID_USAGE_CONSUMER_HOLDUP_ALARM (0x10C) // OSC +#define HID_USAGE_CONSUMER_MEDICAL_ALARM (0x10D) // OSC +#define HID_USAGE_CONSUMER_BALANCE_RIGHT (0x150) // RTC +#define HID_USAGE_CONSUMER_BALANCE_LEFT (0x151) // RTC +#define HID_USAGE_CONSUMER_BASS_INCREMENT (0x152) // RTC +#define HID_USAGE_CONSUMER_BASS_DECREMENT (0x153) // RTC +#define HID_USAGE_CONSUMER_TREBLE_INCREMENT (0x154) // RTC +#define HID_USAGE_CONSUMER_TREBLE_DECREMENT (0x155) // RTC +#define HID_USAGE_CONSUMER_SPEAKER_SYSTEM (0x160) // CL +#define HID_USAGE_CONSUMER_CHANNEL_LEFT (0x161) // CL +#define HID_USAGE_CONSUMER_CHANNEL_RIGHT (0x162) // CL +#define HID_USAGE_CONSUMER_CHANNEL_CENTER (0x163) // CL +#define HID_USAGE_CONSUMER_CHANNEL_FRONT (0x164) // CL +#define HID_USAGE_CONSUMER_CHANNEL_CENTER_FRONT (0x165) // CL +#define HID_USAGE_CONSUMER_CHANNEL_SIDE (0x166) // CL +#define HID_USAGE_CONSUMER_CHANNEL_SURROUND (0x167) // CL +#define HID_USAGE_CONSUMER_CHANNEL_LOW_FREQUENCY_ENHANCEMENT (0x168) // CL +#define HID_USAGE_CONSUMER_CHANNEL_TOP (0x169) // CL +#define HID_USAGE_CONSUMER_CHANNEL_UNKNOWN (0x16A) // CL +#define HID_USAGE_CONSUMER_SUB_CHANNEL (0x170) // LC +#define HID_USAGE_CONSUMER_SUB_CHANNEL_INCREMENT (0x171) // OSC +#define HID_USAGE_CONSUMER_SUB_CHANNEL_DECREMENT (0x172) // OSC +#define HID_USAGE_CONSUMER_ALTERNATE_AUDIO_INCREMENT (0x173) // OSC +#define HID_USAGE_CONSUMER_ALTERNATE_AUDIO_DECREMENT (0x174) // OSC +#define HID_USAGE_CONSUMER_APPLICATION_LAUNCH_BUTTONS (0x180) // NAry +#define HID_USAGE_CONSUMER_AL_LAUNCH_BUTTON_CONFIGURATION_TOOL (0x181) // Sel +#define HID_USAGE_CONSUMER_AL_PROGRAMMABLE_BUTTON_CONFIGURATION (0x182) // Sel +#define HID_USAGE_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION (0x183) // Sel +#define HID_USAGE_CONSUMER_AL_WORD_PROCESSOR (0x184) // Sel +#define HID_USAGE_CONSUMER_AL_TEXT_EDITOR (0x185) // Sel +#define HID_USAGE_CONSUMER_AL_SPREADSHEET (0x186) // Sel +#define HID_USAGE_CONSUMER_AL_GRAPHICS_EDITOR (0x187) // Sel +#define HID_USAGE_CONSUMER_AL_PRESENTATION_APP (0x188) // Sel +#define HID_USAGE_CONSUMER_AL_DATABASE_APP (0x189) // Sel +#define HID_USAGE_CONSUMER_AL_EMAIL_READER (0x18A) // Sel +#define HID_USAGE_CONSUMER_AL_NEWSREADER (0x18B) // Sel +#define HID_USAGE_CONSUMER_AL_VOICEMAIL (0x18C) // Sel +#define HID_USAGE_CONSUMER_AL_CONTACTS_ADDRESS_BOOK (0x18D) // Sel +#define HID_USAGE_CONSUMER_AL_CALENDAR_SCHEDULE (0x18E) // Sel +#define HID_USAGE_CONSUMER_AL_TASK_PROJECT_MANAGER (0x18F) // Sel +#define HID_USAGE_CONSUMER_AL_LOG_JOURNAL_TIMECARD (0x190) // Sel +#define HID_USAGE_CONSUMER_AL_CHECKBOOK_FINANCE (0x191) // Sel +#define HID_USAGE_CONSUMER_AL_CALCULATOR (0x192) // Sel +#define HID_USAGE_CONSUMER_AL_A_V_CAPTURE_PLAYBACK (0x193) // Sel +#define HID_USAGE_CONSUMER_AL_LOCAL_MACHINE_BROWSER (0x194) // Sel +#define HID_USAGE_CONSUMER_AL_LAN_WAN_BROWSER (0x195) // Sel +#define HID_USAGE_CONSUMER_AL_INTERNET_BROWSER (0x196) // Sel +#define HID_USAGE_CONSUMER_AL_REMOTE_NETWORKING_ISP_CONNECT (0x197) // Sel +#define HID_USAGE_CONSUMER_AL_NETWORK_CONFERENCE (0x198) // Sel +#define HID_USAGE_CONSUMER_AL_NETWORK_CHAT (0x199) // Sel +#define HID_USAGE_CONSUMER_AL_TELEPHONY_DIALER (0x19A) // Sel +#define HID_USAGE_CONSUMER_AL_LOGON (0x19B) // Sel +#define HID_USAGE_CONSUMER_AL_LOGOFF (0x19C) // Sel +#define HID_USAGE_CONSUMER_AL_LOGON_LOGOFF (0x19D) // Sel +#define HID_USAGE_CONSUMER_AL_TERMINAL_LOCK_SCREENSAVER (0x19E) // Sel +#define HID_USAGE_CONSUMER_AL_CONTROL_PANEL (0x19F) // Sel +#define HID_USAGE_CONSUMER_AL_COMMAND_LINE_PROCESSOR_RUN (0x1A0) // Sel +#define HID_USAGE_CONSUMER_AL_PROCESS_TASK_MANAGER (0x1A1) // Sel +#define HID_USAGE_CONSUMER_AL_SELECT_TASK_APPLICATION (0x1A2) // Sel +#define HID_USAGE_CONSUMER_AL_NEXT_TASK_APPLICATION (0x1A3) // Sel +#define HID_USAGE_CONSUMER_AL_PREVIOUS_TASK_APPLICATION (0x1A4) // Sel +#define HID_USAGE_CONSUMER_AL_PREEMPTIVE_HALT_TASK_APPLICATION (0x1A5) // Sel +#define HID_USAGE_CONSUMER_AL_INTEGRATED_HELP_CENTER (0x1A6) // Sel +#define HID_USAGE_CONSUMER_AL_DOCUMENTS (0x1A7) // Sel +#define HID_USAGE_CONSUMER_AL_THESAURUS (0x1A8) // Sel +#define HID_USAGE_CONSUMER_AL_DICTIONARY (0x1A9) // Sel +#define HID_USAGE_CONSUMER_AL_DESKTOP (0x1AA) // Sel +#define HID_USAGE_CONSUMER_AL_SPELL_CHECK (0x1AB) // Sel +#define HID_USAGE_CONSUMER_AL_GRAMMAR_CHECK (0x1AC) // Sel +#define HID_USAGE_CONSUMER_AL_WIRELESS_STATUS (0x1AD) // Sel +#define HID_USAGE_CONSUMER_AL_KEYBOARD_LAYOUT (0x1AE) // Sel +#define HID_USAGE_CONSUMER_AL_VIRUS_PROTECTION (0x1AF) // Sel +#define HID_USAGE_CONSUMER_AL_ENCRYPTION (0x1B0) // Sel +#define HID_USAGE_CONSUMER_AL_SCREEN_SAVER (0x1B1) // Sel +#define HID_USAGE_CONSUMER_AL_ALARMS (0x1B2) // Sel +#define HID_USAGE_CONSUMER_AL_CLOCK (0x1B3) // Sel +#define HID_USAGE_CONSUMER_AL_FILE_BROWSER (0x1B4) // Sel +#define HID_USAGE_CONSUMER_AL_POWER_STATUS (0x1B5) // Sel +#define HID_USAGE_CONSUMER_AL_IMAGE_BROWSER (0x1B6) // Sel +#define HID_USAGE_CONSUMER_AL_AUDIO_BROWSER (0x1B7) // Sel +#define HID_USAGE_CONSUMER_AL_MOVIE_BROWSER (0x1B8) // Sel +#define HID_USAGE_CONSUMER_AL_DIGITAL_RIGHTS_MANAGER (0x1B9) // Sel +#define HID_USAGE_CONSUMER_AL_DIGITAL_WALLET (0x1BA) // Sel +#define HID_USAGE_CONSUMER_AL_INSTANT_MESSAGING (0x1BC) // Sel +#define HID_USAGE_CONSUMER_AL_OEM_FEATURES_TIPS_TUTORIAL_BROWSER (0x1BD) // Sel +#define HID_USAGE_CONSUMER_AL_OEM_HELP (0x1BE) // Sel +#define HID_USAGE_CONSUMER_AL_ONLINE_COMMUNITY (0x1BF) // Sel +#define HID_USAGE_CONSUMER_AL_ENTERTAINMENT_CONTENT_BROWSER (0x1C0) // Sel +#define HID_USAGE_CONSUMER_AL_ONLINE_SHOPPING_BROWSER (0x1C1) // Sel +#define HID_USAGE_CONSUMER_AL_SMARTCARD_INFORMATION_HELP (0x1C2) // Sel +#define HID_USAGE_CONSUMER_AL_MARKET_MONITOR_FINANCE_BROWSER (0x1C3) // Sel +#define HID_USAGE_CONSUMER_AL_CUSTOMIZED_CORPORATE_NEWS_BROWSER (0x1C4) // Sel +#define HID_USAGE_CONSUMER_AL_ONLINE_ACTIVITY_BROWSER (0x1C5) // Sel +#define HID_USAGE_CONSUMER_AL_RESEARCH_SEARCH_BROWSER (0x1C6) // Sel +#define HID_USAGE_CONSUMER_AL_AUDIO_PLAYER (0x1C7) // Sel +#define HID_USAGE_CONSUMER_AL_MESSAGE_STATUS (0x1C8) // Sel +#define HID_USAGE_CONSUMER_AL_CONTACT_SYNC (0x1C9) // Sel +#define HID_USAGE_CONSUMER_AL_NAVIGATION (0x1CA) // Sel +#define HID_USAGE_CONSUMER_AL_CONTEXT_AWARE_DESKTOP_ASSISTANT (0x1CB) // Sel +#define HID_USAGE_CONSUMER_GENERIC_GUI_APPLICATION_CONTROLS (0x200) // NAry +#define HID_USAGE_CONSUMER_AC_NEW (0x201) // Sel +#define HID_USAGE_CONSUMER_AC_OPEN (0x202) // Sel +#define HID_USAGE_CONSUMER_AC_CLOSE (0x203) // Sel +#define HID_USAGE_CONSUMER_AC_EXIT (0x204) // Sel +#define HID_USAGE_CONSUMER_AC_MAXIMIZE (0x205) // Sel +#define HID_USAGE_CONSUMER_AC_MINIMIZE (0x206) // Sel +#define HID_USAGE_CONSUMER_AC_SAVE (0x207) // Sel +#define HID_USAGE_CONSUMER_AC_PRINT (0x208) // Sel +#define HID_USAGE_CONSUMER_AC_PROPERTIES (0x209) // Sel +#define HID_USAGE_CONSUMER_AC_UNDO (0x21A) // Sel +#define HID_USAGE_CONSUMER_AC_COPY (0x21B) // Sel +#define HID_USAGE_CONSUMER_AC_CUT (0x21C) // Sel +#define HID_USAGE_CONSUMER_AC_PASTE (0x21D) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_ALL (0x21E) // Sel +#define HID_USAGE_CONSUMER_AC_FIND (0x21F) // Sel +#define HID_USAGE_CONSUMER_AC_FIND_AND_REPLACE (0x220) // Sel +#define HID_USAGE_CONSUMER_AC_SEARCH (0x221) // Sel +#define HID_USAGE_CONSUMER_AC_GO_TO (0x222) // Sel +#define HID_USAGE_CONSUMER_AC_HOME (0x223) // Sel +#define HID_USAGE_CONSUMER_AC_BACK (0x224) // Sel +#define HID_USAGE_CONSUMER_AC_FORWARD (0x225) // Sel +#define HID_USAGE_CONSUMER_AC_STOP (0x226) // Sel +#define HID_USAGE_CONSUMER_AC_REFRESH (0x227) // Sel +#define HID_USAGE_CONSUMER_AC_PREVIOUS_LINK (0x228) // Sel +#define HID_USAGE_CONSUMER_AC_NEXT_LINK (0x229) // Sel +#define HID_USAGE_CONSUMER_AC_BOOKMARKS (0x22A) // Sel +#define HID_USAGE_CONSUMER_AC_HISTORY (0x22B) // Sel +#define HID_USAGE_CONSUMER_AC_SUBSCRIPTIONS (0x22C) // Sel +#define HID_USAGE_CONSUMER_AC_ZOOM_IN (0x22D) // Sel +#define HID_USAGE_CONSUMER_AC_ZOOM_OUT (0x22E) // Sel +#define HID_USAGE_CONSUMER_AC_ZOOM (0x22F) // LC +#define HID_USAGE_CONSUMER_AC_FULL_SCREEN_VIEW (0x230) // Sel +#define HID_USAGE_CONSUMER_AC_NORMAL_VIEW (0x231) // Sel +#define HID_USAGE_CONSUMER_AC_VIEW_TOGGLE (0x232) // Sel +#define HID_USAGE_CONSUMER_AC_SCROLL_UP (0x233) // Sel +#define HID_USAGE_CONSUMER_AC_SCROLL_DOWN (0x234) // Sel +#define HID_USAGE_CONSUMER_AC_SCROLL (0x235) // LC +#define HID_USAGE_CONSUMER_AC_PAN_LEFT (0x236) // Sel +#define HID_USAGE_CONSUMER_AC_PAN_RIGHT (0x237) // Sel +#define HID_USAGE_CONSUMER_AC_PAN (0x238) // LC +#define HID_USAGE_CONSUMER_AC_NEW_WINDOW (0x239) // Sel +#define HID_USAGE_CONSUMER_AC_TILE_HORIZONTALLY (0x23A) // Sel +#define HID_USAGE_CONSUMER_AC_TILE_VERTICALLY (0x23B) // Sel +#define HID_USAGE_CONSUMER_AC_FORMAT (0x23C) // Sel +#define HID_USAGE_CONSUMER_AC_EDIT (0x23D) // Sel +#define HID_USAGE_CONSUMER_AC_BOLD (0x23E) // Sel +#define HID_USAGE_CONSUMER_AC_ITALICS (0x23F) // Sel +#define HID_USAGE_CONSUMER_AC_UNDERLINE (0x240) // Sel +#define HID_USAGE_CONSUMER_AC_STRIKETHROUGH (0x241) // Sel +#define HID_USAGE_CONSUMER_AC_SUBSCRIPT (0x242) // Sel +#define HID_USAGE_CONSUMER_AC_SUPERSCRIPT (0x243) // Sel +#define HID_USAGE_CONSUMER_AC_ALL_CAPS (0x244) // Sel +#define HID_USAGE_CONSUMER_AC_ROTATE (0x245) // Sel +#define HID_USAGE_CONSUMER_AC_RESIZE (0x246) // Sel +#define HID_USAGE_CONSUMER_AC_FLIP_HORIZONTAL (0x247) // Sel +#define HID_USAGE_CONSUMER_AC_FLIP_VERTICAL (0x248) // Sel +#define HID_USAGE_CONSUMER_AC_MIRROR_HORIZONTAL (0x249) // Sel +#define HID_USAGE_CONSUMER_AC_MIRROR_VERTICAL (0x24A) // Sel +#define HID_USAGE_CONSUMER_AC_FONT_SELECT (0x24B) // Sel +#define HID_USAGE_CONSUMER_AC_FONT_COLOR (0x24C) // Sel +#define HID_USAGE_CONSUMER_AC_FONT_SIZE (0x24D) // Sel +#define HID_USAGE_CONSUMER_AC_JUSTIFY_LEFT (0x24E) // Sel +#define HID_USAGE_CONSUMER_AC_JUSTIFY_CENTER_H (0x24F) // Sel +#define HID_USAGE_CONSUMER_AC_JUSTIFY_RIGHT (0x250) // Sel +#define HID_USAGE_CONSUMER_AC_JUSTIFY_BLOCK_H (0x251) // Sel +#define HID_USAGE_CONSUMER_AC_JUSTIFY_TOP (0x252) // Sel +#define HID_USAGE_CONSUMER_AC_JUSTIFY_CENTER_V (0x253) // Sel +#define HID_USAGE_CONSUMER_AC_JUSTIFY_BOTTOM (0x254) // Sel +#define HID_USAGE_CONSUMER_AC_JUSTIFY_BLOCK_V (0x255) // Sel +#define HID_USAGE_CONSUMER_AC_INDENT_DECREASE (0x256) // Sel +#define HID_USAGE_CONSUMER_AC_INDENT_INCREASE (0x257) // Sel +#define HID_USAGE_CONSUMER_AC_NUMBERED_LIST (0x258) // Sel +#define HID_USAGE_CONSUMER_AC_RESTART_NUMBERING (0x259) // Sel +#define HID_USAGE_CONSUMER_AC_BULLETED_LIST (0x25A) // Sel +#define HID_USAGE_CONSUMER_AC_PROMOTE (0x25B) // Sel +#define HID_USAGE_CONSUMER_AC_DEMOTE (0x25C) // Sel +#define HID_USAGE_CONSUMER_AC_YES (0x25D) // Sel +#define HID_USAGE_CONSUMER_AC_NO (0x25E) // Sel +#define HID_USAGE_CONSUMER_AC_CANCEL (0x25F) // Sel +#define HID_USAGE_CONSUMER_AC_CATALOG (0x260) // Sel +#define HID_USAGE_CONSUMER_AC_BUY_CHECKOUT (0x261) // Sel +#define HID_USAGE_CONSUMER_AC_ADD_TO_CART (0x262) // Sel +#define HID_USAGE_CONSUMER_AC_EXPAND (0x263) // Sel +#define HID_USAGE_CONSUMER_AC_EXPAND_ALL (0x264) // Sel +#define HID_USAGE_CONSUMER_AC_COLLAPSE (0x265) // Sel +#define HID_USAGE_CONSUMER_AC_COLLAPSE_ALL (0x266) // Sel +#define HID_USAGE_CONSUMER_AC_PRINT_PREVIEW (0x267) // Sel +#define HID_USAGE_CONSUMER_AC_PASTE_SPECIAL (0x268) // Sel +#define HID_USAGE_CONSUMER_AC_INSERT_MODE (0x269) // Sel +#define HID_USAGE_CONSUMER_AC_DELETE (0x26A) // Sel +#define HID_USAGE_CONSUMER_AC_LOCK (0x26B) // Sel +#define HID_USAGE_CONSUMER_AC_UNLOCK (0x26C) // Sel +#define HID_USAGE_CONSUMER_AC_PROTECT (0x26D) // Sel +#define HID_USAGE_CONSUMER_AC_UNPROTECT (0x26E) // Sel +#define HID_USAGE_CONSUMER_AC_ATTACH_COMMENT (0x26F) // Sel +#define HID_USAGE_CONSUMER_AC_DELETE_COMMENT (0x270) // Sel +#define HID_USAGE_CONSUMER_AC_VIEW_COMMENT (0x271) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_WORD (0x272) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_SENTENCE (0x273) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_PARAGRAPH (0x274) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_COLUMN (0x275) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_ROW (0x276) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_TABLE (0x277) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_OBJECT (0x278) // Sel +#define HID_USAGE_CONSUMER_AC_REDO_REPEAT (0x279) // Sel +#define HID_USAGE_CONSUMER_AC_SORT (0x27A) // Sel +#define HID_USAGE_CONSUMER_AC_SORT_ASCENDING (0x27B) // Sel +#define HID_USAGE_CONSUMER_AC_SORT_DESCENDING (0x27C) // Sel +#define HID_USAGE_CONSUMER_AC_FILTER (0x27D) // Sel +#define HID_USAGE_CONSUMER_AC_SET_CLOCK (0x27E) // Sel +#define HID_USAGE_CONSUMER_AC_VIEW_CLOCK (0x27F) // Sel +#define HID_USAGE_CONSUMER_AC_SELECT_TIME_ZONE (0x280) // Sel +#define HID_USAGE_CONSUMER_AC_EDIT_TIME_ZONES (0x281) // Sel +#define HID_USAGE_CONSUMER_AC_SET_ALARM (0x282) // Sel +#define HID_USAGE_CONSUMER_AC_CLEAR_ALARM (0x283) // Sel +#define HID_USAGE_CONSUMER_AC_SNOOZE_ALARM (0x284) // Sel +#define HID_USAGE_CONSUMER_AC_RESET_ALARM (0x285) // Sel +#define HID_USAGE_CONSUMER_AC_SYNCHRONIZE (0x286) // Sel +#define HID_USAGE_CONSUMER_AC_SEND_RECEIVE (0x287) // Sel +#define HID_USAGE_CONSUMER_AC_SEND_TO (0x288) // Sel +#define HID_USAGE_CONSUMER_AC_REPLY (0x289) // Sel +#define HID_USAGE_CONSUMER_AC_REPLY_ALL (0x28A) // Sel +#define HID_USAGE_CONSUMER_AC_FORWARD_MSG (0x28B) // Sel +#define HID_USAGE_CONSUMER_AC_SEND (0x28C) // Sel +#define HID_USAGE_CONSUMER_AC_ATTACH_FILE (0x28D) // Sel +#define HID_USAGE_CONSUMER_AC_UPLOAD (0x28E) // Sel +#define HID_USAGE_CONSUMER_AC_DOWNLOAD_SAVE_TARGET_AS (0x28F) // Sel +#define HID_USAGE_CONSUMER_AC_SET_BORDERS (0x290) // Sel +#define HID_USAGE_CONSUMER_AC_INSERT_ROW (0x291) // Sel +#define HID_USAGE_CONSUMER_AC_INSERT_COLUMN (0x292) // Sel +#define HID_USAGE_CONSUMER_AC_INSERT_FILE (0x293) // Sel +#define HID_USAGE_CONSUMER_AC_INSERT_PICTURE (0x294) // Sel +#define HID_USAGE_CONSUMER_AC_INSERT_OBJECT (0x295) // Sel +#define HID_USAGE_CONSUMER_AC_INSERT_SYMBOL (0x296) // Sel +#define HID_USAGE_CONSUMER_AC_SAVE_AND_CLOSE (0x297) // Sel +#define HID_USAGE_CONSUMER_AC_RENAME (0x298) // Sel +#define HID_USAGE_CONSUMER_AC_MERGE (0x299) // Sel +#define HID_USAGE_CONSUMER_AC_SPLIT (0x29A) // Sel +#define HID_USAGE_CONSUMER_AC_DISRIBUTE_HORIZONTALLY (0x29B) // Sel +#define HID_USAGE_CONSUMER_AC_DISTRIBUTE_VERTICALLY (0x29C) // Sel +#define HID_USAGE_CONSUMER_AC_NEXT_KEYBOARD_LAYOUT_SELECT (0x29D) // Sel +#define HID_USAGE_CONSUMER_AC_NAVIGATION_GUIDANCE (0x29E) // Sel +#define HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_WINDOWS (0x29F) // Sel +#define HID_USAGE_CONSUMER_AC_SOFT_KEY_LEFT (0x2A0) // Sel +#define HID_USAGE_CONSUMER_AC_SOFT_KEY_RIGHT (0x2A1) // Sel +#define HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_APPLICATIONS (0x2A2) // Sel +#define HID_USAGE_CONSUMER_AC_IDLE_KEEP_ALIVE (0x2B0) // Sel +#define HID_USAGE_CONSUMER_EXTENDED_KEYBOARD_ATTRIBUTES_COLLECTION (0x2C0) // CL +#define HID_USAGE_CONSUMER_KEYBOARD_FORM_FACTOR (0x2C1) // SV +#define HID_USAGE_CONSUMER_KEYBOARD_KEY_TYPE (0x2C2) // SV +#define HID_USAGE_CONSUMER_KEYBOARD_PHYSICAL_LAYOUT (0x2C3) // SV +#define HID_USAGE_CONSUMER_VENDOR_SPECIFIC_KEYBOARD_PHYSICAL_LAYOUT (0x2C4) // SV +#define HID_USAGE_CONSUMER_KEYBOARD_IETF_LANGUAGE_TAG_INDEX (0x2C5) // SV +#define HID_USAGE_CONSUMER_IMPLEMENTED_KEYBOARD_INPUT_ASSIST_CONTROLS (0x2C6) // SV +#define HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS (0x2C7) // Sel +#define HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT (0x2C8) // Sel +#define HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP (0x2C9) // Sel +#define HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT_GROUP (0x2CA) // Sel +#define HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_ACCEPT (0x2CB) // Sel +#define HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_CANCEL (0x2CC) // Sel +#define HID_USAGE_CONSUMER_PRIVACY_SCREEN_TOGGLE (0x2D0) // OOC +#define HID_USAGE_CONSUMER_PRIVACY_SCREEN_LEVEL_DECREMENT (0x2D1) // RTC +#define HID_USAGE_CONSUMER_PRIVACY_SCREEN_LEVEL_INCREMENT (0x2D2) // RTC +#define HID_USAGE_CONSUMER_PRIVACY_SCREEN_LEVEL_MINIMUM (0x2D3) // OSC +#define HID_USAGE_CONSUMER_PRIVACY_SCREEN_LEVEL_MAXIMUM (0x2D4) // OSC +#define HID_USAGE_CONSUMER_CONTACT_EDITED (0x500) // OOC +#define HID_USAGE_CONSUMER_CONTACT_ADDED (0x501) // OOC +#define HID_USAGE_CONSUMER_CONTACT_RECORD_ACTIVE (0x502) // OOC +#define HID_USAGE_CONSUMER_CONTACT_INDEX (0x503) // DV +#define HID_USAGE_CONSUMER_CONTACT_NICKNAME (0x504) // DV +#define HID_USAGE_CONSUMER_CONTACT_FIRST_NAME (0x505) // DV +#define HID_USAGE_CONSUMER_CONTACT_LAST_NAME (0x506) // DV +#define HID_USAGE_CONSUMER_CONTACT_FULL_NAME (0x507) // DV +#define HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_PERSONAL (0x508) // DV +#define HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_BUSINESS (0x509) // DV +#define HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_MOBILE (0x50A) // DV +#define HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_PAGER (0x50B) // DV +#define HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_FAX (0x50C) // DV +#define HID_USAGE_CONSUMER_CONTACT_PHONE_NUMBER_OTHER (0x50D) // DV +#define HID_USAGE_CONSUMER_CONTACT_EMAIL_PERSONAL (0x50E) // DV +#define HID_USAGE_CONSUMER_CONTACT_EMAIL_BUSINESS (0x50F) // DV +#define HID_USAGE_CONSUMER_CONTACT_EMAIL_OTHER (0x510) // DV +#define HID_USAGE_CONSUMER_CONTACT_EMAIL_MAIN (0x511) // DV +#define HID_USAGE_CONSUMER_CONTACT_SPEED_DIAL_NUMBER (0x512) // DV +#define HID_USAGE_CONSUMER_CONTACT_STATUS_FLAG (0x513) // DV +#define HID_USAGE_CONSUMER_CONTACT_MISC (0x514) // DV + +/* Page 0x0D: Digitizers */ +#define HID_USAGE_DIGITIZERS_UNDEFINED (0x00) +#define HID_USAGE_DIGITIZERS_DIGITIZER (0x01) // CA +#define HID_USAGE_DIGITIZERS_PEN (0x02) // CA +#define HID_USAGE_DIGITIZERS_LIGHT_PEN (0x03) // CA +#define HID_USAGE_DIGITIZERS_TOUCH_SCREEN (0x04) // CA +#define HID_USAGE_DIGITIZERS_TOUCH_PAD (0x05) // CA +#define HID_USAGE_DIGITIZERS_WHITEBOARD (0x06) // CA +#define HID_USAGE_DIGITIZERS_COORDINATE_MEASURING_MACHINE (0x07) // CA +#define HID_USAGE_DIGITIZERS_3D_DIGITIZER (0x08) // CA +#define HID_USAGE_DIGITIZERS_STEREO_PLOTTER (0x09) // CA +#define HID_USAGE_DIGITIZERS_ARTICULATED_ARM (0x0A) // CA +#define HID_USAGE_DIGITIZERS_ARMATURE (0x0B) // CA +#define HID_USAGE_DIGITIZERS_MULTIPLE_POINT_DIGITIZER (0x0C) // CA +#define HID_USAGE_DIGITIZERS_FREE_SPACE_WAND (0x0D) // CA +#define HID_USAGE_DIGITIZERS_DEVICE_CONFIGURATION (0x0E) // CA +#define HID_USAGE_DIGITIZERS_CAPACITIVE_HEAT_MAP_DIGITIZER (0x0F) // CA +#define HID_USAGE_DIGITIZERS_STYLUS (0x20) // CA, CL +#define HID_USAGE_DIGITIZERS_PUCK (0x21) // CL +#define HID_USAGE_DIGITIZERS_FINGER (0x22) // CL +#define HID_USAGE_DIGITIZERS_DEVICE_SETTINGS (0x23) // CL +#define HID_USAGE_DIGITIZERS_CHARACTER_GESTURE (0x24) // CL +#define HID_USAGE_DIGITIZERS_TIP_PRESSURE (0x30) // DV +#define HID_USAGE_DIGITIZERS_BARREL_PRESSURE (0x31) // DV +#define HID_USAGE_DIGITIZERS_IN_RANGE (0x32) // MC +#define HID_USAGE_DIGITIZERS_TOUCH (0x33) // MC +#define HID_USAGE_DIGITIZERS_UNTOUCH (0x34) // OSC +#define HID_USAGE_DIGITIZERS_TAP (0x35) // OSC +#define HID_USAGE_DIGITIZERS_QUALITY (0x36) // DV +#define HID_USAGE_DIGITIZERS_DATA_VALID (0x37) // MC +#define HID_USAGE_DIGITIZERS_TRANSDUCER_INDEX (0x38) // DV +#define HID_USAGE_DIGITIZERS_TABLET_FUNCTION_KEYS (0x39) // CL +#define HID_USAGE_DIGITIZERS_PROGRAM_CHANGE_KEYS (0x3A) // CL +#define HID_USAGE_DIGITIZERS_BATTERY_STRENGTH (0x3B) // DV +#define HID_USAGE_DIGITIZERS_INVERT (0x3C) // MC +#define HID_USAGE_DIGITIZERS_X_TILT (0x3D) // DV +#define HID_USAGE_DIGITIZERS_Y_TILT (0x3E) // DV +#define HID_USAGE_DIGITIZERS_AZIMUTH (0x3F) // DV +#define HID_USAGE_DIGITIZERS_ALTITUDE (0x40) // DV +#define HID_USAGE_DIGITIZERS_TWIST (0x41) // DV +#define HID_USAGE_DIGITIZERS_TIP_SWITCH (0x42) // MC +#define HID_USAGE_DIGITIZERS_SECONDARY_TIP_SWITCH (0x43) // MC +#define HID_USAGE_DIGITIZERS_BARREL_SWITCH (0x44) // MC +#define HID_USAGE_DIGITIZERS_ERASER (0x45) // MC +#define HID_USAGE_DIGITIZERS_TABLET_PICK (0x46) // MC +#define HID_USAGE_DIGITIZERS_TOUCH_VALID (0x47) // MC +#define HID_USAGE_DIGITIZERS_WIDTH (0x48) // DV +#define HID_USAGE_DIGITIZERS_HEIGHT (0x49) // DV +#define HID_USAGE_DIGITIZERS_CONTACT_IDENTIFIER (0x51) // DV +#define HID_USAGE_DIGITIZERS_DEVICE_MODE (0x52) // DV +#define HID_USAGE_DIGITIZERS_DEVICE_IDENTIFIER (0x53) // DV, SV +#define HID_USAGE_DIGITIZERS_CONTACT_COUNT (0x54) // DV +#define HID_USAGE_DIGITIZERS_CONTACT_COUNT_MAXIMUM (0x55) // SV +#define HID_USAGE_DIGITIZERS_SCAN_TIME (0x56) // DV +#define HID_USAGE_DIGITIZERS_SURFACE_SWITCH (0x57) // DF +#define HID_USAGE_DIGITIZERS_BUTTON_SWITCH (0x58) // DF +#define HID_USAGE_DIGITIZERS_PAD_TYPE (0x59) // SF +#define HID_USAGE_DIGITIZERS_SECONDARY_BARREL_SWITCH (0x5A) // MC +#define HID_USAGE_DIGITIZERS_TRANSDUCER_SERIAL_NUMBER (0x5B) // SV +#define HID_USAGE_DIGITIZERS_PREFERRED_COLOR (0x5C) // DV +#define HID_USAGE_DIGITIZERS_PREFERRED_COLOR_IS_LOCKED (0x5D) // MC +#define HID_USAGE_DIGITIZERS_PREFERRED_LINE_WIDTH (0x5E) // DV +#define HID_USAGE_DIGITIZERS_PREFERRED_LINE_WIDTH_IS_LOCKED (0x5F) // MC +#define HID_USAGE_DIGITIZERS_LATENCY_MODE (0x60) // DF +#define HID_USAGE_DIGITIZERS_GESTURE_CHARACTER_QUALITY (0x61) // DV +#define HID_USAGE_DIGITIZERS_CHARACTER_GESTURE_DATA_LENGTH (0x62) // DV +#define HID_USAGE_DIGITIZERS_CHARACTER_GESTURE_DATA (0x63) // DV +#define HID_USAGE_DIGITIZERS_GESTURE_CHARACTER_ENCODING (0x64) // NAry +#define HID_USAGE_DIGITIZERS_UTF8_CHARACTER_GESTURE_ENCODING (0x65) // Sel +#define HID_USAGE_DIGITIZERS_UTF16_LITTLE_ENDIAN_CHARACTER_GESTURE_ENCODING (0x66) // Sel +#define HID_USAGE_DIGITIZERS_UTF16_BIG_ENDIAN_CHARACTER_GESTURE_ENCODING (0x67) // Sel +#define HID_USAGE_DIGITIZERS_UTF32_LITTLE_ENDIAN_CHARACTER_GESTURE_ENCODING (0x68) // Sel +#define HID_USAGE_DIGITIZERS_UTF32_BIG_ENDIAN_CHARACTER_GESTURE_ENCODING (0x69) // Sel +#define HID_USAGE_DIGITIZERS_CAPACITIVE_HEAT_MAP_PROTOCOL_VENDOR_ID (0x6A) // SV +#define HID_USAGE_DIGITIZERS_CAPACITIVE_HEAT_MAP_PROTOCOL_VERSION (0x6B) // SV +#define HID_USAGE_DIGITIZERS_CAPACITIVE_HEAT_MAP_FRAME_DATA (0x6C) // DV +#define HID_USAGE_DIGITIZERS_GESTURE_CHARACTER_ENABLE (0x6D) // DF +#define HID_USAGE_DIGITIZERS_PREFERRED_LINE_STYLE (0x70) // NAry +#define HID_USAGE_DIGITIZERS_PREFERRED_LINE_STYLE_IS_LOCKED (0x71) // MC +#define HID_USAGE_DIGITIZERS_INK (0x72) // Sel +#define HID_USAGE_DIGITIZERS_PENCIL (0x73) // Sel +#define HID_USAGE_DIGITIZERS_HIGHLIGHTER (0x74) // Sel +#define HID_USAGE_DIGITIZERS_CHISEL_MARKER (0x75) // Sel +#define HID_USAGE_DIGITIZERS_BRUSH (0x76) // Sel +#define HID_USAGE_DIGITIZERS_NO_PREFERENCE (0x77) // Sel +#define HID_USAGE_DIGITIZERS_DIGITIZER_DIAGNOSTIC (0x80) // CL +#define HID_USAGE_DIGITIZERS_DIGITIZER_ERROR (0x81) // NAry +#define HID_USAGE_DIGITIZERS_ERR_NORMAL_STATUS (0x82) // Sel +#define HID_USAGE_DIGITIZERS_ERR_TRANSDUCERS_EXCEEDED (0x83) // Sel +#define HID_USAGE_DIGITIZERS_ERR_FULL_TRANS_FEATURES_UNAVAILABLE (0x84) // Sel +#define HID_USAGE_DIGITIZERS_ERR_CHARGE_LOW (0x85) // Sel +#define HID_USAGE_DIGITIZERS_TRANSDUCER_SOFTWARE_INFO (0x90) // CL +#define HID_USAGE_DIGITIZERS_TRANSDUCER_VENDOR_ID (0x91) // SV +#define HID_USAGE_DIGITIZERS_TRANSDUCER_PRODUCT_ID (0x92) // SV +#define HID_USAGE_DIGITIZERS_DEVICE_SUPPORTED_PROTOCOLS (0x93) // NAry, CL +#define HID_USAGE_DIGITIZERS_TRANSDUCER_SUPPORTED_PROTOCOLS (0x94) // NAry, CL +#define HID_USAGE_DIGITIZERS_NO_PROTOCOL (0x95) // Sel +#define HID_USAGE_DIGITIZERS_WACOM_AES_PROTOCOL (0x96) // Sel +#define HID_USAGE_DIGITIZERS_USI_PROTOCOL (0x97) // Sel +#define HID_USAGE_DIGITIZERS_MICROSOFT_PEN_PROTOCOL (0x98) // Sel +#define HID_USAGE_DIGITIZERS_SUPPORTED_REPORT_RATES (0xA0) // SV, CL +#define HID_USAGE_DIGITIZERS_REPORT_RATE (0xA1) // DV +#define HID_USAGE_DIGITIZERS_TRANSDUCER_CONNECTED (0xA2) // SF +#define HID_USAGE_DIGITIZERS_SWITCH_DISABLED (0xA3) // Sel +#define HID_USAGE_DIGITIZERS_SWITCH_UNIMPLEMENTED (0xA4) // Sel +#define HID_USAGE_DIGITIZERS_TRANSDUCER_SWITCHES (0xA5) // Sel + +/* Page 0x0E: Haptics */ +#define HID_USAGE_HAPTICS_UNDEFINED (0x00) +#define HID_USAGE_HAPTICS_SIMPLE_HAPTIC_CONTROLLER (0x01) // CA, CL +#define HID_USAGE_HAPTICS_WAVEFORM_LIST (0x10) // NAry +#define HID_USAGE_HAPTICS_DURATION_LIST (0x11) // NAry +#define HID_USAGE_HAPTICS_AUTO_TRIGGER (0x20) // DV +#define HID_USAGE_HAPTICS_MANUAL_TRIGGER (0x21) // DV +#define HID_USAGE_HAPTICS_AUTO_TRIGGER_ASSOCIATED_CONTROL (0x22) // SV +#define HID_USAGE_HAPTICS_INTENSITY (0x23) // DV +#define HID_USAGE_HAPTICS_REPEAT_COUNT (0x24) // DV +#define HID_USAGE_HAPTICS_RETRIGGER_PERIOD (0x25) // DV +#define HID_USAGE_HAPTICS_WAVEFORM_VENDOR_PAGE (0x26) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_VENDOR_ID (0x27) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_CUTOFF_TIME (0x28) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_NONE (0x1001) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_STOP (0x1002) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_CLICK (0x1003) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_BUZZ_CONTINUOUS (0x1004) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_RUMBLE_CONTINUOUS (0x1005) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_PRESS (0x1006) // SV +#define HID_USAGE_HAPTICS_WAVEFORM_RELEASE (0x1007) // SV + +/* Page 0x0F: PID */ +#define HID_USAGE_PID_UNDEFINED (0x00) +#define HID_USAGE_PID_PHYSICAL_INTERFACE_DEVICE (0x01) +#define HID_USAGE_PID_NORMAL (0x20) +#define HID_USAGE_PID_SET_EFFECT_REPORT (0x21) +#define HID_USAGE_PID_EFFECT_BLOCK_INDEX (0x22) +#define HID_USAGE_PID_PARAMETER_BLOCK_OFFSET (0x23) +#define HID_USAGE_PID_ROM_FLAG (0x24) +#define HID_USAGE_PID_EFFECT_TYPE (0x25) +#define HID_USAGE_PID_ET_CONSTANT_FORCE (0x26) +#define HID_USAGE_PID_ET_RAMP (0x27) +#define HID_USAGE_PID_ET_CUSTOM_FORCE_DATA (0x28) +#define HID_USAGE_PID_ET_SQUARE (0x30) +#define HID_USAGE_PID_ET_SINE (0x31) +#define HID_USAGE_PID_ET_TRIANGLE (0x32) +#define HID_USAGE_PID_ET_SAWTOOTH_UP (0x33) +#define HID_USAGE_PID_ET_SAWTOOTH_DOWN (0x34) +#define HID_USAGE_PID_ET_SPRING (0x40) +#define HID_USAGE_PID_ET_DAMPER (0x41) +#define HID_USAGE_PID_ET_INERTIA (0x42) +#define HID_USAGE_PID_ET_FRICTION (0x43) +#define HID_USAGE_PID_DURATION (0x50) +#define HID_USAGE_PID_SAMPLE_PERIOD (0x51) +#define HID_USAGE_PID_GAIN (0x52) +#define HID_USAGE_PID_TRIGGER_BUTTON (0x53) +#define HID_USAGE_PID_TRIGGER_REPEAT_INTERVAL (0x54) +#define HID_USAGE_PID_AXES_ENABLE (0x55) +#define HID_USAGE_PID_DIRECTION_ENABLE (0x56) +#define HID_USAGE_PID_DIRECTION (0x57) +#define HID_USAGE_PID_TYPE_SPECIFIC_BLOCK_OFFSET (0x58) +#define HID_USAGE_PID_BLOCK_TYPE (0x59) +#define HID_USAGE_PID_SET_ENVELOPE_REPORT (0x5A) +#define HID_USAGE_PID_ATTACK_LEVEL (0x5B) +#define HID_USAGE_PID_ATTACK_TIME (0x5C) +#define HID_USAGE_PID_FADE_LEVEL (0x5D) +#define HID_USAGE_PID_FADE_TIME (0x5E) +#define HID_USAGE_PID_SET_CONDITION_REPORT (0x5F) +#define HID_USAGE_PID_CP_OFFSET (0x60) +#define HID_USAGE_PID_POSITIVE_COEFFICIENT (0x61) +#define HID_USAGE_PID_NEGATIVE_COEFFICIENT (0x62) +#define HID_USAGE_PID_POSITIVE_SATURATION (0x63) +#define HID_USAGE_PID_NEGATIVE_SATURATION (0x64) +#define HID_USAGE_PID_DEAD_BAND (0x65) +#define HID_USAGE_PID_DOWNLOAD_FORCE_SAMPLE (0x66) +#define HID_USAGE_PID_ISOCH_CUSTOM_FORCE_ENABLE (0x67) +#define HID_USAGE_PID_CUSTOM_FORCE_DATA_REPORT (0x68) +#define HID_USAGE_PID_CUSTOM_FORCE_DATA (0x69) +#define HID_USAGE_PID_CUSTOM_FORCE_VENDOR_DEFINED_DATA (0x6A) +#define HID_USAGE_PID_SET_CUSTOM_FORCE_REPORT (0x6B) +#define HID_USAGE_PID_CUSTOM_FORCE_DATA_OFFSET (0x6C) +#define HID_USAGE_PID_SAMPLE_COUNT (0x6D) +#define HID_USAGE_PID_SET_PERIODIC_REPORT (0x6E) +#define HID_USAGE_PID_OFFSET (0x6F) +#define HID_USAGE_PID_MAGNITUDE (0x70) +#define HID_USAGE_PID_PHASE (0x71) +#define HID_USAGE_PID_PERIOD (0x72) +#define HID_USAGE_PID_SET_CONSTANT_FORCE_REPORT (0x73) +#define HID_USAGE_PID_SET_RAMP_FORCE_REPORT (0x74) +#define HID_USAGE_PID_RAMP_START (0x75) +#define HID_USAGE_PID_RAMP_END (0x76) +#define HID_USAGE_PID_EFFECT_OPERATION_REPORT (0x77) +#define HID_USAGE_PID_EFFECT_OPERATION (0x78) +#define HID_USAGE_PID_OP_EFFECT_START (0x79) +#define HID_USAGE_PID_OP_EFFECT_START_SOLO (0x7A) +#define HID_USAGE_PID_OP_EFFECT_STOP (0x7B) +#define HID_USAGE_PID_LOOP_COUNT (0x7C) +#define HID_USAGE_PID_DEVICE_GAIN_REPORT (0x7D) +#define HID_USAGE_PID_DEVICE_GAIN (0x7E) +#define HID_USAGE_PID_PID_POOL_REPORT (0x7F) +#define HID_USAGE_PID_RAM_POOL_SIZE (0x80) +#define HID_USAGE_PID_ROM_POOL_SIZE (0x81) +#define HID_USAGE_PID_ROM_EFFECT_BLOCK_COUNT (0x82) +#define HID_USAGE_PID_SIMULTANEOUS_EFFECTS_MAX (0x83) +#define HID_USAGE_PID_POOL_ALIGNMENT (0x84) +#define HID_USAGE_PID_PID_POOL_MOVE_REPORT (0x85) +#define HID_USAGE_PID_MOVE_SOURCE (0x86) +#define HID_USAGE_PID_MOVE_DESTINATION (0x87) +#define HID_USAGE_PID_MOVE_LENGTH (0x88) +#define HID_USAGE_PID_PID_BLOCK_LOAD_REPORT (0x89) +#define HID_USAGE_PID_BLOCK_LOAD_STATUS (0x8B) +#define HID_USAGE_PID_BLOCK_LOAD_SUCCESS (0x8C) +#define HID_USAGE_PID_BLOCK_LOAD_FULL (0x8D) +#define HID_USAGE_PID_BLOCK_LOAD_ERROR (0x8E) +#define HID_USAGE_PID_BLOCK_HANDLE (0x8F) +#define HID_USAGE_PID_PID_BLOCK_FREE_REPORT (0x90) +#define HID_USAGE_PID_TYPE_SPECIFIC_BLOCK_HANDLE (0x91) +#define HID_USAGE_PID_PID_STATE_REPORT (0x92) +#define HID_USAGE_PID_EFFECT_PLAYING (0x94) +#define HID_USAGE_PID_PID_DEVICE_CONTROL_REPORT (0x95) +#define HID_USAGE_PID_PID_DEVICE_CONTROL (0x96) +#define HID_USAGE_PID_DC_ENABLE_ACTUATORS (0x97) +#define HID_USAGE_PID_DC_DISABLE_ACTUATORS (0x98) +#define HID_USAGE_PID_DC_STOP_ALL_EFFECTS (0x99) +#define HID_USAGE_PID_DC_DEVICE_RESET (0x9A) +#define HID_USAGE_PID_DC_DEVICE_PAUSE (0x9B) +#define HID_USAGE_PID_DC_DEVICE_CONTINUE (0x9C) +#define HID_USAGE_PID_DEVICE_PAUSED (0x9F) +#define HID_USAGE_PID_ACTUATORS_ENABLED (0xA0) +#define HID_USAGE_PID_SAFETY_SWITCH (0xA4) +#define HID_USAGE_PID_ACTUATOR_OVERRIDE_SWITCH (0xA5) +#define HID_USAGE_PID_ACTUATOR_POWER (0xA6) +#define HID_USAGE_PID_START_DELAY (0xA7) +#define HID_USAGE_PID_PARAMETER_BLOCK_SIZE (0xA8) +#define HID_USAGE_PID_DEVICE_MANAGED_POOL (0xA9) +#define HID_USAGE_PID_SHARED_PARAMETER_BLOCKS (0xAA) +#define HID_USAGE_PID_CREATE_NEW_EFFECT_REPORT (0xAB) +#define HID_USAGE_PID_RAM_POOL_AVAILABLE (0xAC) + +/* Page 0x12: Eye and Head Trackers */ +#define HID_USAGE_EHT_UNDEFINED (0x00) +#define HID_USAGE_EHT_EYE_TRACKER (0x01) // CA +#define HID_USAGE_EHT_HEAD_TRACKER (0x02) // CA +#define HID_USAGE_EHT_TRACKING_DATA (0x10) // CP +#define HID_USAGE_EHT_CAPABILITIES (0x11) // CL +#define HID_USAGE_EHT_CONFIGURATION (0x12) // CL +#define HID_USAGE_EHT_STATUS (0x13) // CL +#define HID_USAGE_EHT_CONTROL (0x14) // CL +#define HID_USAGE_EHT_SENSOR_TIMESTAMP (0x20) // DV +#define HID_USAGE_EHT_POSITION_X (0x21) // DV +#define HID_USAGE_EHT_POSITION_Y (0x22) // DV +#define HID_USAGE_EHT_POSITION_Z (0x23) // DV +#define HID_USAGE_EHT_GAZE_POINT (0x24) // CP +#define HID_USAGE_EHT_LEFT_EYE_POSITION (0x25) // CP +#define HID_USAGE_EHT_RIGHT_EYE_POSITION (0x26) // CP +#define HID_USAGE_EHT_HEAD_POSITION (0x27) // CP +#define HID_USAGE_EHT_HEAD_DIRECTION_POINT (0x28) // CP +#define HID_USAGE_EHT_ROTATION_ABOUT_X_AXIS (0x29) // DV +#define HID_USAGE_EHT_ROTATION_ABOUT_Y_AXIS (0x2A) // DV +#define HID_USAGE_EHT_ROTATION_ABOUT_Z_AXIS (0x2B) // DV +#define HID_USAGE_EHT_TRACKER_QUALITY (0x100) // SV +#define HID_USAGE_EHT_MINIMUM_TRACKING_DISTANCE (0x101) // SV +#define HID_USAGE_EHT_OPTIMUM_TRACKING_DISTANCE (0x102) // SV +#define HID_USAGE_EHT_MAXIMUM_TRACKING_DISTANCE (0x103) // SV +#define HID_USAGE_EHT_MAXIMUM_SCREEN_PLANE_WIDTH (0x104) // SV +#define HID_USAGE_EHT_MAXIMUM_SCREEN_PLANE_HEIGHT (0x105) // SV +#define HID_USAGE_EHT_DISPLAY_MANUFACTURER_ID (0x200) // SV +#define HID_USAGE_EHT_DISPLAY_PRODUCT_ID (0x201) // SV +#define HID_USAGE_EHT_DISPLAY_SERIAL_NUMBER (0x202) // SV +#define HID_USAGE_EHT_DISPLAY_MANUFACTURER_DATE (0x203) // SV +#define HID_USAGE_EHT_CALIBRATED_SCREEN_WIDTH (0x204) // SV +#define HID_USAGE_EHT_CALIBRATED_SCREEN_HEIGHT (0x205) // SV +#define HID_USAGE_EHT_SAMPLING_FREQUENCY (0x300) // DV +#define HID_USAGE_EHT_CONFIGURATION_STATUS (0x301) // DV +#define HID_USAGE_EHT_DEVICE_MODE_REQUEST (0x400) // DV + +/* Page 0x14: Auxiliary Display */ +#define HID_USAGE_AUXDISP_UNDEFINED (0x00) +#define HID_USAGE_AUXDISP_ALPHANUMERIC_DISPLAY (0x01) // CA +#define HID_USAGE_AUXDISP_AUXILIARY_DISPLAY (0x02) // CA +#define HID_USAGE_AUXDISP_DISPLAY_ATTRIBUTES_REPORT (0x20) // CL +#define HID_USAGE_AUXDISP_ASCII_CHARACTER_SET (0x21) // SF +#define HID_USAGE_AUXDISP_DATA_READ_BACK (0x22) // SF +#define HID_USAGE_AUXDISP_FONT_READ_BACK (0x23) // SF +#define HID_USAGE_AUXDISP_DISPLAY_CONTROL_REPORT (0x24) // CL +#define HID_USAGE_AUXDISP_CLEAR_DISPLAY (0x25) // DF +#define HID_USAGE_AUXDISP_DISPLAY_ENABLE (0x26) // DF +#define HID_USAGE_AUXDISP_SCREEN_SAVER_DELAY (0x27) // SV, DV +#define HID_USAGE_AUXDISP_SCREEN_SAVER_ENABLE (0x28) // DF +#define HID_USAGE_AUXDISP_VERTICAL_SCROLL (0x29) // SF, DF +#define HID_USAGE_AUXDISP_HORIZONTAL_SCROLL (0x2A) // SF, DF +#define HID_USAGE_AUXDISP_CHARACTER_REPORT (0x2B) // CL +#define HID_USAGE_AUXDISP_DISPLAY_DATA (0x2C) // DV +#define HID_USAGE_AUXDISP_DISPLAY_STATUS (0x2D) // CL +#define HID_USAGE_AUXDISP_STAT_NOT_READY (0x2E) // Sel +#define HID_USAGE_AUXDISP_STAT_READY (0x2F) // Sel +#define HID_USAGE_AUXDISP_ERR_NOT_A_LOADABLE_CHARACTER (0x30) // Sel +#define HID_USAGE_AUXDISP_ERR_FONT_DATA_CANNOT_BE_READ (0x31) // Sel +#define HID_USAGE_AUXDISP_CURSOR_POSITION_REPORT (0x32) // Sel +#define HID_USAGE_AUXDISP_ROW (0x33) // DV +#define HID_USAGE_AUXDISP_COLUMN (0x34) // DV +#define HID_USAGE_AUXDISP_ROWS (0x35) // SV +#define HID_USAGE_AUXDISP_COLUMNS (0x36) // SV +#define HID_USAGE_AUXDISP_CURSOR_PIXEL_POSITIONING (0x37) // SF +#define HID_USAGE_AUXDISP_CURSOR_MODE (0x38) // DF +#define HID_USAGE_AUXDISP_CURSOR_ENABLE (0x39) // DF +#define HID_USAGE_AUXDISP_CURSOR_BLINK (0x3A) // DF +#define HID_USAGE_AUXDISP_FONT_REPORT (0x3B) // CL +#define HID_USAGE_AUXDISP_FONT_DATA (0x3C) // Buffered Bytes +#define HID_USAGE_AUXDISP_CHARACTER_WIDTH (0x3D) // SV +#define HID_USAGE_AUXDISP_CHARACTER_HEIGHT (0x3E) // SV +#define HID_USAGE_AUXDISP_CHARACTER_SPACING_HORIZONTAL (0x3F) // SV +#define HID_USAGE_AUXDISP_CHARACTER_SPACING_VERTICAL (0x40) // SV +#define HID_USAGE_AUXDISP_UNICODE_CHARACTER_SET (0x41) // SF +#define HID_USAGE_AUXDISP_FONT_7_SEGMENT (0x42) // SF +#define HID_USAGE_AUXDISP_7_SEGMENT_DIRECT_MAP (0x43) // SF +#define HID_USAGE_AUXDISP_FONT_14_SEGMENT (0x44) // SF +#define HID_USAGE_AUXDISP_14_SEGMENT_DIRECT_MAP (0x45) // SF +#define HID_USAGE_AUXDISP_DISPLAY_BRIGHTNESS (0x46) // DV +#define HID_USAGE_AUXDISP_DISPLAY_CONTRAST (0x47) // DV +#define HID_USAGE_AUXDISP_CHARACTER_ATTRIBUTE (0x48) // CL +#define HID_USAGE_AUXDISP_ATTRIBUTE_READBACK (0x49) // SF +#define HID_USAGE_AUXDISP_ATTRIBUTE_DATA (0x4A) // DV +#define HID_USAGE_AUXDISP_CHAR_ATTR_ENHANCE (0x4B) // OOC +#define HID_USAGE_AUXDISP_CHAR_ATTR_UNDERLINE (0x4C) // OOC +#define HID_USAGE_AUXDISP_CHAR_ATTR_BLINK (0x4D) // OOC +#define HID_USAGE_AUXDISP_BITMAP_SIZE_X (0x80) // SV +#define HID_USAGE_AUXDISP_BITMAP_SIZE_Y (0x81) // SV +#define HID_USAGE_AUXDISP_MAX_BLIT_SIZE (0x82) // SV +#define HID_USAGE_AUXDISP_BIT_DEPTH_FORMAT (0x83) // SV +#define HID_USAGE_AUXDISP_DISPLAY_ORIENTATION (0x84) // DV +#define HID_USAGE_AUXDISP_PALETTE_REPORT (0x85) // CL +#define HID_USAGE_AUXDISP_PALETTE_DATA_SIZE (0x86) // SV +#define HID_USAGE_AUXDISP_PALETTE_DATA_OFFSET (0x87) // SV +#define HID_USAGE_AUXDISP_PALETTE_DATA (0x88) // Buffered Bytes +#define HID_USAGE_AUXDISP_BLIT_REPORT (0x8A) // CL +#define HID_USAGE_AUXDISP_BLIT_RECTANGLE_X1 (0x8B) // SV +#define HID_USAGE_AUXDISP_BLIT_RECTANGLE_Y1 (0x8C) // SV +#define HID_USAGE_AUXDISP_BLIT_RECTANGLE_X2 (0x8D) // SV +#define HID_USAGE_AUXDISP_BLIT_RECTANGLE_Y2 (0x8E) // SV +#define HID_USAGE_AUXDISP_BLIT_DATA (0x8F) // Buffered Bytes +#define HID_USAGE_AUXDISP_SOFT_BUTTON (0x90) // CL +#define HID_USAGE_AUXDISP_SOFT_BUTTON_ID (0x91) // SV +#define HID_USAGE_AUXDISP_SOFT_BUTTON_SIDE (0x92) // SV +#define HID_USAGE_AUXDISP_SOFT_BUTTON_OFFSET_1 (0x93) // SV +#define HID_USAGE_AUXDISP_SOFT_BUTTON_OFFSET_2 (0x94) // SV +#define HID_USAGE_AUXDISP_SOFT_BUTTON_REPORT (0x95) // SV +#define HID_USAGE_AUXDISP_SOFT_KEYS (0xC2) // SV +#define HID_USAGE_AUXDISP_DISPLAY_DATA_EXTENSIONS (0xCC) // SF +#define HID_USAGE_AUXDISP_CHARACTER_MAPPING (0xCF) // SV +#define HID_USAGE_AUXDISP_UNICODE_EQUIVALENT (0xDD) // SV +#define HID_USAGE_AUXDISP_CHARACTER_PAGE_MAPPING (0xDF) // SV +#define HID_USAGE_AUXDISP_REQUEST_REPORT (0xFF) // DV + +/* Page 0x20: Sensors */ +#define HID_USAGE_SENSORS_UNDEFINED (0x00) +#define HID_USAGE_SENSORS_SENSOR (0x01) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC (0x10) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_HUMAN_PRESENCE (0x11) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_HUMAN_PROXIMITY (0x12) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_HUMAN_TOUCH (0x13) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_BLOOD_PRESSURE (0x14) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_BODY_TEMPERATURE (0x15) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_HEART_RATE (0x16) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_HEART_RATE_VARIABILITY (0x17) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_PERIPHERAL_OXYGEN_SATURATION (0x18) // CA, CP +#define HID_USAGE_SENSORS_BIOMETRIC_RESPIRATORY_RATE (0x19) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL (0x20) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_CAPACITANCE (0x21) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_CURRENT (0x22) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_POWER (0x23) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_INDUCTANCE (0x24) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_RESISTANCE (0x25) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_VOLTAGE (0x26) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_POTENTIOMETER (0x27) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_FREQUENCY (0x28) // CA, CP +#define HID_USAGE_SENSORS_ELECTRICAL_PERIOD (0x29) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL (0x30) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_ATMOSPHERIC_PRESSURE (0x31) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_HUMIDITY (0x32) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_TEMPERATURE (0x33) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_WIND_DIRECTION (0x34) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_WIND_SPEED (0x35) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_AIR_QUALITY (0x36) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_HEAT_INDEX (0x37) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_SURFACE_TEMPERATURE (0x38) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_VOLATILE_ORGANIC_COMPOUNDS (0x39) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_OBJECT_PRESENCE (0x3A) // CA, CP +#define HID_USAGE_SENSORS_ENVIRONMENTAL_OBJECT_PROXIMITY (0x3B) // CA, CP +#define HID_USAGE_SENSORS_LIGHT (0x40) // CA, CP +#define HID_USAGE_SENSORS_LIGHT_AMBIENT_LIGHT (0x41) // CA, CP +#define HID_USAGE_SENSORS_LIGHT_CONSUMER_INFRARED (0x42) // CA, CP +#define HID_USAGE_SENSORS_LIGHT_INFRARED_LIGHT (0x43) // CA, CP +#define HID_USAGE_SENSORS_LIGHT_VISIBLE_LIGHT (0x44) // CA, CP +#define HID_USAGE_SENSORS_LIGHT_ULTRAVIOLET_LIGHT (0x45) // CA, CP +#define HID_USAGE_SENSORS_LOCATION (0x50) // CA, CP +#define HID_USAGE_SENSORS_LOCATION_BROADCAST (0x51) // CA, CP +#define HID_USAGE_SENSORS_LOCATION_DEAD_RECKONING (0x52) // CA, CP +#define HID_USAGE_SENSORS_LOCATION_GPS_GLOBAL_POSITIONING_SYSTEM (0x53) // CA, CP +#define HID_USAGE_SENSORS_LOCATION_LOOKUP (0x54) // CA, CP +#define HID_USAGE_SENSORS_LOCATION_OTHER (0x55) // CA, CP +#define HID_USAGE_SENSORS_LOCATION_STATIC (0x56) // CA, CP +#define HID_USAGE_SENSORS_LOCATION_TRIANGULATION (0x57) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL (0x60) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_BOOLEAN_SWITCH (0x61) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_BOOLEAN_SWITCH_ARRAY (0x62) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_MULTIVALUE_SWITCH (0x63) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_FORCE (0x64) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_PRESSURE (0x65) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_STRAIN (0x66) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_WEIGHT (0x67) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_HAPTIC_VIBRATOR (0x68) // CA, CP +#define HID_USAGE_SENSORS_MECHANICAL_HALL_EFFECT_SWITCH (0x69) // CA, CP +#define HID_USAGE_SENSORS_MOTION (0x70) // CA, CP +#define HID_USAGE_SENSORS_MOTION_ACCELEROMETER_1D (0x71) // CA, CP +#define HID_USAGE_SENSORS_MOTION_ACCELEROMETER_2D (0x72) // CA, CP +#define HID_USAGE_SENSORS_MOTION_ACCELEROMETER_3D (0x73) // CA, CP +#define HID_USAGE_SENSORS_MOTION_GYROMETER_1D (0x74) // CA, CP +#define HID_USAGE_SENSORS_MOTION_GYROMETER_2D (0x75) // CA, CP +#define HID_USAGE_SENSORS_MOTION_GYROMETER_3D (0x76) // CA, CP +#define HID_USAGE_SENSORS_MOTION_MOTION_DETECTOR (0x77) // CA, CP +#define HID_USAGE_SENSORS_MOTION_SPEEDOMETER (0x78) // CA, CP +#define HID_USAGE_SENSORS_MOTION_ACCELEROMETER (0x79) // CA, CP +#define HID_USAGE_SENSORS_MOTION_GYROMETER (0x7A) // CA, CP +#define HID_USAGE_SENSORS_MOTION_GRAVITY_VECTOR (0x7B) // CA, CP +#define HID_USAGE_SENSORS_MOTION_LINEAR_ACCELEROMETER (0x7C) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION (0x80) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_COMPASS_1D (0x81) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_COMPASS_2D (0x82) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_COMPASS_3D (0x83) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_INCLINOMETER_1D (0x84) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_INCLINOMETER_2D (0x85) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_INCLINOMETER_3D (0x86) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_DISTANCE_1D (0x87) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_DISTANCE_2D (0x88) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_DISTANCE_3D (0x89) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_DEVICE_ORIENTATION (0x8A) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_COMPASS (0x8B) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_INCLINOMETER (0x8C) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_DISTANCE (0x8D) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_RELATIVE_ORIENTATION (0x8E) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_SIMPLE_ORIENTATION (0x8F) // CA, CP +#define HID_USAGE_SENSORS_SCANNER (0x90) // CA, CP +#define HID_USAGE_SENSORS_SCANNER_BARCODE (0x91) // CA, CP +#define HID_USAGE_SENSORS_SCANNER_RFID (0x92) // CA, CP +#define HID_USAGE_SENSORS_SCANNER_NFC (0x93) // CA, CP +#define HID_USAGE_SENSORS_TIME (0xA0) // CA, CP +#define HID_USAGE_SENSORS_TIME_ALARM_TIMER (0xA1) // CA, CP +#define HID_USAGE_SENSORS_TIME_REAL_TIME_CLOCK (0xA2) // CA, CP +#define HID_USAGE_SENSORS_PERSONAL_ACTIVITY (0xB0) // CA, CP +#define HID_USAGE_SENSORS_PERSONAL_ACTIVITY_ACTIVITY_DETECTION (0xB1) // CA, CP +#define HID_USAGE_SENSORS_PERSONAL_ACTIVITY_DEVICE_POSITION (0xB2) // CA, CP +#define HID_USAGE_SENSORS_PERSONAL_ACTIVITY_PEDOMETER (0xB3) // CA, CP +#define HID_USAGE_SENSORS_PERSONAL_ACTIVITY_STEP_DETECTION (0xB4) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_EXTENDED (0xC0) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_EXTENDED_GEOMAGNETIC_ORIENTATION (0xC1) // CA, CP +#define HID_USAGE_SENSORS_ORIENTATION_EXTENDED_MAGNETOMETER (0xC2) // CA, CP +#define HID_USAGE_SENSORS_GESTURE (0xD0) // CA, CP +#define HID_USAGE_SENSORS_GESTURE_CHASSIS_FLIP_GESTURE (0xD1) // CA, CP +#define HID_USAGE_SENSORS_GESTURE_HINGE_FOLD_GESTURE (0xD2) // CA, CP +#define HID_USAGE_SENSORS_OTHER (0xE0) // CA, CP +#define HID_USAGE_SENSORS_OTHER_CUSTOM (0xE1) // CA, CP +#define HID_USAGE_SENSORS_OTHER_GENERIC (0xE2) // CA, CP +#define HID_USAGE_SENSORS_OTHER_GENERIC_ENUMERATOR (0xE3) // CA, CP +#define HID_USAGE_SENSORS_OTHER_HINGE_ANGLE (0xE4) // CA, CP +#define HID_USAGE_SENSORS_EVENT (0x200) // DV +#define HID_USAGE_SENSORS_EVENT_SENSOR_STATE (0x201) // NAry +#define HID_USAGE_SENSORS_EVENT_SENSOR_EVENT (0x202) // NAry +#define HID_USAGE_SENSORS_PROPERTY (0x300) // DV +#define HID_USAGE_SENSORS_PROPERTY_FRIENDLY_NAME (0x301) // SV +#define HID_USAGE_SENSORS_PROPERTY_PERSISTENT_UNIQUE_ID (0x302) // DV +#define HID_USAGE_SENSORS_PROPERTY_SENSOR_STATUS (0x303) // DV +#define HID_USAGE_SENSORS_PROPERTY_MINIMUM_REPORT_INTERVAL (0x304) // SV +#define HID_USAGE_SENSORS_PROPERTY_SENSOR_MANUFACTURER (0x305) // SV +#define HID_USAGE_SENSORS_PROPERTY_SENSOR_MODEL (0x306) // SV +#define HID_USAGE_SENSORS_PROPERTY_SENSOR_SERIAL_NUMBER (0x307) // SV +#define HID_USAGE_SENSORS_PROPERTY_SENSOR_DESCRIPTION (0x308) // SV +#define HID_USAGE_SENSORS_PROPERTY_SENSOR_CONNECTION_TYPE (0x309) // NAry +#define HID_USAGE_SENSORS_PROPERTY_SENSOR_DEVICE_PATH (0x30A) // DV +#define HID_USAGE_SENSORS_PROPERTY_HARDWARE_REVISION (0x30B) // SV +#define HID_USAGE_SENSORS_PROPERTY_FIRMWARE_VERSION (0x30C) // SV +#define HID_USAGE_SENSORS_PROPERTY_RELEASE_DATE (0x30D) // SV +#define HID_USAGE_SENSORS_PROPERTY_REPORT_INTERVAL (0x30E) // DV +#define HID_USAGE_SENSORS_PROPERTY_CHANGE_SENSITIVITY_ABSOLUTE (0x30F) // DV +#define HID_USAGE_SENSORS_PROPERTY_CHANGE_SENSITIVITY_PERCENT_OF_RANGE (0x310) // DV +#define HID_USAGE_SENSORS_PROPERTY_CHANGE_SENSITIVITY_PERCENT_RELATIVE (0x311) // DV +#define HID_USAGE_SENSORS_PROPERTY_ACCURACY (0x312) // DV +#define HID_USAGE_SENSORS_PROPERTY_RESOLUTION (0x313) // DV +#define HID_USAGE_SENSORS_PROPERTY_MAXIMUM (0x314) // DV +#define HID_USAGE_SENSORS_PROPERTY_MINIMUM (0x315) // DV +#define HID_USAGE_SENSORS_PROPERTY_REPORTING_STATE (0x316) // NAry +#define HID_USAGE_SENSORS_PROPERTY_SAMPLING_RATE (0x317) // DV +#define HID_USAGE_SENSORS_PROPERTY_RESPONSE_CURVE (0x318) // DV +#define HID_USAGE_SENSORS_PROPERTY_POWER_STATE (0x319) // NAry +#define HID_USAGE_SENSORS_PROPERTY_MAXIMUM_FIFO_EVENTS (0x31A) // SV +#define HID_USAGE_SENSORS_PROPERTY_REPORT_LATENCY (0x31B) // DV +#define HID_USAGE_SENSORS_PROPERTY_FLUSH_FIFO_EVENTS (0x31C) // DF +#define HID_USAGE_SENSORS_PROPERTY_MAXIMUM_POWER_CONSUMPTION (0x31D) // DV +#define HID_USAGE_SENSORS_PROPERTY_IS_PRIMARY (0x31E) // DF +#define HID_USAGE_SENSORS_DATA_FIELD_LOCATION (0x400) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_ANTENNA_SEA_LEVEL (0x402) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DIFFERENTIAL_REFERENCE_STATION_ID (0x403) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_ELLIPSOID_ERROR (0x404) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_ELLIPSOID (0x405) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_SEA_LEVEL_ERROR (0x406) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ALTITUDE_SEA_LEVEL (0x407) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DIFFERENTIAL_GPS_DATA_AGE (0x408) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ERROR_RADIUS (0x409) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_FIX_QUALITY (0x40A) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_FIX_TYPE (0x40B) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_GEOIDAL_SEPARATION (0x40C) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GPS_OPERATION_MODE (0x40D) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_GPS_SELECTION_MODE (0x40E) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_GPS_STATUS (0x40F) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_POSITION_DILUTION_OF_PRECISION (0x410) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HORIZONTAL_DILUTION_OF_PRECISION (0x411) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_VERTICAL_DILUTION_OF_PRECISION (0x412) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_LATITUDE (0x413) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_LONGITUDE (0x414) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_TRUE_HEADING (0x415) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_HEADING (0x416) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_VARIATION (0x417) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SPEED (0x418) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW (0x419) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_AZIMUTH (0x41A) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_ELEVATION (0x41B) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_IDS (0x41C) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_PRNS (0x41D) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_IN_VIEW_S_N_RATIOS (0x41E) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_USED_COUNT (0x41F) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SATELLITES_USED_PRNS (0x420) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_NMEA_SENTENCE (0x421) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ADDRESS_LINE_1 (0x422) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ADDRESS_LINE_2 (0x423) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CITY (0x424) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_STATE_OR_PROVINCE (0x425) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_COUNTRY_OR_REGION (0x426) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_POSTAL_CODE (0x427) // SV +#define HID_USAGE_SENSORS_PROPERTY_LOCATION (0x42A) // DV +#define HID_USAGE_SENSORS_PROPERTY_LOCATION_DESIRED_ACCURACY (0x42B) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_ENVIRONMENTAL (0x430) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ATMOSPHERIC_PRESSURE (0x431) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_RELATIVE_HUMIDITY (0x433) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_TEMPERATURE (0x434) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_WIND_DIRECTION (0x435) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_WIND_SPEED (0x436) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_AIR_QUALITY_INDEX (0x437) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_EQUIVALENT_CO2 (0x438) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_VOLATILE_ORGANIC_COMPOUND_CONCENTRATION (0x439) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_OBJECT_PRESENCE (0x43A) // SF +#define HID_USAGE_SENSORS_DATA_FIELD_OBJECT_PROXIMITY_RANGE (0x43B) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_OBJECT_PROXIMITY_OUT_OF_RANGE (0x43C) // SF +#define HID_USAGE_SENSORS_PROPERTY_ENVIRONMENTAL (0x440) // SV +#define HID_USAGE_SENSORS_PROPERTY_REFERENCE_PRESSURE (0x441) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MOTION (0x450) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_MOTION_STATE (0x451) // SF +#define HID_USAGE_SENSORS_DATA_FIELD_ACCELERATION (0x452) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ACCELERATION_AXIS_X (0x453) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ACCELERATION_AXIS_Y (0x454) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ACCELERATION_AXIS_Z (0x455) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_VELOCITY (0x456) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_VELOCITY_ABOUT_X_AXIS (0x457) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_VELOCITY_ABOUT_Y_AXIS (0x458) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_VELOCITY_ABOUT_Z_AXIS (0x459) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_POSITION (0x45A) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_POSITION_ABOUT_X_AXIS (0x45B) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_POSITION_ABOUT_Y_AXIS (0x45C) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ANGULAR_POSITION_ABOUT_Z_AXIS (0x45D) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MOTION_SPEED (0x45E) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MOTION_INTENSITY (0x45F) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ORIENTATION (0x470) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_HEADING (0x471) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEADING_X_AXIS (0x472) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEADING_Y_AXIS (0x473) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEADING_Z_AXIS (0x474) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEADING_COMPENSATED_MAGNETIC_NORTH (0x475) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEADING_COMPENSATED_TRUE_NORTH (0x476) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEADING_MAGNETIC_NORTH (0x477) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEADING_TRUE_NORTH (0x478) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DISTANCE (0x479) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DISTANCE_X_AXIS (0x47A) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DISTANCE_Y_AXIS (0x47B) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DISTANCE_Z_AXIS (0x47C) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DISTANCE_OUT_OF_RANGE (0x47D) // SF +#define HID_USAGE_SENSORS_DATA_FIELD_TILT (0x47E) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_TILT_X_AXIS (0x47F) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_TILT_Y_AXIS (0x480) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_TILT_Z_AXIS (0x481) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ROTATION_MATRIX (0x482) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_QUATERNION (0x483) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_FLUX (0x484) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_FLUX_X_AXIS (0x485) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_FLUX_Y_AXIS (0x486) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MAGNETIC_FLUX_Z_AXIS (0x487) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MAGNETOMETER_ACCURACY (0x488) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_SIMPLE_ORIENTATION_DIRECTION (0x489) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_MECHANICAL (0x490) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_BOOLEAN_SWITCH_STATE (0x491) // SF +#define HID_USAGE_SENSORS_DATA_FIELD_BOOLEAN_SWITCH_ARRAY_STATES (0x492) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MULTIVALUE_SWITCH_VALUE (0x493) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_FORCE (0x494) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ABSOLUTE_PRESSURE (0x495) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GAUGE_PRESSURE (0x496) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_STRAIN (0x497) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_WEIGHT (0x498) // SV +#define HID_USAGE_SENSORS_PROPERTY_MECHANICAL (0x4A0) // DV +#define HID_USAGE_SENSORS_PROPERTY_VIBRATION_STATE (0x4A1) // DF +#define HID_USAGE_SENSORS_PROPERTY_FORWARD_VIBRATION_SPEED (0x4A2) // DV +#define HID_USAGE_SENSORS_PROPERTY_BACKWARD_VIBRATION_SPEED (0x4A3) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_BIOMETRIC (0x4B0) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_HUMAN_PRESENCE (0x4B1) // SF +#define HID_USAGE_SENSORS_DATA_FIELD_HUMAN_PROXIMITY_RANGE (0x4B2) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HUMAN_PROXIMITY_OUT_OF_RANGE (0x4B3) // SF +#define HID_USAGE_SENSORS_DATA_FIELD_HUMAN_TOUCH_STATE (0x4B4) // SF +#define HID_USAGE_SENSORS_DATA_FIELD_BLOOD_PRESSURE (0x4B5) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_BLOOD_PRESSURE_DIASTOLIC (0x4B6) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_BLOOD_PRESSURE_SYSTOLIC (0x4B7) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEART_RATE (0x4B8) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_RESTING_HEART_RATE (0x4B9) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HEARTBEAT_INTERVAL (0x4BA) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_RESPIRATORY_RATE (0x4BB) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SPO2 (0x4BC) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_LIGHT (0x4D0) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_ILLUMINANCE (0x4D1) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_COLOR_TEMPERATURE (0x4D2) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CHROMATICITY (0x4D3) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CHROMATICITY_X (0x4D4) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CHROMATICITY_Y (0x4D5) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CONSUMER_IR_SENTENCE_RECEIVE (0x4D6) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_INFRARED_LIGHT (0x4D7) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_RED_LIGHT (0x4D8) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GREEN_LIGHT (0x4D9) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_BLUE_LIGHT (0x4DA) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ULTRAVIOLET_A_LIGHT (0x4DB) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ULTRAVIOLET_B_LIGHT (0x4DC) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ULTRAVIOLET_INDEX (0x4DD) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_NEAR_INFRARED_LIGHT (0x4DE) // SV +#define HID_USAGE_SENSORS_PROPERTY_LIGHT (0x4DF) // DV +#define HID_USAGE_SENSORS_PROPERTY_CONSUMER_IR_SENTENCE_SEND (0x4E0) // DV +#define HID_USAGE_SENSORS_PROPERTY_AUTO_BRIGHTNESS_PREFERRED (0x4E2) // DF +#define HID_USAGE_SENSORS_PROPERTY_AUTO_COLOR_PREFERRED (0x4E3) // DF +#define HID_USAGE_SENSORS_DATA_FIELD_SCANNER (0x4F0) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_RFID_TAG_40_BIT (0x4F1) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_NFC_SENTENCE_RECEIVE (0x4F2) // SV +#define HID_USAGE_SENSORS_PROPERTY_SCANNER (0x4F8) // DV +#define HID_USAGE_SENSORS_PROPERTY_NFC_SENTENCE_SEND (0x4F9) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ELECTRICAL (0x500) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CAPACITANCE (0x501) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CURRENT (0x502) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ELECTRICAL_POWER (0x503) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_INDUCTANCE (0x504) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_RESISTANCE (0x505) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_VOLTAGE (0x506) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_FREQUENCY (0x507) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_PERIOD (0x508) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_PERCENT_OF_RANGE (0x509) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_TIME (0x520) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_YEAR (0x521) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MONTH (0x522) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DAY (0x523) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_DAY_OF_WEEK (0x524) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_HOUR (0x525) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MINUTE (0x526) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_SECOND (0x527) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_MILLISECOND (0x528) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_TIMESTAMP (0x529) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_JULIAN_DAY_OF_YEAR (0x52A) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_TIME_SINCE_SYSTEM_BOOT (0x52B) // SV +#define HID_USAGE_SENSORS_PROPERTY_TIME (0x530) // DV +#define HID_USAGE_SENSORS_PROPERTY_TIME_ZONE_OFFSET_FROM_UTC (0x531) // DV +#define HID_USAGE_SENSORS_PROPERTY_TIME_ZONE_NAME (0x532) // DV +#define HID_USAGE_SENSORS_PROPERTY_DAYLIGHT_SAVINGS_TIME_OBSERVED (0x533) // DF +#define HID_USAGE_SENSORS_PROPERTY_TIME_TRIM_ADJUSTMENT (0x534) // DV +#define HID_USAGE_SENSORS_PROPERTY_ARM_ALARM (0x535) // DF +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM (0x540) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_USAGE (0x541) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_BOOLEAN_ARRAY (0x542) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE (0x543) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_1 (0x544) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_2 (0x545) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_3 (0x546) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_4 (0x547) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_5 (0x548) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_6 (0x549) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_7 (0x54A) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_8 (0x54B) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_9 (0x54C) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_10 (0x54D) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_11 (0x54E) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_12 (0x54F) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_13 (0x550) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_14 (0x551) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_15 (0x552) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_16 (0x553) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_17 (0x554) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_18 (0x555) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_19 (0x556) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_20 (0x557) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_21 (0x558) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_22 (0x559) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_23 (0x55A) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_24 (0x55B) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_25 (0x55C) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_26 (0x55D) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_27 (0x55E) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_VALUE_28 (0x55F) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC (0x560) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_GUID_OR_PROPERTYKEY (0x561) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_CATEGORY_GUID (0x562) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_TYPE_GUID (0x563) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_EVENT_PROPERTYKEY (0x564) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_PROPERTY_PROPERTYKEY (0x565) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_DATA_FIELD_PROPERTYKEY (0x566) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_EVENT (0x567) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_PROPERTY (0x568) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_DATA_FIELD (0x569) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ENUMERATOR_TABLE_ROW_INDEX (0x56A) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_ENUMERATOR_TABLE_ROW_COUNT (0x56B) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_GUID_OR_PROPERTYKEY_KIND (0x56C) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_GUID (0x56D) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_PROPERTYKEY (0x56E) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_TOP_LEVEL_COLLECTION_ID (0x56F) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_REPORT_ID (0x570) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_REPORT_ITEM_POSITION_INDEX (0x571) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_FIRMWARE_VARTYPE (0x572) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_UNIT_OF_MEASURE (0x573) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_UNIT_EXPONENT (0x574) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_REPORT_SIZE (0x575) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_GENERIC_REPORT_COUNT (0x576) // SV +#define HID_USAGE_SENSORS_PROPERTY_GENERIC (0x580) // DV +#define HID_USAGE_SENSORS_PROPERTY_ENUMERATOR_TABLE_ROW_INDEX (0x581) // DV +#define HID_USAGE_SENSORS_PROPERTY_ENUMERATOR_TABLE_ROW_COUNT (0x582) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_PERSONAL_ACTIVITY (0x590) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_ACTIVITY_TYPE (0x591) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_ACTIVITY_STATE (0x592) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_DEVICE_POSITION (0x593) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_STEP_COUNT (0x594) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_STEP_COUNT_RESET (0x595) // DF +#define HID_USAGE_SENSORS_DATA_FIELD_STEP_DURATION (0x596) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_STEP_TYPE (0x597) // NAry +#define HID_USAGE_SENSORS_PROPERTY_MINIMUM_ACTIVITY_DETECTION_INTERVAL (0x5A0) // DV +#define HID_USAGE_SENSORS_PROPERTY_SUPPORTED_ACTIVITY_TYPES (0x5A1) // NAry +#define HID_USAGE_SENSORS_PROPERTY_SUBSCRIBED_ACTIVITY_TYPES (0x5A2) // NAry +#define HID_USAGE_SENSORS_PROPERTY_SUPPORTED_STEP_TYPES (0x5A3) // NAry +#define HID_USAGE_SENSORS_PROPERTY_SUBSCRIBED_STEP_TYPES (0x5A4) // NAry +#define HID_USAGE_SENSORS_PROPERTY_FLOOR_HEIGHT (0x5A5) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_CUSTOM_TYPE_ID (0x5B0) // SV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM (0x5C0) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_1 (0x5C1) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_2 (0x5C2) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_3 (0x5C3) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_4 (0x5C4) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_5 (0x5C5) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_6 (0x5C6) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_7 (0x5C7) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_8 (0x5C8) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_9 (0x5C9) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_10 (0x5CA) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_11 (0x5CB) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_12 (0x5CC) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_13 (0x5CD) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_14 (0x5CE) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_15 (0x5CF) // DV +#define HID_USAGE_SENSORS_PROPERTY_CUSTOM_VALUE_16 (0x5D0) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_HINGE (0x5E0) // SV, DV +#define HID_USAGE_SENSORS_DATA_FIELD_HINGE_ANGLE (0x5E1) // SV, DV +#define HID_USAGE_SENSORS_DATA_FIELD_GESTURE_SENSOR (0x5F0) // DV +#define HID_USAGE_SENSORS_DATA_FIELD_GESTURE_STATE (0x5F1) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_HINGE_FOLD_INITIAL_ANGLE (0x5F2) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HINGE_FOLD_FINAL_ANGLE (0x5F3) // SV +#define HID_USAGE_SENSORS_DATA_FIELD_HINGE_FOLD_CONTRIBUTING_PANEL (0x5F4) // NAry +#define HID_USAGE_SENSORS_DATA_FIELD_HINGE_FOLD_TYPE (0x5F5) // NAry +#define HID_USAGE_SENSORS_SENSOR_STATE_UNDEFINED (0x800) // Sel +#define HID_USAGE_SENSORS_SENSOR_STATE_READY (0x801) // Sel +#define HID_USAGE_SENSORS_SENSOR_STATE_NOT_AVAILABLE (0x802) // Sel +#define HID_USAGE_SENSORS_SENSOR_STATE_NO_DATA (0x803) // Sel +#define HID_USAGE_SENSORS_SENSOR_STATE_INITIALIZING (0x804) // Sel +#define HID_USAGE_SENSORS_SENSOR_STATE_ACCESS_DENIED (0x805) // Sel +#define HID_USAGE_SENSORS_SENSOR_STATE_ERROR (0x806) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_UNKNOWN (0x810) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_STATE_CHANGED (0x811) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_PROPERTY_CHANGED (0x812) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_DATA_UPDATED (0x813) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_POLL_RESPONSE (0x814) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_CHANGE_SENSITIVITY (0x815) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_RANGE_MAXIMUM_REACHED (0x816) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_RANGE_MINIMUM_REACHED (0x817) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_HIGH_THRESHOLD_CROSS_UPWARD (0x818) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_HIGH_THRESHOLD_CROSS_DOWNWARD (0x819) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_LOW_THRESHOLD_CROSS_UPWARD (0x81A) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_LOW_THRESHOLD_CROSS_DOWNWARD (0x81B) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_ZERO_THRESHOLD_CROSS_UPWARD (0x81C) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_ZERO_THRESHOLD_CROSS_DOWNWARD (0x81D) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_PERIOD_EXCEEDED (0x81E) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_FREQUENCY_EXCEEDED (0x81F) // Sel +#define HID_USAGE_SENSORS_SENSOR_EVENT_COMPLEX_TRIGGER (0x820) // Sel +#define HID_USAGE_SENSORS_CONNECTION_TYPE_PC_INTEGRATED (0x830) // Sel +#define HID_USAGE_SENSORS_CONNECTION_TYPE_PC_ATTACHED (0x831) // Sel +#define HID_USAGE_SENSORS_CONNECTION_TYPE_PC_EXTERNAL (0x832) // Sel +#define HID_USAGE_SENSORS_REPORTING_STATE_REPORT_NO_EVENTS (0x840) // Sel +#define HID_USAGE_SENSORS_REPORTING_STATE_REPORT_ALL_EVENTS (0x841) // Sel +#define HID_USAGE_SENSORS_REPORTING_STATE_REPORT_THRESHOLD_EVENTS (0x842) // Sel +#define HID_USAGE_SENSORS_REPORTING_STATE_WAKE_ON_NO_EVENTS (0x843) // Sel +#define HID_USAGE_SENSORS_REPORTING_STATE_WAKE_ON_ALL_EVENTS (0x844) // Sel +#define HID_USAGE_SENSORS_REPORTING_STATE_WAKE_ON_THRESHOLD_EVENTS (0x845) // Sel +#define HID_USAGE_SENSORS_POWER_STATE_UNDEFINED (0x850) // Sel +#define HID_USAGE_SENSORS_POWER_STATE_D0_FULL_POWER (0x851) // Sel +#define HID_USAGE_SENSORS_POWER_STATE_D1_LOW_POWER (0x852) // Sel +#define HID_USAGE_SENSORS_POWER_STATE_D2_STANDBY_POWER_WITH_WAKEUP (0x853) // Sel +#define HID_USAGE_SENSORS_POWER_STATE_D3_SLEEP_WITH_WAKEUP (0x854) // Sel +#define HID_USAGE_SENSORS_POWER_STATE_D4_POWER_OFF (0x855) // Sel +#define HID_USAGE_SENSORS_FIX_QUALITY_NO_FIX (0x870) // Sel +#define HID_USAGE_SENSORS_FIX_QUALITY_GPS (0x871) // Sel +#define HID_USAGE_SENSORS_FIX_QUALITY_DGPS (0x872) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_NO_FIX (0x880) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_GPS_SPS_MODE_FIX_VALID (0x881) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_DGPS_SPS_MODE_FIX_VALID (0x882) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_GPS_PPS_MODE_FIX_VALID (0x883) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_REAL_TIME_KINEMATIC (0x884) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_FLOAT_RTK (0x885) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_ESTIMATED_DEAD_RECKONED (0x886) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_MANUAL_INPUT_MODE (0x887) // Sel +#define HID_USAGE_SENSORS_FIX_TYPE_SIMULATOR_MODE (0x888) // Sel +#define HID_USAGE_SENSORS_GPS_OPERATION_MODE_MANUAL (0x890) // Sel +#define HID_USAGE_SENSORS_GPS_OPERATION_MODE_AUTOMATIC (0x891) // Sel +#define HID_USAGE_SENSORS_GPS_SELECTION_MODE_AUTONOMOUS (0x8A0) // Sel +#define HID_USAGE_SENSORS_GPS_SELECTION_MODE_DGPS (0x8A1) // Sel +#define HID_USAGE_SENSORS_GPS_SELECTION_MODE_ESTIMATED_DEAD_RECKONED (0x8A2) // Sel +#define HID_USAGE_SENSORS_GPS_SELECTION_MODE_MANUAL_INPUT (0x8A3) // Sel +#define HID_USAGE_SENSORS_GPS_SELECTION_MODE_SIMULATOR (0x8A4) // Sel +#define HID_USAGE_SENSORS_GPS_SELECTION_MODE_DATA_NOT_VALID (0x8A5) // Sel +#define HID_USAGE_SENSORS_GPS_STATUS_DATA_VALID (0x8B0) // Sel +#define HID_USAGE_SENSORS_GPS_STATUS_DATA_NOT_VALID (0x8B1) // Sel +#define HID_USAGE_SENSORS_ACCURACY_DEFAULT (0x860) // Sel +#define HID_USAGE_SENSORS_ACCURACY_HIGH (0x861) // Sel +#define HID_USAGE_SENSORS_ACCURACY_MEDIUM (0x862) // Sel +#define HID_USAGE_SENSORS_ACCURACY_LOW (0x863) // Sel +#define HID_USAGE_SENSORS_DAY_OF_WEEK_SUNDAY (0x8C0) // Sel +#define HID_USAGE_SENSORS_DAY_OF_WEEK_MONDAY (0x8C1) // Sel +#define HID_USAGE_SENSORS_DAY_OF_WEEK_TUESDAY (0x8C2) // Sel +#define HID_USAGE_SENSORS_DAY_OF_WEEK_WEDNESDAY (0x8C3) // Sel +#define HID_USAGE_SENSORS_DAY_OF_WEEK_THURSDAY (0x8C4) // Sel +#define HID_USAGE_SENSORS_DAY_OF_WEEK_FRIDAY (0x8C5) // Sel +#define HID_USAGE_SENSORS_DAY_OF_WEEK_SATURDAY (0x8C6) // Sel +#define HID_USAGE_SENSORS_KIND_CATEGORY (0x8D0) // Sel +#define HID_USAGE_SENSORS_KIND_TYPE (0x8D1) // Sel +#define HID_USAGE_SENSORS_KIND_EVENT (0x8D2) // Sel +#define HID_USAGE_SENSORS_KIND_PROPERTY (0x8D3) // Sel +#define HID_USAGE_SENSORS_KIND_DATA_FIELD (0x8D4) // Sel +#define HID_USAGE_SENSORS_MAGNETOMETER_ACCURACY_LOW (0x8E0) // Sel +#define HID_USAGE_SENSORS_MAGNETOMETER_ACCURACY_MEDIUM (0x8E1) // Sel +#define HID_USAGE_SENSORS_MAGNETOMETER_ACCURACY_HIGH (0x8E2) // Sel +#define HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_NOT_ROTATED (0x8F0) // Sel +#define HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_ROTATED_90_DEGREES_CCW (0x8F1) // Sel +#define HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_ROTATED_180_DEGREES_CCW (0x8F2) // Sel +#define HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_ROTATED_270_DEGREES_CCW (0x8F3) // Sel +#define HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_FACE_UP (0x8F4) // Sel +#define HID_USAGE_SENSORS_SIMPLE_ORIENTATION_DIRECTION_FACE_DOWN (0x8F5) // Sel +#define HID_USAGE_SENSORS_VT_NULL (0x900) // Sel +#define HID_USAGE_SENSORS_VT_BOOL (0x901) // Sel +#define HID_USAGE_SENSORS_VT_UI1 (0x902) // Sel +#define HID_USAGE_SENSORS_VT_I1 (0x903) // Sel +#define HID_USAGE_SENSORS_VT_UI2 (0x904) // Sel +#define HID_USAGE_SENSORS_VT_I2 (0x905) // Sel +#define HID_USAGE_SENSORS_VT_UI4 (0x906) // Sel +#define HID_USAGE_SENSORS_VT_I4 (0x907) // Sel +#define HID_USAGE_SENSORS_VT_UI8 (0x908) // Sel +#define HID_USAGE_SENSORS_VT_I8 (0x909) // Sel +#define HID_USAGE_SENSORS_VT_R4 (0x90A) // Sel +#define HID_USAGE_SENSORS_VT_R8 (0x90B) // Sel +#define HID_USAGE_SENSORS_VT_WSTR (0x90C) // Sel +#define HID_USAGE_SENSORS_VT_STR (0x90D) // Sel +#define HID_USAGE_SENSORS_VT_CLSID (0x90E) // Sel +#define HID_USAGE_SENSORS_VT_VECTOR_VT_UI1 (0x90F) // Sel +#define HID_USAGE_SENSORS_VT_F16E0 (0x910) // Sel +#define HID_USAGE_SENSORS_VT_F16E1 (0x911) // Sel +#define HID_USAGE_SENSORS_VT_F16E2 (0x912) // Sel +#define HID_USAGE_SENSORS_VT_F16E3 (0x913) // Sel +#define HID_USAGE_SENSORS_VT_F16E4 (0x914) // Sel +#define HID_USAGE_SENSORS_VT_F16E5 (0x915) // Sel +#define HID_USAGE_SENSORS_VT_F16E6 (0x916) // Sel +#define HID_USAGE_SENSORS_VT_F16E7 (0x917) // Sel +#define HID_USAGE_SENSORS_VT_F16E8 (0x918) // Sel +#define HID_USAGE_SENSORS_VT_F16E9 (0x919) // Sel +#define HID_USAGE_SENSORS_VT_F16EA (0x91A) // Sel +#define HID_USAGE_SENSORS_VT_F16EB (0x91B) // Sel +#define HID_USAGE_SENSORS_VT_F16EC (0x91C) // Sel +#define HID_USAGE_SENSORS_VT_F16ED (0x91D) // Sel +#define HID_USAGE_SENSORS_VT_F16EE (0x91E) // Sel +#define HID_USAGE_SENSORS_VT_F16EF (0x91F) // Sel +#define HID_USAGE_SENSORS_VT_F32E0 (0x920) // Sel +#define HID_USAGE_SENSORS_VT_F32E1 (0x921) // Sel +#define HID_USAGE_SENSORS_VT_F32E2 (0x922) // Sel +#define HID_USAGE_SENSORS_VT_F32E3 (0x923) // Sel +#define HID_USAGE_SENSORS_VT_F32E4 (0x924) // Sel +#define HID_USAGE_SENSORS_VT_F32E5 (0x925) // Sel +#define HID_USAGE_SENSORS_VT_F32E6 (0x926) // Sel +#define HID_USAGE_SENSORS_VT_F32E7 (0x927) // Sel +#define HID_USAGE_SENSORS_VT_F32E8 (0x928) // Sel +#define HID_USAGE_SENSORS_VT_F32E9 (0x929) // Sel +#define HID_USAGE_SENSORS_VT_F32EA (0x92A) // Sel +#define HID_USAGE_SENSORS_VT_F32EB (0x92B) // Sel +#define HID_USAGE_SENSORS_VT_F32EC (0x92C) // Sel +#define HID_USAGE_SENSORS_VT_F32ED (0x92D) // Sel +#define HID_USAGE_SENSORS_VT_F32EE (0x92E) // Sel +#define HID_USAGE_SENSORS_VT_F32EF (0x92F) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_TYPE_UNKNOWN (0x930) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_TYPE_STATIONARY (0x931) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_TYPE_FIDGETING (0x932) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_TYPE_WALKING (0x933) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_TYPE_RUNNING (0x934) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_TYPE_IN_VEHICLE (0x935) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_TYPE_BIKING (0x936) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_TYPE_IDLE (0x937) // Sel +#define HID_USAGE_SENSORS_UNIT_NOT_SPECIFIED (0x940) // Sel +#define HID_USAGE_SENSORS_UNIT_LUX (0x941) // Sel +#define HID_USAGE_SENSORS_UNIT_DEGREES_KELVIN (0x942) // Sel +#define HID_USAGE_SENSORS_UNIT_DEGREES_CELSIUS (0x943) // Sel +#define HID_USAGE_SENSORS_UNIT_PASCAL (0x944) // Sel +#define HID_USAGE_SENSORS_UNIT_NEWTON (0x945) // Sel +#define HID_USAGE_SENSORS_UNIT_METERS_SECOND (0x946) // Sel +#define HID_USAGE_SENSORS_UNIT_KILOGRAM (0x947) // Sel +#define HID_USAGE_SENSORS_UNIT_METER (0x948) // Sel +#define HID_USAGE_SENSORS_UNIT_METERS_SECOND_SECOND (0x949) // Sel +#define HID_USAGE_SENSORS_UNIT_FARAD (0x94A) // Sel +#define HID_USAGE_SENSORS_UNIT_AMPERE (0x94B) // Sel +#define HID_USAGE_SENSORS_UNIT_WATT (0x94C) // Sel +#define HID_USAGE_SENSORS_UNIT_HENRY (0x94D) // Sel +#define HID_USAGE_SENSORS_UNIT_OHM (0x94E) // Sel +#define HID_USAGE_SENSORS_UNIT_VOLT (0x94F) // Sel +#define HID_USAGE_SENSORS_UNIT_HERTZ (0x950) // Sel +#define HID_USAGE_SENSORS_UNIT_BAR (0x951) // Sel +#define HID_USAGE_SENSORS_UNIT_DEGREES_ANTI_CLOCKWISE (0x952) // Sel +#define HID_USAGE_SENSORS_UNIT_DEGREES_CLOCKWISE (0x953) // Sel +#define HID_USAGE_SENSORS_UNIT_DEGREES (0x954) // Sel +#define HID_USAGE_SENSORS_UNIT_DEGREES_SECOND (0x955) // Sel +#define HID_USAGE_SENSORS_UNIT_DEGREES_SECOND_SECOND (0x956) // Sel +#define HID_USAGE_SENSORS_UNIT_KNOT (0x957) // Sel +#define HID_USAGE_SENSORS_UNIT_PERCENT (0x958) // Sel +#define HID_USAGE_SENSORS_UNIT_SECOND (0x959) // Sel +#define HID_USAGE_SENSORS_UNIT_MILLISECOND (0x95A) // Sel +#define HID_USAGE_SENSORS_UNIT_G (0x95B) // Sel +#define HID_USAGE_SENSORS_UNIT_BYTES (0x95C) // Sel +#define HID_USAGE_SENSORS_UNIT_MILLIGAUSS (0x95D) // Sel +#define HID_USAGE_SENSORS_UNIT_BITS (0x95E) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_STATE_NO_STATE_CHANGE (0x960) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_STATE_START_ACTIVITY (0x961) // Sel +#define HID_USAGE_SENSORS_ACTIVITY_STATE_END_ACTIVITY (0x962) // Sel +#define HID_USAGE_SENSORS_EXPONENT_0 (0x970) // Sel +#define HID_USAGE_SENSORS_EXPONENT_1 (0x971) // Sel +#define HID_USAGE_SENSORS_EXPONENT_2 (0x972) // Sel +#define HID_USAGE_SENSORS_EXPONENT_3 (0x973) // Sel +#define HID_USAGE_SENSORS_EXPONENT_4 (0x974) // Sel +#define HID_USAGE_SENSORS_EXPONENT_5 (0x975) // Sel +#define HID_USAGE_SENSORS_EXPONENT_6 (0x976) // Sel +#define HID_USAGE_SENSORS_EXPONENT_7 (0x977) // Sel +#define HID_USAGE_SENSORS_EXPONENT_8 (0x978) // Sel +#define HID_USAGE_SENSORS_EXPONENT_9 (0x979) // Sel +#define HID_USAGE_SENSORS_EXPONENT_A (0x97A) // Sel +#define HID_USAGE_SENSORS_EXPONENT_B (0x97B) // Sel +#define HID_USAGE_SENSORS_EXPONENT_C (0x97C) // Sel +#define HID_USAGE_SENSORS_EXPONENT_D (0x97D) // Sel +#define HID_USAGE_SENSORS_EXPONENT_E (0x97E) // Sel +#define HID_USAGE_SENSORS_EXPONENT_F (0x97F) // Sel +#define HID_USAGE_SENSORS_DEVICE_POSITION_UNKNOWN (0x980) // Sel +#define HID_USAGE_SENSORS_DEVICE_POSITION_UNCHANGED (0x981) // Sel +#define HID_USAGE_SENSORS_DEVICE_POSITION_ON_DESK (0x982) // Sel +#define HID_USAGE_SENSORS_DEVICE_POSITION_IN_HAND (0x983) // Sel +#define HID_USAGE_SENSORS_DEVICE_POSITION_MOVING_IN_BAG (0x984) // Sel +#define HID_USAGE_SENSORS_DEVICE_POSITION_STATIONARY_IN_BAG (0x985) // Sel +#define HID_USAGE_SENSORS_STEP_TYPE_UNKNOWN (0x990) // Sel +#define HID_USAGE_SENSORS_STEP_TYPE_RUNNING (0x991) // Sel +#define HID_USAGE_SENSORS_STEP_TYPE_WALKING (0x992) // Sel +#define HID_USAGE_SENSORS_GESTURE_STATE_UNKNOWN (0x9A0) // Sel +#define HID_USAGE_SENSORS_GESTURE_STATE_STARTED (0x9A1) // Sel +#define HID_USAGE_SENSORS_GESTURE_STATE_COMPLETED (0x9A2) // Sel +#define HID_USAGE_SENSORS_GESTURE_STATE_CANCELLED (0x9A3) // Sel +#define HID_USAGE_SENSORS_HINGE_FOLD_CONTRIBUTING_PANEL_UNKNOWN (0x9B0) // Sel +#define HID_USAGE_SENSORS_HINGE_FOLD_CONTRIBUTING_PANEL_PANEL_1 (0x9B1) // Sel +#define HID_USAGE_SENSORS_HINGE_FOLD_CONTRIBUTING_PANEL_PANEL_2 (0x9B2) // Sel +#define HID_USAGE_SENSORS_HINGE_FOLD_CONTRIBUTING_PANEL_BOTH (0x9B3) // Sel +#define HID_USAGE_SENSORS_HINGE_FOLD_TYPE_UNKNOWN (0x9B4) // Sel +#define HID_USAGE_SENSORS_HINGE_FOLD_TYPE_INCREASING (0x9B5) // Sel +#define HID_USAGE_SENSORS_HINGE_FOLD_TYPE_DECREASING (0x9B6) // Sel +#define HID_USAGE_SENSORS_MODIFIER_CHANGE_SENSITIVITY_ABSOLUTE (0x1000) // US +#define HID_USAGE_SENSORS_MODIFIER_MAXIMUM (0x2000) // US +#define HID_USAGE_SENSORS_MODIFIER_MINIMUM (0x3000) // US +#define HID_USAGE_SENSORS_MODIFIER_ACCURACY (0x4000) // US +#define HID_USAGE_SENSORS_MODIFIER_RESOLUTION (0x5000) // US +#define HID_USAGE_SENSORS_MODIFIER_THRESHOLD_HIGH (0x6000) // US +#define HID_USAGE_SENSORS_MODIFIER_THRESHOLD_LOW (0x7000) // US +#define HID_USAGE_SENSORS_MODIFIER_CALIBRATION_OFFSET (0x8000) // US +#define HID_USAGE_SENSORS_MODIFIER_CALIBRATION_MULTIPLIER (0x9000) // US +#define HID_USAGE_SENSORS_MODIFIER_REPORT_INTERVAL (0xA000) // US +#define HID_USAGE_SENSORS_MODIFIER_FREQUENCY_MAX (0xB000) // US +#define HID_USAGE_SENSORS_MODIFIER_PERIOD_MAX (0xC000) // US +#define HID_USAGE_SENSORS_MODIFIER_CHANGE_SENSITIVITY_PERCENT_OF_RANGE (0xD000) // US +#define HID_USAGE_SENSORS_MODIFIER_CHANGE_SENSITIVITY_PERCENT_RELATIVE (0xE000) // US + +/* Page 0x40: Medical Instrument */ +#define HID_USAGE_MEDICAL_UNDEFINED (0x00) +#define HID_USAGE_MEDICAL_MEDICAL_ULTRASOUND (0x01) // CA +#define HID_USAGE_MEDICAL_VCR_ACQUISITION (0x20) // OOC +#define HID_USAGE_MEDICAL_FREEZE_THAW (0x21) // OOC +#define HID_USAGE_MEDICAL_CLIP_STORE (0x22) // OSC +#define HID_USAGE_MEDICAL_UPDATE (0x23) // OSC +#define HID_USAGE_MEDICAL_NEXT (0x24) // OSC +#define HID_USAGE_MEDICAL_SAVE (0x25) // OSC +#define HID_USAGE_MEDICAL_PRINT (0x26) // OSC +#define HID_USAGE_MEDICAL_MICROPHONE_ENABLE (0x27) // OSC +#define HID_USAGE_MEDICAL_CINE (0x40) // LC +#define HID_USAGE_MEDICAL_TRANSMIT_POWER (0x41) // LC +#define HID_USAGE_MEDICAL_VOLUME (0x42) // LC +#define HID_USAGE_MEDICAL_FOCUS (0x43) // LC +#define HID_USAGE_MEDICAL_DEPTH (0x44) // LC +#define HID_USAGE_MEDICAL_SOFT_STEP_MINUS_PRIMARY (0x60) // LC +#define HID_USAGE_MEDICAL_SOFT_STEP_MINUS_SECONDARY (0x61) // LC +#define HID_USAGE_MEDICAL_DEPTH_GAIN_COMPENSATION (0x70) // LC +#define HID_USAGE_MEDICAL_ZOOM_SELECT (0x80) // OSC +#define HID_USAGE_MEDICAL_ZOOM_ADJUST (0x81) // LC +#define HID_USAGE_MEDICAL_SPECTRAL_DOPPLER_MODE_SELECT (0x82) // OSC +#define HID_USAGE_MEDICAL_SPECTRAL_DOPPLER_ADJUST (0x83) // LC +#define HID_USAGE_MEDICAL_COLOR_DOPPLER_MODE_SELECT (0x84) // OSC +#define HID_USAGE_MEDICAL_COLOR_DOPPLER_ADJUST (0x85) // LC +#define HID_USAGE_MEDICAL_MOTION_MODE_SELECT (0x86) // OSC +#define HID_USAGE_MEDICAL_MOTION_MODE_ADJUST (0x87) // LC +#define HID_USAGE_MEDICAL_2_D_MODE_SELECT (0x88) // OSC +#define HID_USAGE_MEDICAL_2_D_MODE_ADJUST (0x89) // LC +#define HID_USAGE_MEDICAL_SOFT_CONTROL_SELECT (0xA0) // OSC +#define HID_USAGE_MEDICAL_SOFT_CONTROL_ADJUST (0xA1) // LC + +/* Page 0x41: Braille Display */ +#define HID_USAGE_BRAILLE_UNDEFINED (0x00) +#define HID_USAGE_BRAILLE_BRAILLE_DISPLAY (0x01) // CA +#define HID_USAGE_BRAILLE_BRAILLE_ROW (0x02) // NAry +#define HID_USAGE_BRAILLE_8_DOT_BRAILLE_CELL (0x03) // DV +#define HID_USAGE_BRAILLE_6_DOT_BRAILLE_CELL (0x04) // DV +#define HID_USAGE_BRAILLE_NUMBER_OF_BRAILLE_CELLS (0x05) // DV +#define HID_USAGE_BRAILLE_SCREEN_READER_CONTROL (0x06) // NAry +#define HID_USAGE_BRAILLE_SCREEN_READER_IDENTIFIER (0x07) // DV +#define HID_USAGE_BRAILLE_ROUTER_SET_1 (0xFA) // NAry +#define HID_USAGE_BRAILLE_ROUTER_SET_2 (0xFB) // NAry +#define HID_USAGE_BRAILLE_ROUTER_SET_3 (0xFC) // Nary +#define HID_USAGE_BRAILLE_ROUTER_KEY (0x100) // Sel +#define HID_USAGE_BRAILLE_ROW_ROUTER_KEY (0x101) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_BUTTONS (0x200) // NAry +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_1 (0x201) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_2 (0x202) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_3 (0x203) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_4 (0x204) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_5 (0x205) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_6 (0x206) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_7 (0x207) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_DOT_8 (0x208) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_SPACE (0x209) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_LEFT_SPACE (0x20A) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_KEYBOARD_RIGHT_SPACE (0x20B) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_FACE_CONTROLS (0x20C) // NAry +#define HID_USAGE_BRAILLE_BRAILLE_LEFT_CONTROLS (0x20D) // NAry +#define HID_USAGE_BRAILLE_BRAILLE_RIGHT_CONTROLS (0x20E) // NAry +#define HID_USAGE_BRAILLE_BRAILLE_TOP_CONTROLS (0x20F) // NAry +#define HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_CENTER (0x210) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_UP (0x211) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_DOWN (0x212) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_LEFT (0x213) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_JOYSTICK_RIGHT (0x214) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_D_PAD_CENTER (0x215) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_D_PAD_UP (0x216) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_D_PAD_DOWN (0x217) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_D_PAD_LEFT (0x218) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_D_PAD_RIGHT (0x219) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_PAN_LEFT (0x21A) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_PAN_RIGHT (0x21B) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_ROCKER_UP (0x21C) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_ROCKER_DOWN (0x21D) // Sel +#define HID_USAGE_BRAILLE_BRAILLE_ROCKER_PRESS (0x21E) // Sel + +/* Page 0x59: Lighting And Illumination */ +#define HID_USAGE_LIGHT_UNDEFINED (0x00) +#define HID_USAGE_LIGHT_LAMP_ARRAY (0x01) // CA +#define HID_USAGE_LIGHT_LAMP_ARRAY_ATTRIBUTES_REPORT (0x02) // CL +#define HID_USAGE_LIGHT_LAMP_COUNT (0x03) // SV, DV +#define HID_USAGE_LIGHT_BOUNDING_BOX_WIDTH_IN_MICROMETERS (0x04) // SV +#define HID_USAGE_LIGHT_BOUNDING_BOX_HEIGHT_IN_MICROMETERS (0x05) // SV +#define HID_USAGE_LIGHT_BOUNDING_BOX_DEPTH_IN_MICROMETERS (0x06) // SV +#define HID_USAGE_LIGHT_LAMP_ARRAY_KIND (0x07) // SV +#define HID_USAGE_LIGHT_MIN_UPDATE_INTERVAL_IN_MICROSECONDS (0x08) // SV +#define HID_USAGE_LIGHT_LAMP_ATTRIBUTES_REQUEST_REPORT (0x20) // CL +#define HID_USAGE_LIGHT_LAMP_ID (0x21) // SV, DV +#define HID_USAGE_LIGHT_LAMP_ATTRIBUTES_RESPONSE_REPORT (0x22) // CL +#define HID_USAGE_LIGHT_POSITION_X_IN_MICROMETERS (0x23) // DV +#define HID_USAGE_LIGHT_POSITION_Y_IN_MICROMETERS (0x24) // DV +#define HID_USAGE_LIGHT_POSITION_Z_IN_MICROMETERS (0x25) // DV +#define HID_USAGE_LIGHT_LAMP_PURPOSES (0x26) // DV +#define HID_USAGE_LIGHT_UPDATE_LATENCY_IN_MICROSECONDS (0x27) // DV +#define HID_USAGE_LIGHT_RED_LEVEL_COUNT (0x28) // DV +#define HID_USAGE_LIGHT_GREEN_LEVEL_COUNT (0x29) // DV +#define HID_USAGE_LIGHT_BLUE_LEVEL_COUNT (0x2A) // DV +#define HID_USAGE_LIGHT_INTENSITY_LEVEL_COUNT (0x2B) // DV +#define HID_USAGE_LIGHT_IS_PROGRAMMABLE (0x2C) // DV +#define HID_USAGE_LIGHT_INPUT_BINDING (0x2D) // DV +#define HID_USAGE_LIGHT_LAMP_MULTI_UPDATE_REPORT (0x50) // CL +#define HID_USAGE_LIGHT_RED_UPDATE_CHANNEL (0x51) // DV +#define HID_USAGE_LIGHT_GREEN_UPDATE_CHANNEL (0x52) // DV +#define HID_USAGE_LIGHT_BLUE_UPDATE_CHANNEL (0x53) // DV +#define HID_USAGE_LIGHT_INTENSITY_UPDATE_CHANNEL (0x54) // DV +#define HID_USAGE_LIGHT_LAMP_UPDATE_FLAGS (0x55) // DV +#define HID_USAGE_LIGHT_LAMP_RANGE_UPDATE_REPORT (0x60) // CL +#define HID_USAGE_LIGHT_LAMP_ID_START (0x61) // DV +#define HID_USAGE_LIGHT_LAMP_ID_END (0x62) // DV +#define HID_USAGE_LIGHT_LAMP_ARRAY_CONTROL_REPORT (0x70) // CL +#define HID_USAGE_LIGHT_AUTONOMOUS_MODE (0x71) // DV + +/* Page 0x80: USB Monitor */ +#define HID_USAGE_MONITOR_MONITOR_CONTROL (0x01) +#define HID_USAGE_MONITOR_EDID_INFORMATION (0x02) +#define HID_USAGE_MONITOR_VDIF_INFORMATION (0x03) +#define HID_USAGE_MONITOR_VESA_VERSION (0x04) + +/* Page 0x82: VESA Virtual Control */ +#define HID_USAGE_MONITOR_VESA_BRIGHTNESS (0x10) +#define HID_USAGE_MONITOR_VESA_CONTRAST (0x12) +#define HID_USAGE_MONITOR_VESA_RED_VIDEO_GAIN (0x16) +#define HID_USAGE_MONITOR_VESA_GREEN_VIDEO_GAIN (0x18) +#define HID_USAGE_MONITOR_VESA_BLUE_VIDEO_GAIN (0x1A) +#define HID_USAGE_MONITOR_VESA_FOCUS (0x1C) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_POSITION (0x20) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_SIZE (0x22) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_PINCUSHION (0x24) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_PINCUSHION_BALANCE (0x26) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_MISCONVERGENCE (0x28) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_LINEARITY (0x2A) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_LINEARITY_BALANCE (0x2C) +#define HID_USAGE_MONITOR_VESA_VERTICAL_POSITION (0x30) +#define HID_USAGE_MONITOR_VESA_VERTICAL_SIZE (0x32) +#define HID_USAGE_MONITOR_VESA_VERTICAL_PINCUSHION (0x34) +#define HID_USAGE_MONITOR_VESA_VERTICAL_PINCUSHION_BALANCE (0x36) +#define HID_USAGE_MONITOR_VESA_VERTICAL_MISCONVERGENCE (0x38) +#define HID_USAGE_MONITOR_VESA_VERTICAL_LINEARITY (0x3A) +#define HID_USAGE_MONITOR_VESA_VERTICAL_LINEARITY_BALANCE (0x3C) +#define HID_USAGE_MONITOR_VESA_PARALLELOGRAM_DISTORTION_KEY_BALANCE (0x40) +#define HID_USAGE_MONITOR_VESA_TRAPEZOIDAL_DISTORTION_KEY (0x42) +#define HID_USAGE_MONITOR_VESA_TILT_ROTATION (0x44) +#define HID_USAGE_MONITOR_VESA_TOP_CORNER_DISTORTION_CONTROL (0x46) +#define HID_USAGE_MONITOR_VESA_TOP_CORNER_DISTORTION_BALANCE (0x48) +#define HID_USAGE_MONITOR_VESA_BOTTOM_CORNER_DISTORTION_CONTROL (0x4A) +#define HID_USAGE_MONITOR_VESA_BOTTOM_CORNER_DISTORTION_BALANCE (0x4C) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_MOIR (0x56) +#define HID_USAGE_MONITOR_VESA_VERTICAL_MOIR (0x58) +#define HID_USAGE_MONITOR_VESA_RED_VIDEO_BLACK_LEVEL (0x6C) +#define HID_USAGE_MONITOR_VESA_GREEN_VIDEO_BLACK_LEVEL (0x6E) +#define HID_USAGE_MONITOR_VESA_BLUE_VIDEO_BLACK_LEVEL (0x70) +#define HID_USAGE_MONITOR_VESA_INPUT_LEVEL_SELECT (0x5E) +#define HID_USAGE_MONITOR_VESA_INPUT_SOURCE_SELECT (0x60) +#define HID_USAGE_MONITOR_VESA_ON_SCREEN_DISPLAY (0xCA) +#define HID_USAGE_MONITOR_VESA_STEREOMODE (0xD4) +#define HID_USAGE_MONITOR_VESA_AUTO_SIZE_CENTER (0xA2) +#define HID_USAGE_MONITOR_VESA_POLARITY_HORIZONTAL_SYNCHRONIZATION (0xA4) +#define HID_USAGE_MONITOR_VESA_POLARITY_VERTICAL_SYNCHRONIZATION (0xA6) +#define HID_USAGE_MONITOR_VESA_SYNCHRONIZATION_TYPE (0xA8) +#define HID_USAGE_MONITOR_VESA_SCREEN_ORIENTATION (0xAA) +#define HID_USAGE_MONITOR_VESA_HORIZONTAL_FREQUENCY (0xAC) +#define HID_USAGE_MONITOR_VESA_VERTICAL_FREQUENCY (0xAE) +#define HID_USAGE_MONITOR_VESA_DEGAUSS (0x01) +#define HID_USAGE_MONITOR_VESA_SETTINGS (0xB0) + +/* Page 0x8C: Bar Code Scanner */ +#define HID_USAGE_POS_BARCODE_UNDEFINED (0x00) +#define HID_USAGE_POS_BARCODE_BAR_CODE_BADGE_READER (0x01) // CA +#define HID_USAGE_POS_BARCODE_BAR_CODE_SCANNER (0x02) // CA +#define HID_USAGE_POS_BARCODE_DUMB_BAR_CODE_SCANNER (0x03) // CA +#define HID_USAGE_POS_BARCODE_CORDLESS_SCANNER_BASE (0x04) // CA +#define HID_USAGE_POS_BARCODE_BAR_CODE_SCANNER_CRADLE (0x05) // CA +#define HID_USAGE_POS_BARCODE_ATTRIBUTE_REPORT (0x10) // CL +#define HID_USAGE_POS_BARCODE_SETTINGS_REPORT (0x11) // CL +#define HID_USAGE_POS_BARCODE_SCANNED_DATA_REPORT (0x12) // CL +#define HID_USAGE_POS_BARCODE_RAW_SCANNED_DATA_REPORT (0x13) // CL +#define HID_USAGE_POS_BARCODE_TRIGGER_REPORT (0x14) // CL +#define HID_USAGE_POS_BARCODE_STATUS_REPORT (0x15) // CL +#define HID_USAGE_POS_BARCODE_UPC_EAN_CONTROL_REPORT (0x16) // CL +#define HID_USAGE_POS_BARCODE_EAN_2_3_LABEL_CONTROL_REPORT (0x17) // CL +#define HID_USAGE_POS_BARCODE_CODE_39_CONTROL_REPORT (0x18) // CL +#define HID_USAGE_POS_BARCODE_INTERLEAVED_2_OF_5_CONTROL_REPORT (0x19) // CL +#define HID_USAGE_POS_BARCODE_STANDARD_2_OF_5_CONTROL_REPORT (0x1A) // CL +#define HID_USAGE_POS_BARCODE_MSI_PLESSEY_CONTROL_REPORT (0x1B) // CL +#define HID_USAGE_POS_BARCODE_CODABAR_CONTROL_REPORT (0x1C) // CL +#define HID_USAGE_POS_BARCODE_CODE_128_CONTROL_REPORT (0x1D) // CL +#define HID_USAGE_POS_BARCODE_MISC_1D_CONTROL_REPORT (0x1E) // CL +#define HID_USAGE_POS_BARCODE_2D_CONTROL_REPORT (0x1F) // CL +#define HID_USAGE_POS_BARCODE_AIMING_POINTER_MODE (0x30) // SF +#define HID_USAGE_POS_BARCODE_BAR_CODE_PRESENT_SENSOR (0x31) // SF +#define HID_USAGE_POS_BARCODE_CLASS_1A_LASER (0x32) // SF +#define HID_USAGE_POS_BARCODE_CLASS_2_LASER (0x33) // SF +#define HID_USAGE_POS_BARCODE_HEATER_PRESENT (0x34) // SF +#define HID_USAGE_POS_BARCODE_CONTACT_SCANNER (0x35) // SF +#define HID_USAGE_POS_BARCODE_ELECTRONIC_ARTICLE_SURVEILLANCE_NOTIFICATION (0x36) // SF +#define HID_USAGE_POS_BARCODE_CONSTANT_ELECTRONIC_ARTICLE_SURVEILLANCE (0x37) // SF +#define HID_USAGE_POS_BARCODE_ERROR_INDICATION (0x38) // SF +#define HID_USAGE_POS_BARCODE_FIXED_BEEPER (0x39) // SF +#define HID_USAGE_POS_BARCODE_GOOD_DECODE_INDICATION (0x3A) // SF +#define HID_USAGE_POS_BARCODE_HANDS_FREE_SCANNING (0x3B) // SF +#define HID_USAGE_POS_BARCODE_INTRINSICALLY_SAFE (0x3C) // SF +#define HID_USAGE_POS_BARCODE_KLASSE_EINS_LASER (0x3D) // SF +#define HID_USAGE_POS_BARCODE_LONG_RANGE_SCANNER (0x3E) // SF +#define HID_USAGE_POS_BARCODE_MIRROR_SPEED_CONTROL (0x3F) // SF +#define HID_USAGE_POS_BARCODE_NOT_ON_FILE_INDICATION (0x40) // SF +#define HID_USAGE_POS_BARCODE_PROGRAMMABLE_BEEPER (0x41) // SF +#define HID_USAGE_POS_BARCODE_TRIGGERLESS (0x42) // SF +#define HID_USAGE_POS_BARCODE_WAND (0x43) // SF +#define HID_USAGE_POS_BARCODE_WATER_RESISTANT (0x44) // SF +#define HID_USAGE_POS_BARCODE_MULTI_RANGE_SCANNER (0x45) // SF +#define HID_USAGE_POS_BARCODE_PROXIMITY_SENSOR (0x46) // SF +#define HID_USAGE_POS_BARCODE_FRAGMENT_DECODING (0x4D) // DF +#define HID_USAGE_POS_BARCODE_SCANNER_READ_CONFIDENCE (0x4E) // DV +#define HID_USAGE_POS_BARCODE_DATA_PREFIX (0x4F) // NAry +#define HID_USAGE_POS_BARCODE_PREFIX_AIMI (0x50) // SEL +#define HID_USAGE_POS_BARCODE_PREFIX_NONE (0x51) // SEL +#define HID_USAGE_POS_BARCODE_PREFIX_PROPRIETARY (0x52) // SEL +#define HID_USAGE_POS_BARCODE_ACTIVE_TIME (0x55) // DV +#define HID_USAGE_POS_BARCODE_AIMING_LASER_PATTERN (0x56) // DF +#define HID_USAGE_POS_BARCODE_BAR_CODE_PRESENT (0x57) // OOC +#define HID_USAGE_POS_BARCODE_BEEPER_STATE (0x58) // OOC +#define HID_USAGE_POS_BARCODE_LASER_ON_TIME (0x59) // DV +#define HID_USAGE_POS_BARCODE_LASER_STATE (0x5A) // OOC +#define HID_USAGE_POS_BARCODE_LOCKOUT_TIME (0x5B) // DV +#define HID_USAGE_POS_BARCODE_MOTOR_STATE (0x5C) // OOC +#define HID_USAGE_POS_BARCODE_MOTOR_TIMEOUT (0x5D) // DV +#define HID_USAGE_POS_BARCODE_POWER_ON_RESET_SCANNER (0x5E) // DF +#define HID_USAGE_POS_BARCODE_PREVENT_READ_OF_BARCODES (0x5F) // DF +#define HID_USAGE_POS_BARCODE_INITIATE_BARCODE_READ (0x60) // DF +#define HID_USAGE_POS_BARCODE_TRIGGER_STATE (0x61) // OOC +#define HID_USAGE_POS_BARCODE_TRIGGER_MODE (0x62) // NAry +#define HID_USAGE_POS_BARCODE_TRIGGER_MODE_BLINKING_LASER_ON (0x63) // SEL +#define HID_USAGE_POS_BARCODE_TRIGGER_MODE_CONTINUOUS_LASER_ON (0x64) // SEL +#define HID_USAGE_POS_BARCODE_TRIGGER_MODE_LASER_ON_WHILE_PULLED (0x65) // SEL +#define HID_USAGE_POS_BARCODE_TRIGGER_MODE_LASER_STAYS_ON_AFTER_TRIGGER_RELEASE (0x66) // SEL +#define HID_USAGE_POS_BARCODE_COMMIT_PARAMETERS_TO_NVM (0x6D) // DF +#define HID_USAGE_POS_BARCODE_PARAMETER_SCANNING (0x6E) // DF +#define HID_USAGE_POS_BARCODE_PARAMETERS_CHANGED (0x6F) // OOC +#define HID_USAGE_POS_BARCODE_SET_PARAMETER_DEFAULT_VALUES (0x70) // DF +#define HID_USAGE_POS_BARCODE_SCANNER_IN_CRADLE (0x75) // OOC +#define HID_USAGE_POS_BARCODE_SCANNER_IN_RANGE (0x76) // OOC +#define HID_USAGE_POS_BARCODE_AIM_DURATION (0x7A) // DV +#define HID_USAGE_POS_BARCODE_GOOD_READ_LAMP_DURATION (0x7B) // DV +#define HID_USAGE_POS_BARCODE_GOOD_READ_LAMP_INTENSITY (0x7C) // DV +#define HID_USAGE_POS_BARCODE_GOOD_READ_LED (0x7D) // DF +#define HID_USAGE_POS_BARCODE_GOOD_READ_TONE_FREQUENCY (0x7E) // DV +#define HID_USAGE_POS_BARCODE_GOOD_READ_TONE_LENGTH (0x7F) // DV +#define HID_USAGE_POS_BARCODE_GOOD_READ_TONE_VOLUME (0x80) // DV +#define HID_USAGE_POS_BARCODE_NO_READ_MESSAGE (0x82) // DF +#define HID_USAGE_POS_BARCODE_NOT_ON_FILE_VOLUME (0x83) // DV +#define HID_USAGE_POS_BARCODE_POWERUP_BEEP (0x84) // DF +#define HID_USAGE_POS_BARCODE_SOUND_ERROR_BEEP (0x85) // DF +#define HID_USAGE_POS_BARCODE_SOUND_GOOD_READ_BEEP (0x86) // DF +#define HID_USAGE_POS_BARCODE_SOUND_NOT_ON_FILE_BEEP (0x87) // DF +#define HID_USAGE_POS_BARCODE_GOOD_READ_WHEN_TO_WRITE (0x88) // NAry +#define HID_USAGE_POS_BARCODE_GRWTI_AFTER_DECODE (0x89) // SEL +#define HID_USAGE_POS_BARCODE_GRWTI_BEEP_LAMP_AFTER_TRANSMIT (0x8A) // SEL +#define HID_USAGE_POS_BARCODE_GRWTI_NO_BEEP_LAMP_USE_AT_ALL (0x8B) // SEL +#define HID_USAGE_POS_BARCODE_BOOKLAND_EAN (0x91) // DF +#define HID_USAGE_POS_BARCODE_CONVERT_EAN_8_TO_13_TYPE (0x92) // DF +#define HID_USAGE_POS_BARCODE_CONVERT_UPC_A_TO_EAN_13 (0x93) // DF +#define HID_USAGE_POS_BARCODE_CONVERT_UPC_E_TO_A (0x94) // DF +#define HID_USAGE_POS_BARCODE_EAN_13 (0x95) // DF +#define HID_USAGE_POS_BARCODE_EAN_8 (0x96) // DF +#define HID_USAGE_POS_BARCODE_EAN_99_128_MANDATORY (0x97) // DF +#define HID_USAGE_POS_BARCODE_EAN_99_P5_128_OPTIONAL (0x98) // DF +#define HID_USAGE_POS_BARCODE_UPC_EAN (0x9A) // DF +#define HID_USAGE_POS_BARCODE_UPC_EAN_COUPON_CODE (0x9B) // DF +#define HID_USAGE_POS_BARCODE_UPC_EAN_PERIODICALS (0x9C) // DV +#define HID_USAGE_POS_BARCODE_UPC_A (0x9D) // DF +#define HID_USAGE_POS_BARCODE_UPC_A_WITH_128_MANDATORY (0x9E) // DF +#define HID_USAGE_POS_BARCODE_UPC_A_WITH_128_OPTIONAL (0x9F) // DF +#define HID_USAGE_POS_BARCODE_UPC_A_WITH_P5_OPTIONAL (0xA0) // DF +#define HID_USAGE_POS_BARCODE_UPC_E (0xA1) // DF +#define HID_USAGE_POS_BARCODE_UPC_E1 (0xA2) // DF +#define HID_USAGE_POS_BARCODE_PERIODICAL (0xA9) // NAry +#define HID_USAGE_POS_BARCODE_PERIODICAL_AUTO_DISCRIMINATE_PLUS_2 (0xAA) // SEL +#define HID_USAGE_POS_BARCODE_PERIODICAL_ONLY_DECODE_WITH_PLUS_2 (0xAB) // SEL +#define HID_USAGE_POS_BARCODE_PERIODICAL_IGNORE_PLUS_2 (0xAC) // SEL +#define HID_USAGE_POS_BARCODE_PERIODICAL_AUTO_DISCRIMINATE_PLUS_5 (0xAD) // SEL +#define HID_USAGE_POS_BARCODE_PERIODICAL_ONLY_DECODE_WITH_PLUS_5 (0xAE) // SEL +#define HID_USAGE_POS_BARCODE_PERIODICAL_IGNORE_PLUS_5 (0xAF) // SEL +#define HID_USAGE_POS_BARCODE_CHECK (0xB0) // NAry +#define HID_USAGE_POS_BARCODE_CHECK_DISABLE_PRICE (0xB1) // SEL +#define HID_USAGE_POS_BARCODE_CHECK_ENABLE_4_DIGIT_PRICE (0xB2) // SEL +#define HID_USAGE_POS_BARCODE_CHECK_ENABLE_5_DIGIT_PRICE (0xB3) // SEL +#define HID_USAGE_POS_BARCODE_CHECK_ENABLE_EUROPEAN_4_DIGIT_PRICE (0xB4) // SEL +#define HID_USAGE_POS_BARCODE_CHECK_ENABLE_EUROPEAN_5_DIGIT_PRICE (0xB5) // SEL +#define HID_USAGE_POS_BARCODE_EAN_TWO_LABEL (0xB7) // DF +#define HID_USAGE_POS_BARCODE_EAN_THREE_LABEL (0xB8) // DF +#define HID_USAGE_POS_BARCODE_EAN_8_FLAG_DIGIT_1 (0xB9) // DV +#define HID_USAGE_POS_BARCODE_EAN_8_FLAG_DIGIT_2 (0xBA) // DV +#define HID_USAGE_POS_BARCODE_EAN_8_FLAG_DIGIT_3 (0xBB) // DV +#define HID_USAGE_POS_BARCODE_EAN_13_FLAG_DIGIT_1 (0xBC) // DV +#define HID_USAGE_POS_BARCODE_EAN_13_FLAG_DIGIT_2 (0xBD) // DV +#define HID_USAGE_POS_BARCODE_TRANSMIT_CHECK_DIGIT (0xF0) // NAry +#define HID_USAGE_POS_BARCODE_DISABLE_CHECK_DIGIT_TRANSMIT (0xF1) // SEL +#define HID_USAGE_POS_BARCODE_ENABLE_CHECK_DIGIT_TRANSMIT (0xF2) // SEL +#define HID_USAGE_POS_BARCODE_SYMBOLOGY_IDENTIFIER_1 (0xFB) // DV +#define HID_USAGE_POS_BARCODE_SYMBOLOGY_IDENTIFIER_2 (0xFC) // DV +#define HID_USAGE_POS_BARCODE_SYMBOLOGY_IDENTIFIER_3 (0xFD) // DV +#define HID_USAGE_POS_BARCODE_DECODED_DATA (0xFE) // DV +#define HID_USAGE_POS_BARCODE_DECODE_DATA_CONTINUED (0xFF) // DF +#define HID_USAGE_POS_BARCODE_BAR_SPACE_DATA (0x100) // DV +#define HID_USAGE_POS_BARCODE_SCANNER_DATA_ACCURACY (0x101) // DV +#define HID_USAGE_POS_BARCODE_RAW_DATA_POLARITY (0x102) // NAry +#define HID_USAGE_POS_BARCODE_POLARITY_INVERTED_BAR_CODE (0x103) // SEL +#define HID_USAGE_POS_BARCODE_POLARITY_NORMAL_BAR_CODE (0x104) // SEL +#define HID_USAGE_POS_BARCODE_MINIMUM_LENGTH_TO_DECODE (0x106) // DV +#define HID_USAGE_POS_BARCODE_MAXIMUM_LENGTH_TO_DECODE (0x107) // DV +#define HID_USAGE_POS_BARCODE_FIRST_DISCRETE_LENGTH_TO_DECODE (0x108) // DV +#define HID_USAGE_POS_BARCODE_SECOND_DISCRETE_LENGTH_TO_DECODE (0x109) // DV +#define HID_USAGE_POS_BARCODE_DATA_LENGTH_METHOD (0x10A) // NAry +#define HID_USAGE_POS_BARCODE_DL_METHOD_READ_ANY (0x10B) // SEL +#define HID_USAGE_POS_BARCODE_DL_METHOD_CHECK_IN_RANGE (0x10C) // SEL +#define HID_USAGE_POS_BARCODE_DL_METHOD_CHECK_FOR_DISCRETE (0x10D) // SEL +#define HID_USAGE_POS_BARCODE_AZTEC_CODE (0x110) // DF +#define HID_USAGE_POS_BARCODE_BC412 (0x111) // DF +#define HID_USAGE_POS_BARCODE_CHANNEL_CODE (0x112) // DF +#define HID_USAGE_POS_BARCODE_CODE_16 (0x113) // DF +#define HID_USAGE_POS_BARCODE_CODE_32 (0x114) // DF +#define HID_USAGE_POS_BARCODE_CODE_49 (0x115) // DF +#define HID_USAGE_POS_BARCODE_CODE_ONE (0x116) // DF +#define HID_USAGE_POS_BARCODE_COLORCODE (0x117) // DF +#define HID_USAGE_POS_BARCODE_DATA_MATRIX (0x118) // DF +#define HID_USAGE_POS_BARCODE_MAXICODE (0x119) // DF +#define HID_USAGE_POS_BARCODE_MICROPDF (0x11A) // DF +#define HID_USAGE_POS_BARCODE_PDF_417 (0x11B) // DF +#define HID_USAGE_POS_BARCODE_POSICODE (0x11C) // DF +#define HID_USAGE_POS_BARCODE_QR_CODE (0x11D) // DF +#define HID_USAGE_POS_BARCODE_SUPERCODE (0x11E) // DF +#define HID_USAGE_POS_BARCODE_ULTRACODE (0x11F) // DF +#define HID_USAGE_POS_BARCODE_USD_5_SLUG_CODE (0x120) // DF +#define HID_USAGE_POS_BARCODE_VERICODE (0x121) // DF + +/* Page 0x8D: Scale */ +#define HID_USAGE_POS_SCALE_UNDEFINED (0x00) +#define HID_USAGE_POS_SCALE_WEIGHING_DEVICE (0x01) // CA +#define HID_USAGE_POS_SCALE_SCALE_DEVICE (0x20) // CL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_I_METRIC (0x21) // CL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_I_METRIC_2 (0x22) // SEL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_II_METRIC (0x23) // SEL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_III_METRIC (0x24) // SEL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_IIIL_METRIC (0x25) // SEL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_IV_METRIC (0x26) // SEL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_III_ENGLISH (0x27) // SEL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_IIIL_ENGLISH (0x28) // SEL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_IV_ENGLISH (0x29) // SEL +#define HID_USAGE_POS_SCALE_SCALE_CLASS_GENERIC (0x2A) // SEL +#define HID_USAGE_POS_SCALE_SCALE_ATTRIBUTE_REPORT (0x30) // CL +#define HID_USAGE_POS_SCALE_SCALE_CONTROL_REPORT (0x31) // CL +#define HID_USAGE_POS_SCALE_SCALE_DATA_REPORT (0x32) // CL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_REPORT (0x33) // CL +#define HID_USAGE_POS_SCALE_SCALE_WEIGHT_LIMIT_REPORT (0x34) // CL +#define HID_USAGE_POS_SCALE_SCALE_STATISTICS_REPORT (0x35) // CL +#define HID_USAGE_POS_SCALE_DATA_WEIGHT (0x40) // DV +#define HID_USAGE_POS_SCALE_DATA_SCALING (0x41) // CV +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT (0x50) // CL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_MILLIGRAM (0x51) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_GRAM (0x52) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_KILOGRAM (0x53) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_CARATS (0x54) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_TAELS (0x55) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_GRAINS (0x56) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_PENNYWEIGHTS (0x57) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_METRIC_TON (0x58) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_AVOIR_TON (0x59) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_TROY_OUNCE (0x5A) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_OUNCE (0x5B) // SEL +#define HID_USAGE_POS_SCALE_WEIGHT_UNIT_POUND (0x5C) // SEL +#define HID_USAGE_POS_SCALE_CALIBRATION_COUNT (0x60) // DV +#define HID_USAGE_POS_SCALE_RE_ZERO_COUNT (0x61) // DV +#define HID_USAGE_POS_SCALE_SCALE_STATUS (0x70) // CL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_FAULT (0x71) // SEL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_STABLE_AT_CENTER_OF_ZERO (0x72) // SEL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_IN_MOTION (0x73) // SEL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_WEIGHT_STABLE (0x74) // SEL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_UNDER_ZERO (0x75) // SEL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_OVER_WEIGHT_LIMIT (0x76) // SEL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_REQUIRES_CALIBRATION (0x77) // SEL +#define HID_USAGE_POS_SCALE_SCALE_STATUS_REQUIRES_RE_ZEROING (0x78) // SEL +#define HID_USAGE_POS_SCALE_ZERO_SCALE (0x80) // OOC +#define HID_USAGE_POS_SCALE_ENFORCED_ZERO_RETURN (0x81) // OOC + +/* Page 0x8E: Magnetic Stripe Reading (MSR) Devices */ +#define HID_USAGE_POS_MSR_UNDEFINED (0x00) +#define HID_USAGE_POS_MSR_MSR_DEVICE_READ_ONLY (0x01) // CA +#define HID_USAGE_POS_MSR_TRACK_1_LENGTH (0x11) // SF, DF, SEL +#define HID_USAGE_POS_MSR_TRACK_2_LENGTH (0x12) // SF, DF, SEL +#define HID_USAGE_POS_MSR_TRACK_3_LENGTH (0x13) // SF, DF, SEL +#define HID_USAGE_POS_MSR_TRACK_JIS_LENGTH (0x14) // SF, DF, SEL +#define HID_USAGE_POS_MSR_TRACK_DATA (0x20) // SF, DF, SEL +#define HID_USAGE_POS_MSR_TRACK_1_DATA (0x21) // SF, DF, SEL +#define HID_USAGE_POS_MSR_TRACK_2_DATA (0x22) // SF, DF, SEL +#define HID_USAGE_POS_MSR_TRACK_3_DATA (0x23) // SF, DF, SEL +#define HID_USAGE_POS_MSR_TRACK_JIS_DATA (0x24) // SF, DF, SEL + +/* Page 0x90: Camera Control */ +#define HID_USAGE_CAMERA_UNDEFINED (0x00) +#define HID_USAGE_CAMERA_CAMERA_AUTO_FOCUS (0x20) // OSC +#define HID_USAGE_CAMERA_CAMERA_SHUTTER (0x21) // OSC + +/* Page 0xF1D0: FIDO Alliance */ +#define HID_USAGE_FIDO_UNDEFINED (0x00) +#define HID_USAGE_FIDO_U2F_AUTHENTICATOR_DEVICE (0x01) // CA +#define HID_USAGE_FIDO_INPUT_REPORT_DATA (0x20) // DV +#define HID_USAGE_FIDO_OUTPUT_REPORT_DATA (0x21) // DV \ No newline at end of file diff --git a/app/include/dt-bindings/zmk/hid_usage_pages.h b/app/include/dt-bindings/zmk/hid_usage_pages.h new file mode 100644 index 00000000..a551087d --- /dev/null +++ b/app/include/dt-bindings/zmk/hid_usage_pages.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + * + * Based on HID Usage Tables 1.21, + * Copyright © 1996-2020, USB Implementers Forum, + * https://www.usb.org/sites/default/files/hut1_21.pdf + */ + +#pragma once + +#define HID_USAGE_GD (0x01) // Generic Desktop +#define HID_USAGE_SIM (0x02) // Simulation Controls +#define HID_USAGE_VR (0x03) // VR Controls +#define HID_USAGE_SPORT (0x04) // Sport Controls +#define HID_USAGE_GAME (0x05) // Game Controls +#define HID_USAGE_GDV (0x06) // Generic Device Controls +#define HID_USAGE_KEY (0x07) // Keyboard/Keypad +#define HID_USAGE_LED (0x08) // LED +#define HID_USAGE_TELEPHONY (0x0B) // Telephony Device +#define HID_USAGE_CONSUMER (0x0C) // Consumer +#define HID_USAGE_DIGITIZERS (0x0D) // Digitizers +#define HID_USAGE_HAPTICS (0x0E) // Haptics +#define HID_USAGE_PID (0x0F) // PID +#define HID_USAGE_EHT (0x12) // Eye and Head Trackers +#define HID_USAGE_AUXDISP (0x14) // Auxiliary Display +#define HID_USAGE_SENSORS (0x20) // Sensors +#define HID_USAGE_MEDICAL (0x40) // Medical Instrument +#define HID_USAGE_BRAILLE (0x41) // Braille Display +#define HID_USAGE_LIGHT (0x59) // Lighting And Illumination +#define HID_USAGE_MONITOR (0x80) // USB Monitor +#define HID_USAGE_MONITOR_VALUES (0x81) // Monitor Enumerated Values +#define HID_USAGE_MONITOR_VESA (0x82) // VESA Virtual Control +#define HID_USAGE_POWER (0x84) // Power +#define HID_USAGE_POS_BARCODE (0x8C) // Bar Code Scanner +#define HID_USAGE_POS_SCALE (0x8D) // Scale +#define HID_USAGE_POS_MSR (0x8E) // Magnetic Stripe Reading (MSR) Devices +#define HID_USAGE_POS_RESV (0x8F) // Reserved Point of Sale +#define HID_USAGE_CAMERA (0x90) // Camera Control +#define HID_USAGE_ARCADE (0x91) // Arcade +#define HID_USAGE_GAMING (0x92) // Gaming Device +#define HID_USAGE_FIDO (0xF1D0) // FIDO Alliance \ No newline at end of file From e925319e4ce14b8aaf3515d3f2bea8b9eb287e89 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 3 Nov 2020 16:54:16 +0000 Subject: [PATCH 323/353] refactor(hid): Replace deprecated HID usage page references Deprecate `USAGE_KEYPAD` and replace with `HID_USAGE_KEY`. Deprecate `USAGE_CONSUMER` and replace with `HID_USAGE_CONSUMER`. Closes #217. --- app/dts/behaviors/key_press.dtsi | 7 ++++--- app/dts/behaviors/sensor_rotate_key_press.dtsi | 7 ++++--- app/include/dt-bindings/zmk/hid_usage_pages.h | 4 ++++ app/include/dt-bindings/zmk/keys.h | 4 ---- app/src/behaviors/behavior_hold_tap.c | 3 ++- app/src/endpoints.c | 9 +++++---- app/src/hid_listener.c | 9 +++++---- 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/app/dts/behaviors/key_press.dtsi b/app/dts/behaviors/key_press.dtsi index 5a01953c..a9e8d8b5 100644 --- a/app/dts/behaviors/key_press.dtsi +++ b/app/dts/behaviors/key_press.dtsi @@ -1,18 +1,19 @@ -#include + +#include / { behaviors { kp: behavior_key_press { compatible = "zmk,behavior-key-press"; label = "KEY_PRESS"; - usage_page = ; + usage_page = ; #binding-cells = <1>; }; cp: behavior_consumer_press { compatible = "zmk,behavior-key-press"; label = "CONSUMER_PRESS"; - usage_page = ; + usage_page = ; #binding-cells = <1>; }; }; diff --git a/app/dts/behaviors/sensor_rotate_key_press.dtsi b/app/dts/behaviors/sensor_rotate_key_press.dtsi index b094be58..fa410f19 100644 --- a/app/dts/behaviors/sensor_rotate_key_press.dtsi +++ b/app/dts/behaviors/sensor_rotate_key_press.dtsi @@ -1,18 +1,19 @@ -#include + +#include / { behaviors { inc_dec_kp: behavior_sensor_rotate_key_press { compatible = "zmk,behavior-sensor-rotate-key-press"; label = "ENC_KEY_PRESS"; - usage_page = ; + usage_page = ; #sensor-binding-cells = <2>; }; inc_dec_cp: behavior_sensor_rotate_consumer_press { compatible = "zmk,behavior-sensor-rotate-key-press"; label = "ENC_CONSUMER_PRESS"; - usage_page = ; + usage_page = ; #sensor-binding-cells = <2>; }; }; diff --git a/app/include/dt-bindings/zmk/hid_usage_pages.h b/app/include/dt-bindings/zmk/hid_usage_pages.h index a551087d..701a100c 100644 --- a/app/include/dt-bindings/zmk/hid_usage_pages.h +++ b/app/include/dt-bindings/zmk/hid_usage_pages.h @@ -10,6 +10,10 @@ #pragma once +/* WARNING: DEPRECATED from dt-bindings/zmk/keys.h */ +#define USAGE_KEYPAD (0x07) // WARNING: DEPRECATED (DO NOT USE) +#define USAGE_CONSUMER (0x0C) // WARNING: DEPRECATED (DO NOT USE) + #define HID_USAGE_GD (0x01) // Generic Desktop #define HID_USAGE_SIM (0x02) // Simulation Controls #define HID_USAGE_VR (0x03) // VR Controls diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index 5a52753e..815f86b6 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -6,10 +6,6 @@ #pragma once #include - -#define USAGE_KEYPAD 0x07 -#define USAGE_CONSUMER 0x0C - #define A 0x04 #define B 0x05 #define C 0x06 diff --git a/app/src/behaviors/behavior_hold_tap.c b/app/src/behaviors/behavior_hold_tap.c index ac91e7de..d1901489 100644 --- a/app/src/behaviors/behavior_hold_tap.c +++ b/app/src/behaviors/behavior_hold_tap.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -428,7 +429,7 @@ static int position_state_changed_listener(const struct zmk_event_header *eh) { } static inline bool only_mods(struct keycode_state_changed *ev) { - return ev->usage_page == USAGE_KEYPAD && ev->keycode >= LCTL && ev->keycode <= RGUI; + return ev->usage_page == HID_USAGE_KEY && ev->keycode >= LCTL && ev->keycode <= RGUI; } static int keycode_state_changed_listener(const struct zmk_event_header *eh) { diff --git a/app/src/endpoints.c b/app/src/endpoints.c index 0c795890..9a6967c6 100644 --- a/app/src/endpoints.c +++ b/app/src/endpoints.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -116,9 +117,9 @@ int zmk_endpoints_send_report(u8_t usage_page) { LOG_DBG("usage page 0x%02X", usage_page); switch (usage_page) { - case USAGE_KEYPAD: + case HID_USAGE_KEY: return send_keypad_report(); - case USAGE_CONSUMER: + case HID_USAGE_CONSUMER: return send_consumer_report(); default: LOG_ERR("Unsupported usage page %d", usage_page); @@ -209,8 +210,8 @@ static void disconnect_current_endpoint() { zmk_hid_keypad_clear(); zmk_hid_consumer_clear(); - zmk_endpoints_send_report(USAGE_KEYPAD); - zmk_endpoints_send_report(USAGE_CONSUMER); + zmk_endpoints_send_report(HID_USAGE_KEY); + zmk_endpoints_send_report(HID_USAGE_CONSUMER); } static void update_current_endpoint() { diff --git a/app/src/hid_listener.c b/app/src/hid_listener.c index 32e9d97b..5efb7987 100644 --- a/app/src/hid_listener.c +++ b/app/src/hid_listener.c @@ -13,6 +13,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include #include +#include #include static int hid_listener_keycode_pressed(u8_t usage_page, u32_t keycode, @@ -21,14 +22,14 @@ static int hid_listener_keycode_pressed(u8_t usage_page, u32_t keycode, LOG_DBG("usage_page 0x%02X keycode 0x%02X mods 0x%02X", usage_page, keycode, implicit_modifiers); switch (usage_page) { - case USAGE_KEYPAD: + case HID_USAGE_KEY: err = zmk_hid_keypad_press(keycode); if (err) { LOG_ERR("Unable to press keycode"); return err; } break; - case USAGE_CONSUMER: + case HID_USAGE_CONSUMER: err = zmk_hid_consumer_press(keycode); if (err) { LOG_ERR("Unable to press keycode"); @@ -46,14 +47,14 @@ static int hid_listener_keycode_released(u8_t usage_page, u32_t keycode, LOG_DBG("usage_page 0x%02X keycode 0x%02X mods 0x%02X", usage_page, keycode, implicit_modifiers); switch (usage_page) { - case USAGE_KEYPAD: + case HID_USAGE_KEY: err = zmk_hid_keypad_release(keycode); if (err) { LOG_ERR("Unable to release keycode"); return err; } break; - case USAGE_CONSUMER: + case HID_USAGE_CONSUMER: err = zmk_hid_consumer_release(keycode); if (err) { LOG_ERR("Unable to release keycode"); From 711658206f86fc6af35be7d104243dfcf857f194 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 3 Nov 2020 16:55:34 +0000 Subject: [PATCH 324/353] refactor(hid): Replace Zephyr usages with ZMK usages in HID reports Replace `USAGE_GEN_DESKTOP` with `HID_USAGE_GD`. Replace `USAGE_GEN_DESKTOP_KEYBOARD` with `HID_USAGE_GD_KEYBOARD`. Replace `USAGE_GEN_DESKTOP_KEYPAD` with `HID_USAGE_KEY`. Replace `0x0C` with `HID_USAGE_CONSUMER`. Closes #217. --- app/include/zmk/hid.h | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index 2426c2db..61b2d649 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -10,6 +10,8 @@ #include #include +#include +#include #define COLLECTION_REPORT 0x03 @@ -20,19 +22,19 @@ static const u8_t zmk_hid_report_desc[] = { /* USAGE_PAGE (Generic Desktop) */ HID_GI_USAGE_PAGE, - USAGE_GEN_DESKTOP, + HID_USAGE_GD, /* USAGE (Keyboard) */ HID_LI_USAGE, - USAGE_GEN_DESKTOP_KEYBOARD, + HID_USAGE_GD_KEYBOARD, /* COLLECTION (Application) */ HID_MI_COLLECTION, COLLECTION_APPLICATION, /* REPORT ID (1) */ HID_GI_REPORT_ID, 0x01, - /* USAGE_PAGE (Keypad) */ + /* USAGE_PAGE (Keyboard/Keypad) */ HID_GI_USAGE_PAGE, - USAGE_GEN_DESKTOP_KEYPAD, + HID_USAGE_KEY, /* USAGE_MINIMUM (Keyboard LeftControl) */ HID_LI_USAGE_MIN(1), 0xE0, @@ -56,9 +58,9 @@ static const u8_t zmk_hid_report_desc[] = { HID_MI_INPUT, 0x02, - /* USAGE_PAGE (Keypad) */ + /* USAGE_PAGE (Keyboard/Keypad) */ HID_GI_USAGE_PAGE, - USAGE_GEN_DESKTOP_KEYPAD, + HID_USAGE_KEY, /* REPORT_SIZE (8) */ HID_GI_REPORT_SIZE, 0x08, @@ -69,9 +71,9 @@ static const u8_t zmk_hid_report_desc[] = { HID_MI_INPUT, 0x03, - /* USAGE_PAGE (Keypad) */ + /* USAGE_PAGE (Keyboard/Keypad) */ HID_GI_USAGE_PAGE, - USAGE_GEN_DESKTOP_KEYPAD, + HID_USAGE_KEY, /* LOGICAL_MINIMUM (0) */ HID_GI_LOGICAL_MIN(1), 0x00, @@ -98,7 +100,7 @@ static const u8_t zmk_hid_report_desc[] = { HID_MI_COLLECTION_END, /* USAGE_PAGE (Consumer) */ HID_GI_USAGE_PAGE, - 0x0C, + HID_USAGE_CONSUMER, /* USAGE (Consumer Control) */ HID_LI_USAGE, 0x01, @@ -110,7 +112,7 @@ static const u8_t zmk_hid_report_desc[] = { 0x02, /* USAGE_PAGE (Consumer) */ HID_GI_USAGE_PAGE, - 0x0C, + HID_USAGE_CONSUMER, /* LOGICAL_MINIMUM (0) */ HID_GI_LOGICAL_MIN(1), 0x00, From 7e795bf4f92c4ece01dd20703a1ca5ad7d217c6b Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 27 Oct 2020 17:38:49 +0000 Subject: [PATCH 325/353] feat(hid): Enhance consumer report to support higher codes Switch from single byte to double byte usages. Allow the entire 0x0C page for future compatibility. Closes #234. Co-requisite of #21. --- app/include/zmk/hid.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index 61b2d649..e53a8e4c 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -116,18 +116,20 @@ static const u8_t zmk_hid_report_desc[] = { /* LOGICAL_MINIMUM (0) */ HID_GI_LOGICAL_MIN(1), 0x00, - /* LOGICAL_MAXIMUM (1) */ - HID_GI_LOGICAL_MAX(1), + /* LOGICAL_MAXIMUM (0xFFFF) */ + HID_GI_LOGICAL_MAX(2), + 0xFF, 0xFF, HID_LI_USAGE_MIN(1), 0x00, - /* USAGE_MAXIMUM (Keyboard Application) */ - HID_LI_USAGE_MAX(1), + /* USAGE_MAXIMUM (0xFFFF) */ + HID_LI_USAGE_MAX(2), + 0xFF, 0xFF, /* INPUT (Data,Ary,Abs) */ - /* REPORT_SIZE (8) */ + /* REPORT_SIZE (16) */ HID_GI_REPORT_SIZE, - 0x08, + 0x10, /* REPORT_COUNT (ZMK_HID_CONSUMER_NKRO_SIZE) */ HID_GI_REPORT_COUNT, ZMK_HID_CONSUMER_NKRO_SIZE, @@ -156,7 +158,7 @@ struct zmk_hid_keypad_report { } __packed; struct zmk_hid_consumer_report_body { - u8_t keys[ZMK_HID_CONSUMER_NKRO_SIZE]; + u16_t keys[ZMK_HID_CONSUMER_NKRO_SIZE]; } __packed; struct zmk_hid_consumer_report { From a65295c2a7b029f05155e30a53f365644c0ecc3c Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 3 Nov 2020 16:57:13 +0000 Subject: [PATCH 326/353] feat(keys): Standardize keys Deprecate superseded names with comments. Add standardized key names. Closes #21. Closes #158. Closes #161. Closes #246. --- app/include/dt-bindings/zmk/keys.h | 1493 +++++++++++++++++++++++++--- 1 file changed, 1370 insertions(+), 123 deletions(-) diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index 815f86b6..cce3c244 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -5,138 +5,1385 @@ */ #pragma once +#include #include -#define A 0x04 -#define B 0x05 -#define C 0x06 -#define D 0x07 -#define E 0x08 -#define F 0x09 -#define G 0x0A -#define H 0x0B -#define I 0x0C -#define J 0x0D -#define K 0x0E -#define L 0x0F -#define M 0x10 -#define N 0x11 -#define O 0x12 -#define P 0x13 -#define Q 0x14 -#define R 0x15 -#define S 0x16 -#define T 0x17 -#define U 0x18 -#define V 0x19 -#define W 0x1A -#define X 0x1B -#define Y 0x1C -#define Z 0x1D -#define NUM_1 0x1E -#define NUM_2 0x1F -#define NUM_3 0x20 -#define NUM_4 0x21 -#define NUM_5 0x22 -#define NUM_6 0x23 -#define NUM_7 0x24 -#define NUM_8 0x25 -#define NUM_9 0x26 -#define NUM_0 0x27 -#define RET 0x28 -#define ESC 0x29 -#define BKSP 0x2A -#define TAB 0x2B -#define SPC 0x2C -#define MINUS 0x2D -#define EQL 0x2E -#define LBKT 0x2F -#define RBKT 0x30 -#define BSLH 0x31 -#define TILD 0x32 -#define SCLN 0x33 -#define QUOT 0x34 -#define GRAV 0x35 -#define CMMA 0x36 -#define DOT 0x37 -#define FSLH 0x38 -#define CLCK 0x39 -#define F1 0x3A -#define F2 0x3B -#define F3 0x3C -#define F4 0x3D -#define F5 0x3E -#define F6 0x3F -#define F7 0x40 -#define F8 0x41 -#define F9 0x42 -#define F10 0x43 -#define F11 0x44 -#define F12 0x45 -#define PRSC 0x46 -#define SCLK 0x47 -#define PAUS 0x48 -#define INS 0x49 -#define HOME 0x4A -#define PGUP 0x4B -#define DEL 0x4C -#define END 0x4D -#define PGDN 0x4E -#define RARW 0x4F -#define LARW 0x50 -#define DARW 0x51 -#define UARW 0x52 +/* System Power Down */ +#define SYSTEM_POWER (HID_USAGE_GD_SYSTEM_POWER_DOWN) +#define SYS_PWR (SYSTEM_POWER) -#define KDIV 0x54 -#define KMLT 0x55 -#define KMIN 0x56 -#define KPLS 0x57 +/* System Sleep */ +#define SYSTEM_SLEEP (HID_USAGE_GD_SYSTEM_SLEEP) +#define SYS_SLEEP (SYSTEM_SLEEP) -#define GUI 0x65 +/* System Wake Up */ +#define SYSTEM_WAKE_UP (HID_USAGE_GD_SYSTEM_WAKE_UP) +#define SYS_WAKE (SYSTEM_WAKE_UP) -#define UNDO 0x7A -#define CUT 0x7B -#define COPY 0x7C -#define PSTE 0x7D +/* Keyboard a and A */ +#define A (HID_USAGE_KEY_KEYBOARD_A) -#define CURU 0xB4 +/* Keyboard b and B */ +#define B (HID_USAGE_KEY_KEYBOARD_B) -#define LPRN 0xB6 -#define RPRN 0xB7 -#define LCUR 0xB8 -#define RCUR 0xB9 +/* Keyboard c and C */ +#define C (HID_USAGE_KEY_KEYBOARD_C) -#define CRRT 0xC3 -#define PRCT 0xC4 -#define LABT 0xC5 -#define RABT 0xC6 -#define AMPS 0xC7 -#define PIPE 0xC9 -#define COLN 0xCB -#define HASH 0xCC -#define KSPC 0xCD -#define ATSN 0xCE -#define BANG 0xCF +/* Keyboard d and D */ +#define D (HID_USAGE_KEY_KEYBOARD_D) -#define LCTL 0xE0 -#define LSFT 0xE1 -#define LALT 0xE2 -#define LGUI 0xE3 -#define RCTL 0xE4 -#define RSFT 0xE5 -#define RALT 0xE6 -#define RGUI 0xE7 +/* Keyboard e and E */ +#define E (HID_USAGE_KEY_KEYBOARD_E) -#define VOLU 0x80 -#define VOLD 0x81 +/* Keyboard f and F */ +#define F (HID_USAGE_KEY_KEYBOARD_F) -/* The following are select consumer page usages */ +/* Keyboard g and G */ +#define G (HID_USAGE_KEY_KEYBOARD_G) -#define M_NEXT 0xB5 -#define M_PREV 0xB6 -#define M_STOP 0xB7 -#define M_EJCT 0xB8 -#define M_PLAY 0xCD -#define M_MUTE 0xE2 -#define M_VOLU 0xE9 -#define M_VOLD 0xEA +/* Keyboard h and H */ +#define H (HID_USAGE_KEY_KEYBOARD_H) + +/* Keyboard i and I */ +#define I (HID_USAGE_KEY_KEYBOARD_I) + +/* Keyboard j and J */ +#define J (HID_USAGE_KEY_KEYBOARD_J) + +/* Keyboard k and K */ +#define K (HID_USAGE_KEY_KEYBOARD_K) + +/* Keyboard l and L */ +#define L (HID_USAGE_KEY_KEYBOARD_L) + +/* Keyboard m and M */ +#define M (HID_USAGE_KEY_KEYBOARD_M) + +/* Keyboard n and N */ +#define N (HID_USAGE_KEY_KEYBOARD_N) + +/* Keyboard o and O */ +#define O (HID_USAGE_KEY_KEYBOARD_O) + +/* Keyboard p and P */ +#define P (HID_USAGE_KEY_KEYBOARD_P) + +/* Keyboard q and Q */ +#define Q (HID_USAGE_KEY_KEYBOARD_Q) + +/* Keyboard r and R */ +#define R (HID_USAGE_KEY_KEYBOARD_R) + +/* Keyboard s and S */ +#define S (HID_USAGE_KEY_KEYBOARD_S) + +/* Keyboard t and T */ +#define T (HID_USAGE_KEY_KEYBOARD_T) + +/* Keyboard u and U */ +#define U (HID_USAGE_KEY_KEYBOARD_U) + +/* Keyboard v and V */ +#define V (HID_USAGE_KEY_KEYBOARD_V) + +/* Keyboard w and W */ +#define W (HID_USAGE_KEY_KEYBOARD_W) + +/* Keyboard x and X */ +#define X (HID_USAGE_KEY_KEYBOARD_X) + +/* Keyboard y and Y */ +#define Y (HID_USAGE_KEY_KEYBOARD_Y) + +/* Keyboard z and Z */ +#define Z (HID_USAGE_KEY_KEYBOARD_Z) + +/* Keyboard 1 and ! (Exclamation) */ +#define NUMBER_1 (HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION) +#define N1 (NUMBER_1) +#define NUM_1 (NUMBER_1) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard ! (Exclamation) */ +#define EXCLAMATION (LS(HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION)) +#define EXCL (EXCLAMATION) +#define BANG (EXCLAMATION) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard 2 and @ (At sign) */ +#define NUMBER_2 (HID_USAGE_KEY_KEYBOARD_2_AND_AT) +#define N2 (NUMBER_2) +#define NUM_2 (NUMBER_2) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard @ (At sign) */ +#define AT_SIGN (LS(HID_USAGE_KEY_KEYBOARD_2_AND_AT)) +#define AT (AT_SIGN) +#define ATSN (AT_SIGN) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard 3 and # (Hash/Number) */ +#define NUMBER_3 (HID_USAGE_KEY_KEYBOARD_3_AND_HASH) +#define N3 (NUMBER_3) +#define NUM_3 (NUMBER_3) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard # (Hash/Number) */ +#define HASH (LS(HID_USAGE_KEY_KEYBOARD_3_AND_HASH)) +#define POUND (HASH) + +/* Keyboard 4 and $ (Dollar) */ +#define NUMBER_4 (HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR) +#define N4 (NUMBER_4) +#define NUM_4 (NUMBER_4) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard $ (Dollar) */ +#define DOLLAR (LS(HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR)) +#define DLLR (DOLLAR) + +/* Keyboard 5 and % (Percent) */ +#define NUMBER_5 (HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT) +#define N5 (NUMBER_5) +#define NUM_5 (NUMBER_5) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard % (Percent) */ +#define PERCENT (LS(HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT)) +#define PRCNT (PERCENT) +#define PRCT (PERCENT) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard 6 and ^ (Caret) */ +#define NUMBER_6 (HID_USAGE_KEY_KEYBOARD_6_AND_CARET) +#define N6 (NUMBER_6) +#define NUM_6 (NUMBER_6) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard ^ (Caret) */ +#define CARET (LS(HID_USAGE_KEY_KEYBOARD_6_AND_CARET)) +#define CRRT (CARET) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard 7 and & (Ampersand) */ +#define NUMBER_7 (HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND) +#define N7 (NUMBER_7) +#define NUM_7 (NUMBER_7) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard & (Ampersand) */ +#define AMPERSAND (LS(HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND)) +#define AMPS (AMPERSAND) + +/* Keyboard 8 and * (Asterisk) */ +#define NUMBER_8 (HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK) +#define N8 (NUMBER_8) +#define NUM_8 (NUMBER_8) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard * (Asterisk) */ +#define ASTERISK (LS(HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK)) +#define ASTRK (ASTERISK) +#define STAR (ASTERISK) + +/* Keyboard 9 and ( (Left Parenthesis) */ +#define NUMBER_9 (HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS) +#define N9 (NUMBER_9) +#define NUM_9 (NUMBER_9) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard ( (Left Parenthesis) */ +#define LEFT_PARENTHESIS (LS(HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS)) +#define LPAR (LEFT_PARENTHESIS) +#define LPRN (LEFT_PARENTHESIS) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard 0 and ) (Right Parenthesis) */ +#define NUMBER_0 (HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS) +#define N0 (NUMBER_0) +#define NUM_0 (NUMBER_0) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard ) (Right Parenthesis) */ +#define RIGHT_PARENTHESIS (LS(HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS)) +#define RPAR (RIGHT_PARENTHESIS) +#define RPRN (RIGHT_PARENTHESIS) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Return (Enter) */ +#define RETURN (HID_USAGE_KEY_KEYBOARD_RETURN_ENTER) +#define ENTER (RETURN) +#define RET (RETURN) + +/* Keyboard Escape */ +#define ESCAPE (HID_USAGE_KEY_KEYBOARD_ESCAPE) +#define ESC (ESCAPE) + +/* Keyboard Backspace */ +#define BACKSPACE (HID_USAGE_KEY_KEYBOARD_DELETE_BACKSPACE) +#define BSPC (BACKSPACE) +#define BKSP (BACKSPACE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Tab */ +#define TAB (HID_USAGE_KEY_KEYBOARD_TAB) + +/* Keyboard Space */ +#define SPACE (HID_USAGE_KEY_KEYBOARD_SPACEBAR) +#define SPC (SPACE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard - and _ (Minus and Underscore) */ +#define MINUS (HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE) + +/* Keyboard _ (Underscore) */ +#define UNDERSCORE (LS(HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE)) +#define UNDER (UNDERSCORE) + +/* Keyboard = and + (Equal and Plus) */ +#define EQUAL (HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS) +#define EQL (EQUAL) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard + (Plus) */ +#define PLUS (LS(HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS)) + +/* Keyboard [ and { (Left Bracket and Left Brace) */ +#define LEFT_BRACKET (HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE) +#define LBKT (LEFT_BRACKET) + +/* Keyboard { (Left Brace) */ +#define LEFT_BRACE (LS(HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE)) +#define LBRC (LEFT_BRACE) +#define LCUR (LEFT_BRACE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard ] and } (Right Bracket and Right Brace) */ +#define RIGHT_BRACKET (HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE) +#define RBKT (RIGHT_BRACKET) + +/* Keyboard } (Right Brace) */ +#define RIGHT_BRACE (LS(HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE)) +#define RBRC (RIGHT_BRACE) +#define RCUR (RIGHT_BRACE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard \ and | (Backslash and Pipe) */ +#define BACKSLASH (HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE) +#define BSLH (BACKSLASH) + +/* Keyboard | (Pipe) */ +#define PIPE (LS(HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE)) + +/* Keyboard Non-US # and ~ (Non-US Hash/Number and Tilde) */ +#define NON_US_HASH (HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE) + +/* Keyboard ~ (Tilde) */ +#define TILDE2 (LS(HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE)) + +/* Keyboard ; and : (Semicolon and Colon) */ +#define SEMICOLON (HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON) +#define SEMI (SEMICOLON) +#define SCLN (SEMICOLON) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard : (Colon) */ +#define COLON (LS(HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON)) +#define COLN (COLON) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard ' and " (Apostrophe and Quote) */ +#define SINGLE_QUOTE (HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE) +#define SQT (SINGLE_QUOTE) +#define APOSTROPHE (SINGLE_QUOTE) +#define APOS (SINGLE_QUOTE) +#define QUOT (SINGLE_QUOTE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard " (Quote) */ +#define DOUBLE_QUOTES (LS(HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE)) +#define DQT (DOUBLE_QUOTES) + +/* Keyboard ` and ~ (Grave Accent and Tilde) */ +#define GRAVE (HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE) +#define GRAV (GRAVE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard ~ (Tilde) */ +#define TILDE (LS(HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE)) +#define TILD (TILDE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard , and < (Comma and Less Than) */ +#define COMMA (HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN) +#define CMMA (COMMA) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard < (Less Than) */ +#define LESS_THAN (LS(HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN)) +#define LT (LESS_THAN) +#define LABT (LESS_THAN) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard . and > (Period and Greater Than) */ +#define PERIOD (HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN) +#define DOT (PERIOD) + +/* Keyboard > (Greater Than) */ +#define GREATER_THAN (LS(HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN)) +#define GT (GREATER_THAN) +#define RABT (GREATER_THAN) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard / and ? (Forward Slash and Question) */ +#define SLASH (HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK) +#define FSLH (SLASH) + +/* Keyboard ? (Question) */ +#define QUESTION (LS(HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK)) +#define QMARK (QUESTION) + +/* Keyboard Caps Lock */ +#define CAPSLOCK (HID_USAGE_KEY_KEYBOARD_CAPS_LOCK) +#define CAPS (CAPSLOCK) +#define CLCK (CAPSLOCK) + +/* Keyboard F1 */ +#define F1 (HID_USAGE_KEY_KEYBOARD_F1) + +/* Keyboard F2 */ +#define F2 (HID_USAGE_KEY_KEYBOARD_F2) + +/* Keyboard F3 */ +#define F3 (HID_USAGE_KEY_KEYBOARD_F3) + +/* Keyboard F4 */ +#define F4 (HID_USAGE_KEY_KEYBOARD_F4) + +/* Keyboard F5 */ +#define F5 (HID_USAGE_KEY_KEYBOARD_F5) + +/* Keyboard F6 */ +#define F6 (HID_USAGE_KEY_KEYBOARD_F6) + +/* Keyboard F7 */ +#define F7 (HID_USAGE_KEY_KEYBOARD_F7) + +/* Keyboard F8 */ +#define F8 (HID_USAGE_KEY_KEYBOARD_F8) + +/* Keyboard F9 */ +#define F9 (HID_USAGE_KEY_KEYBOARD_F9) + +/* Keyboard F10 */ +#define F10 (HID_USAGE_KEY_KEYBOARD_F10) + +/* Keyboard F11 */ +#define F11 (HID_USAGE_KEY_KEYBOARD_F11) + +/* Keyboard F12 */ +#define F12 (HID_USAGE_KEY_KEYBOARD_F12) + +/* Keyboard Print Screen */ +#define PRINTSCREEN (HID_USAGE_KEY_KEYBOARD_PRINTSCREEN) +#define PSCRN (PRINTSCREEN) +#define PRSC (PRINTSCREEN) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Scroll Lock */ +#define SCROLLLOCK (HID_USAGE_KEY_KEYBOARD_SCROLL_LOCK) +#define SLCK (SCROLLLOCK) +#define SCLK (SCROLLLOCK) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Pause/Break */ +#define PAUSE_BREAK (HID_USAGE_KEY_KEYBOARD_PAUSE) +#define PAUS (PAUSE_BREAK) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Insert */ +#define INSERT (HID_USAGE_KEY_KEYBOARD_INSERT) +#define INS (INSERT) + +/* Keyboard Home */ +#define HOME (HID_USAGE_KEY_KEYBOARD_HOME) + +/* Keyboard Page Up */ +#define PAGE_UP (HID_USAGE_KEY_KEYBOARD_PAGEUP) +#define PG_UP (PAGE_UP) +#define PGUP (PAGE_UP) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Delete */ +#define DELETE (HID_USAGE_KEY_KEYBOARD_DELETE_FORWARD) +#define DEL (DELETE) + +/* Keyboard End */ +#define END (HID_USAGE_KEY_KEYBOARD_END) + +/* Keyboard Page Down */ +#define PAGE_DOWN (HID_USAGE_KEY_KEYBOARD_PAGEDOWN) +#define PG_DN (PAGE_DOWN) +#define PGDN (PAGE_DOWN) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Right Arrow */ +#define RIGHT_ARROW (HID_USAGE_KEY_KEYBOARD_RIGHTARROW) +#define RIGHT (RIGHT_ARROW) +#define RARW (RIGHT_ARROW) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Left Arrow */ +#define LEFT_ARROW (HID_USAGE_KEY_KEYBOARD_LEFTARROW) +#define LEFT (LEFT_ARROW) +#define LARW (LEFT_ARROW) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Down Arrow */ +#define DOWN_ARROW (HID_USAGE_KEY_KEYBOARD_DOWNARROW) +#define DOWN (DOWN_ARROW) +#define DARW (DOWN_ARROW) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Up Arrow */ +#define UP_ARROW (HID_USAGE_KEY_KEYBOARD_UPARROW) +#define UP (UP_ARROW) +#define UARW (UP_ARROW) // WARNING: DEPRECATED (DO NOT USE) + +/* Keypad Numlock and Clear */ +#define KP_NUMLOCK (HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR) +#define KP_NUM (KP_NUMLOCK) +#define KP_NLCK (KP_NUMLOCK) + +/* Keypad Clear */ +#define CLEAR2 (LS(HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR)) + +/* Keypad / (Slash/Divide) */ +#define KP_DIVIDE (HID_USAGE_KEY_KEYPAD_SLASH) +#define KP_SLASH (KP_DIVIDE) +#define KDIV (KP_DIVIDE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keypad * (Multiply) */ +#define KP_MULTIPLY (HID_USAGE_KEY_KEYPAD_ASTERISK) +#define KP_ASTERISK (KP_MULTIPLY) +#define KMLT (KP_MULTIPLY) // WARNING: DEPRECATED (DO NOT USE) + +/* Keypad - (Minus) */ +#define KP_MINUS (HID_USAGE_KEY_KEYPAD_MINUS) +#define KP_SUBTRACT (KP_MINUS) +#define KMIN (KP_MINUS) // WARNING: DEPRECATED (DO NOT USE) + +/* Keypad + (Plus) */ +#define KP_PLUS (HID_USAGE_KEY_KEYPAD_PLUS) +#define KPLS (KP_PLUS) // WARNING: DEPRECATED (DO NOT USE) + +/* Keypad Enter */ +#define KP_ENTER (HID_USAGE_KEY_KEYPAD_ENTER) + +/* Keypad 1 */ +#define KP_NUMBER_1 (HID_USAGE_KEY_KEYPAD_1_AND_END) +#define KP_N1 (KP_NUMBER_1) + +/* Keypad 2 */ +#define KP_NUMBER_2 (HID_USAGE_KEY_KEYPAD_2_AND_DOWN_ARROW) +#define KP_N2 (KP_NUMBER_2) + +/* Keypad 3 */ +#define KP_NUMBER_3 (HID_USAGE_KEY_KEYPAD_3_AND_PAGEDN) +#define KP_N3 (KP_NUMBER_3) + +/* Keypad 4 */ +#define KP_NUMBER_4 (HID_USAGE_KEY_KEYPAD_4_AND_LEFT_ARROW) +#define KP_N4 (KP_NUMBER_4) + +/* Keypad 5 */ +#define KP_NUMBER_5 (HID_USAGE_KEY_KEYPAD_5) +#define KP_N5 (KP_NUMBER_5) + +/* Keypad 6 */ +#define KP_NUMBER_6 (HID_USAGE_KEY_KEYPAD_6_AND_RIGHT_ARROW) +#define KP_N6 (KP_NUMBER_6) + +/* Keypad 7 */ +#define KP_NUMBER_7 (HID_USAGE_KEY_KEYPAD_7_AND_HOME) +#define KP_N7 (KP_NUMBER_7) + +/* Keypad 8 */ +#define KP_NUMBER_8 (HID_USAGE_KEY_KEYPAD_8_AND_UP_ARROW) +#define KP_N8 (KP_NUMBER_8) + +/* Keypad 9 */ +#define KP_NUMBER_9 (HID_USAGE_KEY_KEYPAD_9_AND_PAGEUP) +#define KP_N9 (KP_NUMBER_9) + +/* Keypad 0 */ +#define KP_NUMBER_0 (HID_USAGE_KEY_KEYPAD_0_AND_INSERT) +#define KP_N0 (KP_NUMBER_0) + +/* Keypad . (Dot) */ +#define KP_DOT (HID_USAGE_KEY_KEYPAD_PERIOD_AND_DELETE) + +/* Keyboard Non-US \ and | (Non-us Backslash and Pipe) */ +#define NON_US_BACKSLASH (HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE) +#define NON_US_BSLH (NON_US_BACKSLASH) + +/* Keyboard Pipe */ +#define PIPE2 (LS(HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE)) + +/* Keyboard GUI (Windows / Command / Meta) */ +#define GUI (HID_USAGE_KEY_KEYBOARD_APPLICATION) +#define WIN (GUI) +#define COMMAND (GUI) +#define CMD (GUI) +#define META (GUI) + +/* Keyboard Power */ +#define K_POWER (HID_USAGE_KEY_KEYBOARD_POWER) +#define K_PWR (K_POWER) + +/* Keypad = (Equal) */ +#define KP_EQUAL (HID_USAGE_KEY_KEYPAD_EQUAL) + +/* Keyboard F13 */ +#define F13 (HID_USAGE_KEY_KEYBOARD_F13) + +/* Keyboard F14 */ +#define F14 (HID_USAGE_KEY_KEYBOARD_F14) + +/* Keyboard F15 */ +#define F15 (HID_USAGE_KEY_KEYBOARD_F15) + +/* Keyboard F16 */ +#define F16 (HID_USAGE_KEY_KEYBOARD_F16) + +/* Keyboard F17 */ +#define F17 (HID_USAGE_KEY_KEYBOARD_F17) + +/* Keyboard F18 */ +#define F18 (HID_USAGE_KEY_KEYBOARD_F18) + +/* Keyboard F19 */ +#define F19 (HID_USAGE_KEY_KEYBOARD_F19) + +/* Keyboard F20 */ +#define F20 (HID_USAGE_KEY_KEYBOARD_F20) + +/* Keyboard F21 */ +#define F21 (HID_USAGE_KEY_KEYBOARD_F21) + +/* Keyboard F22 */ +#define F22 (HID_USAGE_KEY_KEYBOARD_F22) + +/* Keyboard F23 */ +#define F23 (HID_USAGE_KEY_KEYBOARD_F23) + +/* Keyboard F24 */ +#define F24 (HID_USAGE_KEY_KEYBOARD_F24) + +/* Keyboard Execute */ +#define K_EXECUTE (HID_USAGE_KEY_KEYBOARD_EXECUTE) +#define K_EXEC (K_EXECUTE) + +/* Keyboard Help */ +#define K_HELP (HID_USAGE_KEY_KEYBOARD_HELP) + +/* Keyboard Menu */ +#define K_MENU (HID_USAGE_KEY_KEYBOARD_MENU) + +/* Keyboard Select */ +#define K_SELECT (HID_USAGE_KEY_KEYBOARD_SELECT) + +/* Keyboard Stop */ +#define K_STOP (HID_USAGE_KEY_KEYBOARD_STOP) + +/* Keyboard Again */ +#define K_AGAIN (HID_USAGE_KEY_KEYBOARD_AGAIN) +#define K_REDO (K_AGAIN) + +/* Keyboard Undo */ +#define K_UNDO (HID_USAGE_KEY_KEYBOARD_UNDO) +#define UNDO (K_UNDO) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Cut */ +#define K_CUT (HID_USAGE_KEY_KEYBOARD_CUT) +#define CUT (K_CUT) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Copy */ +#define K_COPY (HID_USAGE_KEY_KEYBOARD_COPY) +#define COPY (K_COPY) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Paste */ +#define K_PASTE (HID_USAGE_KEY_KEYBOARD_PASTE) +#define PSTE (K_PASTE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Find */ +#define K_FIND (HID_USAGE_KEY_KEYBOARD_FIND) + +/* Keyboard Mute */ +#define K_MUTE (HID_USAGE_KEY_KEYBOARD_MUTE) + +/* Keyboard Volume Up */ +#define K_VOLUME_UP (HID_USAGE_KEY_KEYBOARD_VOLUME_UP) +#define K_VOL_UP (K_VOLUME_UP) +#define VOLU (K_VOLUME_UP) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Volume Down */ +#define K_VOLUME_DOWN (HID_USAGE_KEY_KEYBOARD_VOLUME_DOWN) +#define K_VOL_DN (K_VOLUME_DOWN) +#define VOLD (K_VOLUME_DOWN) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Locking Caps Lock */ +#define LOCKING_CAPS (HID_USAGE_KEY_KEYBOARD_LOCKING_CAPS_LOCK) +#define LCAPS (LOCKING_CAPS) + +/* Keyboard Locking Num Lock */ +#define LOCKING_NUM (HID_USAGE_KEY_KEYBOARD_LOCKING_NUM_LOCK) +#define LNLCK (LOCKING_NUM) + +/* Keyboard Locking Scroll Lock */ +#define LOCKING_SCROLL (HID_USAGE_KEY_KEYBOARD_LOCKING_SCROLL_LOCK) +#define LSLCK (LOCKING_SCROLL) + +/* Keypad , (Comma) */ +#define KP_COMMA (HID_USAGE_KEY_KEYPAD_COMMA) + +/* Keypad = (Equal) AS/400 */ +#define KP_EQUAL_AS400 (HID_USAGE_KEY_KEYPAD_EQUAL_SIGN) + +/* Keyboard International 1 */ +#define INTERNATIONAL_1 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL1) +#define INT1 (INTERNATIONAL_1) +#define INT_RO (INTERNATIONAL_1) + +/* Keyboard International 2 */ +#define INTERNATIONAL_2 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL2) +#define INT2 (INTERNATIONAL_2) +#define INT_KATAKANAHIRAGANA (INTERNATIONAL_2) +#define INT_KANA (INTERNATIONAL_2) + +/* Keyboard International 3 */ +#define INTERNATIONAL_3 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL3) +#define INT3 (INTERNATIONAL_3) +#define INT_YEN (INTERNATIONAL_3) + +/* Keyboard International 4 */ +#define INTERNATIONAL_4 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL4) +#define INT4 (INTERNATIONAL_4) +#define INT_HENKAN (INTERNATIONAL_4) + +/* Keyboard International 5 */ +#define INTERNATIONAL_5 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL5) +#define INT5 (INTERNATIONAL_5) +#define INT_MUHENKAN (INTERNATIONAL_5) + +/* Keyboard International 6 */ +#define INTERNATIONAL_6 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL6) +#define INT6 (INTERNATIONAL_6) +#define INT_KPJPCOMMA (INTERNATIONAL_6) + +/* Keyboard International 7 */ +#define INTERNATIONAL_7 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL7) +#define INT7 (INTERNATIONAL_7) + +/* Keyboard International 8 */ +#define INTERNATIONAL_8 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL8) +#define INT8 (INTERNATIONAL_8) + +/* Keyboard International 9 */ +#define INTERNATIONAL_9 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL9) +#define INT9 (INTERNATIONAL_9) + +/* Keyboard Language 1 */ +#define LANGUAGE_1 (HID_USAGE_KEY_KEYBOARD_LANG1) +#define LANG1 (LANGUAGE_1) +#define LANG_HANGEUL (LANGUAGE_1) + +/* Keyboard Language 2 */ +#define LANGUAGE_2 (HID_USAGE_KEY_KEYBOARD_LANG2) +#define LANG2 (LANGUAGE_2) +#define LANG_HANJA (LANGUAGE_2) + +/* Keyboard Language 3 */ +#define LANGUAGE_3 (HID_USAGE_KEY_KEYBOARD_LANG3) +#define LANG3 (LANGUAGE_3) +#define LANG_KATAKANA (LANGUAGE_3) + +/* Keyboard Language 4 */ +#define LANGUAGE_4 (HID_USAGE_KEY_KEYBOARD_LANG4) +#define LANG4 (LANGUAGE_4) +#define LANG_HIRAGANA (LANGUAGE_4) + +/* Keyboard Language 5 */ +#define LANGUAGE_5 (HID_USAGE_KEY_KEYBOARD_LANG5) +#define LANG5 (LANGUAGE_5) +#define LANG_ZENKAKUHANKAKU (LANGUAGE_5) + +/* Keyboard Language 6 */ +#define LANGUAGE_6 (HID_USAGE_KEY_KEYBOARD_LANG6) +#define LANG6 (LANGUAGE_6) + +/* Keyboard Language 7 */ +#define LANGUAGE_7 (HID_USAGE_KEY_KEYBOARD_LANG7) +#define LANG7 (LANGUAGE_7) + +/* Keyboard Language 8 */ +#define LANGUAGE_8 (HID_USAGE_KEY_KEYBOARD_LANG8) +#define LANG8 (LANGUAGE_8) + +/* Keyboard Language 9 */ +#define LANGUAGE_9 (HID_USAGE_KEY_KEYBOARD_LANG9) +#define LANG9 (LANGUAGE_9) + +/* Keyboard Alternate Erase */ +#define ALT_ERASE (HID_USAGE_KEY_KEYBOARD_ALTERNATE_ERASE) + +/* Keyboard SysReq/Attention */ +#define SYSREQ (HID_USAGE_KEY_KEYBOARD_SYSREQ_ATTENTION) +#define ATTENTION (SYSREQ) + +/* Keyboard Cancel */ +#define K_CANCEL (HID_USAGE_KEY_KEYBOARD_CANCEL) + +/* Keyboard Clear */ +#define CLEAR (HID_USAGE_KEY_KEYBOARD_CLEAR) + +/* Keyboard Prior */ +#define PRIOR (HID_USAGE_KEY_KEYBOARD_PRIOR) + +/* Keyboard Return */ +#define RETURN2 (HID_USAGE_KEY_KEYBOARD_RETURN) +#define RET2 (RETURN2) + +/* Keyboard Separator */ +#define SEPARATOR (HID_USAGE_KEY_KEYBOARD_SEPARATOR) + +/* Keyboard Out */ +#define OUT (HID_USAGE_KEY_KEYBOARD_OUT) + +/* Keyboard Oper */ +#define OPER (HID_USAGE_KEY_KEYBOARD_OPER) + +/* Keyboard Clear/Again */ +#define CLEAR_AGAIN (HID_USAGE_KEY_KEYBOARD_CLEAR_AGAIN) + +/* Keyboard CrSel/Props */ +#define CRSEL (HID_USAGE_KEY_KEYBOARD_CRSEL_PROPS) + +/* Keyboard ExSel */ +#define EXSEL (HID_USAGE_KEY_KEYBOARD_EXSEL) + +/* Keyboard Currency Unit */ +#define CURU (HID_USAGE_KEY_CURRENCY_UNIT) // WARNING: DEPRECATED (DO NOT USE) + +/* Keypad ( (Left Parenthesis) */ +#define KP_LEFT_PARENTHESIS (HID_USAGE_KEY_KEYPAD_LEFT_PARENTHESIS) +#define KP_LPAR (KP_LEFT_PARENTHESIS) + +/* Keypad ) (Right Parenthesis) */ +#define KP_RIGHT_PARENTHESIS (HID_USAGE_KEY_KEYPAD_RIGHT_PARENTHESIS) +#define KP_RPAR (KP_RIGHT_PARENTHESIS) + +/* Keypad Space */ +#define KSPC (HID_USAGE_KEY_KEYPAD_SPACE) // WARNING: DEPRECATED (DO NOT USE) + +/* Keypad Clear */ +#define KP_CLEAR (HID_USAGE_KEY_KEYPAD_CLEAR) + +/* Keyboard Left Control */ +#define LEFT_CONTROL (HID_USAGE_KEY_KEYBOARD_LEFTCONTROL) +#define LCTRL (LEFT_CONTROL) +#define LCTL (LEFT_CONTROL) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Left Shift */ +#define LEFT_SHIFT (HID_USAGE_KEY_KEYBOARD_LEFTSHIFT) +#define LSHFT (LEFT_SHIFT) +#define LSFT (LEFT_SHIFT) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Left Alt */ +#define LEFT_ALT (HID_USAGE_KEY_KEYBOARD_LEFTALT) +#define LALT (LEFT_ALT) + +/* Keyboard Left GUI (Windows / Command / Meta) */ +#define LEFT_GUI (HID_USAGE_KEY_KEYBOARD_LEFT_GUI) +#define LGUI (LEFT_GUI) +#define LEFT_WIN (LEFT_GUI) +#define LWIN (LEFT_GUI) +#define LEFT_COMMAND (LEFT_GUI) +#define LCMD (LEFT_GUI) +#define LEFT_META (LEFT_GUI) +#define LMETA (LEFT_GUI) + +/* Keyboard Right Control */ +#define RIGHT_CONTROL (HID_USAGE_KEY_KEYBOARD_RIGHTCONTROL) +#define RCTRL (RIGHT_CONTROL) +#define RCTL (RIGHT_CONTROL) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Right Shift */ +#define RIGHT_SHIFT (HID_USAGE_KEY_KEYBOARD_RIGHTSHIFT) +#define RSHFT (RIGHT_SHIFT) +#define RSFT (RIGHT_SHIFT) // WARNING: DEPRECATED (DO NOT USE) + +/* Keyboard Right Alt */ +#define RIGHT_ALT (HID_USAGE_KEY_KEYBOARD_RIGHTALT) +#define RALT (RIGHT_ALT) + +/* Keyboard Right GUI (Windows / Command / Meta) */ +#define RIGHT_GUI (HID_USAGE_KEY_KEYBOARD_RIGHT_GUI) +#define RGUI (RIGHT_GUI) +#define RIGHT_WIN (RIGHT_GUI) +#define RWIN (RIGHT_GUI) +#define RIGHT_COMMAND (RIGHT_GUI) +#define RCMD (RIGHT_GUI) +#define RIGHT_META (RIGHT_GUI) +#define RMETA (RIGHT_GUI) + +/* Keyboard Play/Pause */ +#define K_PLAY_PAUSE (0xE8) +#define K_PP (K_PLAY_PAUSE) + +/* Keyboard Stop */ +#define K_STOP2 (0xE9) + +/* Keyboard Previous */ +#define K_PREVIOUS (0xEA) +#define K_PREV (K_PREVIOUS) + +/* Keyboard Next */ +#define K_NEXT (0xEB) + +/* Keyboard Eject */ +#define K_EJECT (0xEC) + +/* Keyboard Volume Up */ +#define K_VOLUME_UP2 (0xED) +#define K_VOL_UP2 (K_VOLUME_UP2) + +/* Keyboard Volume Down */ +#define K_VOLUME_DOWN2 (0xEE) +#define K_VOL_DN2 (K_VOLUME_DOWN2) + +/* Keyboard Mute */ +#define K_MUTE2 (0xEF) + +/* Keyboard WWW */ +#define K_WWW (0xF0) + +/* Keyboard Back */ +#define K_BACK (0xF1) + +/* Keyboard Forward */ +#define K_FORWARD (0xF2) + +/* Keyboard Stop */ +#define K_STOP3 (0xF3) + +/* Keyboard Find */ +#define K_FIND2 (0xF4) + +/* Keyboard Scroll Up */ +#define K_SCROLL_UP (0xF5) + +/* Keyboard Scroll Down */ +#define K_SCROLL_DOWN (0xF6) + +/* Keyboard Edit */ +#define K_EDIT (0xF7) + +/* Keyboard Sleep */ +#define K_SLEEP (0xF8) + +/* Keyboard Lock */ +#define K_LOCK (0xF9) +#define K_SCREENSAVER (K_LOCK) +#define K_COFFEE (K_LOCK) + +/* Keyboard Refresh */ +#define K_REFRESH (0xFA) + +/* Keyboard Calculator */ +#define K_CALCULATOR (0xFB) +#define K_CALC (K_CALCULATOR) + +/* Consumer Power */ +#define C_POWER (HID_USAGE_CONSUMER_POWER) +#define C_PWR (C_POWER) + +/* Consumer Reset */ +#define C_RESET (HID_USAGE_CONSUMER_RESET) + +/* Consumer Sleep */ +#define C_SLEEP (HID_USAGE_CONSUMER_SLEEP) + +/* Consumer Sleep Mode */ +#define C_SLEEP_MODE (HID_USAGE_CONSUMER_SLEEP_MODE) + +/* Consumer Menu */ +#define C_MENU (HID_USAGE_CONSUMER_MENU) + +/* Consumer Menu Pick */ +#define C_MENU_PICK (HID_USAGE_CONSUMER_MENU_PICK) +#define C_MENU_SELECT (C_MENU_PICK) + +/* Consumer Menu Up */ +#define C_MENU_UP (HID_USAGE_CONSUMER_MENU_UP) + +/* Consumer Menu Down */ +#define C_MENU_DOWN (HID_USAGE_CONSUMER_MENU_DOWN) + +/* Consumer Menu Left */ +#define C_MENU_LEFT (HID_USAGE_CONSUMER_MENU_LEFT) + +/* Consumer Menu Right */ +#define C_MENU_RIGHT (HID_USAGE_CONSUMER_MENU_RIGHT) + +/* Consumer Menu Escape */ +#define C_MENU_ESCAPE (HID_USAGE_CONSUMER_MENU_ESCAPE) +#define C_MENU_ESC (C_MENU_ESCAPE) + +/* Consumer Menu Value Increase */ +#define C_MENU_INCREASE (HID_USAGE_CONSUMER_MENU_VALUE_INCREASE) +#define C_MENU_INC (C_MENU_INCREASE) + +/* Consumer Menu Value Decrease */ +#define C_MENU_DECREASE (HID_USAGE_CONSUMER_MENU_VALUE_DECREASE) +#define C_MENU_DEC (C_MENU_DECREASE) + +/* Consumer Data On Screen */ +#define C_DATA_ON_SCREEN (HID_USAGE_CONSUMER_DATA_ON_SCREEN) + +/* Consumer Closed Caption */ +#define C_CAPTIONS (HID_USAGE_CONSUMER_CLOSED_CAPTION) +#define C_SUBTITILES (C_CAPTIONS) + +/* Consumer Snapshot */ +#define C_SNAPSHOT (HID_USAGE_CONSUMER_SNAPSHOT) + +/* Consumer Picture-in-Picture Toggle */ +#define C_PIP (HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_TOGGLE) + +/* Consumer Red Menu Button */ +#define C_RED_BUTTON (HID_USAGE_CONSUMER_RED_MENU_BUTTON) +#define C_RED (C_RED_BUTTON) + +/* Consumer Green Menu Button */ +#define C_GREEN_BUTTON (HID_USAGE_CONSUMER_GREEN_MENU_BUTTON) +#define C_GREEN (C_GREEN_BUTTON) + +/* Consumer Blue Menu Button */ +#define C_BLUE_BUTTON (HID_USAGE_CONSUMER_BLUE_MENU_BUTTON) +#define C_BLUE (C_BLUE_BUTTON) + +/* Consumer Yellow Menu Button */ +#define C_YELLOW_BUTTON (HID_USAGE_CONSUMER_YELLOW_MENU_BUTTON) +#define C_YELLOW (C_YELLOW_BUTTON) + +/* Consumer Aspect */ +#define C_ASPECT (HID_USAGE_CONSUMER_ASPECT) + +/* Consumer Display Brightness Increment */ +#define C_BRIGHTNESS_INC (HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_INCREMENT) +#define C_BRI_INC (C_BRIGHTNESS_INC) +#define C_BRI_UP (C_BRIGHTNESS_INC) + +/* Consumer Display Brightness Decrement */ +#define C_BRIGHTNESS_DEC (HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_DECREMENT) +#define C_BRI_DEC (C_BRIGHTNESS_DEC) +#define C_BRI_DN (C_BRIGHTNESS_DEC) + +/* Consumer Display Backlight Toggle */ +#define C_BACKLIGHT_TOGGLE (HID_USAGE_CONSUMER_DISPLAY_BACKLIGHT_TOGGLE) +#define C_BKLT_TOG (C_BACKLIGHT_TOGGLE) + +/* Consumer Display Set Brightness to Minimum */ +#define C_BRIGHTNESS_MINIMUM (HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MINIMUM) +#define C_BRI_MIN (C_BRIGHTNESS_MINIMUM) + +/* Consumer Display Set Brightness to Maximum */ +#define C_BRIGHTNESS_MAXIMUM (HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MAXIMUM) +#define C_BRI_MAX (C_BRIGHTNESS_MAXIMUM) + +/* Consumer Display Set Auto Brightness */ +#define C_BRIGHTNESS_AUTO (HID_USAGE_CONSUMER_DISPLAY_SET_AUTO_BRIGHTNESS) +#define C_BRI_AUTO (C_BRIGHTNESS_AUTO) + +/* Consumer Mode Step */ +#define C_MEDIA_STEP (HID_USAGE_CONSUMER_MODE_STEP) +#define C_MODE_STEP (C_MEDIA_STEP) + +/* Consumer Recall Last */ +#define C_RECALL_LAST (HID_USAGE_CONSUMER_RECALL_LAST) +#define C_CHAN_LAST (C_RECALL_LAST) + +/* Consumer Media Select Computer */ +#define C_MEDIA_COMPUTER (HID_USAGE_CONSUMER_MEDIA_SELECT_COMPUTER) + +/* Consumer Media Select TV */ +#define C_MEDIA_TV (HID_USAGE_CONSUMER_MEDIA_SELECT_TV) + +/* Consumer Media Select WWW */ +#define C_MEDIA_WWW (HID_USAGE_CONSUMER_MEDIA_SELECT_WWW) + +/* Consumer Media Select DVD */ +#define C_MEDIA_DVD (HID_USAGE_CONSUMER_MEDIA_SELECT_DVD) + +/* Consumer Media Select Telephone */ +#define C_MEDIA_PHONE (HID_USAGE_CONSUMER_MEDIA_SELECT_TELEPHONE) + +/* Consumer Media Select Program Guide */ +#define C_MEDIA_GUIDE (HID_USAGE_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE) + +/* Consumer Media Select Video Phone */ +#define C_MEDIA_VIDEOPHONE (HID_USAGE_CONSUMER_MEDIA_SELECT_VIDEO_PHONE) + +/* Consumer Media Select Games */ +#define C_MEDIA_GAMES (HID_USAGE_CONSUMER_MEDIA_SELECT_GAMES) + +/* Consumer Media Select Messages */ +#define C_MEDIA_MESSAGES (HID_USAGE_CONSUMER_MEDIA_SELECT_MESSAGES) + +/* Consumer Media Select CD */ +#define C_MEDIA_CD (HID_USAGE_CONSUMER_MEDIA_SELECT_CD) + +/* Consumer Media Select VCR */ +#define C_MEDIA_VCR (HID_USAGE_CONSUMER_MEDIA_SELECT_VCR) + +/* Consumer Media Select Tuner */ +#define C_MEDIA_TUNER (HID_USAGE_CONSUMER_MEDIA_SELECT_TUNER) + +/* Consumer Quit */ +#define C_QUIT (HID_USAGE_CONSUMER_QUIT) + +/* Consumer Help */ +#define C_HELP (HID_USAGE_CONSUMER_HELP) + +/* Consumer Media Select Tape */ +#define C_MEDIA_TAPE (HID_USAGE_CONSUMER_MEDIA_SELECT_TAPE) + +/* Consumer Media Select Cable */ +#define C_MEDIA_CABLE (HID_USAGE_CONSUMER_MEDIA_SELECT_CABLE) + +/* Consumer Media Select Satellite */ +#define C_MEDIA_SATELLITE (HID_USAGE_CONSUMER_MEDIA_SELECT_SATELLITE) + +/* Consumer Media Select Home */ +#define C_MEDIA_HOME (HID_USAGE_CONSUMER_MEDIA_SELECT_HOME) + +/* Consumer Channel Increment */ +#define C_CHANNEL_INC (HID_USAGE_CONSUMER_CHANNEL_INCREMENT) +#define C_CHAN_INC (C_CHANNEL_INC) + +/* Consumer Channel Decrement */ +#define C_CHANNEL_DEC (HID_USAGE_CONSUMER_CHANNEL_DECREMENT) +#define C_CHAN_DEC (C_CHANNEL_DEC) + +/* Consumer VCR Plus */ +#define C_MEDIA_VCR_PLUS (HID_USAGE_CONSUMER_VCR_PLUS) + +/* Consumer Play */ +#define C_PLAY (HID_USAGE_CONSUMER_PLAY) + +/* Consumer Pause */ +#define C_PAUSE (HID_USAGE_CONSUMER_PAUSE) + +/* Consumer Record */ +#define C_RECORD (HID_USAGE_CONSUMER_RECORD) +#define C_REC (C_RECORD) + +/* Consumer Fast Forward */ +#define C_FAST_FORWARD (HID_USAGE_CONSUMER_FAST_FORWARD) +#define C_FF (C_FAST_FORWARD) + +/* Consumer Rewind */ +#define C_REWIND (HID_USAGE_CONSUMER_REWIND) +#define C_RW (C_REWIND) + +/* Consumer Scan Next Track */ +#define C_NEXT (HID_USAGE_CONSUMER_SCAN_NEXT_TRACK) +#define M_NEXT (C_NEXT) // WARNING: DEPRECATED (DO NOT USE) + +/* Consumer Scan Previous Track */ +#define C_PREVIOUS (HID_USAGE_CONSUMER_SCAN_PREVIOUS_TRACK) +#define C_PREV (C_PREVIOUS) +#define M_PREV (C_PREVIOUS) // WARNING: DEPRECATED (DO NOT USE) + +/* Consumer Stop */ +#define C_STOP (HID_USAGE_CONSUMER_STOP) +#define M_STOP (C_STOP) // WARNING: DEPRECATED (DO NOT USE) + +/* Consumer Eject */ +#define C_EJECT (HID_USAGE_CONSUMER_EJECT) +#define M_EJCT (C_EJECT) // WARNING: DEPRECATED (DO NOT USE) + +/* Consumer Random Play */ +#define C_RANDOM_PLAY (HID_USAGE_CONSUMER_RANDOM_PLAY) +#define C_SHUFFLE (C_RANDOM_PLAY) + +/* Consumer Repeat */ +#define C_REPEAT (HID_USAGE_CONSUMER_REPEAT) + +/* Consumer Slow Tracking */ +#define C_SLOW_TRACKING (HID_USAGE_CONSUMER_SLOW_TRACKING) +#define C_SLOW2 (C_SLOW_TRACKING) + +/* Consumer Stop/Eject */ +#define C_STOP_EJECT (HID_USAGE_CONSUMER_STOP_EJECT) + +/* Consumer Play/Pause */ +#define C_PLAY_PAUSE (HID_USAGE_CONSUMER_PLAY_PAUSE) +#define C_PP (C_PLAY_PAUSE) +#define M_PLAY (C_PLAY_PAUSE) // WARNING: DEPRECATED (DO NOT USE) + +/* Consumer Voice Command */ +#define C_VOICE_COMMAND (HID_USAGE_CONSUMER_VOICE_COMMAND) + +/* Consumer Mute */ +#define C_MUTE (HID_USAGE_CONSUMER_MUTE) +#define M_MUTE (C_MUTE) // WARNING: DEPRECATED (DO NOT USE) + +/* Consumer Bass Boost */ +#define C_BASS_BOOST (HID_USAGE_CONSUMER_BASS_BOOST) + +/* Consumer Volume Increment */ +#define C_VOLUME_UP (HID_USAGE_CONSUMER_VOLUME_INCREMENT) +#define C_VOL_UP (C_VOLUME_UP) +#define M_VOLU (C_VOLUME_UP) // WARNING: DEPRECATED (DO NOT USE) + +/* Consumer Volume Decrement */ +#define C_VOLUME_DOWN (HID_USAGE_CONSUMER_VOLUME_DECREMENT) +#define C_VOL_DN (C_VOLUME_DOWN) +#define M_VOLD (C_VOLUME_DOWN) // WARNING: DEPRECATED (DO NOT USE) + +/* Consumer Slow */ +#define C_SLOW (HID_USAGE_CONSUMER_SLOW) + +/* Consumer Alternate Audio Increment */ +#define C_ALTERNATE_AUDIO_INCREMENT (HID_USAGE_CONSUMER_ALTERNATE_AUDIO_INCREMENT) +#define C_ALT_AUDIO_INC (C_ALTERNATE_AUDIO_INCREMENT) + +/* Consumer AL Consumer Control Configuration */ +#define C_AL_CCC (HID_USAGE_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION) + +/* Consumer AL Word Processor */ +#define C_AL_WORD (HID_USAGE_CONSUMER_AL_WORD_PROCESSOR) + +/* Consumer AL Text Editor */ +#define C_AL_TEXT_EDITOR (HID_USAGE_CONSUMER_AL_TEXT_EDITOR) + +/* Consumer AL Spreadsheet */ +#define C_AL_SPREADSHEET (HID_USAGE_CONSUMER_AL_SPREADSHEET) +#define C_AL_SHEET (C_AL_SPREADSHEET) + +/* Consumer AL Graphics Editor */ +#define C_AL_GRAPHICS_EDITOR (HID_USAGE_CONSUMER_AL_GRAPHICS_EDITOR) + +/* Consumer AL Presentation App */ +#define C_AL_PRESENTATION (HID_USAGE_CONSUMER_AL_PRESENTATION_APP) + +/* Consumer AL Database App */ +#define C_AL_DATABASE (HID_USAGE_CONSUMER_AL_DATABASE_APP) +#define C_AL_DB (C_AL_DATABASE) + +/* Consumer AL Email Reader */ +#define C_AL_EMAIL (HID_USAGE_CONSUMER_AL_EMAIL_READER) +#define C_AL_MAIL (C_AL_EMAIL) + +/* Consumer AL Newsreader */ +#define C_AL_NEWS (HID_USAGE_CONSUMER_AL_NEWSREADER) + +/* Consumer AL Voicemail */ +#define C_AL_VOICEMAIL (HID_USAGE_CONSUMER_AL_VOICEMAIL) + +/* Consumer AL Contacts/Address Book */ +#define C_AL_CONTACTS (HID_USAGE_CONSUMER_AL_CONTACTS_ADDRESS_BOOK) +#define C_AL_ADDRESS_BOOK (C_AL_CONTACTS) + +/* Consumer AL Calendar/Schedule */ +#define C_AL_CALENDAR (HID_USAGE_CONSUMER_AL_CALENDAR_SCHEDULE) +#define C_AL_CAL (C_AL_CALENDAR) + +/* Consumer AL Task/Project Manager */ +#define C_AL_TASK_MANAGER (HID_USAGE_CONSUMER_AL_TASK_PROJECT_MANAGER) + +/* Consumer AL Log/Journal/Timecard */ +#define C_AL_JOURNAL (HID_USAGE_CONSUMER_AL_LOG_JOURNAL_TIMECARD) + +/* Consumer AL Checkbook/Finance */ +#define C_AL_FINANCE (HID_USAGE_CONSUMER_AL_CHECKBOOK_FINANCE) + +/* Consumer AL Calculator */ +#define C_AL_CALCULATOR (HID_USAGE_CONSUMER_AL_CALCULATOR) +#define C_AL_CALC (C_AL_CALCULATOR) + +/* Consumer AL A/V Capture/Playback */ +#define C_AL_AV_CAPTURE_PLAYBACK (HID_USAGE_CONSUMER_AL_A_V_CAPTURE_PLAYBACK) + +/* Consumer AL Local Machine Browser */ +#define C_AL_MY_COMPUTER (HID_USAGE_CONSUMER_AL_LOCAL_MACHINE_BROWSER) + +/* Consumer AL Internet Browser */ +#define C_AL_WWW (HID_USAGE_CONSUMER_AL_INTERNET_BROWSER) + +/* Consumer AL Network Chat */ +#define C_AL_NETWORK_CHAT (HID_USAGE_CONSUMER_AL_NETWORK_CHAT) +#define C_AL_CHAT (C_AL_NETWORK_CHAT) + +/* Consumer AL Logoff */ +#define C_AL_LOGOFF (HID_USAGE_CONSUMER_AL_LOGOFF) + +/* Consumer AL Terminal Lock/Screensaver */ +#define C_AL_LOCK (HID_USAGE_CONSUMER_AL_TERMINAL_LOCK_SCREENSAVER) +#define C_AL_SCREENSAVER (C_AL_LOCK) +#define C_AL_COFFEE (C_AL_LOCK) + +/* Consumer AL Control Panel */ +#define C_AL_CONTROL_PANEL (HID_USAGE_CONSUMER_AL_CONTROL_PANEL) + +/* Consumer AL Select Task/Application */ +#define C_AL_SELECT_TASK (HID_USAGE_CONSUMER_AL_SELECT_TASK_APPLICATION) + +/* Consumer AL Next Task/Application */ +#define C_AL_NEXT_TASK (HID_USAGE_CONSUMER_AL_NEXT_TASK_APPLICATION) + +/* Consumer AL Previous Task/Application */ +#define C_AL_PREVIOUS_TASK (HID_USAGE_CONSUMER_AL_PREVIOUS_TASK_APPLICATION) +#define C_AL_PREV_TASK (C_AL_PREVIOUS_TASK) + +/* Consumer AL Integrated Help Center */ +#define C_AL_HELP (HID_USAGE_CONSUMER_AL_INTEGRATED_HELP_CENTER) + +/* Consumer AL Documents */ +#define C_AL_DOCUMENTS (HID_USAGE_CONSUMER_AL_DOCUMENTS) +#define C_AL_DOCS (C_AL_DOCUMENTS) + +/* Consumer AL Spell Check */ +#define C_AL_SPELLCHECK (HID_USAGE_CONSUMER_AL_SPELL_CHECK) +#define C_AL_SPELL (C_AL_SPELLCHECK) + +/* Consumer AL Keyboard Layout */ +#define C_AL_KEYBOARD_LAYOUT (HID_USAGE_CONSUMER_AL_KEYBOARD_LAYOUT) + +/* Consumer AL Screen Saver */ +#define C_AL_SCREEN_SAVER (HID_USAGE_CONSUMER_AL_SCREEN_SAVER) + +/* Consumer AL File Browser */ +#define C_AL_FILE_BROWSER (HID_USAGE_CONSUMER_AL_FILE_BROWSER) +#define C_AL_FILES (C_AL_FILE_BROWSER) + +/* Consumer AL Image Browser */ +#define C_AL_IMAGE_BROWSER (HID_USAGE_CONSUMER_AL_IMAGE_BROWSER) +#define C_AL_IMAGES (C_AL_IMAGE_BROWSER) + +/* Consumer AL Audio Browser */ +#define C_AL_AUDIO_BROWSER (HID_USAGE_CONSUMER_AL_AUDIO_BROWSER) +#define C_AL_AUDIO (C_AL_AUDIO_BROWSER) +#define C_AL_MUSIC (C_AL_AUDIO_BROWSER) + +/* Consumer AL Movie Browser */ +#define C_AL_MOVIE_BROWSER (HID_USAGE_CONSUMER_AL_MOVIE_BROWSER) +#define C_AL_MOVIES (C_AL_MOVIE_BROWSER) + +/* Consumer AL Instant Messaging */ +#define C_AL_INSTANT_MESSAGING (HID_USAGE_CONSUMER_AL_INSTANT_MESSAGING) +#define C_AL_IM (C_AL_INSTANT_MESSAGING) + +/* Consumer AL OEM Features/Tips/Tutorial Browser */ +#define C_AL_OEM_FEATURES (HID_USAGE_CONSUMER_AL_OEM_FEATURES_TIPS_TUTORIAL_BROWSER) +#define C_AL_TIPS (C_AL_OEM_FEATURES) +#define C_AL_TUTORIAL (C_AL_OEM_FEATURES) + +/* Consumer AC New */ +#define C_AC_NEW (HID_USAGE_CONSUMER_AC_NEW) + +/* Consumer AC Open */ +#define C_AC_OPEN (HID_USAGE_CONSUMER_AC_OPEN) + +/* Consumer AC Close */ +#define C_AC_CLOSE (HID_USAGE_CONSUMER_AC_CLOSE) + +/* Consumer AC Exit */ +#define C_AC_EXIT (HID_USAGE_CONSUMER_AC_EXIT) + +/* Consumer AC Save */ +#define C_AC_SAVE (HID_USAGE_CONSUMER_AC_SAVE) + +/* Consumer AC Print */ +#define C_AC_PRINT (HID_USAGE_CONSUMER_AC_PRINT) + +/* Consumer AC Properties */ +#define C_AC_PROPERTIES (HID_USAGE_CONSUMER_AC_PROPERTIES) +#define C_AC_PROPS (C_AC_PROPERTIES) + +/* Consumer AC Undo */ +#define C_AC_UNDO (HID_USAGE_CONSUMER_AC_UNDO) + +/* Consumer AC Copy */ +#define C_AC_COPY (HID_USAGE_CONSUMER_AC_COPY) + +/* Consumer AC Cut */ +#define C_AC_CUT (HID_USAGE_CONSUMER_AC_CUT) + +/* Consumer AC Paste */ +#define C_AC_PASTE (HID_USAGE_CONSUMER_AC_PASTE) + +/* Consumer AC Find */ +#define C_AC_FIND (HID_USAGE_CONSUMER_AC_FIND) + +/* Consumer AC Search */ +#define C_AC_SEARCH (HID_USAGE_CONSUMER_AC_SEARCH) + +/* Consumer AC Go To */ +#define C_AC_GOTO (HID_USAGE_CONSUMER_AC_GO_TO) + +/* Consumer AC Home */ +#define C_AC_HOME (HID_USAGE_CONSUMER_AC_HOME) + +/* Consumer AC Back */ +#define C_AC_BACK (HID_USAGE_CONSUMER_AC_BACK) + +/* Consumer AC Forward */ +#define C_AC_FORWARD (HID_USAGE_CONSUMER_AC_FORWARD) + +/* Consumer AC Stop */ +#define C_AC_STOP (HID_USAGE_CONSUMER_AC_STOP) + +/* Consumer AC Refresh */ +#define C_AC_REFRESH (HID_USAGE_CONSUMER_AC_REFRESH) + +/* Consumer AC Bookmarks */ +#define C_AC_BOOKMARKS (HID_USAGE_CONSUMER_AC_BOOKMARKS) +#define C_AC_FAVORITES (C_AC_BOOKMARKS) +#define C_AC_FAVOURITES (C_AC_BOOKMARKS) + +/* Consumer AC Zoom In */ +#define C_AC_ZOOM_IN (HID_USAGE_CONSUMER_AC_ZOOM_IN) + +/* Consumer AC Zoom Out */ +#define C_AC_ZOOM_OUT (HID_USAGE_CONSUMER_AC_ZOOM_OUT) + +/* Consumer AC Zoom */ +#define C_AC_ZOOM (HID_USAGE_CONSUMER_AC_ZOOM) + +/* Consumer AC View Toggle */ +#define C_AC_VIEW_TOGGLE (HID_USAGE_CONSUMER_AC_VIEW_TOGGLE) + +/* Consumer AC Scroll Up */ +#define C_AC_SCROLL_UP (HID_USAGE_CONSUMER_AC_SCROLL_UP) + +/* Consumer AC Scroll Down */ +#define C_AC_SCROLL_DOWN (HID_USAGE_CONSUMER_AC_SCROLL_DOWN) + +/* Consumer AC Edit */ +#define C_AC_EDIT (HID_USAGE_CONSUMER_AC_EDIT) + +/* Consumer AC Cancel */ +#define C_AC_CANCEL (HID_USAGE_CONSUMER_AC_CANCEL) + +/* Consumer AC Insert Mode */ +#define C_AC_INSERT (HID_USAGE_CONSUMER_AC_INSERT_MODE) +#define C_AC_INS (C_AC_INSERT) + +/* Consumer AC Delete */ +#define C_AC_DEL (HID_USAGE_CONSUMER_AC_DELETE) + +/* Consumer AC Redo/Repeat */ +#define C_AC_REDO (HID_USAGE_CONSUMER_AC_REDO_REPEAT) + +/* Consumer AC Reply */ +#define C_AC_REPLY (HID_USAGE_CONSUMER_AC_REPLY) + +/* Consumer AC Forward Msg */ +#define C_AC_FORWARD_MAIL (HID_USAGE_CONSUMER_AC_FORWARD_MSG) + +/* Consumer AC Send */ +#define C_AC_SEND (HID_USAGE_CONSUMER_AC_SEND) + +/* Consumer AC Desktop Show All Windows */ +#define C_AC_DESKTOP_SHOW_ALL_WINDOWS (HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_WINDOWS) + +/* Consumer Keyboard Input Assist Previous */ +#define C_KEYBOARD_INPUT_ASSIST_PREVIOUS (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS) +#define C_KBIA_PREV (C_KEYBOARD_INPUT_ASSIST_PREVIOUS) + +/* Consumer Keyboard Input Assist Next */ +#define C_KEYBOARD_INPUT_ASSIST_NEXT (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT) +#define C_KBIA_NEXT (C_KEYBOARD_INPUT_ASSIST_NEXT) + +/* Consumer Keyboard Input Assist Previous Group */ +#define C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP \ + (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP) +#define C_KBIA_PREV_GRP (C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP) + +/* Consumer Keyboard Input Assist Next Group */ +#define C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT_GROUP) +#define C_KBIA_NEXT_GRP (C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP) + +/* Consumer Keyboard Input Assist Accept */ +#define C_KEYBOARD_INPUT_ASSIST_ACCEPT (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_ACCEPT) +#define C_KBIA_ACCEPT (C_KEYBOARD_INPUT_ASSIST_ACCEPT) + +/* Consumer Keyboard Input Assist Cancel */ +#define C_KEYBOARD_INPUT_ASSIST_CANCEL (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_CANCEL) +#define C_KBIA_CANCEL (C_KEYBOARD_INPUT_ASSIST_CANCEL) \ No newline at end of file From d748d8a7496ea436a7e643245dbefb7b9c99d0cb Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sun, 25 Oct 2020 11:32:28 +0000 Subject: [PATCH 327/353] refactor: Replace superseded key names Replace deprecated key names (LCTL, NUM_0, NUM_1). Replace abbreviated names with fully qualified names (LCTL, RGUI, NUM_0, NUM_1). Follow-up to #21. --- app/src/behaviors/behavior_hold_tap.c | 3 ++- app/src/ble.c | 4 ++-- app/src/hid.c | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/behaviors/behavior_hold_tap.c b/app/src/behaviors/behavior_hold_tap.c index d1901489..c53750a8 100644 --- a/app/src/behaviors/behavior_hold_tap.c +++ b/app/src/behaviors/behavior_hold_tap.c @@ -429,7 +429,8 @@ static int position_state_changed_listener(const struct zmk_event_header *eh) { } static inline bool only_mods(struct keycode_state_changed *ev) { - return ev->usage_page == HID_USAGE_KEY && ev->keycode >= LCTL && ev->keycode <= RGUI; + return ev->usage_page == HID_USAGE_KEY && ev->keycode >= LEFT_CONTROL && + ev->keycode <= RIGHT_GUI; } static int keycode_state_changed_listener(const struct zmk_event_header *eh) { diff --git a/app/src/ble.c b/app/src/ble.c index f3962ae0..1ab61d0c 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -572,11 +572,11 @@ bool zmk_ble_handle_key_user(struct zmk_key_event *key_event) { return true; } - if (key < NUM_1 || key > NUM_0) { + if (key < NUMBER_1 || key > NUMBER_0) { return true; } - u32_t val = (key == NUM_0) ? 0 : (key - NUM_1 + 1); + u32_t val = (key == NUMBER_0) ? 0 : (key - NUMBER_1 + 1); passkey_entries[passkey_digit++] = val; diff --git a/app/src/hid.c b/app/src/hid.c index 1925765c..aeb1a553 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -78,16 +78,16 @@ int zmk_hid_implicit_modifiers_release() { } int zmk_hid_keypad_press(zmk_key code) { - if (code >= LCTL && code <= RGUI) { - return zmk_hid_register_mod(code - LCTL); + if (code >= LEFT_CONTROL && code <= RIGHT_GUI) { + return zmk_hid_register_mod(code - LEFT_CONTROL); } TOGGLE_KEYPAD(0U, code); return 0; }; int zmk_hid_keypad_release(zmk_key code) { - if (code >= LCTL && code <= RGUI) { - return zmk_hid_unregister_mod(code - LCTL); + if (code >= LEFT_CONTROL && code <= RIGHT_GUI) { + return zmk_hid_unregister_mod(code - LEFT_CONTROL); } TOGGLE_KEYPAD(code, 0U); return 0; From aebe90908df58e332186f3152f67fbdc9f0d3ffb Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 3 Nov 2020 11:36:01 +0000 Subject: [PATCH 328/353] test: Replace superseded key names in test keymaps Replace deprecated key names (LSFT, LCTL, RCTL, M_NEXT). Replace abbreviated names with fully qualified names (LSFT, LCTL, LALT, LGUI, RGUI). Follow-up to #21. --- app/tests/hold-tap/balanced/behavior_keymap.dtsi | 4 ++-- app/tests/hold-tap/balanced/many-nested/native_posix.keymap | 4 ++-- app/tests/hold-tap/hold-preferred/behavior_keymap.dtsi | 4 ++-- app/tests/hold-tap/tap-preferred/behavior_keymap.dtsi | 4 ++-- app/tests/keypress/behavior_keymap.dtsi | 2 +- .../kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap | 4 ++-- .../modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap | 4 ++-- .../kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap | 4 ++-- .../kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap | 4 ++-- .../kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap | 2 +- .../kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap | 2 +- .../kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap | 2 +- app/tests/momentary-layer/behavior_keymap.dtsi | 2 +- app/tests/toggle-layer/behavior_keymap.dtsi | 2 +- 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/app/tests/hold-tap/balanced/behavior_keymap.dtsi b/app/tests/hold-tap/balanced/behavior_keymap.dtsi index df56fb5b..7d18bb6e 100644 --- a/app/tests/hold-tap/balanced/behavior_keymap.dtsi +++ b/app/tests/hold-tap/balanced/behavior_keymap.dtsi @@ -20,8 +20,8 @@ default_layer { bindings = < - &ht_bal LSFT F &ht_bal LCTL J - &kp D &kp RCTL>; + &ht_bal LEFT_SHIFT F &ht_bal LEFT_CONTROL J + &kp D &kp RIGHT_CONTROL>; }; }; }; diff --git a/app/tests/hold-tap/balanced/many-nested/native_posix.keymap b/app/tests/hold-tap/balanced/many-nested/native_posix.keymap index 3cb04c34..f51ffb56 100644 --- a/app/tests/hold-tap/balanced/many-nested/native_posix.keymap +++ b/app/tests/hold-tap/balanced/many-nested/native_posix.keymap @@ -20,8 +20,8 @@ default_layer { bindings = < - &ht_bal LSFT F &ht_bal LCTL J - &ht_bal LGUI H &ht_bal LALT L + &ht_bal LEFT_SHIFT F &ht_bal LEFT_CONTROL J + &ht_bal LEFT_GUI H &ht_bal LEFT_ALT L >; }; }; diff --git a/app/tests/hold-tap/hold-preferred/behavior_keymap.dtsi b/app/tests/hold-tap/hold-preferred/behavior_keymap.dtsi index 375ffd93..64847a57 100644 --- a/app/tests/hold-tap/hold-preferred/behavior_keymap.dtsi +++ b/app/tests/hold-tap/hold-preferred/behavior_keymap.dtsi @@ -22,8 +22,8 @@ default_layer { bindings = < - &ht_hold LSFT F &ht_hold LCTL J - &kp D &kp RCTL>; + &ht_hold LEFT_SHIFT F &ht_hold LEFT_CONTROL J + &kp D &kp RIGHT_CONTROL>; }; }; }; diff --git a/app/tests/hold-tap/tap-preferred/behavior_keymap.dtsi b/app/tests/hold-tap/tap-preferred/behavior_keymap.dtsi index e514fa65..6e91466d 100644 --- a/app/tests/hold-tap/tap-preferred/behavior_keymap.dtsi +++ b/app/tests/hold-tap/tap-preferred/behavior_keymap.dtsi @@ -20,8 +20,8 @@ default_layer { bindings = < - &tp LSFT F &tp LCTL J - &kp D &kp RCTL>; + &tp LEFT_SHIFT F &tp LEFT_CONTROL J + &kp D &kp RIGHT_CONTROL>; }; }; }; diff --git a/app/tests/keypress/behavior_keymap.dtsi b/app/tests/keypress/behavior_keymap.dtsi index 3a458092..2e45ca09 100644 --- a/app/tests/keypress/behavior_keymap.dtsi +++ b/app/tests/keypress/behavior_keymap.dtsi @@ -10,7 +10,7 @@ default_layer { bindings = < &kp B &none - &cp M_NEXT &none>; + &cp C_NEXT &none>; }; }; }; diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap index 61500946..1f3502d6 100644 --- a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap @@ -19,8 +19,8 @@ default_layer { bindings = < - &kp LCTL &kp LCTL - &kp LSFT &none + &kp LEFT_CONTROL &kp LEFT_CONTROL + &kp LEFT_SHIFT &none >; }; }; diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap index 3324584d..9c7d7c83 100644 --- a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap @@ -17,8 +17,8 @@ default_layer { bindings = < - &kp LCTL &kp LCTL - &kp LSFT &none + &kp LEFT_CONTROL &kp LEFT_CONTROL + &kp LEFT_SHIFT &none >; }; }; diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap index b6f96311..34bb522b 100644 --- a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap @@ -19,8 +19,8 @@ default_layer { bindings = < - &kp LCTL &kp LCTL - &kp LSFT &none + &kp LEFT_CONTROL &kp LEFT_CONTROL + &kp LEFT_SHIFT &none >; }; }; diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap index 3fedad25..68e4de73 100644 --- a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap +++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap @@ -20,8 +20,8 @@ default_layer { bindings = < - &kp LCTL &kp LCTL - &kp LSFT &none + &kp LEFT_CONTROL &kp LEFT_CONTROL + &kp LEFT_SHIFT &none >; }; }; diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap index c603c009..73fa7cc8 100644 --- a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap +++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap @@ -20,7 +20,7 @@ default_layer { bindings = < &kp LC(A) &kp LS(B) - &kp LCTL &none + &kp LEFT_CONTROL &none >; }; }; diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap index d381e4bf..09816d94 100644 --- a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap +++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap @@ -20,7 +20,7 @@ default_layer { bindings = < &kp LC(A) &kp LS(B) - &kp LCTL &none + &kp LEFT_CONTROL &none >; }; }; diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap index b47b5f7e..1de00a0e 100644 --- a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap +++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap @@ -20,7 +20,7 @@ default_layer { bindings = < &kp LC(A) &kp LS(B) - &kp LCTL &none + &kp LEFT_CONTROL &none >; }; }; diff --git a/app/tests/momentary-layer/behavior_keymap.dtsi b/app/tests/momentary-layer/behavior_keymap.dtsi index 34c445cf..cdc37a79 100644 --- a/app/tests/momentary-layer/behavior_keymap.dtsi +++ b/app/tests/momentary-layer/behavior_keymap.dtsi @@ -15,7 +15,7 @@ lower_layer { bindings = < - &cp M_NEXT &trans + &cp C_NEXT &trans &kp L &kp J>; }; diff --git a/app/tests/toggle-layer/behavior_keymap.dtsi b/app/tests/toggle-layer/behavior_keymap.dtsi index d2b41a9a..5098785d 100644 --- a/app/tests/toggle-layer/behavior_keymap.dtsi +++ b/app/tests/toggle-layer/behavior_keymap.dtsi @@ -15,7 +15,7 @@ lower_layer { bindings = < - &cp M_NEXT &trans + &cp C_NEXT &trans &kp L &kp J>; }; From b8f6d52ae521993c736bdbeaa9cbf63a4de37a5e Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Tue, 3 Nov 2020 13:25:40 +0000 Subject: [PATCH 329/353] docs: Replace deprecated key names Follow-up to #21. --- docs/docs/behavior/hold-tap.md | 2 +- docs/docs/behavior/key-press.md | 6 +++--- docs/docs/behavior/layers.md | 22 +++++++++++----------- docs/docs/behavior/mod-tap.md | 4 ++-- docs/docs/dev-guide-new-shield.md | 12 ++++++------ docs/docs/feature/encoders.md | 2 +- docs/docs/feature/keymaps.md | 22 +++++++++++----------- docs/docs/troubleshooting.md | 6 +++--- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index 4dd8b258..182240d5 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -52,7 +52,7 @@ A code example which configures a mod-tap setting that works with homerow mods: default_layer { bindings = < - &hm LCTL A &hm LGUI S &hm LALT D &hm LSFT F + &hm LCTRL A &hm LGUI S &hm LALT D &hm LSHFT F >; }; }; diff --git a/docs/docs/behavior/key-press.md b/docs/docs/behavior/key-press.md index 6b4db362..7eb245dc 100644 --- a/docs/docs/behavior/key-press.md +++ b/docs/docs/behavior/key-press.md @@ -53,15 +53,15 @@ The "consumer key press" behavior allows you to send "consumer" usage page keyco These are mostly used for media and power related keycodes, such as sending "Pause", "Scan Track Next", "Scan Track Previous", etc. -There are a subset of the full consumer usage IDs found in the `keys.h` include, prefixed with `M_`, e.g. `M_PREV`. +There are a subset of the full consumer usage IDs found in the `keys.h` include, prefixed with `C_`, e.g. `C_PREV`. ### Behavior Binding - Reference: `&cp` -- Parameter: The keycode usage ID from the consumer usage page, e.g. `M_PREV` or `M_EJCT` +- Parameter: The keycode usage ID from the consumer usage page, e.g. `C_PREV` or `C_EJECT` Example: ``` -&cp M_PREV +&cp C_PREV ``` diff --git a/docs/docs/behavior/layers.md b/docs/docs/behavior/layers.md index 919b2b22..ba9d4b49 100644 --- a/docs/docs/behavior/layers.md +++ b/docs/docs/behavior/layers.md @@ -54,7 +54,7 @@ The "layer-tap" behavior enables a layer when a key is held, and output another Example: ``` -< LOWER SPC +< LOWER SPACE ``` ## Toggle Layer @@ -86,21 +86,21 @@ Example: default_layer { bindings = < - &tog NAVI &kp KDIV &kp KMLT &kp KMIN - &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp KPLS - &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp KPLS - &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp RET - &kp NUM_0 &kp NUM_0 &kp DOT &kp RET + &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS + &kp NUMBER_7 &kp NUMBER_8 &kp NUMBER_9 &kp KP_PLUS + &kp NUMBER_4 &kp NUMBER_5 &kp NUMBER_6 &kp KP_PLUS + &kp NUMBER_1 &kp NUMBER_2 &kp NUMBER_3 &kp RETURN + &kp NUMBER_0 &kp NUMBER_0 &kp DOT &kp RETURN >; }; nav_layer { bindings = < - &tog NAVI &kp KDIV &kp KMLT &kp KMIN - &kp HOME &kp UARW &kp PGUP &kp KPLS - &kp LARW &none &kp RARW &kp KPLS - &kp END &kp DARW &kp PGDN &kp RET - &kp INS &kp INS &kp DEL &kp RET + &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS + &kp HOME &kp UP &kp PAGE_UP &kp KP_PLUS + &kp LEFT &none &kp RIGHT &kp KP_PLUS + &kp END &kp DOWN &kp PAGE_DOWN &kp RETURN + &kp INSERT &kp INSERT &kp DEL &kp RETURN >; }; }; diff --git a/docs/docs/behavior/mod-tap.md b/docs/docs/behavior/mod-tap.md index f4ca50dd..da8b438a 100644 --- a/docs/docs/behavior/mod-tap.md +++ b/docs/docs/behavior/mod-tap.md @@ -16,13 +16,13 @@ The Mod-Tap behavior either acts as a held modifier, or as a tapped keycode. ### Behavior Binding - Reference: `&mt` -- Parameter #1: The keycode to be sent when activating as a modifier, e.g. `LSFT` +- Parameter #1: The keycode to be sent when activating as a modifier, e.g. `LSHFT` - Parameter #2: The keycode to sent when used as a tap, e.g. `A`, `B`. Example: ``` -&mt LSFT A +&mt LSHFT A ``` ### Configuration diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index e1d6f250..05548799 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -372,12 +372,12 @@ Here is an example simple keymap for the Kyria, with only one layer: // | GUI | DEL | RET | SPACE | ESC | | RET | SPACE | TAB | BSPC | R-ALT | bindings = < &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH - &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT - &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp LSFT &kp LSFT &kp LSFT &kp LSFT &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RCTL - &kp LGUI &kp DEL &kp RET &kp SPC &kp ESC &kp RET &kp SPC &kp TAB &kp BKSP &kp RALT + &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; + sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; }; }; }; @@ -385,7 +385,7 @@ Here is an example simple keymap for the Kyria, with only one layer: ``` :::note -The two `#include` lines at the top of the keymap are required in order to bring in the default set of behaviors to make them available to bind, and to import a set of defines for the HID keycodes, so keymaps can use parameters like `NUM_2` or `K` instead of the raw keycode numeric values. +The two `#include` lines at the top of the keymap are required in order to bring in the default set of behaviors to make them available to bind, and to import a set of defines for the HID keycodes, so keymaps can use parameters like `N2` or `K` instead of the raw keycode numeric values. ::: ### Keymap Behaviors @@ -476,7 +476,7 @@ For split keyboards, make sure to add left hand encoders to the left .overlay fi Add the following line to your keymap file to add default encoder behavior bindings: ``` -sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; +sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN>; ``` Add additional bindings as necessary to match the default number of encoders on your board. See the [Encoders](/docs/feature/encoders) and [Keymap](/docs/feature/keymaps) feature documentation for more details. diff --git a/docs/docs/feature/encoders.md b/docs/docs/feature/encoders.md index 9caccc2f..79b5c3f6 100644 --- a/docs/docs/feature/encoders.md +++ b/docs/docs/feature/encoders.md @@ -34,7 +34,7 @@ Additional encoders can be configured by adding more `BINDING CW_KEY CCW_KEY` se As an example, a complete `sensor-bindings` for a Kyria with two encoders could look like: ``` -sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; +sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; ``` Here, the left encoder is configured to control volume up and down while the right encoder sends either Page Up or Page Down. diff --git a/docs/docs/feature/keymaps.md b/docs/docs/feature/keymaps.md index a322336c..4e7c3ef3 100644 --- a/docs/docs/feature/keymaps.md +++ b/docs/docs/feature/keymaps.md @@ -68,7 +68,7 @@ In this case, the `A` is actually a define for the raw HID keycode, to make keym For example of a binding that uses two parameters, you can see how "mod-tap" (`mt`) is bound: ``` -&mt LSFT D +&mt LSHFT D ``` Here, the first parameter is the set of modifiers that should be used for the "hold" behavior, and the second @@ -92,7 +92,7 @@ The top two lines of most keymaps should include: The first defines the nodes for all the available behaviors in ZMK, which will be referenced in the behavior bindings. This is how bindings like `&kp` can reference the key press behavior defined with an anchor name of `kp`. -The second include brings in the defines for all the keycodes (e.g. `A`, `NUM_1`, `M_PLAY`) and the modifiers (e.g. `LSFT`) used for various behavior bindings. +The second include brings in the defines for all the keycodes (e.g. `A`, `N1`, `C_PLAY`) and the modifiers (e.g. `LSHFT`) used for various behavior bindings. ### Root devicetree Node @@ -134,14 +134,14 @@ that defines just one layer for this keymap: // | GUI | DEL | RET | SPACE | ESC | | RET | SPACE | TAB | BSPC | R-ALT | bindings = < &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH - &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT - &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp LSFT &kp LSFT &kp LSFT &kp LSFT &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RCTL - &kp LGUI &kp DEL &kp RET &kp SPC &kp ESC &kp RET &kp SPC &kp TAB &kp BKSP &kp RALT + &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; + sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; }; - }; + }; ``` Each layer should have: @@ -171,12 +171,12 @@ Putting this all together, a complete [`kyria.keymap`](https://github.com/zmkfir // | GUI | DEL | RET | SPACE | ESC | | RET | SPACE | TAB | BSPC | R-ALT | bindings = < &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH - &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT - &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp LSFT &kp LSFT &kp LSFT &kp LSFT &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RCTL - &kp LGUI &kp DEL &kp RET &kp SPC &kp ESC &kp RET &kp SPC &kp TAB &kp BKSP &kp RALT + &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; + sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; }; }; }; diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index 9b340c38..c45cfcce 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -59,9 +59,9 @@ After opening the `.dts.pre.tmp:` and scrolling down to the | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | An incorrectly defined keymap unable to compile. As shown in red, `&kp SPAC` is not a valid reference to the [USB HID Usage ID](https://www.usb.org/document-library/hid-usage-tables-12) used for "Keyboard Spacebar" | -| ![Healthy Keymap Temp](../docs/assets/troubleshooting/keymaps/healthyEDIT.png) | -| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| A properly defined keymap with successful compilation. As shown in red, the corrected keycode (`&kp SPC`) references the proper Usage ID defined in the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12) | +| ![Healthy Keymap Temp](../docs/assets/troubleshooting/keymaps/healthyEDIT.png) | +| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| A properly defined keymap with successful compilation. As shown in red, the corrected keycode (`&kp SPACE`) references the proper Usage ID defined in the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12) | ### Split Keyboard Halves Unable to Pair From 651204c121254e5927e300eedf3251ad4bd9103b Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sun, 25 Oct 2020 08:49:33 +0000 Subject: [PATCH 330/353] docs: Reformat example keymaps Align to wider columns to improve readability for newcomers. --- docs/docs/behavior/layers.md | 20 ++++++++--------- docs/docs/dev-guide-new-shield.md | 18 ++++++++-------- docs/docs/feature/keymaps.md | 36 +++++++++++++++---------------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/docs/docs/behavior/layers.md b/docs/docs/behavior/layers.md index ba9d4b49..fcfdc93a 100644 --- a/docs/docs/behavior/layers.md +++ b/docs/docs/behavior/layers.md @@ -86,21 +86,21 @@ Example: default_layer { bindings = < - &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS - &kp NUMBER_7 &kp NUMBER_8 &kp NUMBER_9 &kp KP_PLUS - &kp NUMBER_4 &kp NUMBER_5 &kp NUMBER_6 &kp KP_PLUS - &kp NUMBER_1 &kp NUMBER_2 &kp NUMBER_3 &kp RETURN - &kp NUMBER_0 &kp NUMBER_0 &kp DOT &kp RETURN + &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS + &kp NUMBER_7 &kp NUMBER_8 &kp NUMBER_9 &kp KP_PLUS + &kp NUMBER_4 &kp NUMBER_5 &kp NUMBER_6 &kp KP_PLUS + &kp NUMBER_1 &kp NUMBER_2 &kp NUMBER_3 &kp RETURN + &kp NUMBER_0 &kp NUMBER_0 &kp DOT &kp RETURN >; }; nav_layer { bindings = < - &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS - &kp HOME &kp UP &kp PAGE_UP &kp KP_PLUS - &kp LEFT &none &kp RIGHT &kp KP_PLUS - &kp END &kp DOWN &kp PAGE_DOWN &kp RETURN - &kp INSERT &kp INSERT &kp DEL &kp RETURN + &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS + &kp HOME &kp UP &kp PAGE_UP &kp KP_PLUS + &kp LEFT &none &kp RIGHT &kp KP_PLUS + &kp END &kp DOWN &kp PAGE_DOWN &kp RETURN + &kp INSERT &kp INSERT &kp DEL &kp RETURN >; }; }; diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 05548799..9ad117c4 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -365,16 +365,16 @@ Here is an example simple keymap for the Kyria, with only one layer: compatible = "zmk,keymap"; default_layer { -// --------------------------------------------------------------------------------------------------------------------------------- -// | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | -// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | -// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | CTRL | -// | GUI | DEL | RET | SPACE | ESC | | RET | SPACE | TAB | BSPC | R-ALT | +// -------------------------------------------------------------------------------------------------------------------------------------------------------------------- +// | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | +// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | +// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | R CTRL | +// | GUI | DEL | RETURN | SPACE | ESCAPE | | RETURN | SPACE | TAB | BSPC | R ALT | bindings = < - &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH - &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE - &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL - &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT + &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH + &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; diff --git a/docs/docs/feature/keymaps.md b/docs/docs/feature/keymaps.md index 4e7c3ef3..9c5a0647 100644 --- a/docs/docs/feature/keymaps.md +++ b/docs/docs/feature/keymaps.md @@ -127,16 +127,16 @@ that defines just one layer for this keymap: compatible = "zmk,keymap"; default_layer { -// --------------------------------------------------------------------------------------------------------------------------------- -// | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | -// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | -// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | CTRL | -// | GUI | DEL | RET | SPACE | ESC | | RET | SPACE | TAB | BSPC | R-ALT | +// -------------------------------------------------------------------------------------------------------------------------------------------------------------------- +// | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | +// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | +// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | R CTRL | +// | GUI | DEL | RETURN | SPACE | ESCAPE | | RETURN | SPACE | TAB | BSPC | R ALT | bindings = < - &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH - &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE - &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL - &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT + &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH + &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; @@ -164,16 +164,16 @@ Putting this all together, a complete [`kyria.keymap`](https://github.com/zmkfir compatible = "zmk,keymap"; default_layer { -// --------------------------------------------------------------------------------------------------------------------------------- -// | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | -// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | -// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | CTRL | -// | GUI | DEL | RET | SPACE | ESC | | RET | SPACE | TAB | BSPC | R-ALT | +// -------------------------------------------------------------------------------------------------------------------------------------------------------------------- +// | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | +// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | +// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | R CTRL | +// | GUI | DEL | RETURN | SPACE | ESCAPE | | RETURN | SPACE | TAB | BSPC | R ALT | bindings = < - &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH - &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE - &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL - &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT + &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH + &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; From c6abdb1890501a19cf9ef859639fec2839d820f0 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Wed, 4 Nov 2020 18:50:41 +0000 Subject: [PATCH 331/353] fix(keys): Replace GUI with Application / Context Menu This was a misrepresentation in the standardized keys that originated in earlier code. --- app/include/dt-bindings/zmk/keys.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index cce3c244..8ce1145e 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -493,12 +493,12 @@ /* Keyboard Pipe */ #define PIPE2 (LS(HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE)) -/* Keyboard GUI (Windows / Command / Meta) */ -#define GUI (HID_USAGE_KEY_KEYBOARD_APPLICATION) -#define WIN (GUI) -#define COMMAND (GUI) -#define CMD (GUI) -#define META (GUI) +/* Keyboard Application (Context Menu) */ +#define K_APPLICATION (HID_USAGE_KEY_KEYBOARD_APPLICATION) +#define K_APP (K_APPLICATION) +#define K_CONTEXT_MENU (K_APPLICATION) +#define K_CMENU (K_APPLICATION) +#define GUI (K_APPLICATION) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Power */ #define K_POWER (HID_USAGE_KEY_KEYBOARD_POWER) From 5f83568a93bbbf07bed6e710ba8c44e45b955ec5 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Thu, 5 Nov 2020 14:34:04 +0000 Subject: [PATCH 332/353] docs(key press): Replace deprecated `NUM_1` with `N1` This should've been changed in: b8f6d52ae521993c736bdbeaa9cbf63a4de37a5e --- docs/docs/behavior/key-press.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/behavior/key-press.md b/docs/docs/behavior/key-press.md index 7eb245dc..56b6a493 100644 --- a/docs/docs/behavior/key-press.md +++ b/docs/docs/behavior/key-press.md @@ -20,7 +20,7 @@ provided by ZMK near the top: #include ``` -Doing so makes a set of defines such as `A`, `NUM_1`, etc. available for use with these behaviors +Doing so makes a set of defines such as `A`, `N1`, etc. available for use with these behaviors :::note There is an [open issue](https://github.com/zmkfirmware/zmk/issues/21) to provide a more comprehensive, and From eff1b8223b5010d526914530c5d1d469eff356df Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 26 Oct 2020 00:30:24 -0400 Subject: [PATCH 333/353] refactor(keys): Unify usage page. * Remove need for separate `&cp` behavior, but keep it for now for backward compat. * Refactor sensor inc/dec as well. --- app/dts/behaviors/key_press.dtsi | 11 +- .../behaviors/sensor_rotate_key_press.dtsi | 11 +- .../behaviors/zmk,behavior-key-press.yaml | 5 - .../zmk,behavior-sensor-rotate-key-press.yaml | 3 - app/include/dt-bindings/zmk/hid_usage_pages.h | 4 + app/include/dt-bindings/zmk/keys.h | 788 +++++++++--------- .../zmk/events/keycode-state-changed.h | 22 +- app/src/behaviors/behavior_hold_tap.c | 4 +- app/src/behaviors/behavior_key_press.c | 28 +- .../behavior_sensor_rotate_key_press.c | 35 +- app/src/hid.c | 9 +- app/tests/keypress/behavior_keymap.dtsi | 2 +- .../momentary-layer/behavior_keymap.dtsi | 2 +- app/tests/toggle-layer/behavior_keymap.dtsi | 2 +- docs/docs/behavior/hold-tap.md | 2 +- docs/docs/behavior/key-press.md | 19 - docs/docs/dev-guide-new-shield.md | 9 +- docs/docs/feature/encoders.md | 4 +- docs/docs/feature/keymaps.md | 4 +- docs/docs/intro.md | 2 +- 20 files changed, 474 insertions(+), 492 deletions(-) diff --git a/app/dts/behaviors/key_press.dtsi b/app/dts/behaviors/key_press.dtsi index a9e8d8b5..77050aaa 100644 --- a/app/dts/behaviors/key_press.dtsi +++ b/app/dts/behaviors/key_press.dtsi @@ -3,17 +3,10 @@ / { behaviors { - kp: behavior_key_press { + /* DEPRECATED: `cp` will be removed in the future */ + cp: kp: behavior_key_press { compatible = "zmk,behavior-key-press"; label = "KEY_PRESS"; - usage_page = ; - #binding-cells = <1>; - }; - - cp: behavior_consumer_press { - compatible = "zmk,behavior-key-press"; - label = "CONSUMER_PRESS"; - usage_page = ; #binding-cells = <1>; }; }; diff --git a/app/dts/behaviors/sensor_rotate_key_press.dtsi b/app/dts/behaviors/sensor_rotate_key_press.dtsi index fa410f19..54339945 100644 --- a/app/dts/behaviors/sensor_rotate_key_press.dtsi +++ b/app/dts/behaviors/sensor_rotate_key_press.dtsi @@ -3,17 +3,10 @@ / { behaviors { - inc_dec_kp: behavior_sensor_rotate_key_press { + /* DEPRECATED: `inc_dec_cp` will be removed in the future */ + inc_dec_cp: inc_dec_kp: behavior_sensor_rotate_key_press { compatible = "zmk,behavior-sensor-rotate-key-press"; label = "ENC_KEY_PRESS"; - usage_page = ; - #sensor-binding-cells = <2>; - }; - - inc_dec_cp: behavior_sensor_rotate_consumer_press { - compatible = "zmk,behavior-sensor-rotate-key-press"; - label = "ENC_CONSUMER_PRESS"; - usage_page = ; #sensor-binding-cells = <2>; }; }; diff --git a/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml b/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml index 7ec5494c..0169d7d5 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml @@ -6,8 +6,3 @@ description: Key press/release behavior compatible: "zmk,behavior-key-press" include: one_param.yaml - -properties: - usage_page: - type: int - default: 0 diff --git a/app/dts/bindings/behaviors/zmk,behavior-sensor-rotate-key-press.yaml b/app/dts/bindings/behaviors/zmk,behavior-sensor-rotate-key-press.yaml index 6b339107..b34507f7 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-sensor-rotate-key-press.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-sensor-rotate-key-press.yaml @@ -13,9 +13,6 @@ properties: type: int required: true const: 2 - usage_page: - type: int - default: 0 sensor-binding-cells: - param1 diff --git a/app/include/dt-bindings/zmk/hid_usage_pages.h b/app/include/dt-bindings/zmk/hid_usage_pages.h index 701a100c..5b3cb556 100644 --- a/app/include/dt-bindings/zmk/hid_usage_pages.h +++ b/app/include/dt-bindings/zmk/hid_usage_pages.h @@ -10,6 +10,10 @@ #pragma once +#define HID_EXT_USAGE(page, id) ((page << 16) | id) +#define HID_EXT_USAGE_ID(ext) (ext & 0xFFFF) +#define HID_EXT_USAGE_PAGE(ext) (ext >> 16) + /* WARNING: DEPRECATED from dt-bindings/zmk/keys.h */ #define USAGE_KEYPAD (0x07) // WARNING: DEPRECATED (DO NOT USE) #define USAGE_CONSUMER (0x0C) // WARNING: DEPRECATED (DO NOT USE) diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index 8ce1145e..1bb43b91 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -6,768 +6,780 @@ #pragma once #include +#include #include /* System Power Down */ -#define SYSTEM_POWER (HID_USAGE_GD_SYSTEM_POWER_DOWN) +#define SYSTEM_POWER (HID_EXT_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_POWER_DOWN)) #define SYS_PWR (SYSTEM_POWER) /* System Sleep */ -#define SYSTEM_SLEEP (HID_USAGE_GD_SYSTEM_SLEEP) +#define SYSTEM_SLEEP (HID_EXT_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_SLEEP)) #define SYS_SLEEP (SYSTEM_SLEEP) /* System Wake Up */ -#define SYSTEM_WAKE_UP (HID_USAGE_GD_SYSTEM_WAKE_UP) +#define SYSTEM_WAKE_UP (HID_EXT_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_WAKE_UP)) #define SYS_WAKE (SYSTEM_WAKE_UP) /* Keyboard a and A */ -#define A (HID_USAGE_KEY_KEYBOARD_A) +#define A (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_A)) /* Keyboard b and B */ -#define B (HID_USAGE_KEY_KEYBOARD_B) +#define B (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_B)) /* Keyboard c and C */ -#define C (HID_USAGE_KEY_KEYBOARD_C) +#define C (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_C)) /* Keyboard d and D */ -#define D (HID_USAGE_KEY_KEYBOARD_D) +#define D (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_D)) /* Keyboard e and E */ -#define E (HID_USAGE_KEY_KEYBOARD_E) +#define E (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_E)) /* Keyboard f and F */ -#define F (HID_USAGE_KEY_KEYBOARD_F) +#define F (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F)) /* Keyboard g and G */ -#define G (HID_USAGE_KEY_KEYBOARD_G) +#define G (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_G)) /* Keyboard h and H */ -#define H (HID_USAGE_KEY_KEYBOARD_H) +#define H (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_H)) /* Keyboard i and I */ -#define I (HID_USAGE_KEY_KEYBOARD_I) +#define I (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_I)) /* Keyboard j and J */ -#define J (HID_USAGE_KEY_KEYBOARD_J) +#define J (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_J)) /* Keyboard k and K */ -#define K (HID_USAGE_KEY_KEYBOARD_K) +#define K (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_K)) /* Keyboard l and L */ -#define L (HID_USAGE_KEY_KEYBOARD_L) +#define L (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_L)) /* Keyboard m and M */ -#define M (HID_USAGE_KEY_KEYBOARD_M) +#define M (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_M)) /* Keyboard n and N */ -#define N (HID_USAGE_KEY_KEYBOARD_N) +#define N (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_N)) /* Keyboard o and O */ -#define O (HID_USAGE_KEY_KEYBOARD_O) +#define O (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_O)) /* Keyboard p and P */ -#define P (HID_USAGE_KEY_KEYBOARD_P) +#define P (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_P)) /* Keyboard q and Q */ -#define Q (HID_USAGE_KEY_KEYBOARD_Q) +#define Q (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Q)) /* Keyboard r and R */ -#define R (HID_USAGE_KEY_KEYBOARD_R) +#define R (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_R)) /* Keyboard s and S */ -#define S (HID_USAGE_KEY_KEYBOARD_S) +#define S (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_S)) /* Keyboard t and T */ -#define T (HID_USAGE_KEY_KEYBOARD_T) +#define T (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_T)) /* Keyboard u and U */ -#define U (HID_USAGE_KEY_KEYBOARD_U) +#define U (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_U)) /* Keyboard v and V */ -#define V (HID_USAGE_KEY_KEYBOARD_V) +#define V (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_V)) /* Keyboard w and W */ -#define W (HID_USAGE_KEY_KEYBOARD_W) +#define W (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_W)) /* Keyboard x and X */ -#define X (HID_USAGE_KEY_KEYBOARD_X) +#define X (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_X)) /* Keyboard y and Y */ -#define Y (HID_USAGE_KEY_KEYBOARD_Y) +#define Y (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Y)) /* Keyboard z and Z */ -#define Z (HID_USAGE_KEY_KEYBOARD_Z) +#define Z (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Z)) /* Keyboard 1 and ! (Exclamation) */ -#define NUMBER_1 (HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION) +#define NUMBER_1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION)) #define N1 (NUMBER_1) #define NUM_1 (NUMBER_1) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ! (Exclamation) */ -#define EXCLAMATION (LS(HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION)) +#define EXCLAMATION (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION))) #define EXCL (EXCLAMATION) #define BANG (EXCLAMATION) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 2 and @ (At sign) */ -#define NUMBER_2 (HID_USAGE_KEY_KEYBOARD_2_AND_AT) +#define NUMBER_2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_2_AND_AT)) #define N2 (NUMBER_2) #define NUM_2 (NUMBER_2) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard @ (At sign) */ -#define AT_SIGN (LS(HID_USAGE_KEY_KEYBOARD_2_AND_AT)) +#define AT_SIGN (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_2_AND_AT))) #define AT (AT_SIGN) #define ATSN (AT_SIGN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 3 and # (Hash/Number) */ -#define NUMBER_3 (HID_USAGE_KEY_KEYBOARD_3_AND_HASH) +#define NUMBER_3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_3_AND_HASH)) #define N3 (NUMBER_3) #define NUM_3 (NUMBER_3) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard # (Hash/Number) */ -#define HASH (LS(HID_USAGE_KEY_KEYBOARD_3_AND_HASH)) +#define HASH (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_3_AND_HASH))) #define POUND (HASH) /* Keyboard 4 and $ (Dollar) */ -#define NUMBER_4 (HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR) +#define NUMBER_4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR)) #define N4 (NUMBER_4) #define NUM_4 (NUMBER_4) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard $ (Dollar) */ -#define DOLLAR (LS(HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR)) +#define DOLLAR (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR))) #define DLLR (DOLLAR) /* Keyboard 5 and % (Percent) */ -#define NUMBER_5 (HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT) +#define NUMBER_5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT)) #define N5 (NUMBER_5) #define NUM_5 (NUMBER_5) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard % (Percent) */ -#define PERCENT (LS(HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT)) +#define PERCENT (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT))) #define PRCNT (PERCENT) #define PRCT (PERCENT) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 6 and ^ (Caret) */ -#define NUMBER_6 (HID_USAGE_KEY_KEYBOARD_6_AND_CARET) +#define NUMBER_6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_6_AND_CARET)) #define N6 (NUMBER_6) #define NUM_6 (NUMBER_6) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ^ (Caret) */ -#define CARET (LS(HID_USAGE_KEY_KEYBOARD_6_AND_CARET)) +#define CARET (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_6_AND_CARET))) #define CRRT (CARET) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 7 and & (Ampersand) */ -#define NUMBER_7 (HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND) +#define NUMBER_7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND)) #define N7 (NUMBER_7) #define NUM_7 (NUMBER_7) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard & (Ampersand) */ -#define AMPERSAND (LS(HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND)) +#define AMPERSAND (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND))) #define AMPS (AMPERSAND) /* Keyboard 8 and * (Asterisk) */ -#define NUMBER_8 (HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK) +#define NUMBER_8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK)) #define N8 (NUMBER_8) #define NUM_8 (NUMBER_8) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard * (Asterisk) */ -#define ASTERISK (LS(HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK)) +#define ASTERISK (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK))) #define ASTRK (ASTERISK) #define STAR (ASTERISK) /* Keyboard 9 and ( (Left Parenthesis) */ -#define NUMBER_9 (HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS) +#define NUMBER_9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS)) #define N9 (NUMBER_9) #define NUM_9 (NUMBER_9) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ( (Left Parenthesis) */ -#define LEFT_PARENTHESIS (LS(HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS)) +#define LEFT_PARENTHESIS \ + (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS))) #define LPAR (LEFT_PARENTHESIS) #define LPRN (LEFT_PARENTHESIS) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 0 and ) (Right Parenthesis) */ -#define NUMBER_0 (HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS) +#define NUMBER_0 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS)) #define N0 (NUMBER_0) #define NUM_0 (NUMBER_0) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ) (Right Parenthesis) */ -#define RIGHT_PARENTHESIS (LS(HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS)) +#define RIGHT_PARENTHESIS \ + (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS))) #define RPAR (RIGHT_PARENTHESIS) #define RPRN (RIGHT_PARENTHESIS) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Return (Enter) */ -#define RETURN (HID_USAGE_KEY_KEYBOARD_RETURN_ENTER) +#define RETURN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RETURN_ENTER)) #define ENTER (RETURN) #define RET (RETURN) /* Keyboard Escape */ -#define ESCAPE (HID_USAGE_KEY_KEYBOARD_ESCAPE) +#define ESCAPE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_ESCAPE)) #define ESC (ESCAPE) /* Keyboard Backspace */ -#define BACKSPACE (HID_USAGE_KEY_KEYBOARD_DELETE_BACKSPACE) +#define BACKSPACE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DELETE_BACKSPACE)) #define BSPC (BACKSPACE) #define BKSP (BACKSPACE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Tab */ -#define TAB (HID_USAGE_KEY_KEYBOARD_TAB) +#define TAB (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_TAB)) /* Keyboard Space */ -#define SPACE (HID_USAGE_KEY_KEYBOARD_SPACEBAR) +#define SPACE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SPACEBAR)) #define SPC (SPACE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard - and _ (Minus and Underscore) */ -#define MINUS (HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE) +#define MINUS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE)) /* Keyboard _ (Underscore) */ -#define UNDERSCORE (LS(HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE)) +#define UNDERSCORE (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE))) #define UNDER (UNDERSCORE) /* Keyboard = and + (Equal and Plus) */ -#define EQUAL (HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS) +#define EQUAL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS)) #define EQL (EQUAL) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard + (Plus) */ -#define PLUS (LS(HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS)) +#define PLUS (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS))) /* Keyboard [ and { (Left Bracket and Left Brace) */ -#define LEFT_BRACKET (HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE) +#define LEFT_BRACKET \ + (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE)) #define LBKT (LEFT_BRACKET) /* Keyboard { (Left Brace) */ -#define LEFT_BRACE (LS(HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE)) +#define LEFT_BRACE \ + (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE))) #define LBRC (LEFT_BRACE) #define LCUR (LEFT_BRACE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ] and } (Right Bracket and Right Brace) */ -#define RIGHT_BRACKET (HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE) +#define RIGHT_BRACKET \ + (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE)) #define RBKT (RIGHT_BRACKET) /* Keyboard } (Right Brace) */ -#define RIGHT_BRACE (LS(HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE)) +#define RIGHT_BRACE \ + (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE))) #define RBRC (RIGHT_BRACE) #define RCUR (RIGHT_BRACE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard \ and | (Backslash and Pipe) */ -#define BACKSLASH (HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE) +#define BACKSLASH (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE)) #define BSLH (BACKSLASH) /* Keyboard | (Pipe) */ -#define PIPE (LS(HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE)) +#define PIPE (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE))) /* Keyboard Non-US # and ~ (Non-US Hash/Number and Tilde) */ -#define NON_US_HASH (HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE) +#define NON_US_HASH (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE)) /* Keyboard ~ (Tilde) */ -#define TILDE2 (LS(HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE)) +#define TILDE2 (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE))) /* Keyboard ; and : (Semicolon and Colon) */ -#define SEMICOLON (HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON) +#define SEMICOLON (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON)) #define SEMI (SEMICOLON) #define SCLN (SEMICOLON) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard : (Colon) */ -#define COLON (LS(HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON)) +#define COLON (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON))) #define COLN (COLON) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ' and " (Apostrophe and Quote) */ -#define SINGLE_QUOTE (HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE) +#define SINGLE_QUOTE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE)) #define SQT (SINGLE_QUOTE) #define APOSTROPHE (SINGLE_QUOTE) #define APOS (SINGLE_QUOTE) #define QUOT (SINGLE_QUOTE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard " (Quote) */ -#define DOUBLE_QUOTES (LS(HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE)) +#define DOUBLE_QUOTES \ + (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE))) #define DQT (DOUBLE_QUOTES) /* Keyboard ` and ~ (Grave Accent and Tilde) */ -#define GRAVE (HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE) +#define GRAVE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE)) #define GRAV (GRAVE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ~ (Tilde) */ -#define TILDE (LS(HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE)) +#define TILDE (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE))) #define TILD (TILDE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard , and < (Comma and Less Than) */ -#define COMMA (HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN) +#define COMMA (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN)) #define CMMA (COMMA) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard < (Less Than) */ -#define LESS_THAN (LS(HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN)) +#define LESS_THAN (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN))) #define LT (LESS_THAN) #define LABT (LESS_THAN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard . and > (Period and Greater Than) */ -#define PERIOD (HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN) +#define PERIOD (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN)) #define DOT (PERIOD) /* Keyboard > (Greater Than) */ -#define GREATER_THAN (LS(HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN)) +#define GREATER_THAN \ + (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN))) #define GT (GREATER_THAN) #define RABT (GREATER_THAN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard / and ? (Forward Slash and Question) */ -#define SLASH (HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK) +#define SLASH (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK)) #define FSLH (SLASH) /* Keyboard ? (Question) */ -#define QUESTION (LS(HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK)) +#define QUESTION (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK))) #define QMARK (QUESTION) /* Keyboard Caps Lock */ -#define CAPSLOCK (HID_USAGE_KEY_KEYBOARD_CAPS_LOCK) +#define CAPSLOCK (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CAPS_LOCK)) #define CAPS (CAPSLOCK) #define CLCK (CAPSLOCK) /* Keyboard F1 */ -#define F1 (HID_USAGE_KEY_KEYBOARD_F1) +#define F1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F1)) /* Keyboard F2 */ -#define F2 (HID_USAGE_KEY_KEYBOARD_F2) +#define F2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F2)) /* Keyboard F3 */ -#define F3 (HID_USAGE_KEY_KEYBOARD_F3) +#define F3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F3)) /* Keyboard F4 */ -#define F4 (HID_USAGE_KEY_KEYBOARD_F4) +#define F4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F4)) /* Keyboard F5 */ -#define F5 (HID_USAGE_KEY_KEYBOARD_F5) +#define F5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F5)) /* Keyboard F6 */ -#define F6 (HID_USAGE_KEY_KEYBOARD_F6) +#define F6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F6)) /* Keyboard F7 */ -#define F7 (HID_USAGE_KEY_KEYBOARD_F7) +#define F7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F7)) /* Keyboard F8 */ -#define F8 (HID_USAGE_KEY_KEYBOARD_F8) +#define F8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F8)) /* Keyboard F9 */ -#define F9 (HID_USAGE_KEY_KEYBOARD_F9) +#define F9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F9)) /* Keyboard F10 */ -#define F10 (HID_USAGE_KEY_KEYBOARD_F10) +#define F10 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F10)) /* Keyboard F11 */ -#define F11 (HID_USAGE_KEY_KEYBOARD_F11) +#define F11 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F11)) /* Keyboard F12 */ -#define F12 (HID_USAGE_KEY_KEYBOARD_F12) +#define F12 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F12)) /* Keyboard Print Screen */ -#define PRINTSCREEN (HID_USAGE_KEY_KEYBOARD_PRINTSCREEN) +#define PRINTSCREEN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PRINTSCREEN)) #define PSCRN (PRINTSCREEN) #define PRSC (PRINTSCREEN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Scroll Lock */ -#define SCROLLLOCK (HID_USAGE_KEY_KEYBOARD_SCROLL_LOCK) +#define SCROLLLOCK (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SCROLL_LOCK)) #define SLCK (SCROLLLOCK) #define SCLK (SCROLLLOCK) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Pause/Break */ -#define PAUSE_BREAK (HID_USAGE_KEY_KEYBOARD_PAUSE) +#define PAUSE_BREAK (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAUSE)) #define PAUS (PAUSE_BREAK) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Insert */ -#define INSERT (HID_USAGE_KEY_KEYBOARD_INSERT) +#define INSERT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INSERT)) #define INS (INSERT) /* Keyboard Home */ -#define HOME (HID_USAGE_KEY_KEYBOARD_HOME) +#define HOME (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_HOME)) /* Keyboard Page Up */ -#define PAGE_UP (HID_USAGE_KEY_KEYBOARD_PAGEUP) +#define PAGE_UP (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAGEUP)) #define PG_UP (PAGE_UP) #define PGUP (PAGE_UP) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Delete */ -#define DELETE (HID_USAGE_KEY_KEYBOARD_DELETE_FORWARD) +#define DELETE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DELETE_FORWARD)) #define DEL (DELETE) /* Keyboard End */ -#define END (HID_USAGE_KEY_KEYBOARD_END) +#define END (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_END)) /* Keyboard Page Down */ -#define PAGE_DOWN (HID_USAGE_KEY_KEYBOARD_PAGEDOWN) +#define PAGE_DOWN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAGEDOWN)) #define PG_DN (PAGE_DOWN) #define PGDN (PAGE_DOWN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Right Arrow */ -#define RIGHT_ARROW (HID_USAGE_KEY_KEYBOARD_RIGHTARROW) +#define RIGHT_ARROW (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTARROW)) #define RIGHT (RIGHT_ARROW) #define RARW (RIGHT_ARROW) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Left Arrow */ -#define LEFT_ARROW (HID_USAGE_KEY_KEYBOARD_LEFTARROW) +#define LEFT_ARROW (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTARROW)) #define LEFT (LEFT_ARROW) #define LARW (LEFT_ARROW) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Down Arrow */ -#define DOWN_ARROW (HID_USAGE_KEY_KEYBOARD_DOWNARROW) +#define DOWN_ARROW (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DOWNARROW)) #define DOWN (DOWN_ARROW) #define DARW (DOWN_ARROW) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Up Arrow */ -#define UP_ARROW (HID_USAGE_KEY_KEYBOARD_UPARROW) +#define UP_ARROW (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_UPARROW)) #define UP (UP_ARROW) #define UARW (UP_ARROW) // WARNING: DEPRECATED (DO NOT USE) /* Keypad Numlock and Clear */ -#define KP_NUMLOCK (HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR) +#define KP_NUMLOCK (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR)) #define KP_NUM (KP_NUMLOCK) #define KP_NLCK (KP_NUMLOCK) /* Keypad Clear */ -#define CLEAR2 (LS(HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR)) +#define CLEAR2 (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR))) /* Keypad / (Slash/Divide) */ -#define KP_DIVIDE (HID_USAGE_KEY_KEYPAD_SLASH) +#define KP_DIVIDE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_SLASH)) #define KP_SLASH (KP_DIVIDE) #define KDIV (KP_DIVIDE) // WARNING: DEPRECATED (DO NOT USE) /* Keypad * (Multiply) */ -#define KP_MULTIPLY (HID_USAGE_KEY_KEYPAD_ASTERISK) +#define KP_MULTIPLY (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_ASTERISK)) #define KP_ASTERISK (KP_MULTIPLY) #define KMLT (KP_MULTIPLY) // WARNING: DEPRECATED (DO NOT USE) /* Keypad - (Minus) */ -#define KP_MINUS (HID_USAGE_KEY_KEYPAD_MINUS) +#define KP_MINUS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_MINUS)) #define KP_SUBTRACT (KP_MINUS) #define KMIN (KP_MINUS) // WARNING: DEPRECATED (DO NOT USE) /* Keypad + (Plus) */ -#define KP_PLUS (HID_USAGE_KEY_KEYPAD_PLUS) +#define KP_PLUS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_PLUS)) #define KPLS (KP_PLUS) // WARNING: DEPRECATED (DO NOT USE) /* Keypad Enter */ -#define KP_ENTER (HID_USAGE_KEY_KEYPAD_ENTER) +#define KP_ENTER (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_ENTER)) /* Keypad 1 */ -#define KP_NUMBER_1 (HID_USAGE_KEY_KEYPAD_1_AND_END) +#define KP_NUMBER_1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_1_AND_END)) #define KP_N1 (KP_NUMBER_1) /* Keypad 2 */ -#define KP_NUMBER_2 (HID_USAGE_KEY_KEYPAD_2_AND_DOWN_ARROW) +#define KP_NUMBER_2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_2_AND_DOWN_ARROW)) #define KP_N2 (KP_NUMBER_2) /* Keypad 3 */ -#define KP_NUMBER_3 (HID_USAGE_KEY_KEYPAD_3_AND_PAGEDN) +#define KP_NUMBER_3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_3_AND_PAGEDN)) #define KP_N3 (KP_NUMBER_3) /* Keypad 4 */ -#define KP_NUMBER_4 (HID_USAGE_KEY_KEYPAD_4_AND_LEFT_ARROW) +#define KP_NUMBER_4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_4_AND_LEFT_ARROW)) #define KP_N4 (KP_NUMBER_4) /* Keypad 5 */ -#define KP_NUMBER_5 (HID_USAGE_KEY_KEYPAD_5) +#define KP_NUMBER_5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_5)) #define KP_N5 (KP_NUMBER_5) /* Keypad 6 */ -#define KP_NUMBER_6 (HID_USAGE_KEY_KEYPAD_6_AND_RIGHT_ARROW) +#define KP_NUMBER_6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_6_AND_RIGHT_ARROW)) #define KP_N6 (KP_NUMBER_6) /* Keypad 7 */ -#define KP_NUMBER_7 (HID_USAGE_KEY_KEYPAD_7_AND_HOME) +#define KP_NUMBER_7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_7_AND_HOME)) #define KP_N7 (KP_NUMBER_7) /* Keypad 8 */ -#define KP_NUMBER_8 (HID_USAGE_KEY_KEYPAD_8_AND_UP_ARROW) +#define KP_NUMBER_8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_8_AND_UP_ARROW)) #define KP_N8 (KP_NUMBER_8) /* Keypad 9 */ -#define KP_NUMBER_9 (HID_USAGE_KEY_KEYPAD_9_AND_PAGEUP) +#define KP_NUMBER_9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_9_AND_PAGEUP)) #define KP_N9 (KP_NUMBER_9) /* Keypad 0 */ -#define KP_NUMBER_0 (HID_USAGE_KEY_KEYPAD_0_AND_INSERT) +#define KP_NUMBER_0 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_0_AND_INSERT)) #define KP_N0 (KP_NUMBER_0) /* Keypad . (Dot) */ -#define KP_DOT (HID_USAGE_KEY_KEYPAD_PERIOD_AND_DELETE) +#define KP_DOT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_PERIOD_AND_DELETE)) /* Keyboard Non-US \ and | (Non-us Backslash and Pipe) */ -#define NON_US_BACKSLASH (HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE) +#define NON_US_BACKSLASH \ + (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE)) #define NON_US_BSLH (NON_US_BACKSLASH) /* Keyboard Pipe */ -#define PIPE2 (LS(HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE)) +#define PIPE2 (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE))) /* Keyboard Application (Context Menu) */ -#define K_APPLICATION (HID_USAGE_KEY_KEYBOARD_APPLICATION) +#define K_APPLICATION (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APPLICATION)) #define K_APP (K_APPLICATION) #define K_CONTEXT_MENU (K_APPLICATION) #define K_CMENU (K_APPLICATION) #define GUI (K_APPLICATION) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Power */ -#define K_POWER (HID_USAGE_KEY_KEYBOARD_POWER) +#define K_POWER (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_POWER)) #define K_PWR (K_POWER) /* Keypad = (Equal) */ -#define KP_EQUAL (HID_USAGE_KEY_KEYPAD_EQUAL) +#define KP_EQUAL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_EQUAL)) /* Keyboard F13 */ -#define F13 (HID_USAGE_KEY_KEYBOARD_F13) +#define F13 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F13)) /* Keyboard F14 */ -#define F14 (HID_USAGE_KEY_KEYBOARD_F14) +#define F14 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F14)) /* Keyboard F15 */ -#define F15 (HID_USAGE_KEY_KEYBOARD_F15) +#define F15 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F15)) /* Keyboard F16 */ -#define F16 (HID_USAGE_KEY_KEYBOARD_F16) +#define F16 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F16)) /* Keyboard F17 */ -#define F17 (HID_USAGE_KEY_KEYBOARD_F17) +#define F17 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F17)) /* Keyboard F18 */ -#define F18 (HID_USAGE_KEY_KEYBOARD_F18) +#define F18 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F18)) /* Keyboard F19 */ -#define F19 (HID_USAGE_KEY_KEYBOARD_F19) +#define F19 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F19)) /* Keyboard F20 */ -#define F20 (HID_USAGE_KEY_KEYBOARD_F20) +#define F20 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F20)) /* Keyboard F21 */ -#define F21 (HID_USAGE_KEY_KEYBOARD_F21) +#define F21 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F21)) /* Keyboard F22 */ -#define F22 (HID_USAGE_KEY_KEYBOARD_F22) +#define F22 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F22)) /* Keyboard F23 */ -#define F23 (HID_USAGE_KEY_KEYBOARD_F23) +#define F23 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F23)) /* Keyboard F24 */ -#define F24 (HID_USAGE_KEY_KEYBOARD_F24) +#define F24 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F24)) /* Keyboard Execute */ -#define K_EXECUTE (HID_USAGE_KEY_KEYBOARD_EXECUTE) +#define K_EXECUTE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EXECUTE)) #define K_EXEC (K_EXECUTE) /* Keyboard Help */ -#define K_HELP (HID_USAGE_KEY_KEYBOARD_HELP) +#define K_HELP (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_HELP)) /* Keyboard Menu */ -#define K_MENU (HID_USAGE_KEY_KEYBOARD_MENU) +#define K_MENU (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MENU)) /* Keyboard Select */ -#define K_SELECT (HID_USAGE_KEY_KEYBOARD_SELECT) +#define K_SELECT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SELECT)) /* Keyboard Stop */ -#define K_STOP (HID_USAGE_KEY_KEYBOARD_STOP) +#define K_STOP (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_STOP)) /* Keyboard Again */ -#define K_AGAIN (HID_USAGE_KEY_KEYBOARD_AGAIN) +#define K_AGAIN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_AGAIN)) #define K_REDO (K_AGAIN) /* Keyboard Undo */ -#define K_UNDO (HID_USAGE_KEY_KEYBOARD_UNDO) +#define K_UNDO (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_UNDO)) #define UNDO (K_UNDO) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Cut */ -#define K_CUT (HID_USAGE_KEY_KEYBOARD_CUT) +#define K_CUT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CUT)) #define CUT (K_CUT) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Copy */ -#define K_COPY (HID_USAGE_KEY_KEYBOARD_COPY) +#define K_COPY (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COPY)) #define COPY (K_COPY) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Paste */ -#define K_PASTE (HID_USAGE_KEY_KEYBOARD_PASTE) +#define K_PASTE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PASTE)) #define PSTE (K_PASTE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Find */ -#define K_FIND (HID_USAGE_KEY_KEYBOARD_FIND) +#define K_FIND (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_FIND)) /* Keyboard Mute */ -#define K_MUTE (HID_USAGE_KEY_KEYBOARD_MUTE) +#define K_MUTE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MUTE)) /* Keyboard Volume Up */ -#define K_VOLUME_UP (HID_USAGE_KEY_KEYBOARD_VOLUME_UP) +#define K_VOLUME_UP (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_VOLUME_UP)) #define K_VOL_UP (K_VOLUME_UP) #define VOLU (K_VOLUME_UP) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Volume Down */ -#define K_VOLUME_DOWN (HID_USAGE_KEY_KEYBOARD_VOLUME_DOWN) +#define K_VOLUME_DOWN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_VOLUME_DOWN)) #define K_VOL_DN (K_VOLUME_DOWN) #define VOLD (K_VOLUME_DOWN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Locking Caps Lock */ -#define LOCKING_CAPS (HID_USAGE_KEY_KEYBOARD_LOCKING_CAPS_LOCK) +#define LOCKING_CAPS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_CAPS_LOCK)) #define LCAPS (LOCKING_CAPS) /* Keyboard Locking Num Lock */ -#define LOCKING_NUM (HID_USAGE_KEY_KEYBOARD_LOCKING_NUM_LOCK) +#define LOCKING_NUM (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_NUM_LOCK)) #define LNLCK (LOCKING_NUM) /* Keyboard Locking Scroll Lock */ -#define LOCKING_SCROLL (HID_USAGE_KEY_KEYBOARD_LOCKING_SCROLL_LOCK) +#define LOCKING_SCROLL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_SCROLL_LOCK)) #define LSLCK (LOCKING_SCROLL) /* Keypad , (Comma) */ -#define KP_COMMA (HID_USAGE_KEY_KEYPAD_COMMA) +#define KP_COMMA (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_COMMA)) /* Keypad = (Equal) AS/400 */ -#define KP_EQUAL_AS400 (HID_USAGE_KEY_KEYPAD_EQUAL_SIGN) +#define KP_EQUAL_AS400 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_EQUAL_SIGN)) /* Keyboard International 1 */ -#define INTERNATIONAL_1 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL1) +#define INTERNATIONAL_1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL1)) #define INT1 (INTERNATIONAL_1) #define INT_RO (INTERNATIONAL_1) /* Keyboard International 2 */ -#define INTERNATIONAL_2 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL2) +#define INTERNATIONAL_2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL2)) #define INT2 (INTERNATIONAL_2) #define INT_KATAKANAHIRAGANA (INTERNATIONAL_2) #define INT_KANA (INTERNATIONAL_2) /* Keyboard International 3 */ -#define INTERNATIONAL_3 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL3) +#define INTERNATIONAL_3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL3)) #define INT3 (INTERNATIONAL_3) #define INT_YEN (INTERNATIONAL_3) /* Keyboard International 4 */ -#define INTERNATIONAL_4 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL4) +#define INTERNATIONAL_4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL4)) #define INT4 (INTERNATIONAL_4) #define INT_HENKAN (INTERNATIONAL_4) /* Keyboard International 5 */ -#define INTERNATIONAL_5 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL5) +#define INTERNATIONAL_5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL5)) #define INT5 (INTERNATIONAL_5) #define INT_MUHENKAN (INTERNATIONAL_5) /* Keyboard International 6 */ -#define INTERNATIONAL_6 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL6) +#define INTERNATIONAL_6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL6)) #define INT6 (INTERNATIONAL_6) #define INT_KPJPCOMMA (INTERNATIONAL_6) /* Keyboard International 7 */ -#define INTERNATIONAL_7 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL7) +#define INTERNATIONAL_7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL7)) #define INT7 (INTERNATIONAL_7) /* Keyboard International 8 */ -#define INTERNATIONAL_8 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL8) +#define INTERNATIONAL_8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL8)) #define INT8 (INTERNATIONAL_8) /* Keyboard International 9 */ -#define INTERNATIONAL_9 (HID_USAGE_KEY_KEYBOARD_INTERNATIONAL9) +#define INTERNATIONAL_9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL9)) #define INT9 (INTERNATIONAL_9) /* Keyboard Language 1 */ -#define LANGUAGE_1 (HID_USAGE_KEY_KEYBOARD_LANG1) +#define LANGUAGE_1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG1)) #define LANG1 (LANGUAGE_1) #define LANG_HANGEUL (LANGUAGE_1) /* Keyboard Language 2 */ -#define LANGUAGE_2 (HID_USAGE_KEY_KEYBOARD_LANG2) +#define LANGUAGE_2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG2)) #define LANG2 (LANGUAGE_2) #define LANG_HANJA (LANGUAGE_2) /* Keyboard Language 3 */ -#define LANGUAGE_3 (HID_USAGE_KEY_KEYBOARD_LANG3) +#define LANGUAGE_3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG3)) #define LANG3 (LANGUAGE_3) #define LANG_KATAKANA (LANGUAGE_3) /* Keyboard Language 4 */ -#define LANGUAGE_4 (HID_USAGE_KEY_KEYBOARD_LANG4) +#define LANGUAGE_4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG4)) #define LANG4 (LANGUAGE_4) #define LANG_HIRAGANA (LANGUAGE_4) /* Keyboard Language 5 */ -#define LANGUAGE_5 (HID_USAGE_KEY_KEYBOARD_LANG5) +#define LANGUAGE_5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG5)) #define LANG5 (LANGUAGE_5) #define LANG_ZENKAKUHANKAKU (LANGUAGE_5) /* Keyboard Language 6 */ -#define LANGUAGE_6 (HID_USAGE_KEY_KEYBOARD_LANG6) +#define LANGUAGE_6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG6)) #define LANG6 (LANGUAGE_6) /* Keyboard Language 7 */ -#define LANGUAGE_7 (HID_USAGE_KEY_KEYBOARD_LANG7) +#define LANGUAGE_7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG7)) #define LANG7 (LANGUAGE_7) /* Keyboard Language 8 */ -#define LANGUAGE_8 (HID_USAGE_KEY_KEYBOARD_LANG8) +#define LANGUAGE_8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG8)) #define LANG8 (LANGUAGE_8) /* Keyboard Language 9 */ -#define LANGUAGE_9 (HID_USAGE_KEY_KEYBOARD_LANG9) +#define LANGUAGE_9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG9)) #define LANG9 (LANGUAGE_9) /* Keyboard Alternate Erase */ -#define ALT_ERASE (HID_USAGE_KEY_KEYBOARD_ALTERNATE_ERASE) +#define ALT_ERASE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_ALTERNATE_ERASE)) /* Keyboard SysReq/Attention */ -#define SYSREQ (HID_USAGE_KEY_KEYBOARD_SYSREQ_ATTENTION) +#define SYSREQ (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SYSREQ_ATTENTION)) #define ATTENTION (SYSREQ) /* Keyboard Cancel */ -#define K_CANCEL (HID_USAGE_KEY_KEYBOARD_CANCEL) +#define K_CANCEL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CANCEL)) /* Keyboard Clear */ -#define CLEAR (HID_USAGE_KEY_KEYBOARD_CLEAR) +#define CLEAR (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CLEAR)) /* Keyboard Prior */ -#define PRIOR (HID_USAGE_KEY_KEYBOARD_PRIOR) +#define PRIOR (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PRIOR)) /* Keyboard Return */ -#define RETURN2 (HID_USAGE_KEY_KEYBOARD_RETURN) +#define RETURN2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RETURN)) #define RET2 (RETURN2) /* Keyboard Separator */ -#define SEPARATOR (HID_USAGE_KEY_KEYBOARD_SEPARATOR) +#define SEPARATOR (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEPARATOR)) /* Keyboard Out */ -#define OUT (HID_USAGE_KEY_KEYBOARD_OUT) +#define OUT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_OUT)) /* Keyboard Oper */ -#define OPER (HID_USAGE_KEY_KEYBOARD_OPER) +#define OPER (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_OPER)) /* Keyboard Clear/Again */ -#define CLEAR_AGAIN (HID_USAGE_KEY_KEYBOARD_CLEAR_AGAIN) +#define CLEAR_AGAIN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CLEAR_AGAIN)) /* Keyboard CrSel/Props */ -#define CRSEL (HID_USAGE_KEY_KEYBOARD_CRSEL_PROPS) +#define CRSEL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CRSEL_PROPS)) /* Keyboard ExSel */ -#define EXSEL (HID_USAGE_KEY_KEYBOARD_EXSEL) +#define EXSEL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EXSEL)) /* Keyboard Currency Unit */ -#define CURU (HID_USAGE_KEY_CURRENCY_UNIT) // WARNING: DEPRECATED (DO NOT USE) +#define CURU \ + (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_CURRENCY_UNIT)) // WARNING: DEPRECATED (DO NOT USE) /* Keypad ( (Left Parenthesis) */ -#define KP_LEFT_PARENTHESIS (HID_USAGE_KEY_KEYPAD_LEFT_PARENTHESIS) +#define KP_LEFT_PARENTHESIS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_LEFT_PARENTHESIS)) #define KP_LPAR (KP_LEFT_PARENTHESIS) /* Keypad ) (Right Parenthesis) */ -#define KP_RIGHT_PARENTHESIS (HID_USAGE_KEY_KEYPAD_RIGHT_PARENTHESIS) +#define KP_RIGHT_PARENTHESIS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_RIGHT_PARENTHESIS)) #define KP_RPAR (KP_RIGHT_PARENTHESIS) /* Keypad Space */ -#define KSPC (HID_USAGE_KEY_KEYPAD_SPACE) // WARNING: DEPRECATED (DO NOT USE) +#define KSPC \ + (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_SPACE)) // WARNING: DEPRECATED (DO NOT USE) /* Keypad Clear */ -#define KP_CLEAR (HID_USAGE_KEY_KEYPAD_CLEAR) +#define KP_CLEAR (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_CLEAR)) /* Keyboard Left Control */ -#define LEFT_CONTROL (HID_USAGE_KEY_KEYBOARD_LEFTCONTROL) +#define LEFT_CONTROL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTCONTROL)) #define LCTRL (LEFT_CONTROL) #define LCTL (LEFT_CONTROL) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Left Shift */ -#define LEFT_SHIFT (HID_USAGE_KEY_KEYBOARD_LEFTSHIFT) +#define LEFT_SHIFT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTSHIFT)) #define LSHFT (LEFT_SHIFT) #define LSFT (LEFT_SHIFT) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Left Alt */ -#define LEFT_ALT (HID_USAGE_KEY_KEYBOARD_LEFTALT) +#define LEFT_ALT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTALT)) #define LALT (LEFT_ALT) /* Keyboard Left GUI (Windows / Command / Meta) */ -#define LEFT_GUI (HID_USAGE_KEY_KEYBOARD_LEFT_GUI) +#define LEFT_GUI (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_GUI)) #define LGUI (LEFT_GUI) #define LEFT_WIN (LEFT_GUI) #define LWIN (LEFT_GUI) @@ -777,21 +789,21 @@ #define LMETA (LEFT_GUI) /* Keyboard Right Control */ -#define RIGHT_CONTROL (HID_USAGE_KEY_KEYBOARD_RIGHTCONTROL) +#define RIGHT_CONTROL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTCONTROL)) #define RCTRL (RIGHT_CONTROL) #define RCTL (RIGHT_CONTROL) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Right Shift */ -#define RIGHT_SHIFT (HID_USAGE_KEY_KEYBOARD_RIGHTSHIFT) +#define RIGHT_SHIFT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTSHIFT)) #define RSHFT (RIGHT_SHIFT) #define RSFT (RIGHT_SHIFT) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Right Alt */ -#define RIGHT_ALT (HID_USAGE_KEY_KEYBOARD_RIGHTALT) +#define RIGHT_ALT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTALT)) #define RALT (RIGHT_ALT) /* Keyboard Right GUI (Windows / Command / Meta) */ -#define RIGHT_GUI (HID_USAGE_KEY_KEYBOARD_RIGHT_GUI) +#define RIGHT_GUI (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_GUI)) #define RGUI (RIGHT_GUI) #define RIGHT_WIN (RIGHT_GUI) #define RWIN (RIGHT_GUI) @@ -801,589 +813,621 @@ #define RMETA (RIGHT_GUI) /* Keyboard Play/Pause */ -#define K_PLAY_PAUSE (0xE8) +#define K_PLAY_PAUSE (HID_EXT_USAGE(HID_USAGE_KEY, 0xE8)) #define K_PP (K_PLAY_PAUSE) /* Keyboard Stop */ -#define K_STOP2 (0xE9) +#define K_STOP2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xE9)) /* Keyboard Previous */ -#define K_PREVIOUS (0xEA) +#define K_PREVIOUS (HID_EXT_USAGE(HID_USAGE_KEY, 0xEA)) #define K_PREV (K_PREVIOUS) /* Keyboard Next */ -#define K_NEXT (0xEB) +#define K_NEXT (HID_EXT_USAGE(HID_USAGE_KEY, 0xEB)) /* Keyboard Eject */ -#define K_EJECT (0xEC) +#define K_EJECT (HID_EXT_USAGE(HID_USAGE_KEY, 0xEC)) /* Keyboard Volume Up */ -#define K_VOLUME_UP2 (0xED) +#define K_VOLUME_UP2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xED)) #define K_VOL_UP2 (K_VOLUME_UP2) /* Keyboard Volume Down */ -#define K_VOLUME_DOWN2 (0xEE) +#define K_VOLUME_DOWN2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xEE)) #define K_VOL_DN2 (K_VOLUME_DOWN2) /* Keyboard Mute */ -#define K_MUTE2 (0xEF) +#define K_MUTE2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xEF)) /* Keyboard WWW */ -#define K_WWW (0xF0) +#define K_WWW (HID_EXT_USAGE(HID_USAGE_KEY, 0xF0)) /* Keyboard Back */ -#define K_BACK (0xF1) +#define K_BACK (HID_EXT_USAGE(HID_USAGE_KEY, 0xF1)) /* Keyboard Forward */ -#define K_FORWARD (0xF2) +#define K_FORWARD (HID_EXT_USAGE(HID_USAGE_KEY, 0xF2)) /* Keyboard Stop */ -#define K_STOP3 (0xF3) +#define K_STOP3 (HID_EXT_USAGE(HID_USAGE_KEY, 0xF3)) /* Keyboard Find */ -#define K_FIND2 (0xF4) +#define K_FIND2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xF4)) /* Keyboard Scroll Up */ -#define K_SCROLL_UP (0xF5) +#define K_SCROLL_UP (HID_EXT_USAGE(HID_USAGE_KEY, 0xF5)) /* Keyboard Scroll Down */ -#define K_SCROLL_DOWN (0xF6) +#define K_SCROLL_DOWN (HID_EXT_USAGE(HID_USAGE_KEY, 0xF6)) /* Keyboard Edit */ -#define K_EDIT (0xF7) +#define K_EDIT (HID_EXT_USAGE(HID_USAGE_KEY, 0xF7)) /* Keyboard Sleep */ -#define K_SLEEP (0xF8) +#define K_SLEEP (HID_EXT_USAGE(HID_USAGE_KEY, 0xF8)) /* Keyboard Lock */ -#define K_LOCK (0xF9) +#define K_LOCK (HID_EXT_USAGE(HID_USAGE_KEY, 0xF9)) #define K_SCREENSAVER (K_LOCK) #define K_COFFEE (K_LOCK) /* Keyboard Refresh */ -#define K_REFRESH (0xFA) +#define K_REFRESH (HID_EXT_USAGE(HID_USAGE_KEY, 0xFA)) /* Keyboard Calculator */ -#define K_CALCULATOR (0xFB) +#define K_CALCULATOR (HID_EXT_USAGE(HID_USAGE_KEY, 0xFB)) #define K_CALC (K_CALCULATOR) /* Consumer Power */ -#define C_POWER (HID_USAGE_CONSUMER_POWER) +#define C_POWER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_POWER)) #define C_PWR (C_POWER) /* Consumer Reset */ -#define C_RESET (HID_USAGE_CONSUMER_RESET) +#define C_RESET (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RESET)) /* Consumer Sleep */ -#define C_SLEEP (HID_USAGE_CONSUMER_SLEEP) +#define C_SLEEP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLEEP)) /* Consumer Sleep Mode */ -#define C_SLEEP_MODE (HID_USAGE_CONSUMER_SLEEP_MODE) +#define C_SLEEP_MODE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLEEP_MODE)) /* Consumer Menu */ -#define C_MENU (HID_USAGE_CONSUMER_MENU) +#define C_MENU (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU)) /* Consumer Menu Pick */ -#define C_MENU_PICK (HID_USAGE_CONSUMER_MENU_PICK) +#define C_MENU_PICK (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_PICK)) #define C_MENU_SELECT (C_MENU_PICK) /* Consumer Menu Up */ -#define C_MENU_UP (HID_USAGE_CONSUMER_MENU_UP) +#define C_MENU_UP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_UP)) /* Consumer Menu Down */ -#define C_MENU_DOWN (HID_USAGE_CONSUMER_MENU_DOWN) +#define C_MENU_DOWN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_DOWN)) /* Consumer Menu Left */ -#define C_MENU_LEFT (HID_USAGE_CONSUMER_MENU_LEFT) +#define C_MENU_LEFT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_LEFT)) /* Consumer Menu Right */ -#define C_MENU_RIGHT (HID_USAGE_CONSUMER_MENU_RIGHT) +#define C_MENU_RIGHT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_RIGHT)) /* Consumer Menu Escape */ -#define C_MENU_ESCAPE (HID_USAGE_CONSUMER_MENU_ESCAPE) +#define C_MENU_ESCAPE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_ESCAPE)) #define C_MENU_ESC (C_MENU_ESCAPE) /* Consumer Menu Value Increase */ -#define C_MENU_INCREASE (HID_USAGE_CONSUMER_MENU_VALUE_INCREASE) +#define C_MENU_INCREASE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_VALUE_INCREASE)) #define C_MENU_INC (C_MENU_INCREASE) /* Consumer Menu Value Decrease */ -#define C_MENU_DECREASE (HID_USAGE_CONSUMER_MENU_VALUE_DECREASE) +#define C_MENU_DECREASE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_VALUE_DECREASE)) #define C_MENU_DEC (C_MENU_DECREASE) /* Consumer Data On Screen */ -#define C_DATA_ON_SCREEN (HID_USAGE_CONSUMER_DATA_ON_SCREEN) +#define C_DATA_ON_SCREEN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DATA_ON_SCREEN)) /* Consumer Closed Caption */ -#define C_CAPTIONS (HID_USAGE_CONSUMER_CLOSED_CAPTION) +#define C_CAPTIONS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CLOSED_CAPTION)) #define C_SUBTITILES (C_CAPTIONS) /* Consumer Snapshot */ -#define C_SNAPSHOT (HID_USAGE_CONSUMER_SNAPSHOT) +#define C_SNAPSHOT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SNAPSHOT)) /* Consumer Picture-in-Picture Toggle */ -#define C_PIP (HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_TOGGLE) +#define C_PIP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_TOGGLE)) /* Consumer Red Menu Button */ -#define C_RED_BUTTON (HID_USAGE_CONSUMER_RED_MENU_BUTTON) +#define C_RED_BUTTON (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RED_MENU_BUTTON)) #define C_RED (C_RED_BUTTON) /* Consumer Green Menu Button */ -#define C_GREEN_BUTTON (HID_USAGE_CONSUMER_GREEN_MENU_BUTTON) +#define C_GREEN_BUTTON (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_GREEN_MENU_BUTTON)) #define C_GREEN (C_GREEN_BUTTON) /* Consumer Blue Menu Button */ -#define C_BLUE_BUTTON (HID_USAGE_CONSUMER_BLUE_MENU_BUTTON) +#define C_BLUE_BUTTON (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_BLUE_MENU_BUTTON)) #define C_BLUE (C_BLUE_BUTTON) /* Consumer Yellow Menu Button */ -#define C_YELLOW_BUTTON (HID_USAGE_CONSUMER_YELLOW_MENU_BUTTON) +#define C_YELLOW_BUTTON (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_YELLOW_MENU_BUTTON)) #define C_YELLOW (C_YELLOW_BUTTON) /* Consumer Aspect */ -#define C_ASPECT (HID_USAGE_CONSUMER_ASPECT) +#define C_ASPECT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_ASPECT)) /* Consumer Display Brightness Increment */ -#define C_BRIGHTNESS_INC (HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_INCREMENT) +#define C_BRIGHTNESS_INC \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_INCREMENT)) #define C_BRI_INC (C_BRIGHTNESS_INC) #define C_BRI_UP (C_BRIGHTNESS_INC) /* Consumer Display Brightness Decrement */ -#define C_BRIGHTNESS_DEC (HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_DECREMENT) +#define C_BRIGHTNESS_DEC \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_DECREMENT)) #define C_BRI_DEC (C_BRIGHTNESS_DEC) #define C_BRI_DN (C_BRIGHTNESS_DEC) /* Consumer Display Backlight Toggle */ -#define C_BACKLIGHT_TOGGLE (HID_USAGE_CONSUMER_DISPLAY_BACKLIGHT_TOGGLE) +#define C_BACKLIGHT_TOGGLE \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BACKLIGHT_TOGGLE)) #define C_BKLT_TOG (C_BACKLIGHT_TOGGLE) /* Consumer Display Set Brightness to Minimum */ -#define C_BRIGHTNESS_MINIMUM (HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MINIMUM) +#define C_BRIGHTNESS_MINIMUM \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MINIMUM)) #define C_BRI_MIN (C_BRIGHTNESS_MINIMUM) /* Consumer Display Set Brightness to Maximum */ -#define C_BRIGHTNESS_MAXIMUM (HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MAXIMUM) +#define C_BRIGHTNESS_MAXIMUM \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MAXIMUM)) #define C_BRI_MAX (C_BRIGHTNESS_MAXIMUM) /* Consumer Display Set Auto Brightness */ -#define C_BRIGHTNESS_AUTO (HID_USAGE_CONSUMER_DISPLAY_SET_AUTO_BRIGHTNESS) +#define C_BRIGHTNESS_AUTO \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_AUTO_BRIGHTNESS)) #define C_BRI_AUTO (C_BRIGHTNESS_AUTO) /* Consumer Mode Step */ -#define C_MEDIA_STEP (HID_USAGE_CONSUMER_MODE_STEP) +#define C_MEDIA_STEP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MODE_STEP)) #define C_MODE_STEP (C_MEDIA_STEP) /* Consumer Recall Last */ -#define C_RECALL_LAST (HID_USAGE_CONSUMER_RECALL_LAST) +#define C_RECALL_LAST (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RECALL_LAST)) #define C_CHAN_LAST (C_RECALL_LAST) /* Consumer Media Select Computer */ -#define C_MEDIA_COMPUTER (HID_USAGE_CONSUMER_MEDIA_SELECT_COMPUTER) +#define C_MEDIA_COMPUTER \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_COMPUTER)) /* Consumer Media Select TV */ -#define C_MEDIA_TV (HID_USAGE_CONSUMER_MEDIA_SELECT_TV) +#define C_MEDIA_TV (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TV)) /* Consumer Media Select WWW */ -#define C_MEDIA_WWW (HID_USAGE_CONSUMER_MEDIA_SELECT_WWW) +#define C_MEDIA_WWW (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_WWW)) /* Consumer Media Select DVD */ -#define C_MEDIA_DVD (HID_USAGE_CONSUMER_MEDIA_SELECT_DVD) +#define C_MEDIA_DVD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_DVD)) /* Consumer Media Select Telephone */ -#define C_MEDIA_PHONE (HID_USAGE_CONSUMER_MEDIA_SELECT_TELEPHONE) +#define C_MEDIA_PHONE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TELEPHONE)) /* Consumer Media Select Program Guide */ -#define C_MEDIA_GUIDE (HID_USAGE_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE) +#define C_MEDIA_GUIDE \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE)) /* Consumer Media Select Video Phone */ -#define C_MEDIA_VIDEOPHONE (HID_USAGE_CONSUMER_MEDIA_SELECT_VIDEO_PHONE) +#define C_MEDIA_VIDEOPHONE \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_VIDEO_PHONE)) /* Consumer Media Select Games */ -#define C_MEDIA_GAMES (HID_USAGE_CONSUMER_MEDIA_SELECT_GAMES) +#define C_MEDIA_GAMES (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_GAMES)) /* Consumer Media Select Messages */ -#define C_MEDIA_MESSAGES (HID_USAGE_CONSUMER_MEDIA_SELECT_MESSAGES) +#define C_MEDIA_MESSAGES \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_MESSAGES)) /* Consumer Media Select CD */ -#define C_MEDIA_CD (HID_USAGE_CONSUMER_MEDIA_SELECT_CD) +#define C_MEDIA_CD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_CD)) /* Consumer Media Select VCR */ -#define C_MEDIA_VCR (HID_USAGE_CONSUMER_MEDIA_SELECT_VCR) +#define C_MEDIA_VCR (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_VCR)) /* Consumer Media Select Tuner */ -#define C_MEDIA_TUNER (HID_USAGE_CONSUMER_MEDIA_SELECT_TUNER) +#define C_MEDIA_TUNER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TUNER)) /* Consumer Quit */ -#define C_QUIT (HID_USAGE_CONSUMER_QUIT) +#define C_QUIT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_QUIT)) /* Consumer Help */ -#define C_HELP (HID_USAGE_CONSUMER_HELP) +#define C_HELP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_HELP)) /* Consumer Media Select Tape */ -#define C_MEDIA_TAPE (HID_USAGE_CONSUMER_MEDIA_SELECT_TAPE) +#define C_MEDIA_TAPE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TAPE)) /* Consumer Media Select Cable */ -#define C_MEDIA_CABLE (HID_USAGE_CONSUMER_MEDIA_SELECT_CABLE) +#define C_MEDIA_CABLE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_CABLE)) /* Consumer Media Select Satellite */ -#define C_MEDIA_SATELLITE (HID_USAGE_CONSUMER_MEDIA_SELECT_SATELLITE) +#define C_MEDIA_SATELLITE \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_SATELLITE)) /* Consumer Media Select Home */ -#define C_MEDIA_HOME (HID_USAGE_CONSUMER_MEDIA_SELECT_HOME) +#define C_MEDIA_HOME (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_HOME)) /* Consumer Channel Increment */ -#define C_CHANNEL_INC (HID_USAGE_CONSUMER_CHANNEL_INCREMENT) +#define C_CHANNEL_INC (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CHANNEL_INCREMENT)) #define C_CHAN_INC (C_CHANNEL_INC) /* Consumer Channel Decrement */ -#define C_CHANNEL_DEC (HID_USAGE_CONSUMER_CHANNEL_DECREMENT) +#define C_CHANNEL_DEC (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CHANNEL_DECREMENT)) #define C_CHAN_DEC (C_CHANNEL_DEC) /* Consumer VCR Plus */ -#define C_MEDIA_VCR_PLUS (HID_USAGE_CONSUMER_VCR_PLUS) +#define C_MEDIA_VCR_PLUS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VCR_PLUS)) /* Consumer Play */ -#define C_PLAY (HID_USAGE_CONSUMER_PLAY) +#define C_PLAY (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PLAY)) /* Consumer Pause */ -#define C_PAUSE (HID_USAGE_CONSUMER_PAUSE) +#define C_PAUSE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PAUSE)) /* Consumer Record */ -#define C_RECORD (HID_USAGE_CONSUMER_RECORD) +#define C_RECORD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RECORD)) #define C_REC (C_RECORD) /* Consumer Fast Forward */ -#define C_FAST_FORWARD (HID_USAGE_CONSUMER_FAST_FORWARD) +#define C_FAST_FORWARD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_FAST_FORWARD)) #define C_FF (C_FAST_FORWARD) /* Consumer Rewind */ -#define C_REWIND (HID_USAGE_CONSUMER_REWIND) +#define C_REWIND (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_REWIND)) #define C_RW (C_REWIND) /* Consumer Scan Next Track */ -#define C_NEXT (HID_USAGE_CONSUMER_SCAN_NEXT_TRACK) +#define C_NEXT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SCAN_NEXT_TRACK)) #define M_NEXT (C_NEXT) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Scan Previous Track */ -#define C_PREVIOUS (HID_USAGE_CONSUMER_SCAN_PREVIOUS_TRACK) +#define C_PREVIOUS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SCAN_PREVIOUS_TRACK)) #define C_PREV (C_PREVIOUS) #define M_PREV (C_PREVIOUS) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Stop */ -#define C_STOP (HID_USAGE_CONSUMER_STOP) +#define C_STOP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_STOP)) #define M_STOP (C_STOP) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Eject */ -#define C_EJECT (HID_USAGE_CONSUMER_EJECT) +#define C_EJECT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_EJECT)) #define M_EJCT (C_EJECT) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Random Play */ -#define C_RANDOM_PLAY (HID_USAGE_CONSUMER_RANDOM_PLAY) +#define C_RANDOM_PLAY (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RANDOM_PLAY)) #define C_SHUFFLE (C_RANDOM_PLAY) /* Consumer Repeat */ -#define C_REPEAT (HID_USAGE_CONSUMER_REPEAT) +#define C_REPEAT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_REPEAT)) /* Consumer Slow Tracking */ -#define C_SLOW_TRACKING (HID_USAGE_CONSUMER_SLOW_TRACKING) +#define C_SLOW_TRACKING (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLOW_TRACKING)) #define C_SLOW2 (C_SLOW_TRACKING) /* Consumer Stop/Eject */ -#define C_STOP_EJECT (HID_USAGE_CONSUMER_STOP_EJECT) +#define C_STOP_EJECT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_STOP_EJECT)) /* Consumer Play/Pause */ -#define C_PLAY_PAUSE (HID_USAGE_CONSUMER_PLAY_PAUSE) +#define C_PLAY_PAUSE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PLAY_PAUSE)) #define C_PP (C_PLAY_PAUSE) #define M_PLAY (C_PLAY_PAUSE) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Voice Command */ -#define C_VOICE_COMMAND (HID_USAGE_CONSUMER_VOICE_COMMAND) +#define C_VOICE_COMMAND (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOICE_COMMAND)) /* Consumer Mute */ -#define C_MUTE (HID_USAGE_CONSUMER_MUTE) +#define C_MUTE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MUTE)) #define M_MUTE (C_MUTE) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Bass Boost */ -#define C_BASS_BOOST (HID_USAGE_CONSUMER_BASS_BOOST) +#define C_BASS_BOOST (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_BASS_BOOST)) /* Consumer Volume Increment */ -#define C_VOLUME_UP (HID_USAGE_CONSUMER_VOLUME_INCREMENT) +#define C_VOLUME_UP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOLUME_INCREMENT)) #define C_VOL_UP (C_VOLUME_UP) #define M_VOLU (C_VOLUME_UP) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Volume Decrement */ -#define C_VOLUME_DOWN (HID_USAGE_CONSUMER_VOLUME_DECREMENT) +#define C_VOLUME_DOWN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOLUME_DECREMENT)) #define C_VOL_DN (C_VOLUME_DOWN) #define M_VOLD (C_VOLUME_DOWN) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Slow */ -#define C_SLOW (HID_USAGE_CONSUMER_SLOW) +#define C_SLOW (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLOW)) /* Consumer Alternate Audio Increment */ -#define C_ALTERNATE_AUDIO_INCREMENT (HID_USAGE_CONSUMER_ALTERNATE_AUDIO_INCREMENT) +#define C_ALTERNATE_AUDIO_INCREMENT \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_ALTERNATE_AUDIO_INCREMENT)) #define C_ALT_AUDIO_INC (C_ALTERNATE_AUDIO_INCREMENT) /* Consumer AL Consumer Control Configuration */ -#define C_AL_CCC (HID_USAGE_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION) +#define C_AL_CCC \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION)) /* Consumer AL Word Processor */ -#define C_AL_WORD (HID_USAGE_CONSUMER_AL_WORD_PROCESSOR) +#define C_AL_WORD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_WORD_PROCESSOR)) /* Consumer AL Text Editor */ -#define C_AL_TEXT_EDITOR (HID_USAGE_CONSUMER_AL_TEXT_EDITOR) +#define C_AL_TEXT_EDITOR (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TEXT_EDITOR)) /* Consumer AL Spreadsheet */ -#define C_AL_SPREADSHEET (HID_USAGE_CONSUMER_AL_SPREADSHEET) +#define C_AL_SPREADSHEET (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SPREADSHEET)) #define C_AL_SHEET (C_AL_SPREADSHEET) /* Consumer AL Graphics Editor */ -#define C_AL_GRAPHICS_EDITOR (HID_USAGE_CONSUMER_AL_GRAPHICS_EDITOR) +#define C_AL_GRAPHICS_EDITOR \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_GRAPHICS_EDITOR)) /* Consumer AL Presentation App */ -#define C_AL_PRESENTATION (HID_USAGE_CONSUMER_AL_PRESENTATION_APP) +#define C_AL_PRESENTATION \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_PRESENTATION_APP)) /* Consumer AL Database App */ -#define C_AL_DATABASE (HID_USAGE_CONSUMER_AL_DATABASE_APP) +#define C_AL_DATABASE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_DATABASE_APP)) #define C_AL_DB (C_AL_DATABASE) /* Consumer AL Email Reader */ -#define C_AL_EMAIL (HID_USAGE_CONSUMER_AL_EMAIL_READER) +#define C_AL_EMAIL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_EMAIL_READER)) #define C_AL_MAIL (C_AL_EMAIL) /* Consumer AL Newsreader */ -#define C_AL_NEWS (HID_USAGE_CONSUMER_AL_NEWSREADER) +#define C_AL_NEWS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NEWSREADER)) /* Consumer AL Voicemail */ -#define C_AL_VOICEMAIL (HID_USAGE_CONSUMER_AL_VOICEMAIL) +#define C_AL_VOICEMAIL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_VOICEMAIL)) /* Consumer AL Contacts/Address Book */ -#define C_AL_CONTACTS (HID_USAGE_CONSUMER_AL_CONTACTS_ADDRESS_BOOK) +#define C_AL_CONTACTS \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONTACTS_ADDRESS_BOOK)) #define C_AL_ADDRESS_BOOK (C_AL_CONTACTS) /* Consumer AL Calendar/Schedule */ -#define C_AL_CALENDAR (HID_USAGE_CONSUMER_AL_CALENDAR_SCHEDULE) +#define C_AL_CALENDAR (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CALENDAR_SCHEDULE)) #define C_AL_CAL (C_AL_CALENDAR) /* Consumer AL Task/Project Manager */ -#define C_AL_TASK_MANAGER (HID_USAGE_CONSUMER_AL_TASK_PROJECT_MANAGER) +#define C_AL_TASK_MANAGER \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TASK_PROJECT_MANAGER)) /* Consumer AL Log/Journal/Timecard */ -#define C_AL_JOURNAL (HID_USAGE_CONSUMER_AL_LOG_JOURNAL_TIMECARD) +#define C_AL_JOURNAL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOG_JOURNAL_TIMECARD)) /* Consumer AL Checkbook/Finance */ -#define C_AL_FINANCE (HID_USAGE_CONSUMER_AL_CHECKBOOK_FINANCE) +#define C_AL_FINANCE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CHECKBOOK_FINANCE)) /* Consumer AL Calculator */ -#define C_AL_CALCULATOR (HID_USAGE_CONSUMER_AL_CALCULATOR) +#define C_AL_CALCULATOR (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CALCULATOR)) #define C_AL_CALC (C_AL_CALCULATOR) /* Consumer AL A/V Capture/Playback */ -#define C_AL_AV_CAPTURE_PLAYBACK (HID_USAGE_CONSUMER_AL_A_V_CAPTURE_PLAYBACK) +#define C_AL_AV_CAPTURE_PLAYBACK \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_A_V_CAPTURE_PLAYBACK)) /* Consumer AL Local Machine Browser */ -#define C_AL_MY_COMPUTER (HID_USAGE_CONSUMER_AL_LOCAL_MACHINE_BROWSER) +#define C_AL_MY_COMPUTER \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOCAL_MACHINE_BROWSER)) /* Consumer AL Internet Browser */ -#define C_AL_WWW (HID_USAGE_CONSUMER_AL_INTERNET_BROWSER) +#define C_AL_WWW (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INTERNET_BROWSER)) /* Consumer AL Network Chat */ -#define C_AL_NETWORK_CHAT (HID_USAGE_CONSUMER_AL_NETWORK_CHAT) +#define C_AL_NETWORK_CHAT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NETWORK_CHAT)) #define C_AL_CHAT (C_AL_NETWORK_CHAT) /* Consumer AL Logoff */ -#define C_AL_LOGOFF (HID_USAGE_CONSUMER_AL_LOGOFF) +#define C_AL_LOGOFF (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOGOFF)) /* Consumer AL Terminal Lock/Screensaver */ -#define C_AL_LOCK (HID_USAGE_CONSUMER_AL_TERMINAL_LOCK_SCREENSAVER) +#define C_AL_LOCK \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TERMINAL_LOCK_SCREENSAVER)) #define C_AL_SCREENSAVER (C_AL_LOCK) #define C_AL_COFFEE (C_AL_LOCK) /* Consumer AL Control Panel */ -#define C_AL_CONTROL_PANEL (HID_USAGE_CONSUMER_AL_CONTROL_PANEL) +#define C_AL_CONTROL_PANEL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONTROL_PANEL)) /* Consumer AL Select Task/Application */ -#define C_AL_SELECT_TASK (HID_USAGE_CONSUMER_AL_SELECT_TASK_APPLICATION) +#define C_AL_SELECT_TASK \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SELECT_TASK_APPLICATION)) /* Consumer AL Next Task/Application */ -#define C_AL_NEXT_TASK (HID_USAGE_CONSUMER_AL_NEXT_TASK_APPLICATION) +#define C_AL_NEXT_TASK \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NEXT_TASK_APPLICATION)) /* Consumer AL Previous Task/Application */ -#define C_AL_PREVIOUS_TASK (HID_USAGE_CONSUMER_AL_PREVIOUS_TASK_APPLICATION) +#define C_AL_PREVIOUS_TASK \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_PREVIOUS_TASK_APPLICATION)) #define C_AL_PREV_TASK (C_AL_PREVIOUS_TASK) /* Consumer AL Integrated Help Center */ -#define C_AL_HELP (HID_USAGE_CONSUMER_AL_INTEGRATED_HELP_CENTER) +#define C_AL_HELP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INTEGRATED_HELP_CENTER)) /* Consumer AL Documents */ -#define C_AL_DOCUMENTS (HID_USAGE_CONSUMER_AL_DOCUMENTS) +#define C_AL_DOCUMENTS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_DOCUMENTS)) #define C_AL_DOCS (C_AL_DOCUMENTS) /* Consumer AL Spell Check */ -#define C_AL_SPELLCHECK (HID_USAGE_CONSUMER_AL_SPELL_CHECK) +#define C_AL_SPELLCHECK (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SPELL_CHECK)) #define C_AL_SPELL (C_AL_SPELLCHECK) /* Consumer AL Keyboard Layout */ -#define C_AL_KEYBOARD_LAYOUT (HID_USAGE_CONSUMER_AL_KEYBOARD_LAYOUT) +#define C_AL_KEYBOARD_LAYOUT \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_KEYBOARD_LAYOUT)) /* Consumer AL Screen Saver */ -#define C_AL_SCREEN_SAVER (HID_USAGE_CONSUMER_AL_SCREEN_SAVER) +#define C_AL_SCREEN_SAVER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SCREEN_SAVER)) /* Consumer AL File Browser */ -#define C_AL_FILE_BROWSER (HID_USAGE_CONSUMER_AL_FILE_BROWSER) +#define C_AL_FILE_BROWSER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_FILE_BROWSER)) #define C_AL_FILES (C_AL_FILE_BROWSER) /* Consumer AL Image Browser */ -#define C_AL_IMAGE_BROWSER (HID_USAGE_CONSUMER_AL_IMAGE_BROWSER) +#define C_AL_IMAGE_BROWSER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_IMAGE_BROWSER)) #define C_AL_IMAGES (C_AL_IMAGE_BROWSER) /* Consumer AL Audio Browser */ -#define C_AL_AUDIO_BROWSER (HID_USAGE_CONSUMER_AL_AUDIO_BROWSER) +#define C_AL_AUDIO_BROWSER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_AUDIO_BROWSER)) #define C_AL_AUDIO (C_AL_AUDIO_BROWSER) #define C_AL_MUSIC (C_AL_AUDIO_BROWSER) /* Consumer AL Movie Browser */ -#define C_AL_MOVIE_BROWSER (HID_USAGE_CONSUMER_AL_MOVIE_BROWSER) +#define C_AL_MOVIE_BROWSER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_MOVIE_BROWSER)) #define C_AL_MOVIES (C_AL_MOVIE_BROWSER) /* Consumer AL Instant Messaging */ -#define C_AL_INSTANT_MESSAGING (HID_USAGE_CONSUMER_AL_INSTANT_MESSAGING) +#define C_AL_INSTANT_MESSAGING \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INSTANT_MESSAGING)) #define C_AL_IM (C_AL_INSTANT_MESSAGING) /* Consumer AL OEM Features/Tips/Tutorial Browser */ -#define C_AL_OEM_FEATURES (HID_USAGE_CONSUMER_AL_OEM_FEATURES_TIPS_TUTORIAL_BROWSER) +#define C_AL_OEM_FEATURES \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_OEM_FEATURES_TIPS_TUTORIAL_BROWSER)) #define C_AL_TIPS (C_AL_OEM_FEATURES) #define C_AL_TUTORIAL (C_AL_OEM_FEATURES) /* Consumer AC New */ -#define C_AC_NEW (HID_USAGE_CONSUMER_AC_NEW) +#define C_AC_NEW (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_NEW)) /* Consumer AC Open */ -#define C_AC_OPEN (HID_USAGE_CONSUMER_AC_OPEN) +#define C_AC_OPEN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_OPEN)) /* Consumer AC Close */ -#define C_AC_CLOSE (HID_USAGE_CONSUMER_AC_CLOSE) +#define C_AC_CLOSE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CLOSE)) /* Consumer AC Exit */ -#define C_AC_EXIT (HID_USAGE_CONSUMER_AC_EXIT) +#define C_AC_EXIT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_EXIT)) /* Consumer AC Save */ -#define C_AC_SAVE (HID_USAGE_CONSUMER_AC_SAVE) +#define C_AC_SAVE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SAVE)) /* Consumer AC Print */ -#define C_AC_PRINT (HID_USAGE_CONSUMER_AC_PRINT) +#define C_AC_PRINT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PRINT)) /* Consumer AC Properties */ -#define C_AC_PROPERTIES (HID_USAGE_CONSUMER_AC_PROPERTIES) +#define C_AC_PROPERTIES (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PROPERTIES)) #define C_AC_PROPS (C_AC_PROPERTIES) /* Consumer AC Undo */ -#define C_AC_UNDO (HID_USAGE_CONSUMER_AC_UNDO) +#define C_AC_UNDO (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_UNDO)) /* Consumer AC Copy */ -#define C_AC_COPY (HID_USAGE_CONSUMER_AC_COPY) +#define C_AC_COPY (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_COPY)) /* Consumer AC Cut */ -#define C_AC_CUT (HID_USAGE_CONSUMER_AC_CUT) +#define C_AC_CUT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CUT)) /* Consumer AC Paste */ -#define C_AC_PASTE (HID_USAGE_CONSUMER_AC_PASTE) +#define C_AC_PASTE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PASTE)) /* Consumer AC Find */ -#define C_AC_FIND (HID_USAGE_CONSUMER_AC_FIND) +#define C_AC_FIND (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FIND)) /* Consumer AC Search */ -#define C_AC_SEARCH (HID_USAGE_CONSUMER_AC_SEARCH) +#define C_AC_SEARCH (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SEARCH)) /* Consumer AC Go To */ -#define C_AC_GOTO (HID_USAGE_CONSUMER_AC_GO_TO) +#define C_AC_GOTO (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_GO_TO)) /* Consumer AC Home */ -#define C_AC_HOME (HID_USAGE_CONSUMER_AC_HOME) +#define C_AC_HOME (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_HOME)) /* Consumer AC Back */ -#define C_AC_BACK (HID_USAGE_CONSUMER_AC_BACK) +#define C_AC_BACK (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_BACK)) /* Consumer AC Forward */ -#define C_AC_FORWARD (HID_USAGE_CONSUMER_AC_FORWARD) +#define C_AC_FORWARD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FORWARD)) /* Consumer AC Stop */ -#define C_AC_STOP (HID_USAGE_CONSUMER_AC_STOP) +#define C_AC_STOP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_STOP)) /* Consumer AC Refresh */ -#define C_AC_REFRESH (HID_USAGE_CONSUMER_AC_REFRESH) +#define C_AC_REFRESH (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REFRESH)) /* Consumer AC Bookmarks */ -#define C_AC_BOOKMARKS (HID_USAGE_CONSUMER_AC_BOOKMARKS) +#define C_AC_BOOKMARKS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_BOOKMARKS)) #define C_AC_FAVORITES (C_AC_BOOKMARKS) #define C_AC_FAVOURITES (C_AC_BOOKMARKS) /* Consumer AC Zoom In */ -#define C_AC_ZOOM_IN (HID_USAGE_CONSUMER_AC_ZOOM_IN) +#define C_AC_ZOOM_IN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM_IN)) /* Consumer AC Zoom Out */ -#define C_AC_ZOOM_OUT (HID_USAGE_CONSUMER_AC_ZOOM_OUT) +#define C_AC_ZOOM_OUT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM_OUT)) /* Consumer AC Zoom */ -#define C_AC_ZOOM (HID_USAGE_CONSUMER_AC_ZOOM) +#define C_AC_ZOOM (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM)) /* Consumer AC View Toggle */ -#define C_AC_VIEW_TOGGLE (HID_USAGE_CONSUMER_AC_VIEW_TOGGLE) +#define C_AC_VIEW_TOGGLE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_VIEW_TOGGLE)) /* Consumer AC Scroll Up */ -#define C_AC_SCROLL_UP (HID_USAGE_CONSUMER_AC_SCROLL_UP) +#define C_AC_SCROLL_UP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SCROLL_UP)) /* Consumer AC Scroll Down */ -#define C_AC_SCROLL_DOWN (HID_USAGE_CONSUMER_AC_SCROLL_DOWN) +#define C_AC_SCROLL_DOWN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SCROLL_DOWN)) /* Consumer AC Edit */ -#define C_AC_EDIT (HID_USAGE_CONSUMER_AC_EDIT) +#define C_AC_EDIT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_EDIT)) /* Consumer AC Cancel */ -#define C_AC_CANCEL (HID_USAGE_CONSUMER_AC_CANCEL) +#define C_AC_CANCEL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CANCEL)) /* Consumer AC Insert Mode */ -#define C_AC_INSERT (HID_USAGE_CONSUMER_AC_INSERT_MODE) +#define C_AC_INSERT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_INSERT_MODE)) #define C_AC_INS (C_AC_INSERT) /* Consumer AC Delete */ -#define C_AC_DEL (HID_USAGE_CONSUMER_AC_DELETE) +#define C_AC_DEL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_DELETE)) /* Consumer AC Redo/Repeat */ -#define C_AC_REDO (HID_USAGE_CONSUMER_AC_REDO_REPEAT) +#define C_AC_REDO (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REDO_REPEAT)) /* Consumer AC Reply */ -#define C_AC_REPLY (HID_USAGE_CONSUMER_AC_REPLY) +#define C_AC_REPLY (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REPLY)) /* Consumer AC Forward Msg */ -#define C_AC_FORWARD_MAIL (HID_USAGE_CONSUMER_AC_FORWARD_MSG) +#define C_AC_FORWARD_MAIL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FORWARD_MSG)) /* Consumer AC Send */ -#define C_AC_SEND (HID_USAGE_CONSUMER_AC_SEND) +#define C_AC_SEND (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SEND)) /* Consumer AC Desktop Show All Windows */ -#define C_AC_DESKTOP_SHOW_ALL_WINDOWS (HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_WINDOWS) +#define C_AC_DESKTOP_SHOW_ALL_WINDOWS \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_WINDOWS)) /* Consumer Keyboard Input Assist Previous */ -#define C_KEYBOARD_INPUT_ASSIST_PREVIOUS (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS) +#define C_KEYBOARD_INPUT_ASSIST_PREVIOUS \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS)) #define C_KBIA_PREV (C_KEYBOARD_INPUT_ASSIST_PREVIOUS) /* Consumer Keyboard Input Assist Next */ -#define C_KEYBOARD_INPUT_ASSIST_NEXT (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT) +#define C_KEYBOARD_INPUT_ASSIST_NEXT \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT)) #define C_KBIA_NEXT (C_KEYBOARD_INPUT_ASSIST_NEXT) /* Consumer Keyboard Input Assist Previous Group */ #define C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP \ - (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP) + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP)) #define C_KBIA_PREV_GRP (C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP) /* Consumer Keyboard Input Assist Next Group */ -#define C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT_GROUP) +#define C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT_GROUP)) #define C_KBIA_NEXT_GRP (C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP) /* Consumer Keyboard Input Assist Accept */ -#define C_KEYBOARD_INPUT_ASSIST_ACCEPT (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_ACCEPT) +#define C_KEYBOARD_INPUT_ASSIST_ACCEPT \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_ACCEPT)) #define C_KBIA_ACCEPT (C_KEYBOARD_INPUT_ASSIST_ACCEPT) /* Consumer Keyboard Input Assist Cancel */ -#define C_KEYBOARD_INPUT_ASSIST_CANCEL (HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_CANCEL) -#define C_KBIA_CANCEL (C_KEYBOARD_INPUT_ASSIST_CANCEL) \ No newline at end of file +#define C_KEYBOARD_INPUT_ASSIST_CANCEL \ + (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_CANCEL)) +#define C_KBIA_CANCEL (C_KEYBOARD_INPUT_ASSIST_CANCEL) diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h index 26d07ec4..fe47a0fd 100644 --- a/app/include/zmk/events/keycode-state-changed.h +++ b/app/include/zmk/events/keycode-state-changed.h @@ -8,7 +8,9 @@ #include #include +#include #include +#include struct keycode_state_changed { struct zmk_event_header header; @@ -20,12 +22,20 @@ struct keycode_state_changed { ZMK_EVENT_DECLARE(keycode_state_changed); -static inline struct keycode_state_changed * -create_keycode_state_changed(u8_t usage_page, u32_t keycode, bool state) { +static inline struct keycode_state_changed *keycode_state_changed_from_encoded(u32_t encoded, + bool pressed) { + u16_t page = HID_EXT_USAGE_PAGE(encoded) & 0xFF; + u16_t id = HID_EXT_USAGE_ID(encoded); + zmk_mod_flags implicit_mods = SELECT_MODS(encoded); + + if (!page) { + page = HID_USAGE_KEY; + } + struct keycode_state_changed *ev = new_keycode_state_changed(); - ev->usage_page = usage_page; - ev->keycode = STRIP_MODS(keycode); - ev->implicit_modifiers = SELECT_MODS(keycode); - ev->state = state; + ev->usage_page = page; + ev->keycode = id; + ev->implicit_modifiers = implicit_mods; + ev->state = pressed; return ev; } diff --git a/app/src/behaviors/behavior_hold_tap.c b/app/src/behaviors/behavior_hold_tap.c index c53750a8..1dc665dd 100644 --- a/app/src/behaviors/behavior_hold_tap.c +++ b/app/src/behaviors/behavior_hold_tap.c @@ -429,8 +429,8 @@ static int position_state_changed_listener(const struct zmk_event_header *eh) { } static inline bool only_mods(struct keycode_state_changed *ev) { - return ev->usage_page == HID_USAGE_KEY && ev->keycode >= LEFT_CONTROL && - ev->keycode <= RIGHT_GUI; + return ev->usage_page == HID_USAGE_KEY && ev->keycode >= HID_USAGE_KEY_KEYBOARD_LEFTCONTROL && + ev->keycode <= HID_USAGE_KEY_KEYBOARD_RIGHT_GUI; } static int keycode_state_changed_listener(const struct zmk_event_header *eh) { diff --git a/app/src/behaviors/behavior_key_press.c b/app/src/behaviors/behavior_key_press.c index 923b0982..bfcdbfc2 100644 --- a/app/src/behaviors/behavior_key_press.c +++ b/app/src/behaviors/behavior_key_press.c @@ -16,42 +16,28 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -struct behavior_key_press_config { - u8_t usage_page; -}; -struct behavior_key_press_data {}; - static int behavior_key_press_init(struct device *dev) { return 0; }; static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, struct zmk_behavior_binding_event event) { - struct device *dev = device_get_binding(binding->behavior_dev); - const struct behavior_key_press_config *cfg = dev->config_info; - LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", event.position, cfg->usage_page, - binding->param1); + LOG_DBG("position %d keycode 0x%02X", event.position, binding->param1); - return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, binding->param1, true)); + return ZMK_EVENT_RAISE(keycode_state_changed_from_encoded(binding->param1, true)); } static int on_keymap_binding_released(struct zmk_behavior_binding *binding, struct zmk_behavior_binding_event event) { - struct device *dev = device_get_binding(binding->behavior_dev); - const struct behavior_key_press_config *cfg = dev->config_info; - LOG_DBG("position %d usage_page 0x%02X keycode 0x%02X", event.position, cfg->usage_page, - binding->param1); + LOG_DBG("position %d keycode 0x%02X", event.position, binding->param1); - return ZMK_EVENT_RAISE(create_keycode_state_changed(cfg->usage_page, binding->param1, false)); + return ZMK_EVENT_RAISE(keycode_state_changed_from_encoded(binding->param1, false)); } static const struct behavior_driver_api behavior_key_press_driver_api = { .binding_pressed = on_keymap_binding_pressed, .binding_released = on_keymap_binding_released}; #define KP_INST(n) \ - static const struct behavior_key_press_config behavior_key_press_config_##n = { \ - .usage_page = DT_INST_PROP(n, usage_page)}; \ - static struct behavior_key_press_data behavior_key_press_data_##n; \ - DEVICE_AND_API_INIT(behavior_key_press_##n, DT_INST_LABEL(n), behavior_key_press_init, \ - &behavior_key_press_data_##n, &behavior_key_press_config_##n, APPLICATION, \ - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_key_press_driver_api); + DEVICE_AND_API_INIT(behavior_key_press_##n, DT_INST_LABEL(n), behavior_key_press_init, NULL, \ + NULL, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \ + &behavior_key_press_driver_api); DT_INST_FOREACH_STATUS_OKAY(KP_INST) diff --git a/app/src/behaviors/behavior_sensor_rotate_key_press.c b/app/src/behaviors/behavior_sensor_rotate_key_press.c index 71c4376c..d0a22961 100644 --- a/app/src/behaviors/behavior_sensor_rotate_key_press.c +++ b/app/src/behaviors/behavior_sensor_rotate_key_press.c @@ -16,23 +16,14 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); -struct behavior_sensor_rotate_key_press_config { - u8_t usage_page; -}; -struct behavior_sensor_rotate_key_press_data {}; - static int behavior_sensor_rotate_key_press_init(struct device *dev) { return 0; }; static int on_sensor_binding_triggered(struct zmk_behavior_binding *binding, struct device *sensor) { - struct device *dev = device_get_binding(binding->behavior_dev); - const struct behavior_sensor_rotate_key_press_config *cfg = dev->config_info; struct sensor_value value; int err; u32_t keycode; - struct keycode_state_changed *ev; - LOG_DBG("usage_page 0x%02X inc keycode 0x%02X dec keycode 0x%02X", cfg->usage_page, - binding->param1, binding->param2); + LOG_DBG("inc keycode 0x%02X dec keycode 0x%02X", binding->param1, binding->param2); err = sensor_channel_get(sensor, SENSOR_CHAN_ROTATION, &value); @@ -54,33 +45,21 @@ static int on_sensor_binding_triggered(struct zmk_behavior_binding *binding, LOG_DBG("SEND %d", keycode); - ev = new_keycode_state_changed(); - ev->usage_page = cfg->usage_page; - ev->keycode = keycode; - ev->state = true; - ZMK_EVENT_RAISE(ev); + ZMK_EVENT_RAISE(keycode_state_changed_from_encoded(keycode, true)); // TODO: Better way to do this? k_msleep(5); - ev = new_keycode_state_changed(); - ev->usage_page = cfg->usage_page; - ev->keycode = keycode; - ev->state = false; - return ZMK_EVENT_RAISE(ev); + return ZMK_EVENT_RAISE(keycode_state_changed_from_encoded(keycode, false)); } static const struct behavior_driver_api behavior_sensor_rotate_key_press_driver_api = { .sensor_binding_triggered = on_sensor_binding_triggered}; #define KP_INST(n) \ - static const struct behavior_sensor_rotate_key_press_config \ - behavior_sensor_rotate_key_press_config_##n = {.usage_page = DT_INST_PROP(n, usage_page)}; \ - static struct behavior_sensor_rotate_key_press_data behavior_sensor_rotate_key_press_data_##n; \ - DEVICE_AND_API_INIT( \ - behavior_sensor_rotate_key_press_##n, DT_INST_LABEL(n), \ - behavior_sensor_rotate_key_press_init, &behavior_sensor_rotate_key_press_data_##n, \ - &behavior_sensor_rotate_key_press_config_##n, APPLICATION, \ - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_sensor_rotate_key_press_driver_api); + DEVICE_AND_API_INIT(behavior_sensor_rotate_key_press_##n, DT_INST_LABEL(n), \ + behavior_sensor_rotate_key_press_init, NULL, NULL, APPLICATION, \ + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \ + &behavior_sensor_rotate_key_press_driver_api); DT_INST_FOREACH_STATUS_OKAY(KP_INST) \ No newline at end of file diff --git a/app/src/hid.c b/app/src/hid.c index aeb1a553..7e733d96 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -9,6 +9,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include +#include static struct zmk_hid_keypad_report kp_report = { .report_id = 1, .body = {.modifiers = 0, ._reserved = 0, .keys = {0}}}; @@ -78,16 +79,16 @@ int zmk_hid_implicit_modifiers_release() { } int zmk_hid_keypad_press(zmk_key code) { - if (code >= LEFT_CONTROL && code <= RIGHT_GUI) { - return zmk_hid_register_mod(code - LEFT_CONTROL); + if (code >= HID_USAGE_KEY_KEYBOARD_LEFTCONTROL && code <= HID_USAGE_KEY_KEYBOARD_RIGHT_GUI) { + return zmk_hid_register_mod(code - HID_USAGE_KEY_KEYBOARD_LEFTCONTROL); } TOGGLE_KEYPAD(0U, code); return 0; }; int zmk_hid_keypad_release(zmk_key code) { - if (code >= LEFT_CONTROL && code <= RIGHT_GUI) { - return zmk_hid_unregister_mod(code - LEFT_CONTROL); + if (code >= HID_USAGE_KEY_KEYBOARD_LEFTCONTROL && code <= HID_USAGE_KEY_KEYBOARD_RIGHT_GUI) { + return zmk_hid_unregister_mod(code - HID_USAGE_KEY_KEYBOARD_LEFTCONTROL); } TOGGLE_KEYPAD(code, 0U); return 0; diff --git a/app/tests/keypress/behavior_keymap.dtsi b/app/tests/keypress/behavior_keymap.dtsi index 2e45ca09..216e760a 100644 --- a/app/tests/keypress/behavior_keymap.dtsi +++ b/app/tests/keypress/behavior_keymap.dtsi @@ -10,7 +10,7 @@ default_layer { bindings = < &kp B &none - &cp C_NEXT &none>; + &kp C_NEXT &none>; }; }; }; diff --git a/app/tests/momentary-layer/behavior_keymap.dtsi b/app/tests/momentary-layer/behavior_keymap.dtsi index cdc37a79..6cc3140f 100644 --- a/app/tests/momentary-layer/behavior_keymap.dtsi +++ b/app/tests/momentary-layer/behavior_keymap.dtsi @@ -15,7 +15,7 @@ lower_layer { bindings = < - &cp C_NEXT &trans + &kp C_NEXT &trans &kp L &kp J>; }; diff --git a/app/tests/toggle-layer/behavior_keymap.dtsi b/app/tests/toggle-layer/behavior_keymap.dtsi index 5098785d..2523d867 100644 --- a/app/tests/toggle-layer/behavior_keymap.dtsi +++ b/app/tests/toggle-layer/behavior_keymap.dtsi @@ -15,7 +15,7 @@ lower_layer { bindings = < - &cp C_NEXT &trans + &kp C_NEXT &trans &kp L &kp J>; }; diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md index 182240d5..7ae5fc07 100644 --- a/docs/docs/behavior/hold-tap.md +++ b/docs/docs/behavior/hold-tap.md @@ -62,7 +62,7 @@ A code example which configures a mod-tap setting that works with homerow mods: If this config does not work for you, try the flavor "tap-preferred" and a short tapping_term_ms such as 120ms. -If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&cp>;`. Only single-argument behaviors are supported at the moment. +If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&kp>;`. Only single-argument behaviors are supported at the moment. #### Comparison to QMK diff --git a/docs/docs/behavior/key-press.md b/docs/docs/behavior/key-press.md index 56b6a493..315e1266 100644 --- a/docs/docs/behavior/key-press.md +++ b/docs/docs/behavior/key-press.md @@ -46,22 +46,3 @@ Example: ``` &kp A ``` - -## Consumer Key Press - -The "consumer key press" behavior allows you to send "consumer" usage page keycodes on press/release. -These are mostly used for media and power related keycodes, such as sending "Pause", "Scan Track Next", -"Scan Track Previous", etc. - -There are a subset of the full consumer usage IDs found in the `keys.h` include, prefixed with `C_`, e.g. `C_PREV`. - -### Behavior Binding - -- Reference: `&cp` -- Parameter: The keycode usage ID from the consumer usage page, e.g. `C_PREV` or `C_EJECT` - -Example: - -``` -&cp C_PREV -``` diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 9ad117c4..f3491ddd 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -377,7 +377,7 @@ Here is an example simple keymap for the Kyria, with only one layer: &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; - sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; + sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; }; }; }; @@ -385,15 +385,14 @@ Here is an example simple keymap for the Kyria, with only one layer: ``` :::note -The two `#include` lines at the top of the keymap are required in order to bring in the default set of behaviors to make them available to bind, and to import a set of defines for the HID keycodes, so keymaps can use parameters like `N2` or `K` instead of the raw keycode numeric values. +The two `#include` lines at the top of the keymap are required in order to bring in the default set of behaviors to make them available to bind, and to import a set of defines for the key codes, so keymaps can use parameters like `N2` or `K` instead of the raw keycode numeric values. ::: ### Keymap Behaviors Further documentation on behaviors and bindings is forthcoming, but a summary of the current behaviors you can bind to key positions is as follows: -- `kp` is the "key press" behavior, and takes a single binding argument of the HID keycode from the 'keyboard/keypad" HID usage table. -- `cp` is the "consumer key press" behavior, and takes a single binding argument of the HID keycode from the "consumer page" HID usage table. This is mostly useful for media keys. +- `kp` is the "key press" behavior, and takes a single binding argument of the key code from the 'keyboard/keypad" HID usage table. - `mo` is the "momentary layer" behaviour, and takes a single binding argument of the numeric ID of the layer to momentarily enable when that key is held. - `trans` is the "transparent" behavior, useful to be place in higher layers above `mo` bindings to be sure the key release is handled by the lower layer. No binding arguments are required. - `mt` is the "mod-tap" behavior, and takes two binding arguments, the modifier to use if held, and the keycode to send if tapped. @@ -476,7 +475,7 @@ For split keyboards, make sure to add left hand encoders to the left .overlay fi Add the following line to your keymap file to add default encoder behavior bindings: ``` -sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN>; +sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>; ``` Add additional bindings as necessary to match the default number of encoders on your board. See the [Encoders](/docs/feature/encoders) and [Keymap](/docs/feature/keymaps) feature documentation for more details. diff --git a/docs/docs/feature/encoders.md b/docs/docs/feature/encoders.md index 79b5c3f6..b78f89e3 100644 --- a/docs/docs/feature/encoders.md +++ b/docs/docs/feature/encoders.md @@ -25,7 +25,7 @@ Rotation is handled separately as a type of sensor. The behavior for this is set sensor-bindings = ; ``` -- `BINDING` is one of two rotation bindings that are currently defined, `&inc_dec_cp` for consumer key presses or `&inc_dec_kp` for normal key presses (see [Key Press](/docs/behavior/key-press) for the difference between the two). +- `BINDING`, for now, has only one behavior available; `&inc_dec_kp` for key presses (see [Key Press](/docs/behavior/key-press) for details on available keycodes). - `CW_KEY` is the keycode activated by a clockwise turn. - `CCW_KEY` is the keycode activated by a counter-clockwise turn. @@ -34,7 +34,7 @@ Additional encoders can be configured by adding more `BINDING CW_KEY CCW_KEY` se As an example, a complete `sensor-bindings` for a Kyria with two encoders could look like: ``` -sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; +sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; ``` Here, the left encoder is configured to control volume up and down while the right encoder sends either Page Up or Page Down. diff --git a/docs/docs/feature/keymaps.md b/docs/docs/feature/keymaps.md index 9c5a0647..203b9408 100644 --- a/docs/docs/feature/keymaps.md +++ b/docs/docs/feature/keymaps.md @@ -139,7 +139,7 @@ that defines just one layer for this keymap: &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; - sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; + sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; }; }; ``` @@ -176,7 +176,7 @@ Putting this all together, a complete [`kyria.keymap`](https://github.com/zmkfir &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; - sensor-bindings = <&inc_dec_cp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; + sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>; }; }; }; diff --git a/docs/docs/intro.md b/docs/docs/intro.md index cb227a21..a56e343e 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -22,7 +22,7 @@ ZMK is currently missing some features found in other popular firmware. This tab | [Keymaps and Layers](behavior/layers) | ✅ | ✅ | ✅ | | [Hold-Tap](behavior/hold-tap) (which includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | ✅ | | [Basic Keycodes](behavior/key-press) | ✅ | ✅ | ✅ | -| [Basic consumer (Media) Keycodes](behavior/key-press#consumer-key-press) | ✅ | ✅ | ✅ | +| [Basic consumer (Media) Keycodes](behavior/key-press) | ✅ | ✅ | ✅ | | [Encoders](feature/encoders)[^1] | ✅ | | ✅ | | [OLED Display Support](feature/displays)[^2] | 🚧 | 🚧 | ✅ | | [RGB Underglow](feature/underglow) | ✅ | ✅ | ✅ | From a4dc92a2b9e1838287d7f9bf8a8551e8dfdf2864 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Wed, 4 Nov 2020 16:56:22 -0500 Subject: [PATCH 334/353] refactor: Replace use of `cp` with `kp` for shields. --- app/boards/shields/boardsource3x4/boardsource3x4.keymap | 4 ++-- app/boards/shields/kyria/kyria.keymap | 2 +- app/boards/shields/lily58/lily58.keymap | 6 +++--- app/boards/shields/nibble/nibble.keymap | 6 +++--- app/boards/shields/romac_plus/romac_plus.keymap | 4 ++-- app/boards/shields/sofle/sofle.keymap | 8 ++++---- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/boards/shields/boardsource3x4/boardsource3x4.keymap b/app/boards/shields/boardsource3x4/boardsource3x4.keymap index dfeeadef..3b76863d 100644 --- a/app/boards/shields/boardsource3x4/boardsource3x4.keymap +++ b/app/boards/shields/boardsource3x4/boardsource3x4.keymap @@ -15,8 +15,8 @@ default_layer { bindings = < - &tog 1 &cp M_PREV &cp M_PLAY &cp M_NEXT - &mo 2 &cp M_VOLD &kp UARW &cp M_VOLU + &tog 1 &kp M_PREV &kp M_PLAY &kp M_NEXT + &mo 2 &kp M_VOLD &kp UARW &kp M_VOLU &mo 3 &kp LARW &kp DARW &kp RARW >; diff --git a/app/boards/shields/kyria/kyria.keymap b/app/boards/shields/kyria/kyria.keymap index ac0d13f0..a05f6cef 100644 --- a/app/boards/shields/kyria/kyria.keymap +++ b/app/boards/shields/kyria/kyria.keymap @@ -24,7 +24,7 @@ &kp LGUI &kp DEL &kp RET &kp SPC &kp ESC &kp RET &kp SPC &kp TAB &kp BKSP &kp RALT >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; + sensor-bindings = <&inc_dec_kp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; }; }; }; diff --git a/app/boards/shields/lily58/lily58.keymap b/app/boards/shields/lily58/lily58.keymap index d44b3fe8..73ade143 100644 --- a/app/boards/shields/lily58/lily58.keymap +++ b/app/boards/shields/lily58/lily58.keymap @@ -28,7 +28,7 @@ &kp LALT &kp LGUI &mo 1 &kp SPC &kp RET &mo 2 &kp BKSP &kp RGUI >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; + sensor-bindings = <&inc_dec_kp M_VOLU M_VOLD>; }; lower_layer { @@ -46,7 +46,7 @@ &trans &trans &trans &trans &trans &trans &trans &trans >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; + sensor-bindings = <&inc_dec_kp M_VOLU M_VOLD>; }; raise_layer { @@ -64,7 +64,7 @@ &trans &trans &trans &trans &trans &trans &trans &trans >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD>; + sensor-bindings = <&inc_dec_kp M_VOLU M_VOLD>; }; }; }; diff --git a/app/boards/shields/nibble/nibble.keymap b/app/boards/shields/nibble/nibble.keymap index dd37ad90..f88d9144 100644 --- a/app/boards/shields/nibble/nibble.keymap +++ b/app/boards/shields/nibble/nibble.keymap @@ -18,8 +18,8 @@ default_layer { bindings = < &kp ESC &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &kp MINUS &kp EQL &kp BKSP &kp HOME -&cp M_VOLU &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH &kp DEL -&cp M_VOLD &kp CLCK &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT &kp RET &kp PGUP +&kp M_VOLU &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH &kp DEL +&kp M_VOLD &kp CLCK &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT &kp RET &kp PGUP &trans &kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RSFT &kp UARW &kp PGDN &trans &kp LCTL &kp LGUI &kp LALT &kp SPC &mo FUNC &kp RALT &kp RCTL &kp LARW &kp DARW &kp RARW >; @@ -30,7 +30,7 @@ &bt BT_CLR &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &bootloader &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &bt BT_PRV &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans -&bt BT_NXT &trans &trans &trans &trans &trans &trans &trans &cp M_PREV &cp M_PLAY &cp M_NEXT +&bt BT_NXT &trans &trans &trans &trans &trans &trans &trans &kp M_PREV &kp M_PLAY &kp M_NEXT >; }; }; diff --git a/app/boards/shields/romac_plus/romac_plus.keymap b/app/boards/shields/romac_plus/romac_plus.keymap index d8d1f787..2c1929da 100644 --- a/app/boards/shields/romac_plus/romac_plus.keymap +++ b/app/boards/shields/romac_plus/romac_plus.keymap @@ -23,10 +23,10 @@ &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_1 &kp NUM_2 &kp NUM_3 - &cp M_PLAY &kp NUM_0 &mo 1 + &kp M_PLAY &kp NUM_0 &mo 1 >; - sensor-bindings = <&inc_dec_cp M_NEXT M_PREV>; + sensor-bindings = <&inc_dec_kp M_NEXT M_PREV>; }; nav_layer { diff --git a/app/boards/shields/sofle/sofle.keymap b/app/boards/shields/sofle/sofle.keymap index e2ebc1aa..0bebb781 100644 --- a/app/boards/shields/sofle/sofle.keymap +++ b/app/boards/shields/sofle/sofle.keymap @@ -23,11 +23,11 @@ &kp GRAV &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 &none &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BKSP &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SCLN &kp QUOT -&kp LSFT &kp Z &kp X &kp C &kp V &kp B &cp M_MUTE &none &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RSFT +&kp LSFT &kp Z &kp X &kp C &kp V &kp B &kp M_MUTE &none &kp N &kp M &kp CMMA &kp DOT &kp FSLH &kp RSFT &kp LGUI &kp LALT &kp LCTL &mo 1 &kp RET &kp SPC &mo 2 &kp RCTL &kp RALT &kp RGUI >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; + sensor-bindings = <&inc_dec_kp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; }; lower_layer { @@ -46,7 +46,7 @@ &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; + sensor-bindings = <&inc_dec_kp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; }; raise_layer { @@ -64,7 +64,7 @@ &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; - sensor-bindings = <&inc_dec_cp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; + sensor-bindings = <&inc_dec_kp M_VOLU M_VOLD &inc_dec_kp PGUP PGDN>; }; }; }; From 194854ff7b61999f935e46d7a99060a655292490 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Fri, 6 Nov 2020 13:32:42 +0000 Subject: [PATCH 335/353] refactor(hid): Replace `0x01` with `HID_USAGE_CONSUMER_CONSUMER_CONTROL` This should've changed alongside: 711658206f86fc6af35be7d104243dfcf857f194 --- app/include/zmk/hid.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/include/zmk/hid.h b/app/include/zmk/hid.h index e53a8e4c..63cdf3b8 100644 --- a/app/include/zmk/hid.h +++ b/app/include/zmk/hid.h @@ -103,7 +103,7 @@ static const u8_t zmk_hid_report_desc[] = { HID_USAGE_CONSUMER, /* USAGE (Consumer Control) */ HID_LI_USAGE, - 0x01, + HID_USAGE_CONSUMER_CONSUMER_CONTROL, /* Consumer Page */ HID_MI_COLLECTION, COLLECTION_APPLICATION, From ff638eb0105a22780d5084da58da83c98dc6d324 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Fri, 6 Nov 2020 19:42:54 +0000 Subject: [PATCH 336/353] docs(codes): Add (key) codes documentation Create codes documentation for standardized keys. Closes #218. Fixes #308. Ref #21. --- docs/docs/codes/_applications.mdx | 9 + docs/docs/codes/_editing.mdx | 9 + docs/docs/codes/_footnotes/example.mdx | 13 + docs/docs/codes/_input-assist.mdx | 5 + docs/docs/codes/_keyboard-keypad.mdx | 59 + docs/docs/codes/_media.mdx | 21 + docs/docs/codes/_power.mdx | 5 + docs/docs/codes/applications.mdx | 15 + docs/docs/codes/editing.mdx | 15 + docs/docs/codes/index.mdx | 33 + docs/docs/codes/input-assist.mdx | 15 + docs/docs/codes/keyboard-keypad.mdx | 15 + docs/docs/codes/media.mdx | 15 + docs/docs/codes/power.mdx | 15 + docs/docusaurus.config.js | 5 +- docs/package-lock.json | 195 +- docs/package.json | 7 +- docs/sidebars.js | 9 + docs/src/components/codes/Context.jsx | 17 + docs/src/components/codes/Description.jsx | 51 + docs/src/components/codes/Footnote.jsx | 23 + docs/src/components/codes/FootnoteRef.jsx | 22 + docs/src/components/codes/FootnoteRefs.jsx | 43 + docs/src/components/codes/Footnotes.jsx | 30 + docs/src/components/codes/LinkIcon.jsx | 14 + docs/src/components/codes/Name.jsx | 25 + docs/src/components/codes/OsLegend.jsx | 23 + docs/src/components/codes/OsSupport.jsx | 26 + docs/src/components/codes/OsSupportIcon.jsx | 51 + docs/src/components/codes/Table.jsx | 80 + docs/src/components/codes/TableRow.jsx | 70 + docs/src/components/codes/ToastyContainer.jsx | 22 + .../codes/ToastyCopyToClipboard.jsx | 30 + docs/src/css/codes.css | 220 + docs/src/data/footnotes.js | 11 + docs/src/data/groups.js | 414 + docs/src/data/hid-applications.js | 11 + docs/src/data/hid-usage-pages.js | 9 + docs/src/data/hid.js | 7837 +++++++++++++++++ docs/src/data/operating-systems.js | 38 + docs/src/footnotes.js | 14 + docs/src/groups.js | 11 + docs/src/hid-usage.js | 9 + docs/src/hid.js | 20 + 44 files changed, 9578 insertions(+), 3 deletions(-) create mode 100644 docs/docs/codes/_applications.mdx create mode 100644 docs/docs/codes/_editing.mdx create mode 100644 docs/docs/codes/_footnotes/example.mdx create mode 100644 docs/docs/codes/_input-assist.mdx create mode 100644 docs/docs/codes/_keyboard-keypad.mdx create mode 100644 docs/docs/codes/_media.mdx create mode 100644 docs/docs/codes/_power.mdx create mode 100644 docs/docs/codes/applications.mdx create mode 100644 docs/docs/codes/editing.mdx create mode 100644 docs/docs/codes/index.mdx create mode 100644 docs/docs/codes/input-assist.mdx create mode 100644 docs/docs/codes/keyboard-keypad.mdx create mode 100644 docs/docs/codes/media.mdx create mode 100644 docs/docs/codes/power.mdx create mode 100644 docs/src/components/codes/Context.jsx create mode 100644 docs/src/components/codes/Description.jsx create mode 100644 docs/src/components/codes/Footnote.jsx create mode 100644 docs/src/components/codes/FootnoteRef.jsx create mode 100644 docs/src/components/codes/FootnoteRefs.jsx create mode 100644 docs/src/components/codes/Footnotes.jsx create mode 100644 docs/src/components/codes/LinkIcon.jsx create mode 100644 docs/src/components/codes/Name.jsx create mode 100644 docs/src/components/codes/OsLegend.jsx create mode 100644 docs/src/components/codes/OsSupport.jsx create mode 100644 docs/src/components/codes/OsSupportIcon.jsx create mode 100644 docs/src/components/codes/Table.jsx create mode 100644 docs/src/components/codes/TableRow.jsx create mode 100644 docs/src/components/codes/ToastyContainer.jsx create mode 100644 docs/src/components/codes/ToastyCopyToClipboard.jsx create mode 100644 docs/src/css/codes.css create mode 100644 docs/src/data/footnotes.js create mode 100644 docs/src/data/groups.js create mode 100644 docs/src/data/hid-applications.js create mode 100644 docs/src/data/hid-usage-pages.js create mode 100644 docs/src/data/hid.js create mode 100644 docs/src/data/operating-systems.js create mode 100644 docs/src/footnotes.js create mode 100644 docs/src/groups.js create mode 100644 docs/src/hid-usage.js create mode 100644 docs/src/hid.js diff --git a/docs/docs/codes/_applications.mdx b/docs/docs/codes/_applications.mdx new file mode 100644 index 00000000..099b701b --- /dev/null +++ b/docs/docs/codes/_applications.mdx @@ -0,0 +1,9 @@ +import Table from "@site/src/components/codes/Table"; + +## Application Controls + + + +## Applications (Launch) + +
diff --git a/docs/docs/codes/_editing.mdx b/docs/docs/codes/_editing.mdx new file mode 100644 index 00000000..2dd4d631 --- /dev/null +++ b/docs/docs/codes/_editing.mdx @@ -0,0 +1,9 @@ +import Table from "@site/src/components/codes/Table"; + +## Cut, Copy, Paste + +
+ +## Undo, Redo + +
diff --git a/docs/docs/codes/_footnotes/example.mdx b/docs/docs/codes/_footnotes/example.mdx new file mode 100644 index 00000000..2dcdb109 --- /dev/null +++ b/docs/docs/codes/_footnotes/example.mdx @@ -0,0 +1,13 @@ +This is an _example_ footnote for **code** tables. + +- Footnotes are supported per row by each operating system column. +- Footnotes support MDX syntax. +- A footnote's `id` is its filename by convention (i.e. `example`). +- Footnotes must be included and listed in `src/data/footnotes.js` because they're statically compiled. +- Footnotes are assigned within `src/data/hid.js` using `column-id: footnote-id(s)` `K`:`V` pairs (case-sensitive), where: + - `K` is the column's `id`. + - `V` is the footnote's `id`. + - `V` can also be an array of footnote ids (_optional_). +- The footnote system aims to prevent duplication of _sources_ (mdx). +- Footnotes are listed under each table, so try to avoid multiline notes unless it's necessary! +- Footnotes are automatically numbered. diff --git a/docs/docs/codes/_input-assist.mdx b/docs/docs/codes/_input-assist.mdx new file mode 100644 index 00000000..7dc432b4 --- /dev/null +++ b/docs/docs/codes/_input-assist.mdx @@ -0,0 +1,5 @@ +import Table from "@site/src/components/codes/Table"; + +## Input Assist + +
diff --git a/docs/docs/codes/_keyboard-keypad.mdx b/docs/docs/codes/_keyboard-keypad.mdx new file mode 100644 index 00000000..b1852d64 --- /dev/null +++ b/docs/docs/codes/_keyboard-keypad.mdx @@ -0,0 +1,59 @@ +import Table from "@site/src/components/codes/Table"; + +## Keyboard + +### Letters + +
+ +### Numbers + +
+ +### Symbols / Punctuation + +
+ +### Control & Whitespace + +
+ +### Navigation + +
+ +### Modifiers + +
+ +### Locks + +
+ +### F Keys + +
+ +### International + +
+ +### Language + +
+ +### Miscellaneous + +
+ +## Keypad + +
+ +### Numbers + +
+ +### Symbols / Operations + +
diff --git a/docs/docs/codes/_media.mdx b/docs/docs/codes/_media.mdx new file mode 100644 index 00000000..7be80ab9 --- /dev/null +++ b/docs/docs/codes/_media.mdx @@ -0,0 +1,21 @@ +import Table from "@site/src/components/codes/Table"; + +## Sound / Volume + +
+ +## Display + +
+ +## Media Controls + +
+ +## Consumer Menus + +
+ +## Consumer Controls + +
diff --git a/docs/docs/codes/_power.mdx b/docs/docs/codes/_power.mdx new file mode 100644 index 00000000..dd06e953 --- /dev/null +++ b/docs/docs/codes/_power.mdx @@ -0,0 +1,5 @@ +import Table from "@site/src/components/codes/Table"; + +## Power & Lock + +
diff --git a/docs/docs/codes/applications.mdx b/docs/docs/codes/applications.mdx new file mode 100644 index 00000000..0c9416f3 --- /dev/null +++ b/docs/docs/codes/applications.mdx @@ -0,0 +1,15 @@ +--- +title: Applications +sidebar_label: Applications +hide_title: true +--- + +import OsLegend from "@site/src/components/codes/OsLegend"; +import ToastyContainer from "@site/src/components/codes/ToastyContainer"; +import Content, { rightToc as contentToc } from "./_applications.mdx"; + +export const rightToc = contentToc; + + + + diff --git a/docs/docs/codes/editing.mdx b/docs/docs/codes/editing.mdx new file mode 100644 index 00000000..a65b8b6f --- /dev/null +++ b/docs/docs/codes/editing.mdx @@ -0,0 +1,15 @@ +--- +title: Editing +sidebar_label: Editing +hide_title: true +--- + +import OsLegend from "@site/src/components/codes/OsLegend"; +import ToastyContainer from "@site/src/components/codes/ToastyContainer"; +import Content, { rightToc as contentToc } from "./_editing.mdx"; + +export const rightToc = contentToc; + + + + diff --git a/docs/docs/codes/index.mdx b/docs/docs/codes/index.mdx new file mode 100644 index 00000000..a0c9df18 --- /dev/null +++ b/docs/docs/codes/index.mdx @@ -0,0 +1,33 @@ +--- +title: Codes +sidebar_label: Full List +hide_title: true +slug: ./ +--- + +import OsLegend from "@site/src/components/codes/OsLegend"; +import ToastyContainer from "@site/src/components/codes/ToastyContainer"; +import Key, { rightToc as keyToc } from "./_keyboard-keypad.mdx"; +import Editing, { rightToc as editingToc } from "./_editing.mdx"; +import Media, { rightToc as mediaToc } from "./_media.mdx"; +import Applications, { rightToc as applicationsToc } from "./_applications.mdx"; +import InputAssist, { rightToc as inputAssistToc } from "./_input-assist.mdx"; +import Power, { rightToc as powerToc } from "./_power.mdx"; + +export const rightToc = [ + ...keyToc, + ...editingToc, + ...mediaToc, + ...applicationsToc, + ...inputAssistToc, + ...powerToc, +]; + + + + + + + + + diff --git a/docs/docs/codes/input-assist.mdx b/docs/docs/codes/input-assist.mdx new file mode 100644 index 00000000..c8bae19e --- /dev/null +++ b/docs/docs/codes/input-assist.mdx @@ -0,0 +1,15 @@ +--- +title: Input Assist +sidebar_label: Input Assist +hide_title: true +--- + +import OsLegend from "@site/src/components/codes/OsLegend"; +import ToastyContainer from "@site/src/components/codes/ToastyContainer"; +import Content, { rightToc as contentToc } from "./_input-assist.mdx"; + +export const rightToc = contentToc; + + + + diff --git a/docs/docs/codes/keyboard-keypad.mdx b/docs/docs/codes/keyboard-keypad.mdx new file mode 100644 index 00000000..6a5e605d --- /dev/null +++ b/docs/docs/codes/keyboard-keypad.mdx @@ -0,0 +1,15 @@ +--- +title: Keyboard & Keypad +sidebar_label: Keyboard & Keypad +hide_title: true +--- + +import OsLegend from "@site/src/components/codes/OsLegend"; +import ToastyContainer from "@site/src/components/codes/ToastyContainer"; +import Content, { rightToc as contentToc } from "./_keyboard-keypad.mdx"; + +export const rightToc = contentToc; + + + + diff --git a/docs/docs/codes/media.mdx b/docs/docs/codes/media.mdx new file mode 100644 index 00000000..588bb4cb --- /dev/null +++ b/docs/docs/codes/media.mdx @@ -0,0 +1,15 @@ +--- +title: Media +sidebar_label: Media +hide_title: true +--- + +import OsLegend from "@site/src/components/codes/OsLegend"; +import ToastyContainer from "@site/src/components/codes/ToastyContainer"; +import Content, { rightToc as contentToc } from "./_media.mdx"; + +export const rightToc = contentToc; + + + + diff --git a/docs/docs/codes/power.mdx b/docs/docs/codes/power.mdx new file mode 100644 index 00000000..7e8ffd10 --- /dev/null +++ b/docs/docs/codes/power.mdx @@ -0,0 +1,15 @@ +--- +title: Power +sidebar_label: Power +hide_title: true +--- + +import OsLegend from "@site/src/components/codes/OsLegend"; +import ToastyContainer from "@site/src/components/codes/ToastyContainer"; +import Content, { rightToc as contentToc } from "./_power.mdx"; + +export const rightToc = contentToc; + + + + diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index b0906631..97548342 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -112,7 +112,10 @@ module.exports = { editUrl: "https://github.com/zmkfirmware/zmk/edit/main/docs/", }, theme: { - customCss: require.resolve("./src/css/custom.css"), + customCss: [ + require.resolve("./src/css/custom.css"), + require.resolve("./src/css/codes.css"), + ], }, }, ], diff --git a/docs/package-lock.json b/docs/package-lock.json index ad46d829..757beb04 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -9,9 +9,14 @@ "dependencies": { "@docusaurus/core": "^2.0.0-alpha.66", "@docusaurus/preset-classic": "^2.0.0-alpha.66", + "@fortawesome/fontawesome-svg-core": "^1.2.32", + "@fortawesome/free-solid-svg-icons": "^5.15.1", + "@fortawesome/react-fontawesome": "^0.1.12", "classnames": "^2.2.6", "react": "^16.8.4", - "react-dom": "^16.8.4" + "react-copy-to-clipboard": "^5.0.2", + "react-dom": "^16.8.4", + "react-toastify": "^6.0.9" }, "devDependencies": { "eslint": "^7.12.0", @@ -2025,6 +2030,51 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz", + "integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "1.2.32", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz", + "integrity": "sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz", + "integrity": "sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.12.tgz", + "integrity": "sha512-kV6HtqotM3K4YIXlTVvomuIi6QgGCvYm++ImyEx2wwgmSppZ6kbbA29ASwjAUBD63j2OFU0yoxeXpZkjrrX0qQ==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.20", + "react": ">=16.x" + } + }, "node_modules/@francoischalifour/autocomplete-core": { "version": "1.0.0-alpha.28", "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-core/-/autocomplete-core-1.0.0-alpha.28.tgz", @@ -4513,6 +4563,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, "node_modules/copy-webpack-plugin": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz", @@ -5282,6 +5340,15 @@ "utila": "0.4.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", + "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dom-serializer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", @@ -11265,6 +11332,18 @@ "pure-color": "^1.2.0" } }, + "node_modules/react-copy-to-clipboard": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.2.tgz", + "integrity": "sha512-/2t5mLMMPuN5GmdXo6TebFa8IoFxZ+KTDDqYhcDm0PhkgEzSxVvIX26G20s1EB02A4h2UZgwtfymZ3lGJm0OLg==", + "dependencies": { + "copy-to-clipboard": "^3", + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0" + } + }, "node_modules/react-dev-utils": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", @@ -11792,6 +11871,19 @@ "react": ">=0.14.0 <17.0.0" } }, + "node_modules/react-toastify": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-6.0.9.tgz", + "integrity": "sha512-StHXv+4kezHUnPyoILlvygSptQ79bxVuvKcC05yXP0FlqQgPA1ue+80BqxZZiCw2jWDGiY2MHyqBfFKf5YzZbA==", + "dependencies": { + "classnames": "^2.2.6", + "prop-types": "^15.7.2", + "react-transition-group": "^4.4.1" + }, + "peerDependencies": { + "react": ">=16" + } + }, "node_modules/react-toggle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/react-toggle/-/react-toggle-4.1.1.tgz", @@ -11805,6 +11897,21 @@ "react-dom": "^15.3.0 || ^16.0.0" } }, + "node_modules/react-transition-group": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -13891,6 +13998,11 @@ "is-plain-object": "2.0.4" } }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -17682,6 +17794,35 @@ } } }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz", + "integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.32", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz", + "integrity": "sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz", + "integrity": "sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.32" + } + }, + "@fortawesome/react-fontawesome": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.12.tgz", + "integrity": "sha512-kV6HtqotM3K4YIXlTVvomuIi6QgGCvYm++ImyEx2wwgmSppZ6kbbA29ASwjAUBD63j2OFU0yoxeXpZkjrrX0qQ==", + "requires": { + "prop-types": "^15.7.2" + } + }, "@francoischalifour/autocomplete-core": { "version": "1.0.0-alpha.28", "resolved": "https://registry.npmjs.org/@francoischalifour/autocomplete-core/-/autocomplete-core-1.0.0-alpha.28.tgz", @@ -20118,6 +20259,14 @@ "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-2.2.0.tgz", "integrity": "sha512-WRvoIdnTs1rgPMkgA2pUOa/M4Enh2uzCwdKsOMYNAJiz/4ZvEJgmbF4OmninPmlFdAWisfeh0tH+Cpf7ni3RqQ==" }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, "copy-webpack-plugin": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz", @@ -20906,6 +21055,15 @@ "utila": "0.4.0" } }, + "dom-helpers": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", + "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "dom-serializer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", @@ -26753,6 +26911,15 @@ "pure-color": "^1.2.0" } }, + "react-copy-to-clipboard": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.2.tgz", + "integrity": "sha512-/2t5mLMMPuN5GmdXo6TebFa8IoFxZ+KTDDqYhcDm0PhkgEzSxVvIX26G20s1EB02A4h2UZgwtfymZ3lGJm0OLg==", + "requires": { + "copy-to-clipboard": "^3", + "prop-types": "^15.5.8" + } + }, "react-dev-utils": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", @@ -27293,6 +27460,16 @@ "prop-types": "^15.6.0" } }, + "react-toastify": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-6.0.9.tgz", + "integrity": "sha512-StHXv+4kezHUnPyoILlvygSptQ79bxVuvKcC05yXP0FlqQgPA1ue+80BqxZZiCw2jWDGiY2MHyqBfFKf5YzZbA==", + "requires": { + "classnames": "^2.2.6", + "prop-types": "^15.7.2", + "react-transition-group": "^4.4.1" + } + }, "react-toggle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/react-toggle/-/react-toggle-4.1.1.tgz", @@ -27301,6 +27478,17 @@ "classnames": "^2.2.5" } }, + "react-transition-group": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -29358,6 +29546,11 @@ "is-number": "7.0.0" } }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", diff --git a/docs/package.json b/docs/package.json index cb425066..00dc6275 100644 --- a/docs/package.json +++ b/docs/package.json @@ -16,9 +16,14 @@ "dependencies": { "@docusaurus/core": "^2.0.0-alpha.66", "@docusaurus/preset-classic": "^2.0.0-alpha.66", + "@fortawesome/fontawesome-svg-core": "^1.2.32", + "@fortawesome/free-solid-svg-icons": "^5.15.1", + "@fortawesome/react-fontawesome": "^0.1.12", "classnames": "^2.2.6", "react": "^16.8.4", - "react-dom": "^16.8.4" + "react-copy-to-clipboard": "^5.0.2", + "react-dom": "^16.8.4", + "react-toastify": "^6.0.9" }, "browserslist": { "production": [ diff --git a/docs/sidebars.js b/docs/sidebars.js index c8dc79fc..f05cd056 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -26,6 +26,15 @@ module.exports = { "behavior/lighting", "behavior/power", ], + Codes: [ + "codes/index", + "codes/keyboard-keypad", + "codes/editing", + "codes/media", + "codes/applications", + "codes/input-assist", + "codes/power", + ], Development: [ "dev-clean-room", "dev-setup", diff --git a/docs/src/components/codes/Context.jsx b/docs/src/components/codes/Context.jsx new file mode 100644 index 00000000..4fdcbfc0 --- /dev/null +++ b/docs/src/components/codes/Context.jsx @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; + +export default function Context({ children }) { + return

{children}

; +} + +Context.propTypes = { + children: PropTypes.oneOfType([PropTypes.element, PropTypes.string]) + .isRequired, +}; diff --git a/docs/src/components/codes/Description.jsx b/docs/src/components/codes/Description.jsx new file mode 100644 index 00000000..6d8c5f62 --- /dev/null +++ b/docs/src/components/codes/Description.jsx @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; + +const specialCharactersRegex = /(?:^|\s)((?:&(?:(?:\w+)|(?:#\d+));)|[_]|[^\w\s])(?:\s*\[([^[\]]+?)\])/g; + +function renderSpecialCharacters(description) { + const matches = Array.from(description.matchAll(specialCharactersRegex)); + if (matches.length == 0) return description; + let lastIndex = 0; + const parts = matches.reduce((acc, match, i) => { + const { index } = match; + const str = match[0]; + const chars = match[1]; + const meaning = match[2]; + if (index != lastIndex) { + acc.push(description.substring(lastIndex, index)); + } + const pos = str.indexOf(chars); + if (pos > 0) { + acc.push(description.substr(index, pos)); + } + acc.push( + + {description.substr(index + pos, chars.length)} + {meaning ? {meaning} : undefined} + + ); + lastIndex = index + str.length; + return acc; + }, []); + if (lastIndex < description.length) { + parts.push(description.substr(lastIndex)); + } + return parts; +} + +export default function Description({ description = "" }) { + return ( + {renderSpecialCharacters(description)} + ); +} + +Description.propTypes = { + description: PropTypes.string.isRequired, +}; diff --git a/docs/src/components/codes/Footnote.jsx b/docs/src/components/codes/Footnote.jsx new file mode 100644 index 00000000..c9396a30 --- /dev/null +++ b/docs/src/components/codes/Footnote.jsx @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; + +export default function Footnote({ children, symbol, id }) { + return ( +
+
{symbol}
+
{children}
+
+ ); +} + +Footnote.propTypes = { + children: PropTypes.element.isRequired, + symbol: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + id: PropTypes.string.isRequired, +}; diff --git a/docs/src/components/codes/FootnoteRef.jsx b/docs/src/components/codes/FootnoteRef.jsx new file mode 100644 index 00000000..c7b11a7d --- /dev/null +++ b/docs/src/components/codes/FootnoteRef.jsx @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; + +export default function FootnoteRef({ children, anchor }) { + return ( + + {children} + + ); +} + +FootnoteRef.propTypes = { + children: PropTypes.oneOfType([PropTypes.string, PropTypes.number]) + .isRequired, + anchor: PropTypes.string.isRequired, +}; diff --git a/docs/src/components/codes/FootnoteRefs.jsx b/docs/src/components/codes/FootnoteRefs.jsx new file mode 100644 index 00000000..3782c13f --- /dev/null +++ b/docs/src/components/codes/FootnoteRefs.jsx @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; +import FootnoteRef from "./FootnoteRef"; + +function joinReactElements(arr, delimiter) { + return arr.reduce((acc, fragment) => { + if (acc === null) { + return fragment; + } + return ( + <> + {acc} + {delimiter} + {fragment} + + ); + }, null); +} + +export default function FootnoteRefs({ footnotes }) { + return ( + + {joinReactElements( + footnotes.map((footnote) => ( + + {footnote.symbol} + + )), + ", " + )} + + ); +} + +FootnoteRefs.propTypes = { + footnotes: PropTypes.array.isRequired, +}; diff --git a/docs/src/components/codes/Footnotes.jsx b/docs/src/components/codes/Footnotes.jsx new file mode 100644 index 00000000..b382141f --- /dev/null +++ b/docs/src/components/codes/Footnotes.jsx @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; +import Footnote from "./Footnote"; + +export default function Footnotes({ footnotes = [], id }) { + return ( + + ); +} + +Footnotes.propTypes = { + footnotes: PropTypes.array.isRequired, + id: PropTypes.string.isRequired, +}; diff --git a/docs/src/components/codes/LinkIcon.jsx b/docs/src/components/codes/LinkIcon.jsx new file mode 100644 index 00000000..5bfeebd4 --- /dev/null +++ b/docs/src/components/codes/LinkIcon.jsx @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faExternalLinkAlt } from "@fortawesome/free-solid-svg-icons"; +export default function LinkIcon() { + return ; +} + +LinkIcon.propTypes = {}; diff --git a/docs/src/components/codes/Name.jsx b/docs/src/components/codes/Name.jsx new file mode 100644 index 00000000..52dc7347 --- /dev/null +++ b/docs/src/components/codes/Name.jsx @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; +import ToastyCopyToClipboard from "./ToastyCopyToClipboard"; + +export default function Name({ children, name }) { + return ( + + + {children} + + + ); +} + +Name.propTypes = { + children: PropTypes.oneOfType([PropTypes.element, PropTypes.string]) + .isRequired, + name: PropTypes.string.isRequired, +}; diff --git a/docs/src/components/codes/OsLegend.jsx b/docs/src/components/codes/OsLegend.jsx new file mode 100644 index 00000000..c53907fa --- /dev/null +++ b/docs/src/components/codes/OsLegend.jsx @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import operatingSystems from "@site/src/data/operating-systems"; + +export default function OsLegend() { + return ( +
+ {operatingSystems.map(({ key, className, heading, title }) => ( +
+ {heading} + {title} +
+ ))} +
+ ); +} + +OsLegend.propTypes = {}; diff --git a/docs/src/components/codes/OsSupport.jsx b/docs/src/components/codes/OsSupport.jsx new file mode 100644 index 00000000..2cb60c97 --- /dev/null +++ b/docs/src/components/codes/OsSupport.jsx @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; +import OsSupportIcon from "./OsSupportIcon"; +import FootnoteRefs from "./FootnoteRefs"; + +export default function OsSupport({ value, footnotes = [] }) { + return ( + <> + + {footnotes.length > 0 ? ( + + ) : undefined} + + ); +} + +OsSupport.propTypes = { + value: PropTypes.oneOf([true, false, null]), + footnotes: PropTypes.array.isRequired, +}; diff --git a/docs/src/components/codes/OsSupportIcon.jsx b/docs/src/components/codes/OsSupportIcon.jsx new file mode 100644 index 00000000..a518d62a --- /dev/null +++ b/docs/src/components/codes/OsSupportIcon.jsx @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; + +const Icon = ({ children, className, title }) => ( + + {children} + +); + +Icon.propTypes = { + children: PropTypes.oneOfType([PropTypes.element, PropTypes.string]) + .isRequired, + className: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, +}; + +export const Supported = () => ( + + ⭐ + +); +export const NotSupported = () => ( + + ❌ + +); +export const NotTested = () => ( + + ❔ + +); + +export default function OsSupportIcon({ value }) { + if (value === true) { + return ; + } + if (value === false) { + return ; + } + return ; +} + +OsSupportIcon.propTypes = { + value: PropTypes.oneOf([true, false, null]), +}; diff --git a/docs/src/components/codes/Table.jsx b/docs/src/components/codes/Table.jsx new file mode 100644 index 00000000..c7dd20c8 --- /dev/null +++ b/docs/src/components/codes/Table.jsx @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; +import TableRow from "./TableRow"; +import Footnotes from "./Footnotes"; +import LinkIcon from "./LinkIcon"; +import operatingSystems from "@site/src/data/operating-systems"; +import { getCodes } from "@site/src/hid"; +import { getGroup } from "@site/src/groups"; +import { getFootnote } from "@site/src/footnotes"; + +function extractFootnoteIds(codes) { + return Array.from( + new Set( + codes + .flatMap(({ footnotes }) => Object.values(footnotes)) + .map((refs) => (Array.isArray(refs) ? refs.flat() : refs)) + ) + ); +} + +export default function Table({ group }) { + const codes = getCodes(getGroup(group)); + + const footnotesAnchor = group + "-" + "footnotes"; + + const tableFootnotes = extractFootnoteIds(codes).map((id, i) => { + const Component = getFootnote(id); + return { + id, + anchor: footnotesAnchor, + symbol: i + 1, + value: Component ? : undefined, + }; + }); + + return ( +
+
+ + + + + + {operatingSystems.map(({ key, className, heading, title }) => ( + + ))} + + + + {Array.isArray(codes) + ? codes.map((code) => ( + + )) + : undefined} + +
NamesDescription + + + {heading} +
+ {tableFootnotes.length > 0 ? ( + + ) : undefined} + + ); +} + +Table.propTypes = { + group: PropTypes.string.isRequired, +}; diff --git a/docs/src/components/codes/TableRow.jsx b/docs/src/components/codes/TableRow.jsx new file mode 100644 index 00000000..a560911f --- /dev/null +++ b/docs/src/components/codes/TableRow.jsx @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; +import Name from "./Name"; +import Description from "./Description"; +import Context from "./Context"; +import LinkIcon from "./LinkIcon"; +import OsSupport from "./OsSupport"; +import operatingSystems from "@site/src/data/operating-systems"; + +export default function TableRow({ + names, + description, + context = "", + clarify = false, + documentation, + os, + footnotes, + tableFootnotes, +}) { + return ( + + + {names.map((name) => ( + + {name} + + ))} + + + + {clarify && context ? {context} : undefined} + + + + + + + {operatingSystems.map(({ key, className, title }) => ( + + + (Array.isArray(footnotes[key]) && + footnotes[key].includes(id)) || + footnotes[key] == id + )} + /> + + ))} + + ); +} + +TableRow.propTypes = { + names: PropTypes.array.isRequired, + description: PropTypes.string.isRequired, + context: PropTypes.string.isRequired, + clarify: PropTypes.bool, + documentation: PropTypes.string.isRequired, + os: PropTypes.object.isRequired, + footnotes: PropTypes.object.isRequired, + tableFootnotes: PropTypes.array.isRequired, +}; diff --git a/docs/src/components/codes/ToastyContainer.jsx b/docs/src/components/codes/ToastyContainer.jsx new file mode 100644 index 00000000..ee4e3bca --- /dev/null +++ b/docs/src/components/codes/ToastyContainer.jsx @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import { ToastContainer } from "react-toastify"; +import "react-toastify/dist/ReactToastify.css"; + +export default function ToastyContainer() { + return ( + + ); +} + +ToastyContainer.propTypes = {}; diff --git a/docs/src/components/codes/ToastyCopyToClipboard.jsx b/docs/src/components/codes/ToastyCopyToClipboard.jsx new file mode 100644 index 00000000..b0e98092 --- /dev/null +++ b/docs/src/components/codes/ToastyCopyToClipboard.jsx @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import React from "react"; +import PropTypes from "prop-types"; +import { toast } from "react-toastify"; +import { CopyToClipboard } from "react-copy-to-clipboard"; + +export default function ToastyCopyToClipboard({ children, text }) { + const notify = () => + toast( + + 📋 Copied {text} + + ); + return ( +
+ {children} +
+ ); +} + +ToastyCopyToClipboard.propTypes = { + children: PropTypes.oneOfType([PropTypes.element, PropTypes.string]) + .isRequired, + text: PropTypes.string.isRequired, +}; diff --git a/docs/src/css/codes.css b/docs/src/css/codes.css new file mode 100644 index 00000000..ce2c0efd --- /dev/null +++ b/docs/src/css/codes.css @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +.codes.os.legend { + position: sticky; + z-index: 1; + top: var(--ifm-navbar-height); + width: 100%; + padding-top: 0.5em; + padding-bottom: 0.5em; + background: var(--ifm-background-color); + display: flex; + justify-content: space-between; +} + +html[data-theme="light"] .codes.os.legend { + background: white; +} + +.codes.os.legend .os { + flex: 1; + margin-left: 0.2em; + margin-right: 0.2em; + padding: 0.1em; + border: 1px var(--ifm-table-border-color) solid; + border-radius: 0.5em; + text-align: center; +} + +.codes.os.legend .os .heading { + font-weight: bold; +} + +.codes.os.legend .os .heading::after { + content: " : "; + font-weight: normal; +} + +.codes .name { + cursor: copy; +} + +.codes .name:hover { + opacity: 0.8; +} + +.codes .name:active { + color: var(--ifm-font-color-base-inverse); + background: var(--ifm-font-color-base); +} + +.codes.os.legend, +.codes table { + font-size: 0.8em; +} + +.codes table { + display: table; + font-size: 0.8em; + margin-bottom: 0; +} + +.codes th, +.codes td { + padding: 0.2rem; +} + +.codes td { + position: relative; +} + +.codes th.names, +.codes th.description { + text-align: left; +} + +.codes td.names code { + display: block; + float: left; + clear: both; + margin-top: 1px; + margin-bottom: 1px; + font-size: 0.85em; +} + +.codes .context { + display: inline; + margin: 0 0 0 0.5em; + font-size: 0.85em; +} + +.codes .context::before { + content: "("; +} + +.codes .context::after { + content: ")"; +} + +.codes .symbol { + display: inline-flex; + flex-direction: column; +} + +.codes .symbol code { + align-self: flex-start; + width: auto; +} + +.codes .symbol .meaning { + flex: 1; + font-size: 0.8em; + text-transform: uppercase; +} + +.codes td.documentation, +.codes td.os { + width: 0.1%; + min-width: 1.9rem; + text-align: center; +} + +.codes td.documentation { + font-size: 0.8em; +} + +.codes td.documentation a { + cursor: help; +} + +.codes .os { + color: black; +} + +.codes td.os { + font-size: 0.8em; +} + +.codes .not-tested { + font-weight: bold; +} + +.codes .os.windows { + background: #caedfd; +} + +.codes .os.linux { + background: #fff2ca; +} + +.codes .os.android { + background: #d8eed9; +} + +.codes .os.macos { + background: #ececec; +} + +.codes .os.ios { + background: #ffffff; +} + +.codes .footnotes { + display: flex; + width: 100%; + margin-top: 0; + margin-bottom: 0.5rem; + padding: 0.2rem 0.5rem 0.2rem 0.5rem; + border: var(--ifm-table-border-width) dashed var(--ifm-table-border-color); + border-top: 0; + font-size: 0.8em; +} + +.codes .footnotes .label { + display: block; + margin-right: 1em; + font-style: italic; +} + +.codes .footnotes .label::after { + content: ":"; +} + +.codes .footnotes .anchor { + display: block; + position: relative; + top: calc(var(--ifm-navbar-height) * -1 - 6em); + visibility: hidden; +} + +.codes .footnote { + flex: 1; + display: flex; + margin-top: 0; + margin-bottom: 0; +} + +.codes .footnote .symbol { + flex: 0; + float: left; + margin-right: 0.4em; + font-size: 0.8em; +} + +.codes .footnote .content p { + margin-top: 0; + margin-bottom: 0; +} + +.codes .footnoteRefs { + float: right; + font-size: 0.8em; +} + +.codes .footnoteRefs a { + color: black; +} diff --git a/docs/src/data/footnotes.js b/docs/src/data/footnotes.js new file mode 100644 index 00000000..dabf98f5 --- /dev/null +++ b/docs/src/data/footnotes.js @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import example from "@site/docs/codes/_footnotes/example.mdx"; + +export default { + example, +}; diff --git a/docs/src/data/groups.js b/docs/src/data/groups.js new file mode 100644 index 00000000..f7ced161 --- /dev/null +++ b/docs/src/data/groups.js @@ -0,0 +1,414 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +export default { + "application-controls": [ + "K_MENU", + "C_AC_PROPERTIES", + "K_SELECT", + "C_AC_CANCEL", + "K_EXECUTE", + "C_AC_REFRESH", + "K_REFRESH", + "C_AC_STOP", + "K_STOP", + "C_AC_FORWARD", + "K_FORWARD", + "C_AC_BACK", + "K_BACK", + "C_AC_HOME", + "C_AC_BOOKMARKS", + "C_AC_NEW", + "C_AC_OPEN", + "C_AC_SAVE", + "C_AC_CLOSE", + "C_AC_EXIT", + "C_AC_PRINT", + "C_AC_FIND", + "K_FIND", + "K_FIND2", + "C_AC_SEARCH", + "C_AC_GOTO", + "C_AC_ZOOM", + "C_AC_ZOOM_IN", + "C_AC_ZOOM_OUT", + "C_AC_SCROLL_UP", + "K_SCROLL_UP", + "C_AC_SCROLL_DOWN", + "K_SCROLL_DOWN", + "C_AC_REPLY", + "C_AC_FORWARD_MAIL", + "C_AC_SEND", + "C_AC_EDIT", + "C_AC_INSERT", + "C_AC_DEL", + "C_AC_VIEW_TOGGLE", + "C_AC_DESKTOP_SHOW_ALL_WINDOWS", + "C_VOICE_COMMAND", + ], + applications: [ + "C_AL_NEXT_TASK", + "C_AL_PREVIOUS_TASK", + "C_AL_SELECT_TASK", + "C_AL_MY_COMPUTER", + "C_AL_DOCUMENTS", + "C_AL_FILE_BROWSER", + "C_AL_WWW", + "K_WWW", + "C_AL_EMAIL", + "C_AL_INSTANT_MESSAGING", + "C_AL_NETWORK_CHAT", + "C_AL_CONTACTS", + "C_AL_CALENDAR", + "C_AL_IMAGE_BROWSER", + "C_AL_AUDIO_BROWSER", + "C_AL_MOVIE_BROWSER", + "C_AL_TEXT_EDITOR", + "C_AL_WORD", + "C_AL_SPREADSHEET", + "C_AL_PRESENTATION", + "C_AL_GRAPHICS_EDITOR", + "C_AL_CALCULATOR", + "K_CALCULATOR", + "C_AL_NEWS", + "C_AL_DATABASE", + "C_AL_VOICEMAIL", + "C_AL_FINANCE", + "C_AL_TASK_MANAGER", + "C_AL_JOURNAL", + "C_AL_AV_CAPTURE_PLAYBACK", + "C_AL_SPELLCHECK", + "C_AL_SCREEN_SAVER", + "C_AL_KEYBOARD_LAYOUT", + "C_AL_CONTROL_PANEL", + "C_AL_HELP", + "K_HELP", + "C_AL_OEM_FEATURES", + "C_AL_CCC", + ], + "consumer-controls": [ + "C_CHANNEL_INC", + "C_CHANNEL_DEC", + "C_RECALL_LAST", + "C_MEDIA_VCR_PLUS", + "C_MEDIA_GUIDE", + "C_MEDIA_STEP", + "C_MEDIA_HOME", + "C_MEDIA_TV", + "C_MEDIA_CABLE", + "C_MEDIA_TUNER", + "C_MEDIA_DVD", + "C_MEDIA_CD", + "C_MEDIA_SATELLITE", + "C_MEDIA_VCR", + "C_MEDIA_TAPE", + "C_MEDIA_COMPUTER", + "C_MEDIA_WWW", + "C_MEDIA_GAMES", + "C_MEDIA_PHONE", + "C_MEDIA_VIDEOPHONE", + "C_MEDIA_MESSAGES", + "C_QUIT", + "C_HELP", + ], + "consumer-menus": [ + "C_MENU", + "C_MENU_PICK", + "C_MENU_UP", + "C_MENU_DOWN", + "C_MENU_LEFT", + "C_MENU_RIGHT", + "C_MENU_ESCAPE", + "C_MENU_INCREASE", + "C_MENU_DECREASE", + "C_RED_BUTTON", + "C_GREEN_BUTTON", + "C_BLUE_BUTTON", + "C_YELLOW_BUTTON", + ], + "cut-copy-paste": [ + "C_AC_CUT", + "K_CUT", + "C_AC_COPY", + "K_COPY", + "C_AC_PASTE", + "K_PASTE", + ], + display: [ + "C_BRIGHTNESS_INC", + "C_BRIGHTNESS_DEC", + "C_BRIGHTNESS_MINIMUM", + "C_BRIGHTNESS_MAXIMUM", + "C_BRIGHTNESS_AUTO", + "C_BACKLIGHT_TOGGLE", + "C_ASPECT", + "C_PIP", + ], + "input-assist": [ + "C_KEYBOARD_INPUT_ASSIST_NEXT", + "C_KEYBOARD_INPUT_ASSIST_PREVIOUS", + "C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP", + "C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP", + "C_KEYBOARD_INPUT_ASSIST_ACCEPT", + "C_KEYBOARD_INPUT_ASSIST_CANCEL", + ], + "keyboard-control-whitespace": [ + "ESCAPE", + "RETURN", + "RETURN2", + "SPACE", + "TAB", + "BACKSPACE", + "DELETE", + "INSERT", + ], + "keyboard-fkeys": [ + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "F13", + "F14", + "F15", + "F16", + "F17", + "F18", + "F19", + "F20", + "F21", + "F22", + "F23", + "F24", + ], + "keyboard-international": [ + "INTERNATIONAL_1", + "INTERNATIONAL_2", + "INTERNATIONAL_3", + "INTERNATIONAL_4", + "INTERNATIONAL_5", + "INTERNATIONAL_6", + "INTERNATIONAL_7", + "INTERNATIONAL_8", + "INTERNATIONAL_9", + ], + "keyboard-language": [ + "LANGUAGE_1", + "LANGUAGE_2", + "LANGUAGE_3", + "LANGUAGE_4", + "LANGUAGE_5", + "LANGUAGE_6", + "LANGUAGE_7", + "LANGUAGE_8", + "LANGUAGE_9", + ], + "keyboard-letters": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + ], + "keyboard-locks": [ + "CAPSLOCK", + "LOCKING_CAPS", + "SCROLLLOCK", + "LOCKING_SCROLL", + "LOCKING_NUM", + ], + "keyboard-miscellaneous": [ + "PRINTSCREEN", + "PAUSE_BREAK", + "ALT_ERASE", + "SYSREQ", + "K_CANCEL", + "CLEAR", + "CLEAR_AGAIN", + "CRSEL", + "PRIOR", + "SEPARATOR", + "OUT", + "OPER", + "EXSEL", + "K_EDIT", + ], + "keyboard-modifiers": [ + "LEFT_SHIFT", + "RIGHT_SHIFT", + "LEFT_CONTROL", + "RIGHT_CONTROL", + "LEFT_ALT", + "RIGHT_ALT", + "LEFT_GUI", + "RIGHT_GUI", + ], + "keyboard-navigation": [ + "HOME", + "END", + "PAGE_UP", + "PAGE_DOWN", + "UP_ARROW", + "DOWN_ARROW", + "LEFT_ARROW", + "RIGHT_ARROW", + "K_APPLICATION", + ], + "keyboard-numbers": [ + "NUMBER_1", + "NUMBER_2", + "NUMBER_3", + "NUMBER_4", + "NUMBER_5", + "NUMBER_6", + "NUMBER_7", + "NUMBER_8", + "NUMBER_9", + "NUMBER_0", + ], + "keyboard-symbols": [ + "EXCLAMATION", + "AT_SIGN", + "HASH", + "DOLLAR", + "PERCENT", + "CARET", + "AMPERSAND", + "ASTERISK", + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + "EQUAL", + "PLUS", + "MINUS", + "UNDERSCORE", + "SLASH", + "QUESTION", + "BACKSLASH", + "PIPE", + "NON_US_BACKSLASH", + "PIPE2", + "SEMICOLON", + "COLON", + "SINGLE_QUOTE", + "DOUBLE_QUOTES", + "COMMA", + "LESS_THAN", + "PERIOD", + "GREATER_THAN", + "LEFT_BRACKET", + "LEFT_BRACE", + "RIGHT_BRACKET", + "RIGHT_BRACE", + "GRAVE", + "TILDE", + "NON_US_HASH", + "TILDE2", + ], + keypad: ["KP_NUMLOCK", "KP_CLEAR", "CLEAR2", "KP_ENTER"], + "keypad-numbers": [ + "KP_NUMBER_1", + "KP_NUMBER_2", + "KP_NUMBER_3", + "KP_NUMBER_4", + "KP_NUMBER_5", + "KP_NUMBER_6", + "KP_NUMBER_7", + "KP_NUMBER_8", + "KP_NUMBER_9", + "KP_NUMBER_0", + ], + "keypad-operations": [ + "KP_PLUS", + "KP_MINUS", + "KP_MULTIPLY", + "KP_DIVIDE", + "KP_EQUAL", + "KP_EQUAL_AS400", + "KP_DOT", + "KP_COMMA", + "KP_LEFT_PARENTHESIS", + "KP_RIGHT_PARENTHESIS", + ], + "media-controls": [ + "C_RECORD", + "C_PLAY", + "C_PLAY_PAUSE", + "K_PLAY_PAUSE", + "C_PAUSE", + "C_STOP", + "K_STOP2", + "K_STOP3", + "C_STOP_EJECT", + "C_EJECT", + "K_EJECT", + "C_NEXT", + "K_NEXT", + "C_PREVIOUS", + "K_PREVIOUS", + "C_FAST_FORWARD", + "C_REWIND", + "C_SLOW", + "C_SLOW_TRACKING", + "C_REPEAT", + "C_RANDOM_PLAY", + "C_CAPTIONS", + "C_DATA_ON_SCREEN", + "C_SNAPSHOT", + ], + power: [ + "C_POWER", + "K_POWER", + "C_RESET", + "C_SLEEP", + "K_SLEEP", + "C_SLEEP_MODE", + "C_AL_LOGOFF", + "C_AL_LOCK", + "K_LOCK", + ], + sound: [ + "C_VOLUME_UP", + "K_VOLUME_UP", + "K_VOLUME_UP2", + "C_VOLUME_DOWN", + "K_VOLUME_DOWN", + "K_VOLUME_DOWN2", + "C_MUTE", + "K_MUTE", + "K_MUTE2", + "C_ALTERNATE_AUDIO_INCREMENT", + "C_BASS_BOOST", + ], + "undo-redo": ["C_AC_UNDO", "K_UNDO", "C_AC_REDO", "K_AGAIN"], +}; diff --git a/docs/src/data/hid-applications.js b/docs/src/data/hid-applications.js new file mode 100644 index 00000000..7cb7eda4 --- /dev/null +++ b/docs/src/data/hid-applications.js @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import usage from "../hid-usage"; +import * as pages from "./hid-usage-pages"; + +export const keyboard = usage(pages.genericDesktop, 0x06); +export const consumer = usage(pages.consumer, 0x01); diff --git a/docs/src/data/hid-usage-pages.js b/docs/src/data/hid-usage-pages.js new file mode 100644 index 00000000..ae11bc3b --- /dev/null +++ b/docs/src/data/hid-usage-pages.js @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +export const genericDesktop = 0x01; +export const key = 0x07; +export const consumer = 0x0c; diff --git a/docs/src/data/hid.js b/docs/src/data/hid.js new file mode 100644 index 00000000..1f7daa7c --- /dev/null +++ b/docs/src/data/hid.js @@ -0,0 +1,7837 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import { + keyboard as keyboardApplication, + consumer as consumerApplication, +} from "./hid-applications"; + +import { key as keyPage, consumer as consumerPage } from "./hid-usage-pages"; + +import usage from "../hid-usage"; + +export default [ + { + names: ["A"], + description: "a and A", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x04), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["B"], + description: "b and B", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x05), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["C"], + description: "c and C", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x06), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["D"], + description: "d and D", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x07), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["E"], + description: "e and E", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x08), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F"], + description: "f and F", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x09), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["G"], + description: "g and G", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x0a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["H"], + description: "h and H", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x0b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["I"], + description: "i and I", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x0c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["J"], + description: "j and J", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x0d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["K"], + description: "k and K", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x0e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["L"], + description: "l and L", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x0f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["M"], + description: "m and M", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x10), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["N"], + description: "n and N", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x11), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["O"], + description: "o and O", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x12), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["P"], + description: "p and P", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x13), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["Q"], + description: "q and Q", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x14), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["R"], + description: "r and R", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x15), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["S"], + description: "s and S", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x16), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["T"], + description: "t and T", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x17), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["U"], + description: "u and U", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x18), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=83", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["V"], + description: "v and V", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x19), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["W"], + description: "w and W", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x1a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["X"], + description: "x and X", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x1b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["Y"], + description: "y and Y", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x1c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["Z"], + description: "z and Z", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x1d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_1", "N1"], + description: "1 and ! [Exclamation]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x1e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["EXCLAMATION", "EXCL"], + description: "! [Exclamation]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x1e), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_2", "N2"], + description: "2 and @ [At Sign]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x1f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["AT_SIGN", "AT"], + description: "@ [At Sign]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x1f), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_3", "N3"], + description: "3 and # [Hash / Pound]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x20), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["HASH", "POUND"], + description: "# [Hash / Pound]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x20), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_4", "N4"], + description: "4 and $ [Dollar]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x21), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["DOLLAR", "DLLR"], + description: "$ [Dollar]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x21), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_5", "N5"], + description: "5 and % [Percent]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x22), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PERCENT", "PRCNT"], + description: "% [Percent]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x22), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_6", "N6"], + description: "6 and ^ [Caret]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x23), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["CARET"], + description: "^ [Caret]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x23), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_7", "N7"], + description: "7 and & [Ampersand]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x24), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["AMPERSAND", "AMPS"], + description: "& [Ampersand]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x24), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_8", "N8"], + description: "8 and * [Asterisk / Star]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x25), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["ASTERISK", "ASTRK", "STAR"], + description: "* [Asterisk / Star]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x25), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_9", "N9"], + description: "9 and ( [Left Parenthesis]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x26), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["LEFT_PARENTHESIS", "LPAR"], + description: "( [Left Parenthesis]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x26), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NUMBER_0", "N0"], + description: "0 and ) [Right Parenthesis]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x27), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["RIGHT_PARENTHESIS", "RPAR"], + description: ") [Right Parenthesis]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x27), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["RETURN", "ENTER", "RET"], + description: "Return (Enter)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x28), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["ESCAPE", "ESC"], + description: "Escape", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x29), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["BACKSPACE", "BSPC"], + description: "Backspace", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["TAB"], + description: "Tab", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["SPACE"], + description: "Space", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["MINUS"], + description: "- [Minus] and _ [Underscore]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["UNDERSCORE", "UNDER"], + description: "_ [Underscore]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2d), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["EQUAL"], + description: "= [Equal] and + [Plus]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PLUS"], + description: "+ [Plus]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2e), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["LEFT_BRACKET", "LBKT"], + description: "[ [Left Bracket] and { [Left Brace]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["LEFT_BRACE", "LBRC"], + description: "{ [Left Brace]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x2f), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["RIGHT_BRACKET", "RBKT"], + description: "] [Right Bracket] and } [Right Brace]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x30), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["RIGHT_BRACE", "RBRC"], + description: "} [Right Brace]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x30), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["BACKSLASH", "BSLH"], + description: "\\ [Backslash] and | [Pipe]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x31), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PIPE"], + description: "| [Pipe]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x31), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["NON_US_HASH"], + description: "Non-US # [Hash/Pound] and ~ [Tilde]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x32), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["TILDE2"], + description: "~ [Tilde]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x32), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["SEMICOLON", "SEMI"], + description: "; [Semicolon] and : [Colon]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x33), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["COLON"], + description: ": [Colon]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x33), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["SINGLE_QUOTE", "SQT", "APOSTROPHE", "APOS"], + description: "' [Apostrophe] and \" [Quote (Double)]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x34), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["DOUBLE_QUOTES", "DQT"], + description: '" [Quote (Double)]', + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x34), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["GRAVE"], + description: "` [Grave Accent] and ~ [Tilde]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x35), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["TILDE"], + description: "~ [Tilde]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x35), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["COMMA"], + description: ", [Comma] and < [Less Than]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x36), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["LESS_THAN", "LT"], + description: "< [Less Than]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x36), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PERIOD", "DOT"], + description: ". [Period] and > [Greater Than]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x37), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["GREATER_THAN", "GT"], + description: "> [Greater Than]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x37), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["SLASH", "FSLH"], + description: "/ [Forward Slash] and ? [Question Mark]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x38), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["QUESTION", "QMARK"], + description: "? [Question Mark]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x38), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["CAPSLOCK", "CAPS", "CLCK"], + description: "Caps Lock", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x39), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F1"], + description: "F1", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x3a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F2"], + description: "F2", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x3b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F3"], + description: "F3", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x3c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F4"], + description: "F4", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x3d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=84", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F5"], + description: "F5", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x3e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F6"], + description: "F6", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x3f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F7"], + description: "F7", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x40), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F8"], + description: "F8", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x41), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F9"], + description: "F9", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x42), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F10"], + description: "F10", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x43), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F11"], + description: "F11", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x44), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["F12"], + description: "F12", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x45), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PRINTSCREEN", "PSCRN"], + description: "Print Screen", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x46), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["SCROLLLOCK", "SLCK"], + description: "Scroll Lock", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x47), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PAUSE_BREAK"], + description: "Pause / Break", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x48), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["INSERT", "INS"], + description: "Insert", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x49), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["HOME"], + description: "Home", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x4a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PAGE_UP", "PG_UP"], + description: "Page Up", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x4b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["DELETE", "DEL"], + description: "Delete", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x4c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["END"], + description: "End", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x4d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PAGE_DOWN", "PG_DN"], + description: "Page Down", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x4e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["RIGHT_ARROW", "RIGHT"], + description: "⮕ [Right Arrow]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x4f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["LEFT_ARROW", "LEFT"], + description: "⬅ [Left Arrow]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x50), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["DOWN_ARROW", "DOWN"], + description: "⬇ [Down Arrow]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x51), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["UP_ARROW", "UP"], + description: "⬆ [Up Arrow]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x52), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["KP_NUMLOCK", "KP_NUM", "KP_NLCK"], + description: "Numlock and Clear", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x53), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["CLEAR2"], + description: "Clear", + context: "Keypad", + clarify: null, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x53), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_DIVIDE", "KP_SLASH"], + description: "/ [Divide]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x54), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_MULTIPLY", "KP_ASTERISK"], + description: "* [Multiply]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x55), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_MINUS", "KP_SUBTRACT"], + description: "- [Minus]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x56), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_PLUS"], + description: "+ [Plus]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x57), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_ENTER"], + description: "Enter", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x58), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_1", "KP_N1"], + description: "1", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x59), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_2", "KP_N2"], + description: "2", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x5a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_3", "KP_N3"], + description: "3", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x5b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_4", "KP_N4"], + description: "4", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x5c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_5", "KP_N5"], + description: "5", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x5d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_6", "KP_N6"], + description: "6", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x5e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_7", "KP_N7"], + description: "7", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x5f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_8", "KP_N8"], + description: "8", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x60), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_9", "KP_N9"], + description: "9", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x61), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_NUMBER_0", "KP_N0"], + description: "0", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x62), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=85", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_DOT"], + description: ". [Dot]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x63), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: null, + }, + footnotes: {}, + }, + { + names: ["NON_US_BACKSLASH", "NON_US_BSLH"], + description: "Non-US \\ [Backslash] and | [Pipe]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x64), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["PIPE2"], + description: "| [Pipe]", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x64), + }, + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["K_APPLICATION", "K_APP", "K_CONTEXT_MENU", "K_CMENU"], + description: "Application (Context Menu)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x65), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_POWER", "K_PWR"], + description: "Power", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x66), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: false, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_EQUAL"], + description: "= [Equal]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x67), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F13"], + description: "F13", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x68), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F14"], + description: "F14", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x69), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F15"], + description: "F15", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x6a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F16"], + description: "F16", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x6b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F17"], + description: "F17", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x6c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F18"], + description: "F18", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x6d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F19"], + description: "F19", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x6e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F20"], + description: "F20", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x6f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F21"], + description: "F21", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x70), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F22"], + description: "F22", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x71), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F23"], + description: "F23", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x72), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["F24"], + description: "F24", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x73), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_EXECUTE", "K_EXEC"], + description: "Execute", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x74), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_HELP"], + description: "Help", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x75), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_MENU"], + description: "Menu", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x76), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_SELECT"], + description: "Select", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x77), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_STOP"], + description: "Stop", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x78), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_AGAIN", "K_REDO"], + description: "Again", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x79), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_UNDO"], + description: "Undo", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x7a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_CUT"], + description: "Cut", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x7b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_COPY"], + description: "Copy", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x7c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_PASTE"], + description: "Paste", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x7d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_FIND"], + description: "Find", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x7e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_MUTE"], + description: "Mute", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x7f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_VOLUME_UP", "K_VOL_UP"], + description: "Volume Up", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x80), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_VOLUME_DOWN", "K_VOL_DN"], + description: "Volume Down", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x81), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LOCKING_CAPS", "LCAPS"], + description: "Locking Caps Lock", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x82), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LOCKING_NUM", "LNLCK"], + description: "Locking Num Lock", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x83), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LOCKING_SCROLL", "LSLCK"], + description: "Locking Scroll Lock", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x84), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_COMMA"], + description: ", [Comma]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x85), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_EQUAL_AS400"], + description: "= [Equal] (AS/400 keyboards)", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x86), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_1", "INT1", "INT_RO"], + description: "ろ (International 1)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x87), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_2", "INT2", "INT_KATAKANAHIRAGANA", "INT_KANA"], + description: "かな (International 2)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x88), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_3", "INT3", "INT_YEN"], + description: "¥ (International 3)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x89), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_4", "INT4", "INT_HENKAN"], + description: "変換 (International 4)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x8a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=86", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_5", "INT5", "INT_MUHENKAN"], + description: "無変換 (International 5)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x8b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_6", "INT6", "INT_KPJPCOMMA"], + description: ", [カソマ] (International 6)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x8c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_7", "INT7"], + description: "International 7", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x8d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_8", "INT8"], + description: "International 8", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x8e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["INTERNATIONAL_9", "INT9"], + description: "International 9", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x8f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_1", "LANG1", "LANG_HANGEUL"], + description: "한/영 (Language 1)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x90), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_2", "LANG2", "LANG_HANJA"], + description: "한자 (Language 2)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x91), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_3", "LANG3", "LANG_KATAKANA"], + description: "カタカナ (Language 3)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x92), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_4", "LANG4", "LANG_HIRAGANA"], + description: "ひらがな (Language 4)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x93), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_5", "LANG5", "LANG_ZENKAKUHANKAKU"], + description: "半角/全角 (Language 5)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x94), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_6", "LANG6"], + description: "Language 6", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x95), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_7", "LANG7"], + description: "Language 7", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x96), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_8", "LANG8"], + description: "Language 8", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x97), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LANGUAGE_9", "LANG9"], + description: "Language 9", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x98), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["ALT_ERASE"], + description: "Alternate Erase", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x99), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["SYSREQ", "ATTENTION"], + description: "SysReq / Attention", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x9a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_CANCEL"], + description: "Cancel", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x9b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["CLEAR"], + description: "Clear", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x9c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["PRIOR"], + description: "Prior", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x9d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["RETURN2", "RET2"], + description: "Return", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x9e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["SEPARATOR"], + description: "Separator", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0x9f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["OUT"], + description: "Out", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xa0), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["OPER"], + description: "Oper", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xa1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["CLEAR_AGAIN"], + description: "Clear / Again", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xa2), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["CRSEL"], + description: "CrSel / Props", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xa3), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["EXSEL"], + description: "ExSel", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xa4), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_LEFT_PARENTHESIS", "KP_LPAR"], + description: "( [Left Parenthesis]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xb6), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_RIGHT_PARENTHESIS", "KP_RPAR"], + description: ") [Right Parenthesis]", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xb7), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=87", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["KP_CLEAR"], + description: "Clear", + context: "Keypad", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xd8), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=88", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["LEFT_CONTROL", "LCTRL"], + description: "Left Control", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe0), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=88", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["LEFT_SHIFT", "LSHFT"], + description: "Left Shift ⇧", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=88", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["LEFT_ALT", "LALT"], + description: "Left Alt", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe2), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=88", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: [ + "LEFT_GUI", + "LGUI", + "LEFT_WIN", + "LWIN", + "LEFT_COMMAND", + "LCMD", + "LEFT_META", + "LMETA", + ], + description: "Left GUI (Windows / Command / Meta)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe3), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=88", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["RIGHT_CONTROL", "RCTRL"], + description: "Right Control", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe4), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=88", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["RIGHT_SHIFT", "RSHFT"], + description: "Right Shift ⇧", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe5), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=89", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["RIGHT_ALT", "RALT"], + description: "Right Alt", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe6), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=89", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: [ + "RIGHT_GUI", + "RGUI", + "RIGHT_WIN", + "RWIN", + "RIGHT_COMMAND", + "RCMD", + "RIGHT_META", + "RMETA", + ], + description: "Right GUI (Windows / Command / Meta)", + context: "Keyboard", + clarify: false, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe7), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=89", + os: { + windows: true, + linux: true, + android: true, + macos: true, + ios: true, + }, + footnotes: {}, + }, + { + names: ["K_PLAY_PAUSE", "K_PP"], + description: "Play / Pause", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe8), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_STOP2"], + description: "Stop", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xe9), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_PREVIOUS", "K_PREV"], + description: "Previous", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xea), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_NEXT"], + description: "Next", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xeb), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_EJECT"], + description: "Eject", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xec), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_VOLUME_UP2", "K_VOL_UP2"], + description: "Volume Up", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xed), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_VOLUME_DOWN2", "K_VOL_DN2"], + description: "Volume Down", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xee), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_MUTE2"], + description: "Mute", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xef), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_WWW"], + description: "Internet Browser", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf0), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_BACK"], + description: "Back", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf1), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_FORWARD"], + description: "Forward", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf2), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_STOP3"], + description: "Stop", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf3), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_FIND2"], + description: "Find", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf4), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_SCROLL_UP"], + description: "Scroll Up", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf5), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_SCROLL_DOWN"], + description: "Scroll Down", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf6), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_EDIT"], + description: "Edit", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf7), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_SLEEP"], + description: "Sleep", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf8), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_LOCK", "K_SCREENSAVER", "K_COFFEE"], + description: "Lock", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xf9), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_REFRESH"], + description: "Refresh", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xfa), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["K_CALCULATOR", "K_CALC"], + description: "Calculator", + context: "Keyboard", + clarify: true, + usages: [ + { + application: keyboardApplication, + item: usage(keyPage, 0xfb), + }, + ], + documentation: + "https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_POWER", "C_PWR"], + description: "Power", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x30), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=132", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_RESET"], + description: "Reset", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x31), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=132", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_SLEEP"], + description: "Sleep", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x32), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=132", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_SLEEP_MODE"], + description: "Sleep Mode", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x34), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=132", + os: { + windows: null, + linux: false, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU"], + description: "Menu", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x40), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU_PICK", "C_MENU_SELECT"], + description: "Pick", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x41), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU_UP"], + description: "Up", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x42), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU_DOWN"], + description: "Down", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x43), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU_LEFT"], + description: "Left", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x44), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU_RIGHT"], + description: "Right", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x45), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU_ESCAPE", "C_MENU_ESC"], + description: "Escape", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x46), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU_INCREASE", "C_MENU_INC"], + description: "Value Increase", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x47), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MENU_DECREASE", "C_MENU_DEC"], + description: "Value Decrease", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x48), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_DATA_ON_SCREEN"], + description: "Data On Screen", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x60), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_CAPTIONS", "C_SUBTITILES"], + description: "Closed Caption", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x61), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_SNAPSHOT"], + description: "Snapshot", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x65), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_PIP"], + description: "Picture-in-Picture Toggle", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x67), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: false, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_RED_BUTTON", "C_RED"], + description: "Red Button", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x69), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_GREEN_BUTTON", "C_GREEN"], + description: "Green Button", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x6a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_BLUE_BUTTON", "C_BLUE"], + description: "Blue Button", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x6b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_YELLOW_BUTTON", "C_YELLOW"], + description: "Yellow Button", + context: "Consumer Menu", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x6c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=133", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_ASPECT"], + description: "Aspect", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x6d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_BRIGHTNESS_INC", "C_BRI_INC", "C_BRI_UP"], + description: "Increase Brightness", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x6f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_BRIGHTNESS_DEC", "C_BRI_DEC", "C_BRI_DN"], + description: "Decrease Brightness", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x70), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_BACKLIGHT_TOGGLE", "C_BKLT_TOG"], + description: "Backlight Toggle", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x72), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_BRIGHTNESS_MINIMUM", "C_BRI_MIN"], + description: "Minimum Brightness", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x73), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_BRIGHTNESS_MAXIMUM", "C_BRI_MAX"], + description: "Maximum Brightness", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x74), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_BRIGHTNESS_AUTO", "C_BRI_AUTO"], + description: "Auto Brightness", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x75), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=134", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_STEP", "C_MODE_STEP"], + description: "Mode Step", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x82), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_RECALL_LAST", "C_CHAN_LAST"], + description: "Recall Last", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x83), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_COMPUTER"], + description: "Computer", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x88), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_TV"], + description: "TV", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x89), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_WWW"], + description: "WWW", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x8a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_DVD"], + description: "DVD", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x8b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_PHONE"], + description: "Telephone", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x8c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_GUIDE"], + description: "Program Guide", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x8d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_VIDEOPHONE"], + description: "Video Phone", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x8e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_GAMES"], + description: "Games", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x8f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_MESSAGES"], + description: "Messages", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x90), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_CD"], + description: "CD", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x91), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_VCR"], + description: "VCR", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x92), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_TUNER"], + description: "Tuner", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x93), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_QUIT"], + description: "Quit", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x94), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_HELP"], + description: "Help", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x95), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_TAPE"], + description: "Tape", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x96), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_CABLE"], + description: "Cable", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x97), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_SATELLITE"], + description: "Satellite", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x98), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_HOME"], + description: "Home", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x9a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=136", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_CHANNEL_INC", "C_CHAN_INC"], + description: "Channel Increment", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x9c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=136", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_CHANNEL_DEC", "C_CHAN_DEC"], + description: "Channel Decrement", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x9d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=136", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MEDIA_VCR_PLUS"], + description: "VCR Plus", + context: "Consumer Media", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xa0), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=135", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_PLAY"], + description: "Play", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb0), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_PAUSE"], + description: "Pause", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_RECORD", "C_REC"], + description: "Record", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb2), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_FAST_FORWARD", "C_FF"], + description: "Fast Forward", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb3), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_REWIND", "C_RW"], + description: "Rewind", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb4), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_NEXT"], + description: "Next", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb5), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_PREVIOUS", "C_PREV"], + description: "Previous", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb6), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_STOP"], + description: "Stop", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb7), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_EJECT"], + description: "Eject", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb8), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_RANDOM_PLAY", "C_SHUFFLE"], + description: "Random Play", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xb9), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_REPEAT"], + description: "Repeat", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xbc), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_SLOW_TRACKING", "C_SLOW2"], + description: "Slow Tracking", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xbf), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_STOP_EJECT"], + description: "Stop / Eject", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xcc), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: false, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_PLAY_PAUSE", "C_PP"], + description: "Play / Pause", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xcd), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=137", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_VOICE_COMMAND"], + description: "Voice Command", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xcf), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=132", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_MUTE"], + description: "Mute", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xe2), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=139", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_BASS_BOOST"], + description: "Bass Boost", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xe5), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=139", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_VOLUME_UP", "C_VOL_UP"], + description: "Volume Up", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xe9), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=139", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_VOLUME_DOWN", "C_VOL_DN"], + description: "Volume Down", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xea), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=139", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_SLOW"], + description: "Slow", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0xf5), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=141", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_ALTERNATE_AUDIO_INCREMENT", "C_ALT_AUDIO_INC"], + description: "Alternate Audio Increment", + context: "Consumer", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x173), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf", + os: { + windows: null, + linux: false, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_CCC"], + description: "Consumer Control Configuration", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x183), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_WORD"], + description: "Word Processor", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x184), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_TEXT_EDITOR"], + description: "Text Editor", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x185), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_SPREADSHEET", "C_AL_SHEET"], + description: "Spreadsheet", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x186), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_GRAPHICS_EDITOR"], + description: "Graphics Editor", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x187), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_PRESENTATION"], + description: "Presentation", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x188), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_DATABASE", "C_AL_DB"], + description: "Database App", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x189), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_EMAIL", "C_AL_MAIL"], + description: "Email Reader", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x18a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_NEWS"], + description: "Newsreader", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x18b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_VOICEMAIL"], + description: "Voicemail", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x18c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_CONTACTS", "C_AL_ADDRESS_BOOK"], + description: "Contacts / Address Book", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x18d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_CALENDAR", "C_AL_CAL"], + description: "Calendar / Schedule", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x18e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_TASK_MANAGER"], + description: "Task / Project Manager", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x18f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_JOURNAL"], + description: "Log / Journal / Timecard", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x190), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_FINANCE"], + description: "Checkbook / Finance", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x191), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_CALCULATOR", "C_AL_CALC"], + description: "Calculator", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x192), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_AV_CAPTURE_PLAYBACK"], + description: "A/V Capture / Playback", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x193), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_MY_COMPUTER"], + description: "Local Machine Browser", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x194), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_WWW"], + description: "Internet Browser", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x196), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=147", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_NETWORK_CHAT", "C_AL_CHAT"], + description: "Network Chat", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x199), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_LOGOFF"], + description: "Logoff", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x19c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_LOCK", "C_AL_SCREENSAVER", "C_AL_COFFEE"], + description: "Terminal Lock / Screensaver", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x19e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_CONTROL_PANEL"], + description: "Control Panel", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x19f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_SELECT_TASK"], + description: "Select Task / Application", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1a2), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_NEXT_TASK"], + description: "Next Task / Application", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1a3), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_PREVIOUS_TASK", "C_AL_PREV_TASK"], + description: "Previous Task / Application", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1a4), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_HELP"], + description: "Integrated Help Center", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1a6), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_DOCUMENTS", "C_AL_DOCS"], + description: "Documents", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1a7), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_SPELLCHECK", "C_AL_SPELL"], + description: "Spell Check", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1ab), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_KEYBOARD_LAYOUT"], + description: "Keyboard Layout", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1ae), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_SCREEN_SAVER"], + description: "Screen Saver", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1b1), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_FILE_BROWSER", "C_AL_FILES"], + description: "File Browser", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1b4), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_IMAGE_BROWSER", "C_AL_IMAGES"], + description: "Image Browser", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1b6), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_AUDIO_BROWSER", "C_AL_AUDIO", "C_AL_MUSIC"], + description: "Audio Browser", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1b7), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_MOVIE_BROWSER", "C_AL_MOVIES"], + description: "Movie Browser", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1b8), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=148", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_INSTANT_MESSAGING", "C_AL_IM"], + description: "Instant Messaging", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1bc), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=149", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AL_OEM_FEATURES", "C_AL_TIPS", "C_AL_TUTORIAL"], + description: "OEM Features / Tips / Tutorial Browser", + context: "Consumer AL", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x1bd), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=149", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_NEW"], + description: "New", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x201), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_OPEN"], + description: "Open", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x202), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_CLOSE"], + description: "Close", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x203), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_EXIT"], + description: "Exit", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x204), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_SAVE"], + description: "Save", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x207), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_PRINT"], + description: "Print", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x208), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_PROPERTIES", "C_AC_PROPS"], + description: "Properties", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x209), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_UNDO"], + description: "Undo", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x21a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_COPY"], + description: "Copy", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x21b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_CUT"], + description: "Cut", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x21c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_PASTE"], + description: "Paste", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x21d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_FIND"], + description: "Find", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x21f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_SEARCH"], + description: "Search", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x221), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_GOTO"], + description: "Go To", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x222), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_HOME"], + description: "Home", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x223), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_BACK"], + description: "Back", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x224), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_FORWARD"], + description: "Forward", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x225), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_STOP"], + description: "Stop", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x226), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_REFRESH"], + description: "Refresh", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x227), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_BOOKMARKS", "C_AC_FAVORITES", "C_AC_FAVOURITES"], + description: "Bookmarks", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x22a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_ZOOM_IN"], + description: "Zoom In", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x22d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_ZOOM_OUT"], + description: "Zoom Out", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x22e), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_ZOOM"], + description: "Zoom", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x22f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=150", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_VIEW_TOGGLE"], + description: "View Toggle", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x232), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=151", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_SCROLL_UP"], + description: "Scroll Up", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x233), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=151", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_SCROLL_DOWN"], + description: "Scroll Down", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x234), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=151", + os: { + windows: null, + linux: true, + android: true, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_EDIT"], + description: "Edit", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x23d), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=151", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_CANCEL"], + description: "Cancel", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x25f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=152", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_INSERT", "C_AC_INS"], + description: "Insert Mode", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x269), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=152", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_DEL"], + description: "Delete", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x26a), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=152", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_REDO"], + description: "Redo / Repeat", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x279), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=152", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_REPLY"], + description: "Reply", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x289), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=153", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_FORWARD_MAIL"], + description: "Forward", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x28b), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=153", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_SEND"], + description: "Send", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x28c), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=153", + os: { + windows: null, + linux: true, + android: false, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_AC_DESKTOP_SHOW_ALL_WINDOWS"], + description: "Desktop Show All Windows", + context: "Consumer AC", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x29f), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=153", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_KEYBOARD_INPUT_ASSIST_PREVIOUS", "C_KBIA_PREV"], + description: "Previous", + context: "Consumer KBIA", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x2c7), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=157", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_KEYBOARD_INPUT_ASSIST_NEXT", "C_KBIA_NEXT"], + description: "Next", + context: "Consumer KBIA", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x2c8), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=157", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP", "C_KBIA_PREV_GRP"], + description: "Previous Group", + context: "Consumer KBIA", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x2c9), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=157", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP", "C_KBIA_NEXT_GRP"], + description: "Next Group", + context: "Consumer KBIA", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x2ca), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=157", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_KEYBOARD_INPUT_ASSIST_ACCEPT", "C_KBIA_ACCEPT"], + description: "Accept", + context: "Consumer KBIA", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x2cb), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=157", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, + { + names: ["C_KEYBOARD_INPUT_ASSIST_CANCEL", "C_KBIA_CANCEL"], + description: "Cancel", + context: "Consumer KBIA", + clarify: true, + usages: [ + { + application: consumerApplication, + item: usage(consumerPage, 0x2cc), + }, + ], + documentation: "https://usb.org/sites/default/files/hut1_2.pdf#page=157", + os: { + windows: null, + linux: true, + android: null, + macos: null, + ios: null, + }, + footnotes: {}, + }, +]; diff --git a/docs/src/data/operating-systems.js b/docs/src/data/operating-systems.js new file mode 100644 index 00000000..0631766d --- /dev/null +++ b/docs/src/data/operating-systems.js @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +export default [ + { + key: "windows", + className: "windows", + heading: "W", + title: "Windows", + }, + { + key: "linux", + className: "linux", + heading: "L", + title: "Linux", + }, + { + key: "android", + className: "android", + heading: "A", + title: "Android", + }, + { + key: "macos", + className: "macos", + heading: "m", + title: "macOS", + }, + { + key: "ios", + className: "ios", + heading: "i", + title: "iOS", + }, +]; diff --git a/docs/src/footnotes.js b/docs/src/footnotes.js new file mode 100644 index 00000000..c6fdbaa7 --- /dev/null +++ b/docs/src/footnotes.js @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import footnotes from "./data/footnotes"; + +export function getFootnote(id) { + const footnote = footnotes[id]; + if (typeof footnote != "undefined") { + return footnote; + } +} diff --git a/docs/src/groups.js b/docs/src/groups.js new file mode 100644 index 00000000..a5ea294f --- /dev/null +++ b/docs/src/groups.js @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import groups from "./data/groups.js"; + +export function getGroup(id) { + return groups[id] ?? null; +} diff --git a/docs/src/hid-usage.js b/docs/src/hid-usage.js new file mode 100644 index 00000000..d6423589 --- /dev/null +++ b/docs/src/hid-usage.js @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +export default function usage(page, id) { + return (page << 16) | id; +} diff --git a/docs/src/hid.js b/docs/src/hid.js new file mode 100644 index 00000000..583ce7a5 --- /dev/null +++ b/docs/src/hid.js @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: CC-BY-NC-SA-4.0 + */ + +import codes from "./data/hid"; + +export const map = codes.reduce((map, item) => { + item.names.forEach((name) => (map[name] = item)); + return map; +}, {}); + +export function getCode(id) { + return map[id] ?? null; +} + +export function getCodes(ids) { + return ids.reduce((result, id) => [...result, map[id]], []); +} From 642ec46c1f38ad0bc034b656bad0a4d04f90506c Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Wed, 4 Nov 2020 11:49:44 +0000 Subject: [PATCH 337/353] docs(intro): Update for standardized keys Update links to the new codes documentation. --- docs/docs/intro.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index a56e343e..8edc3137 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -21,8 +21,8 @@ ZMK is currently missing some features found in other popular firmware. This tab | Split Keyboard Support | ✅ | ✅ | ✅ | | [Keymaps and Layers](behavior/layers) | ✅ | ✅ | ✅ | | [Hold-Tap](behavior/hold-tap) (which includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | ✅ | -| [Basic Keycodes](behavior/key-press) | ✅ | ✅ | ✅ | -| [Basic consumer (Media) Keycodes](behavior/key-press) | ✅ | ✅ | ✅ | +| [Keyboard Codes](codes/#keyboard) | ✅ | ✅ | ✅ | +| [Media](codes/#media-controls) & [Consumer](codes/#consumer-controls) Codes | ✅ | ✅ | ✅ | | [Encoders](feature/encoders)[^1] | ✅ | | ✅ | | [OLED Display Support](feature/displays)[^2] | 🚧 | 🚧 | ✅ | | [RGB Underglow](feature/underglow) | ✅ | ✅ | ✅ | From 5d04110a58047983e26a25b9879d56d72af1fb7c Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Wed, 4 Nov 2020 12:06:25 +0000 Subject: [PATCH 338/353] docs(key-press): Update for standardized keys Replace existing HID Usage Tables link with links to the new codes documentation. --- docs/docs/behavior/key-press.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/docs/behavior/key-press.md b/docs/docs/behavior/key-press.md index 315e1266..dcf1a132 100644 --- a/docs/docs/behavior/key-press.md +++ b/docs/docs/behavior/key-press.md @@ -8,7 +8,18 @@ sidebar_label: Key Press The most basic of behaviors, is the ability to send certain keycode presses and releases in response to activating a certain key. -For reference on keycode values, see pages 83-89 of the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12). +The categories of supported codes are: + +- [Keyboard & Keypad](../codes/keyboard-keypad) +- [Editing](../codes/editing) +- [Media](../codes/media) +- [Applications](../codes/applications) +- [Input Assist](../codes/input-assist) +- [Power](../codes/power) + +Please visit the [codes](../codes) section for a comprehensive list. + +For advanced users, user-defined HID codes are also supported but must be encoded, please see [`dt-bindings/zmk/keys.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/keys.h) for further insight. ## Keycode Defines From 0d02441abe96010b95a88fa22f23b8676fccb262 Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Fri, 6 Nov 2020 21:34:36 +0100 Subject: [PATCH 339/353] docs(codes): add modifier functions Refactor and expand codes documentation to include modifier functions. Closes #330. --- docs/docs/codes/_keyboard-keypad.mdx | 2 ++ docs/docs/codes/modifiers.mdx | 42 ++++++++++++++++++++++++++++ docs/docs/dev-guide-new-shield.md | 4 +-- docs/docs/feature/keymaps.md | 8 +++--- docs/sidebars.js | 1 + docs/src/data/hid.js | 14 ++++++---- 6 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 docs/docs/codes/modifiers.mdx diff --git a/docs/docs/codes/_keyboard-keypad.mdx b/docs/docs/codes/_keyboard-keypad.mdx index b1852d64..a00a4f4f 100644 --- a/docs/docs/codes/_keyboard-keypad.mdx +++ b/docs/docs/codes/_keyboard-keypad.mdx @@ -24,6 +24,8 @@ import Table from "@site/src/components/codes/Table"; ### Modifiers +The [Modifiers](./modifiers) page includes further information. + ### Locks diff --git a/docs/docs/codes/modifiers.mdx b/docs/docs/codes/modifiers.mdx new file mode 100644 index 00000000..9d8274cb --- /dev/null +++ b/docs/docs/codes/modifiers.mdx @@ -0,0 +1,42 @@ +--- +title: Modifiers +sidebar_label: Modifiers +hide_title: true +--- + +import OsLegend from "@site/src/components/codes/OsLegend"; +import ToastyContainer from "@site/src/components/codes/ToastyContainer"; +import Table from "@site/src/components/codes/Table"; + + + + +## Modifiers + +Modifiers are the special keyboard keys: _shift_, _alt_, _control_ & _GUI_. + +Modifiers can be used in two forms within ZMK: + +- Modifier [Keys](#modifier-keys) → `LEFT_SHIFT` +- Modifier [Functions](#modifier-functions) → `LS(code)` + +
+ +### Modifier Keys + +These act like any other key code. + +- e.g. `&kp LEFT_GUI` pushes and releases the left GUI key. + +### Modifier Functions + +These functions take the form: `XX(code)` + +- They _apply_ the modifier to another _code_. + - e.g. `&kp LS(A)` = `LEFT_SHIFT`+`A` + - aka a _shifted_ (capitalized) **A**. + - The _code_ and the _modifier_ are handled _as one_. +- They can be _combined_: + - e.g. `&kp LC(RA(B))` = `LEFT_CONTROL`+`RIGHT_ALT`+`B` +- Some codes _include_ modifiers in their definition. + - e.g. `DOLLAR` = `LS(N4)` diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index f3491ddd..63871cdb 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -368,12 +368,12 @@ Here is an example simple keymap for the Kyria, with only one layer: // -------------------------------------------------------------------------------------------------------------------------------------------------------------------- // | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | // | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | -// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | R CTRL | +// | SHIFT | Z | X | C | V | B | CTRL+A | CTRL+C | | CTRL+V | CTRL+X | N | M | , | . | / | R CTRL | // | GUI | DEL | RETURN | SPACE | ESCAPE | | RETURN | SPACE | TAB | BSPC | R ALT | bindings = < &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE - &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LC(A) &kp LC(C) &kp LC(V) &kp LC(X) &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; diff --git a/docs/docs/feature/keymaps.md b/docs/docs/feature/keymaps.md index 203b9408..f9a28946 100644 --- a/docs/docs/feature/keymaps.md +++ b/docs/docs/feature/keymaps.md @@ -130,12 +130,12 @@ that defines just one layer for this keymap: // -------------------------------------------------------------------------------------------------------------------------------------------------------------------- // | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | // | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | -// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | R CTRL | +// | SHIFT | Z | X | C | V | B | CTRL+A | CTRL+C | | CTRL+V | CTRL+X | N | M | , | . | / | R CTRL | // | GUI | DEL | RETURN | SPACE | ESCAPE | | RETURN | SPACE | TAB | BSPC | R ALT | bindings = < &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE - &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LC(A) &kp LC(C) &kp LC(V) &kp LC(X) &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; @@ -167,12 +167,12 @@ Putting this all together, a complete [`kyria.keymap`](https://github.com/zmkfir // -------------------------------------------------------------------------------------------------------------------------------------------------------------------- // | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | // | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | -// | SHIFT | Z | X | C | V | B | L SHIFT | L SHIFT | | L SHIFT | L SHIFT | N | M | , | . | / | R CTRL | +// | SHIFT | Z | X | C | V | B | CTRL+A | CTRL+C | | CTRL+V | CTRL+X | N | M | , | . | / | R CTRL | // | GUI | DEL | RETURN | SPACE | ESCAPE | | RETURN | SPACE | TAB | BSPC | R ALT | bindings = < &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp QUOTE - &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LSHFT &kp LSHFT &kp LSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LC(A) &kp LC(C) &kp LC(V) &kp LC(X) &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL &kp LGUI &kp DEL &kp RET &kp SPACE &kp ESC &kp RET &kp SPACE &kp TAB &kp BSPC &kp RALT >; diff --git a/docs/sidebars.js b/docs/sidebars.js index f05cd056..15d531ec 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -29,6 +29,7 @@ module.exports = { Codes: [ "codes/index", "codes/keyboard-keypad", + "codes/modifiers", "codes/editing", "codes/media", "codes/applications", diff --git a/docs/src/data/hid.js b/docs/src/data/hid.js index 1f7daa7c..d52331f9 100644 --- a/docs/src/data/hid.js +++ b/docs/src/data/hid.js @@ -4059,7 +4059,7 @@ export default [ footnotes: {}, }, { - names: ["LEFT_CONTROL", "LCTRL"], + names: ["LEFT_CONTROL", "LCTRL", "LC(code)"], description: "Left Control", context: "Keyboard", clarify: false, @@ -4080,7 +4080,7 @@ export default [ footnotes: {}, }, { - names: ["LEFT_SHIFT", "LSHFT"], + names: ["LEFT_SHIFT", "LSHFT", "LS(code)"], description: "Left Shift ⇧", context: "Keyboard", clarify: false, @@ -4101,7 +4101,7 @@ export default [ footnotes: {}, }, { - names: ["LEFT_ALT", "LALT"], + names: ["LEFT_ALT", "LALT", "LA(code)"], description: "Left Alt", context: "Keyboard", clarify: false, @@ -4125,6 +4125,7 @@ export default [ names: [ "LEFT_GUI", "LGUI", + "LG(code)", "LEFT_WIN", "LWIN", "LEFT_COMMAND", @@ -4152,7 +4153,7 @@ export default [ footnotes: {}, }, { - names: ["RIGHT_CONTROL", "RCTRL"], + names: ["RIGHT_CONTROL", "RCTRL", "RC(code)"], description: "Right Control", context: "Keyboard", clarify: false, @@ -4173,7 +4174,7 @@ export default [ footnotes: {}, }, { - names: ["RIGHT_SHIFT", "RSHFT"], + names: ["RIGHT_SHIFT", "RSHFT", "RS(code)"], description: "Right Shift ⇧", context: "Keyboard", clarify: false, @@ -4194,7 +4195,7 @@ export default [ footnotes: {}, }, { - names: ["RIGHT_ALT", "RALT"], + names: ["RIGHT_ALT", "RALT", "RA(code)"], description: "Right Alt", context: "Keyboard", clarify: false, @@ -4218,6 +4219,7 @@ export default [ names: [ "RIGHT_GUI", "RGUI", + "RG(code)", "RIGHT_WIN", "RWIN", "RIGHT_COMMAND", From 0be904c34f6a7d709fd5e292d56b183469c4a9e7 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 8 Nov 2020 10:33:56 -0600 Subject: [PATCH 340/353] fix(underglow): Add CONFIG_ to underglow Kconfigs --- app/boards/shields/corne/corne.conf | 2 +- app/boards/shields/microdox/microdox.conf | 2 +- docs/docs/feature/underglow.md | 26 +++++++++++------------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/boards/shields/corne/corne.conf b/app/boards/shields/corne/corne.conf index b79385bd..974243c8 100644 --- a/app/boards/shields/corne/corne.conf +++ b/app/boards/shields/corne/corne.conf @@ -1,5 +1,5 @@ # Uncomment the following lines to enable the Corne RGB Underglow -# ZMK_RGB_UNDERGLOW=y +# CONFIG_ZMK_RGB_UNDERGLOW=y # CONFIG_WS2812_STRIP=y # Uncomment the following line to enable the Corne OLED Display diff --git a/app/boards/shields/microdox/microdox.conf b/app/boards/shields/microdox/microdox.conf index b79385bd..974243c8 100644 --- a/app/boards/shields/microdox/microdox.conf +++ b/app/boards/shields/microdox/microdox.conf @@ -1,5 +1,5 @@ # Uncomment the following lines to enable the Corne RGB Underglow -# ZMK_RGB_UNDERGLOW=y +# CONFIG_ZMK_RGB_UNDERGLOW=y # CONFIG_WS2812_STRIP=y # Uncomment the following line to enable the Corne OLED Display diff --git a/docs/docs/feature/underglow.md b/docs/docs/feature/underglow.md index 5e7db0b9..a9621428 100644 --- a/docs/docs/feature/underglow.md +++ b/docs/docs/feature/underglow.md @@ -21,7 +21,7 @@ Here you can see the RGB underglow feature in action using WS2812 LEDs. ## Enabling RGB Underglow -To enable RGB underglow on your board or shield, simply enable the `ZMK_RGB_UNDERGLOW` and `X_STRIP` configuration values in the `.conf` file of your user config directory as such: +To enable RGB underglow on your board or shield, simply enable the `CONFIG_ZMK_RGB_UNDERGLOW` and `X_STRIP` configuration values in the `.conf` file of your user config directory as such: ``` CONFIG_ZMK_RGB_UNDERGLOW=y @@ -35,17 +35,17 @@ If your board or shield does not have RGB underglow configured, refer to [Adding There are various Kconfig options used to configure the RGB underglow feature. These can all be set in the `.conf` file. -| Option | Description | Default | -| ----------------------------- | ---------------------------------------------- | ------- | -| `ZMK_RGB_UNDERGLOW_HUE_STEP` | Hue step in degrees of 360 used by RGB actions | 10 | -| `ZMK_RGB_UNDERGLOW_SAT_STEP` | Saturation step in percent used by RGB actions | 10 | -| `ZMK_RGB_UNDERGLOW_BRT_STEP` | Brightness step in percent used by RGB actions | 10 | -| `ZMK_RGB_UNDERGLOW_HUE_START` | Default hue 0-359 in degrees | 0 | -| `ZMK_RGB_UNDERGLOW_SAT_START` | Default saturation 0-100 in percent | 100 | -| `ZMK_RGB_UNDERGLOW_BRT_START` | Default brightness 0-100 in percent | 100 | -| `ZMK_RGB_UNDERGLOW_SPD_START` | Default effect speed 1-5 | 3 | -| `ZMK_RGB_UNDERGLOW_EFF_START` | Default effect integer from the effect enum | 0 | -| `ZMK_RGB_UNDERGLOW_ON_START` | Default on state | y | +| Option | Description | Default | +| ------------------------------------ | ---------------------------------------------- | ------- | +| `CONFIG_ZMK_RGB_UNDERGLOW_HUE_STEP` | Hue step in degrees of 360 used by RGB actions | 10 | +| `CONFIG_ZMK_RGB_UNDERGLOW_SAT_STEP` | Saturation step in percent used by RGB actions | 10 | +| `CONFIG_ZMK_RGB_UNDERGLOW_BRT_STEP` | Brightness step in percent used by RGB actions | 10 | +| `CONFIG_ZMK_RGB_UNDERGLOW_HUE_START` | Default hue 0-359 in degrees | 0 | +| `CONFIG_ZMK_RGB_UNDERGLOW_SAT_START` | Default saturation 0-100 in percent | 100 | +| `CONFIG_ZMK_RGB_UNDERGLOW_BRT_START` | Default brightness 0-100 in percent | 100 | +| `CONFIG_ZMK_RGB_UNDERGLOW_SPD_START` | Default effect speed 1-5 | 3 | +| `CONFIG_ZMK_RGB_UNDERGLOW_EFF_START` | Default effect integer from the effect enum | 0 | +| `CONFIG_ZMK_RGB_UNDERGLOW_ON_START` | Default on state | y | ## Adding RGB Underglow to a Board @@ -122,7 +122,7 @@ Once you have your `led_strip` properly defined you need to add it to the root d }; ``` -Finally you need to enable the `ZMK_RGB_UNDERGLOW` and `X_STRIP` configuration values in the `.conf` file of your board (or set a default in the `Kconfig.defconfig`): +Finally you need to enable the `CONFIG_ZMK_RGB_UNDERGLOW` and `X_STRIP` configuration values in the `.conf` file of your board (or set a default in the `Kconfig.defconfig`): ``` CONFIG_ZMK_RGB_UNDERGLOW=y From 9fe1793691cbfbde734a069a4f361ae2354692dd Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 9 Nov 2020 12:01:53 -0500 Subject: [PATCH 341/353] feat(blog): SOTF #3 --- docs/blog/2020-08-12-zmk-sotf-1.md | 2 +- docs/blog/2020-09-21-zmk-sotf-2.md | 2 +- docs/blog/2020-11-09-zmk-sotf-3.md | 156 +++++++++++++++++++++++++++++ 3 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 docs/blog/2020-11-09-zmk-sotf-3.md diff --git a/docs/blog/2020-08-12-zmk-sotf-1.md b/docs/blog/2020-08-12-zmk-sotf-1.md index 8a3ca7c6..b5b2046d 100644 --- a/docs/blog/2020-08-12-zmk-sotf-1.md +++ b/docs/blog/2020-08-12-zmk-sotf-1.md @@ -1,5 +1,5 @@ --- -title: ZMK State Of The Firmware \#1 +title: "ZMK State Of The Firmware #1" author: Pete Johanson author_title: Project Creator author_url: https://gitlab.com/petejohanson diff --git a/docs/blog/2020-09-21-zmk-sotf-2.md b/docs/blog/2020-09-21-zmk-sotf-2.md index 82278add..06c64f02 100644 --- a/docs/blog/2020-09-21-zmk-sotf-2.md +++ b/docs/blog/2020-09-21-zmk-sotf-2.md @@ -1,5 +1,5 @@ --- -title: ZMK State Of The Firmware \#2 +title: "ZMK State Of The Firmware #2" author: Pete Johanson author_title: Project Creator author_url: https://gitlab.com/petejohanson diff --git a/docs/blog/2020-11-09-zmk-sotf-3.md b/docs/blog/2020-11-09-zmk-sotf-3.md new file mode 100644 index 00000000..71a53400 --- /dev/null +++ b/docs/blog/2020-11-09-zmk-sotf-3.md @@ -0,0 +1,156 @@ +--- +title: "ZMK State Of The Firmware #3" +author: Pete Johanson +author_title: Project Creator +author_url: https://gitlab.com/petejohanson +author_image_url: https://www.gravatar.com/avatar/2001ceff7e9dc753cf96fcb2e6f41110 +tags: [SOTF, keyboards, firmware, oss, ble] +--- + +Welcome to the third ZMK "State Of The Firmware" (SOTF)! + +This update will cover all the major activity since [SOTF #2](/blog/2020/09/21/zmk-sotf-2). This edition comes a bit later than planned, but the amount of features and changes will hopefully make it worth it! + +## Recent Activity + +Here's a summary of the various major changes since last time, broken down by theme: + +### Keymaps/Behaviors + +Tons of activity related to keymaps, so we'll go into more detail this time. + +#### Codes Overhaul + +[innovaker] _completely_ overhauled the set of available codes for keymaps, and simultaneously has created +_beautiful_ [documentation](/docs/codes) to help users visualize the codes, and also understand if they are supported on their particular operating system. + +This also laid the foundation for the other keymap related changes that are now available. + +#### Modified (Shifted) Codes + +[okke-formsma] added the ability to apply modifiers to a code, e.g.: + +``` +&kp LC(C) +``` + +which sends `Control + c` when pressed. This feature is often used on smaller keyboards to achieve "shifted keycodes", e.g. `LS(N1)` to send a `!`. +To make this easier, in addition to all the normal codes, we now have defines for common shifted codes, e.g. `EXCL` for `!`, `AT` for `@`, etc. + +To learn more, check out the [Modifiers](/docs/codes/modifiers) documentation. + +#### Simplified Key Press Behavior + +In previous versions of ZMK, users needed to be careful to select between the `&kp` and `&cp` behaviors in their keymaps, depending on +whether the particular keycode they wanted to send was in the "HID consumer page" or not. Forcing users to understand the difference and get +this right was awkward and error prone. + +[petejohanson] and [innovaker] have reduced this complexity. Users can now simply use `&kp` with all available codes and ZMK will +handle sending the right events to the connected host. + +### Power Management + +Several important power management features have been added to ZMK, helping save power for many use cases. + +#### BLE Battery Level Reporting + +[Nicell] added the necessary [driver](https://github.com/zmkfirmware/zmk/pull/293) and [core code](https://github.com/zmkfirmware/zmk/pull/306) to send BLE battery level notifications to hosts that support displaying them. Testing seems to show this works with Windows and GNOME, but macOS does not display the battery info. + +#### External Power Control + +[megamind4089] added a new [driver](https://github.com/zmkfirmware/zmk/pull/242) and [behavior](https://github.com/zmkfirmware/zmk/pull/258) to allow users to toggle (on/off) the external power supplied by boards such as the nRFMicro +and nice!nano that have specialized hardware for this purpose. + +With this change, you can add + +``` +&ext_power EP_TOG +``` + +to toggle (on/off) the power to external hardware like RGB underglow or OLEDs. Check out the [external power control](/docs/behavior/power#external-power-control) docs for more info. + +#### Deep Sleep + +[petejohanson] has contributed the initial [deep sleep](https://github.com/zmkfirmware/zmk/pull/211) support to ZMK. This work also +included some automatic power savings by switching to PORT events on the nRF52 chips, which reduces the idle power draw, even without deep sleep. Deep sleep is currently not turned on by default, but will be soon. + +### Miscellaneous + +#### Output Selection + +[joelspadin] added [output selection](/docs/behavior/outputs) to allow selecting whether to send output over USB or BLE if both are connected. This should now help avoid having "double keypresses" when your keyboard is plugged into a host. + +#### Bootloader Corruption Fix + +[Nicell] has already [blogged about this](/blog/2020/10/03/bootloader-fix), but for those that missed it, a _major_, and incredibly difficult to pin down bug involving corruption of the bootloader on devices using the Adafruit nRF52 bootloader has been fixed by [Nicell]. If you've encountered this bug, flashing the latest firmware should prevent it from reoccurring. Unfortunately, due to the nature of this fix, you will need to re-pair your keyboard with your hosts, as the fix involves changing where settings are stored in the flash of the controller. + +#### Official USB Product ID + +[petejohanson] has gotten an official [USB product ID](https://github.com/openmoko/openmoko-usb-oui/pull/15) assigned to the ZMK Firmware. For anyone looking to uniquely identify a USB device running the ZMK Firmware, you can match on: + +- Vendor ID: `0x1d50` +- Product ID: `0x615e` + +We are incredibly grateful that Openmoko Inc., in the wake of discontinuing the openmoko projects, has made this an option for OSS projects. + +#### Development: Remote Docker Container Integration + +[idan](https://github.com/idan) contributed [VSCode devcontainer integration](https://github.com/zmkfirmware/zmk/pull/209) to make it easier for developers to build and develop ZMK without having to do complicated local toolchain setup and configuration. This also opens up some amazing future flexibility for things like [GitHub Codespaces](https://twitter.com/ZMKFirmware/status/1315760616779505678?s=20). + +There's some follow up tweaks necessary for better supporting using this with user config repositories, which will be available soon. + +## New Shields + +- Reviung41 in [#297](https://github.com/zmkfirmware/zmk/pull/297) - [Nicell] +- Boardsource 3x4 in [#296](https://github.com/zmkfirmware/zmk/pull/296) - [neegool](https://github.com/neegool) +- NIBBLE in [#292](https://github.com/zmkfirmware/zmk/pull/292) - [jaygreco](https://github.com/jaygreco) +- Microdox in [#245](https://github.com/zmkfirmware/zmk/pull/245) - [careyk007](https://github.com/careyk007) +- MakerDiary M60 in [#233](https://github.com/zmkfirmware/zmk/pull/233) - [megamind4089] +- TGX4 in [#226](https://github.com/zmkfirmware/zmk/pull/226) - [mubeenkhan94](https://github.com/mubeenkhan94) +- Querfrency V1 in [#216](https://github.com/zmkfirmware/zmk/pull/216) - [noar-t](https://github.com/noar-t) +- Cradio in [#224](https://github.com/zmkfirmware/zmk/pull/224) - [davidphilipbarr](https://github.com/davidphilipbarr) +- Romac+ in [#198](https://github.com/zmkfirmware/zmk/pull/198) - [reizero00](https://github.com/reizero00) + +## New Boards + +- MakerDiary nRF52840 M.2 Module in [#233](https://github.com/zmkfirmware/zmk/pull/233) - [megamind4089] + +## Testing + +There has been an _amazing_ amount of testing from various users as we develop new features. In particular, we'd like to give a shout out to [tominabox1](https://github.com/tominabox1) who has been tireless in providing detailed and thorough testing of +changes as they are being developed. + +## Coming Soon! + +Some items listed in the last coming soon section are still under active development. + +- OLED work, including battery and USB/BLE connection status - [petejohanson] +- One shot mod/layer behaviors - [okke-formsma] +- A power profiler page for the website, to help users estimate their battery life for a given keyboard - [Nicell] +- A keymap converter to automatically update keymaps to the new codes and use of `&kp` everywhere - [joelspadin] + +## Statistics + +Some statistics of interest for ZMK: + +- GitHub (lifetime stats) + - 210 Closed PRs + - 116 Stars + - 101 Forks +- Discord Chat + - 363 total registered +- Website (last 30 days) + - 8.5K page views + - 766 new users + +## Thanks! + +Thanks again to the numerous contributors and users who have made working on ZMK such a pleasure! + +[okke-formsma]: https://github.com/okke-formsma +[nicell]: https://github.com/Nicell +[petejohanson]: https://github.com/petejohanson +[brainwart]: https://github.com/BrainWart +[innovaker]: https://github.com/innovaker +[megamind4089]: https://github.com/megamind4089 +[joelspadin]: https://github.com/joelspadin From edcfe380fed90d4cadd1d1594852fcb571385446 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 9 Nov 2020 17:00:52 -0500 Subject: [PATCH 342/353] fix(blog): Quefrency typo fix. --- docs/blog/2020-11-09-zmk-sotf-3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/2020-11-09-zmk-sotf-3.md b/docs/blog/2020-11-09-zmk-sotf-3.md index 71a53400..8752065b 100644 --- a/docs/blog/2020-11-09-zmk-sotf-3.md +++ b/docs/blog/2020-11-09-zmk-sotf-3.md @@ -107,7 +107,7 @@ There's some follow up tweaks necessary for better supporting using this with us - Microdox in [#245](https://github.com/zmkfirmware/zmk/pull/245) - [careyk007](https://github.com/careyk007) - MakerDiary M60 in [#233](https://github.com/zmkfirmware/zmk/pull/233) - [megamind4089] - TGX4 in [#226](https://github.com/zmkfirmware/zmk/pull/226) - [mubeenkhan94](https://github.com/mubeenkhan94) -- Querfrency V1 in [#216](https://github.com/zmkfirmware/zmk/pull/216) - [noar-t](https://github.com/noar-t) +- Quefrency V1 in [#216](https://github.com/zmkfirmware/zmk/pull/216) - [noar-t](https://github.com/noar-t) - Cradio in [#224](https://github.com/zmkfirmware/zmk/pull/224) - [davidphilipbarr](https://github.com/davidphilipbarr) - Romac+ in [#198](https://github.com/zmkfirmware/zmk/pull/198) - [reizero00](https://github.com/reizero00) From 972158181d33b268c2e5ec4860742dcbfe4f0e5c Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 10 Nov 2020 11:20:17 -0500 Subject: [PATCH 343/353] fix(shields): Replace Corne w/ Microdox. --- app/boards/shields/microdox/microdox.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/boards/shields/microdox/microdox.conf b/app/boards/shields/microdox/microdox.conf index b79385bd..253c94e4 100644 --- a/app/boards/shields/microdox/microdox.conf +++ b/app/boards/shields/microdox/microdox.conf @@ -1,6 +1,6 @@ -# Uncomment the following lines to enable the Corne RGB Underglow +# Uncomment the following lines to enable the Microdox RGB Underglow # ZMK_RGB_UNDERGLOW=y # CONFIG_WS2812_STRIP=y -# Uncomment the following line to enable the Corne OLED Display +# Uncomment the following line to enable the Microdox OLED Display # CONFIG_ZMK_DISPLAY=y From 348a44a8a387e38922e7e275b1ba9af790648016 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Sun, 8 Nov 2020 11:37:18 +0000 Subject: [PATCH 344/353] refactor(app): Remove obsolete include's of `hid_usage_pages.h` This should've been done in eff1b8223b5010d526914530c5d1d469eff356df. --- app/dts/behaviors/key_press.dtsi | 2 -- app/dts/behaviors/sensor_rotate_key_press.dtsi | 2 -- app/src/hid.c | 1 - 3 files changed, 5 deletions(-) diff --git a/app/dts/behaviors/key_press.dtsi b/app/dts/behaviors/key_press.dtsi index 77050aaa..e0668327 100644 --- a/app/dts/behaviors/key_press.dtsi +++ b/app/dts/behaviors/key_press.dtsi @@ -1,6 +1,4 @@ -#include - / { behaviors { /* DEPRECATED: `cp` will be removed in the future */ diff --git a/app/dts/behaviors/sensor_rotate_key_press.dtsi b/app/dts/behaviors/sensor_rotate_key_press.dtsi index 54339945..d06eca23 100644 --- a/app/dts/behaviors/sensor_rotate_key_press.dtsi +++ b/app/dts/behaviors/sensor_rotate_key_press.dtsi @@ -1,6 +1,4 @@ -#include - / { behaviors { /* DEPRECATED: `inc_dec_cp` will be removed in the future */ diff --git a/app/src/hid.c b/app/src/hid.c index 7e733d96..b84a693f 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -9,7 +9,6 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include #include -#include static struct zmk_hid_keypad_report kp_report = { .report_id = 1, .body = {.modifiers = 0, ._reserved = 0, .keys = {0}}}; From 7d16186b7acd5113a59fc612cd53b7bae7f46f38 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 10 Nov 2020 14:35:23 -0500 Subject: [PATCH 345/353] fix(ble): Remove unpair combo code. * Favor the settings reset images for this. --- app/CMakeLists.txt | 1 - app/boards/shields/corne/corne.dtsi | 4 - app/boards/shields/corne/corne_left.overlay | 4 - app/boards/shields/corne/corne_right.overlay | 4 - app/boards/shields/iris/iris.dtsi | 4 - app/boards/shields/iris/iris_left.overlay | 4 - app/boards/shields/iris/iris_right.overlay | 4 - app/boards/shields/kyria/kyria.dtsi | 4 - app/boards/shields/kyria/kyria_left.overlay | 4 - app/boards/shields/kyria/kyria_right.overlay | 4 - app/boards/shields/lily58/lily58.dtsi | 4 - app/boards/shields/lily58/lily58_left.overlay | 4 - .../shields/lily58/lily58_right.overlay | 4 - app/boards/shields/m60/m60.overlay | 6 -- app/boards/shields/romac/romac.overlay | 6 -- app/boards/shields/sofle/sofle.dtsi | 4 - app/boards/shields/sofle/sofle_left.overlay | 4 - app/boards/shields/sofle/sofle_right.overlay | 4 - app/dts/bindings/zmk,bt-unpair-combo.yaml | 12 --- app/src/ble_unpair_combo.c | 76 ------------------ docs/docs/assets/bond-clearing/corne.jpg | Bin 147244 -> 0 bytes docs/docs/assets/bond-clearing/debug.log | 0 docs/docs/assets/bond-clearing/kyria.jpg | Bin 140236 -> 0 bytes docs/docs/assets/bond-clearing/lily58.jpg | Bin 2566639 -> 0 bytes docs/docs/bond-reset.md | 30 ------- docs/docs/user-setup.md | 2 +- 26 files changed, 1 insertion(+), 192 deletions(-) delete mode 100644 app/dts/bindings/zmk,bt-unpair-combo.yaml delete mode 100644 app/src/ble_unpair_combo.c delete mode 100644 docs/docs/assets/bond-clearing/corne.jpg delete mode 100644 docs/docs/assets/bond-clearing/debug.log delete mode 100644 docs/docs/assets/bond-clearing/kyria.jpg delete mode 100644 docs/docs/assets/bond-clearing/lily58.jpg delete mode 100644 docs/docs/bond-reset.md diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 7a12a812..0ffd391e 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -30,7 +30,6 @@ target_sources(app PRIVATE src/hid.c) target_sources(app PRIVATE src/sensors.c) target_sources_ifdef(CONFIG_ZMK_DISPLAY app PRIVATE src/display.c) target_sources(app PRIVATE src/event_manager.c) -target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble_unpair_combo.c) target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/ext_power_generic.c) target_sources(app PRIVATE src/events/position_state_changed.c) target_sources(app PRIVATE src/events/keycode_state_changed.c) diff --git a/app/boards/shields/corne/corne.dtsi b/app/boards/shields/corne/corne.dtsi index af14bae9..4360aea7 100644 --- a/app/boards/shields/corne/corne.dtsi +++ b/app/boards/shields/corne/corne.dtsi @@ -58,10 +58,6 @@ RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10 }; - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; - // TODO: per-key RGB node(s)? }; diff --git a/app/boards/shields/corne/corne_left.overlay b/app/boards/shields/corne/corne_left.overlay index f12c417d..399bddd1 100644 --- a/app/boards/shields/corne/corne_left.overlay +++ b/app/boards/shields/corne/corne_left.overlay @@ -16,7 +16,3 @@ , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> ; }; - -&bt_unpair_combo { - key-positions = <0 38>; -}; diff --git a/app/boards/shields/corne/corne_right.overlay b/app/boards/shields/corne/corne_right.overlay index 9d97d853..4250ac55 100644 --- a/app/boards/shields/corne/corne_right.overlay +++ b/app/boards/shields/corne/corne_right.overlay @@ -20,7 +20,3 @@ , <&pro_micro_a 3 GPIO_ACTIVE_HIGH> ; }; - -&bt_unpair_combo { - key-positions = <11 39>; -}; diff --git a/app/boards/shields/iris/iris.dtsi b/app/boards/shields/iris/iris.dtsi index f6e32c40..9ea1dd68 100644 --- a/app/boards/shields/iris/iris.dtsi +++ b/app/boards/shields/iris/iris.dtsi @@ -44,8 +44,4 @@ RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,2) RC(4,9) RC(3,6) RC(3,7) ; }; - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; }; \ No newline at end of file diff --git a/app/boards/shields/iris/iris_left.overlay b/app/boards/shields/iris/iris_left.overlay index e04638e3..7ded678b 100644 --- a/app/boards/shields/iris/iris_left.overlay +++ b/app/boards/shields/iris/iris_left.overlay @@ -16,7 +16,3 @@ , <&pro_micro_d 10 GPIO_ACTIVE_HIGH> ; }; - -&bt_unpair_combo { - key-positions = <0 42>; -}; diff --git a/app/boards/shields/iris/iris_right.overlay b/app/boards/shields/iris/iris_right.overlay index 2d5dce87..51965821 100644 --- a/app/boards/shields/iris/iris_right.overlay +++ b/app/boards/shields/iris/iris_right.overlay @@ -20,7 +20,3 @@ , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> ; }; - -&bt_unpair_combo { - key-positions = <11 43>; -}; diff --git a/app/boards/shields/kyria/kyria.dtsi b/app/boards/shields/kyria/kyria.dtsi index a13f7f08..bbead846 100644 --- a/app/boards/shields/kyria/kyria.dtsi +++ b/app/boards/shields/kyria/kyria.dtsi @@ -81,10 +81,6 @@ RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) sensors = <&left_encoder &right_encoder>; }; - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; - // TODO: RGB node(s) }; diff --git a/app/boards/shields/kyria/kyria_left.overlay b/app/boards/shields/kyria/kyria_left.overlay index 441c1a69..c8b5be27 100644 --- a/app/boards/shields/kyria/kyria_left.overlay +++ b/app/boards/shields/kyria/kyria_left.overlay @@ -22,7 +22,3 @@ &left_encoder { status = "okay"; }; - -&bt_unpair_combo { - key-positions = <0 44>; -}; \ No newline at end of file diff --git a/app/boards/shields/kyria/kyria_right.overlay b/app/boards/shields/kyria/kyria_right.overlay index 8ee0fcbc..8163c95e 100644 --- a/app/boards/shields/kyria/kyria_right.overlay +++ b/app/boards/shields/kyria/kyria_right.overlay @@ -27,7 +27,3 @@ &right_encoder { status = "okay"; }; - -&bt_unpair_combo { - key-positions = <11 45>; -}; \ No newline at end of file diff --git a/app/boards/shields/lily58/lily58.dtsi b/app/boards/shields/lily58/lily58.dtsi index 556909fd..eb69fa75 100644 --- a/app/boards/shields/lily58/lily58.dtsi +++ b/app/boards/shields/lily58/lily58.dtsi @@ -57,10 +57,6 @@ RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,5) RC(4,6) RC(3,6) RC(3,7) compatible = "zmk,keymap-sensors"; sensors = <&left_encoder>; }; - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; }; &pro_micro_i2c { diff --git a/app/boards/shields/lily58/lily58_left.overlay b/app/boards/shields/lily58/lily58_left.overlay index 1752b6e4..7397f188 100644 --- a/app/boards/shields/lily58/lily58_left.overlay +++ b/app/boards/shields/lily58/lily58_left.overlay @@ -20,7 +20,3 @@ &left_encoder { status = "okay"; }; - -&bt_unpair_combo { - key-positions = <0 53>; -}; diff --git a/app/boards/shields/lily58/lily58_right.overlay b/app/boards/shields/lily58/lily58_right.overlay index 6c8e493d..4fc460cf 100644 --- a/app/boards/shields/lily58/lily58_right.overlay +++ b/app/boards/shields/lily58/lily58_right.overlay @@ -20,7 +20,3 @@ , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> ; }; - -&bt_unpair_combo { - key-positions = <11 54>; -}; diff --git a/app/boards/shields/m60/m60.overlay b/app/boards/shields/m60/m60.overlay index babae2db..0824f1c6 100644 --- a/app/boards/shields/m60/m60.overlay +++ b/app/boards/shields/m60/m60.overlay @@ -56,11 +56,5 @@ RC(6,4) RC(6,3) RC(6,2) RC(6,1) RC(6,0) RC(5,7) RC(5,6) RC(5,5) RC(5,4) RC RC(6,5) RC(6,6) RC(6,7) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) >; }; - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - key-positions = <0 53>; - }; - }; diff --git a/app/boards/shields/romac/romac.overlay b/app/boards/shields/romac/romac.overlay index 67d5868b..f6b0f726 100644 --- a/app/boards/shields/romac/romac.overlay +++ b/app/boards/shields/romac/romac.overlay @@ -30,11 +30,5 @@ ; }; - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - key-positions = <0 11>; - }; - }; diff --git a/app/boards/shields/sofle/sofle.dtsi b/app/boards/shields/sofle/sofle.dtsi index bff42f6f..b4edb5f6 100644 --- a/app/boards/shields/sofle/sofle.dtsi +++ b/app/boards/shields/sofle/sofle.dtsi @@ -66,10 +66,6 @@ RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,5) RC(4,6) RC(3,6) RC(3,7) compatible = "zmk,keymap-sensors"; sensors = <&left_encoder &right_encoder>; }; - - bt_unpair_combo: bt_unpair_combo { - compatible = "zmk,bt-unpair-combo"; - }; }; &pro_micro_i2c { diff --git a/app/boards/shields/sofle/sofle_left.overlay b/app/boards/shields/sofle/sofle_left.overlay index 0dfb7535..eb2bfeda 100644 --- a/app/boards/shields/sofle/sofle_left.overlay +++ b/app/boards/shields/sofle/sofle_left.overlay @@ -20,7 +20,3 @@ &left_encoder { status = "okay"; }; - -&bt_unpair_combo { - key-positions = <0 54>; -}; diff --git a/app/boards/shields/sofle/sofle_right.overlay b/app/boards/shields/sofle/sofle_right.overlay index 8eaf076d..c35cf52c 100644 --- a/app/boards/shields/sofle/sofle_right.overlay +++ b/app/boards/shields/sofle/sofle_right.overlay @@ -24,7 +24,3 @@ &right_encoder { status = "okay"; }; - -&bt_unpair_combo { - key-positions = <11 55>; -}; diff --git a/app/dts/bindings/zmk,bt-unpair-combo.yaml b/app/dts/bindings/zmk,bt-unpair-combo.yaml deleted file mode 100644 index d781347a..00000000 --- a/app/dts/bindings/zmk,bt-unpair-combo.yaml +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2020, Pete Johanson -# SPDX-License-Identifier: MIT - -description: | - Defines a set of key positions that will unpair all BT devices if held on startup. - -compatible: "zmk,bt-unpair-combo" - -properties: - key-positions: - type: array - required: true diff --git a/app/src/ble_unpair_combo.c b/app/src/ble_unpair_combo.c deleted file mode 100644 index b6e542de..00000000 --- a/app/src/ble_unpair_combo.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2020 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - -#include -#include - -#define DT_DRV_COMPAT zmk_bt_unpair_combo - -#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) - -#include -LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); - -#include -#include -#include - -static u8_t combo_state; - -const u32_t key_positions[] = DT_INST_PROP(0, key_positions); -#define KP_LEN DT_INST_PROP_LEN(0, key_positions) - -int index_for_key_position(u32_t kp) { - for (int i = 0; i < KP_LEN; i++) { - if (key_positions[i] == kp) { - return i; - } - } - - return -1; -} - -int unpair_combo_listener(const struct zmk_event_header *eh) { - if (is_position_state_changed(eh)) { - const struct position_state_changed *psc = cast_position_state_changed(eh); - - int kp_index = index_for_key_position(psc->position); - if (kp_index < 0) { - return 0; - } - - WRITE_BIT(combo_state, kp_index, psc->state); - } - - return 0; -}; - -void unpair_combo_work_handler(struct k_work *work) { - for (int i = 0; i < KP_LEN; i++) { - if (!(combo_state & BIT(i))) { - LOG_DBG("Key position %d not held, skipping unpair combo", key_positions[i]); - return; - } - } - - zmk_ble_unpair_all(); -}; - -struct k_delayed_work unpair_combo_work; - -int zmk_ble_unpair_combo_init(struct device *_unused) { - k_delayed_work_init(&unpair_combo_work, unpair_combo_work_handler); - k_delayed_work_submit(&unpair_combo_work, K_SECONDS(2)); - - return 0; -}; - -ZMK_LISTENER(zmk_ble_unpair_combo, unpair_combo_listener); -ZMK_SUBSCRIPTION(zmk_ble_unpair_combo, position_state_changed); - -SYS_INIT(zmk_ble_unpair_combo_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); - -#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */ diff --git a/docs/docs/assets/bond-clearing/corne.jpg b/docs/docs/assets/bond-clearing/corne.jpg deleted file mode 100644 index 1e070a2c71b2a667f77cf5957740feb0a5148074..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147244 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%0AgufbX&elEhn+p$&-`-(b7>> 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 diff --git a/docs/docs/assets/bond-clearing/debug.log b/docs/docs/assets/bond-clearing/debug.log deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/docs/assets/bond-clearing/kyria.jpg b/docs/docs/assets/bond-clearing/kyria.jpg deleted file mode 100644 index 9fa22a076525c48bbc4fa5949cee7e0151c5d100..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140236 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

K>YFE6Bu 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

p6+}s!`*Dv&&@S;>EjR6&RFLQi>)2}9FWK_ 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%0AM}(OWWMF4=$tU$o!SBwl9hm z(6zaB9n+1rsJ9dRO-?akX}NT;#Dk~N^je!WgxZ!`qcG7dx0Rg`wZ%U)2<(0nIDf;i2>78=+|d=DQ`EP9RItSr22u-2Zh(`$L3T#PSU;lK6PMo zSnIoYKT}vxdrb+6;7K4PstL{~dPsRpL9T)7l9e-S#O1|hDTLtjjOdCIpM}da$@`0} zcub1Rla2K^S__Mz8IyBHmf9Uyp(qGz^5~CLIkaOP61?$!3__rw8{keWN8!hx9zOji z)zA!Ok>`|wjf)vDdyEVsl@0l$w_PX$|4|8&_BZ$bmp�^@@(lO~S1&Wps3a#SM7 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ð_?2aw(#E&ku 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 |4%Bef$MOL@<-$zeeNwA9wlVN>XHm(%k}# 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⁡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�sKaT-h)G*5=~G{ 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

Q$~0N_hjNvoC2 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

4{HG^7jzn#G|}wSh0~qpGUSOt>Rp@&>&+fdYWya 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�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

c2{&d8b+LOwxg*JlGNkJk&Rz{m|7c3DD2 zeQtyPk^5!7NfiGuuL0+iodK@v#UYVQuEMup?V9?A%EDqw1&Pb`pk#?Sdw*NWW zR+qEvz(9uv;_AZzSE|P|{FFRAcBj9A<6PdL8z)~nQ(k}s6e$n=ynG%QYf#H!X97vxvh!g5+Z|NRm1!mMt@J z1&7DTYq0aqk8BmHTWK!$?>)jNgbwq>vv|vmKa6NrYB@)tJ=aOD#>~2yX>kX_d2Lg zoFyxxYBnoBJ>-xXD{mxSosao-wJt)zDRao#P2o!9q+Get{b;BEf~DEmlOd^RW@F1UXv|}mS>Av2z_Ou@>T*}wz9OrtX8&ys=Xg+ zC!6~G0l8;MPrNa3_6x^Egl^3*t@yV4t|#Ne4eL5e`D3mzNw50s(_b#2ey=27#a5RDv04aAtm!~2_Fp8A z9K%2%(}rWz<>?HcTm)XHsKNt@VicsGokIgmcU=T#=hP<*%EW1@Ih7=+hYWyIHjx@C zs4kG^%|`(r_%89qCFb?c#(|c;IFMG>Aw^R1*>66}Yn$`dr8z@U^AR05r(ZiZfe^@S zU(Nbr$84k#KU9|V{uSHs6G^4GFuM5l=vQgVkMpJPc~HCS4miXk`T!HpmU0j;q|?J5GO1Uz&`0@^1UfuT#RQfbcBm*8j0TU zGdLqU6@FZn8atJjN2b%H&d)a|sCRb>s1fqvSjv_~C(S_Mj~ZJBEv%hV+xG>$2quqX z-c=-s;vCH`_)~UnEiLYdJE~#Pe=hn202`kp;4WaEi5N6OB0aRy6-%oT3@CW%xW4C|b<*W1;X(@RcTSVH+kqH)BW_RVfjva6Ji{j;1{Pkp=!hTr- zn~`P^JH*}&e^EarRV&+>QR2y!%;C^bi-`(X_9twv-N)xDbVsQ=!4oIG-pwD!1M*Rg z(3SWBRg)5Bu(~BUh~`Ua%@UFFH>~PqP;{Kfp87Ycn~Mi+Z>k7@##!OWrkk&ZWP>xN zvC*>@_r*4yM=?1%#j&Ii){_S5#>hoFm;3O)YunF?apXq8=ma>Ma!Qz>qL+7`jf~` z^5js~@awCZl4jg9oa)_*^N~F=LjML@hnf#Ig&b+CE+J<(e$@%LM+g5kb76-5{iUz! z1t2LGLhk1#&~zgC<((VIcB8jIfe)Z@u&X?~E1iGND`Xf~Do8qIm>Qe=ttjoohP}lH zingmd=Les4)@q@XR(cEdCwS0`!-MBH%Jp}e(y^f%j`xnAyi}`gfrF=3pTlt)SH=x- zOlr=!Z@|aR++*%Iy7zA&5jdkmBLa2%A>>f;h~vl&c`_nw(N_W2-5o@RpYaT^H|ttp zytO|Nj{%13htTvK>KD010jgX)VFL91N?0q{z#i*~Yhb(S8*R<(U@M!w>$vwouBW*6 z*^WyxPMeusFyvoTtX4mOzK)?BZ8N2H(^#zA> zQtNVFfAMd%^#an2Q{C{&{Ev2EGzZFx4izmv91+5*FB<#e^iS4W>A3m;U>6zUr!JlfUn+ zAEZFXCqqv&Zo1tyI>%YTpT7-H9#y7+br;>Mj;F3gXC81uQ#b1m&qUAoINuz;1|b(z z#=FDWR7-)$*NRj`YJ??)ccjW0@E^}iZoFEmAd*ipd-d3H&hS^VluUKbGX)#sr59(x zO9l-^4Xo3U;7?3}PgPqL2eYG&Sa){CC7Y(R0R$Ly?t7!Vj14lRsq1T(x`s2v`H*Eh zpbjD8Q2mNK=)A?!-wpBWs3T^*g|Ys0Ec|Z8E~Bx1@^yt_msESCp5?&z(5%d01we{D z^5Zx{;5wk71v*d$tcLwJaxrtMh5ju>G=sVceB%M?WszJwbv+z+-g0dPj1tyO>+KI0 zVJ+~N(vB!^&G({TKTOcY*nd#dE7Grfg2BoC>tPlC&ZnzW%XCa+ayFh_3`Rn_lxmX_ z(VEn?08M$N^q6veuRd{Gr(U&HYVu?BmeT^G83nhkfVeu^^B(O7D4b;}MbJ=}HN*JP zZ~vMzIc<$Y@PvRU`|EF{T7)LM1w)hnD>FjmzXiJ624eNMpzjW{YKBN3#FVekJyqP( z>-4!eJz4DDV!dQpmZz6hJ=-tX1Fbv5S2oZbwmoVD|sGAkZtSg(6W8<-BfD-Q-b=M99l@Q-$YCGMhN?~I0Xm; zp*iQgycqL`MKE5nl;)l$xGPMj8+qZp(-B!~x@fQ%0U!}Yb8e{NtPFtN)~S+m7{dNh zWht36Qk^AcMU%L~gfMRr@`{h+KfHs)kA{!Nz6TZ65b}Shx|MOMB&c%94u7VIQwQ0@ zm+@%=ByBXxE!MCVt7D3)?{Iddi|PW3z_&K-5+71jd=D`GhWFOV{>&(#QIkX}cmH`I?e4dBizqOrbrw`r_nJHvc%pY{UVif!~ zLu$lFgzArRzF(*8r($O5Bv_P;zNGzYQKmiGLv{bTd|Da20NbTund=Gh9BDzyINKVB zgn^hT)BIVQ(Q7wP1sV<^0z>KuGN(;%hQmdxXlXi74!}<(Hr?7owH*;erbct|x(dV< zmQ6h)poaW^gL`GqyB0CD5dPF_GSEg)g&qPkpgVlBH;~U1@Mq-1mQ3!w3u*=8v&TzD zoN`VKXqGuP%jFzkS2TbQ;;`106fz0Uca^eHUr!cQ3PJajYmUN5_IpCE1O9v~+%6&< z>q^U*$%k6WA6Doa&Su3NOd*N5s7H#TF!PB$Z2)>(dsSj(8F0#l9(NY;mQ!er_vQTn zs^MHItH^64Ws(`@3xAA>&GR)MN*uoW6HB3L?I<+It`p-y0O%!?@3lFPRBgv`ma-Ff32XU_F=Oe`$CCxd$lh)E47qz|_foiRxrSyaR0?R+VF- zF(DXzn>%RD?OZbo&j;y4_j4CC#@}7g_@Kk-LGjmQ+`YYHfLb0>XCl?MxbY?RwCEx~ z9q^rG-b$9_Sd=6hsJf8aS;$2+JUnI$&I;JZgco zSL&){xTnq4D=+PHOqra#o`Q7qF+oB3f5AL6&i$|o?ckdiH1Z`CMq*YQB ziJ8UxJvKcfMxGxLh9&05C&H~W!B&Y3i6L*B9P3%tnypJH^$NE^g~BTsjG((C=75%hBYh6P4!ZM8z) zo&CC(-9szB>HC%F{Z~H`W-29kD@*&NEmQ9Q?CCaVexeTurUhiGqF?_gd4ha~`2+0_ zEaH8-zZlKzZ(xzbpF{cx-F zp!sF=H|{U{yd`ZD!OFEM%C;jVUqF(b69mY;^UfoYgP zKV>?Zmb(0O5Y4J$PemAOLy)90~$_=O2VI^B5lx4ndysl??cC-f)RNZ|oQ@Qw~ zGuT$!MiUp*-eVC0*C76|i2^;csQg-CD3++lO~c*u$2+LR{;s`A6!lnVnv}|otbv+@ z3=@SM3QTk!eZ(&VG0l@x^*0OEmKNwqs;UIlTwG?WjZB!xILD$N>8~M$zUA{Tr-Yl# z_MLm8u`MMN{h$mBM;vuPujsB|iFyk!7uz}RVX*~}@4eBR|Gvsa{(WWQYgz>YF=oje z7GloG|L{EIW;kSJ>XH*)KvMF)8W)}t64o%%wHe~1F3**1L>7>aKdf{UG6sM3yqK}A zET{w_md=k4o&s)`-`6F&hG5HNZwvP3qZCtEy|J4*<^_5&-$rS9zeOfU@fftDvUn0hz|PfesRV z9e&Fca3&h?Id8ZA>G&kVlIn=Wm5FR(6I<{E`L<^?F}^jUGuR(w4xVbl3~q|5A7Rq3wPxU!Nxx#%y@GiT65pGC5P^pR zsM9y_X4l755zC)sQpx#<_`5YK9z7V*mQHJ0Iukn7ZZ1zzRwwQ=51xQ2RQzQp!#6)g z56Dc;-N>T*tvc>zgP*OleAmfhO_5~$U1AUR$Bnrhhh~93lwOg)ed~$)nOM_W6y&`W z(+Z;1U5JBL$m!B0S6X<#d-B-CPysea<} z`fn{s>WIHj>KWmb=E}~_dm`N*L;0Z@@KNE^Tf~b$<+1#BHP%^t>tGH{r7Q<y9R7^kJ<8g7#i2iO}|1lO#?k%heCu^kM?ZSlki6I zZysiwyf;w^zx17#xo#ww#U(eat{r+Fg=~Ge2RG-^VfJAZ=eRomX*ehwH6s6o08^=G z$_klPeLU0ea*)?ym24TaHKUCzw1iQoXF29Vug`Wqk0R*Ku!_$$>yb(|@^ku9 zqQ>p}AD$-VC0^iS@?SNOCzxt~-{25YV#|H|oOY?VeesZCPF^1?G=RMxHVFm6z@m?w zh%F!fP8odhM-fP|lrRJR{nK`(Ziys^dYVw(|EUKR?!x{WCeo%-jGkT|WLB7iYcI6j zL3KYyLL>6 zlgk#F_QcqKi_v*A@lIIA76Ku6i?Ix(aT zPs8y#G-l5$Xod3CIZFCOt(Ad6NY`l$CZA%(knjv^v|ktO@{YfOQ2as%S!jgh_7o%8 zD*~E1qz1Hm7h;#gZ$O6+K7z#tUHGPc%=VHYvghW`cDEt&+tven!VRn1;=1X$$ucor%x zwU?`4^y5R1w56Z6>U3U-N`I4m!~Z0_DZAV#OkLB*)xfMR{BqS2qiQnFHUQwr2wn15 zQ{WtWQ*qZ>^zw3rRTyXUFQDS63#KgehFNo}!)JnZd6wL_TJ)NnPShT-PxsrW|Nb>Y z-I;(&`9T&smDaB0iOmaMd~Ab;BDy@#cXfbWja3aQSn120({)B~leG3q{CbaVC1}7* z#icpXXuv{?1F^`g9aD{}^-s!l9BEW6bP(e^=|9r?-3v%nofFZYF-n1=0ZGvJ+qcl3 znZg-+*R!-4+69JEM0)W-Sy}E_W4!G;J*(~$Hm{?8qBdr(X;(e9yK8iIl8ZyFk$o#0 zEqQEkcS6ug#Al4Z;V{0gX!vxDezL6F_P3fcs54_?0mu-2`5&IoTePD30eR!;u%uf5 zqU0Y6K~FR){NUfaC%?N~y0{MZ-Vu2``b5!N+ck9IdOKf1o`Bf?X5;K;7$+_wj zsO)7|Jkc;Ez%+sol4|H-5TY6u_;OERP+>2!=JCdTWM>53Ya6o%Tu$9PMyY7l>Ato0 zy8B-HToMEbL}a|B)(q{}$DytqG^jJarlTViN3IbN(Dg&lQ$rgzyYMSsNlEviG^?Sm zrdTqKBQIMfN$7ugR+PZvKrUeG+Xqa4mV#yy!g+@FNUv=7#g^$>-nb zGrM!n)Yz|`lwByzN5p-M8wqXciD)+CPOTF$wjPqzB$ZJW?Dn1at1M$9rgThDUm z>(`$|vysa;(-Z-T?-Qj06{opFjZoc*djN;d>L*%LqphD>LVHh{%cgm%-}X;$omI(y zctqVh$$*1q^_b!Xq8qlIW=uwuPA%T= zHz`__aVnL?8N%ZjhdW+^%Z>l=Hjk@+`Qsz=fdjdfOK3Pg|C`lEvXN5Hu&>`?^GxC@&Enp2y(*a3-b8sO-hP*Ujzc!T_l8(*a zpGeA0ZQc0fe3cRK$FH4(ae`ZZv9P?7D*sPXjAb*?a!swtb9Ii8SW&Ih8l_+h1B8@NUUQ%uLZtAo$V*0U#H85%~?scpl*ry#XdfKb_wBD{J{`QcG0nlM3YUD4kh1ch06jyL0i)4?tV?f_GLzu%X9-VLYG^{;1SxL; zQS#907E$JePF`*uV|6xNX`+`M-vN91_i4kRREB^}5}-({^uAEch4+u?&;z8?G!yID zMLkZWHqX?)cuBIg(Z9r|)nztM{XLnv6uVB2Tq1IXIX4*JrUkwr(4UuU1978=52_|5 zw5!jizgVSLc%(7LXKb8#?{`Y%RxoHjurNB)3p7?i3De;JJYhPgW0&Zo89&FLZMu(e zI2Ck&Dt%dR+ZaC*6-zIEO9iZg)DjYX|BJ$soC@;p_qcDTM(8k2{|H3|o+_D6%_|u} zP%rM#-t#%JwKY;7`Hj)_X{z8guBX3vOr{a+y(yh`P;2$&!2%V)5-)q}kqE@pzvi_b7?#L;>KFaAb zm-Fq2dTgU++4mTwaZ2^_EBMvx?ZI53-cx|Up$rZ_RYHa)k=d05N%bCzw20f+`-gIG ziDf&RxeCDT2_M}1z<9AT^6UWD8%NElV2L(Dy+EGr(fD22PZ?`X>xRJnD>x7Vwg(13 zWWvB^7G|iQ@jQcTO0Iz)Yss=N(1hZstW&FaBf;k=+S<^4uIDTnXw| z+fJJ_6Gl!{%CZVLH0oNE@uo1o^x!Z|naTTR_I`)~rzMvVX>9+4mH3PU+|r7Diu6;Q z(f$v>E!jn&NPiYXCXZh_AIV45SDJ>BpZe%lI*_i1;337Mdo#>a!S|-&6gFA??c*`y ze>o*)s11i`F39=v#92jmGnrj`@KSL@tJ(ErKV(isUsR-kL{V{(cF+GA+F0ai#c>#% zZX&!yqwR`QFM23prT_>K{%__aUd8obHVrJ#x-)I9;arie;@;56KMOW*N|Cix=h}7P z+w_g*C0cC73#>5K<@ZHMDGgP&{!*r(o-i|+d*K-K-YG&($SrARfPPv@X4y0#Y+kbF zsGDj}1L*QTK&H7rvo@jTUN9>j(`vWRrszu#%g(aL|LpkvrJ@R;&b+AJcb$2v>_VyT z6tIRksJE@*i(N)Z4oYXUtHMT9nGV0JIYN>Mw2^zBN6=d5VoriwUYe)*2SxP(2vY%p ziqo7G<5)9Jcy^B8`|=WVf3RsgUz%ia0d8q^CY&7Y5+05;ddX4)FI9`sb)M|e`^x39 zG}v5dNRwaYPOAy&mc9>zcR$*dq*BlHxhYwJyuB<19Nt?wG@wo%_mir);z=C0( z$;&G^e!V)j%T2hz_<%^W{z}NLFz#Kw1emHV-Dz9mFKtBTbEgBgU^Ag{0N|kvH24oM zPVWLKL_utLveXyQrEEBDpfW?PYEUnv5yPRj+32MpmiNq%3|V;juOcTPCa7c zoWz=LG2&r4DWin@=w27C3kbELxL!l>a`j1p6#Gxq0X;b*tPdYYx4D*&ag^AL%rzyYQ_obTzInvwRFamZ^Yt8lj++ibMfcf(8mjKA6Pg+x?q#aC zdo?|mo!lrl|EL_BG~J;t_vi;A#ohhA-Wj9M(O)uEnDNG|kQza!8y|By~?D@D}v z;GJhc!CorUP&^c7!1zH^Z(N8Qa$n!DA-l_`2=XW|LVGFgeYGjca2 zAAW=R%H!q2{!ZSOY(RK>iYL>hEZJW@TvSTo`hK80Rg^gfqC>vcf=$T&3**`cuQHBP z|H7|I;7K8|oqKxP8Cr=a>(Vtbw^V7*#CL~rs`xZlYMHR5W{{UB8^j?SCS@PhN1=e( zb^Jy>z}>#LmF(pmgwa4dbIKa!0dcPf{N!NnH`hP<%a`j>w1|>?t&a=U`5-TT?zBXB z&i=i%B$F7no0%j@`m ztk4qVik5fDq>Ekz>=OzvEH%*tKa->?By&k-a^8G@#ztm=^m^wBXE{ihlzYXMc#Q}0 z)cf<5sY=GcZCO|WrD7Y|-u6}Yl+d&z2QYJbgy`6P(ua#AG!ttBFh)tv{G;R%1rFkX=*dpv%5vp4W z%GHvL6mM?pQD1>0$m)P$Gf^{*%^j}X%<@YCwCn1H} z0hDX_^~Q*&IxMWrvd3qrFuP2_9iztMKHIL*gQ0OOn0JWh?LHU#sW! zjT)=Upa?eno2ypzUHe%YM^W)H6r1s4mlJn$9QJdMW~KoNL?sgzk((S9hFuB@dX9I? z-yQM(!N+#-B-NemzSKXh&*F50dj6@SKbK9F)N1{O(qi2!&(`q0`v9nWj?1}v2)f@L zOp`?7gT~6xt(3*WR5RPM zpO<+`UNahYZ<98~X80aOU8wMHMSx9`2Xg>OyjYZ@7@}g+8(`96c0`^utfVVt?t($? zoGbH@)yg<~^L%LD+$EMjqz|t^7XPCcQgoucks-SkC~C&By3T|ta z3Y4R6ovYW~A?D(c2I@6uvu`;7Utj4$1N7c_WM$ z{6;Qd$f|#OuaL$3$0{+R5BJt0xB`gfd0vy085vO+Jf+`}rg$0~ICim|+cHb`l_5N%g2K?KU&h`%8|UT=`5VGBPApPM3=7`|h?+%1 z+zv$h*rTE^@P}?c!Yu}CN9-=-kMNgy9>pjvVZ-zJlPCl;jG4(E6(gIKG~!a>KmgI@ z_I)g1a6>hK#b3pZA$bgzvYHPqAwfT!c>crDYSOXN z;8Ilb*$*BIUHk6!l3z)GhCzWJn*O$TtVH|1iD!=ObTG7?E}$;(7OS`+*(0(2-t_uv z`@}odZ?l1#=9hFRdH?uP?T4;Y^BOOfDu^UpC*5d7gjK8*5?Pia$sCfY|LUafsDkl_ zs4L~E6p1$gWfz49eRcE&>vCoNd3Fz3k7HbTBp_6^|E2uX&I62y)*(m@0)0Km| zkqy5;RorFB2|0NhU70c7p<`*SAh39+U)!sWhF|*vgIm99ekNok6UoICd+INRrfMC0 zkMgH^qG1?YDk-0DRf>tc3b<><;&ontMwxa8@A3}!UkR$yw{X^;Ztjc?Z8X9>+j6z~ z_J4zV+;Mp6HQIQ*E*Ur8eoQnEm8_07d420{c{aFH9lQ~=n|D=hd~4Zl);8YzhjO)0 z_`MqG>n;0n#|!H$3=?86ye+%;=%f|TeDjCn>6y8eC%F*Yz;RO%PDwLP-+wrsO9$VE zlh+ST+$U_mY~E>602ssf-tR@<;z+(aw4R*FT7ym&v6jGF_Oy~O{LS4=%@6zcfB1+E z!L1jEmL4o0(KYNXJN)aGSx%q04Zb`c8c<2#}l7cMqg`Qz@tnH422K|j@rD+R|;A0EXlTZcS9`8H3;Z`pmmRN6p;BrNW$g4d7s zbcaBCLgEQp6bx>{N+r4O7@6uny`rF*XI#63_Yj=l`#JmNyD#N2HNOjMs`@-W?|l~x zudj6j<7R_z;Z80o+voIA`?*pDHw#Da+No(-BXhW9JY*$7ws|BA*+pEZz&s!Gmj5^& z!$HG6-1sw!|1CFSvv!Hx#QXU|8RyL+2i2K5GrBtNSv;rY5qtvo!l04jRn;P z4ygCwnAp_qREt3E$`AGrC$jva4X1YNDW?-P&e`9Tx>gffx^qU`s={C~EF$gb| zZv3mfxvn^rk3asQ_eFY2HcSO|o4xj8_^1A@>F3_>Z7YESA@A58MQb_UOI*9p2)!(Y znw2_6?kp5?F|t9^CbhKmQ+rv9Y_#llOdmoQOz`i=xB!<$<@{95TZB#7o9vt3LUsj|F%_}Y1$<}g0yNc10n|h z-J~S{nW`MzU68g!^J+EG+Km=v8GXDd=v)7Lb4xu+)OO4w$_&9rO*0+jgYbI2!fp7` z9UJb>EJ0;I=U6*8OmG!}K8p#x=6^U|`(57e20~iemW!Z~`K(F$-23u^>;S@Cgb+UN z^qw!@+l|S|@*ku(tkIB~56pPAx^Y^1AKMvz{4J~3RGMOM?(PA_zcZNbmVkBY)ih{x zPiidGXSgyQ{)Bj$x$(#JJPnuO?of{c&}3F`O}F;iCq#>U+VRC|LFMv?Brzc|aS6n&yT*=?rzDUOkYzP3#VOl5>lfjeZ` z(#1I|(-+^M&O=HY91Wx!;?>-38+yhj`^+_1$m$j4@`2URniT*AO0GS~x72&NSlN^B zXamdIzL=(RppM>2?UO&Qe?NbUQDbndiGA~@jOk^qSnKqwjv>37M1c>N2X=DRzuU}v zJA=P`<>M>VEp4Pz?Ij!h4`)3LWt{>)JHXao)ir2-6Um-U*V@OOzj>p7W~2#xqLB}c zGaz#+W4jB&AIFK=TKObhrb(%v`kaRs1zq~kJc|;(yYcJ~JVDd__H*ahL5xxIy_d%Q zSa^|ld^qMOX@cFjfWTu^H?g)IlGYI^<`aAk?|{vaD50ASbpU#IJkk{)^pbwd<0Dx1 zh|KVqx%5_m4t4yHCu5C`8N3Si1I5Qq&^k~+C=pSei|P=H)MC6UEWsFx4^FO zdl2+4g@EZAs7d5qbwolt-olrW(@K^qVB@{tV&x7up*7TgVN38Wlkmx|^kUhcMbCD* zOt;_H|2+EgO3y>32Fr2$vjyFVoaHRXa-}Q>SUd_-D&;Xc)=Ah~XlDjFcV@V^y7PLb z{`)ZVr~l@C;^f$Ue4wZAr_%j!jb~do3)mg2KXN<&iE34dZ|0sp%=c@*mW?pBP=$`$0QC5EQcU{npV((t76MKOobM`-_t z)5Ek>e1>sTpeDRHj~KvpawyjqKPULk(AX|_zA#}j4~duoGVM`n=d3vTnb4LE)B&6j ze*qb#1W9t>>o>E}E_;f*WOe%PFfO;_J7ucfF48sO!mkJy)!_IJh^{g`10Eu1xbv+0 zyfkJXY2HcT*HdnSn+{#hq%XX{qS+p~W64`IE2M|rGP4D%V5U*m$il_csZIh1cfFc< zN8?4q=?4~g+Ro79B5ZahrkQz9zr9TP>4Wf;+Kg}%1~2wKj^}xv%rqDQ)|$=}D75%S2%qPS`Z*SD)*Ba3-)` z1prRi-?e%84uz$Hbg}-Gk;^iD)V0<{HNWMG_r;>+PN}>hWz8xZ1$D`W_H(czaCv;~ zUdJADpoQZW4t1?p?{u=qG0zo)0$c*2iQ`?=bJwfQWw1dbZ#O1~NQ%P|V(G3^)3y`7 ziIeIV*5#4?mYgn%3XpEwM%?xPhr^-C>xXB2zX@5UcYdxW&!B8fX{VQESXF6n``l_c zFqfxOkOBkdoFnTbD#&+*9Lb@Hy zNvtAdm9r#lC$jrl?83}$%PY>h_^wN>X@iNFQ^)e#Y|A~Ni~;L~yW z-(|iBt(M0a1!TbIfxnv1o?1cttAPmrtt;#wIdL@5nwm#3zGmke{H*Rlt zj;9pezFi2{51f|X@Ts@RlI)J|d)gVEjupTBW}xo_7B$o>>!(+jt4Kn-X{LC7K>de9 z35=n3Kc7N%rhC=PLNSjD6UV#)yf_Zx8t3Zq;w19bCU`D`=hU zQPxkUH8C4T8Q;x8a%#CPBpz6sOwRKkva7&|ywgPM_wARP@Gy<2ceEP|l zae_bF^yC2vyi@XoeL6)Zyn2oP2HJS>A%Zg&);}R_^SdfnnDm*8aJw{-jh}Jb#TlsN zKOA5x>~oMLFf1>B;$OwZ5(W{=x7;c*rxkgaQXUi4LFXV{{aYgvpG>WK@z5ubHbEK zcy~{SSk;=1fWB13)~`$xGPt$ur4KlASBNBh2=6rmhCHYHLk8>zfN5!K{{@-!c5w^8 zkMCr456*35#by&hc4GK3s_GVs zn&4~iE!tW98~g z?sI$5rCfc^*5oWp6(7;pa^=Y@r}wh)bxVWGz39zprBNxd$PK{n80?$%c2Jj&nDVzS z1+FSn9%5p?e!ns9b?)M|Kh(G)3ZT^*_+JFAotIGamm0WH+%_Q+DfZOAp=@Psm}0(Q z2uu~y>)6Rug(oK1?Bx zvD%1$>2}PtpRG3F6z}k2#q9^L9{-0EnHLTfzbu`L&=`HWz?u3{wHIDj++ss-7zTVO z>cuY|h|Xk1e|(Ykb@pN3&!Dm3UBM-biy-Io2*3J82fa2F|U_iJSCQD2=jM}$f zv;CdNG`|MhXJJEQTGbmCi?5B|WQU0L9Ljd`Zz(`F+h@bV@lF-_I2pZMOBT8o9~SY2 zq?yO&|5iWwK!j^0jZZLM{!aaag2iWr40o(^`P111=~E0anZ6I8A~K$vwQ-fpa1bp%K}%~`!2WM`Al zfqg_0#J{eo%vI6YFmZbJ2^}7r8e%@5OhR#4P`!l`!z5iZtbuh7IJYOqKY9eI2I##0 z4`7{#`qTjLuCm1 zvIM%E1Pg2?(F$Aj})IeHJ<&oow} zv@EW8Rvne*$}w~atL=>q&$dwq*|~av0FhULcuMo(MwZFE?-a3c_`Vn2$aYUeZthFW z_WFVuD-6aY87C!r*YRTIRj~afhiE?^o7P_1bIN^c?dxQ1azJYqaoDn@A7~fN(tb;h@7Ym7ed}1XP(s75#b}DLj$1y)2{{zj*Q+4 zMfL$%hPAtyS8wnYo-wFtxAjQ586}}WkgCNK8!tnr(XEr}j z&9BU9cDV0CijiHAc3w&RMb?A>ocbRdXneaHTqvaYc|F*$6u<7LTFI#5f?OM!BX$nB zv4qd+Gt~r$^DLOEd`hhL^S3Vl?pff2=!i6~eyA%p0g1y<`GR6fVc?Om zyTMt!RR5kLRt;*dR;@6Fy@jc2?|cs4l1{9X$UYK#fiO&5d2Ycy-jtZL%)&q#QroSi zAipL1@scm!=nAoU4#W=anKgP%o>nr?mfit^i9#1;DZ!J~yi?yPX|3DlcZ)l_4$r&6 zFNstQD`Uqr*!%NnGQwQ~W z!y}KY=)Ku~a}NXZce_6%PGng?$xhnAfKwXNSu0z*H45~kwnc_uNR&&F`KDi^c&e%3uD z9W7#ab`iaHr6IF~b&%s^J;-0;n)K;eC2Or8JhOJzX+<{519m_iRqqqxhpdp^=*tI~ z^`IT+k6k|H<;P`HY+NaBUwI!kHsbw6%M-2{(Ye-Y==kFVY`zMHKcCSxp5V$a`>>U4 z-auMzfTP$uyMDKa>_>04Ofls<-S<^jXzsieJ!NDkVol19em(^==tWX^cV1E|F8s)( zw#~S{&sY9B2%g#H2trj?+-_6r9nL=?XEXn!?d~+|zmjUuE_W6p8GNq11&X8iyTBm$ zt7O1HT~VDzrKJVADtf>-MF{LP2|N0FQ}p5+=n_DXs!+7GWKfWBKOuZSKgALq-QLz&U1@n9H1q7c^c1;Bc1e)aB4565 z;`1G!6?gBGs}(fi*6RPiqEE(KByXjQ6zI(?=r{^o{7)F4=p`Finw&h==0#AujKZOP zf7iF=C;?_su0T+uoY3ZLxh}_g{-2jhABkO}t@-%L%Fl6xMgTjQi3jo+Yr{!m_x&c3 z2|Z$RRbG&fw&eA5@Fg)W*Hvn?pH-72ObluM!A|V}Wt&G2x99=PMvzAp3)R)mZJb5b zZuUOI2+eZAE6`paaNFyMb)lPLl5fWHRaFZcnFsubtdV-9mJ_%WAjR0-6NY9j@?Z+;t!M`%;u$X?ldj9_>^Oz|HI)UL;;szw@Fd4i1!5 z^ldrw)lzph)D?MB1#hzpG#yn^3Siy~Mq_kV`t`%3>Y&ZTy}dP)R^jP%#pP~^F9?MA zlM)h?*k_ZmWp0;g-6F~uWo(&s+bob(F3XIwT}4+=X0p2(7}MBz8^FV)lE7K~PgL58 znFcJ;j2{MYjF*4scIV1I%)WYi*m$v@nPDiCnL)d`sDY1EQgDA#L|Q=mf&oCY{f2(Dg<1D{W~y~d3qZ>AXhTcn5y$Q)RlwPJ!c+lU6k6bJk7WkQ-UZ$2RE zxxB4l{5BF!GkwOsUbWS>=el*0!q3H{`h_Y>x>Y?$&4teHLRS5 zWi)EUZv3)owd9%tcA|f?ezb`@)GfLdF;{lZW%2iAL*}^iv9KeCUDL9J*yHu^9Hf@j zaX~=4-e6aQf%5R&Fy#v!D&cHf`FQ1NqJSD((@Q0%1r^RZLu1Y2c$W-wc4xy7^A6mR ziyyjtzChn@0r!gGy#L$7t3iEZS9jjhQj?EYbAVs8@SQC;aq)^EZ{$jw$bP z7TW3975m3hE7#*LraiRIYV<&JC&`whB&P*5^Ang}riHbaQL16XOx58SIJ(JC=OjYz zH)uVw1Wd;4@wT_@30Xp-)lEogq~_e5$4lcm>sKo;a)`FPzFXT3@@KGvh3_*POT}Z_ zFeJ)P6mah43O1-66&F9tzM9JV^-H?)@5uQ#C9{%D-W?QIRU|R(x2&uzT93A?#E{bB z=Zuobhf%S%m4k0;@~yyguJ5zwy+~YRsSI}``HGx`gB_Wfq}px~Z5lAm`~dRuZDEsi zWLDWhGRlxVm0gVHl=)aJVJ}@YLLUg9Sekq{54H*NM+aIVG1WDP_bX_d9BLy0Y3IUp1~FZHBIrC;c=X zA3St}9^DiWV{Pje?Y-bE)!EPehh~Nkk^A^M@g$HXzEyXtWEFDRv4(Z!x7{uB&3E?- zmuahgYiQ^T$WzW@=M>Xp47W)Hv6%tg*8k7D#@=pjut!106LW+AaGGarRg;}b+4+am z*$FvK?Gp$-hS$m$!a8LP^sfz4*7Ar9kWlZ5XZf>Ay)u9VX(neYSm4 zUucj_&1;U(Clk&659h7oQ-E(azxg~5?3iD^JKHg!*pXiDnj~_(o3bve2!5jRCxL=G zvG{9D0?;I(5Tv$Pt3UbR}j<#-rC17@drUIsid+o&4D+0Sf3*m1)1J7 zbS~^2;<}(+Ovbswk3E;S?VieH5>9WWm$ut26RzHii+cj}&%pC9B<07?ONOnyNoq}>oTpOf$pBO^R#GYm$*S9!;) zaXOn(rB$lN=5#|ONM4QA?=GUQFVy3KY+s*q@VPpv&b*{`3{c!Q*rP!C5x4d(UjEU# zlSJS2s9yv`dQ8IF-ZTqDpd~2!!e!D7N$K{V6+a)W5>?Xjbm}MIvhK=Yn zlUTe0usYiAR*^a9mjX-Y@1{hEqv))&rRmIqEb2nT)eNABC9|);BQ>5T{@s(a6Z{w& z<>!>^(*XVaccF>Cu{v=TwOD@oLEJ^IlZ=l2LJx={RRRX?XTv5!d4Sw+-4lD18pNU4x z)s4r*zZM_ZnT_@hbf?~x^8W4fN6_^Sp^UBm?1)O(jcx2?LH&M}E-JC?V6AzX-qBk- zy&{$`cM|-!ERQ0|9bC=FV%hfDN|n5A+GKSp#30?<9+`b#I~(Z9DQapYFPLmM()E6j zEXU#jAd2fzd>`wAoS@G5vu9fxkf0Oh@GUbXgD%MZ!%bpZVbuO8cN?9-C%^%YN)}J> zQ@?Yq8b%!T?ANcg7P_{FD;(Ut)N(AZEFTFZVO8;gz@JLd3N3!{K^;xpj=!zH^C>0T zUWtdh^?IEB%-%mrM@m_^Z>@K4n52y{!{F}kYXNf$Hoj|u-)m}zB1E~pFroLjE|ch@ z@h`=JUb#?kXiN-&`hH>Bzk#8-1crj$L`@Jnqax7fVj$%0h<|7qHq6KL*PZsQamB?o z$NJmnJkE!D*A*4uKU}Nyg(KBB!%xZxA+`|`MpM-R8rEm;f zF8Uh`^?X-ZfxRnjh8m=sTp@0$4j7v3qW5N&iv^;E`TYXjO`Fey6s-mtPL5% zOLAow+f5}?=jGpx0Z#-dAS2{Jits{0U;VZr0Z)FLQC(hG&RA!Yr$_x#R!gWQqPT#MW29El-E>wK~WM<)&Doy2}p?w+l@wU=hCNSQ8ok=n>rJeVCPcYaE1;>)n^V zve~$i*!MX-?}aUAqPTHysp?+b&0I@7Zwf6xY|o9;|-%sRs7PXCxraME%6)`=7wsCIP+e)n?D$MQg8D6z71A^(OJ>Pi#0EMfOE@ zueTB68~Z19^p~T%J68QYnT#(gMU&_6r0$b7q4#Oy3pXHGH+|k_0%&PXnEzD>6Y;Hy z|MGu0B63X@whxw|RqQ2f_Bf3zum#T>S|5Iso-}x^YLAPzpS1f6+o*f)uDzQd) z>0hFhPe?m4yz!m6x<7k3tGV>@>0BzIK*r^9>(SQ3!h;Sy`xVTUyhi{P&k1P9)>J%J zevR=~jFRy1Y45v>2PBU2RwUBVIKJ0RNBnIA;<;OegR>uX%d~Jc(DHu@3;){5eFM57 zAF~bTef0m(bhcI434dOtXpxf(*?UL5SbA|AzdG@GGYQZo}Iqy@No6o%a?Dvu6c7aL|e*t3^rr z?T4qQMNlwHC-BWVDpWlyFbQVrkCM2ef&#^|y_)o;H5~!}xFSgTMy>|fG74cf&G*u! zFlWj?=XNrBcDKF0C%=?h|84ZV>36^njYolkI0~w{1C1PF5Gd@H{&q!OC!k2*S}9p| zoA34;4mN}0j@oJs@0z@}x^9+$*D$S_+%aBb0d}YQf0^Mvpea94uA9wCh<-d)DOl#Z z34Eqw3IOl(;!h-Gy?8MLZ>*BWKGXMFxuQxMpR*mDWGqtu{PHl*b*>MZ zSFfrEvwW^>r^LjM53LJ3Qf4r&29!7N-1=u32$VLX6CpK0WUmi)b!CkQ7_~HZS>kO- ztTgn;V7Ho})PFa(tBy8&i}{h~q`qjUk|$bPU+Ri#$3UZ$=lIdU8+m-Oy}gOBGDS*1 z!fdNJ+^8tzTR$G3z@8txgd5K#xV@Wo`971#M>wtE8QnDc+q2_89KGiSUvQQ_oenZ*BubAWA`JxEEx~Ll>|4;^AvwjGEuQD=Hn*{IfnKAQ~;U z_wC4V6BwD&9K{69Pe5N_VU^Ck|JIsU#WH?uGM0LH_3CQs8+>LEeq#RV`r*P&2-hDe z1%qBzX#aHmXQS-oifP2Ih9Ts8+f@ zP8##0L`s|I0Z7LlZ}8x(?d;Nqt(utc4>Gp*x;$7nID`!ujS&2G&!;NG#5HBd>w>Rf~ zl@%AMY_-=P1gNi};ov$wLR2RMfz>Gbi(w$({yem!qInnj0Y9I+hzhDzv`cuCmv?&D!@3)f{)iUC z3V9ko}sf9IX%y;6`^D z+&^zP8~34HU!$W=bu}3GhBWa57D*kVN7s(pa+6m6%VC-vtXu|H^(Aq9oLVV%gu37rIZipL@ogrd%Pm)OP z)+nu={sF+9`Y8rDcXwX5`gR&$8{HYF5~~}lCardA%Xe48t6&z+DP)Mkf+kA-xT>;< zW$$OVa$BKuA~q_BEWIp@ZahXXxNZmfm1*ogIHYpM>m^~|CX*> zOq1+a#5u$p?;p+4`GbwZ@XdLeE`)isK#q6J?|ht+d3w9wuowS3{=c zWJUSjjGt-QrXQP#JwHq;N~x{E*K25fVMRe5iH+2lB__PJoujSp3uyiH_ZE_Hb`s@9 z)Nf@(GYegz22lf;|u9{Q$?c>LK$s{4eM=Gl``(?HQV( z;cmzam~0*5eLXjIAb^bWl+7xu6z7mgRGNb-dgSGS_YsL7Yir7GR`*t+c9*0q4~wi1 z$N3K@ARW>Dn9sHiIsDtnHBKcU)sXKRG%bHq`0objAN7J2=B@o#vg^&?Q8sOJDp&kf z&DhqkF_i&Lb*?;~GYP#xexy{KR<+D+^1v zn#LskP0Ap=ih#9rg+8N}R=$XYpTOCi7xrQJS?~5;@P$z0EZ1EJxiyCfbpB_p9CTCU zD*nCx>6<;vX8k`{iq=BltL<{cx}OKsEb*23KaB9sch`%Mz}azz1TiP`scX_ap?xg@T4`8X5A%AAf>zSL-Q7}o|J zKx?lqqCacGY~LB%mWVcIJ=C=9YwAV6rmMf%*;vsd-kjfJW2+aPG(LZ-i(=R(tD)5`wbn(Ox5MxtwGAz0Mi#|E&H=$^4(R@#xJOo)@j~!X7lo_ zfb=WgiUEKOXvaK&nWR^PjEVr}qJo4fLSK8F!o{rYg9P=%inR84SOV?2GQ1{b^+dkD z>H1>W$;LEFIUG3Ig-%f4SslbA-U2B?2rZk9qy*UWJ4aG}A$;cCA_OxIN7T^XQv~*r z?Dyui4(l+1HRWIvpj%h@cCQmPD}Kx-DWm@7u7h_a?*$XFkinMoY#%+^;Koj(A9FkkUr&e&Tg zlb?<`1f!QN%a%~~3xQ+6=G!3iVRArIF+*HOMT{ z3~gP59v)WcTJ$~V-@Q>2`db}dNL7^O8NB~sF0Eo@7mYp+3Gq5WlhjoFU4Iq%O~z%d z&jH0OCYHm{W7JS%h@keE9LRHj#!jxc2RY8j_gK3d`wwSRaX#yyvqu2RJDyDFwo?hsTuEisHEB+#wE1u=s}dW;cP^1v18h(R zj#&#^nlHLXe(C)XYj!K^M{{GtkHQN7O4UI&BsPzJLIJ9Athx$)^KQ#!ypUcl*u8AO zZhLhyM-F)qnk9qBBSIhRt5bDsOjY?)Sto675PoM+{C-|l(NaRS`ei6W`C601%$+PL zp~l>A@!_T*a0Q|CnV7h5KdYR%>nMG1f6mFQm1WOwxo-j?MYS%T0y&V^&(&>Fe^Tg0 z{Un$Q^&0S@4XGIH>h0|1Y(bdKySW=au`g@cn^C}tQD3pKSUAkZ&Th#vXSh zux;DmvIC^oJtts7GTm{79Bo={7jM5yHS6TVU097l37O#yJDuF)bUcykJpf^Ds|^Ym zJrky&N`DVNBCkdXi@)JOttE#ieN$j~_Rd*A4wqKHDkuXHJpj z<|njBTYIy}QmVpClN42Txs!f0K#8d5dq~6Rm=CTo5{Y>_YkpF*G4BLC_+7WPiWq;w zRKv39=cUMws29;K9-f$cBYBX1c%A!V9AT=tX+?HS(-e{WW<^HD(-cuFljv+cwK2CwBK;gH&bYJq=s*Rzgf~7um;*jaUG3Qu zZZ~M5zW-j;qko#x>VKa|xez#}<`Wp-+{>bJ^KI3PeCKvw_^}1kJXQT<=%w=H>j&}j zhPJum!!=PN8R^h6I&hAY8bMC^+0xpIK{(;uC!eV^xwVH~kZQWKgC|rx4y&V8VCtm- z3QQVJBTxoILufIhNYqKeCfk-8U!QV#On|F41h8~~J4giOF?Zov(%Arxz z)V&GnR+S(QBv>90G`Jnkf1V;FMD}XueZ9k>?0-0x^VB1ffi-|Bf~d5h*hcfMQI4rvlHU{p~fW^61}eIpcW)Ly)^YK@7MWq>1opNH>- zWxWxJu|~Z%gia^$6-bOgd?6tryLw~gOi&YftsLa&j3 z7iW8TUr+*O3pokT7j&|f-_dd!gip+G#eC`q?Pqzst^mN1l(1!fa%}DHT&wtMm4|y# z6q~+i389>2f^_?CMb@@afl@Hnok?o(#h0Ou5HiT3QPD5SnhH4yDNCo3*%D0-K3zk- zEHNgl^_;Vfe^A22S&obX4@E3*RJL(Qt~R^tJ$WA6F>CG&aU%#&XF7-Q{oY(sFxvcObJDFUKx^e zU8l5`r>H_`zilb!KWbg^lyCEZJ0_6qy`wZKbK=-xBFvk8W9_H-AWZQh7mU0Y;)OBd z-KGW}N;9lmxy{WXRrAWK%0sDYb>A5~0WF!fgyH9;L{pXKC%{s9Ae{m_Mobc+6e!ml zvg6K%Fm>D+cJiGW5pz~03$y#Bq=YN_L?myW3dIa(PmJ;j`8s4pjkS5TGRM8I(a4Ww z_-c~F5FDqQ3eUCt&UQM?GwiNG_moxCQoo<;-jfztCp}~TLOQr+KV>wAh$;Dz-pI|Yhw?1q>*4`o+H`2)yF;KD`4u{elF%zw)uS%A|WC@vUt z>RDUssPX_hY{p@JVNZU;_5N>p?tAQE3Brk^bXD})-N}uoicJ)+#&MV8Ee9EzqEf^& zx%FMh%K8pxCT4_WA@=&LuKxP<=T9^W*WImZKcqQRN}4_~rK|H*&d!^1W(~?Czno7I|>yLq<_}lBuBFPARQqfV*vEl59=0ga|lN0XeoFZNIX%gKMiQQ@$@~-)p?Rsv9w3Te z8@Kci1(&$!OJMLXMC>`&j!gjdj||^MOAG30FHf~#pQk7HgD}m@KT5igAST%2;VN|| z31`(0*%uWmFiYv>plvw$kd)TwERUh{JO=nsg4t57ie))HBy3+D7Nv9)Ql=)jaPz!Q zHqoRLiJaVR^}s#k$JsePyL7$M2lEKu*^Qr_f_uf|h80x>2}xPSq{A}bA}H1-ggCeY zNN7@J;Lk2K20d+SSn?)%bI`g^eZ0VPV7lZ&F%=qbb{Gs{tdl8i;%=b$)?hr<5U)GDsH}ilUcn<{;9Fjz2O%&G5d{38X-k z6_wn&SyBjO2fr?G&=$68+uBf^>gDV(IX}=w&1QInHOfiWz4CW1tFF2Yo{&M2=wKeX zaDNey>M6M!Ih*%AtU+S*OuIz@1yla>Djp5S_{W%uB^3C1DQcn1JP7Ix3f>MyRcpsvVQ?;Y~~m~ z@SL6!^7p%QCzCGU%F+8oge1Xyd|5ziN}gQ`VMhf|wXF1jJ7EQ!j|W}lAbKUx{~QLp zwZnN2>Fo-sEPq5B{2;*$sn8}NchO>O+l8h!?N)MU6&zt2TjSkq9iB7MXw`jT@F3IM zsrj+cncUqZF-D8}Pq)~DH#Nd6xM{`Ff18yf>3P*MiVdDW?QZ&|w2`A78D8-db?rZc zWjGJBr}ICPD3B{jh=%jN_nWd1P^cYJHxyH4WbLocu6*<`%6Vq5S6W-E&J=`f zKHN2ThM=5BjYbTqeHUi6K8YrzjE)%0a^v5!{)VP@GLkM=-KU6Ep1!)1spHtRm=? z@kuAX!CI)dTI=>a5`R`r_j<8u!cI41{EypuUf)TV5W}%Mxh9pWhBjO%Xk^B7X?gvS z+BjB^uoCm>0;HMQd-5!yOJ5=7?#?Qw%7}?RKXU-Q`DjC;9S;^?9bjl9oFrte$T3Bih@6xYVyEMRfQfkW&AY8h%cyb-}#`8 z8NCyHksbU6M?bk!KE3q{VzL_3c5@upq{~|;wue9E!k{mE9_EX3>l^S%$OovMYJ3;S zvHmz*pp`3a>9$SRcM_Doi1H?!yOX^VtgEAW7OQ*o{T4GQlX-pLGb13Skw>PS7@c|S znju1V;LX2{4!g<-ItLeR&vEiW0t@7_wkO8S(laWF(7#n+@gCI=hUV0MuQ@i#*xnU{ zUEu`ZtzOOfgk;iV-47ug>liyI)OPl@8?d_yUO*T%pQ}mhcgy-A{LOL9WFCHYOh3e{&ie!zb@ivL!vQ`ZBjjzYeHk?fPz;Qy3 zr>y+=RM9jK564Xw^hMLJD`Bt?D7a^sk-AI<^~=!|y(r)E;B%(%0`&7qX%{oxu8!bU zs)YrwHv|5!KHtJExd3|>BGKd5Oc#o8ifWiqbWh+utm8T2v+b7ftZkuyzKUDvxHm(A zkw>u}XH|8q1?O|}wv-&pLEY=^f3gQ;s5JXm#qWRD z%1=-*`!2}e=nZ;BUUy#fM=_JgR_CfR$Z2ZEw+!Nz5e?dJ#n`@EFJ-EfT6!K#7tH;< z)#Ml5zO9yy3SR5-BXb{FMw~Bu=G)ad^&%Joi+C@&RSR>boFuV#NG^W%Lf6=WRissl^lE0E^k?H`$$MAze^q6bNHrCQN_KO9Y^$qq z#^lBl-o}1d2h&%Gev$v0@#?L;26qL#D5Xr5ucU_+pWTyoHn&2fuXD-Q$0sQ1-JI9s zTF6fc$4%!lP514-#qnJg-yXb(pE?sa>#inesVGESOrc=6;p{W6ZYRL`MmgkIC6leH z#r;IeRDDiwmX{gd27%&SN3pQQf_eFDBRjf}x+WEMf-OnR57^(Sk})t5orgcjO7M$jtYhFUWo*dIo(F`dcRWN`y;lPEWAd+CF7M&? zReDo%@J);3Zq@jlDnk~r=*Kjt#L-HP8&V1vL3zU-pxeZy>gzFm3^K&pod(zixEa+h z4i%|{y2C|do^kG^!Y@+FuFu-I>I@0fQfW<{rO6}sYYgLWjwe4I_7l^f_jnL+!tvv4 zWx+^FgLttMD3-wUV|_j>m4UR!Pw!yuQ%K%$tqO(J{jZh^7P_oO=_3dBeg@F--NiRvY(a9d_Zx0 zSNbYu!<5M{HkrXk8dt0+lw8{<0h(J8QW_7RtV_@Y`Pk`g>@HVRoD5-Y-t-&NZ^5i+ zIBMZ#185h%d*bi^-_<1R9-QZru;xB_4|vPbUb}~DjkFMof8@zL3W5SY=B((XHf$mk z(GZc+O@uq42HC-7J0p8T?1gJ^vZ2;{1=S95AC&Yjl1{fgmv~M~^FNNxI;^Sp@8bw4 zN(xfaN|#D2FuDf9=q^E8Kw?M;0}+uNof1-`OIkt{7%4d#l$4E*joiM^`8^l^ZgB0e z`<(m!yyHbrdt%&_@K_`g`z_r@1g8iD7-t+GB5urdwIp*cp)$S&R0heZ1Kms-bQL1C zlITs}r-#0UB>HGIU4v6J??y)udow3k3GE?v6J3u>X-4Zc%)WShcGUfOvwccQ7>k!- z1BkWSZsW!k7>T~I>y!s?Ry+*bO{>5$(Qclnf zu=VRy00mh0u!oQY7>^~d1lBd=@-|eRm{7clGF6DCTB|5>&-gx?4CaxInPeeW&Is}- zI4C6XUZ&UaQvB?$U`+v1e8PU`ot36ICfsO`Y->k$ZhX7$WPfk`1MBzdBm7DmV$UX` z%ROrj=VI&mK0|@ch5_`NKK%^!P=025(KjW7`k2Itm-M4lX=rXP&Zc)Pe~~*OyjF!A zpTqWVA2CuCl69~`qy#G%siM2UpS-(#_FkZOyi*oVQLviV;)-$^Js=Oxn{3~%%K?d( za#+34VUs-W?D^L{>u=h?F7lw%w|Di=Dd!gAho4x8r|A5?x~_aZQC)BOAeW z_tI9SP<}66zV;oy?1&Amia?}gngj>h}qi?7})Mm)lRIoLw!jqb%^JM}K- zx*oi(pq$kCx{y@Tv4j+8uAWtd;1rM{(8c7Um-wE{3XDQ`li^!M6g*R7&dq7DBfG@6 zP{5`6pqxG-zyp7ahxJ;wW9jiTvCECqo!Di(eAXHgZ!JrG{>PW{{aDQ6Tcg(}_nv+# zYbn}}P45wA`DEiskOA-q{@)fy*o|1;S3yqv%RG{0Cw)$LsOwh0_dF5@=><2lYXuqR zg9ZOOC?uB%_(u_10R5BGS%C3r6wytGn!V+59nd<6cxuO=I`+bQ*`@hQT-pqn383dq zHT2e*k?E1?8oqY_e5S(x2Rq zr?&izUG*VLNym#MAOmAQP~(kN!h^1(O%jGSW?<_kqihdjHOAlONJ;qNKZNDuQH$Ep z(OHu^QHf_dw`UGIGIuW(@Uy?L$sSuI;2@EKzk=&mXM`fqPUZ=wru>NAm!TQL6XlF= zgEPLJv)d`W#tH>ui}?zklpsxvjRjM{wJ;;GDY7eI^8Wd}{!@CL6;ErX-ZRupUvg2> zlba;9d@##ejzlrC^2;9$t-}2Zft} zh@iT!5%tPo+U8C!oLM}CrsdhGaQz6D-^oGkb#7bL0`{%c#GgdKOTbyz2>OHX;|hi! zB_>Fh5##0CfbJpe@#=!{siPdER@fqT47_|zq{}{-BGgt@QMSo>WU?6+TC(UU2)#ve z?EhprvFcvWl*|QKZyUHbJ?bsDidZ4@`wHiNT@N zg{Pt}{YCfN;?tW(tHIQ2Ul@3n*})!uXhl0`D_9>)A@%pYwTbi2WDRceQPv?!{U~Xk zC@|0nlWT>K!e=OF^KpNwt-I|iONpVi(_yuM$3IEYfvI#J6Oc=b>K;?!;=w=lU4`zQ zCA|T65J1|n^=^#+CA6uRT|J!x$0K$nAflNDi$23G3CPR7t!E4FJ6ns9jYd!1BW=C* zLAIF1Va_F zF0}KNb-GvDmy~zD$FKUxZ9m@Pnjl^h)quP0!o$W71GA;MW>^dV$Jm zBaoHfU`$4{x!QL`s+oPx&JrvG0bgp!`Rl|kX(&`crDY3Dt@4$esLd+j-3_c}{{Zz6 z)9eip@6Wy^@T3?Y-TNK}f!_cR{y3w#82$>$;~gK5kMUtCi=R{RF!bT?CQu-qEMoj$ zfAssFldQ{xyJ|^m<3|5B2=fVC`;a`BeLde zi@uL;jJ7zV`C1U4k+VHVMTUK{_1lplU}v^hb_#HyE0v(n6oEMEX%%l_}wUoqH zo+bQZd=TfZ-GXGCs`BKF{VhA&bihih6T|wlx?9rWc3K3!iW7-FSCR_{87lQwO(yML zF)WoFoO?gCE6K%bz2^eBiuxmYO4ott#K`XxOXPdpb)N* zk1fPvpbJcVYx+W#2SH>vMCbctbw<@1AfemX7j||vwU7(HgMQ_;*)iF_+#IFeO9D>@ z{$?mngm^_)Vv(999*neCO-Z)^LBT3y!BBQZ7F~QRoaYLrWyK13C#DOayEeYDOi6@g z!=dq#$Bfjl(thOicnhjrAQ+bi@;$ESnXjN4v^OpX_)_wJ@U5-ssy@5+&@lsLk4$eJ zP&iSP-7d^aAG$7<`0b-fgYnF0=Yz}hgPba8vT=$=qG*YjjIQ00^8U}N&ERi}NxRPy z9)4i0Cns*sO4-=CMF2kE*#ch{#?WXvLEHG*)V<~!yl&S8am@ zT72m$GKGr9rYxTyx;R8vuuQc-n#$}o^8&XE*T|tliz#PLq8r$ei(S~<;>D( z4d3B2z@FP$I$1bz@&aY>)7*65!1b)zEp3Vs8QxAKlXA zinQYEdTr@Y8C&sCKO@zo&Xc7n@o*fab*>&i&F(DTIqb>{KO2AGA5}sSK*yq^5Bh%#@1@9C`wJms`*a`>x`1+ir=8U2g`u|Zowcjsa1UQr_qOa?+)SfWfOe!m%bML6Z`M!D|F`jE?JhcNR#!YQ8*Ht(F z5sgi!-mF~If#kvJD_wSX-*Ij|I255DD&df9l)bJTdMF zv9S)dg|Hl2lS|MXC1$U5tx6}rIgkAF*4yuNK(=X&DiqB9oz%rc5#DcDVx61;hazin zIuGjN!GbZssbA=P7DyO|ZZeUOa{imS2-7`l`kVD#rp|rc&Lq=!Z9{SIwF{61`Yyut zr48RDk2?kbx-`34(T?7HYH0ks5mr(Ywb`}8^i)~))};(W~eK}(57R?(mz(>TCbA^W7|7kCq;&cS3UFag?&4SC_YvEyX(AYa5M+F({sxqE9|z@ zkBtwhs`M}!W^ZQ1vK3|H+6@4267J;JOU@%`v8P0k84h@91)}8&o6b|Vvh+&lCoPLe zo@7IUJTU{ffzaC1@$i-3qUJt(5VwPPG!EK(&F$27M+C=Fldpt}?c#BCBAaSj%OZr% zGb8(eq_d5Mt|aHetool^Lyd&8VTX0sNSWn(o5xWeE8HFcLWJ*s4gZT@fv+=}F|C&3 zEyYZm#2*V0O~@}lO_)En-bbaB$zg0>M%4g)B-&4PJ7jax6u(uFz&sa1iV27_4m9o-Ah^u}HxKhWzKSpkE;1WA$=LC-;|Myj!k=dt;(PPEm z%!hxTr6m1Zi1G%1d0c>d652>00@#dbHS!ey=8Mc+3JeC8)CbvcC}tRr+(h|4?!W{TfpK@2f_Jc_pa?l0*<{ zz4>6S@ti4=FQziUFG z>jEQ(yHslPFt%XH8N!CE6W!qN0TY0T4h)~LUHcE%S4>JABjy?&%IA|;U>Z=q)8YcE zTRGqnA-v=r4_K|10(Py{(hQ**z}j0wp>_OF*xA4GL@Y~>~QKE{;N{$PXe-E!z_#Q}w6EKV-~N8tY504)91QGYuw0^So&=+u&0foXo0pxbuh~ zJ%2w|O*8h|4S^M#xz?|LZER+7Mz z;qvN@QrvX9qTfEJb&}*e(@7~E<9<;Y>|AvO^1|=X&WxY<9=_)v=I7l`^i4-PAyc}# zcIZYg#r)=ryjKPD?Wg7UTe+7$VAEzut`!${?R1$c2zJ{T2i*2FZC{EGgkHbity29Z z4z%JNfK?*pl80=~cKa=mtyzKZX*HcIOLC78BKGj0AUh`SIw7Vmz zrf2goz#~(^fA`PJ{2mNGPX%<`@IK0jUu64Yu_9*-xyTWX| z=I(u##N6V`hjTFovfW1aT@rPlF;`XiCkO_Zukn5XY%e!Y9?t3N(wqW8AQh4+Z?O|Z zjaUuA;(LA8@#AGf`jZingen!ZmKPcEHeo@A%GwNA`~{V8N_g}ob=>O3WlU6lUU|z< z`N+(mt#)ua!u7b{04i6^WY|}Lp@&5`WxgD}Rd>}enGmZqX4rmBHd3iTaO&Z8kG9?v zdx0OKb2`5{T0b^7FFhVwyY3ZfP<@#bqpk#1oQ5CcXjZ)qMZ1bcHOKQ|zidlvEgRCe zC`WGKmmNj%cjo(%F$nG87|jm?hK|0ZCSrY}XARuRu<^NN*~L8gXZJAJ9`@;?is>^1 z{A6t=8`o02N#HUqdhsm%Aec)#g0kvJPkI`lyi5fw!D zfi1|Pv`?-uAwS1C5Gzch|LJY%$5>k&cbqk+*ABZPT|EPO+gi#ROr@rg5&VgcKWc1J z%LXiER4!w;dv>k?>{iSp&95TjzmVBg6!Prb25)ux4fFu6?Jna28N0rn7kz9wC)BztZfOBoZGHIQ}^NP$Y9 zQnQxI@WlI6R9T|RnaVB^^yYIu-z~}dlQGshqWQOX{})~I zOGU7I^Vi1Bs6w^2+wQGV4!mHIP93y7T3v&XhAaox1Q+K-7GFa19IOA~jBH44H9I1h zL#0oi)O#Olsk;X2DYFHi44DaO{w;d!{xLyIt61|L*}0{@w|$RYKXT%_X|Q%)UUvCo z3t6W1tb5iLF;6TXU7!|iaf$NAw)4lh+-3AO5Zx#)it0t0MKr~V?G|}(_NATe@s_2k zWIr-@bltDn(zvs|neZ5x#hssHXs16fMvqrKGucELYM}*r{8^k$9N>=WO44#>!Sri=n@;;cS1~nz`q{teX)QMKTd^(Id1CDUOJ~vQhmnY`*P)WYp7Z-VU_dSHI=m^ZCww&jJfsw7G8#aLqvL5Y? zFHLWAhp0l>!Ev04B}Gwpb80JNa|G9)ut+7a*wd7@Q+e9W6oh=Nu*`vOi9Tfu&GQZ0 zT7*~`+iC|{aF=~bSe4yz)J}s?R+||`%ZQjoR1&5JNjUP3&R8O6W)97L+~oZOgNn+M zIi!bpSw(pzW1-xmiGNAuSAXP_aiFRV1#f=|3a`u4S%nxFngNFQFAY2I(6!Uu<-t+S+OC@R-LhI?HEfPI-hHL2)9Z z{SQUTMoq7pPCX(aR5ssclhZr4OyY)z%{R`Yq>NE|ry@~F1C&euNw8Z`4l&z#R zLkb5S@cW7`x&}%-4{Y-^kJ|(}@{3qna%$Bg91#h5_NI1hpIo8DPd;{7=bEn)4t@{& zpkCG%&mk-;tJBql0W*h_NPYiWLaa=ND>r;jSWfKw(VIWEp)I~1DD6mO*{S+%?O*3F zXjp%3m@ogRuX{oq^u@fkDvmC+vkFo3fy}}&QA;-__BDck_`P&#(3BiVu92<;rppsj z&8-*wm9mG%s9}h5VwmYE5GUo^W#jZMt)y<&N(sAXH}zcpS|3?;d~pHIDNAgNP9)E& zTyX0w1QQDfX`_!6QXM56Qs{KiF(~5FDc|OW9n( zU(e(r=?bAzK6ERZWv>iyu>3Boe*-<+D;*vGC>T+P2lcBq(MC~;gxj&5X*Iqe!jefJKvqgUzD~P z%DP{E7j_ykZm|S*`6Lz01%G>* z&bJ0b-mSRWvqN3Ve=2yvEvcauW(1X2HLYMoh$l0`cDSpxvN*Bh%`q@{zY3TupdV`S zEdKk{!wICfWb~R8N4fvv)IY(~@WM}pj(1nv%&Q@|bl&{`i1v}+rPtnw1JcLS)3fmj z?PVzN-cx@*hixti24=J}CcJ|EHZnS=a?CbEMUPAsNYdlqk@J-J+>eGtQ z5$gYs$2YLYgcsU#kfarU{gz`_FXUp9%7fF2f7xEJKALw{7k8BHwg_Q4a-qE^-v0<* zfJXL>|2Ut)=jk9JI_lTzNkGQreZ)=lZRKgg00HM+^y-*qQE?nqT>t&e{XY#oV{?LG zkQ>)WPMMpT$iMpHWRcC%sl-g^P2;TVI#mCSBMyFgwy|JScl-Yj_hlKE2FH2qIk{aO z0fiO3B_(^h-z`Y{@-&nfm0+u(?O1vs@C{qQG8XtIQc>E4w{dw!w`-0Uk_Y?XL z{doKuX>k0jIT#epfZ}TO<&{rB`_fPk;8u{aaJmdV4r0jg!eJ&}s>pz^$=rLn8m^FR z)61MV!kG+(-%U)5O zk!n9>>%pEw)hay0pTDaA`_Q?B@#y}MF+HF-pu-O-Bs3#0*OKy%yaz5XLvj;{TUZuN zrG)Hr{=@tM2l%YXTm#c!8QaQB?9ptF6kPN~xT3;7e!<0aA`M`j4pZp3k9t0pAt7fF|OiWF@!7#b5)^WoV>rmm7C{=+Ul3 zE#EzUinU7USetGU6vICtcr`5%pq#>2JzGx)YvN+iWBr<)I880j>VZGiE6iK`B-y{W zeH&g2Vd_yYiN|Tpi#XKU{^C9NzGpoZJ=BU_Hm1?1VF`XP5uMudX>mQsrCi)F{fvRb z-UxoOGYwp&|A@9k!KWmC<0r_?C)B|O@Gh4ObDYL-p!28Prq*C#QgjeNsnJ(Hi1$DrZ`ffx1hL>0mE;Lan!|;lG7lIC54Y?OHVak?ee&l z6eALrNw^`(x<))Xu$7z=L(QvIOs^)+z31D_iWT;5VE`Uc)-j%N;dURS_tbq>MV{7Z>KR2Gpu4oSXu;2L!ixQt4arwDq1A7d-Tg^F%P^&*GU8KjP}z%~{`< z%*yrO^CugpAdSrRahsIl>-NT#&87$;=~aeeeHz^IwBJFTui#PL-hV_c2)F-;C}HQd zZQx_g8ZHhn4rbR~ieiSl@1q^Fd%nK=%8ze9_Y-REW5W4gH9RiU1Q5sQj&JKskeSbm zw)MN@#WFN4Mz*bWRj> z3h3wyF^vcmBJ|GnAUW5QPw{-aA}|Ws+Kj6!cvbOML^*&z%hj$`Vmb~IgmdnJcJOk? z29P9nBjoZcP%ZM*E0^y=a}vc;Qioox$Z&pS>9XtD7@? zh6&vN5p{7iY93{7oK`)Q^)6p97Mh2)OlvgU%uhZb0DN%CdmrMi$@JXw;QlGFE{?L^ zBgDpvXeUSx#q*uG@C{XE&Kcp2z=1+ECUnwvxgZK=k1k(tv(9$n+=pvxg>ga|v-&yp zv7^tp`7`%%0YZ`xyV}$%9vo@)H(D4=-|nzdOs3f_ zeMo)F=9Dnaugnq|#S^BEetHAK{jdqyW2>kQk%B`_gsff!MxI@ToTFqn=V3YnkcO?7 zE+HcMouEG%2|Mm-j#w)*f!Xg`mT~UX5zc~rGadGVNtzfg|bQ$lB%H?)Dq~x@i``gN~ zv-mwYlR`8=SkUB-2Atjaj6Aso5jWVMYH)Vyv7G6fK=m_&h(Y*AaQcqygf*oQwREYUs-2-LYw$E&G zg3x%uHU}LI7z;yBU5^NKV>U;doE$nV8zMOK1`|q3L>z%PsRb$&(8UPqDy2*QS~??k zKRJnn0GF9c2EAOO!hEu>=g&bF1rTbGkC<>*J{PlAWg;1+4jRzNZ@2b{IJHHhl;=)B zewIPB#?|^O+0`A&AvF6;Y)gMWI=An>Ia`}cdBH6t#o)0*HNpTWrNA6%UMP{>+ymry zlw3|5L=v1a0E}b8xmPnlD(#qNWA?JHcWVjsax&G(lKG@X&oiQsDGl?9jhdk* zEem{4@VnIb{&6qXI`wckePedy)*OVSBb~>sCD}`b5ZHQSwsJ#zipiN@Pu~?+`Uw)s zSD%p*Lf;;|0&+a-pn1mA-9@9h>Jj1;QP$@%o?Puh1#1L_a~1XHW@QDOG=>fc*|n5e zfmMB~J&r%q1n$+dsC_osY2sgHR3k6dVn@e(^OgRFEhfD3kHiO_7eTp%w@}lD@h*k4 z-2$U;CI@*Q?UCOHz^_sy$R4nUBpUaX9?hD}m(c_Nr_dR*y?MLV`C*SzytH z|HLYa%G2CW_);{>CI0O8Zs0eTjw^HMf*m};Kl7Ms2s}30Rc@xlJC#T^_$E_R)B`2LVx+m6qZWr+M3U7zbt6AuMdH6W%3ev#6g_#4SM z(z5~dCr8QMN=)q&n7#pEEFwz;{`En)w)+xx*w8MiIYp}ITfJ8&-v3{iP;(fJcSC)O zb#C6R5L`EW@6F>Y=kYG-0n9Y_)>&&yuOspjS`2y8#^Sw|v94 zd6tCuk%E$e3TBGDxd0y{3fw=^MfpCT$kyMAdhmI}w%%kYdMQg};BaMO&va&C=^dw0 z+PIfI9;zTi8$V#MYMC>d5NaeMRw>XBfhAgA&VmpPY*XFRKv;C6t?G(rTAHW3g-z0A-;7GFHGpk9= z6g^56q!wLftS(t?5ctGFA!j^0iDaL#GZ10A3H|nDye+bF*3`RI@vmM2Wk6zkK7-;5 zBFw4+(|<%S4xNpYwBO^6qmk?i6i=h`&CA?)I$axG zJ#CYi8&mACt0gx852X*X9EPlhdTNm8xMxvIKlC{iuAN}-kv=>hrDEEb;!o?n zdx<;fm=0%`{>>C^xE58c)-Kx(|G~qFs|7W4e{!61$8zsy02?Wz)><1bJF}}IMgApQ zLH16vOk4iy5BI~5^ap>GrHn%#tf=4`_JH|9EirRqxhNwrPru=6G@yKU7S%#K|} z{%^j2M!K2S_NB5C^AT?5I${@9(W$T@*NDTpf!Fj;@4czL#Q zUp<&c!o3PAecJTS)1$((a#i{&O!4datI7BOGYdff^Z~~IH6C!8+C-m1nvEs5-O!ES z-a7U0?cW_{c)J4i2UL_`KE%Jo<{(0tFXp04U9BPWx^{gb{k|Jha!FZ5Iy*hhQGsqx zU9;8t&ej6@;zR1C>@+?2|%`4 ztG^I$caeUKs{%O&2VP)hKXFf2_(u|c0OXm*!PW5TnkVUhgMT>Mgym6!2@^~l3D(K4 z4t_ zr4(0AeUVL^A?dryKfM+DIv8*f8&7(Lw%iZGR?b511!7|w!jeojEwU9lXyR!HYBWy| zdl|d%@=(N^FEG^ZEMt-DL`^nxs73YSAG`%%OM;4}PTTSo&$(%BD9x~{Tt&zPD9&jC zX;DCNxSQB&Tc%8uRKR_wp5;!Sh|(21=iEvfHRz2&1O*ZyX^5%(+Qs84)*$VJ2j7GM z_rYe_N{rD}8|PD8@Q$F#@s83kQb&y6Krx-0z`uH=SGiGn{uXIL>fQfg8CJp492Tld z5Ij_mwqou@SiBc^<06W$t6cK}!k4z7iRZP!b)UPO6DiOFY(?oVTzEEuHy{hV+HXl6 zYQx$eHv=9)eto~;io`If2R!yKoG6Dj@s^%|i*ffca9q!%&axLwjClW*vx6c^xm2~j zvCwHsy&D1F39ae?mj4Ob>07$BfB48~`QKn$9uwz`%{%H>R3rsXedK0{tc^myfMFev zw+%uU{lh7wFNePdUcq<0y_Y6q*cpEhG+{czEQe>hl$Q^-3}tqo^jCsOBCqw|3^zJY zVj=r)!3zCW=5#|f4U?h^$4`pG?O!0qM{1maNIajMr!Q=@`t!iAV&8Oy+h50v z$)~;r0M@~nJMGIaJ^tx&s6>{ZW8|6RVoiI-*@>l^+bQ$jFT4zob*r?)NmjWRN5U5& z-0WOd;fl!lpR3HCHR+-QVfL_;JRb5g$ip8FusH5=8a-x!YOYdDOdQo+UM9?4p$WPAJLo8J(a5Dxe_e9FMZ*~0dp9b!kGxxOdX0|vowbKDqVot z{q76V-L;^~HQ;hLRLC#5_|s}a4>elJ!5$J*X?0RyWDFrUtXelA3nnMKD}KjG#<^B# zmLiNu&xF;E;vAuS=_~gjRD&xBn{J=>NuS9m_~8Y|BZTgdqMcVh$eW{QygG(Hf<1ZW zVz`{?TVnw_4A_CSvlMfz2hStwEc|zrB9dwM9e&7AE_O#=g@LZ<99RHoX|-J|M7u+z z0@1%IxaFK8Q<$aBrl}XBE%SMPISdF*f79rGJlJ$wOEEL+=ITj`e2Oe@$f@7Y8Vh=7 zA0tXHcJtb@T>S=Ps|RD3WGlK5j;uO$h|e7U#=^)<5`d6CbQ@;W3~Wn&L|(L!>^MHX zk{tVXcZDfuZ$*z^l--8zf*0{+gzY$rLLsH3^UYknw8#9?Qmv5Sbh(q!4*(k#@>u@2 z9Dh?tf%B}6ZhFm#qleHZ&__Sj1$Vdd;+LZR4vfWlSdE-L7hk(qUSU2Zd=!R| zd?1aN(xgu;>9F>pN83=aXchp)NR#82s zoWtKQiM;F5(G*rKrp;np2pA%Pwhs}o+OBdT# zN~Pu(xc+E_SCP(?ZRpz_iNf5uDFw(fAp!`!-Z$0~>~@O|gp~8Ed8@@{{pDbfT9F^D zNuNi4mpR*S;LCo&aWdxt4xO^+`Xx$zahXQgvw1DWazepgXiE{I=B(f50g?9S1xqWp zu7%s}Nr2%Y_WG2Fip)gzreeyWEOY3A2kAGhzVIJW_2iEjiT@*l)O9_m8ibZNKY@T{ zv(lOAjiBpVL*MTZVvCRWd8$;Ex26i@u@7H+c@>Jsnco)a`(LAq9Zq3E#0sv>V9Zjn zn}x0FnoJM!eo&x1=V8A5fbeTYiKJ>O?|Cn;6fc9VZSfqH?EJ6tBKZits0>qSqTEo> zJRgE3xHyA-MB85{guiQJi5WlFb{fP6rIt>~sjY2nadSj`$YFjIz+3r*=+-St(FsImqHAAQ}(s^g+R-Wq_HKpEEn{Y$^U z&1{xCm_bq8eD#E9eL^3ox{AA!UZAY6NO1n4uZXQ~NE8*Z)HSfb-lyDX#jO`NJ?|0^ zFi*M`LlaIP^t?0GD0nK3sg&~FDEx}N5R=LcH|mtA73O5ST1OhqsBwT_!}yAHG6x9) zUjdSKomv0yB86Xi&5|qEBR&C7?Y-GAyH3(A@Eh%??Vi8d#GwLJ(mE13gDtB3b^KA_q4^+%c+RRrUZYfL=*n5gYcq$f(~XM@|2|Bl2qrBQUKkr4NI&Ox&^Iuc5PB zN9x`0m5k6#u+UOhf6L&>UW2hp^v_)mS>obDl!f!JqYv)p#okRFlhZ_~xr`J^*;jwO zW#1VZx*zgZwvEUimwc-__*3}j9m+&={s}tK-ka;Tx=a%y4v^pxJwwoP{!=D317Qi1 z$?0C6n)O%`{rC39!|RiMtSDe+;ezk^j@6K4ur2Uqu6P?19PjxST;+q6m>8Tnt!|2e z(4aEZ*8m*)1W@)$ga8Q9TS872QYEh#ewO7~M)HKEVx_P0L8wHxxhD9NJUU*esj(A< zko@OO=7G-#rW%G)4=#JIkzFR5Z2qSj9Ue0~&WVmj;z)tXM{MB@DoJWmnhfLD;G2TF zuKV!Vf{~IDQwJLA+^v$_fP=i67B@i);a0tkUlYo@)EQ*W0>{7qTDuu`s~Jv6$1+IQhz1P>0NB>#DmbTYc;{k@_cGHhei7Av#-q*lK>fl z?#Vz}LiHK{YyP4|F{r|is`A*x(AGIQBetVXVpmwaJcW_v!R%Rq@QZfNeDA&69fLr# zVwhd#x z3DcF*tGT2Z7HP7uG6m7j#NorjLsX_xP&KHcbieb-?%0n*lr|$~Y*gw+Lq%$ z42K*;OmU)n8f+<$T%h^Kwq^2hY6_N7kMQFLmsL=U_*VhJ*>1wR@fHy|08bW&G$ZuWE@ z_(1_n7;niZqH+&Dw)BVRK5D8=2^f46!IMsGCJ|c0T%I=e^IlV*NP>@t)#(`iJ2Tro zP@rh=IJ@&|v1HNpy1MpdH$j@DfXRNseoZ-lXF^pzLM$;4 zp$R*gm9cc2qSj)0h7uhlArx<6b^i)H-JR(%i`GYIhTJ7qCST*~7afc6=Hka?LV-Gy zyBUkkBo)RDWNE^LrKRKVPh4duHEwL~TCnk39B|bC*sGL9AlKi{FLnS@cuwv`98yYU zCa1#PIcj07Gu$KKF+fjt*6<<g;E6m*RQ3i63XY zNV*tO>IF-TQAPFL9tB)Aq(8Ah|M=ex=y|Iav?;4HRv<*e*YR~Sck*_DnEE4Q+HBHf z(nKj@B)V?*P{Z_bd@;^{v8n0@0Lr0M9LPiHs#Ga@O*$|9JDFrVc*#lU`uc46~^_F18T*0hK=5gC~B zkJf$+spR|{CpP1=={qIb?w8z&wfQRdv@2p6WmS^AG|5)pt4<&5lso6~FBSV-zK+#? z!@#FdB$U!L2Fd75tnBa~3IYGl*U|^ABz{fIxz#xY_)YnB44nnJkwY=XW!aG$?P+7< z49eA%^jhH+POru%A_yGw@m;R6en!Fh2m}9vxkY0^&F?b#ht(zd29jwrR=Mg*-)z-l z-L+EGtXAh7u~*kko`R)HoXME-ntxMIWzsKtTdOJ?p1lc0xA{V7gVBxOf615-#dy9m zAYC(QXJpZAwJ70GA^>|ef@=9C)!6Z34$J#EsErBT5U~i2W{2=vhQPsnM)N1CL}3Zz zP5sMZwAZpnmS=}Liv3shja#@oCy1)>*fL9-$+WK--cnm}=gzL{Y3}U~mVfj>^Sb<0 zTw$733}f`Rr!vcf z(V2b$hqil63|O1cwr{9(-%2EhbjORwsYW}AFE+BRlbF(ZuHaLDAl{#Zo{^cF6c(c8 z6yN_x#3aQq6Ka<|Fr`bB!t!ueu;HYan_X8wf}H=%N+?OIo%Gt7$G+LCbHaG$Y&zi} zTVT#uJNMAje($y^cvaO!LPOJ2Ij(Y8+_n+!6|WPd zo)uUoGfT_U0y&^#vX@46cY7Hs@LjhVdiYy(>Brb?C;%w7PBA#9`fH9fSHf$0dD?)f z*&Zza%BG9=qf4keT9O_5;gYkl@$_@qF2~@~@yiT;Ib~g;Wy{|z&q{6uTvc2Z_#fS= zQHSsE+CDb1S9TNx70-Sg3pXZeX*HmSQgE3_3%`Y2&>l=xKoKT2!Il#T zqCMReC!DmS+dQK)F738|J`Po_bobPHYM zBkI4HmHzfZ?Fb{5{ju@b0Vyd}F}K%Rjk?V3k7}WINl(2)P-PJk)9ED9FR`o-s6GDW zM1KvDxQ|LMl`xz8!l-(%LCsEynrYOc8tZ)&eGT)fu;a5^LdomrN0$k9_&rFjsj42` z?`+}7t1|*qdEFZWiOl@i=};0;a~_!8#Cz{o+fPa zf!r8l@GnP^y`0i4{U8)RO8kLF;UFF|K!jdkC)!ou+$aUfPW^K~p3$Gy|Lv~*Glt5z zS*!O|z5ox^!^yE<&(G1s4VBQHO+#5)cUbs3T3{3MxB2mXlHSx@PPQp6K50b8XR#TP zux`w#@dw#cVnRWtR&aI8%5_FGYfFPvY>N6bWY825Zv#2${dP*F$BQvn6n_AzOT;~R zLc_>%u43AmuK-Dl$4RTwsNw>W+c^xxCpu#KMlr$WmJGs!6bz(7PQMb)ZHmlaD zg6wIm*nE}teH(xOKzpM-ZTFB$`@8dAq={MRb0*78VTGS{r4q*e_UNFsG3S@s9Z)Lb z>>1!OZcP(Fu{&Ep@>S?lW-)J}_u6;v;9eeW$H4N^;a!!U3PX!!Aj9X}+LZylPy(4~ zar3~(OFGlK)NK8v=l4|VFB!Vgl`iVMaWp*3?yZdV9Oso_1ujJ)th!-fBVjeCylmHU zVY6>t$mJ~sQ-v4o^A)5=S6=*-xgPN3Ls7U zw99Q2OKTtCN< z(rB2(l}4A;b-C0;=oK15f6sg^(TaW*==LvyCv!w^Jeij3uk`ojV1N8`(nVy_j`N)k z%{?@n^2JQw*+0mvakhC*?i(D`3i*iKJ|{uQFayMrmZBY3P}n9P(vUn@mV7N6y3=NT zHnBuQ6I=7q={t4s@aN6Md{>N{8&|etyt^NTM(q8Jb({ijWNi*|ivB!-;K&!ZqH!Lp z%>ivr@v6U+%BQdUJTv{N=Ta{1tfM(0s#dg@f9&@k3N`40q%^c! zZl8WCuK>GomED~fbc?l6l^O_N?3uqVbbh1nKNDV$%rxRhcULce$OoD@GF?qI%aI`e zl5D4Uv)}~trGoLUZw!(o>|T=h`tp+(2)T=CQe-R==CN(`#hONx%C7&Q-jd=xzTD=i zm|J%Z!%D78yvxlXCm6gV$mK)%hn$R*me?}p?Zgyk`fe8HiC{@)lu7|a5mMK>k$$h3 zWC{#5EBOSe6E}Z>`6Qc@q0Re>U4EPtuA@)8R~^BKf#9qlz=ExMv@tteKAd`amNw+@ z{Z7t_YEy&w^nm=38QcBA8jKw)YGCfwD>Tuwe~aly6@XF~O`y)MxKms{k}T0I&4ak;9mkn6Iy`p6~((TE+xwvhzVUo0W_^xa6dyn@(=pukBzA%!yB3_k5d%(z=msW}pUa_If@ zz6Hx=jxlDObJXvUVYQ=;2=7^8!x?3fi7d{NGQKgACK@L?I$X=-P`EP#F?r54R4*x< z8*&SvPF}Ft-T=!)fk?#`)l<{j<6sumf71~j5Bz`0y6y#czhvtdQ39!%nFH4a`mh7t zMp(GNTLpttbFIDpr*abPY1k6^-hz(Ccln~pvhUPbXr{8xjF|%~%V`C7OWljhLIs2= zoWjkGx#AUkQt`e;bSm35I#Y$v>+;_3@2~Fsj!8I&f$0$tJMbBVrUF0HKTd2Ewy;>; z7bE(R`7G~0smYV)7`M-9L)0~}vpzJngcl3W;C%#A2k_hbU}Z&!1<&4$AI_+YW3}+p zEn_?ekS+Q>=id6KfIsO3<24LCKcIi?ZC9SldvCk(24Fon*?M)FvHx=zk$uf|6HvWb z;PVD2#w2Z^J5~1@^Ws6KB{Gjmi5x|QuJ1N8x6o&tRv!Gh>MZ(` zUBb(`LC{Oq`3`5Z#3-$hnyPM&blQ%$k8~&Hb`L6hwce&=TfS&*x_*&u{eDrB>}o9) zsom`T<(v4Z_+H(}wn=26OpkFQqA+U!;hb2j?BDo266H=N_1^1ukso~mY3tAC8L+Tm?F~7WB`{vOSQ^{MvK)5p$;TCCI?G3HsNff^&M|4U%|$*Z zPj*tgX0$Zvs3}FgU3;QpoZB9@8al03$xgejO`Ja_m#I}2z2NZ6Bk>OypChN7WvvTU zhJAxHfs!7uKU#Zj6Tbb`l;&82QI|{cLC%|{I$a3xSG>VG1phe8Z|eC`j49w~c;JU! z6@?L6w=w$9x(?PNm{LU^iShLG^K)Rj4Np%l;ABi5k;zOhl&|R5Ej}K9|2ay#mEy_f zhDJ5(<{0Qth_?BDz*5#uDW`F~L#B0k-4mmDVtg9Y zYR%s`^*O7^8ERuqaZhiUN9){Hhd=IX2Ui>~Fxml0Xl`qb*YpS&xM zowI22422D@BDes3hFE9TZSbZVb0QI?(w+T(VSLqyx8Hv>bDl{`L523$ilBt9_Nc@? zi@UMH7Lre46Y3XWjS6%Da_pU8?P7)8pgS#COI`NW<^|E<;$j`2S-2MSct$#0Ri} z=|ig0GfqbJ|FAe9*E>#jq7NI%l<5v7f0H^A4c&QiSkhDUu`K`f!y2#Z5N^HkA_Hph z2C^85>(;E0R*7rKtz*E?>MB^2}!N0DiAshgk_ewYE05_zF#<#wK)bWJTGj zmUCUuU2WLp9r7gQ?x(0f@HrZ@c6Z!ncg(MTn@_RCsp7<+7NB1*kY?h#e=D`*m%57<(|bqc3n|r%JbaIciALI z$rNEm$fny+f;$%bFRlFV6o$!I?Dmz~UX~QoR0Q7N&ZOMn8&zE|c22t(rx!JIRCzbm zjdM^nDpt#3r*_<{cFC>;W_v%C&ir?CLAWdSAJ)5M1epHxJ{+(D938qc#cM@E79*)! zn+)5FD3#xVMux(qdV11rf?zesN>*w+0w6-j+_a%u&5A0tR1}Un72nlxv{ar=T2AdbS7R!7WPQl(s6ywthgo3(Oe zy5+vPN&~v^9`-f3KIHaXh{-Roq57~YLt}-z58-==VZJA@84N;y-@r@i*NctxFHm~0 z3tg3$hF*qC22c<31V9ED{1Huf`Tt6KbN*+e=K2EsQkX!bTL&D#8FsUkxFV?L6@$!Wjx%PuAz#`@z0^(M;tQ%WD>OtgYoQ0>ATN^6s zE~aMeVByM4zeQx8K>XiwwPtGm$Z1u^)chT8R;!yOwE za?^-*_YQn7mt&H-<6(fOwYtcMFaE`Elg2)pTSP>!d{Nq!`fRNFdHyIx>x3@;UVhn^ z_%-4|yb^wTkWs2GxgHkARv^p6)L`AC$dZHR=SyGdhsRtIXw-@dc9*?NXJ^m%|FD{e zZvoTaXQPX+LXI<;AHlZ?JV~B}=r=4!1YE1%9*N8{?p3*Bb))d4<{S2liw1f6zTjfb z1XRMYXR>1M*(lU@cfSc?fS6k6q|s~MezJ;I{0Vt$)(5QivH5 zJ7gP%|4@tp%17)&-&v~~10jk``fI0<+cQ%&8TTjuVG&`K{JT%am_O}ya!C_m8dl&% z>e#?x^!tU^yKP?$M)=7mwlBP5NfOW7Y|p}a$Lp<4ae$wE zsdk#D`>)DKtDL}0Gl5@y5?WXeRJRuW!pR_(BHQj>C;X40{;fGJ1xZLKz_%^8lJh^L+hS4F6#rSo}G~G+us7 zJyba~I%%*DRL)7@Knn_B+rT8Q;8pa8OYz%eofQyTmq$R^QV;Ji9Wii!+MiU1C!e(I zG_B67P>4km-}=)uVgnqXGJ!%y$d&%uC!3`-0^IC*Z?gw^z!HV-SzvWOT=f?GQG9E5 z?#x@I1k*&ZFFTvf>pc{B9UUep*3#o)G1F&l=;TA|(7^lu)hG{Tr4CPyx6`3LN;qP9{nM144j9%NVP!zO~yAd5z}vsE5!M z1ZR(F)!}1366H^=0I3z<3n6>Ku75ZmCuykMQ>{ z=WMZzXm=xC=Zno)_R^P5TUz~g9A}-nxjnoE#)yvQ&%6rc$D~Eb}GGuP1}M*L+^#v z)%E-Dhv5wx8!PRhkPisn?KiM~!hQ3c8}I+Hgfs%!a{jEt3s$*-7Vov|VQoI;2JZ;&*7k~aNB>09PHcM@$$>ECQamPh+p@z$h z+?=jQTje1|^(&xtwtM|Ae=f{b+IIZDtkSK%=!QePlA*Wc?~*P3!<7EVm1Ygy+cN3Q zs^QzgwK=Ap7<;d)>;|LT6Kl>o@1izWK;Bty2;O@tlp)gmvM?|4QK1z3Ph=M)oFU5f zf0^gX)>YL(+oe@=&$mV{uYlx_D5|nFzqRTJp~@YSy&;J z#|P6N31@-BH_+jSyET7dHIOSVUpnrRMyYwz}h7+Dj3|*h>jhb-vbc zEu%Zb`v)DH$)hB)E$Eeya1Cyv$*vo%0k)naBF_aj2{8*c^q$W|sN83DFNYm_^3yjI zmJgpFW`=%RzPMNT8vHHo*=)TP<^u8PKP-9HyAr0ph2T=L(e5U93hqkw8~Dwz z;ns2Qc)^E&f`pZ3T>VmpkixCRDwY_7?KDgmpn|O;*>5DYMD?T^P+@>FE2sDRB>9g; zTLR5OL8n9V@F1t5kMxo1l*X_iFJ_44t;h*`gxB@DMI^DlKKn4{qK9zVwk!Cgxk4*z zbv8YQJ(P0$Dka%d?p4YaBl)H55-^hRU+1#4b+>+-C2%jfAK3T#b)U0-^U(5f;cv`Q zQiiFfzA4AM4Xv1S#K?|`+XrVVqXBm_F1Qi=Agp&EX=4}#RM~aAQvJkdQoCusuz645 z;-y9N2LAG{wZd*oL$`1>ErI;{kj7Z23^SnGF0Hw~0b5w*wk`F^)?Mm(Z0QC0GD(%S zNVd7w8sP7E-}2P7yQS4YO4#-{L)jQ?`7R*uvK2gh=Gk87KnIcAlA-Y&9_P!?tIrF` zcIQ{n7A9g$R{6qX)h5^B$`vp=qDHinMbA>)iL*?n{t~;&@{%P-$6^>K-F`YGi3g** zH~qKlN@sic9n4f;*O*!~;N?7VB~buTvL$OI)gMen+M=4FUEtkL@R{e>b5$p?KmTF=J8D7hpdBMLex|Y_{Q2Xq-lYzzaLGGu5qy z)8TN%WG0ol9ga>mU)4p-q{<<&G6zWi+ostx*pGza*x%U2>%8n1wfpBzJBE6Hi93@q z<9C84WF&Kvxk2}MtoB(N+@v$!V*SYLm^bDOb;;euB&Ucp`bHuo_i;%IKm6n)!qTL4 zB{_5|^NAs{WHpJvx`)OPzg2T1N$<(_?_VFi?CSjde8K>8*1|A0Qka&rM+s}?pqmc# z!8^d*;)Jx11-agWbaRrUV4181n~br0BO|!&j57fTLSvckOxTORt5WlH(H~7HWm2JI zHO&#|-m>E#JUjE@j>%=}4D9&nv>exg54N2eR2_1s%op5Hf0ZpP^oTmWbLO|{Q7Srk zkfC090}5R4F}#V{pOLk;ewDCiyFACH*idx5DLm>>f4~$VH`C=Q2bfl99Pj}fZB*UU zq6jAC$C_AK*^fSegK{}@8^S~drI%0tDpPjG2RQkzz;g6=DW#LxMWTK~6H_)@tub$uRZKb)T zf46>OXk;rgsaI+uz!1B`V%zUQC?yffsClhvx^#Q#*8M$`-11Zcp-Q+R95|Zjz6StR zIzNRrQkLgPT_7(tIZOE9=2@R3Kz(~+ixD%SEg(0-I;b9fRu#rtP&MI)gBzEInUey$ zhD+k4XwFP`NLp>Oe~~9HWt}NkB|aR~rmAIbqn>mUr>vSPnompG)5+ zU0+UosH(xj+W#hMPD%|Eh}7Qb7PNK`A3F&h&WdG8Se|)eG(T%J)9THdEOJMLOsiX4 z;qJOr?mVF!DxW{vIJ>#vUV7J_0nu^YxeV!^yX$x<@{k+$XY^9Q#FgwBvrFkBwXoEw zLS)g?#H-5#pKq#%>L_5roeP%Fw`!- zI=8%;AuC;%I$iDg>%a@pN?ZjFa)1Q@EEqxD9yjP-YuXf4`5I~L7XSE_!RI^7lQ2|Q zh2>r29;yIDr}7ql1G4jHfhRIj#)_lJuWrmeG~vel!V{CBPLV`EwR{wPCUeDSIWI92TmPa`IaK$Lngf^2hK| zzR08s>^X;z$~Qg#VGXXufq4{W2mGRR$^|sq90D-U#RQ_E?+`rC%@cjxqKyjJqaFyl z(Ixd=aDB^{yh>Y$(P&okCm`h}T!tlr1`b=salSgkNq|BDI6N zk1Ib_s05lAYCR>i7RpN@ku3~>8N3ZWNb8)QP+d^fX@(aznNES6-p=intt#n6vn(H#t89# z?}PdUK8Qy>kK5so3&V7|fAq=`_V^wFik#+0#;X z1*JK?a9u06c19zrAHMi`&_Q*>m$m76*>84yYg7!?e?LixaDd?kFF&z(L7rp6N>(mA zhCo!ff$6zrcYNYrwi1TNap;3ykg7wXgeegs66~iZ<5mX;1sv>$Zx0Dy84+id*G@^E zPvYY9XrkPLRBIwOHDLq2eVWn}&tff@?5Yl=kL7u3Wk2Eiiu_D6H3U-|3~WO~UvbZf zxwGH%pR}>Z+ORTb43@PB|D@j42rSMv=SZQ{|iHnQLs2}qNALm?4Ys)Ls)wd%)<>D6zbj*&^bzBFlaisPr!-_1-e)}9~ z+nR2bRNc8*=ip`;jLI@=Z6o#r}Rq9IM=*NQmYJ)@Yi*^?c(l8V^daRlpw`4 z@wl0 zK|iv-F!Z+?j^jgeHO&*m>-s~-_jeZ3zZfJw*Fvhn2I>bEdf(I>7{R=x;-DbeujFpt z5FKn8aFbc+l-3vxI4OjBX-}iNI)gpWNOWM)2{)qb?p2}sl>ts-zF-y={7w zum9vTHTF|&wG?BbAH&1-7L6tTmIv(w_o3IUPi6G(yC*dkGfYc+3-dad5UM7}!h$m3!~QV>#k^I>^SyioGSxQ`b$6ZRo^nGsnnHRJXb;$1Nj#bHci{5V|! z50sFe$neGuy!y1l!tdFWedLIoCGqqP! zCx`sUEqk9At1Ig!b7#97^k}7xsYOSwR@_ zyXpJhP>w2$sfUz{`JZt+*X=^qH5!rWe76T82Kr`7O7 zbrXQ;f)bxhKBZ0?&Uqv^Iz=rNnkF1yb)Gh3qRv@m_$)K8*_@w8SDOQZZ!&Fk4x4OI z+s6;^XZ&hM+tYUd*Lco6tfk~hvu4)0TNqGYwrmdm(*^d!FOr^Z;Tvb;wYqKtuP^vhWvnFSvZRp7W7N(Qi9alj z=tm)y)0rJn{0eDluTmJj(#SOGE?8AUAt`j7R~1MrTDc-i7$u&$>XD3?QbxbFYV{YH z`1q2AgYpFKNXer)=GN2ol*7Mjn2PSe$I_W$@)xuBri2k$yr;UZc{H zDPFR+Ay2~ZAwqNedEY$k6(SC&v%|s-Muc&!XAiKO7IO*8n!OmseGIOR8igB-F#mDg zOAqaqwktmbKn5OVe1c_{0f{HtE&4i3IUGzXb==PjzhwP~Wz3laxGO&T93y&*8_Oh) zWo#rb$o`c9?k+qx*+kCWx`<9WCz14;F!Ho;AcAM7+GhA^dBfx(wm}s{e5zLTSE)9= z{ZV36+VWHIE5C9XCn>1Z2qwwc)LHKMp;EU>3sN+}+{QL6!0tbJ5qkqk&XSayRp<~w z7F%nZs+!uG18C4jUh4np1$%KKVNdSJEeh(;(+Hje`Ge;#eJhnUI)$4wP6n20O^2zv zn(*pwl^f8Qs3N!2(OvRgauf4E$Rzy24=iUFt{Ab4O202(Ue|QLw%_HX^q@&MD&oBobzz;{rts)+AKK=FRmsDxJQ?C48g%0Wx^Q-zDuyOkr=n5zu`37dzel$Ag#QAx{5QLX zZy`R2ysD#$$8?OzB=8v8ktAH)v(U9|gY8+@8^i zL0ju;U%!UHD&fEw{`IaS{!f4#G`TaWNyqF%b;MKrQYW^tqA8=QzB}?@D#4A}^hHbL zgKds=?^uPSS67L_&o>SoV7a9ue#`=S@M+O}<#rqVj^)(a>7{&AzP2^{rytn@a&I{c zAdi-#FvDv@4OWG<{4;qBu$r^O(I$}D#ehCzefs*0N&@Va;eS|9j;Ex~hArKlSme;5 z1(IZab)Q0}q#cL4wN(5`2yUCcr`)bx{(?sw4!G{j1wuA^&893K6aN@Gpdn-fJ!r)M zr!_Q?EK+4|)nj?FGxzRr>7#?QpysAEuaIoz83px7=`OGUcQc^!v8n#|sxq=@yf*Ev zhH8SQIgWS%n~K0AfnxKNz2y|AZCK6ysvhWdv|Nrk`?9yeVf2QI<;OKCHhe|ctg4T< z+&tIeafYYSAE2q>GT=Q?V8Hsnp%@A4N0LJk@|`$lEQaOe@61vjK|R=*L&Z#|2!|1` z=+vCS6vd$uGbVF=?CYOD8`f#y@%|3Zu225-+UzqgIEc%A(HI$CW_=R6B<47claZVt z;c!9}w}1GG#*bgJqRJwU-BNT=1s)@%dV%?Q5}K=0L8BRR>(NhEEeY^;iTcKhXw#i! z4LwJ)Rv7DleKQcTweljHHYo%VpsFtNVYc=U(@8LfjL31@M!mx54qW990_LI(QNXNY zqRtiuC;DFD!Xb}UEVo2(3yZjXuD|o!RV)Ziv)QvEP#{}M`k;DC(1%>kqpQgV8P+SZ z+ZW>#E=5^R{{$#3jYu5?J#%MnZh^&M0)@$CPrk0)k<4|pG_=iiZ{9=u9nstF>@h-; z*jwwA_OW;)@57g_*S0RjO9}(_JD_pH}T;ul~ zxM_IX{Czg<_dwphXNl^O5xSa!8=Bi{tc(+AmOzQ9p>5ojcr>VYYlVRgE~_{h4%d9l zQ_!EM-{NPFdWxGO@8e925#Rh@a>TD1UBJ^uA?^FBb|@e3x7sbV;bd1{5aL76U2>r1 z?+%bnDvBlq)SbQ1-}{y=mo0|1GIV5I2uH|LvDhXatwwa9`bm|54*J z4eNuY{&d-GhL^_|l#EGPxyeyd86{Yxc84Z2TU(%GW>_23JM(;=l6}5{SX*-Ix2s;P z!fY`Q>(U>yqAI)gy;X7x3#1HN%_sB7Ogjf{P{Nt$0WJ#)=6c(Ob-FJ#v9cInH5YS? zSXB%aD4LJDx!g7uLy=BB>N~jD?|8?gBtsugSSnQPN(uV8o& z&ansjB0W|HfEs6c%0g0d9@=s`vJlV`pF+I|6M_*>r>Z=`>Iiu$oZ{Max?F}^KqEpha|+xG zVl7ynd;KaqmJcC9hgt`00vc<(kmV1hX05PLLf`UtG-Vr?KX^MSR|Q@Il> z;~1W+Oe|M~jj5M$t4@8E7VmSjTXZmK;Q_3t|7New-VgTL{f6=Vhm|0*`}&YH|Lgvx z>{(g=9EjRFYq2#;P~Ft9iImRC_lS!)YNbA|9ZW6yO%S8a{OA_IA8+@Zt^KA;j5KiozdNCVGjT}A>z6>E7CV6z zb~Ms3%&V_D6W>kphkRMbMDF*R^DpDEoEZTZ!2&?62sLb5x87;;E3CsFc`uL^oGge? z&Yt{?NJ3QgAIV%@iB++CGN{=FB+%F@`w8Aj>Vy8nO17`JoV>VlGxRQPytauizR$;x z-4zVk597$^JnVjpd{jP(Ek$CDx_l4bx?!$w*wh(3(dh^5y>mHCW@c22`D>jH zlZ10wVAF|NbF4O=Dk6p-J|i3Z5Pn(tGwTG4xkrZaBNV$PD?}?#r+tRsorWlY7zod` zjAl&u!^@exPw{b#9B#FbfYG0dp!v#LCK#B^MgO#>%S6gn7%Lz|qIrQ^q5=7k(#Q3^ zFhfn=&nCg;#zS9&skW&?K8UP%THTJKhL!dfBa?5T-^zma*{?)<69Paz$2x1dLW}sd z%mv9e+dO;^A_F#|@yaHxW zj6Av*{v)*WUCPkkq-8Ii*l+hx)MpV@clraNJK7{SEJjOp2bu48+|wUpN17grVfhsy zQ>?*jat95Xa5(>6VR0`>-?dBl3H(2#z81@M=@Qk=OT$0 zBm1|3No?Ad$w78&5yLLL;Q9rP-d}9Q@6dn zUGs&eZl|9hU+JTTBQt(!1gQHd&0B{4h%n;3V|_%t#=m+jjFag-i|l9jAl(oeIcME# z0*x+2WxPxD7I8(cHOrlb+BDH}exwXSeQIm2vJH)@e4lf%qK7VUNVRTFQL{z#rLt5p z{tIol*5L)vJ6@E~{a0oym8tA)Q)u8z{ES7d>hZZNYR(SLVtbKB_u6v*y z+iv4#R46Aa^xIPim(b*cK zWAHH(K$Y}s(Jh_N^(D#SiM?%K?e@RaaNAdH$&*HL?VTQdyKtppIoOz7LC{CA&YH&e}X=qQ7KaUw+N)^BrA{v*lbe{^tFkr1sGy@KcaAd z#8!{obfuYvNx$zg!k$*^j%o&}7!Y0mht<_KKFItw;Moc=DLVY@(s+Vt(1|ldzt{k6 z15QOQBU|9cAXvuOequWBe#;+!-O#;HOraCU3vRbGM2O$Eckv0x$!-MU$ecEu21uS5 ze5_4}j{tNkSW!cXhke%N93{v_uLd-c!&eT9Pith+TsGZ03r%=yOga-CUPooaGon4~43UN%3KcX64w< zB8`6#;ROnlhv~g4M{i;>544QzbD7opXxYR&&=7zhM$kb8IXzU8lWlILqMPn*EZz4H zuZ1o3+>{+I$T(8^F)V7z>uSZhOcLprPi@D5H%VQh76k#UVUOqgY)z`J@ zvFRFPfPe?1SBewoPdH2DRSMrvravxttgscya5B zpEMOXIn$a}YZydTAYh(Fp5`dt6AL1flU+NTG|t}U*S+lsUA1O* zWU}`H3V)mO3M|vQrDy4XozUKdHk+(G@d! z4Mhg~IQIhII^l*?w2yPsvy86b-l)J6(v~O`pMQ(vZCPm%d1l5lTU)+>3?S1}Tnwjp z4Cc-H%bwsCL_tB`8|NSf$I(T5U+kOXsI@A3k1_PR6f^jUZu(eF!^iTYV0^aQFQ(SX z4#gWry>iWeHl4wDqLi5}T|B^Mv@OL@m7pr)lDFcJ9&?ePcvHnec7wE!>*_IiQVul2 znJ?Y8rsH-)8H@}cY+$UTyotuv~i-31)9^U3sVbi~@)L`jbsqMVg&FL$?B zuxGjPq3+=#)F6ue-WnWlSV`Aab=qL%Xw`v}h7n#97P)5Ik0^{p&%>Q2G{B~U3z3Fy zvBrV`7ato2?+G|*{!y=nZN=8JIM8W(S!o!Y@@_g55@`4lb(=p!97&JuA&wmmlo-j* zeb>o^NRXEpeXpahL;qG(eQ*`~Y6hfwn|r9ka98mM`Bg&;fnt8RHFPWsM{r z<>7`Aeg|IrL08V;z<}zg!OGj*&o@|l;T0$C|6!$LOUN$T`AXk*hX-C1cQ z$eCXj0?;6?HPklbTwhncd(4RB(pI@%ltKe|X1D?B%GW!Oxh^Kj@mnh4xwUfZDOiVG)E2KZrH;vh+%nv^}*-)J< zT|XoEA}9%Qz3i2(mt-vuHj>OT9eK`rkY zECe*5n*7`mW8Zm%FVMF&H&}{TdD-D-z+m;D74V28Y;Aa!xT9dEA>G{ggy4?^>)p&e zu?4`i>L}CX^^XWq8UjwR$U3jY$68IQ*00b382wa4Rs6(7;xm=>#~f?lV@lOKn&G~~ zGB1+ze1^-f>^&2mNv+8wnDqGrOf)iQjI+`Mw}-zI(SPt$ZMfy>CMIt{OO&Gbl0F*+ z`D0BFY*it$Gv^{&;;vQ8mEUkN(>FU6e_p&eK+5;m&$yr@p=HzT*tk_kFQk#&M_9q&QW zX6|_NQiN{<@z767KO)rBz=rCdU^KKr1Da@7JUql(4a(p*=Php~FP>!N$Gn3U={q|< zWDyYuqg5?S4w?9L&a2tF%Rug1LiHVq*jwrHy7Py=Kr_p#D`Kk#Pe$8W?b-1Xmq7Q7 zE(Mh$61xH$Rth|(Snpb^lYNk5OJy>WzmcNjOtRfBaFCK?)a2t}RnYW;TjF6N4= z)CW~gy{~pXtAKC2^TKN40PORH^X={#B3pDOT6~So;-gmh3XeG8X+wiF z@J2R%OS{LqY}UBFrW#MX!9H6O&)V+F3n3**FdA4c((-ljxOp^u8>|GqHI?RujRG|g zZmgk28%#{v=)A-G2A`7;4e3IL_hDKg;52ppjq=h*lE%_RM!Zi@ExuA$&pZta%z%S} zoPo{c6KIbPopja+0^@Hr!M}kqY8-c zcpO(UaqAI~edZXNbv#JSqOWozdXeTr^*Aj~TO*kok9{Uc52o84P)Wn28ob&=hC)LsYDu)TpwF{fYSG$B-=5I!a)U;lK)c73V0Fkb z3EG*)IGuG!?BFwvo8{&R%_`C^7s_^RTb@E#K7==3!C&2Xcj6$cp6Jmpk&Ed_z9`bm z+IhrXXihuO)m)_4B*7TmLeV46Z2KI;{CTf5%UM>+=d4Zf1|GMg;zHruLQ$Mxn{T`1 zmtlx3HIPm*aIF$%V1*V@^-p~P8T|zZa9{DI6;DV;@pd32YOO)4e&rpdDY~f&9 zBES_{xLR&jQz>%v_9nTCnecUxV^u}6l%=tgKB%yK-tijfuI^If>ZsFXH;g?xO!jkA zb3-T9WG83qysiqwJy-Yt>ZTYu!bks%rK0C|d&}~CYTiE-5ADP<+tcmpycT*+cH@^~ zx{28k%BUD@OVjxTGcuWd3iubeR;^@m;lJfz0+l9R{GB{|ZP2>kl{O!>cj*WpcB+UP z?cf7!xP2#&)^p%K)_8g?7QWbSH@bE5CFbiK-*gYfu#V_gG4)5L8G zO4)|^C`F{~&BQfIeHK=%N~fWYVl1v1dp%-o%$r$(@L>u!^*gXkAb)RyYZTDV(CL5M z6TCoQ#q%Sqj=RPe0O!%raD+TTDwC8M42tI$y!#JJk|q{VXF!!avxyKC&yAy#$#)IKl8l%;d- za?Nv_jczETqbH?V!ahVot7$#i%U@ry%kq>;sb;sO2SmFsxsPv}w+Vx53Q22;ajG}x zuKFl|kDjS&uyU-hVaRBgZGw?a-NGrR%{pX?2 z6RHr8wLxJWZV7MrNB>Y>UkLQTwri*XkyfZIC*wQb zC)$MRN^G;W++dK;GmRP!bqTDxzwW^cnH^+^6{uU0+mtithq^IkUf;9>abTXPhsEre zZS;Lp-|gC}DJfEo;nN|%z`)?7k=x!kdts`)pHN*wrW3RKKhrN8BW^!Atj7JN7usO=TLw^j^E!r!l(aIQ53a?!=%nuoE3?_ zf}+2_RV=vCJzucAmzi~phEYD0)!`aWtJE}qvGpCcW_n?H0tQ7F(w}8XX^5!S#m70_ zc}K)c-7W$uu_XBx#u0A90UXh38~nxzgJPt$87aQ@MVC|y263h6gRSSaM_5wj=B_%b zsBONE)biM5d}0jS9viq6nKx2a;Pc!M z#ziIzllRjqu+z_SgYve=m&C^DFmUTf#Sdw5Ae;IBmB4oV6y2+wEi&er$&<}mTK4QE zJY68C(c=Eg$YX+jqRk;ptC-#hx>17!ZEjv&ZGR7Ntdp*V?@YI_#Qt;;nz@m#S7MKm z;sJ>+Oi9j6;XA7Y;E&$Uwl+V=ti*W5R(Fau>W$N4|5rMA~m zqq#FLB_Y01kzFA4G>_)Zn-5u8EY45i?i_!G+m3_9zW>F@uHiONB3Y@_nIueHd;=n? zS$GrA@$u3*D5uA(aAfmi2v9$2f*U=gA=P{u!o!!z>6Qt8+q@w)SAmp?@K@@S@h_ym z+oLsb%(ww#l^*jY2iG{fRpH)t!ap|zsxv)fV5(}aZN>_XNq#q-e$cG0_U#}%W!4e1 zyc+0p@XH{RNxpVbGAFyR8~pY4shiOqf^)=3(-;$)C#6^7tt81d#PQHaZ?c6Xah-c> zvux1zWZSoMk@ypP3|(gbDUHLZHe$7~I>`oW3T>gYN7zKO_ZD4W|5+mChwm)=z zb>!;PMHE;=Yfko&D~&kIyKKKacuBluR!0XydH{`O=kZQ%fRP$2bCrZT3>(+Fy&F@AgUqU_i$g-vY6Ki#W;Yc0zk z?Hox*;~)nK*cX5E-N0ztz?pZ}?N6Z33uRl;<^gL$5ye@T)&t+qaAZQ0Ok((T4wji||#{nWc#u$`V> zG!o)H!sTgZ{dU|Q!+gSS!=z7Nm`%U-{a6G1L@8~lEx?#ZA7_{YBs_zh0gJpe7)uNL zLt?JRb^dn=>kkxpacJ51{+EJXvgh&U8y6U7)Lm-kSigxGJ&4$C5x?BDbCQv z0@hxo#mV;xM+OnwR_8eGuSP{a9AebXpKOFGK$Rx*?oHBFbR8YitmMYN1nT$yVFk`9 zCC8+Peo9SpmFDLi@tKaQ{S;s8t=24T(|`Nd9ngM{f0v}F@8qjbs#y(({bk_u7c-O1 zeVP|!wl2bK!r-XMm{ctWrP3^7k$}|oU-t5PsHQAps{O4wegZxB*a-M8ar>L?FQVm)jdif zS8q8wpA=u5-N{;uzB^f{tV2!i5lG|2Pir%< zrIh7#)o49s=F6zKU6GMGHe#-C+dUu@)#*{FEfOrR%lXS?0C@oU@Q8O_T-Vk|iaK>@nP8*orVp%hw`kqEKz3nJp08tc{II8Q5776a|CHZ4RE)##g7~ zelgeiq?MhNZ#g9PeW=EUH z)g6%b)xgWYwaQ~dKY`BwETUbb&A&*b(G5_0#z)Gn`RMebyUpI2qALxHP+E*1@a{Hs z%%1L#yDRASsG}K1tUuzb7FZ^i5fP-iaIAjxAf{gET5Cc|5~liID_je2?D+t}IPEHs z1>2Yyb+EHgOo&x=^nsfw#6;OE5GoagL^G6lbX5pcw&g9@{a{)m9yo7qsLKI0{B zRzpC2geZu*%$tTTRf$sGK~VkH3VR4hZ8fx;s-6U<$$fh^)0v{kn}g0H;#^d4iJtje zvaS@li``wR(lf0-ML&%cyAHW~a!-;}Zl3NOu1k zbU!16@$ve6mZg|S^zm5;U~S{vnj zO-bqNLZB1#3H?W9q}BYgK3=@0T46KYL8F``J&Unh-cqr*skl|3nX-Q;yZN)PTJkN` zw6L^PJfq4fR`2QvnqBUD@{FrXX^Tml1cYpG(qR*WyUgunGy-N{OefpE}JYxc<%M|L3WBF=oa@*6N zEgz4QLtTMIMk2~S)NH;2Hz9m0k{jBj7+UwbZOk-K9Q8H%)aB3hg=+uY5}hxT#)0?7 z=ZJM$*t=1|DNQxvu{QF(wZi*tn#V|mpHks-7jt-mU0A_;EU-Pfq163m0Ynr9B;l2i zvt&Z^lM2#@EBzGE0M?`)CxZo-e8Vm_LwWMr^QPCrE^VC`y#(;jCgaFn_o!?QvDzw} zyiV&fR-Nef=1=NEn*3|2eO`;i9_JXSP8ezBYAYo?jq2IlWz%-NO>4@9;6OYXiV*L= zHn;P~4&6t#g{&1b-_h4zWdun7QPhQ`vV$1>fZ#o+rx+ z9`C45H-lLv$);7{UqO10+x9lxeChr=NJqq{j7ufD{#;7f_fr`y`P}7v~ z6@c?37$-hxqWM||Y-v?ii#pqG_W%=JdO2N1HZ}E@o*k?1&KHF?oZ;aoa(h8@;jD@j z)#qfibbfp;GlI|Ofm;l4{nsLYr`(Pz1+VGU!jO!&%poAi{0OP0A3b+mGNbZw4Hd_W zQkHnAUft+tnj;~8ImA$vDT5g^PNC8iCd+SGlY^bW)IVt*wEc6U)FhTDR8vO(2-=8oGF6E99u+SIAE zd%kF_TFWE(rw~JW@V&LS($$9Fzvl1Z+W~IrJrg~vIT^?fpKkiLiNlQbllH#kW7d!m zv?69-X`!l)C<_2w2tU3~A&`lYTi3*Nik9U?k=xLIW*W1T6EHA`>wW{_}9 zkoY_f>kUA4yOL$AHT}?1b-z8h)Xootal^rF#I|UuaPl;_fJY1gEul+P<ge z>wvhp@@%`rO)Vm`>9?=dNFSl0M;*N*-&Tw?G*M_y136xA<{xoD!Gx^_y3zm5P`2;U zmP5R@=D@59TRbya$>*Q10ri<%$L#XAu0YIAs(Vto%ENfpd!FtyBzQDn57uz1?lfYS zJd1lCET5FA=!FDSLsYzq0yq2TqIPgg^Hh}ZpBkgq!^$IrDy^dfcqjyJ)-(9no>A7d z1~AqsAMWhP3RZr#%QQ#6a@3F;?HjMI`M{3KBDY1<)@6DTPg!o>hD0}zJo*SAoBjdb z8jTLwERJoQywvQYD{dweNo(K9wX==|*V7Z^S(xwa*)Fz>%2{;kj+BU9bTQBUIu4_h+H204S2IeUCn11IPB$K|aE|dv zJ=p`IcfgfmJL00vIuGu8zw?J$)i)HMyT84&w6|`uc_UTLQ69QQGOHnYoXam(r9TFL zC^;(+hyri;T4&fuKN0JVXw*TdVzor3z70o_Ds0)^D0ok{B|KyRzmp0CrO zalo_zL!)eO?T#NdyEW5;k9{HpxHOmSSF8+>kAGbiPAu8H>+0aq`^&F8`}e(!-0%Im zSgXuXcNBY)~D<@6;eJ$c7(cHXYY69ip`9f8YXuiqUy z+_qc=J<^8)n9c)ejLj<|!ybK1A=xYE*WD6)d=*Lj{EtN=x2Z>#2r3MYF&d7w8l=>I zPgY+!Iu(kiK6pVp^VQr8Th*Xqb$%+Xq(d4mN5YYOiMNxC|xsLjH#`<`K*)Q8}8sjc=+K%MKc-KD& ztbCfw+KdaZYWFtvSF$v8S#3U(2grJJHGBLpL#!$oY0K* z>R7I$^u{w#xk6!GSFDy&xZ<^X{jfTUSX;{OEpUvqM-ZerDX8i!=8 zFHvVxq731*zGr@Dg^rvAU_Gqwm<00tl(rr5At z_>rGPU)`K9$Z0peI{nr+7~0Mkq?8m%Q9x2%`yl^v^Z^eV93s)_d9%{$I1ECa zBCklkQmICGj8v4QiRr%*2KWBe(6KWNE&P7iEo8MNrQOEEEaGD<_Z6PHy};xjM(^|9 zZN4`f8{HgXs=xXqf&J2R=JiMiLyY3c7VzX|3Wk?U`BCUXkm)l-1ze`X=IKB!8gl^= zc#RGqu1DPMk|$-5Xghc)49sJW`@#HbEN}#K;HV$kguGJe{;JybYH~xbVV{j}tqy~5 zQ57l67JLks!K~ z#mQ!AxKz7Dx*7u!=GGtn0%>sZA-;!>mRm`!Tr@{$mT(zCyhiSe&mEV@^EG)22nI6N z6h!v=PUB1m@honp{r08}e{(+Zeb?kB(`&7$7Aut5DextNi_r*X7yil85yCm^0#gLm z*Eh5ny%cRdLnjp%eqmIysV?>5Iz(=Cxs|0LP(3=@g6{sXr=+B-GXen1=wG0ybX(1X zz?s!^j2(M=RxfE3srHOR0K@8(jf}UsVXyqk!v?eFcL+{}SomUhTpCL&O!Wty;O zy!nkbll!6Ks(phRb(!nN^z7262!_C_SwY`U`TLY0;PE6fW$n0exlr;G*?FjCS+?PPg;E#3X0h%r_B6j~9zUeUUE}^{H#b}-UtQ~*9Ru|}0C;g~Kx;B2 zlK-Oj&>|ar7%&z`e7%(q$XVCl?k7|C|LI>urCZkI33}pAaibbMXy#7iaiex#BzrFigRPfDATkOx zha{NKWva-UT((YUCr7&~kl!dHDLG^l&qij_A<^c{o^p0P`|5a#23pFqoaK9tTMD5? z=;jK%+vNa~4NK*|{AuBJ!R_ql-Y3KDaImC3Aq>4f@Tz1ctOjOv{hz8OQ+(N4)N zb=*v&`EQ?~-|2C#yleNU?rWNm1=00bVYM@caSiDGk&?;mR0N%c3 z`c?_$Wk?(iKhJ&eawJ~%*PuyMs&2#7To0w%+>Q2MflRwaL_)JWmrc{D3|BYt739|O zkfQ0+FPX|2D@ult@tARk;@|YlIJlrHE!<1@aZN)X3o20%Y`8*MP~PM zsH@gFdXl31(|ljQv-I_}z}1KM1p9~Er6=6XnR(&b^V2WXFQ7WUpR0Gg-g*LUH%&MR zPxV=K7M=Nw8?I*XHa;_uX!h1Ya5j44Jb*QC-Ip#o{I&b8-BXzm6@N&FY#y*35@Mb_ z@ZSIQ$nT8u;$_6+=+aRqe=C;`qF<<3WGwGl>YV5|1uil=t8{23%RKj1iyGWfuLGL~ z5n$>p?=j&>&c140D2)d$S>(f8HtJfijPG)W4_OdPeKIv)%rp1xQaCGCZ*wK%{*W*^bp?$z>N z9Pq4On|0^DDaRJoRhP9R6b2o5AE9!8U-R1h?3i20r(LX=tWvAWwDUr>w?!@y%HF?= zL@XaflPqJmfc0A*hI%LXvNdm$kMb(|5m^ksjO}nr7bbb!YicJ*#>MXx zc>j+puKb60`4;*yjjSKyZO+^)MC!x9fUep&sh5@oC=tXR-4EzDpgE}U`89?qKnidg za7uNmf2m{g;L#O+V^t}(-ALA!E`@$1Wl%AMRBt4wOt6jAyOwz8{pBEk7BSWApD0n&vNG6;d3{1dM5pDG@$aKGIYW@$Wg|U0NH_% z4Q5smjSgEncGBc2qcIh1yEX@FT&RuMd>T^<6n52>t8zQg$Np1n_I()oo_Y&?6mr;D zgSnqwoOKxszSuV?B)(;q^|lD4TKtDcJC}KNddx1$h?V?nxI6XJpI8Zoy2H_MGubN< zu{-PSvA+dHT!AOCFyB~zMKtcyb#KXh-A46q^CfrMg_9B+&ehY&-Wt9iYNkhVh3m6A zcBh1w$w_P#2Z<36_!}+byb<9^0*oFldhGbP(Q8<+sOt07+pg7F^m7mjTfoCFm+L#E z>9(PIsM{S&E2uCzYRUzyibO6U=~UD|y!+?CZx6L#=LVK=L|GJB*hv3mh23QURW!BM zdVFu!6>Z%*?c*0&LXdzI8~40nTnM5vOb>JvaQj+A^F9=21Pq!yB|1zFc06rex<*t!H$$8cf1y0|s zIIqk*KX^c862*=HKV7Ix{t<9xaG@}pyp6UQD3Byw1fjTCJq2ANVk-(C^ftZt9w89Y z{*pGUA`9-KFUV2BnR!jA(wkv-C^8eL5<0CXj0^~F^-7xjU74J7BUg%$dDs7~3zl;8 zCI4|&x`4vMrJs!MGs5ItB<{K`oMfp-u-KU+pU4Ut-MRYy_qKlkXa_nuSK8{G@+H?6 z#CCEO@L-zBXq0`^{%Bg6mTxAo+&w{7+}z~j$CI)f;+H+qM!UrsPfXk^uL8COtMV!g zid5LyABBMl*pa3x!N*u1s@9pPR|<#}Pmi-z3j@(Fre5K#KF1_EN)_roANNw#A4zcN zUE}r$b%;%o?J9+8fx3pSCsjV~Dbfi&NTo9)9Bc6LLou1)Dg-!S?&0z5kK8c@-Eh}J zm9m6rjZVlr^8v2WIpOPt{$Ay->~hMbKtE(sTFDDIxZYLV2ExutD?-m6o12@MD$fD~ zOkF_v3<9f~K&}FoYWg5q(g7!>6^8X`j#RnKf7JBRm2;`RUxzceiW;f43| z+J6%iRz(Dn=6=_GyjBsjM3?!b)>%<7NG{&*>|#wR03}l7^GWL!d`EPY!sMmKgRwH> z&l%65!igMrh6)3L$wPAMo<(O;J3f2j9C@a29;2E~wmCyCYdWBmZ+Z|!^CI!vuagDN z)$8DV@SJdAj~x_;Kt`y6kxQU@O`omp+e`47*hwdUcha7+eoaX1b|#Qi%ZXmjN`cwK2G z^o5GJjkcKixVtT1Y?4X{NtEf#Nj3MVS%coq5A2f3+)Ic?c}%%fZaloKD$O-194^-q z^y)-FvO=B!m0kD(dJ%>jooXJ9Mh~RU)aUg~k9csDSP z-n3^(>)EmV(8MW3nHKfre#k}_$dGCPtHK~0@MgrG&sDzy93LCA}=utjOXMT8uXX3y@L;jHO ztl;atle z4cN*}R>v-rsz+5cry44LjnqP=X*hHoG{cH*18{N!H|-y7^D`r=XJ^X_fEYz>nvz@r zq-oH%K_>h>{;UOlrOpHrRN5ynlpVsP5 zg3b3)cVWk}w~QM5$dO7557f){!nD5jHzgUPck;TJUJ?pvTML$plMy8r4ubvTFW0I~ z)CO@j67($Ls{4tPI?uk^^m;r!8s#XPG->nCpyYaBHO}z!4le&qu-`$k>Bl-fOEJ6X zO2mOh@eQCO?TfdvBKIZNdnm4s5E;AEJ>e|nLnVoeSSc}aR1>?AI%x|$tFirFSsaxG z?|wZq?c~D7>zvlC8OTXKHbNT4iyvBKm+b4I={~9xcFI#Jz8c&`Ql2J+Zt^=bagx@s zvC-qMa3aj0uxDJ}E2C6n*<+XYL|DHC=Bhp`ld~!YCK-QM>Ya+;FcVDu%&1Y1tlNsR z_QFLZoEbdi0T--;)(#D=@1Wx=OPW6e!X>Xp5)sA91k_H;t zS7C3X5`RM+RGprqyM$9!n;C{f&>Ga$@67T@S)1oPq8HQ%6rI@2lTAyAXP18vr2f|1 zN5B5Qdt*t3d4HW$Fxqw6W@z;FSNGefGHsT4>W4x*Wo5>uZsR!u>I){4c%j8unLU2q zF;EWbr0WwO(p9HF_-*2vSLp8Y?8wN8jB0k~80)Cu>tXyyZ5fR5p&^|nv~FdXX3HFu zgk8%`VS7CZ4Ffr{P#yWPB+tUBf`2eWP}fVyM;PjUD?JyG8^M%!wwLRhI{oz-!l4mk zoU!hdRs!v?2=AhzF8tK=SzjKH0JjSBSdq6ESjcGhW0rQTSVf4L&{{agR*Z|BjFb?i z1sTdSr#iBVSS8Plu2fa=OTE(^0|)Fg-5?*YS@*Huokwd*b z6^c1L^q@aRC55@`=2w*c6shnUIf`aEor(2uuPCjEdr>CN@X>jHqS1M#)NJ8a=5Gxp zv!rg%U%Em)md)X>V#Nf4Qv=RZU2U{;BwfpMAMB807cJGQQm61jT9kfyuCy@G+QYZv1(=mKiyjg_T$g1%sgGecDvB z)H0YELap~~%pHGL?+8Q1W5LWNw{m$xD?p;bo<;w@Iv@r9b%SW0)qkn~4|ZCguZpLp zP2Yo=ooC-m1+O}Sr=`Pl{HY1;cpOZtM4~$M4`WedBN>imHCBt)acJ`VDxh#Zr^;0)wU#`pSKE@}#NuFlm()Dp zc4XOhL1MGBuC9|ygI0{^7B5NeNqmRZn8b|%m=9kXrFNwbnyl-Q1)j!y4T=5KkWI#} zm!mb1Nza|GX7-@vwK8s2#Q>788AySHZ> zK4KV}8qX}bKxm(gRoNKP@cW0ywhD87_RCU3h%FKNN9`(Ep-M7jdGH{!{|{{YbWaq1 zc{+!w7Gm2Ajjs%Mgu7KsMb|gQKZ~5*0XZin-G*8MZScjVqN4x5xU2Ke1vM@P`X?V3 zj+C@I236FQ1Xk|Z=BKLd=eVMN_7~E8y%%jfGxZeLvxNI?MfNHs;)LLK#r@*tcy^x> z?re1z`M~UmZ1Xm)x9`Q7kf2u=oV-9~-dFdBGs8!JN2;5_3)7|!gCpU;pdIA1KRP^* zK_`y5&>RnFw%W)zKLhmK5+}FdA;qbNsw>t6l)|QV9VLlCQ`g+@vZEtyekpURzY&^W zAq(H;(_s9s1cp^pL!ZFn9~%C{TNDX+Xz0d2L2TLq%L4949gYRdRo7(c zX7@|($1EE9^f92`gUIcoY1K~VFJU$SnOl}GfK0ufNxPeoWU(bu z1sid@;@waXDXj*)2*@U@2OTXzX&qR{kF7R)r#dPs>(3F|aT*8|H(3Z^plurT-DLo3 z(xe8=6WPbs*gD*#0lYsedAMs2fx_{FV#V>|jXC{vIif8;khG7SXZ6ZPl;U9;9&~rHjpXUuHpdHkY&nx)) z`!{-5*B7@EX2Xl06k&ANg1m$YhJTqGUm2^;EZq4df-8ju)1~t517!hVaMWNqzqWqN z6p}D>+xx=kAD$2_UW`M9YUJQU`s6$b`*O`UNPu;O`h;+m+K-fC;lNS8 zB5`{ZL_2x|T;u{jxx3d=nU#etCD)$AdAc#@Pl!}=V6~cw)E(`idGmPzRKNv7WSyX% zEpvd{VgWn0W*#WYhL505Rk&EHIm}dtuoT@}s=kHwVfNeS1KKk>KSvP1V8+sTcK=_l|OgZ=LY5#t4_ux?_LyV`2;j9LF%HCCvdH(7G6z!EK*Y`N|) z?Fjwz&0F{TUSH+!d|w{zv&ZkfZO50N&S^1gTPhiul}n~PM*zM$5X{$7iM$M@0piA-Abw{ z`|r91S&&$kAk}7?g+tQP#o&iKCAq9LPpMKWPf#Wu{VLmg+vzuE*4VB-mmaBAPrn0g zm*HYr^&g==b!AynmSFw&Y3=Q4#o1@dWmvt1<3qnunSXfDA)2Y6okH05*&d-(c4ls$ zaHgBU&6_ELyp@|uzd6k-rjM<2USSSjXQa=n8Evm&Uk1`~pU+(>dVAX)0M0q2C-srI zgWh%D&osl<4|ulaC5i)&o$|~wVEZdMDKaxYw}piqH(yV%go`DrVfEi&Oa3$G z%hRJKA}qlRiETDU=yAEvsQz=gh4Z01dX=UwcbzCZpOoW=pWdJ0#Qg%+5pby?7hTk& zb!>b?wO#ph>KusjAi@Tq2@ILFt^ID5Y@O4{Um-DPmR9`jO1-^;^`<=?i6D}`PHFtv zu3u?HcFaREdLs>j@c&V2c+0|xvvF02o0qJVI%8tVnAz|M zsm=OPPy3teWvizGSXzaSHh#?`^oU*x(!HZYT$R6ARX0!SxA*M%Zz`FqbtS->FL~Zx zo&gszLhsJJi14#MdosWNG^p0eqK94O;WLUis?;VWDdl+*N@pCfhW7o2`d8UVpYG&! z+0qiEt$9@I`tB(4`PqZ5s;n0j(i(m)J-ZmKR|DOE0KYd+J3)QF75PDx~yuRP%Uy3YsyVDf*GrL8ydF&TuIJ2VM0$fPedijCC{Zz4I6z z8N@Sx$gZfE>QJcWi}1sS)P|`*6g~Q>SmLAYzh|@}8aR|W9-Zap8+)@hvWVkZ10(rl zPYZ%C(a|g*Uk#L2DWovz(MjcKNWa4Q!A^kNYQWnh#bOWjZXLa(k=bdZr+0n}jS>7( zL^b>P5qyFjQARPwfRyb|SVG^csm-fU;$2fHFPl|0VL4&P=Ro3#3{kvfrHz>U5dl#j z%p`I2l9x63*PGEg)Wb>Z#Ao@8%p94GbUZl9=YTBj!hn??RdWoE88Nq+YD)ZYR$riy zZ}14$Kf8i@PB7XaQhg(JIIOc6!pR~$ZiL0V4xR_baJ@PU#YMitSrSz2quiM(WLI}q zygfrgT7Pyfpq{@jhm_5T;#U-S!shya-1JEN!#frHD;F;(Ai`+$3UlKFugh+EyFw`u z$9J?*I>fU4+vH^qTzbNiOo~oQw^E(}9x3!kx!Xvfj@(;QT!SZU^Ml&{V`h@`=MQq) zXM^13kMqIv7qD$oN$R})e>KVLg)iU_0etIq{fpkf0?6aR^IglN3^{;V>GhIoYS;Oc8V@C zjs_%qEo|KgJK>g2duJ}8CuWK&@{DdphN z^kQYA@RvZNjjEFuOz*3=3#&Pk(n5t#fA9%KoA{Uz6vH35xuT6=?}ZfiTpv{`Hzm*s z`m9HgY2X@QqrHKVeS*+@xOCW4skGLU;qT+1>JN8Y79Y#OtFA%E=hLZ7`h~Tx{ighS z#7J|d;yzaHim0b24|3OYfh@j6Z`UcXuS=eEDgyxCV zvI&zXtizDXRd23{r-&4Gz&}Bb;(-$RrUT3Ltc$zmJ6&(;9|m0GAT8|hlat4(KC zk2xsc!5{XyhTVlIDTPU2*dH=c?vl1?~+x2sw`9Yg? zR`7!lbtQ4lZHAgaB=r*QePHkL8Z)~^DRP&eSc~VJg!X-tM1S^?l>8tvQ$}h$JMpb` zFW^YcwRMO|NwbkNEUr-2mqosb&%9so~k$ zc-^8!Z%hk~N(OA47=2J-G>k!gw4`jgBwYA_A|XbP-k8ztE<;c!YcI&SN|lyzGPvQEmm5RYP4@@2F!m2~);8jA># zMeGm9rz!z+N;y0r7>AgR-cAT3^5Bsx0<{}n90*Lz9RKPr#Z>Q2mdPr~o27(rV?<(T zyj^A;p>8~vUB}{kf|GDz_@KPEL8b%#J9{!bFFDZcpA!8ag((_vm>f)HsL_Tlr{uA9 z@vf5fi}{*Ol3`}staER#NW98ys@>5tN*tU1?X#ge*Zw@5jHJuXC9=)Kfj#2oiCX<@ zTCuHfHmbVKCRM6Re%EGNepj+Hr`DF|MBJqYc9++Mk+O>|df#=`2#qw~4?*)AingCf zWfQi&4m2OMe9r=U995~zBxsJJM{*dvvcFSA9EKbE9n?{6M%s@$K>`|i>`&J8D7jsv ztmEAAo*li^_aYP*0rZv1e|+v?shBG6*7ei9vX{^2Acy-H-mXUBJsY_tJJiB8DEQdz zbs%_cUl#?Yvvi;6k1bHu?TIr1O;nQh@4|u?e*RnR|8|$Yv{{g{S!BmeG=QMrWV&P zgT0d`0LucVc_25jLDhA{hp?*L#QCi{zo}c!hv|?0wH=;yOWNrg;vYT8#@ehOWU`mi zKEIo;aNFhZ&8cm5U$~y}%pj@Qc8QkNwAD_Rr(ExZevhTN2GE^4-l01I<4V2@&Dn4K(oQu1Rx6()Rw8IzSH zP|5lolvm}}_=|!6@4R6OCY<~I#J5plLK?;N<$m&u>!;{|_n!d`r!K3uc8{6$V`g3%8}I z7pXusUAOS|WWd}tb)NF~q@|nYC5oI(+=a@D^bKNwhpZ>#F|MOSWx!Eo6GxeDHis!> zcq^!`YQ$*%fno=Q$|%J9?@XM_HOeA4QL*G=q*7_PS*gPRow8lch8>sEUv@ky2lE#D zc(k6>ZjBE#$YnoYa?G;RWewO~$C|vsLWlnJs8+F3ol7|mi;q{T*I}4aXN_vBi9eLk ztkZW#+Sd(i{08JFuK8pfFKM~^3YE&I<~~?Wmh5&qnN-Pl5SWoG(b~yNxB%0(b2t6qgcO%RQ4gCPa^cERyBYtfZ+*z)wN^(|XW3rHUEOywy zmGpEh+{z6tP52w;1;PN%i-M&w#$ffko@l=Brt8?ZHHM>rKbRupx#^EyNtBf=wZ_L# z8vrU5OryY|MD71fZ=$5GPws(#Ea*oxWz8y%da>>NZ1(o&pJ${ye_CJKIqfg;$!)Lb zv^56=w21@%gW4G#H5wj}3TwERvTCu_8~)FeS5i3_!zorJvX5Sjoq)2fe$5wazvV7` zi3Eh;T9o*rpXF@zHh*RP!j~@F?7qSymZuXZD4U(V|MfoYT!#ym!|c+tzlF#_RW93@ z^=UDhGSb-pr#OBQYEvIq3V=mPS$G=2i5nc542$`ejcfSO$!_pL*AbmJonx7Yq@bAO zS?6^!1do#0i-yYF_7N`u(rt^gF!UqVocH$T7{Bvu&&#!{Bmt6>Z0K=EzU(Oh(%$!= z>rq2sL_-v_32bvWZ_}L~S zQFHPa_Vh>SrAeDMQ8tD!6Hbj9tNV{s>*VYjx=O^QmOdHPiVizQ_0&F@o=`9!jNl`m zE=KU5j?OKw#?VgcjK|Hwdsh7;x;q$pL^)I}tM9v-iIX<+8q%uK5ScbzL!(=d=076^ zQYzvL;}146b8#yfwW>55sIJmCXQusgN8bAel`tz#eA^Gbv(nDnX^-5TV8-6n%sr`z z(nUlAZ>}x^?`xKIWUDN2Me!wH)<@V>vvb?GQtC*5DKB_r(V8}lcK9B`iPgXZc`8mB zK=_N^9-Qta{=?($PyL6-AW5hOxn*1~fJ*$hBK+K^^o|bm?YvIc6vq8hv@c%R#6T^E zTRjUN_1wK0S@=JZ=ow=gVXV$rd1NVJi{6uh z#L}F|$2@;gVrA+M`8diCr1d!6NrSQB%SPvbN=`GM)%4zQ&(99*x?*4?49$Vf3A zXc9utk!H!|g91FR;=ntDqq+~#C>zU+2;|+=8f+Oh@VvB!m!op*&gIXt*Ou27Le(+X z>{NsQxf6aTPr^G95%c!K-mJX0ls>CRz^rXJ*tl4YV7_Z(ICFNwE>j<`5rp!QnL_z+ zG=LFF`A18X^^9|RXOI5F;I*=Z=(8Fnl^C<~(PBgxa^N`iTUe;yE@D)>?WxG@me8hf z*@vQVG1U6NMJp)2E>DhyxWb}Dgo4WJ-afG~l3WkHm=OR?W$=8aF9 z0z22La7#E~pl%&ptiUJB0)<^lK}XdG$RR|*Lp>5u9dGNf`UwN2^t8B=pzRvZ_<9!8Pp8=l6f7x=NqaGw9@n?37J(zIoRAJkBFm zZezuWqZR}6VP%mzJ}C(I;7on>n!({KQ0?gte<-~^{Tt@Vf#|swH3ou|4e#!eUi)-b8*#Z$Z4rM`x&E+4sjq;lw6aHtbd&xn z(9^3)MgyU1#dflJj&|9a47@QqE~*Uol9rao4cNchB zIf4=`&YI~EYiig1*Q;ny@Z8*_t>NME*&$7P^ZWA@Hvz|MC;}_@$NQkI!HmDpTIwxj zqeu|Pqm(;kMLCkwIUu$zYG`%mE%l*2Wt-9byYw*lg}Ih{0zO+plYUu9U_aAMwToSJ zO*Ko1hE|xM_RnH^sjncmVkX?~{LZRfFzJ2!^efDo8?Xl77;U?Mg8Wr#e)bgGrdY(+ z8~vZ5=}=polBbT#qIzofxUWK{66hj5d0ElSM)0>c)}pQbtU^Bh$=V;kPhgS++!FLa&}n!ibjLuQIB@vpq{ z#K%#d#g|n9fq%+pmg=RxOG-jIO#NEf`)wizvyJAB$A8F*E{((F6d8?v$td0C8v9qv z)FuXO52n8=sR;2m+dhP=|2F^4xENCGEK(;UB}w#2YA~|)@+K!0d6a>nzb*3L$h2Yn zsAeIiY0W!d6uE_yDSdr5sYRP{G^z+D`IX80>+f6De1@~exbm`$F#($O%siJymIj^3 z{)X1?)~{)i0p<;wn$P{d@YOVR$4R8NMFSjTl?M;XE%ExpWg5Th>S^Xy4;9l?kRLA3 z)|rMBxc@0g(BHemtC^B2KqzIF9_oveMIzEWjWLN$pZ9PZHJ5E-`d{l1{Nl7d6V*O+ z-+`^{!J*q=JkJzBXWsLi^)`wb+F`qU%Wc zkSFPE*$oL=LZK2x?J>;kBEkt{1hust41my$PO@M2&s6DTOro9BS|{wU z9VxyY7pP?9L-wUrR0FiK-3~;lrb%OG3wly+^!1Yw!%$L5VLcU7(sA?XUFzfQCso4e zok4S~TDNE>s;Sm7jAOr2AKo9Mdpw@9Ji_3brLj{Sxnscz7^qU6?$QrY{j~+cf%mgi zeRwJh&ep);r9AhOD!6}PMEGgn2BP`^Rpwex7~xB~@>pFBz&ZZMIk9u0(%HVGTDQXB zKv2dyYs3U>ah7Gc#^0V-iBF8QXroA6LLx^*i1`i#(n}NDS;p6ttB*z?G)L zntw+X)^NG{C&togp(c}JwCsnfTq|dFb=ikGHT^Ua5e&$GM$k*xDMHIb&Tf!kH6g4s z;5M%3{iJ%j@HqSh+Tp7Y1Ijess;spY-kPS}LhpKPruse0P>$lqX8yRjb5i`(Kq-9kokbf+iuLm3<6xL}#Dy8@Qb7-^pjXO>k7Gt!* zEU?`85?;#G(8=eQKF;Tsmb1>fAmm7<%Bfz8WgiBB6abd-e7@>8uDEhh?*wBJPOZ6H z`}&*(nUtsg%m&P5-TLLh(?q%g501X_ED7>5e8)kaTi^YvY4_B5Bsbgy3Nw7rm=-)Y z+9di*DmT;EIB$`TixBMLeh*NpU}Y9(L`8{Dkn@&+HNe-r=+CL1fmu{#EremL+EGAA z{%yIa*1P;c@fg|Sfm`z%cMfNIj=C~GIpnhv-x(h9n_|Un}=gJC$-}BUHE(D^s%!Ji3>#s z0^+NrJYJ@$h05nQGu?cd@VLZ1-qNgg6ASoO9F^dEx3XB2W^McswCBy?bWB(k&s6|Y zC4oXl`1ms%^0hi&z$&>!eKY$jze!GM)u}|;2lteQvn^^*KVPt`qCB%tM5QM4WJi-5 z(xhO>AU3X2+}(tgMv-j7#q&tv&Jec0_ipMXkPSQ)>+}NUuyvHVul;KuohT~6nK57M zxSg9fJ$(F=n0(TxnYE^Jz1@qI@g1!%Lh*xfxj(9!^q0^`z{+2^odl!B8E> zJk0avq$({FttcvuKF82WYd_N^)IA;TfB4w)jlh+g!!tq6Xv3Vv%|t=pV1Joq&4wXcIC6-mGEa*1VFkN&x#$G#OM`DN zg0#D)r0ZqQMwO|~y}ixV>%#60%k$ON0Vljgl^+-&dt2DK7{z4j#2CedNBYJr6-+dN z=O?s8y^t<7jip6~uIs#LuKHDt){eIf z_ncMk9F$SUNf(ISap149Ys5byEAku0%$11{f(8y@Bf0!K zIuy#bamrQHv)yXs9i-m|qcYhC2=SItdfihjGLRRXYXeZ(mU;mS>7!9@RB=(wGl1!{ z7C=Pb)&x$5%_N8s62lt0()8CT>k%)QAfYA8fpNL+95$=*QHp7kEU7{=%4V4niiJ9? zk4y~-?#K3@&=Vx*i)(3e6oii@{RO7kjbMQ>)+^a9*T zam)~s156h+C_6T9yM|Z@@M*@<4z*>(Ll~9ax9e--Uhr$OJ)2~xzAhA`7`UZ^M1Er+ z$M*8RO`ifS&n;2(M~xY5?>7APV&M;nGt>N3s0sR9WdMrR7Evlb%VN{{+%MVD0bsb9 zLJESks7?0}0Z@xu!ir0v62Cf>JxMBU5)}hC^QPC*-7VX$KAQU$kJx zW48pK%>p#~L@fMm7Kum7@51av5QqwIMR6VA0wPm<5FPmCOVJ2P(_6?33SOq60|J z3HFMGa4h@B$7pSfK=Oc9LlFUH6CIYL(SfFM8jXkLTUiz;#;*_WkLb3s-v14cCph%@ z^LU@&6s^7Y8j?;Vcj&&YDY!)*PxqO+_Qa$KAL{Us|GU^qtp={}@AfC-53)b&7}YeP z`PH4?k&B;eUH0miR)_rWeXJ>}wDy)xg+35*q94GBiMaY8^H2$5kNAtO7JUv0T>UnjO)dUotm{`bs8D84-?f2_T;3VfQvaAD zqO(y*E8a^*M{y)+BcFvvocp>sGSjR5A0A_HS0WfO>oIVQdU)d*JZ&sE-fqg9BBS!m zM87qbB*8O`B~{K`u@8_nEmJ21VRqf3b8$8=Hfuzu(zAXuzI5Aiu8|ch0urOS%RUOt zyW1xc7MvXc*(%2uNa<$-z;@==*UK$>82iIGyArOg;eZ+isvIXIC@P0J_KFv*Qg!Q{r8ngS#8& zQgFCvV`px0MU~iKJrt5>Vq*s@Nj>x`Z|sGXf$0wpa^rZB=(i&-Z3w}pI!etnvwOZg z#p?EfYxy_6Usx|#@=`>IBc&2mvi9JgEm?DIIx{JMW@I8TZ4j`=n@!7@Wk4tgxwTqu zLMxOJ%DEv6gxDr6nmcuqoNj7utzH|CGg65i`@VQpN!fILW~4@gm1DYD;lxqjNS(^# z!3&#*c+3nO87~7c;1_&lJq;#lkX&v3M*BbI+GkK0YM`dM1*At$QiIc9dud#7X>lnd31wWDWwfi36X0%&)`~)dtcip` z{q4AKSzz}_gR^)X$&(vVep=gR^7xI|Sv}%)NOctvf0nEWvv~;-ir}axM5eO}JygNP zi3@ifTZobA1>cQxO(n$Z@2K)m?m?qXek%yU5gQ4-(SbSw8aDByn- zorObFZy&`;QIM2Ix=W>X0;790NQabwfFLMRBcvOoJ4bgn(jd}ZQUaSa8!%wM_rCwa zcAtBn@A;ndIf!%hiZ8JQqvI~M@f)|lS|pl4HqD?d?%4HjAfMjWvUQ`h%-~#ctIY7! zY)P9ek^iu&ty^De&dy5YPo;t<=Dj9A)wc+{A1T*cM|<68FW*%CAZC>Kb-F*-j&7BT zbIkcO@g>}7m(QIF0MZ0fRX85jJ&xoEth-Qk0YzN1D|rr++3H2^&TIdyd!|Wn4?dT# zP*^V6?lU<4RSNR)YhmDh7oGbAKR34}c9k%_MCsA57|}ZLbiAjYtY&IAT`cKy%=%S< z4pGs~Ld;of#PB!=j@IE&tu=;yHi-9aQHKQzS;6?RYQKOY;$GSxDyB6}#YFB>~ zmq1>j#UCp9j9GOVU(hzH5F@=82QCPjaT#Be)s?|HW#56QTyy1g70ktnkq+E|@I#MU z5BzkAa2l4w_1v7X)G_q>ifuff#@P-)R-bPz{D(z;QqBlbmHL)GtYT51QZvp-NfrAu zVuGk69!?5W-CtF_!}9Wo8ELy()1KDXTTxXqSYp){RTDE)swhgvba&7E5GPeRHE^6@gD`Ml!gY8EtLnLTX9IedR+a1-V-GZQrt&Pc^Y%}Mps89Hho(Tk3o;}H z@2oaNmVx;iz-rW`Wpj%US?#EfBo|ER)8b4?Pejr|~@ zEfqXNL~PE?))Uog;b^Jy4V$nkss+GlVf3p{-QC|qN7n4_vtWgClRC2!pH6(tbcNzf zm7m8mbfj?6xq@}gaIer|sIYI_@dA!_Akmg4$49A@K*ouYUwrd#{1=x)gk!d7Q{sr` zo>15Lrd%!ad}!T$$gyI|VH-$4iWKRSo0+*#{h0-zHy+?t9gG@$tYR3cRLbS_bdirX zgT_lQ@xe`0pbn6FTr8U!oD--DzjH-Usmjz9A#_KpMUt0xmM_2yARe162HJOjR!Qs% z3XP`e@=F@gEXE7LAW!8L!ipvS!M~@9BFbr$a%3J6%o{3!Oz$DxXb6jy#9vUIrA3=c z#V>5%VOb)2SQ(&+>u)V>u8J}_ppeyqh$WmVs+;-fq0#*j|?e?`gnEA9IA)d!HTGJpqMR7c|afW%&T8J$?*WZ*K6ywiylcL>5&klkgH5 zZd_@(PnZ=?Q~;H(?%J9@DiYdmTO{@q^3CC5)S;mp>s+Nnh{R@ zK|>)bXX%qC1V=zo%iA$_HAz+j=KVWR2d<*cJ|>{a7>FV<7#8<}THs|Yx=8Vb2*Exs ziP27M%=7Z=q=1>iA%{;C?Y7nap54%a85+raXMSD3=Krvy2<~$P!HF)$dF6MgFgJYz z|Fjn8oMy+araM>to+7};2E0W*?2$TTxO4g9!>e}oS|S*?OJoy`VZ)-TG5|5v(UG*) zW>>gid-g00H)LdK+08Xnqq!VNiyta`DaI6B9>cWOeB3<0N06Q=3z!a}o z-Iuh;tR6+zJv?1%MemHPS&%(PS0N!&@6!hdF?LHXKg1O z$9V$Swtg6mzj*6oXf4wkIsa3`ZV==(l4|=Yq~CX0V%~cc(}KR6BmBh3X;WUg$jc($ z601O6&y+B7hl@Cg`9TZ+jYfynTYRdj=n>R?^B`vqh8u@>Od}5$Veuq6yxTE{=SJV@ zRRuooJ^+7Ttgkz}SgnEflLEwBJrAKNbw603Al ztlvQDOk!lrDgw}5i>p3&sgG}Jd>}R>(G5aAIimBlgwZPo8eDAqQ%grTD9BgCen9iE zDKT6SF1KK>P3rxfEz0oqHtas(rvhQ=v%mH?g&zVR=fhlnp9f;?OsDq&Ne)Nx)R*lz zeo_BnefN~=U_R;UbhmRtf0FXYM|UXvP~D@TW76T#$6FN*P2!Cfj6eFjguY9@OMZkcFr$GzU1)cs76^6rs`e~QZ_MuctN&$6-lMJh~1IZlz! zRb^fv({n}sh#Dv-6n8xm{RWk$f*)wpPMP1BkFQQvoV-&-Cyz=#NX_VWd3!anhIu1n z^hRaygyvl-yZe~U%>tx4sALd2NjFl~nK@)BF%%4H&0}?(&17y5wI3T2GCSHh*HkZ# zI^Qx{aND3PK2xrG+_<)FwpW>U$;k=RRyXSy$aQF4B?%)pFwZEiFlIcBn$*Rx#V+A;BP0*?^m%oZ4Wy>tZb!$xS8$VtVVxhSENT48#E_V zvl$I!dapbY#%3xs^A(HRcp*OE>#CZ{M@JLElJ~RdHQiJJZoF!3v(b3bnW}d2Eg8Po zb8KCA%@((+k#1s*I?XDM2+1#2t=Ou%1!-vVF}w%=nYY!*ku(5%l$pmm5`GE42%F~A z3ZL2^xVQs_KIcx*uW#;a#}A+O@NX~vFb{IpIR_5AG$XH&(a$-E&O0{27vga~=*aXC z`q??4vT>-H3_pc9QrvB*yQDWq(B*rC)5!hqYv9UehuYW`Y8)90l3r_gd~e5N4{>uw zy=CzK{nK}0VMjseXZDldq_8rkZlS4Xah7WV4ZmX+u);^jboxE>ETvnbYDT<;4YbSo zq9rThs8g2ZWswH7rb{)9uB!l;6yT~?9C2I6u|C^vSCSfukgMj-{+$xB8Zypna*51*SJ?rg5w3v32w1BTw2uqTML=wJae#6mIb zF%&mf5YyZ3M1>gsfyn4-{u-^V^Yt-gp_hFQd94Eh$-+#_4smZ8!(mfiU>~b1XtIMe z2z5nDrh803{}EU}u+^cHOI(mBrXGhlEwapP!`_5L)L=`YwB=uf{OO*X=nRtEN=|Q* z;dCTe`xja5T~I-6p`pY+lez?YbN?|J<|HUQGwb<$4l@z;5NB2BGGpYx?lZ)UHE8Fqu)OM)(?rc*=vD#c68XXOF&FQ0LpG;2|NC_UtAz8xWf~p z(4Mqk)8wus#vxhnfISE+y2$B^;d(9|Yt+ZT!pS$kxkuHZsZQ;Xwk@fJ4!_N_qzKGiw3x!^!(-n*swZx+MrQsBjm&F!_THMbT-OB`P< z^pDU4;jGQqw+a&}VdPKe6rPP%=+mVyUyQ7nvxX@}2~RS9f{^flUr6V@l#Ul4t8rKp zv&4R$%@fi~w0KQnrEK!h%O0@nX(YRdNVkl}O7zvb0fMlAvp z))qAO2;)mK)MxGUd$)1<&7~Af6k?61M$XZ>47W1hFsIGhf$h+?xQ5tUc%? z)c&$!!Eh!G*<6FqX-ZQ~)Us13qo&8mU|htX8rtmfWu@l^SX+EF@Ja8On&7RRFA6zH zQmfMyF+L~G0N5-}s1K6EN_w2$1%=}D8%03_JMGo@YDN<^#_ zKWhe6K7HiwUof9n?(2*UH+T1;&|>h;_~tr125WoKocIc>ocAH+{&1oH8vbmcVxFmi z^KCM%Lp!)a%5b*p0`?Gpu+`L>epK>AEm-+rE)d3{JX(*fjt}&cl;f^d(w6$HxUhvt z*^`By!`1PeDaJLMF`54G&^7j2p&1!a21J?IsJb`gu|#=BD2-r+f>fFA<-oMON#FWb-_Dm zGr~yG>42#;d1>(m8bxu|%$I6ZPsc}6Sn_I{G@D-6YE?g}RfF4E^-~pb3=62*?_%C0 zVWBcoBKwb~u`Ymxj%f^x;ten1Z6RMGqe-$VW+NVV!*k(kL=V8YsTE*FwH>Mqe{2`A zHF>=9gOW=DLK4%uNEsIpp686;P)Lvx!R&U&C?qge5#{radnCqCQ6@7p=xKCyu9`wZ zLT~9?&^j(gdS=YuhK6D|d_0Gyc;Z!ISos|QgWz-d)b;1^9n;Ys7Fw^OfGqq96R>$}@c= z*|zDQ0NSN$Z%0}T6`l8ss7 z()SOAIkpUj)y*S^Bue=Wd~F5?GjJM!?s=+Y2Drq30A2R+5A&H)6jIU&y65fKsn@-H z-+-+0=@{>Yls3y10yY@h)BMF?;Df+aM0;@3LREW}%u>QY_%kWfguyT$@D%5TTY+KSA_! zv&rx$L1XvKEdNT*n_m@J3Vh0Z<(G>$Keew1tXai@dB(LdO-%3}y*k7w9D*XrEf;d< zsDDNir^OUVC+7GLPxOoRQCn+=h!mEt*1;UthP;7(z!VC^0-db=(?f6&{O2?@_$0P$9576yY~=wS=kPx37)KZ)V*B`t_2#PXmcFQ$(DA?*-f%k(_JoIiHu zQR(htu&Mklpt}lf_UD`Zp1Emk6a?6BMvP6C97Vfor>Q(YTQaBl{9k5T(%?MvNw-~CnmMQ&E|t&87rsWs^x-x{1O zA8{9xBJzlNhIFHx;KAn9&CW*|7f2a)ctGYHt<9~H9{{#WJAlFacz?wu#Y}VEA4I`+ zC)M6NW~WD6zL>(TzwnT+Yno14t2CI9qn|JLCofwPHM}foTQ$xnxl&EC*I!XcXDW51 z)LpyVd4qS>?l;6GAZ=0e7~mM>cjzeI_XapA;OY5EuYaydC^h~XAXT7rUl%yKc>mzP zzG_awybsv*3>k7)v?7-NS)z%mNbkD?90p#MmEOSeMuR5$sRP2?T9Z(9Gp~VD^&Yx( zeOl6{qd4^!Iyr0XdYsc4$!tY{319@$6}Hj)E&QYH;PAU~T+Bzk><2-PXHdh7G3`E5 zWOz&N`2L9d0{}C~svhun4GRh(ZM;uG(A`vD=+P!Bf`=eOVWF=L{YSzoBa_jNVO2e~ zD4<}jspS%o0rS*MPS)f2fCK6{m-==mejHajX*YoTWVJ$sJIN{X+LbzvtyfFbSx;A$ zdE3p=p{0$03gZbdY}8nD*A!K$?mIx8BD<%bwU4uP|Du&esO55Vrxa4s$5+dW>6-_+ zN)jiS6yxVs1ou-9e>O3n_ohu0P?hetDn~{60d_7Rp}doo-^tBM7wF0L*Z8TeP)%6e zD`2hYe8Rf{JSC zFSSzC)GFX69|EecDdwDcqNIBOEjqs8?x6=s;93~q(_{G}2DLHZYCq@Nw=`dSOKK+c zhBz%9ruu1x5R?bL)xZ&=ELF!E_-Xk2HIfXvh`u9mCI8*sKp3!O48w#*GWdj*^lMCLJqsBQKZO<&rFQgMR2yu4csC*^q*ii8!V6SgPE~!6=cB(52=PRclyP^yd0k_o=|D6?`=T_;sy|{yY@gVEu)SAh2q{ugj zP8^k--!LznJAzON>tTLT{R8I3HSu(Y|tRVGIvKG59ZuL#H@FAo{6CLs?Vc z)%IDGi^ZvChG!R zD-G}WCaF;V{>1E|TO*n?uIAg*`NK-eN|n{!^T(qCSA*qyYYzqwr+WCuM=fb{x5zh4 zxy+YdqAoPiC$ODYTo=K(qm)FJv-!+p1V_gudT$CwR_3fK?RwM9M|5Jn5{8UshUkI} z-iL`Bc?JGe8L-sm_XQs5ZrvDRpH5*hev58B(^lG%ySWibf>MR{@YI+m98y7{CCPr7zrHrIt-3x2XGO~P#Z^7cmE#2%fS1z9TTh=q2$B+>J z+4=}N@u8$_O25icGI%F5|1BS-L48aZ&2xYMHolMwJZ|m+k-N2oib7aaMKXQDuBL|*;Px->B>l+Ewej6*qr%e{IJ|T2hkdbI%vS z1Au9+vr}j;Q~MKw^47ol$DEdV$eKrSM1HpgVO-0*6f%*71{}c=Y#E^R`lH&_EUCz> zvslC$LersSm4Sx$Zk#nrGI2P|-~WV@J)9&vU(!dH%elHJlePkd=_{%#`#v+9;hs*;sQ2jo zuTt8NkkDp{gNN2`flHyOTc6G$I>z3;BO$|1x?Gd=FL9eyPxx1#oOx#$iYA0ojF{p% z89BCN37!H~!+afWXYgnW5-C~F74M^-J(rJ?m68eL4WWs~fHuoBEn6H&{J?7DYi+Rn zx7%3J`)d2q@!;IF?erga`^d^nZ^O)tKb0y)Jqeul0;Wd*+Z1)vKc$~=#AsW*mF1cX zG4M>*g=phZ46$S?hm~*R&=7H6VU3mE$4_;RI{92We)2?$oBdr=c_;B>j2@J^Xz~bl zmYJatB}(%k!_r&2SIfZ+>zJri0@=}WdU=i0Pqv%m)el%i8p>w!wL~#K;!YmnN#gQl zRy#Y0BW0e2{{vXdsy1^>Zua`NJQRgl9y>fd72I(g)k%Cl@YR+`%0Yyd_VZ81Rm12S zL1$mjH`3-#-Ry92h=7=o+~@Q+9HnUnvS}pv?~=Z-7R|xb5pA>j@v!c2y|{|-CD{Cc z_Kc#4VZW?sunv2awj*2mHv{VkJY?$oZ>&m*(Athf%@)Pi$o?-Rv%lrviFV4fa$;vH z+G|wXN%iA}Uv{o15pXRY9G!0HL=Z@c%^Wk92Upyg(N4;%=#*3z=Xn^|+848HhEZPB zD@k&fqIQo?o%npJLUgA+%dl8wW0~AR*xO8Py%7y$s8bdpGe4HKN@yvG+!4mnxjyKsWrxSNgOhC@UEn{5=n3>JJ3yY?M?4o-e+Q1pv#~_9OVTi z{E0EOvDdg0cmXlvxXuue-u6nVTp)Ho(N@RzB?)Wf4|f1!+S||>p+Q_B0H|<2p7!RR zGdw$zly;||MiRb(^;?M@PbJ1tu6h5Y%Q##q0kzssqc@N7uwZfJRK!+%(hV~)P@ z+9qbKm*Z#?kt9?9xUN-|)*wQE3L37T} zp2;s7zxr`?UI4_Ism|I`QV;HwRdyfRuGIi!;y17U`UyO%j@4h(uOlx;sd}nmabQ?S zr(U=wANEM`v9GsZ!7^J(w@wjX>pkr&4ruH3;X;-eyg@jINeYi4`9&S8ifxi=*B`oN zcYEiz&Za)zz-`_7*dffwrtsiJ45?zH|2spa6fyT-mv~94aH6h@Ms{FWTL6+dgxnuao1=3^BBjpw}#-yC-z$5TWmlY^} zEpRJih32C%{*hFvJim0Jur)(=HA`hj7)8BnXe)#STxUO*nVzYF&zV+O;-pN9%8uy> z)d-%J=O>P_K+WGVABT5)HM2D%@UHfweqd3~jadPp+16g+a#4hQS%XeqrMYL|^UeL^ zp?TjAtT5ABGdv12A}73~y?9nrOq$!&9rj6qs+6fVVp5$i_}Uk-FZSv=)Je!U1k?Sn z^;2)8Vjj6%^695s|GA)QTc22D`qvpYu;ZU;g zX^;+r!tR*eDyYPyoP>Ghr;{5R1T|CKMHO|+MA+Kqzk@>e6$7Q$z5Vp5`gKWFUKB1Q z0x9NKCtb0^3ns!0eQ`#-brc^KO3d8dP)rM%5y7oYSz+9C|Mv$l{W7EvUmTJBbh2%f zz>G$4ubMEWbRIDhAWKRWFI2o~?#Yx*oprBAr?Yd;G)J}ukS{U!F6oTBm( zQwueE6|*?7Hs=DHD(qdQqAzEnE&OJ%_cddW-Yeg#M-gn;e1mH4UH1g0xq(?uF;AxO zN+yiy>(9z(l}_)5Y~L1%A`PqdZsHig|yF>0}?^e75==0Wqt`LC5Ud7CJ z<<6AzG^RqcEK2I1Xiw-ol{c_tvUE^qcf>mbk9U)ckTAL%(M397(MZr}8z|pFLjS{B zyQ@#Ymfc?forTIs2n!KU;bDPS_5Z^flDaeIreyTVcbEEXWb{4u2kk-#(KKnS*6T_QZlCdJ*2B()BH zHqgx%C2zm9E++f9IMHRw*bOL>BbKt7n|Oa57V{h+9vIYpb5C_wiV@e%2>y*`vfOx^ z&0vU@z?C-uf?fKZP4Me9cG;ypZAwS~E3<*Da?4l9lXNi)bprL+I1SgmVmUEY%264P zl>vVlYL2(9Q-VEZuCn-&5p1RTByaBg$~D8frkt;wcUee6KxtxSOrBWNNNwid^7~+G zKh!OMV{Zy{P(1Bz>#NRQD#*sSDydf$unD)Qr%|DOnFZc!j6pHY5Z?s7@fHbkqsZ^E zEvAj&yJVhn?kL^@7@2IT>2vQTh!2sADd_Z>zx{Ru8LIs94FO4sV^H5cdPRNv>)?yt z8~*bFJ5R2GqM~F$b$RvVe=ckIpqM!1CQ>xtUgQm7u!$1=NF1k!+;BxNyoRAU2J)uk zV^Ck7G~;l)*u^F8!OY)-fK!^8rRLW@qzRK?tKFH5ID+#x)@8NDHmYS@*kD8UDv5S#jVXGgwx3M4VtK$YNDw+{Ry=B73vP{L$9)cbJW4u>a^Rb*fRZwqN}){k;mo!stEj zEvjSr5nzLS$CL!oPmaHB^VENhhbb!yD{eRzlPxLWWh!QhVJ% z7AJnX{|mtKtGB~1$1i(QMT2eJ9i;?e?rOAeEuyjvdDN1D=$%M z$-7_G3%4;Nd~vqIAtzoQA8eodq+Wl}FcoW;l=}}Wfuu#=Xuhl=2;LZU!#od-M`M1e z)9*dxDE~%x9Q=_y`a`0|JmZE61Kyuo8-7|A$usG@HC(SyIDJmd6UHv5s~JA-(a-c2 z6<~?#kCdN#KyF)6;Ya{`Z1~4#wI#RVF_l{V?0AUEQ?=ST_|pAdK|+FZtpQiJs*yoo zFAj=poq42k&2IGdQNz3_<7diIZ;!_Y?dH-cy&V}4p{2-Lv+*N4dI8bp6iekh3b&K| zd3X4qrQ%#Dz*ofj(j!Y`WN_j@RQDPXY3iEvb(=fDG4_XCipRb!w zt9`g~)S3y>O#b<84g=6JjQqV&pC)6;#C_k<_YWHzG5=wCwPRLQwIr~@ntMk!zLm%< z^IlrsoE@4TzYY2-H8+Pvh}lBABMym^AZ$g$9UE{yx)76odc)_WFo243MUMrj zuv*>YwSGqK^U!`wKoW)v8xmF`Ee&nZLIGa_;805}8M03ldO9gN4(i=YIT-!JWn_7v zKZY5jO}5T^Jr}*bcHq+fpPb%rN-6MCJbD`2--?0`{y#3f$wLK$WIRDIuaS-0$U`}Y z!U_Nr06&-R!*;ogT_+yA@CxQuV@q5ERiFtgC&?CTY$$>_tQbhO-# z)A_~r9gB#*&0ZiceH;6{VtCX2LTeWB)^PJL65L13Pbxx!v2^({6-cg&4i_(097%!gqUAgiC*Nfv&c8XJL>)@pSgpH@At{5q=R+iGr%%?eAQ;`d;m@kjZ9iprf zv^!?onX=}IvQ`henn+J+HV$z617G3A5BBNL2NGi=@$@~Dd==Ntzf62K%o5aMX{X8; z-Tq6uKYzN%aCYP8d}FG(;+sr^^1a@}YkJ!uVytn#Uw23UT!D77F|xw3_sfNVu;J?$ z@&buTFP^aG%%UL^9>U^^&bNfxwz**pRbvhxU8>LUv2g#@CNlqlAM3^r5IdH;TIvRi zrnMGoA%IMkr{j-m?Aw4Tp=n7q+rauA@NZBWYCA5KOAf!tg@x}WI!UT|hm21MG56w^ z*4iCtl+}vXeXJfU0hlIaPeO-$%F1^awV0{#NU+3l7MW);aFcd~fh$hV=b0OA;OrT+ zE$5`!*V3BK7rSK#X4`o(cK`6;BJEU&kQxOxVlPYIT{S-Ut9yS0|=TF z^w_IYMr7jt)RpJ`uKjYyKP}Jt2UhPd0=$3S%xbr=o#GQ5*UBp93ekF!{ zyYVmVa4W+UWy1F3HfMJsOPa6{$R8H0zI-Q%o3*aWl8ksLIAL0&9qR_Q0@2*8+g>@B z)M7sk`rZT!Dc6Fuh!NCzM{2X=$4In^7`MSg#J@blQp+7N>28IRl>mS4O)3|i9Lo~3 zSAPMoqV3k@zfqyxTd#VSOGLCxcBS%OJ-vEaBlB5v_nrCY0T>bQ6(T%VmOdpHc2PZ|Ec2!2hHW z@8|)iV7Jb}B3G2CZzJ{W6LHf5bRkyF+ieU}|10WG^5!|+dM>D^JY_yEJ04VqMm)!thm07$^^_oY-W1z2K7;7St_m)v4}?P3IDQI zF5^j5Gb?;#pQv?cmw8Wu-`_ib_qDXtURE<`^7j%%r#|s$5u!>|q|S%-$7;i32Bwid zEWQ1?cO=!A+Q$6OCwwp5|9bCXv5k(F4$J8;k5dd7)cUip-g(Y{o{_h%UySg|Sy|4( zzF2GW6{&26xK3@}eeP^U$v?{|c;7Hdqi9ecu7)<`T{p4|=2zlPd{O=wuxZZNz=#@0Bf8Tg?&*J6!ptIGTbsqjn zdTr|4wS>hUm0diY!KMy{c@(6xCFBTvV4euD`<3C!6 z*Gv#x8h-+jJ6|^gzF$<%cfFcdM+{W-DN0QV>tQ`G@G8>=K(&xCezE$a?4>LHx+8dL zZJf^sX5qjZdRhyq!T(7Le|&!zkfUG6_)Y(^XkITm$hY>!cbbwCzG0K}dX%%|oKlW- zA)^+l&%Cr1Q3kU(>Hw+2ITB>(3N1IDsaijG+rL+%#(I{Wa_LcU@6*x21EkHtr`?*K&XLouA@AtRfYgQp6PZ3P*!zST`eoEVm4t*h1^ZPVfta z?XI1t+%`9tZ%o1SCs2}Fo-{<|MYR_{)iM((CZ$W`Z_G$J`CHx)z_B4p0!tsUaOiuklpRg?jq-+sIh051D}fD$bEHd{ zVGoh0ecrfk`MDHfqh}ssZTL|kl=%UcD!31IOb?pfm0CcmiuNIF4+v??ObX*0nHMAvx^Wgons)^QszFJ_?j{^-$}oKA zP=8&hza@Yq+l+pWca!n9mA6ZQnNyS5&4#mF>B~;vJXyo@j@E39%P-&( z^12#x*P9oGyc#!f!OjH+r-Gsm_P3pOywgO+8u}5ChzGfA6w}sADoVc*bQhZHW9raJ zr4};acX)Lt*RC=ws%#g|6Kqk+SxDJG$aL147x;G=ExRW)ry43dFFnGT5A~@ajN*$RwnnV9ITavmz zr^hh;iR+2orM$YFpTy^R1b*(Ju90b6#FF#!!9Q(+{pBrM2hTS9N?`mR|a|W~%&sHEbf} zPYw9Osk-;OA?%BeiXXmrj5T_=xn0M*%#%oc{1W9Q zK`D_VCS0v2s3A10mPDjB=~3`BNys#`o+-~a>Blj`d1Fz&qt$>>UN0vNl2VfU%_^*> zkXP$=`3H3-y_M&hHlOm}>)sX}h?7qvwnhLYvcnfqiu!i_W5hCs1McD=yzTwcNpAce+2j&ZJ)L_Mig(CYO zAl>Ret4<$row{04!dq^Ip|mT*UKYf-2kF^AY}6RGq&`#o}YJ4%r` z+JXE4x@aG%)z2sXrby^t3)nmgXuNC<*K2^kS%gwTiC}j+4?K-$JwV;7Go0-$ep^D zPI7H=oQRO{s$b`T=*F1l-+)RapMp_UN0PH@ z+-2$@>#nH!6RBaWlk>d6zZ!H&=5rS}&C?9Nry2{o?>`CIvX#8E@*=$9^tb)&ytP$- zun_HB8kf9~v(V*Ebv8gk)A(U!->xdSw)S!k#~iBP>_Q$pP9{6O=j*tOr|-4RfNO{l z{5n2Aq%6kunX!Fv;c0JoI^x%kGM-Z(DVs9TZVSinm0mA-1ez};TbNf~R@S8b4=a0( zB8L9kMLJIspLUPfvTwr6Ikj8sqzo(K1jP4Zm%gyKb@uEjy?0Z+qFA=iz5cxNfq!1Q`Z0x) z`qrAN!g0>LU;I#0=mt7FRn5Erj$qWF{3*TGu0ZVPQkS0wq;45W*al8)nc_L=-!(s z>$jA0!@G>!Pa!L}K3;V)yYr3GYsr0l;(w)W-Wk1D-3dC{U3f+nLpOla+OZMZ3)cE- zML^P}a`ZQZyTv*Y_xRq&pj*f6bGbtfhlrDvO3*gW;`&UivIdCwXNJH^jpqUg`V#;u{O=ON8`GHaTjV zqQ){R%!{1;m2cKo?RCRzRYHeoN}q1N{kY>n<;hJRS5Q7OCio^b%(Gl6hc;1n_|?yY z3q$!U6uk1=K{X%zC>X{MQ7b4cF3dHsRmwEQi{*r}Q|f+8U|#a@Mw@Pq!c1*pB>9G} z@26$1ysJDa1{HoO{A%c^cxZ}>kO2{&o^E_RI?9w9fM}Ov_rL#By=d##BsweRDW*=f z=biaS)V90X)S&z3MNJvDBq)vKGMUMqifjjwlnW82CRH@%;2`>4_;->DP*@1gq_%!4 zBUWq@=QV0S?S444zxx%y*1{~TKczA=v0olkN)GB&DCvFf$h`(}jsm*B8IAR^2TIWa z7kymcrJP&%R|*_gi-*Lt*6LycHp^}C-n4?_&rqkKTAE$+Fv#1G9;@+zyBw`3lWdO& zN4wJ4P;sU7*MDUBMeVK<-qh_L1^6GbO6e1x9p&65#VD&obmm{Z+?=mc<(ndQ!8bE= z4s~?2vXAR~)l*wi3$5+GVOIn-d9cP0COAA;bQ2n#oGlCQ{B+eU9eKY&x)!2pz&G~X zWRzD_>?sz9vW;8q!J76O{lSCfMCs4e2TOL~el=Ufnz!ay$NjHp>7w*E?04y^*k^m* zqsl)OAMnmK+TgM7H+>CoVsym+ldehJZ;rxZ5xF5pjcd*?!WxMoX>ls$Y~@c(jh`v+ zNIFILsf~Sl3{sw3`(aCUWX#wk<>NE%1*&jzTFfouczkutARg##k5~7ebebG`e*Hc_ z6Ilp( zx++g(=RV|t*XA?5?<`&Qr4+&&b~;X#VKYqaRt%_@WE6u zDK6p4O|Q=r2I`#(91COkYLar(&**-%Wpa5uN@>M!zrS0iuU`zBb)Iv$w%IF{3${`1 zx*!|AczJ8bsULD&E?Ck{NG<>69~nvY|{FB)ZDIp8snqmfT>P9+DV|*P)|R)xq=5abAq;)(!#aj z=f)A%CgrWa$78*!k4h?F?~JKZf+=Ec(Cv6oOHX~l+_GlwGUx`$Y)z$p-<-?89F_O| z>H7G*?~i%na?B`+T*My?rLP%4nTZPkb@AxP@oO>V*{q#Vld;C$3)qc|uq-2}K3OH^ z;b-*&SbI_8TGiJ6#>b9Reoh>*npF{2k!x}s8<|@C$|>`8iK;~=SR;myBM{8@qzwUB<|XlMM=g_kyHQ zZ3PIg&Q9qloliaYi06oZT3I|vZr9d4f)yX|xatEbq`n-c(P)GI+41qm|0uc&wx-@T zPKpvD2na}r(j9_~6e(#&cM3>45QZ>90jUv^O2=Tt=oD#2N{x_CVU)Dw{_lCe!OnA? z^X$HVDOpmIF7~wnKR-^fx@};W%}>_L&cVIq;ub=*iwibk2^Jr2l=}FWhAgccqe7@^ z!Y%n~Ld^oC2JasjFW%(B6Wp{xHSIiI+bz~R#%8$%SM!nAI2_kAC_e3Ge^Qb`V$b5p zCsV^}c*%m{PdnLZwPIU6iyhH)?jNd;OrwdZ}-AbB!0H-duy`-k$wBEup{Fc4tw3b+Q$?OJE7%i(zKcx zvBxp!o7PZ6tQN5E1I?H9#_#PuX@RRd(i6eLqZCr1NO;Oi<8;(dhmYyMCDhOAhv(ZO zybbvHdaK6|;Ve5vuj2nYO_*%pg$Rzdf8Ll3_~OBpwQ-Bc`-u?L1_@XTcnDJXF_qdQ z5g$&pDQ{}r3R5eu=(vL1G|!qzA#3Tg=GQewcx%C zwkCnuK2=Yh)|r>u&BGbQrvhtZ2y1ER3*}s>Nm8=J0@*WhyF@7pD1?&U+=X@ zao%|aVf7K|`i#6_CS(C|usnz@N&y2OyZsDvEw+sUS|4TAJ?Yoe$t)zIRF%;$jPxBi zh%pTH3t^r>(?;4V_!wZ=`Cm^XP>86Li!Am3@X~}&4moc(Zq;@#Q$I%)*`4(vf!3a; z*=5$#39=Ds)s7WFOEcZS>$Y`t5A*emb(NW6nySL-Pm)ool5o-iOZ2QkVox{>Rju6o zMW+hBJ}XiXF>diQ=pmet!hWJbZZewtQ5l{0b?U2AUODfOh+9yy<#Ig4=G^=04A$r| z1$tmJPg!~eQTyQamZ<_v^?k9-m{iG-=>3~?7qCmfx}ZDRx5uyx`Ef2`$O8u;)$?S> z$Gsk3#J>4P^gldiENF7&naghbw$RcNxOPjb;Z^n2n9*1XRGk|!nS77m_ff7M5IcBK zl(0Jr52rl6f*Kp3mpH0$t>4;`5eW`WzyNQVE2W#hgHV#8j%6 zPVII6o;+bbR0;UE_u5kSHAR z+uf)-&*$uwElKVN8f93% zU?ryyudI0J{J(}gJ)*e#Ze~`b-}FV<2aV$|F8G~F*P(Fky{DCXska63>yUHhX6*Q5 z>S0<;azybeg}d@hz5{RqG(6DaPYiHZR#>*kgM+3$4ve4*w^z83Pq~}#juUGC@<>J> z%-#5?4BFE2`R~V&e+SU`zK%H{Pe74bQQjd>XjpwN6329k#neHv+(?`HscK)vxzYB{@sL>`!&WjDn<^C4h8&U-t@3U^2 zdEg3;Y@Q1>nH@cQ?_L`Qj!c^DAs~w z&o&l{Tu%^2&i%5VTpl|VK+J1#3c1l-Z-Rmu@d1w-Sz+Q zrdA5`yAa0A&IyEe2!lHAF#X|cR39L}3vR^f)}aiGtRVV^UY6u2m~>hu4Yt}e%di_> zJhK7*yN^5(&4QIjX&x-9u?gZT&QHp5?xytqW2dfH5nre(^qWQoPpT@t>ByJY3kF2J zb|mYla3tUEf>YmZ-@^3HZI0llkQXgq<$uFh0lUr~6jxIIUPYUezbuPUD%0VQ=`C`i zVc?oVZUImlMX_vA47eA=rh9JhlmV;AAN>o6ulGF(O})Je2}MHAC|{B@0Wa9G94xB( z#~f$jK#hbSF8xyW@s84Dj~THidBnMT4qtR?XGq#IHSGJZztIx9??_RxzDOPn$_jDI}~N41L2$cFr?U`)oq%9)*M z6#SZ+>hDR}foq#2MO6Gxg8K;yq!bZ*L3f~Juda|JBOi>yMo*!3p>*?_?up+?OV9dC zVPg28Kg>$s87r-Z795V;zmDIE(0Fr0uGHr6^1WmVg!I@T_)MPRS$o=M3!WwYJNSDC zYAZa=tXZPnlQBHkEEjsL^&NB3IH=;&Je<7 z=!VZyx|+tlnZvs>rMJJP_vIkUa$z?NT*;=kmD;orpt;Wzd~ZwRVr!}PASk(qLi-9Z6#ExGyq8*@nN?2VCM1tDMk+r0fmg-}pO=;KnRqpn^ohIo z700*5#z=Ad^ocP#j|^e}09&ZOy-QIzo8 R*xc+;l40n2$#Rna098!y_ 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 z�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≠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

|@6C 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

>qRyzF;0c^a;P&j_tqkY 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

6S#I+q^1=sapsKy7C|!6mV0 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

RD$F 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

    GQx|8=y1#i_4QQ=O#$$va+rkF$;bS7kbwy z5W}wz%8L>3$cQlgN70gxUA%vZ6$_uJWqJmWbMxeU^zU}(p(=7cWmtTm{=#bK5y>Kq z?X=YSxYpidV(tfJ-t?#m#SVfP#M#!ac+RzK9FG^#3e z?~&EuYseSE^f+DMq4L_kM3qgMWDWM4s2&Gv?b)>NiRvGPZ`E)yv9kk7x^d}>L3alE z&k%l7TCvX^At!~z6a2?P(^3P?HP2D+w~E$)m}#^$yJNU&+L_9clg(sa)#z{BYiqhb zj!ZeJ+5S--Ec-w-ak=FZ7P=S6iGXFq4gmK+v}rBS?2x4E{t#s7`zX7eK}o2d(&cO_>F=35jLZxOOW`~<6US

    hcnHm*2UCS7?u~bJ7E6nfuzfe|9+e>=# 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

      (GU0CtEpc3ynC?NMi= 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

      fG1jK5qj{Yx!5jk6}jl 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 PJ)6UVMP8o3-yi=2#w-!h diff --git a/docs/docs/bond-reset.md b/docs/docs/bond-reset.md deleted file mode 100644 index a16b94d4..00000000 --- a/docs/docs/bond-reset.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: bond-reset -title: Reset BLE Connections (DEPRECATED) -sidebar_label: BLE Reset (DEPRECATED) ---- - -Known as a 'bond reset', each keyboard has a special key combination independent of the user defined key map which will -clear all wireless connection configurations. The keys must be held for 3 to 5 seconds after the device is -reset. - -:::warning -Currently, ZMK only supports a single BLE host. If you remove the keyboard from the host's bluetooth devices -list, you will need to clear the bonds. -::: - -## Split Keyboards - -Split keyboards will need to be cleared on both halves. For best results try to reset them at the same time. - -### Kyria - -![Kyria bond-reset combo](assets/bond-clearing/kyria.jpg) - -### Corne - -![Corne bond-reset combo](assets/bond-clearing/corne.jpg) - -### Lily58 - -![Lily58 bond-reset combo](assets/bond-clearing/lily58.jpg) diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index 990a8f6d..cdc82cab 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -194,7 +194,7 @@ storage device. Once the flash is complete, the controller should automatically ## Wirelessly Connecting Your Keyboard -Connecting your keyboard wirelessly is the same as adding other Bluetooth devides: press the reset button and scan for devices. However, pairing and bonding is still currently being worked on to increase relability and ease of use. In addition, users have in general reported that Bluetooth pairing with computers tends to be quite finnicky. Try out the connection with your tablet or phone first, as those devices seem to work much more consistently. See [BLE Reset](./bond-reset.md) for help on resetting your MCUs if you're experiencing connection issues. +Connecting your keyboard wirelessly is the same as adding other Bluetooth devides: press the reset button and scan for devices. However, pairing and bonding is still currently being worked on to increase relability and ease of use. In addition, users have in general reported that Bluetooth pairing with computers tends to be quite finnicky. Try out the connection with your tablet or phone first, as those devices seem to work much more consistently. ### Connecting Split Keyboard Halves From c21897856ba50b79bb7ba5cfcfe0ad7756a20c60 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Fri, 6 Nov 2020 20:28:44 +0000 Subject: [PATCH 346/353] refactor(app): Replace `HID_EXT_USAGE` with `HID_USAGE` Simplifies terminology and improves readability. --- app/include/dt-bindings/zmk/hid_usage_pages.h | 6 +- app/include/dt-bindings/zmk/keys.h | 755 +++++++++--------- .../zmk/events/keycode-state-changed.h | 4 +- 3 files changed, 376 insertions(+), 389 deletions(-) diff --git a/app/include/dt-bindings/zmk/hid_usage_pages.h b/app/include/dt-bindings/zmk/hid_usage_pages.h index 5b3cb556..f38f4fd3 100644 --- a/app/include/dt-bindings/zmk/hid_usage_pages.h +++ b/app/include/dt-bindings/zmk/hid_usage_pages.h @@ -10,9 +10,9 @@ #pragma once -#define HID_EXT_USAGE(page, id) ((page << 16) | id) -#define HID_EXT_USAGE_ID(ext) (ext & 0xFFFF) -#define HID_EXT_USAGE_PAGE(ext) (ext >> 16) +#define HID_USAGE(page, id) ((page << 16) | id) +#define HID_USAGE_ID(usage) (usage & 0xFFFF) +#define HID_USAGE_PAGE(usage) (usage >> 16) /* WARNING: DEPRECATED from dt-bindings/zmk/keys.h */ #define USAGE_KEYPAD (0x07) // WARNING: DEPRECATED (DO NOT USE) diff --git a/app/include/dt-bindings/zmk/keys.h b/app/include/dt-bindings/zmk/keys.h index 1bb43b91..8d0873c4 100644 --- a/app/include/dt-bindings/zmk/keys.h +++ b/app/include/dt-bindings/zmk/keys.h @@ -10,776 +10,773 @@ #include /* System Power Down */ -#define SYSTEM_POWER (HID_EXT_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_POWER_DOWN)) +#define SYSTEM_POWER (HID_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_POWER_DOWN)) #define SYS_PWR (SYSTEM_POWER) /* System Sleep */ -#define SYSTEM_SLEEP (HID_EXT_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_SLEEP)) +#define SYSTEM_SLEEP (HID_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_SLEEP)) #define SYS_SLEEP (SYSTEM_SLEEP) /* System Wake Up */ -#define SYSTEM_WAKE_UP (HID_EXT_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_WAKE_UP)) +#define SYSTEM_WAKE_UP (HID_USAGE(HID_USAGE_GD, HID_USAGE_GD_SYSTEM_WAKE_UP)) #define SYS_WAKE (SYSTEM_WAKE_UP) /* Keyboard a and A */ -#define A (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_A)) +#define A (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_A)) /* Keyboard b and B */ -#define B (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_B)) +#define B (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_B)) /* Keyboard c and C */ -#define C (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_C)) +#define C (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_C)) /* Keyboard d and D */ -#define D (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_D)) +#define D (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_D)) /* Keyboard e and E */ -#define E (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_E)) +#define E (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_E)) /* Keyboard f and F */ -#define F (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F)) +#define F (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F)) /* Keyboard g and G */ -#define G (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_G)) +#define G (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_G)) /* Keyboard h and H */ -#define H (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_H)) +#define H (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_H)) /* Keyboard i and I */ -#define I (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_I)) +#define I (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_I)) /* Keyboard j and J */ -#define J (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_J)) +#define J (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_J)) /* Keyboard k and K */ -#define K (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_K)) +#define K (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_K)) /* Keyboard l and L */ -#define L (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_L)) +#define L (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_L)) /* Keyboard m and M */ -#define M (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_M)) +#define M (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_M)) /* Keyboard n and N */ -#define N (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_N)) +#define N (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_N)) /* Keyboard o and O */ -#define O (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_O)) +#define O (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_O)) /* Keyboard p and P */ -#define P (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_P)) +#define P (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_P)) /* Keyboard q and Q */ -#define Q (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Q)) +#define Q (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Q)) /* Keyboard r and R */ -#define R (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_R)) +#define R (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_R)) /* Keyboard s and S */ -#define S (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_S)) +#define S (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_S)) /* Keyboard t and T */ -#define T (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_T)) +#define T (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_T)) /* Keyboard u and U */ -#define U (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_U)) +#define U (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_U)) /* Keyboard v and V */ -#define V (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_V)) +#define V (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_V)) /* Keyboard w and W */ -#define W (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_W)) +#define W (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_W)) /* Keyboard x and X */ -#define X (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_X)) +#define X (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_X)) /* Keyboard y and Y */ -#define Y (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Y)) +#define Y (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Y)) /* Keyboard z and Z */ -#define Z (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Z)) +#define Z (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_Z)) /* Keyboard 1 and ! (Exclamation) */ -#define NUMBER_1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION)) +#define NUMBER_1 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION)) #define N1 (NUMBER_1) #define NUM_1 (NUMBER_1) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ! (Exclamation) */ -#define EXCLAMATION (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION))) +#define EXCLAMATION (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_1_AND_EXCLAMATION))) #define EXCL (EXCLAMATION) #define BANG (EXCLAMATION) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 2 and @ (At sign) */ -#define NUMBER_2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_2_AND_AT)) +#define NUMBER_2 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_2_AND_AT)) #define N2 (NUMBER_2) #define NUM_2 (NUMBER_2) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard @ (At sign) */ -#define AT_SIGN (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_2_AND_AT))) +#define AT_SIGN (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_2_AND_AT))) #define AT (AT_SIGN) #define ATSN (AT_SIGN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 3 and # (Hash/Number) */ -#define NUMBER_3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_3_AND_HASH)) +#define NUMBER_3 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_3_AND_HASH)) #define N3 (NUMBER_3) #define NUM_3 (NUMBER_3) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard # (Hash/Number) */ -#define HASH (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_3_AND_HASH))) +#define HASH (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_3_AND_HASH))) #define POUND (HASH) /* Keyboard 4 and $ (Dollar) */ -#define NUMBER_4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR)) +#define NUMBER_4 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR)) #define N4 (NUMBER_4) #define NUM_4 (NUMBER_4) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard $ (Dollar) */ -#define DOLLAR (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR))) +#define DOLLAR (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_4_AND_DOLLAR))) #define DLLR (DOLLAR) /* Keyboard 5 and % (Percent) */ -#define NUMBER_5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT)) +#define NUMBER_5 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT)) #define N5 (NUMBER_5) #define NUM_5 (NUMBER_5) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard % (Percent) */ -#define PERCENT (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT))) +#define PERCENT (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_5_AND_PERCENT))) #define PRCNT (PERCENT) #define PRCT (PERCENT) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 6 and ^ (Caret) */ -#define NUMBER_6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_6_AND_CARET)) +#define NUMBER_6 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_6_AND_CARET)) #define N6 (NUMBER_6) #define NUM_6 (NUMBER_6) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ^ (Caret) */ -#define CARET (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_6_AND_CARET))) +#define CARET (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_6_AND_CARET))) #define CRRT (CARET) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 7 and & (Ampersand) */ -#define NUMBER_7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND)) +#define NUMBER_7 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND)) #define N7 (NUMBER_7) #define NUM_7 (NUMBER_7) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard & (Ampersand) */ -#define AMPERSAND (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND))) +#define AMPERSAND (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_7_AND_AMPERSAND))) #define AMPS (AMPERSAND) /* Keyboard 8 and * (Asterisk) */ -#define NUMBER_8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK)) +#define NUMBER_8 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK)) #define N8 (NUMBER_8) #define NUM_8 (NUMBER_8) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard * (Asterisk) */ -#define ASTERISK (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK))) +#define ASTERISK (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_8_AND_ASTERISK))) #define ASTRK (ASTERISK) #define STAR (ASTERISK) /* Keyboard 9 and ( (Left Parenthesis) */ -#define NUMBER_9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS)) +#define NUMBER_9 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS)) #define N9 (NUMBER_9) #define NUM_9 (NUMBER_9) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ( (Left Parenthesis) */ #define LEFT_PARENTHESIS \ - (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS))) + (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_9_AND_LEFT_PARENTHESIS))) #define LPAR (LEFT_PARENTHESIS) #define LPRN (LEFT_PARENTHESIS) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard 0 and ) (Right Parenthesis) */ -#define NUMBER_0 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS)) +#define NUMBER_0 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS)) #define N0 (NUMBER_0) #define NUM_0 (NUMBER_0) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ) (Right Parenthesis) */ #define RIGHT_PARENTHESIS \ - (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS))) + (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_0_AND_RIGHT_PARENTHESIS))) #define RPAR (RIGHT_PARENTHESIS) #define RPRN (RIGHT_PARENTHESIS) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Return (Enter) */ -#define RETURN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RETURN_ENTER)) +#define RETURN (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RETURN_ENTER)) #define ENTER (RETURN) #define RET (RETURN) /* Keyboard Escape */ -#define ESCAPE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_ESCAPE)) +#define ESCAPE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_ESCAPE)) #define ESC (ESCAPE) /* Keyboard Backspace */ -#define BACKSPACE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DELETE_BACKSPACE)) +#define BACKSPACE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DELETE_BACKSPACE)) #define BSPC (BACKSPACE) #define BKSP (BACKSPACE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Tab */ -#define TAB (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_TAB)) +#define TAB (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_TAB)) /* Keyboard Space */ -#define SPACE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SPACEBAR)) +#define SPACE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SPACEBAR)) #define SPC (SPACE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard - and _ (Minus and Underscore) */ -#define MINUS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE)) +#define MINUS (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE)) /* Keyboard _ (Underscore) */ -#define UNDERSCORE (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE))) +#define UNDERSCORE (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MINUS_AND_UNDERSCORE))) #define UNDER (UNDERSCORE) /* Keyboard = and + (Equal and Plus) */ -#define EQUAL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS)) +#define EQUAL (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS)) #define EQL (EQUAL) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard + (Plus) */ -#define PLUS (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS))) +#define PLUS (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EQUAL_AND_PLUS))) /* Keyboard [ and { (Left Bracket and Left Brace) */ -#define LEFT_BRACKET \ - (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE)) +#define LEFT_BRACKET (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE)) #define LBKT (LEFT_BRACKET) /* Keyboard { (Left Brace) */ #define LEFT_BRACE \ - (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE))) + (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_BRACKET_AND_LEFT_BRACE))) #define LBRC (LEFT_BRACE) #define LCUR (LEFT_BRACE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ] and } (Right Bracket and Right Brace) */ #define RIGHT_BRACKET \ - (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE)) + (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE)) #define RBKT (RIGHT_BRACKET) /* Keyboard } (Right Brace) */ #define RIGHT_BRACE \ - (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE))) + (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_BRACKET_AND_RIGHT_BRACE))) #define RBRC (RIGHT_BRACE) #define RCUR (RIGHT_BRACE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard \ and | (Backslash and Pipe) */ -#define BACKSLASH (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE)) +#define BACKSLASH (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE)) #define BSLH (BACKSLASH) /* Keyboard | (Pipe) */ -#define PIPE (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE))) +#define PIPE (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_BACKSLASH_AND_PIPE))) /* Keyboard Non-US # and ~ (Non-US Hash/Number and Tilde) */ -#define NON_US_HASH (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE)) +#define NON_US_HASH (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE)) /* Keyboard ~ (Tilde) */ -#define TILDE2 (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE))) +#define TILDE2 (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_HASH_AND_TILDE))) /* Keyboard ; and : (Semicolon and Colon) */ -#define SEMICOLON (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON)) +#define SEMICOLON (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON)) #define SEMI (SEMICOLON) #define SCLN (SEMICOLON) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard : (Colon) */ -#define COLON (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON))) +#define COLON (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEMICOLON_AND_COLON))) #define COLN (COLON) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ' and " (Apostrophe and Quote) */ -#define SINGLE_QUOTE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE)) +#define SINGLE_QUOTE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE)) #define SQT (SINGLE_QUOTE) #define APOSTROPHE (SINGLE_QUOTE) #define APOS (SINGLE_QUOTE) #define QUOT (SINGLE_QUOTE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard " (Quote) */ -#define DOUBLE_QUOTES \ - (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE))) +#define DOUBLE_QUOTES (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APOSTROPHE_AND_QUOTE))) #define DQT (DOUBLE_QUOTES) /* Keyboard ` and ~ (Grave Accent and Tilde) */ -#define GRAVE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE)) +#define GRAVE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE)) #define GRAV (GRAVE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard ~ (Tilde) */ -#define TILDE (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE))) +#define TILDE (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_GRAVE_ACCENT_AND_TILDE))) #define TILD (TILDE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard , and < (Comma and Less Than) */ -#define COMMA (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN)) +#define COMMA (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN)) #define CMMA (COMMA) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard < (Less Than) */ -#define LESS_THAN (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN))) +#define LESS_THAN (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COMMA_AND_LESS_THAN))) #define LT (LESS_THAN) #define LABT (LESS_THAN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard . and > (Period and Greater Than) */ -#define PERIOD (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN)) +#define PERIOD (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN)) #define DOT (PERIOD) /* Keyboard > (Greater Than) */ -#define GREATER_THAN \ - (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN))) +#define GREATER_THAN (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PERIOD_AND_GREATER_THAN))) #define GT (GREATER_THAN) #define RABT (GREATER_THAN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard / and ? (Forward Slash and Question) */ -#define SLASH (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK)) +#define SLASH (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK)) #define FSLH (SLASH) /* Keyboard ? (Question) */ -#define QUESTION (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK))) +#define QUESTION (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SLASH_AND_QUESTION_MARK))) #define QMARK (QUESTION) /* Keyboard Caps Lock */ -#define CAPSLOCK (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CAPS_LOCK)) +#define CAPSLOCK (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CAPS_LOCK)) #define CAPS (CAPSLOCK) #define CLCK (CAPSLOCK) /* Keyboard F1 */ -#define F1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F1)) +#define F1 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F1)) /* Keyboard F2 */ -#define F2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F2)) +#define F2 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F2)) /* Keyboard F3 */ -#define F3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F3)) +#define F3 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F3)) /* Keyboard F4 */ -#define F4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F4)) +#define F4 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F4)) /* Keyboard F5 */ -#define F5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F5)) +#define F5 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F5)) /* Keyboard F6 */ -#define F6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F6)) +#define F6 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F6)) /* Keyboard F7 */ -#define F7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F7)) +#define F7 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F7)) /* Keyboard F8 */ -#define F8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F8)) +#define F8 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F8)) /* Keyboard F9 */ -#define F9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F9)) +#define F9 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F9)) /* Keyboard F10 */ -#define F10 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F10)) +#define F10 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F10)) /* Keyboard F11 */ -#define F11 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F11)) +#define F11 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F11)) /* Keyboard F12 */ -#define F12 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F12)) +#define F12 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F12)) /* Keyboard Print Screen */ -#define PRINTSCREEN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PRINTSCREEN)) +#define PRINTSCREEN (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PRINTSCREEN)) #define PSCRN (PRINTSCREEN) #define PRSC (PRINTSCREEN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Scroll Lock */ -#define SCROLLLOCK (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SCROLL_LOCK)) +#define SCROLLLOCK (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SCROLL_LOCK)) #define SLCK (SCROLLLOCK) #define SCLK (SCROLLLOCK) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Pause/Break */ -#define PAUSE_BREAK (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAUSE)) +#define PAUSE_BREAK (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAUSE)) #define PAUS (PAUSE_BREAK) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Insert */ -#define INSERT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INSERT)) +#define INSERT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INSERT)) #define INS (INSERT) /* Keyboard Home */ -#define HOME (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_HOME)) +#define HOME (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_HOME)) /* Keyboard Page Up */ -#define PAGE_UP (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAGEUP)) +#define PAGE_UP (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAGEUP)) #define PG_UP (PAGE_UP) #define PGUP (PAGE_UP) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Delete */ -#define DELETE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DELETE_FORWARD)) +#define DELETE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DELETE_FORWARD)) #define DEL (DELETE) /* Keyboard End */ -#define END (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_END)) +#define END (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_END)) /* Keyboard Page Down */ -#define PAGE_DOWN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAGEDOWN)) +#define PAGE_DOWN (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PAGEDOWN)) #define PG_DN (PAGE_DOWN) #define PGDN (PAGE_DOWN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Right Arrow */ -#define RIGHT_ARROW (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTARROW)) +#define RIGHT_ARROW (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTARROW)) #define RIGHT (RIGHT_ARROW) #define RARW (RIGHT_ARROW) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Left Arrow */ -#define LEFT_ARROW (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTARROW)) +#define LEFT_ARROW (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTARROW)) #define LEFT (LEFT_ARROW) #define LARW (LEFT_ARROW) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Down Arrow */ -#define DOWN_ARROW (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DOWNARROW)) +#define DOWN_ARROW (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_DOWNARROW)) #define DOWN (DOWN_ARROW) #define DARW (DOWN_ARROW) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Up Arrow */ -#define UP_ARROW (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_UPARROW)) +#define UP_ARROW (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_UPARROW)) #define UP (UP_ARROW) #define UARW (UP_ARROW) // WARNING: DEPRECATED (DO NOT USE) /* Keypad Numlock and Clear */ -#define KP_NUMLOCK (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR)) +#define KP_NUMLOCK (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR)) #define KP_NUM (KP_NUMLOCK) #define KP_NLCK (KP_NUMLOCK) /* Keypad Clear */ -#define CLEAR2 (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR))) +#define CLEAR2 (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_NUM_LOCK_AND_CLEAR))) /* Keypad / (Slash/Divide) */ -#define KP_DIVIDE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_SLASH)) +#define KP_DIVIDE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_SLASH)) #define KP_SLASH (KP_DIVIDE) #define KDIV (KP_DIVIDE) // WARNING: DEPRECATED (DO NOT USE) /* Keypad * (Multiply) */ -#define KP_MULTIPLY (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_ASTERISK)) +#define KP_MULTIPLY (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_ASTERISK)) #define KP_ASTERISK (KP_MULTIPLY) #define KMLT (KP_MULTIPLY) // WARNING: DEPRECATED (DO NOT USE) /* Keypad - (Minus) */ -#define KP_MINUS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_MINUS)) +#define KP_MINUS (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_MINUS)) #define KP_SUBTRACT (KP_MINUS) #define KMIN (KP_MINUS) // WARNING: DEPRECATED (DO NOT USE) /* Keypad + (Plus) */ -#define KP_PLUS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_PLUS)) +#define KP_PLUS (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_PLUS)) #define KPLS (KP_PLUS) // WARNING: DEPRECATED (DO NOT USE) /* Keypad Enter */ -#define KP_ENTER (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_ENTER)) +#define KP_ENTER (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_ENTER)) /* Keypad 1 */ -#define KP_NUMBER_1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_1_AND_END)) +#define KP_NUMBER_1 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_1_AND_END)) #define KP_N1 (KP_NUMBER_1) /* Keypad 2 */ -#define KP_NUMBER_2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_2_AND_DOWN_ARROW)) +#define KP_NUMBER_2 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_2_AND_DOWN_ARROW)) #define KP_N2 (KP_NUMBER_2) /* Keypad 3 */ -#define KP_NUMBER_3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_3_AND_PAGEDN)) +#define KP_NUMBER_3 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_3_AND_PAGEDN)) #define KP_N3 (KP_NUMBER_3) /* Keypad 4 */ -#define KP_NUMBER_4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_4_AND_LEFT_ARROW)) +#define KP_NUMBER_4 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_4_AND_LEFT_ARROW)) #define KP_N4 (KP_NUMBER_4) /* Keypad 5 */ -#define KP_NUMBER_5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_5)) +#define KP_NUMBER_5 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_5)) #define KP_N5 (KP_NUMBER_5) /* Keypad 6 */ -#define KP_NUMBER_6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_6_AND_RIGHT_ARROW)) +#define KP_NUMBER_6 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_6_AND_RIGHT_ARROW)) #define KP_N6 (KP_NUMBER_6) /* Keypad 7 */ -#define KP_NUMBER_7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_7_AND_HOME)) +#define KP_NUMBER_7 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_7_AND_HOME)) #define KP_N7 (KP_NUMBER_7) /* Keypad 8 */ -#define KP_NUMBER_8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_8_AND_UP_ARROW)) +#define KP_NUMBER_8 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_8_AND_UP_ARROW)) #define KP_N8 (KP_NUMBER_8) /* Keypad 9 */ -#define KP_NUMBER_9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_9_AND_PAGEUP)) +#define KP_NUMBER_9 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_9_AND_PAGEUP)) #define KP_N9 (KP_NUMBER_9) /* Keypad 0 */ -#define KP_NUMBER_0 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_0_AND_INSERT)) +#define KP_NUMBER_0 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_0_AND_INSERT)) #define KP_N0 (KP_NUMBER_0) /* Keypad . (Dot) */ -#define KP_DOT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_PERIOD_AND_DELETE)) +#define KP_DOT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_PERIOD_AND_DELETE)) /* Keyboard Non-US \ and | (Non-us Backslash and Pipe) */ #define NON_US_BACKSLASH \ - (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE)) + (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE)) #define NON_US_BSLH (NON_US_BACKSLASH) /* Keyboard Pipe */ -#define PIPE2 (LS(HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE))) +#define PIPE2 (LS(HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_NON_US_BACKSLASH_AND_PIPE))) /* Keyboard Application (Context Menu) */ -#define K_APPLICATION (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APPLICATION)) +#define K_APPLICATION (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_APPLICATION)) #define K_APP (K_APPLICATION) #define K_CONTEXT_MENU (K_APPLICATION) #define K_CMENU (K_APPLICATION) #define GUI (K_APPLICATION) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Power */ -#define K_POWER (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_POWER)) +#define K_POWER (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_POWER)) #define K_PWR (K_POWER) /* Keypad = (Equal) */ -#define KP_EQUAL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_EQUAL)) +#define KP_EQUAL (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_EQUAL)) /* Keyboard F13 */ -#define F13 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F13)) +#define F13 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F13)) /* Keyboard F14 */ -#define F14 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F14)) +#define F14 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F14)) /* Keyboard F15 */ -#define F15 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F15)) +#define F15 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F15)) /* Keyboard F16 */ -#define F16 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F16)) +#define F16 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F16)) /* Keyboard F17 */ -#define F17 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F17)) +#define F17 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F17)) /* Keyboard F18 */ -#define F18 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F18)) +#define F18 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F18)) /* Keyboard F19 */ -#define F19 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F19)) +#define F19 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F19)) /* Keyboard F20 */ -#define F20 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F20)) +#define F20 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F20)) /* Keyboard F21 */ -#define F21 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F21)) +#define F21 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F21)) /* Keyboard F22 */ -#define F22 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F22)) +#define F22 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F22)) /* Keyboard F23 */ -#define F23 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F23)) +#define F23 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F23)) /* Keyboard F24 */ -#define F24 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F24)) +#define F24 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_F24)) /* Keyboard Execute */ -#define K_EXECUTE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EXECUTE)) +#define K_EXECUTE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EXECUTE)) #define K_EXEC (K_EXECUTE) /* Keyboard Help */ -#define K_HELP (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_HELP)) +#define K_HELP (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_HELP)) /* Keyboard Menu */ -#define K_MENU (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MENU)) +#define K_MENU (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MENU)) /* Keyboard Select */ -#define K_SELECT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SELECT)) +#define K_SELECT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SELECT)) /* Keyboard Stop */ -#define K_STOP (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_STOP)) +#define K_STOP (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_STOP)) /* Keyboard Again */ -#define K_AGAIN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_AGAIN)) +#define K_AGAIN (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_AGAIN)) #define K_REDO (K_AGAIN) /* Keyboard Undo */ -#define K_UNDO (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_UNDO)) +#define K_UNDO (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_UNDO)) #define UNDO (K_UNDO) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Cut */ -#define K_CUT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CUT)) +#define K_CUT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CUT)) #define CUT (K_CUT) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Copy */ -#define K_COPY (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COPY)) +#define K_COPY (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_COPY)) #define COPY (K_COPY) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Paste */ -#define K_PASTE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PASTE)) +#define K_PASTE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PASTE)) #define PSTE (K_PASTE) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Find */ -#define K_FIND (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_FIND)) +#define K_FIND (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_FIND)) /* Keyboard Mute */ -#define K_MUTE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MUTE)) +#define K_MUTE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_MUTE)) /* Keyboard Volume Up */ -#define K_VOLUME_UP (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_VOLUME_UP)) +#define K_VOLUME_UP (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_VOLUME_UP)) #define K_VOL_UP (K_VOLUME_UP) #define VOLU (K_VOLUME_UP) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Volume Down */ -#define K_VOLUME_DOWN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_VOLUME_DOWN)) +#define K_VOLUME_DOWN (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_VOLUME_DOWN)) #define K_VOL_DN (K_VOLUME_DOWN) #define VOLD (K_VOLUME_DOWN) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Locking Caps Lock */ -#define LOCKING_CAPS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_CAPS_LOCK)) +#define LOCKING_CAPS (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_CAPS_LOCK)) #define LCAPS (LOCKING_CAPS) /* Keyboard Locking Num Lock */ -#define LOCKING_NUM (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_NUM_LOCK)) +#define LOCKING_NUM (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_NUM_LOCK)) #define LNLCK (LOCKING_NUM) /* Keyboard Locking Scroll Lock */ -#define LOCKING_SCROLL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_SCROLL_LOCK)) +#define LOCKING_SCROLL (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LOCKING_SCROLL_LOCK)) #define LSLCK (LOCKING_SCROLL) /* Keypad , (Comma) */ -#define KP_COMMA (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_COMMA)) +#define KP_COMMA (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_COMMA)) /* Keypad = (Equal) AS/400 */ -#define KP_EQUAL_AS400 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_EQUAL_SIGN)) +#define KP_EQUAL_AS400 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_EQUAL_SIGN)) /* Keyboard International 1 */ -#define INTERNATIONAL_1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL1)) +#define INTERNATIONAL_1 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL1)) #define INT1 (INTERNATIONAL_1) #define INT_RO (INTERNATIONAL_1) /* Keyboard International 2 */ -#define INTERNATIONAL_2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL2)) +#define INTERNATIONAL_2 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL2)) #define INT2 (INTERNATIONAL_2) #define INT_KATAKANAHIRAGANA (INTERNATIONAL_2) #define INT_KANA (INTERNATIONAL_2) /* Keyboard International 3 */ -#define INTERNATIONAL_3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL3)) +#define INTERNATIONAL_3 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL3)) #define INT3 (INTERNATIONAL_3) #define INT_YEN (INTERNATIONAL_3) /* Keyboard International 4 */ -#define INTERNATIONAL_4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL4)) +#define INTERNATIONAL_4 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL4)) #define INT4 (INTERNATIONAL_4) #define INT_HENKAN (INTERNATIONAL_4) /* Keyboard International 5 */ -#define INTERNATIONAL_5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL5)) +#define INTERNATIONAL_5 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL5)) #define INT5 (INTERNATIONAL_5) #define INT_MUHENKAN (INTERNATIONAL_5) /* Keyboard International 6 */ -#define INTERNATIONAL_6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL6)) +#define INTERNATIONAL_6 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL6)) #define INT6 (INTERNATIONAL_6) #define INT_KPJPCOMMA (INTERNATIONAL_6) /* Keyboard International 7 */ -#define INTERNATIONAL_7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL7)) +#define INTERNATIONAL_7 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL7)) #define INT7 (INTERNATIONAL_7) /* Keyboard International 8 */ -#define INTERNATIONAL_8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL8)) +#define INTERNATIONAL_8 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL8)) #define INT8 (INTERNATIONAL_8) /* Keyboard International 9 */ -#define INTERNATIONAL_9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL9)) +#define INTERNATIONAL_9 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_INTERNATIONAL9)) #define INT9 (INTERNATIONAL_9) /* Keyboard Language 1 */ -#define LANGUAGE_1 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG1)) +#define LANGUAGE_1 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG1)) #define LANG1 (LANGUAGE_1) #define LANG_HANGEUL (LANGUAGE_1) /* Keyboard Language 2 */ -#define LANGUAGE_2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG2)) +#define LANGUAGE_2 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG2)) #define LANG2 (LANGUAGE_2) #define LANG_HANJA (LANGUAGE_2) /* Keyboard Language 3 */ -#define LANGUAGE_3 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG3)) +#define LANGUAGE_3 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG3)) #define LANG3 (LANGUAGE_3) #define LANG_KATAKANA (LANGUAGE_3) /* Keyboard Language 4 */ -#define LANGUAGE_4 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG4)) +#define LANGUAGE_4 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG4)) #define LANG4 (LANGUAGE_4) #define LANG_HIRAGANA (LANGUAGE_4) /* Keyboard Language 5 */ -#define LANGUAGE_5 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG5)) +#define LANGUAGE_5 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG5)) #define LANG5 (LANGUAGE_5) #define LANG_ZENKAKUHANKAKU (LANGUAGE_5) /* Keyboard Language 6 */ -#define LANGUAGE_6 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG6)) +#define LANGUAGE_6 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG6)) #define LANG6 (LANGUAGE_6) /* Keyboard Language 7 */ -#define LANGUAGE_7 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG7)) +#define LANGUAGE_7 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG7)) #define LANG7 (LANGUAGE_7) /* Keyboard Language 8 */ -#define LANGUAGE_8 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG8)) +#define LANGUAGE_8 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG8)) #define LANG8 (LANGUAGE_8) /* Keyboard Language 9 */ -#define LANGUAGE_9 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG9)) +#define LANGUAGE_9 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LANG9)) #define LANG9 (LANGUAGE_9) /* Keyboard Alternate Erase */ -#define ALT_ERASE (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_ALTERNATE_ERASE)) +#define ALT_ERASE (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_ALTERNATE_ERASE)) /* Keyboard SysReq/Attention */ -#define SYSREQ (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SYSREQ_ATTENTION)) +#define SYSREQ (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SYSREQ_ATTENTION)) #define ATTENTION (SYSREQ) /* Keyboard Cancel */ -#define K_CANCEL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CANCEL)) +#define K_CANCEL (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CANCEL)) /* Keyboard Clear */ -#define CLEAR (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CLEAR)) +#define CLEAR (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CLEAR)) /* Keyboard Prior */ -#define PRIOR (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PRIOR)) +#define PRIOR (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_PRIOR)) /* Keyboard Return */ -#define RETURN2 (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RETURN)) +#define RETURN2 (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RETURN)) #define RET2 (RETURN2) /* Keyboard Separator */ -#define SEPARATOR (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEPARATOR)) +#define SEPARATOR (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_SEPARATOR)) /* Keyboard Out */ -#define OUT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_OUT)) +#define OUT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_OUT)) /* Keyboard Oper */ -#define OPER (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_OPER)) +#define OPER (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_OPER)) /* Keyboard Clear/Again */ -#define CLEAR_AGAIN (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CLEAR_AGAIN)) +#define CLEAR_AGAIN (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CLEAR_AGAIN)) /* Keyboard CrSel/Props */ -#define CRSEL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CRSEL_PROPS)) +#define CRSEL (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_CRSEL_PROPS)) /* Keyboard ExSel */ -#define EXSEL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EXSEL)) +#define EXSEL (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_EXSEL)) /* Keyboard Currency Unit */ #define CURU \ - (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_CURRENCY_UNIT)) // WARNING: DEPRECATED (DO NOT USE) + (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_CURRENCY_UNIT)) // WARNING: DEPRECATED (DO NOT USE) /* Keypad ( (Left Parenthesis) */ -#define KP_LEFT_PARENTHESIS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_LEFT_PARENTHESIS)) +#define KP_LEFT_PARENTHESIS (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_LEFT_PARENTHESIS)) #define KP_LPAR (KP_LEFT_PARENTHESIS) /* Keypad ) (Right Parenthesis) */ -#define KP_RIGHT_PARENTHESIS (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_RIGHT_PARENTHESIS)) +#define KP_RIGHT_PARENTHESIS (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_RIGHT_PARENTHESIS)) #define KP_RPAR (KP_RIGHT_PARENTHESIS) /* Keypad Space */ #define KSPC \ - (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_SPACE)) // WARNING: DEPRECATED (DO NOT USE) + (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_SPACE)) // WARNING: DEPRECATED (DO NOT USE) /* Keypad Clear */ -#define KP_CLEAR (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_CLEAR)) +#define KP_CLEAR (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYPAD_CLEAR)) /* Keyboard Left Control */ -#define LEFT_CONTROL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTCONTROL)) +#define LEFT_CONTROL (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTCONTROL)) #define LCTRL (LEFT_CONTROL) #define LCTL (LEFT_CONTROL) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Left Shift */ -#define LEFT_SHIFT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTSHIFT)) +#define LEFT_SHIFT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTSHIFT)) #define LSHFT (LEFT_SHIFT) #define LSFT (LEFT_SHIFT) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Left Alt */ -#define LEFT_ALT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTALT)) +#define LEFT_ALT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFTALT)) #define LALT (LEFT_ALT) /* Keyboard Left GUI (Windows / Command / Meta) */ -#define LEFT_GUI (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_GUI)) +#define LEFT_GUI (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_LEFT_GUI)) #define LGUI (LEFT_GUI) #define LEFT_WIN (LEFT_GUI) #define LWIN (LEFT_GUI) @@ -789,21 +786,21 @@ #define LMETA (LEFT_GUI) /* Keyboard Right Control */ -#define RIGHT_CONTROL (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTCONTROL)) +#define RIGHT_CONTROL (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTCONTROL)) #define RCTRL (RIGHT_CONTROL) #define RCTL (RIGHT_CONTROL) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Right Shift */ -#define RIGHT_SHIFT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTSHIFT)) +#define RIGHT_SHIFT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTSHIFT)) #define RSHFT (RIGHT_SHIFT) #define RSFT (RIGHT_SHIFT) // WARNING: DEPRECATED (DO NOT USE) /* Keyboard Right Alt */ -#define RIGHT_ALT (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTALT)) +#define RIGHT_ALT (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHTALT)) #define RALT (RIGHT_ALT) /* Keyboard Right GUI (Windows / Command / Meta) */ -#define RIGHT_GUI (HID_EXT_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_GUI)) +#define RIGHT_GUI (HID_USAGE(HID_USAGE_KEY, HID_USAGE_KEY_KEYBOARD_RIGHT_GUI)) #define RGUI (RIGHT_GUI) #define RIGHT_WIN (RIGHT_GUI) #define RWIN (RIGHT_GUI) @@ -813,621 +810,611 @@ #define RMETA (RIGHT_GUI) /* Keyboard Play/Pause */ -#define K_PLAY_PAUSE (HID_EXT_USAGE(HID_USAGE_KEY, 0xE8)) +#define K_PLAY_PAUSE (HID_USAGE(HID_USAGE_KEY, 0xE8)) #define K_PP (K_PLAY_PAUSE) /* Keyboard Stop */ -#define K_STOP2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xE9)) +#define K_STOP2 (HID_USAGE(HID_USAGE_KEY, 0xE9)) /* Keyboard Previous */ -#define K_PREVIOUS (HID_EXT_USAGE(HID_USAGE_KEY, 0xEA)) +#define K_PREVIOUS (HID_USAGE(HID_USAGE_KEY, 0xEA)) #define K_PREV (K_PREVIOUS) /* Keyboard Next */ -#define K_NEXT (HID_EXT_USAGE(HID_USAGE_KEY, 0xEB)) +#define K_NEXT (HID_USAGE(HID_USAGE_KEY, 0xEB)) /* Keyboard Eject */ -#define K_EJECT (HID_EXT_USAGE(HID_USAGE_KEY, 0xEC)) +#define K_EJECT (HID_USAGE(HID_USAGE_KEY, 0xEC)) /* Keyboard Volume Up */ -#define K_VOLUME_UP2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xED)) +#define K_VOLUME_UP2 (HID_USAGE(HID_USAGE_KEY, 0xED)) #define K_VOL_UP2 (K_VOLUME_UP2) /* Keyboard Volume Down */ -#define K_VOLUME_DOWN2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xEE)) +#define K_VOLUME_DOWN2 (HID_USAGE(HID_USAGE_KEY, 0xEE)) #define K_VOL_DN2 (K_VOLUME_DOWN2) /* Keyboard Mute */ -#define K_MUTE2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xEF)) +#define K_MUTE2 (HID_USAGE(HID_USAGE_KEY, 0xEF)) /* Keyboard WWW */ -#define K_WWW (HID_EXT_USAGE(HID_USAGE_KEY, 0xF0)) +#define K_WWW (HID_USAGE(HID_USAGE_KEY, 0xF0)) /* Keyboard Back */ -#define K_BACK (HID_EXT_USAGE(HID_USAGE_KEY, 0xF1)) +#define K_BACK (HID_USAGE(HID_USAGE_KEY, 0xF1)) /* Keyboard Forward */ -#define K_FORWARD (HID_EXT_USAGE(HID_USAGE_KEY, 0xF2)) +#define K_FORWARD (HID_USAGE(HID_USAGE_KEY, 0xF2)) /* Keyboard Stop */ -#define K_STOP3 (HID_EXT_USAGE(HID_USAGE_KEY, 0xF3)) +#define K_STOP3 (HID_USAGE(HID_USAGE_KEY, 0xF3)) /* Keyboard Find */ -#define K_FIND2 (HID_EXT_USAGE(HID_USAGE_KEY, 0xF4)) +#define K_FIND2 (HID_USAGE(HID_USAGE_KEY, 0xF4)) /* Keyboard Scroll Up */ -#define K_SCROLL_UP (HID_EXT_USAGE(HID_USAGE_KEY, 0xF5)) +#define K_SCROLL_UP (HID_USAGE(HID_USAGE_KEY, 0xF5)) /* Keyboard Scroll Down */ -#define K_SCROLL_DOWN (HID_EXT_USAGE(HID_USAGE_KEY, 0xF6)) +#define K_SCROLL_DOWN (HID_USAGE(HID_USAGE_KEY, 0xF6)) /* Keyboard Edit */ -#define K_EDIT (HID_EXT_USAGE(HID_USAGE_KEY, 0xF7)) +#define K_EDIT (HID_USAGE(HID_USAGE_KEY, 0xF7)) /* Keyboard Sleep */ -#define K_SLEEP (HID_EXT_USAGE(HID_USAGE_KEY, 0xF8)) +#define K_SLEEP (HID_USAGE(HID_USAGE_KEY, 0xF8)) /* Keyboard Lock */ -#define K_LOCK (HID_EXT_USAGE(HID_USAGE_KEY, 0xF9)) +#define K_LOCK (HID_USAGE(HID_USAGE_KEY, 0xF9)) #define K_SCREENSAVER (K_LOCK) #define K_COFFEE (K_LOCK) /* Keyboard Refresh */ -#define K_REFRESH (HID_EXT_USAGE(HID_USAGE_KEY, 0xFA)) +#define K_REFRESH (HID_USAGE(HID_USAGE_KEY, 0xFA)) /* Keyboard Calculator */ -#define K_CALCULATOR (HID_EXT_USAGE(HID_USAGE_KEY, 0xFB)) +#define K_CALCULATOR (HID_USAGE(HID_USAGE_KEY, 0xFB)) #define K_CALC (K_CALCULATOR) /* Consumer Power */ -#define C_POWER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_POWER)) +#define C_POWER (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_POWER)) #define C_PWR (C_POWER) /* Consumer Reset */ -#define C_RESET (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RESET)) +#define C_RESET (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RESET)) /* Consumer Sleep */ -#define C_SLEEP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLEEP)) +#define C_SLEEP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLEEP)) /* Consumer Sleep Mode */ -#define C_SLEEP_MODE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLEEP_MODE)) +#define C_SLEEP_MODE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLEEP_MODE)) /* Consumer Menu */ -#define C_MENU (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU)) +#define C_MENU (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU)) /* Consumer Menu Pick */ -#define C_MENU_PICK (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_PICK)) +#define C_MENU_PICK (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_PICK)) #define C_MENU_SELECT (C_MENU_PICK) /* Consumer Menu Up */ -#define C_MENU_UP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_UP)) +#define C_MENU_UP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_UP)) /* Consumer Menu Down */ -#define C_MENU_DOWN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_DOWN)) +#define C_MENU_DOWN (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_DOWN)) /* Consumer Menu Left */ -#define C_MENU_LEFT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_LEFT)) +#define C_MENU_LEFT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_LEFT)) /* Consumer Menu Right */ -#define C_MENU_RIGHT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_RIGHT)) +#define C_MENU_RIGHT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_RIGHT)) /* Consumer Menu Escape */ -#define C_MENU_ESCAPE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_ESCAPE)) +#define C_MENU_ESCAPE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_ESCAPE)) #define C_MENU_ESC (C_MENU_ESCAPE) /* Consumer Menu Value Increase */ -#define C_MENU_INCREASE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_VALUE_INCREASE)) +#define C_MENU_INCREASE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_VALUE_INCREASE)) #define C_MENU_INC (C_MENU_INCREASE) /* Consumer Menu Value Decrease */ -#define C_MENU_DECREASE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_VALUE_DECREASE)) +#define C_MENU_DECREASE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MENU_VALUE_DECREASE)) #define C_MENU_DEC (C_MENU_DECREASE) /* Consumer Data On Screen */ -#define C_DATA_ON_SCREEN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DATA_ON_SCREEN)) +#define C_DATA_ON_SCREEN (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DATA_ON_SCREEN)) /* Consumer Closed Caption */ -#define C_CAPTIONS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CLOSED_CAPTION)) +#define C_CAPTIONS (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CLOSED_CAPTION)) #define C_SUBTITILES (C_CAPTIONS) /* Consumer Snapshot */ -#define C_SNAPSHOT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SNAPSHOT)) +#define C_SNAPSHOT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SNAPSHOT)) /* Consumer Picture-in-Picture Toggle */ -#define C_PIP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_TOGGLE)) +#define C_PIP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PICTURE_IN_PICTURE_TOGGLE)) /* Consumer Red Menu Button */ -#define C_RED_BUTTON (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RED_MENU_BUTTON)) +#define C_RED_BUTTON (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RED_MENU_BUTTON)) #define C_RED (C_RED_BUTTON) /* Consumer Green Menu Button */ -#define C_GREEN_BUTTON (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_GREEN_MENU_BUTTON)) +#define C_GREEN_BUTTON (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_GREEN_MENU_BUTTON)) #define C_GREEN (C_GREEN_BUTTON) /* Consumer Blue Menu Button */ -#define C_BLUE_BUTTON (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_BLUE_MENU_BUTTON)) +#define C_BLUE_BUTTON (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_BLUE_MENU_BUTTON)) #define C_BLUE (C_BLUE_BUTTON) /* Consumer Yellow Menu Button */ -#define C_YELLOW_BUTTON (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_YELLOW_MENU_BUTTON)) +#define C_YELLOW_BUTTON (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_YELLOW_MENU_BUTTON)) #define C_YELLOW (C_YELLOW_BUTTON) /* Consumer Aspect */ -#define C_ASPECT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_ASPECT)) +#define C_ASPECT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_ASPECT)) /* Consumer Display Brightness Increment */ #define C_BRIGHTNESS_INC \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_INCREMENT)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_INCREMENT)) #define C_BRI_INC (C_BRIGHTNESS_INC) #define C_BRI_UP (C_BRIGHTNESS_INC) /* Consumer Display Brightness Decrement */ #define C_BRIGHTNESS_DEC \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_DECREMENT)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BRIGHTNESS_DECREMENT)) #define C_BRI_DEC (C_BRIGHTNESS_DEC) #define C_BRI_DN (C_BRIGHTNESS_DEC) /* Consumer Display Backlight Toggle */ #define C_BACKLIGHT_TOGGLE \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BACKLIGHT_TOGGLE)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_BACKLIGHT_TOGGLE)) #define C_BKLT_TOG (C_BACKLIGHT_TOGGLE) /* Consumer Display Set Brightness to Minimum */ #define C_BRIGHTNESS_MINIMUM \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MINIMUM)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MINIMUM)) #define C_BRI_MIN (C_BRIGHTNESS_MINIMUM) /* Consumer Display Set Brightness to Maximum */ #define C_BRIGHTNESS_MAXIMUM \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MAXIMUM)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_BRIGHTNESS_TO_MAXIMUM)) #define C_BRI_MAX (C_BRIGHTNESS_MAXIMUM) /* Consumer Display Set Auto Brightness */ #define C_BRIGHTNESS_AUTO \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_AUTO_BRIGHTNESS)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_DISPLAY_SET_AUTO_BRIGHTNESS)) #define C_BRI_AUTO (C_BRIGHTNESS_AUTO) /* Consumer Mode Step */ -#define C_MEDIA_STEP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MODE_STEP)) +#define C_MEDIA_STEP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MODE_STEP)) #define C_MODE_STEP (C_MEDIA_STEP) /* Consumer Recall Last */ -#define C_RECALL_LAST (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RECALL_LAST)) +#define C_RECALL_LAST (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RECALL_LAST)) #define C_CHAN_LAST (C_RECALL_LAST) /* Consumer Media Select Computer */ -#define C_MEDIA_COMPUTER \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_COMPUTER)) +#define C_MEDIA_COMPUTER (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_COMPUTER)) /* Consumer Media Select TV */ -#define C_MEDIA_TV (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TV)) +#define C_MEDIA_TV (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TV)) /* Consumer Media Select WWW */ -#define C_MEDIA_WWW (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_WWW)) +#define C_MEDIA_WWW (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_WWW)) /* Consumer Media Select DVD */ -#define C_MEDIA_DVD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_DVD)) +#define C_MEDIA_DVD (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_DVD)) /* Consumer Media Select Telephone */ -#define C_MEDIA_PHONE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TELEPHONE)) +#define C_MEDIA_PHONE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TELEPHONE)) /* Consumer Media Select Program Guide */ -#define C_MEDIA_GUIDE \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE)) +#define C_MEDIA_GUIDE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_PROGRAM_GUIDE)) /* Consumer Media Select Video Phone */ #define C_MEDIA_VIDEOPHONE \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_VIDEO_PHONE)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_VIDEO_PHONE)) /* Consumer Media Select Games */ -#define C_MEDIA_GAMES (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_GAMES)) +#define C_MEDIA_GAMES (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_GAMES)) /* Consumer Media Select Messages */ -#define C_MEDIA_MESSAGES \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_MESSAGES)) +#define C_MEDIA_MESSAGES (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_MESSAGES)) /* Consumer Media Select CD */ -#define C_MEDIA_CD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_CD)) +#define C_MEDIA_CD (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_CD)) /* Consumer Media Select VCR */ -#define C_MEDIA_VCR (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_VCR)) +#define C_MEDIA_VCR (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_VCR)) /* Consumer Media Select Tuner */ -#define C_MEDIA_TUNER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TUNER)) +#define C_MEDIA_TUNER (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TUNER)) /* Consumer Quit */ -#define C_QUIT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_QUIT)) +#define C_QUIT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_QUIT)) /* Consumer Help */ -#define C_HELP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_HELP)) +#define C_HELP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_HELP)) /* Consumer Media Select Tape */ -#define C_MEDIA_TAPE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TAPE)) +#define C_MEDIA_TAPE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_TAPE)) /* Consumer Media Select Cable */ -#define C_MEDIA_CABLE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_CABLE)) +#define C_MEDIA_CABLE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_CABLE)) /* Consumer Media Select Satellite */ -#define C_MEDIA_SATELLITE \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_SATELLITE)) +#define C_MEDIA_SATELLITE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_SATELLITE)) /* Consumer Media Select Home */ -#define C_MEDIA_HOME (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_HOME)) +#define C_MEDIA_HOME (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MEDIA_SELECT_HOME)) /* Consumer Channel Increment */ -#define C_CHANNEL_INC (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CHANNEL_INCREMENT)) +#define C_CHANNEL_INC (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CHANNEL_INCREMENT)) #define C_CHAN_INC (C_CHANNEL_INC) /* Consumer Channel Decrement */ -#define C_CHANNEL_DEC (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CHANNEL_DECREMENT)) +#define C_CHANNEL_DEC (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_CHANNEL_DECREMENT)) #define C_CHAN_DEC (C_CHANNEL_DEC) /* Consumer VCR Plus */ -#define C_MEDIA_VCR_PLUS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VCR_PLUS)) +#define C_MEDIA_VCR_PLUS (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VCR_PLUS)) /* Consumer Play */ -#define C_PLAY (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PLAY)) +#define C_PLAY (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PLAY)) /* Consumer Pause */ -#define C_PAUSE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PAUSE)) +#define C_PAUSE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PAUSE)) /* Consumer Record */ -#define C_RECORD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RECORD)) +#define C_RECORD (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RECORD)) #define C_REC (C_RECORD) /* Consumer Fast Forward */ -#define C_FAST_FORWARD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_FAST_FORWARD)) +#define C_FAST_FORWARD (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_FAST_FORWARD)) #define C_FF (C_FAST_FORWARD) /* Consumer Rewind */ -#define C_REWIND (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_REWIND)) +#define C_REWIND (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_REWIND)) #define C_RW (C_REWIND) /* Consumer Scan Next Track */ -#define C_NEXT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SCAN_NEXT_TRACK)) +#define C_NEXT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SCAN_NEXT_TRACK)) #define M_NEXT (C_NEXT) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Scan Previous Track */ -#define C_PREVIOUS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SCAN_PREVIOUS_TRACK)) +#define C_PREVIOUS (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SCAN_PREVIOUS_TRACK)) #define C_PREV (C_PREVIOUS) #define M_PREV (C_PREVIOUS) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Stop */ -#define C_STOP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_STOP)) +#define C_STOP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_STOP)) #define M_STOP (C_STOP) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Eject */ -#define C_EJECT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_EJECT)) +#define C_EJECT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_EJECT)) #define M_EJCT (C_EJECT) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Random Play */ -#define C_RANDOM_PLAY (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RANDOM_PLAY)) +#define C_RANDOM_PLAY (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_RANDOM_PLAY)) #define C_SHUFFLE (C_RANDOM_PLAY) /* Consumer Repeat */ -#define C_REPEAT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_REPEAT)) +#define C_REPEAT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_REPEAT)) /* Consumer Slow Tracking */ -#define C_SLOW_TRACKING (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLOW_TRACKING)) +#define C_SLOW_TRACKING (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLOW_TRACKING)) #define C_SLOW2 (C_SLOW_TRACKING) /* Consumer Stop/Eject */ -#define C_STOP_EJECT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_STOP_EJECT)) +#define C_STOP_EJECT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_STOP_EJECT)) /* Consumer Play/Pause */ -#define C_PLAY_PAUSE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PLAY_PAUSE)) +#define C_PLAY_PAUSE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_PLAY_PAUSE)) #define C_PP (C_PLAY_PAUSE) #define M_PLAY (C_PLAY_PAUSE) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Voice Command */ -#define C_VOICE_COMMAND (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOICE_COMMAND)) +#define C_VOICE_COMMAND (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOICE_COMMAND)) /* Consumer Mute */ -#define C_MUTE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MUTE)) +#define C_MUTE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_MUTE)) #define M_MUTE (C_MUTE) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Bass Boost */ -#define C_BASS_BOOST (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_BASS_BOOST)) +#define C_BASS_BOOST (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_BASS_BOOST)) /* Consumer Volume Increment */ -#define C_VOLUME_UP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOLUME_INCREMENT)) +#define C_VOLUME_UP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOLUME_INCREMENT)) #define C_VOL_UP (C_VOLUME_UP) #define M_VOLU (C_VOLUME_UP) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Volume Decrement */ -#define C_VOLUME_DOWN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOLUME_DECREMENT)) +#define C_VOLUME_DOWN (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_VOLUME_DECREMENT)) #define C_VOL_DN (C_VOLUME_DOWN) #define M_VOLD (C_VOLUME_DOWN) // WARNING: DEPRECATED (DO NOT USE) /* Consumer Slow */ -#define C_SLOW (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLOW)) +#define C_SLOW (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_SLOW)) /* Consumer Alternate Audio Increment */ #define C_ALTERNATE_AUDIO_INCREMENT \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_ALTERNATE_AUDIO_INCREMENT)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_ALTERNATE_AUDIO_INCREMENT)) #define C_ALT_AUDIO_INC (C_ALTERNATE_AUDIO_INCREMENT) /* Consumer AL Consumer Control Configuration */ #define C_AL_CCC \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION)) /* Consumer AL Word Processor */ -#define C_AL_WORD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_WORD_PROCESSOR)) +#define C_AL_WORD (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_WORD_PROCESSOR)) /* Consumer AL Text Editor */ -#define C_AL_TEXT_EDITOR (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TEXT_EDITOR)) +#define C_AL_TEXT_EDITOR (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TEXT_EDITOR)) /* Consumer AL Spreadsheet */ -#define C_AL_SPREADSHEET (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SPREADSHEET)) +#define C_AL_SPREADSHEET (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SPREADSHEET)) #define C_AL_SHEET (C_AL_SPREADSHEET) /* Consumer AL Graphics Editor */ -#define C_AL_GRAPHICS_EDITOR \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_GRAPHICS_EDITOR)) +#define C_AL_GRAPHICS_EDITOR (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_GRAPHICS_EDITOR)) /* Consumer AL Presentation App */ -#define C_AL_PRESENTATION \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_PRESENTATION_APP)) +#define C_AL_PRESENTATION (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_PRESENTATION_APP)) /* Consumer AL Database App */ -#define C_AL_DATABASE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_DATABASE_APP)) +#define C_AL_DATABASE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_DATABASE_APP)) #define C_AL_DB (C_AL_DATABASE) /* Consumer AL Email Reader */ -#define C_AL_EMAIL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_EMAIL_READER)) +#define C_AL_EMAIL (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_EMAIL_READER)) #define C_AL_MAIL (C_AL_EMAIL) /* Consumer AL Newsreader */ -#define C_AL_NEWS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NEWSREADER)) +#define C_AL_NEWS (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NEWSREADER)) /* Consumer AL Voicemail */ -#define C_AL_VOICEMAIL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_VOICEMAIL)) +#define C_AL_VOICEMAIL (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_VOICEMAIL)) /* Consumer AL Contacts/Address Book */ -#define C_AL_CONTACTS \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONTACTS_ADDRESS_BOOK)) +#define C_AL_CONTACTS (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONTACTS_ADDRESS_BOOK)) #define C_AL_ADDRESS_BOOK (C_AL_CONTACTS) /* Consumer AL Calendar/Schedule */ -#define C_AL_CALENDAR (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CALENDAR_SCHEDULE)) +#define C_AL_CALENDAR (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CALENDAR_SCHEDULE)) #define C_AL_CAL (C_AL_CALENDAR) /* Consumer AL Task/Project Manager */ #define C_AL_TASK_MANAGER \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TASK_PROJECT_MANAGER)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TASK_PROJECT_MANAGER)) /* Consumer AL Log/Journal/Timecard */ -#define C_AL_JOURNAL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOG_JOURNAL_TIMECARD)) +#define C_AL_JOURNAL (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOG_JOURNAL_TIMECARD)) /* Consumer AL Checkbook/Finance */ -#define C_AL_FINANCE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CHECKBOOK_FINANCE)) +#define C_AL_FINANCE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CHECKBOOK_FINANCE)) /* Consumer AL Calculator */ -#define C_AL_CALCULATOR (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CALCULATOR)) +#define C_AL_CALCULATOR (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CALCULATOR)) #define C_AL_CALC (C_AL_CALCULATOR) /* Consumer AL A/V Capture/Playback */ #define C_AL_AV_CAPTURE_PLAYBACK \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_A_V_CAPTURE_PLAYBACK)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_A_V_CAPTURE_PLAYBACK)) /* Consumer AL Local Machine Browser */ #define C_AL_MY_COMPUTER \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOCAL_MACHINE_BROWSER)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOCAL_MACHINE_BROWSER)) /* Consumer AL Internet Browser */ -#define C_AL_WWW (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INTERNET_BROWSER)) +#define C_AL_WWW (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INTERNET_BROWSER)) /* Consumer AL Network Chat */ -#define C_AL_NETWORK_CHAT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NETWORK_CHAT)) +#define C_AL_NETWORK_CHAT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NETWORK_CHAT)) #define C_AL_CHAT (C_AL_NETWORK_CHAT) /* Consumer AL Logoff */ -#define C_AL_LOGOFF (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOGOFF)) +#define C_AL_LOGOFF (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_LOGOFF)) /* Consumer AL Terminal Lock/Screensaver */ -#define C_AL_LOCK \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TERMINAL_LOCK_SCREENSAVER)) +#define C_AL_LOCK (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_TERMINAL_LOCK_SCREENSAVER)) #define C_AL_SCREENSAVER (C_AL_LOCK) #define C_AL_COFFEE (C_AL_LOCK) /* Consumer AL Control Panel */ -#define C_AL_CONTROL_PANEL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONTROL_PANEL)) +#define C_AL_CONTROL_PANEL (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_CONTROL_PANEL)) /* Consumer AL Select Task/Application */ #define C_AL_SELECT_TASK \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SELECT_TASK_APPLICATION)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SELECT_TASK_APPLICATION)) /* Consumer AL Next Task/Application */ -#define C_AL_NEXT_TASK \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NEXT_TASK_APPLICATION)) +#define C_AL_NEXT_TASK (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_NEXT_TASK_APPLICATION)) /* Consumer AL Previous Task/Application */ #define C_AL_PREVIOUS_TASK \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_PREVIOUS_TASK_APPLICATION)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_PREVIOUS_TASK_APPLICATION)) #define C_AL_PREV_TASK (C_AL_PREVIOUS_TASK) /* Consumer AL Integrated Help Center */ -#define C_AL_HELP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INTEGRATED_HELP_CENTER)) +#define C_AL_HELP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INTEGRATED_HELP_CENTER)) /* Consumer AL Documents */ -#define C_AL_DOCUMENTS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_DOCUMENTS)) +#define C_AL_DOCUMENTS (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_DOCUMENTS)) #define C_AL_DOCS (C_AL_DOCUMENTS) /* Consumer AL Spell Check */ -#define C_AL_SPELLCHECK (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SPELL_CHECK)) +#define C_AL_SPELLCHECK (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SPELL_CHECK)) #define C_AL_SPELL (C_AL_SPELLCHECK) /* Consumer AL Keyboard Layout */ -#define C_AL_KEYBOARD_LAYOUT \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_KEYBOARD_LAYOUT)) +#define C_AL_KEYBOARD_LAYOUT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_KEYBOARD_LAYOUT)) /* Consumer AL Screen Saver */ -#define C_AL_SCREEN_SAVER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SCREEN_SAVER)) +#define C_AL_SCREEN_SAVER (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_SCREEN_SAVER)) /* Consumer AL File Browser */ -#define C_AL_FILE_BROWSER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_FILE_BROWSER)) +#define C_AL_FILE_BROWSER (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_FILE_BROWSER)) #define C_AL_FILES (C_AL_FILE_BROWSER) /* Consumer AL Image Browser */ -#define C_AL_IMAGE_BROWSER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_IMAGE_BROWSER)) +#define C_AL_IMAGE_BROWSER (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_IMAGE_BROWSER)) #define C_AL_IMAGES (C_AL_IMAGE_BROWSER) /* Consumer AL Audio Browser */ -#define C_AL_AUDIO_BROWSER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_AUDIO_BROWSER)) +#define C_AL_AUDIO_BROWSER (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_AUDIO_BROWSER)) #define C_AL_AUDIO (C_AL_AUDIO_BROWSER) #define C_AL_MUSIC (C_AL_AUDIO_BROWSER) /* Consumer AL Movie Browser */ -#define C_AL_MOVIE_BROWSER (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_MOVIE_BROWSER)) +#define C_AL_MOVIE_BROWSER (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_MOVIE_BROWSER)) #define C_AL_MOVIES (C_AL_MOVIE_BROWSER) /* Consumer AL Instant Messaging */ #define C_AL_INSTANT_MESSAGING \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INSTANT_MESSAGING)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_INSTANT_MESSAGING)) #define C_AL_IM (C_AL_INSTANT_MESSAGING) /* Consumer AL OEM Features/Tips/Tutorial Browser */ #define C_AL_OEM_FEATURES \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_OEM_FEATURES_TIPS_TUTORIAL_BROWSER)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AL_OEM_FEATURES_TIPS_TUTORIAL_BROWSER)) #define C_AL_TIPS (C_AL_OEM_FEATURES) #define C_AL_TUTORIAL (C_AL_OEM_FEATURES) /* Consumer AC New */ -#define C_AC_NEW (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_NEW)) +#define C_AC_NEW (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_NEW)) /* Consumer AC Open */ -#define C_AC_OPEN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_OPEN)) +#define C_AC_OPEN (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_OPEN)) /* Consumer AC Close */ -#define C_AC_CLOSE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CLOSE)) +#define C_AC_CLOSE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CLOSE)) /* Consumer AC Exit */ -#define C_AC_EXIT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_EXIT)) +#define C_AC_EXIT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_EXIT)) /* Consumer AC Save */ -#define C_AC_SAVE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SAVE)) +#define C_AC_SAVE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SAVE)) /* Consumer AC Print */ -#define C_AC_PRINT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PRINT)) +#define C_AC_PRINT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PRINT)) /* Consumer AC Properties */ -#define C_AC_PROPERTIES (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PROPERTIES)) +#define C_AC_PROPERTIES (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PROPERTIES)) #define C_AC_PROPS (C_AC_PROPERTIES) /* Consumer AC Undo */ -#define C_AC_UNDO (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_UNDO)) +#define C_AC_UNDO (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_UNDO)) /* Consumer AC Copy */ -#define C_AC_COPY (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_COPY)) +#define C_AC_COPY (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_COPY)) /* Consumer AC Cut */ -#define C_AC_CUT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CUT)) +#define C_AC_CUT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CUT)) /* Consumer AC Paste */ -#define C_AC_PASTE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PASTE)) +#define C_AC_PASTE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_PASTE)) /* Consumer AC Find */ -#define C_AC_FIND (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FIND)) +#define C_AC_FIND (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FIND)) /* Consumer AC Search */ -#define C_AC_SEARCH (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SEARCH)) +#define C_AC_SEARCH (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SEARCH)) /* Consumer AC Go To */ -#define C_AC_GOTO (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_GO_TO)) +#define C_AC_GOTO (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_GO_TO)) /* Consumer AC Home */ -#define C_AC_HOME (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_HOME)) +#define C_AC_HOME (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_HOME)) /* Consumer AC Back */ -#define C_AC_BACK (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_BACK)) +#define C_AC_BACK (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_BACK)) /* Consumer AC Forward */ -#define C_AC_FORWARD (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FORWARD)) +#define C_AC_FORWARD (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FORWARD)) /* Consumer AC Stop */ -#define C_AC_STOP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_STOP)) +#define C_AC_STOP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_STOP)) /* Consumer AC Refresh */ -#define C_AC_REFRESH (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REFRESH)) +#define C_AC_REFRESH (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REFRESH)) /* Consumer AC Bookmarks */ -#define C_AC_BOOKMARKS (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_BOOKMARKS)) +#define C_AC_BOOKMARKS (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_BOOKMARKS)) #define C_AC_FAVORITES (C_AC_BOOKMARKS) #define C_AC_FAVOURITES (C_AC_BOOKMARKS) /* Consumer AC Zoom In */ -#define C_AC_ZOOM_IN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM_IN)) +#define C_AC_ZOOM_IN (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM_IN)) /* Consumer AC Zoom Out */ -#define C_AC_ZOOM_OUT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM_OUT)) +#define C_AC_ZOOM_OUT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM_OUT)) /* Consumer AC Zoom */ -#define C_AC_ZOOM (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM)) +#define C_AC_ZOOM (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_ZOOM)) /* Consumer AC View Toggle */ -#define C_AC_VIEW_TOGGLE (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_VIEW_TOGGLE)) +#define C_AC_VIEW_TOGGLE (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_VIEW_TOGGLE)) /* Consumer AC Scroll Up */ -#define C_AC_SCROLL_UP (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SCROLL_UP)) +#define C_AC_SCROLL_UP (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SCROLL_UP)) /* Consumer AC Scroll Down */ -#define C_AC_SCROLL_DOWN (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SCROLL_DOWN)) +#define C_AC_SCROLL_DOWN (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SCROLL_DOWN)) /* Consumer AC Edit */ -#define C_AC_EDIT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_EDIT)) +#define C_AC_EDIT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_EDIT)) /* Consumer AC Cancel */ -#define C_AC_CANCEL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CANCEL)) +#define C_AC_CANCEL (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_CANCEL)) /* Consumer AC Insert Mode */ -#define C_AC_INSERT (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_INSERT_MODE)) +#define C_AC_INSERT (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_INSERT_MODE)) #define C_AC_INS (C_AC_INSERT) /* Consumer AC Delete */ -#define C_AC_DEL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_DELETE)) +#define C_AC_DEL (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_DELETE)) /* Consumer AC Redo/Repeat */ -#define C_AC_REDO (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REDO_REPEAT)) +#define C_AC_REDO (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REDO_REPEAT)) /* Consumer AC Reply */ -#define C_AC_REPLY (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REPLY)) +#define C_AC_REPLY (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_REPLY)) /* Consumer AC Forward Msg */ -#define C_AC_FORWARD_MAIL (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FORWARD_MSG)) +#define C_AC_FORWARD_MAIL (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_FORWARD_MSG)) /* Consumer AC Send */ -#define C_AC_SEND (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SEND)) +#define C_AC_SEND (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_SEND)) /* Consumer AC Desktop Show All Windows */ #define C_AC_DESKTOP_SHOW_ALL_WINDOWS \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_WINDOWS)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_AC_DESKTOP_SHOW_ALL_WINDOWS)) /* Consumer Keyboard Input Assist Previous */ #define C_KEYBOARD_INPUT_ASSIST_PREVIOUS \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS)) #define C_KBIA_PREV (C_KEYBOARD_INPUT_ASSIST_PREVIOUS) /* Consumer Keyboard Input Assist Next */ #define C_KEYBOARD_INPUT_ASSIST_NEXT \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT)) #define C_KBIA_NEXT (C_KEYBOARD_INPUT_ASSIST_NEXT) /* Consumer Keyboard Input Assist Previous Group */ #define C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP)) #define C_KBIA_PREV_GRP (C_KEYBOARD_INPUT_ASSIST_PREVIOUS_GROUP) /* Consumer Keyboard Input Assist Next Group */ #define C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT_GROUP)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_NEXT_GROUP)) #define C_KBIA_NEXT_GRP (C_KEYBOARD_INPUT_ASSIST_NEXT_GROUP) /* Consumer Keyboard Input Assist Accept */ #define C_KEYBOARD_INPUT_ASSIST_ACCEPT \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_ACCEPT)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_ACCEPT)) #define C_KBIA_ACCEPT (C_KEYBOARD_INPUT_ASSIST_ACCEPT) /* Consumer Keyboard Input Assist Cancel */ #define C_KEYBOARD_INPUT_ASSIST_CANCEL \ - (HID_EXT_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_CANCEL)) + (HID_USAGE(HID_USAGE_CONSUMER, HID_USAGE_CONSUMER_KEYBOARD_INPUT_ASSIST_CANCEL)) #define C_KBIA_CANCEL (C_KEYBOARD_INPUT_ASSIST_CANCEL) diff --git a/app/include/zmk/events/keycode-state-changed.h b/app/include/zmk/events/keycode-state-changed.h index fe47a0fd..7a423a57 100644 --- a/app/include/zmk/events/keycode-state-changed.h +++ b/app/include/zmk/events/keycode-state-changed.h @@ -24,8 +24,8 @@ ZMK_EVENT_DECLARE(keycode_state_changed); static inline struct keycode_state_changed *keycode_state_changed_from_encoded(u32_t encoded, bool pressed) { - u16_t page = HID_EXT_USAGE_PAGE(encoded) & 0xFF; - u16_t id = HID_EXT_USAGE_ID(encoded); + u16_t page = HID_USAGE_PAGE(encoded) & 0xFF; + u16_t id = HID_USAGE_ID(encoded); zmk_mod_flags implicit_mods = SELECT_MODS(encoded); if (!page) { From ae51000d60c301d7780211373e4a31add20c9f87 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 10 Nov 2020 16:16:40 -0600 Subject: [PATCH 347/353] fix(underglow): Switch from legacy SPI to SPIM --- app/boards/shields/corne/boards/nice_nano.overlay | 2 +- app/boards/shields/kyria/boards/nice_nano.overlay | 2 +- app/boards/shields/kyria/boards/nrfmicro_11.overlay | 2 +- app/boards/shields/kyria/boards/nrfmicro_11_flipped.overlay | 2 +- app/boards/shields/kyria/boards/nrfmicro_13.overlay | 2 +- app/boards/shields/microdox/boards/nice_nano.overlay | 2 +- app/boards/shields/reviung41/boards/nice_nano.overlay | 2 +- app/boards/shields/romac_plus/boards/nice_nano.overlay | 2 +- docs/docs/feature/underglow.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/boards/shields/corne/boards/nice_nano.overlay b/app/boards/shields/corne/boards/nice_nano.overlay index c7c3eb8e..83ebae04 100644 --- a/app/boards/shields/corne/boards/nice_nano.overlay +++ b/app/boards/shields/corne/boards/nice_nano.overlay @@ -1,5 +1,5 @@ &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; /* Cannot be used together with i2c0. */ status = "okay"; mosi-pin = <6>; diff --git a/app/boards/shields/kyria/boards/nice_nano.overlay b/app/boards/shields/kyria/boards/nice_nano.overlay index f51ecfeb..8be964b5 100644 --- a/app/boards/shields/kyria/boards/nice_nano.overlay +++ b/app/boards/shields/kyria/boards/nice_nano.overlay @@ -1,5 +1,5 @@ &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; status = "okay"; mosi-pin = <6>; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. diff --git a/app/boards/shields/kyria/boards/nrfmicro_11.overlay b/app/boards/shields/kyria/boards/nrfmicro_11.overlay index d7f724f6..b88573b6 100644 --- a/app/boards/shields/kyria/boards/nrfmicro_11.overlay +++ b/app/boards/shields/kyria/boards/nrfmicro_11.overlay @@ -1,5 +1,5 @@ &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; status = "okay"; mosi-pin = <6>; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. diff --git a/app/boards/shields/kyria/boards/nrfmicro_11_flipped.overlay b/app/boards/shields/kyria/boards/nrfmicro_11_flipped.overlay index c5f2a940..c6a24665 100644 --- a/app/boards/shields/kyria/boards/nrfmicro_11_flipped.overlay +++ b/app/boards/shields/kyria/boards/nrfmicro_11_flipped.overlay @@ -1,5 +1,5 @@ &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; status = "okay"; mosi-pin = <6>; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. diff --git a/app/boards/shields/kyria/boards/nrfmicro_13.overlay b/app/boards/shields/kyria/boards/nrfmicro_13.overlay index c5f2a940..c6a24665 100644 --- a/app/boards/shields/kyria/boards/nrfmicro_13.overlay +++ b/app/boards/shields/kyria/boards/nrfmicro_13.overlay @@ -1,5 +1,5 @@ &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; status = "okay"; mosi-pin = <6>; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. diff --git a/app/boards/shields/microdox/boards/nice_nano.overlay b/app/boards/shields/microdox/boards/nice_nano.overlay index 58cd8613..1b84b6b5 100644 --- a/app/boards/shields/microdox/boards/nice_nano.overlay +++ b/app/boards/shields/microdox/boards/nice_nano.overlay @@ -4,7 +4,7 @@ * SPDX-License-Identifier: MIT */ &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; /* Cannot be used together with i2c0. */ status = "okay"; mosi-pin = <6>; diff --git a/app/boards/shields/reviung41/boards/nice_nano.overlay b/app/boards/shields/reviung41/boards/nice_nano.overlay index a05d0eba..b6c89e80 100644 --- a/app/boards/shields/reviung41/boards/nice_nano.overlay +++ b/app/boards/shields/reviung41/boards/nice_nano.overlay @@ -1,5 +1,5 @@ &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; status = "okay"; mosi-pin = <6>; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. diff --git a/app/boards/shields/romac_plus/boards/nice_nano.overlay b/app/boards/shields/romac_plus/boards/nice_nano.overlay index a8dafa2d..17d11927 100644 --- a/app/boards/shields/romac_plus/boards/nice_nano.overlay +++ b/app/boards/shields/romac_plus/boards/nice_nano.overlay @@ -1,5 +1,5 @@ &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; status = "okay"; mosi-pin = <6>; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. diff --git a/docs/docs/feature/underglow.md b/docs/docs/feature/underglow.md index a9621428..2cea913f 100644 --- a/docs/docs/feature/underglow.md +++ b/docs/docs/feature/underglow.md @@ -61,7 +61,7 @@ Here's an example of an nRF52 SPI definition: ``` &spi1 { - compatible = "nordic,nrf-spi"; + compatible = "nordic,nrf-spim"; status = "okay"; mosi-pin = <6>; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself. From 91e3a7d75a961db68aa8bbc7a8836695748b961e Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 8 Nov 2020 15:05:13 -0600 Subject: [PATCH 348/353] boards: Cleanup and standardize features --- .../arm/bluemicro840/bluemicro840_v1.dts | 21 ++++++++++++------- app/boards/arm/nice_nano/nice_nano.dts | 11 ++++------ app/boards/arm/nrf52840_m2/nrf52840_m2.dts | 21 ++++++++++++------- app/boards/arm/nrfmicro/nrfmicro_11.dts | 12 +++++++---- .../arm/nrfmicro/nrfmicro_11_flipped.dts | 12 +++++++---- app/boards/arm/nrfmicro/nrfmicro_13.dts | 12 +++++++---- 6 files changed, 55 insertions(+), 34 deletions(-) diff --git a/app/boards/arm/bluemicro840/bluemicro840_v1.dts b/app/boards/arm/bluemicro840/bluemicro840_v1.dts index 141dbe10..18dff1af 100644 --- a/app/boards/arm/bluemicro840/bluemicro840_v1.dts +++ b/app/boards/arm/bluemicro840/bluemicro840_v1.dts @@ -14,9 +14,6 @@ chosen { zephyr,code-partition = &code_partition; - // zephyr,console = &uart0; - //zephyr,bt-mon-uart = &uart0; - //zephyr,bt-c2h-uart = &uart0; zephyr,sram = &sram0; zephyr,flash = &flash0; }; @@ -29,6 +26,12 @@ }; }; + ext-power { + compatible = "zmk,ext-power-generic"; + label = "EXT_POWER"; + control-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; + }; + vbatt { compatible = "zmk,battery-voltage-divider"; label = "BATTERY"; @@ -43,6 +46,10 @@ status = "okay"; }; +&gpiote { + status = "okay"; +}; + &gpio0 { status = "okay"; }; @@ -61,10 +68,10 @@ compatible = "nordic,nrf-uarte"; status = "okay"; current-speed = <115200>; - tx-pin = <39>; - rx-pin = <34>; - rts-pin = <33>; - cts-pin = <12>; + tx-pin = <19>; + rx-pin = <21>; + rts-pin = <23>; + cts-pin = <25>; }; &usbd { diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index a9bdeb30..01efb289 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -14,9 +14,6 @@ chosen { zephyr,code-partition = &code_partition; - // zephyr,console = &uart0; - //zephyr,bt-mon-uart = &uart0; - //zephyr,bt-c2h-uart = &uart0; zephyr,sram = &sram0; zephyr,flash = &flash0; }; @@ -70,10 +67,10 @@ compatible = "nordic,nrf-uarte"; status = "okay"; current-speed = <115200>; - tx-pin = <39>; - rx-pin = <34>; - rts-pin = <33>; - cts-pin = <12>; + tx-pin = <19>; + rx-pin = <21>; + rts-pin = <23>; + cts-pin = <25>; }; &usbd { diff --git a/app/boards/arm/nrf52840_m2/nrf52840_m2.dts b/app/boards/arm/nrf52840_m2/nrf52840_m2.dts index e998b391..f9354edf 100644 --- a/app/boards/arm/nrf52840_m2/nrf52840_m2.dts +++ b/app/boards/arm/nrf52840_m2/nrf52840_m2.dts @@ -12,9 +12,6 @@ chosen { zephyr,code-partition = &code_partition; - //zephyr,console = &uart0; - //zephyr,bt-mon-uart = &uart0; - //zephyr,bt-c2h-uart = &uart0; zephyr,sram = &sram0; zephyr,flash = &flash0; }; @@ -37,6 +34,14 @@ }; +&adc { + status = "okay"; +}; + +&gpiote { + status = "okay"; +}; + &gpio0 { status = "okay"; }; @@ -46,13 +51,13 @@ }; &uart0 { - compatible = "nordic,nrf-uart"; + compatible = "nordic,nrf-uarte"; status = "okay"; current-speed = <115200>; - tx-pin = <16>; - rx-pin = <15>; - rts-pin = <14>; - cts-pin = <13>; + tx-pin = <19>; + rx-pin = <21>; + rts-pin = <23>; + cts-pin = <25>; }; &usbd { diff --git a/app/boards/arm/nrfmicro/nrfmicro_11.dts b/app/boards/arm/nrfmicro/nrfmicro_11.dts index 0cec6628..164b66d2 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_11.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_11.dts @@ -33,6 +33,10 @@ }; }; +&gpiote { + status = "okay"; +}; + &gpio0 { status = "okay"; }; @@ -51,10 +55,10 @@ compatible = "nordic,nrf-uarte"; status = "okay"; current-speed = <115200>; - tx-pin = <39>; - rx-pin = <34>; - rts-pin = <33>; - cts-pin = <12>; + tx-pin = <19>; + rx-pin = <21>; + rts-pin = <23>; + cts-pin = <25>; }; &usbd { diff --git a/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts b/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts index 6c1bb6ae..fb558382 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_11_flipped.dts @@ -33,6 +33,10 @@ }; }; +&gpiote { + status = "okay"; +}; + &gpio0 { status = "okay"; }; @@ -51,10 +55,10 @@ compatible = "nordic,nrf-uarte"; status = "okay"; current-speed = <115200>; - tx-pin = <39>; - rx-pin = <34>; - rts-pin = <33>; - cts-pin = <12>; + tx-pin = <19>; + rx-pin = <21>; + rts-pin = <23>; + cts-pin = <25>; }; &usbd { diff --git a/app/boards/arm/nrfmicro/nrfmicro_13.dts b/app/boards/arm/nrfmicro/nrfmicro_13.dts index 2910980b..1a05c7a1 100644 --- a/app/boards/arm/nrfmicro/nrfmicro_13.dts +++ b/app/boards/arm/nrfmicro/nrfmicro_13.dts @@ -45,6 +45,10 @@ status = "okay"; }; +&gpiote { + status = "okay"; +}; + &gpio0 { status = "okay"; }; @@ -63,10 +67,10 @@ compatible = "nordic,nrf-uarte"; status = "okay"; current-speed = <115200>; - tx-pin = <39>; - rx-pin = <34>; - rts-pin = <33>; - cts-pin = <12>; + tx-pin = <19>; + rx-pin = <21>; + rts-pin = <23>; + cts-pin = <25>; }; &usbd { From 51ca4fbc1842d8727db7074b465249ffdbfc4809 Mon Sep 17 00:00:00 2001 From: Xudong Zheng <7pkvm5aw@slicealias.com> Date: Tue, 10 Nov 2020 23:02:31 -0500 Subject: [PATCH 349/353] Fix connection to incorrect peripheral --- app/src/split/bluetooth/central.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/split/bluetooth/central.c b/app/src/split/bluetooth/central.c index ed52ba07..2d4d1ed8 100644 --- a/app/src/split/bluetooth/central.c +++ b/app/src/split/bluetooth/central.c @@ -187,19 +187,19 @@ static bool split_central_eir_found(struct bt_data *data, void *user_data) { for (i = 0; i < data->data_len; i += 16) { struct bt_le_conn_param *param; - struct bt_uuid uuid; + struct bt_uuid_128 uuid; int err; - if (!bt_uuid_create(&uuid, &data->data[i], 16)) { + if (!bt_uuid_create(&uuid.uuid, &data->data[i], 16)) { LOG_ERR("Unable to load UUID"); continue; } - if (!bt_uuid_cmp(&uuid, BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID))) { + if (bt_uuid_cmp(&uuid.uuid, BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID))) { char uuid_str[BT_UUID_STR_LEN]; char service_uuid_str[BT_UUID_STR_LEN]; - bt_uuid_to_str(&uuid, uuid_str, sizeof(uuid_str)); + bt_uuid_to_str(&uuid.uuid, uuid_str, sizeof(uuid_str)); bt_uuid_to_str(BT_UUID_DECLARE_128(ZMK_SPLIT_BT_SERVICE_UUID), service_uuid_str, sizeof(service_uuid_str)); LOG_DBG("UUID %s does not match split UUID: %s", log_strdup(uuid_str), From d5cc504b3ac684d105051fb06c133965c0cd2420 Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Sat, 7 Nov 2020 21:28:58 +0100 Subject: [PATCH 350/353] docs: update modifier docs --- docs/docs/codes/modifiers.mdx | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/docs/codes/modifiers.mdx b/docs/docs/codes/modifiers.mdx index 9d8274cb..c573a670 100644 --- a/docs/docs/codes/modifiers.mdx +++ b/docs/docs/codes/modifiers.mdx @@ -30,13 +30,17 @@ These act like any other key code. ### Modifier Functions +Modifier functions add one or more modifiers to a code. + These functions take the form: `XX(code)` -- They _apply_ the modifier to another _code_. - - e.g. `&kp LS(A)` = `LEFT_SHIFT`+`A` - - aka a _shifted_ (capitalized) **A**. - - The _code_ and the _modifier_ are handled _as one_. -- They can be _combined_: - - e.g. `&kp LC(RA(B))` = `LEFT_CONTROL`+`RIGHT_ALT`+`B` -- Some codes _include_ modifiers in their definition. - - e.g. `DOLLAR` = `LS(N4)` +- Modifier functions apply a modifier to a code: + - `&kp LS(A)` = `LEFT_SHIFT`+`A` (a capitalized **A**). +- They can be combined: + - `&kp LC(RA(B))` = `LEFT_CONTROL`+`RIGHT_ALT`+`B` +- Some basic codes already include a modifier function in their definition: + - `DOLLAR` = `LS(NUMBER_4)` +- There are left- and right-handed versions of each modifier (also see table above): + - `LS`, `LC`, `LA`, `LG`, `RS`, `RC`, `RA`, `RG` +- Modified keys can safely be rolled-over. Modifier functions are released when another key is pressed. + - Press `&kp LS(A)`, then press `&kp B`, release `&kp LS(A)` and release `&kp B` results in **Ab**. Only the A is capitalized. From 4d42e792c5fe71156ca5618513645a0e825e2fc2 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Wed, 11 Nov 2020 14:12:14 +0000 Subject: [PATCH 351/353] refactor(docs): Remove explicit document ids Aligns older documents with newer file-based ids. --- docs/docs/customization.md | 1 - docs/docs/dev-boards-shields-keymaps.md | 1 - docs/docs/{dev-build.md => dev-build-flash.md} | 1 - docs/docs/dev-clean-room.md | 1 - docs/docs/dev-guide-usb-logging.md | 1 - docs/docs/dev-posix-board.md | 1 - docs/docs/dev-setup.md | 3 +-- docs/docs/dev-tests.md | 1 - docs/docs/faq.md | 1 - docs/docs/feature/keymaps.md | 1 - docs/docs/hardware.md | 1 - docs/docs/intro.md | 1 - docs/docs/troubleshooting.md | 1 - docs/docs/user-setup.md | 1 - 14 files changed, 1 insertion(+), 15 deletions(-) rename docs/docs/{dev-build.md => dev-build-flash.md} (99%) diff --git a/docs/docs/customization.md b/docs/docs/customization.md index b42656d8..d3372da2 100644 --- a/docs/docs/customization.md +++ b/docs/docs/customization.md @@ -1,5 +1,4 @@ --- -id: customization title: Customizing ZMK/`zmk-config` folders sidebar_label: Customizing ZMK --- diff --git a/docs/docs/dev-boards-shields-keymaps.md b/docs/docs/dev-boards-shields-keymaps.md index 9ed5a328..119db420 100644 --- a/docs/docs/dev-boards-shields-keymaps.md +++ b/docs/docs/dev-boards-shields-keymaps.md @@ -1,5 +1,4 @@ --- -id: dev-boards-shields-keymaps title: Boards, Shields, and Keymaps --- diff --git a/docs/docs/dev-build.md b/docs/docs/dev-build-flash.md similarity index 99% rename from docs/docs/dev-build.md rename to docs/docs/dev-build-flash.md index 3e6b19ad..bfdd464d 100644 --- a/docs/docs/dev-build.md +++ b/docs/docs/dev-build-flash.md @@ -1,5 +1,4 @@ --- -id: dev-build-flash title: Building and Flashing sidebar_label: Building and Flashing --- diff --git a/docs/docs/dev-clean-room.md b/docs/docs/dev-clean-room.md index 2f301ec7..82db3a04 100644 --- a/docs/docs/dev-clean-room.md +++ b/docs/docs/dev-clean-room.md @@ -1,5 +1,4 @@ --- -id: dev-clean-room title: Clean Room Implementation sidebar_label: Clean Room --- diff --git a/docs/docs/dev-guide-usb-logging.md b/docs/docs/dev-guide-usb-logging.md index 50884be5..3dc62e36 100644 --- a/docs/docs/dev-guide-usb-logging.md +++ b/docs/docs/dev-guide-usb-logging.md @@ -1,5 +1,4 @@ --- -id: dev-guide-usb-logging title: USB Logging --- diff --git a/docs/docs/dev-posix-board.md b/docs/docs/dev-posix-board.md index e146bf1f..71460a87 100644 --- a/docs/docs/dev-posix-board.md +++ b/docs/docs/dev-posix-board.md @@ -1,5 +1,4 @@ --- -id: dev-posix-board title: Native Posix board target --- diff --git a/docs/docs/dev-setup.md b/docs/docs/dev-setup.md index 604f987d..864574a4 100644 --- a/docs/docs/dev-setup.md +++ b/docs/docs/dev-setup.md @@ -1,5 +1,4 @@ --- -id: dev-setup title: Basic Setup sidebar_label: Basic Setup --- @@ -450,7 +449,7 @@ This step pulls down quite a bit of tooling. Go grab a cup of coffee, it can tak :::info If you're using Docker, you're done with setup! You must restart the container at this point. The easiest way to do so is to close the VS Code window, verify that the container has stopped in Docker Dashboard, and reopen the container with VS Code. -Once your container is restarted, proceed to [Building and Flashing](./dev-build.md). +Once your container is restarted, proceed to [Building and Flashing](./dev-build-flash.md). ::: #### Export Zephyr™ Core diff --git a/docs/docs/dev-tests.md b/docs/docs/dev-tests.md index d44c4a09..98381d7f 100644 --- a/docs/docs/dev-tests.md +++ b/docs/docs/dev-tests.md @@ -1,5 +1,4 @@ --- -id: dev-tests title: Tests sidebar_label: Tests --- diff --git a/docs/docs/faq.md b/docs/docs/faq.md index 5a73110b..3822c0d8 100644 --- a/docs/docs/faq.md +++ b/docs/docs/faq.md @@ -1,5 +1,4 @@ --- -id: faq title: FAQs sidebar_label: FAQs --- diff --git a/docs/docs/feature/keymaps.md b/docs/docs/feature/keymaps.md index f9a28946..c4c16c3b 100644 --- a/docs/docs/feature/keymaps.md +++ b/docs/docs/feature/keymaps.md @@ -1,5 +1,4 @@ --- -id: keymaps title: Keymaps & Behaviors sidebar_label: Keymaps --- diff --git a/docs/docs/hardware.md b/docs/docs/hardware.md index 6df60195..b142bda0 100644 --- a/docs/docs/hardware.md +++ b/docs/docs/hardware.md @@ -1,5 +1,4 @@ --- -id: hardware title: Supported Hardware sidebar_label: Supported Hardware --- diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 8edc3137..c76e4b7c 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -1,5 +1,4 @@ --- -id: intro title: Introduction to ZMK sidebar_label: Introduction slug: / diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index c45cfcce..f11d02e4 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -1,5 +1,4 @@ --- -id: troubleshooting title: Troubleshooting sidebar_title: Troubleshooting --- diff --git a/docs/docs/user-setup.md b/docs/docs/user-setup.md index cdc82cab..703e118a 100644 --- a/docs/docs/user-setup.md +++ b/docs/docs/user-setup.md @@ -1,5 +1,4 @@ --- -id: user-setup title: Installing ZMK sidebar_label: Installing ZMK --- From aa8d0c1c79128bf0a64c781822b2613898bd6767 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Thu, 12 Nov 2020 12:21:52 +0000 Subject: [PATCH 352/353] refactor(docs): Remove explicit document ids (part 2) This was missed in: 4d42e792c5fe71156ca5618513645a0e825e2fc2 --- docs/docs/dev-guide-new-shield.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/docs/dev-guide-new-shield.md b/docs/docs/dev-guide-new-shield.md index 63871cdb..70a847cb 100644 --- a/docs/docs/dev-guide-new-shield.md +++ b/docs/docs/dev-guide-new-shield.md @@ -1,5 +1,4 @@ --- -id: dev-guide-new-shield title: New Keyboard Shield --- From 11a85f651a486094c9a73df609ca2e0b5c901f62 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 16 Nov 2020 10:23:05 -0500 Subject: [PATCH 353/353] refactor(shield): Formatting tweaks for QAZ. --- app/boards/shields/qaz/qaz.keymap | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/boards/shields/qaz/qaz.keymap b/app/boards/shields/qaz/qaz.keymap index 36229727..5dca247b 100644 --- a/app/boards/shields/qaz/qaz.keymap +++ b/app/boards/shields/qaz/qaz.keymap @@ -31,27 +31,27 @@ default_layer { bindings = < - &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P - &hm LGUI A &hm LALT S &hm LCTL D &hm LSFT F &kp G &kp H &hm RSFT J &hm RCTL K &hm RALT L &hm RGUI RET - &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT - &kp LSFT &kp LGUI &kp LALT < NAV RET < NUM_SYM SPC &kp COLN &kp QUOT &kp FSLH + &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P + &hm LGUI A &hm LALT S &hm LCTL D &hm LSFT F &kp G &kp H &hm RSFT J &hm RCTL K &hm RALT L &hm RGUI RET + &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp CMMA &kp DOT + &kp LSFT &kp LGUI &kp LALT < NAV RET < NUM_SYM SPC &kp COLN &kp QUOT &kp FSLH >; }; num_sym { bindings = < - &kp NUM_1 &kp NUM_2 &kp NUM_3 &kp NUM_4 &kp NUM_5 &kp NUM_6 &kp NUM_7 &kp NUM_8 &kp NUM_9 &kp NUM_0 - &trans &trans &trans &trans &trans &trans &trans &trans &kp EQL &kp MINUS - &kp DEL &none &none &none &none &none &none &none &kp DOT - &bootloader &reset &none &trans &trans &kp RET &trans &kp FSLH + &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 + &trans &trans &trans &trans &trans &trans &trans &trans &kp EQL &kp MINUS + &kp DEL &none &none &none &none &none &none &none &kp DOT + &bootloader &reset &none &trans &trans &kp RET &trans &kp FSLH >; }; nav { bindings = < - &bt BT_CLR &bt BT_NXT &bt BT_PRV &none &none &none &none &kp UARW &none &kp BKSP - &trans &trans &trans &trans &none &none &kp LARW &kp DARW &kp RARW &none - &none &none &none &none &none &none &none &none &none - &none &none &none &trans &trans &kp RET &trans &kp FSLH + &bt BT_CLR &bt BT_NXT &bt BT_PRV &none &none &none &none &kp UARW &none &kp BKSP + &trans &trans &trans &trans &none &none &kp LARW &kp DARW &kp RARW &none + &none &none &none &none &none &none &none &none &none + &none &none &none &trans &trans &kp RET &trans &kp FSLH >; }; };

    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 z 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